:root{--bg:#0c0f11;--panel:#14181b;--panel2:#191e21;--line:#293035;--text:#f3f4f2;--muted:#939da2;--green:#73d391;--green2:#1b3927;--amber:#e6b95c;--red:#ef6a69;--blue:#6ca5e8}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:"Noto Sans Thai",system-ui,sans-serif;font-size:14px;letter-spacing:0}button,input,select{font:inherit}.hidden{display:none!important}.shell{display:grid;grid-template-columns:244px 1fr;min-height:100vh}aside{position:fixed;width:244px;height:100vh;background:#101416;border-right:1px solid var(--line);padding:24px 14px;display:flex;flex-direction:column;z-index:5}.side-brand{display:flex;align-items:center;gap:12px;padding:0 8px 24px}.brand-mark{display:grid;place-items:center;width:38px;height:38px;background:var(--green);color:#0b120d;font-weight:800}.side-brand strong{display:block;font-size:18px}.side-brand span{display:block;color:var(--muted);font-size:9px;margin-top:-2px}nav{display:flex;flex-direction:column;gap:3px}nav button{height:42px;border:0;background:none;color:var(--muted);display:flex;align-items:center;gap:12px;padding:0 12px;cursor:pointer;border-left:2px solid transparent;text-align:left}nav button:hover{color:var(--text);background:#171c1f}nav button.active{color:var(--green);background:#17221b;border-left-color:var(--green)}svg{width:18px;height:18px;stroke-width:1.8}.side-foot{margin-top:auto;border-top:1px solid var(--line);padding:18px 8px 0;display:flex;align-items:center;gap:9px}.side-foot div{min-width:0;flex:1}.side-foot b,.side-foot small{display:block;font-size:11px}.side-foot small{color:var(--muted)}.live-dot{width:8px;height:8px;background:var(--muted);border-radius:50%}.live-dot.on{background:var(--green);box-shadow:0 0 0 4px #73d3911c}main{grid-column:2;min-width:0}header{height:92px;border-bottom:1px solid var(--line);padding:18px 30px;display:flex;align-items:center;position:sticky;top:0;background:#0c0f11ee;backdrop-filter:blur(10px);z-index:4}header>div:first-of-type{flex:1}.eyebrow{margin:0;color:var(--muted);font-size:10px;font-weight:700}.eyebrow span{color:var(--green)}header h1{font-size:22px;margin:3px 0 0;letter-spacing:0}.header-actions{display:flex;align-items:center;gap:10px}.header-actions>span{color:var(--muted);font-size:11px;margin-right:8px}button{border:1px solid var(--line);background:#1b2023;color:var(--text);height:38px;padding:0 14px;cursor:pointer;border-radius:4px;display:inline-flex;gap:8px;align-items:center;justify-content:center}button:hover{border-color:#4a555c}.icon-btn{width:38px;padding:0}.primary{background:var(--green);border-color:var(--green);color:#0c150f;font-weight:700}.danger{background:var(--red);border-color:var(--red);color:#190909;font-weight:700}.mobile-menu{display:none}#content{padding:26px 30px 50px;max-width:1600px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.stat{background:var(--panel);border:1px solid var(--line);border-top:2px solid #414b50;padding:18px}.stat.green{border-top-color:var(--green)}.stat.amber{border-top-color:var(--amber)}.stat.blue{border-top-color:var(--blue)}.stat span{color:var(--muted);font-size:11px;text-transform:uppercase}.stat strong{display:block;font-size:28px;margin:5px 0}.stat small{color:var(--muted)}.grid-2{display:grid;grid-template-columns:1.5fr 1fr;gap:14px}.panel{background:var(--panel);border:1px solid var(--line);margin-bottom:14px}.panel-head{min-height:55px;display:flex;align-items:center;padding:0 17px;border-bottom:1px solid var(--line);gap:10px}.panel-head h2{font-size:14px;margin:0;flex:1}.panel-head p{margin:0;color:var(--muted);font-size:11px}.panel-body{padding:18px}.server-hero{height:185px;background:linear-gradient(90deg,#111a15dd,#11141799),url('../../client-mod/assets/gateway-map.png') center/cover;display:flex;align-items:flex-end;padding:20px}.server-hero h2{font-size:24px;margin:0}.server-hero p{color:#c4cbc6;margin:2px 0 0}.status-pill{display:inline-flex;align-items:center;gap:7px;background:#152b1d;color:var(--green);border:1px solid #2e6140;padding:5px 9px;font-size:11px;margin-bottom:10px}.quick{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.quick button{height:72px;flex-direction:column}.quick button svg{color:var(--green)}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:10px;color:var(--muted);font-weight:600;padding:11px 14px;border-bottom:1px solid var(--line)}td{padding:12px 14px;border-bottom:1px solid #242a2e;vertical-align:middle}tr:last-child td{border:0}tbody tr:hover{background:#171c1f}.badge{font-size:10px;padding:3px 7px;border:1px solid #3b464b;color:#bec6c9}.badge.on{border-color:#306143;color:var(--green);background:#15271c}.badge.warn{border-color:#6a5426;color:var(--amber)}.muted{color:var(--muted)}.mono{font-family:Consolas,monospace}.bar{height:4px;background:#293035;width:90px;margin-top:5px}.bar i{display:block;height:100%;background:var(--green)}.toolbar{display:flex;gap:9px;padding:12px 14px;border-bottom:1px solid var(--line)}.toolbar input,.toolbar select{max-width:280px}.toolbar .spacer{flex:1}input,select{height:38px;border:1px solid var(--line);background:#101416;color:var(--text);padding:0 11px;border-radius:3px;outline:none}input:focus,select:focus{border-color:var(--green)}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:16px}.field label{display:block;color:#cbd0d2;font-size:11px;margin-bottom:6px}.field input,.field select{width:100%}.form-actions{display:flex;justify-content:flex-end;padding-top:18px;margin-top:18px;border-top:1px solid var(--line)}.empty{padding:45px;text-align:center;color:var(--muted)}.log-list{background:#0c0f11;font-family:Consolas,monospace;font-size:11px;max-height:650px;overflow:auto}.log-line{padding:7px 12px;border-bottom:1px solid #1b2023;color:#acb5b9;white-space:pre-wrap;word-break:break-all}.log-line.warning{color:var(--amber)}.log-line.error{color:var(--red)}.access-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.access-item{display:flex;align-items:center;gap:8px;background:var(--panel2);border:1px solid var(--line);padding:10px;margin-bottom:7px}.access-item span{flex:1;overflow:hidden;text-overflow:ellipsis}.access-item button{width:30px;height:30px;padding:0}.service-row{display:grid;grid-template-columns:1fr 130px 120px;align-items:center;padding:16px;border-bottom:1px solid var(--line)}.service-row:last-child{border:0}.service-row strong,.service-row small{display:block}.service-row small{color:var(--muted)}.login{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 50% 40%,#19241d 0,#0c0f11 48%)}.login-box{width:min(390px,calc(100vw - 32px));background:#121719;border:1px solid var(--line);padding:34px}.login-box .brand-mark{margin-bottom:18px}.login-box h1{font-size:22px;margin:0}.login-box p{color:var(--muted);margin:2px 0 24px}.login-box label{display:block;font-size:11px;margin:13px 0}.login-box input{display:block;width:100%;margin-top:6px}.login-box button{width:100%;margin-top:8px}.login-box small{display:block;color:var(--red);margin-top:12px}#toast{position:fixed;right:20px;bottom:20px;background:#e9eeeb;color:#111;padding:12px 16px;border-left:4px solid var(--green);z-index:20;transform:translateY(100px);opacity:0;transition:.2s}#toast.show{transform:none;opacity:1}dialog{background:#171c1f;color:var(--text);border:1px solid var(--line);padding:26px;width:min(430px,calc(100vw - 30px));border-radius:5px}dialog::backdrop{background:#000b}.dialog-icon{color:var(--amber)}dialog h2{font-size:18px}dialog p{color:var(--muted)}dialog>div:last-child{display:flex;justify-content:flex-end;gap:8px;margin-top:22px}
@media(max-width:900px){.shell{grid-template-columns:1fr}aside{transform:translateX(-100%);transition:.2s}aside.open{transform:none}main{grid-column:1}.mobile-menu{display:inline-flex}header{padding:14px 16px;height:80px}.header-actions>span,.header-actions>.primary{display:none}#content{padding:16px}.stats{grid-template-columns:repeat(2,1fr)}.grid-2,.access-cols{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.stats,.form-grid{grid-template-columns:1fr}.stat strong{font-size:23px}.service-row{grid-template-columns:1fr 90px}.service-row button{grid-column:1/-1;margin-top:10px}.panel{overflow:auto}}
