*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg0:#060608;--bg1:#0a0c11;--bg2:#0f1218;--bg3:#151920;--bg4:#1c2029;--bg5:#242830;
  --bd:#161c26;--bd2:#222a38;
  --grn:#22c55e;--grn-a:rgba(34,197,94,.08);--grn-b:rgba(34,197,94,.18);
  --amb:#eab308;--amb-a:rgba(234,179,8,.08);
  --red:#ef4444;--red-a:rgba(239,68,68,.08);
  --blu:#3b82f6;--blu-a:rgba(59,130,246,.08);
  --pur:#a855f7;--pur-a:rgba(168,85,247,.08);
  --cyn:#22d3ee;--cyn-a:rgba(34,211,238,.08);
  --t1:#c9d1d9;--t2:#6e7a8a;--t3:#3d4a5c;
  --font:'Satoshi',-apple-system,system-ui,sans-serif;
  --mono:'JetBrains Mono','Fira Code','SF Mono',monospace;
  --r:6px;--rs:4px;
}
body{font-family:var(--font);background:var(--bg0);color:var(--t1);overflow:hidden;height:100vh;-webkit-font-smoothing:antialiased}
.hide{display:none!important}
::selection{background:var(--grn);color:var(--bg0)}
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-thumb{background:var(--bd);border-radius:3px}
::-webkit-scrollbar-track{background:transparent}

/* AUTH SCREENS */
.auth{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;background:var(--bg0)}
.auth-box{width:360px}
.auth-logo{font-family:var(--mono);font-size:32px;font-weight:900;color:var(--t1);letter-spacing:-1px;text-align:center;margin-bottom:2px}
.auth-logo span{color:var(--grn)}
.auth-sub{text-align:center;color:var(--t3);font-size:11px;text-transform:uppercase;letter-spacing:3px;margin-bottom:28px;font-weight:500}
.auth-desc{text-align:center;color:var(--t2);font-size:13px;margin:-16px 0 24px;line-height:1.5}
.auth-box input{width:100%;padding:11px 14px;background:var(--bg2);border:1px solid var(--bd);border-radius:var(--rs);color:var(--t1);font-size:13px;font-family:var(--font);outline:none;margin-bottom:10px;transition:border-color .15s}
.auth-box input:focus{border-color:var(--grn)}
.auth-box input::placeholder{color:var(--t3)}
.auth-box button{width:100%;padding:11px;background:var(--grn);border:none;border-radius:var(--rs);color:#000;font-size:13px;font-weight:700;font-family:var(--font);cursor:pointer;margin-top:4px;transition:opacity .15s;letter-spacing:.3px}
.auth-box button:hover{opacity:.85}
.auth-err{color:var(--red);font-size:12px;text-align:center;margin-top:12px;min-height:18px;font-weight:500}
.auth-lang{display:block;margin:16px auto 0;padding:5px 10px;background:var(--bg2);border:1px solid var(--bd);border-radius:var(--rs);color:var(--t2);font-size:11px;font-family:var(--font);outline:none;cursor:pointer}
.auth-lang:hover{border-color:var(--grn);color:var(--t1)}

/* LAYOUT */
.app{display:flex;height:100vh}
.app-body{flex:1;display:flex;flex-direction:column;min-width:0}

/* SIDEBAR */
.sidebar{width:56px;background:var(--bg1);border-right:1px solid var(--bd);display:flex;flex-direction:column;align-items:center;padding:12px 0;flex-shrink:0;z-index:10}
.sb-logo{font-family:var(--mono);font-weight:900;font-size:17px;color:var(--grn);margin-bottom:20px;letter-spacing:-2px;cursor:default;user-select:none}
.sb-nav{flex:1;display:flex;flex-direction:column;gap:2px;width:100%;padding:0 8px}
.sb-btn{width:40px;height:38px;border:none;background:transparent;color:var(--t3);cursor:pointer;border-radius:var(--r);display:flex;align-items:center;justify-content:center;transition:all .15s;position:relative}
.sb-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.sb-btn:hover{background:var(--bg3);color:var(--t2)}
.sb-btn.active{background:var(--grn-a);color:var(--grn)}
.sb-btn.active::before{content:'';position:absolute;left:-8px;top:9px;bottom:9px;width:2px;background:var(--grn);border-radius:0 2px 2px 0}
.sb-logout{margin-top:8px}
.sb-logout:hover{color:var(--red)!important;background:var(--red-a)!important}
.sb-user{width:28px;height:28px;border-radius:50%;background:var(--bg4);margin-bottom:6px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--t2);cursor:default;text-transform:uppercase;position:relative}
.sb-btn[data-tip]:hover::after{content:attr(data-tip);position:absolute;left:50px;top:50%;transform:translateY(-50%);background:var(--bg5);color:var(--t1);padding:5px 10px;border-radius:var(--rs);font-size:11px;font-family:var(--font);white-space:nowrap;z-index:99;pointer-events:none;border:1px solid var(--bd)}
.sb-user[data-tip]:hover::after{content:attr(data-tip);position:absolute;left:42px;top:50%;transform:translateY(-50%);background:var(--bg5);color:var(--t1);padding:5px 10px;border-radius:var(--rs);font-size:11px;font-family:var(--font);white-space:nowrap;z-index:99;pointer-events:none;border:1px solid var(--bd)}

