:root{
  --bg:#0f172a;--surface:#1e293b;--surface2:#263348;
  --border:#334155;--text:#e2e8f0;--text2:#94a3b8;--text3:#64748b;
  --accent:#3b82f6;--accent-h:#2563eb;--accent-dim:rgba(59,130,246,.12);
  --ok:#22c55e;--warn:#f59e0b;--err:#ef4444;--r:8px;--sw:224px;
}
.admin-theme{
  --bg:#0a0f1e;--surface:#111827;--surface2:#1a2235;--border:#1f2d45;
  --accent:#6366f1;--accent-h:#4f46e5;--accent-dim:rgba(99,102,241,.12);
}
*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}
body{font-family:'Segoe UI',system-ui,sans-serif;background:var(--bg);color:var(--text);overflow-x:hidden}
button{cursor:pointer;border:none;outline:none;font:inherit}
input,select,textarea{font:inherit;background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:var(--r);padding:8px 12px;width:100%;transition:border-color .15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(99,102,241,.15)}
textarea{resize:vertical;min-height:80px}
label{display:block;margin-bottom:5px;font-size:13px;color:var(--text2);font-weight:500}
a{text-decoration:none}

/* App layout */
#app{display:flex;height:100vh;overflow:hidden}
#SB{width:var(--sw);background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;height:100vh;flex-shrink:0}
.sbl{padding:16px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px}
.sbli{width:32px;height:32px;background:var(--accent);border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.sbln{font-size:13.5px;font-weight:700}.sbls{font-size:10px;color:var(--text2)}
nav{flex:1;padding:10px 8px;overflow-y:auto}
.ns{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:1px;padding:12px 8px 4px;font-weight:600}
.nl{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:6px;color:var(--text2);font-size:13.5px;transition:background .12s,color .12s;margin-bottom:1px;text-decoration:none}
.nl:hover{background:var(--surface2);color:var(--text)}
.nl.active{background:var(--accent-dim);color:var(--accent);font-weight:600}
.nl svg{width:15px;height:15px;flex-shrink:0;stroke-width:2}
.sbu{padding:12px;border-top:1px solid var(--border);flex-shrink:0}
.sbur{display:flex;align-items:center;gap:9px;padding:6px}
.av{width:32px;height:32px;background:var(--accent);border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0}
.un{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.urb{font-size:10px;padding:1px 6px;border-radius:3px;font-weight:600;margin-top:2px;display:inline-block}
.urb.admin{background:rgba(239,68,68,.15);color:#ef4444}.urb.user{background:rgba(59,130,246,.15);color:#3b82f6}
.bso{background:transparent;color:var(--text3);padding:5px;border-radius:5px;transition:color .12s;margin-left:auto}
.bso:hover{color:var(--err)}
#MA{flex:1;display:flex;flex-direction:column;overflow:hidden}
#TB{background:var(--surface);border-bottom:1px solid var(--border);padding:0 24px;height:54px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;gap:12px}
.ptitle{font-size:17px;font-weight:700;white-space:nowrap}
#TBR{display:flex;align-items:center;gap:8px}
.rring{width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;opacity:0;transition:opacity .2s;flex-shrink:0}
.rring.on{opacity:1}
#TBA{display:flex;gap:8px;align-items:center}
#PC{flex:1;overflow-y:auto;padding:24px;overflow-x:hidden}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:var(--r);font-size:13.5px;font-weight:500;transition:background .12s,opacity .12s,transform .08s;cursor:pointer;white-space:nowrap;text-decoration:none}
.btn:active{transform:scale(.97)}
.bp{background:var(--accent);color:#fff}.bp:hover{background:var(--accent-h)}
.bd{background:#ef4444;color:#fff}.bd:hover{opacity:.88}
.bg{background:transparent;color:var(--text2);border:1px solid var(--border)}.bg:hover{background:var(--surface2);color:var(--text)}
.bs{padding:5px 10px;font-size:12.5px}.bx{padding:3px 8px;font-size:11.5px}.bfw{width:100%;justify-content:center}
.btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}

/* Cards */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:20px}
.ch{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:8px}
.ct{font-size:14.5px;font-weight:700}
.sg{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:22px}
.sc{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:18px 20px}
.sl{font-size:11.5px;color:var(--text2);text-transform:uppercase;letter-spacing:.5px;font-weight:600;margin-bottom:6px}
.sv{font-size:30px;font-weight:800;line-height:1}.ss{font-size:11px;color:var(--text3);margin-top:4px}

/* Tables */
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{text-align:left;padding:9px 13px;color:var(--text2);font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);white-space:nowrap;background:var(--surface)}
td{padding:11px 13px;border-bottom:1px solid rgba(51,65,85,.4);vertical-align:middle}
tr:last-child td{border-bottom:none}
tr:hover td{background:rgba(255,255,255,.02)}
.tda{display:flex;gap:5px;align-items:center}

/* Badges */
.badge{display:inline-block;padding:2px 7px;border-radius:4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}
.b-online{background:rgba(34,197,94,.14);color:#22c55e}.b-offline{background:rgba(100,116,139,.14);color:#64748b}
.b-pending{background:rgba(245,158,11,.14);color:#f59e0b}.b-sent{background:rgba(59,130,246,.14);color:#3b82f6}
.b-completed{background:rgba(34,197,94,.14);color:#22c55e}.b-failed{background:rgba(239,68,68,.14);color:#ef4444}
.b-admin{background:rgba(239,68,68,.14);color:#ef4444}.b-user{background:rgba(59,130,246,.14);color:#3b82f6}

/* Modal */
.mo{display:none;position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:500;align-items:center;justify-content:center;padding:16px}
.mo.show{display:flex}
.md{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:28px;width:100%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:0 24px 80px rgba(0,0,0,.5)}
.mh{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.mt{font-size:16px;font-weight:700}
.mc{background:transparent;color:var(--text2);font-size:18px;padding:4px 8px;border-radius:5px;line-height:1;cursor:pointer;border:none}.mc:hover{color:var(--text)}

/* Forms */
.fg{margin-bottom:15px}.fr{display:grid;grid-template-columns:1fr 1fr;gap:12px}.fh{font-size:11.5px;color:var(--text3);margin-top:4px}

/* User cards */
.ugrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.ucard{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:16px}
.uav{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:700;flex-shrink:0}
.uav.admin{background:rgba(239,68,68,.2);color:#ef4444}.uav.user{background:rgba(59,130,246,.2);color:#3b82f6}
.ust{background:var(--surface);border:1px solid var(--border);border-radius:5px;padding:3px 8px;font-size:11px;color:var(--text2)}

/* Toast */
#TC{position:fixed;bottom:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none;max-width:340px}
.toast{background:var(--surface2);border:1px solid var(--border);border-left-width:3px;border-radius:var(--r);padding:11px 14px;font-size:13.5px;display:flex;align-items:flex-start;gap:9px;box-shadow:0 4px 20px rgba(0,0,0,.35);animation:tsi .2s ease;pointer-events:all}
.toast.ok{border-left-color:#22c55e}.toast.er{border-left-color:#ef4444}.toast.wn{border-left-color:#f59e0b}
@keyframes tsi{from{transform:translateX(12px);opacity:0}to{transform:none;opacity:1}}
@keyframes spin{to{transform:rotate(360deg)}}

/* Misc */
.mt3{margin-top:14px}.mt2{margin-top:8px}.mb3{margin-bottom:14px}.mb2{margin-bottom:8px}
.fx{display:flex}.g2{gap:8px}.g3{gap:12px}.f1{flex:1}.ic{align-items:center}.jb{justify-content:space-between}
.ts{font-size:12.5px}.tx{font-size:11.5px}.tm{color:var(--text2)}.td{color:var(--text3)}
.ter{color:#ef4444}.tok{color:#22c55e}.twn{color:#f59e0b}
.code{font-family:monospace;font-size:12.5px;background:var(--surface2);border:1px solid var(--border);border-radius:4px;padding:1px 6px;word-break:break-all}
.cb{font-family:monospace;font-size:12.5px;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:12px;white-space:pre-wrap;word-break:break-all;max-height:280px;overflow-y:auto;line-height:1.5}
.empty{text-align:center;padding:36px;color:var(--text3);font-size:13.5px}
.div{height:1px;background:var(--border);margin:16px 0}
.sp{width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite;display:inline-block}
.pload{display:flex;align-items:center;justify-content:center;padding:48px}
.dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;display:inline-block}
.dot.online{background:#22c55e}.dot.offline{background:#64748b}
.mono{font-family:'Consolas','Courier New',monospace}

/* Login page */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.lc{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:44px 40px;width:100%;max-width:400px;box-shadow:0 20px 60px rgba(0,0,0,.4)}
.ll{display:flex;align-items:center;gap:12px;margin-bottom:28px}
.lli{width:44px;height:44px;background:var(--accent);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:22px}
.lln{font-size:20px;font-weight:800}.lls{font-size:12px;color:var(--text2)}
.admin-badge{font-size:11px;color:#ef4444;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:20px;padding:4px 8px;background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.2);border-radius:4px;display:inline-block}
