:root {
  --bg0: #05070f; --bg1: #0a0f22; --violet: #7c5cff; --cyan: #4de3ff;
  --card: rgba(13, 18, 38, .88); --line: rgba(124, 92, 255, .25);
  --txt: #e8ecff; --dim: #8b93b8; --danger: #ff5470; --ok: #3ddc84; --warn: #ffb020;
}
* { box-sizing: border-box; }
body { margin: 0; font-family: "Segoe UI", system-ui, sans-serif; color: var(--txt); background: var(--bg0); }
.bg { position: fixed; inset: 0; z-index: -1;
  background: linear-gradient(135deg, #060b24 0%, #1a0f3c 45%, #05070f 100%); }
.hidden { display: none !important; }

/* login */
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; }
.login-card { background: var(--card); border: 1px solid var(--line); border-radius: 12px;
  padding: 36px; width: 360px; box-shadow: 0 20px 60px rgba(0,0,0,.6); }
.login-card h1 { margin: 0; font-size: 26px; color: var(--cyan); }
.login-card h1 span { color: var(--violet); font-size: 16px; }
.login-card .sub { color: var(--dim); font-size: 12px; letter-spacing: 2px; }
.err { color: var(--danger); min-height: 20px; }

/* layout */
.topbar { display: flex; justify-content: space-between; align-items: center;
  padding: 14px 22px; background: rgba(6,9,20,.9); border-bottom: 1px solid var(--line); }
.brand { font-weight: 700; color: var(--cyan); }
.brand span { color: var(--violet); }
.brand em { color: var(--dim); font-style: normal; font-size: 11px; letter-spacing: 2px; margin-left: 10px; }
.top-right { display: flex; gap: 12px; align-items: center; }
#clock { color: var(--dim); font-variant-numeric: tabular-nums; }
.badge-online { background: rgba(61,220,132,.15); color: var(--ok); border-radius: 20px;
  padding: 4px 12px; font-size: 12px; }
.badge-online i { display: inline-block; width: 8px; height: 8px; border-radius: 50%;
  background: var(--ok); margin-right: 6px; }

.tabs { display: flex; gap: 4px; padding: 10px 22px 0; flex-wrap: wrap; }
.tabs button { background: transparent; border: none; color: var(--dim); padding: 10px 16px;
  cursor: pointer; border-radius: 8px 8px 0 0; font-size: 14px; text-transform: capitalize; }
.tabs button:hover { color: var(--txt); background: rgba(124,92,255,.12); }
.tabs button.active { color: #fff; background: rgba(124,92,255,.25);
  box-shadow: inset 0 -2px 0 var(--cyan); }

main { padding: 18px 22px 40px; }
.tab { display: none; animation: fade .25s ease; }
.tab.active { display: block; }
@keyframes fade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; } }

.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin-bottom: 16px; }
.stat { background: var(--card); border: 1px solid var(--line); border-left: 4px solid var(--violet);
  border-radius: 8px; padding: 14px; }
.stat b { font-size: 28px; display: block; }
.stat span { color: var(--dim); font-size: 12px; text-transform: uppercase; }
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 800px) { .grid2 { grid-template-columns: 1fr; } }
.card { background: var(--card); border: 1px solid var(--line); border-radius: 10px;
  padding: 18px; margin-bottom: 14px; box-shadow: 0 10px 30px rgba(0,0,0,.4); }
.card h3 { margin-top: 0; color: var(--cyan); text-transform: capitalize; }
.card.danger { border-color: rgba(255,84,112,.5); }
.card.danger h3 { color: var(--danger); }

input[type=text], input[type=password], input[type=number], select {
  display: block; width: 100%; max-width: 420px; margin: 6px 0 12px; padding: 9px 12px;
  background: #0b1026; border: 1px solid var(--line); border-radius: 6px; color: var(--txt); }
label { color: var(--dim); font-size: 13px; }
input[type=checkbox] { width: auto; display: inline; }

.btn { background: linear-gradient(135deg, #3a3f66, #23263f); color: #fff; border: none;
  border-radius: 8px; padding: 10px 22px; cursor: pointer; transition: filter .15s, transform .1s; }
.btn:hover { filter: brightness(1.25); }
.btn:active { transform: scale(.95); }
.btn.primary { background: linear-gradient(135deg, #2f7bff, var(--violet)); }
.btn.danger { background: linear-gradient(135deg, #a3122e, var(--danger)); }
.btn.ghost { background: transparent; border: 1px solid var(--line); padding: 6px 14px; }

table { width: 100%; border-collapse: collapse; font-size: 13px; }
th, td { text-align: left; padding: 8px 10px; border-bottom: 1px solid rgba(124,92,255,.12); }
tbody tr:nth-child(even) { background: rgba(124,92,255,.05); }
tbody tr:hover { background: rgba(77,227,255,.1); }
td .mini { margin-right: 6px; padding: 3px 10px; font-size: 12px; border-radius: 6px;
  border: 1px solid var(--line); background: #1a2040; color: var(--txt); cursor: pointer; }
td .mini:hover { border-color: var(--cyan); }
.st-ok { color: var(--ok); } .st-ban { color: var(--danger); } .st-exp { color: var(--warn); }
#gen-out code { display: block; padding: 6px; color: var(--cyan); font-size: 15px; }
.mono { font-family: Consolas, monospace; }