/* TOPBAR */
.topbar{height:44px;background:var(--bg1);border-bottom:1px solid var(--bd);display:flex;align-items:center;justify-content:space-between;padding:0 20px;flex-shrink:0}
.topbar h1{font-size:14px;font-weight:600;letter-spacing:-.2px}
.tb-stats{display:flex;align-items:center;gap:16px}
.tb-s{display:flex;align-items:center;gap:5px}
.tb-l{font-size:9px;font-weight:700;color:var(--t3);letter-spacing:1px;text-transform:uppercase}
.tb-v{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--t1)}
.tb-dot{width:6px;height:6px;border-radius:50%;background:var(--grn);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}

/* MAIN */
.main{flex:1;overflow-y:auto;padding:16px 20px}
.pg{display:none}
.pg.active{display:block;animation:fadeUp .2s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* GRIDS */
.kpi-row{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:14px}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}

/* KPI */
.kpi{background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r);padding:14px 16px;position:relative;overflow:hidden;transition:border-color .15s}
.kpi:hover{border-color:var(--bd2)}
.kpi-bar{position:absolute;top:0;left:0;bottom:0;width:2px}
.bg-grn{background:var(--grn)}.bg-blu{background:var(--blu)}.bg-amb{background:var(--amb)}.bg-pri{background:var(--grn)}.bg-pur{background:var(--pur)}.bg-cyn{background:var(--cyn)}
.kpi-v{display:block;font-family:var(--mono);font-size:22px;font-weight:700;line-height:1.2}
.kpi-l{display:block;font-size:10px;color:var(--t3);text-transform:uppercase;letter-spacing:.5px;margin-top:3px;font-weight:500}

/* CARDS */
.card{background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r);padding:16px;transition:border-color .15s;margin-bottom:0}
.card:hover{border-color:var(--bd2)}
.card-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.card-h span{font-size:11px;font-weight:700;color:var(--t2);text-transform:uppercase;letter-spacing:.8px}
.card-h select{padding:4px 8px;background:var(--bg4);border:1px solid var(--bd);border-radius:var(--rs);color:var(--t1);font-size:11px;outline:none;cursor:pointer;font-family:var(--mono)}
.badge{background:var(--grn-a);color:var(--grn);padding:2px 10px;border-radius:10px;font-size:11px;font-weight:700;font-family:var(--mono)}

/* CHARTS */
.card canvas{width:100%;height:180px;display:block}

/* INFO ROWS */
.info-rows{display:flex;flex-direction:column;gap:1px}
.ir{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.03);font-size:13px}
.ir:last-child{border:none}
.ir-k{color:var(--t3);font-weight:500}.ir-v{color:var(--t1);font-family:var(--mono);font-size:12px}

