:root{--bg:#0d0d0d;--bg2:#161616;--bg3:#1e1e1e;--border:#2e2e2e;--green:#00ff88;--green-dim:#00cc66;--text:#e8e8e8;--text-dim:#888888;--red:#ff3355;--mono:'JetBrains Mono',monospace}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--bg);color:var(--text);font-family:var(--mono);font-size:13px;overflow:hidden}.screen{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;transition:opacity .3s}.screen.hidden{opacity:0;pointer-events:none}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border)}@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
#auth-screen{flex-direction:column;gap:0}.auth-box{width:360px;border:1px solid var(--border);background:var(--bg2);animation:fadeUp .4s ease both}.auth-header{padding:20px 24px 16px;border-bottom:1px solid var(--border);display:flex;align-items:baseline;gap:10px}.auth-logo{font-size:22px;font-weight:700;color:var(--green);letter-spacing:-1px}.auth-version{color:var(--text-dim);font-size:11px}.auth-tabs{display:flex;border-bottom:1px solid var(--border)}.auth-tab{flex:1;padding:10px;text-align:center;cursor:pointer;color:var(--text-dim);font-family:var(--mono);font-size:12px;background:none;border:none;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;letter-spacing:.05em}.auth-tab.active{color:var(--green);border-bottom-color:var(--green)}.auth-form{padding:20px 24px;display:flex;flex-direction:column;gap:12px}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:11px;color:var(--text-dim);letter-spacing:.08em;text-transform:uppercase}.field input{background:var(--bg3);border:1px solid var(--border);color:var(--text);font-family:var(--mono);font-size:13px;padding:9px 12px;outline:none;transition:border-color .15s}.field input:focus{border-color:var(--green-dim)}.auth-error{font-size:11px;color:var(--red);min-height:16px;letter-spacing:.03em}.btn{padding:10px;background:var(--green);color:#000;font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;border:none;cursor:pointer;transition:opacity .15s}.btn:hover{opacity:.85}.btn:disabled{opacity:.4;cursor:not-allowed}
body{overflow:auto}.admin-gate{min-height:100vh;display:flex;align-items:center;justify-content:center}.admin-gate .auth-box{animation:fadeUp .4s ease both}.admin-dashboard{display:none}.admin-dashboard.active{display:block}.admin-topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:12px;padding:0 20px;height:42px;background:var(--bg2);border-bottom:1px solid var(--border)}.admin-topbar-logo{color:var(--green);font-weight:700;font-size:14px;letter-spacing:-0.5px}.admin-topbar-tag{color:var(--text-dim);font-size:11px}.admin-content{max-width:900px;margin:0 auto;padding:24px 20px 60px;display:flex;flex-direction:column;gap:32px}.admin-section{border:1px solid var(--border);background:var(--bg2)}.admin-section-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border)}.admin-section-title{font-size:11px;color:var(--text-dim);letter-spacing:.1em;text-transform:uppercase}.btn-sm{padding:5px 12px;background:var(--green);color:#000;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;border:none;cursor:pointer;transition:opacity .15s}.btn-sm:hover{opacity:.85}.btn-danger{padding:4px 10px;background:none;border:1px solid var(--border);color:var(--text-dim);font-family:var(--mono);font-size:11px;cursor:pointer;transition:border-color .15s,color .15s}.btn-danger:hover{border-color:var(--red);color:var(--red)}.btn-icon{background:none;border:none;padding:0;cursor:pointer;opacity:.5;transition:opacity .15s,transform .15s;color:var(--text)}.btn-icon:hover{opacity:1;transform:scale(1.2);color:var(--red)}.btn-icon::before{content:'';display:block;width:22px;height:22px;background-color:currentColor;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.btn-kick::before{-webkit-mask-image:url('/icons/sickle.svg');mask-image:url('/icons/sickle.svg')}.btn-kickall::before{-webkit-mask-image:url('/icons/triple-slash.svg');mask-image:url('/icons/triple-slash.svg')}.btn-history::before{-webkit-mask-image:url('/icons/scroll-burn.svg');mask-image:url('/icons/scroll-burn.svg')}.btn-delete-user::before{-webkit-mask-image:url('/icons/poison.svg');mask-image:url('/icons/poison.svg')}.btn-lockdown::before{-webkit-mask-image:url('/icons/lockdown.svg');mask-image:url('/icons/lockdown.svg')}.btn-lockdown.active{opacity:1;color:var(--red)}.btn-create-invite::before{-webkit-mask-image:url('/icons/invite.svg');mask-image:url('/icons/invite.svg')}.btn-create-invite{color:var(--green);opacity:.85}.btn-create-invite:hover{color:var(--green)}.admin-table{width:100%;border-collapse:collapse}.admin-table th{text-align:left;font-size:10px;color:var(--text-dim);letter-spacing:.08em;text-transform:uppercase;padding:8px 16px;border-bottom:1px solid var(--border)}.admin-table td{font-size:12px;padding:9px 16px;border-bottom:1px solid var(--border);color:var(--text);word-break:break-all}.admin-table tr:last-child td{border-bottom:none}.admin-table tr:hover td{background:var(--bg3)}.admin-table td:last-child{text-align:right}.badge{font-size:10px;padding:2px 7px;border-radius:2px;letter-spacing:.05em}.badge-ok{background:#003322;color:var(--green)}.badge-used{background:#1a1a1a;color:var(--text-dim)}.badge-expired{background:#2a1020;color:var(--red)}.admin-empty{padding:20px 16px;font-size:12px;color:var(--text-dim)}.logs-toolbar{display:flex;flex-direction:column;gap:8px;padding:10px 16px;border-bottom:1px solid var(--border)}.logs-filters-row{display:flex;flex-wrap:wrap;gap:16px;align-items:center}.logs-filter-group{display:flex;align-items:center;gap:4px}.logs-filter-label{font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);margin-right:2px}.log-filter{padding:3px 10px;background:none;border:1px solid var(--border);color:var(--text-dim);font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:border-color .15s,color .15s}.log-filter:hover{border-color:var(--text-dim);color:var(--text)}.log-filter.active{border-color:var(--green);color:var(--green)}.lf-level.info.active{border-color:#4a9eff;color:#4a9eff}.lf-level.warn.active{border-color:#f0a500;color:#f0a500}.lf-level.error.active{border-color:var(--red);color:var(--red)}.lf-tag.t-auth.active{border-color:#4a9eff;color:#4a9eff}.lf-tag.t-ws.active{border-color:#9b5de5;color:#9b5de5}.lf-tag.t-admin.active{border-color:#f0a500;color:#f0a500}.lf-tag.t-agent.active{border-color:#00b4d8;color:#00b4d8}.lf-tag.t-system.active{border-color:#888;color:#888}.lf-tag.t-http.active{border-color:#2eb872;color:#2eb872}.logs-search-row{display:flex;gap:8px;align-items:center}.logs-search-row input{background:var(--bg3);border:1px solid var(--border);color:var(--text);font-family:var(--mono);font-size:11px;padding:4px 10px;outline:none;width:200px;transition:border-color .15s}.logs-search-row input:focus{border-color:var(--green-dim)}.logs-search-row input::placeholder{color:var(--text-dim)}.logs-box{padding:10px 0;font-size:11px;line-height:1.7;max-height:480px;overflow-y:auto}.log-line{padding:1px 16px;color:var(--text-dim);word-break:break-all;white-space:pre-wrap}.log-line:hover{background:var(--bg3)}.log-line.log-warn{color:#f0a500}.log-line.log-error{color:var(--red)}.log-tag-inline{font-weight:500}.log-empty{display:block;padding:16px;color:var(--text-dim);font-size:11px}.admin-control-row{display:flex;gap:16px;padding:12px 16px;flex-wrap:wrap}.admin-control-item{display:flex;align-items:center;gap:12px;flex:1;min-width:220px}.admin-control-label{font-size:12px;color:var(--text-dim)}.admin-control-label strong{color:var(--text)}.new-invite-row{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--border)}.new-invite-row input{flex:1;background:var(--bg3);border:1px solid var(--border);color:var(--text);font-family:var(--mono);font-size:12px;padding:6px 10px;outline:none;transition:border-color .15s}.new-invite-row input:focus{border-color:var(--green-dim)}.new-invite-row input::placeholder{color:var(--text-dim)}