:root{
  --bg:#080b11;
  --bg-2:#0d131d;
  --surface:#111a27;
  --surface-2:#162232;
  --border:rgba(255,255,255,.07);
  --border-2:rgba(255,255,255,.13);
  --text:#e7eef7;
  --muted:#8a97a8;
  --muted-2:#5b6678;
  --accent:#3fe6ff;
  --accent-2:#7c5cff;
  --grad:linear-gradient(135deg,#3fe6ff,#7c5cff);
  --green:#3ddc84;
  --red:#ff5d6c;
  --amber:#ffb454;
  --radius:14px;
  --shadow:0 12px 34px -16px rgba(0,0,0,.7);
  --font:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;height:100%}
body{
  background:
    radial-gradient(1100px 560px at 82% -12%, rgba(124,92,255,.14), transparent 60%),
    radial-gradient(900px 500px at -8% 6%, rgba(63,230,255,.10), transparent 55%),
    var(--bg);
  color:var(--text);font-family:var(--font);font-size:14px;line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
[x-cloak]{display:none!important}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--surface-2);border-radius:8px;border:2px solid transparent;background-clip:content-box}

/* layout */
.app{display:flex;min-height:100vh}
.sidebar{
  width:250px;flex:0 0 250px;border-right:1px solid var(--border);padding:22px 16px;
  position:sticky;top:0;height:100vh;background:linear-gradient(180deg,rgba(255,255,255,.022),transparent);
}
.brand{display:flex;align-items:center;gap:11px;font-weight:700;font-size:17px;padding:6px 10px 24px;letter-spacing:-.01em}
.brand .logo{width:30px;height:30px;border-radius:9px;background:var(--grad);box-shadow:0 0 22px rgba(63,230,255,.4)}
.nav a{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:10px;color:var(--muted);font-weight:500;margin-bottom:4px;transition:.15s}
.nav a svg{width:18px;height:18px;opacity:.85}
.nav a:hover{background:var(--surface);color:var(--text)}
.nav a.active{background:var(--surface-2);color:var(--text);box-shadow:inset 0 0 0 1px var(--border-2)}
.nav a.active svg{color:var(--accent);opacity:1}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{
  display:flex;align-items:center;justify-content:space-between;padding:16px 30px;
  border-bottom:1px solid var(--border);position:sticky;top:0;z-index:5;
  background:rgba(8,11,17,.72);backdrop-filter:blur(14px);
}
.topbar h1{font-size:18px;margin:0;font-weight:650;letter-spacing:-.01em}
.content{padding:26px 30px;max-width:1320px;width:100%}

/* cards */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;margin-bottom:24px}
.card{background:linear-gradient(180deg,var(--surface),var(--bg-2));border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.stat .label{color:var(--muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.stat .value{font-size:30px;font-weight:760;margin-top:9px;letter-spacing:-.025em}
.stat .value.grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.stat .sub{color:var(--muted);font-size:12px;margin-top:5px}

/* panels + tables */
.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;margin-bottom:22px}
.panel .ph{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 18px;border-bottom:1px solid var(--border)}
.panel .ph h2{font-size:14.5px;margin:0;font-weight:640;letter-spacing:-.01em}
.pad{padding:18px}
table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted-2);font-weight:650;padding:12px 16px;border-bottom:1px solid var(--border);white-space:nowrap}
td{padding:13px 16px;border-bottom:1px solid var(--border);vertical-align:middle}
tr:last-child td{border-bottom:none}
tbody tr{transition:background .12s}
tbody tr:hover{background:var(--surface-2)}
.clickable{cursor:pointer}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:8px;padding:9px 15px;border-radius:10px;border:1px solid var(--border-2);background:var(--surface-2);color:var(--text);font:inherit;font-weight:560;cursor:pointer;transition:.15s;white-space:nowrap}
.btn:hover{border-color:var(--accent);box-shadow:0 0 0 3px rgba(63,230,255,.10)}
.btn.primary{background:var(--grad);border:none;color:#05121a;font-weight:720}
.btn.primary:hover{filter:brightness(1.08);box-shadow:0 10px 26px -8px rgba(63,230,255,.55)}
.btn.ghost{background:transparent}
.btn.danger{color:var(--red);border-color:rgba(255,93,108,.32);background:transparent}
.btn.danger:hover{background:rgba(255,93,108,.12);border-color:var(--red);box-shadow:none}
.btn.sm{padding:6px 11px;font-size:12.5px;border-radius:8px}

/* badges */
.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:620}
.badge.on{background:rgba(61,220,132,.14);color:var(--green)}
.badge.off{background:rgba(255,93,108,.14);color:var(--red)}
.badge.cr{background:rgba(124,92,255,.16);color:#b9a9ff}
.badge.active{background:rgba(63,230,255,.14);color:var(--accent)}
.dot{width:7px;height:7px;border-radius:50%;background:currentColor}

/* forms */
.input,select,textarea{width:100%;background:var(--bg-2);border:1px solid var(--border-2);border-radius:10px;color:var(--text);padding:10px 12px;font:inherit;transition:.15s}
.input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(63,230,255,.13)}
input[type=file]{padding:8px 12px}
textarea{resize:vertical;font-family:var(--mono);font-size:12.5px;line-height:1.5}
.field{margin-bottom:14px}
.field label{display:block;font-size:12.5px;color:var(--muted);margin-bottom:6px;font-weight:550}
.muted{color:var(--muted)}
.row{display:flex;align-items:center;gap:12px}
.between{justify-content:space-between}
.wrap{flex-wrap:wrap}
.grid2{display:grid;grid-template-columns:1.4fr 1fr;gap:22px;align-items:start}
@media(max-width:900px){.grid2{grid-template-columns:1fr}}