/* TABLES */
.tbl-wrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse}
.tbl th{text-align:left;padding:8px 10px;font-size:10px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--bd);white-space:nowrap}
.tbl td{padding:8px 10px;font-size:13px;border-bottom:1px solid rgba(255,255,255,.02)}
.tbl tr:hover td{background:rgba(255,255,255,.015)}
.pl-cell{display:flex;align-items:center;gap:8px}
.pl-ava{width:26px;height:26px;border-radius:var(--rs);image-rendering:pixelated}
.pl-name{font-weight:600}
.hp-bar{width:48px;height:4px;background:var(--bg4);border-radius:2px;overflow:hidden;display:inline-block;vertical-align:middle;margin-right:5px}
.hp-fill{height:100%;border-radius:2px}
.tag{display:inline-block;padding:2px 8px;border-radius:var(--rs);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.tag-ban{background:var(--red-a);color:var(--red)}.tag-mute{background:var(--amb-a);color:var(--amb)}.tag-kick{background:var(--blu-a);color:var(--blu)}.tag-warn{background:var(--pur-a);color:var(--pur)}
.tag-active{color:var(--red);font-weight:700;font-size:11px}.tag-revoked{color:var(--t3);font-size:11px}

/* BUTTONS */
.btn-s{padding:5px 12px;background:var(--bg4);border:1px solid var(--bd);border-radius:var(--rs);color:var(--t2);font-size:11px;cursor:pointer;transition:all .12s;font-family:var(--font);font-weight:500}
.btn-s:hover{border-color:var(--grn);color:var(--grn)}
.act-btn{padding:4px 10px;background:transparent;border:1px solid var(--bd);border-radius:var(--rs);font-size:11px;cursor:pointer;color:var(--t2);transition:all .12s;font-family:var(--font);font-weight:500}
.act-btn:hover{border-color:var(--grn);color:var(--grn)}
.act-btn.red:hover{border-color:var(--red);color:var(--red)}
.act-btn.grn:hover{border-color:var(--grn);color:var(--grn)}

/* CONSOLE */
.console-card{display:flex;flex-direction:column;height:calc(100vh - 112px)}
.con-out{flex:1;overflow-y:auto;padding:12px;font-family:var(--mono);font-size:12px;line-height:1.8;background:var(--bg0);border-radius:var(--rs);margin-bottom:8px;border:1px solid var(--bd)}
.cl{white-space:pre-wrap;word-break:break-all}.cl-i{color:var(--t2)}.cl-w{color:var(--amb)}.cl-e{color:var(--red)}
.cl-t{color:var(--t3);margin-right:6px}
.con-in{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--bg0);border-radius:var(--rs);border:1px solid var(--bd);transition:border-color .15s}
.con-in:focus-within{border-color:var(--grn)}
.con-in span{color:var(--grn);font-family:var(--mono);font-weight:700;font-size:15px}
.con-in input{flex:1;background:transparent;border:none;color:var(--t1);font-family:var(--mono);font-size:12px;outline:none}
.con-in input::placeholder{color:var(--t3)}
.con-in button{padding:5px 14px;background:var(--grn);border:none;border-radius:var(--rs);color:#000;font-size:11px;font-weight:700;cursor:pointer;font-family:var(--font)}

/* CHAT */
.chat-card{display:flex;flex-direction:column;height:calc(100vh - 112px)}
.chat-out{flex:1;overflow-y:auto;padding:12px;background:var(--bg0);border-radius:var(--rs);border:1px solid var(--bd)}
.cm{padding:4px 8px;border-radius:var(--rs);font-size:13px;transition:background .1s}
.cm:hover{background:rgba(255,255,255,.02)}
.cm-t{color:var(--t3);font-size:11px;font-family:var(--mono);margin-right:6px}
.cm-n{color:var(--grn);font-weight:600;margin-right:4px}

/* ACTIVITY */
.activity-list{max-height:250px;overflow-y:auto}
.act-row{display:flex;gap:10px;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.02);font-size:13px;align-items:center}
.act-row:last-child{border:none}
.act-time{color:var(--t3);font-family:var(--mono);font-size:11px;flex-shrink:0;width:68px}
.act-actor{color:var(--blu);font-weight:600;width:80px;flex-shrink:0}
.act-action{color:var(--amb);font-weight:600;width:100px;flex-shrink:0}
.act-detail{color:var(--t2);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* WORLDS */
.world-card{background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r);padding:18px;margin-bottom:10px;transition:border-color .15s}
.world-card:hover{border-color:var(--bd2)}
.world-card h3{font-size:14px;font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:8px}
.world-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}

/* FORM */
.form-g{display:flex;flex-direction:column;gap:10px}
.form-g textarea,.form-g input{width:100%;padding:10px 12px;background:var(--bg0);border:1px solid var(--bd);border-radius:var(--rs);color:var(--t1);font-size:13px;outline:none;font-family:var(--font);resize:vertical;transition:border-color .15s}
.form-g textarea:focus,.form-g input:focus{border-color:var(--grn)}
.form-g textarea::placeholder,.form-g input::placeholder{color:var(--t3)}

/* MODAL */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.7);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100}
.modal{background:var(--bg2);border:1px solid var(--bd);border-radius:8px;width:420px;max-height:85vh;overflow-y:auto;box-shadow:0 8px 40px rgba(0,0,0,.5)}
.modal-h{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--bd)}
.modal-h span{font-size:14px;font-weight:600}
.modal-h button{background:none;border:none;color:var(--t3);font-size:20px;cursor:pointer;padding:0 4px;line-height:1}
.modal-h button:hover{color:var(--t1)}
.modal-c{padding:18px}
.modal-c .fg{margin-bottom:14px}
.modal-c label{display:block;font-size:11px;color:var(--t3);margin-bottom:5px;text-transform:uppercase;letter-spacing:.5px;font-weight:600}
.modal-c input,.modal-c select,.modal-c textarea{width:100%;padding:9px 12px;background:var(--bg0);border:1px solid var(--bd);border-radius:var(--rs);color:var(--t1);font-size:13px;outline:none;font-family:var(--font);transition:border-color .15s}
.modal-c input:focus,.modal-c select:focus,.modal-c textarea:focus{border-color:var(--grn)}
.modal-c input::placeholder,.modal-c textarea::placeholder{color:var(--t3)}
.modal-c textarea{resize:vertical;min-height:70px}
.btn-pri{width:100%;padding:11px;background:var(--grn);border:none;border-radius:var(--r);color:#000;font-size:13px;font-weight:700;cursor:pointer;margin-top:4px;transition:opacity .15s;font-family:var(--font)}
.btn-pri:hover{opacity:.85}
.btn-red{width:100%;padding:11px;background:var(--red);border:none;border-radius:var(--r);color:#fff;font-size:13px;font-weight:700;cursor:pointer;margin-top:4px;font-family:var(--font)}
.btn-red:hover{opacity:.85}

/* RESPONSIVE */
@media(max-width:1400px){.kpi-row{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){.g2{grid-template-columns:1fr}.kpi-row{grid-template-columns:repeat(2,1fr)}}