/* progress + meter */
.progress{height:7px;border-radius:6px;background:var(--bg-2);overflow:hidden;min-width:110px;flex:1}
.progress>i{display:block;height:100%;background:var(--grad);border-radius:6px;transition:width .3s}
.crbar{height:6px;border-radius:6px;background:var(--bg-2);overflow:hidden;width:90px}
.crbar>i{display:block;height:100%;background:var(--grad)}

/* toggle switch */
.switch{position:relative;display:inline-block;width:42px;height:24px;cursor:pointer;flex:0 0 auto}
.switch input{display:none}
.switch .sl{position:absolute;inset:0;background:var(--surface-2);border:1px solid var(--border-2);border-radius:999px;transition:.2s}
.switch .sl:before{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;border-radius:50%;background:var(--muted);transition:.2s}
.switch input:checked + .sl{background:var(--grad);border-color:transparent}
.switch input:checked + .sl:before{transform:translateX(18px);background:#05121a}

/* modal */
.modal-bg{position:fixed;inset:0;background:rgba(4,7,12,.66);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;z-index:50}
.modal{width:440px;max-width:92vw;background:var(--surface);border:1px solid var(--border-2);border-radius:16px;padding:24px;box-shadow:0 36px 90px -22px #000}
.modal h2{margin:0 0 18px;font-size:18px}

/* misc */
.keybox{font-family:var(--mono);font-size:12.5px;background:var(--bg-2);border:1px dashed var(--accent);border-radius:10px;padding:12px;word-break:break-all;color:var(--accent)}
.flash{background:linear-gradient(90deg,rgba(63,230,255,.13),rgba(124,92,255,.13));border:1px solid var(--border-2);border-radius:12px;padding:16px 18px;margin-bottom:22px}
.flash.err{background:rgba(255,93,108,.1);border-color:rgba(255,93,108,.3)}
.handle{cursor:grab;color:var(--muted-2);font-size:16px;user-select:none}
.handle:active{cursor:grabbing}
.tag{font-family:var(--mono);font-size:11.5px;color:var(--muted)}
.empty{padding:46px;text-align:center;color:var(--muted)}
.pager{display:flex;gap:6px;align-items:center;padding:14px 18px}
.pager a,.pager span{padding:6px 11px;border-radius:8px;font-size:13px;color:var(--muted)}
.pager a:hover{background:var(--surface-2);color:var(--text)}
.pager .cur{background:var(--surface-2);color:var(--text);box-shadow:inset 0 0 0 1px var(--border-2)}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.login-card{width:384px;max-width:92vw;background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:32px;box-shadow:var(--shadow)}
.back{color:var(--muted);font-size:13px;display:inline-flex;gap:6px;margin-bottom:14px}
.back:hover{color:var(--text)}
h2.sec{font-size:15px;margin:26px 0 12px;font-weight:640}
