:root{--bg: #000000;--bg-elev: #0a0a0a;--bg-elev-2: #111111;--bg-hover: #161616;--border: #1c1c1c;--border-strong: #262626;--text: #ededed;--text-2: #a3a3a3;--text-3: #6b6b6b;--accent: #ffffff;--ok: #34d399;--ok-dim: rgba(52, 211, 153, .12);--warn: #fbbf24;--warn-dim: rgba(251, 191, 36, .12);--err: #f87171;--err-dim: rgba(248, 113, 113, .12);--info: #60a5fa;--radius: 12px;--radius-sm: 8px;--font: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: "JetBrains Mono", "SF Mono", ui-monospace, Menlo, Consolas, monospace;--shadow: 0 1px 0 rgba(255, 255, 255, .03) inset, 0 8px 30px rgba(0, 0, 0, .6)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}::selection{background:#ffffff2e}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#1f1f1f;border-radius:10px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:#2a2a2a}::-webkit-scrollbar-track{background:transparent}.app{min-height:100%;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;height:56px;padding:0 24px;background:#000c;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:-.01em}.brand-mark{width:22px;height:22px;border-radius:6px;display:grid;grid-template-columns:1fr 1fr;gap:2px;padding:4px;background:#0f0f0f;border:1px solid var(--border-strong)}.brand-mark span{background:var(--text-3);border-radius:1px}.brand-mark span:nth-child(1),.brand-mark span:nth-child(4){background:var(--text)}.brand small{color:var(--text-3);font-weight:400;margin-left:4px}.topbar-actions{display:flex;align-items:center;gap:8px}.page{width:100%;max-width:1200px;margin:0 auto;padding:32px 24px 60px;flex:1}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:24px}.page-head h1{margin:0;font-size:22px;font-weight:600;letter-spacing:-.02em}.page-head p{margin:4px 0 0;color:var(--text-3)}.btn{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 12px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-elev);color:var(--text);font-weight:500;font-size:13px;transition:background .15s,border-color .15s,color .15s,opacity .15s;white-space:nowrap}.btn:hover{background:var(--bg-hover);border-color:#333}.btn:disabled{opacity:.45;cursor:not-allowed}.btn svg{width:15px;height:15px;flex-shrink:0}.btn-primary{background:var(--text);color:#000;border-color:var(--text)}.btn-primary:hover{background:#d4d4d4;border-color:#d4d4d4}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn-ghost:hover{background:var(--bg-elev-2);color:var(--text);border-color:transparent}.btn-danger{color:var(--err)}.btn-danger:hover{background:var(--err-dim);border-color:#f871714d}.btn-ok{color:var(--ok)}.btn-ok:hover{background:var(--ok-dim);border-color:#34d3994d}.btn-sm{height:28px;padding:0 9px;font-size:12px}.btn-icon{width:34px;padding:0;justify-content:center}.btn-icon.btn-sm{width:28px}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius)}.card-pad{padding:20px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.server-card{display:flex;flex-direction:column;gap:14px;padding:18px 18px 16px;cursor:pointer;transition:border-color .15s,background .15s,transform .15s}.server-card:hover{border-color:var(--border-strong);background:#0d0d0d}.server-card .head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.server-card h3{margin:0;font-size:15px;font-weight:600;letter-spacing:-.01em}.server-card .sub{color:var(--text-3);font-size:12px;margin-top:2px;display:flex;gap:6px;align-items:center}.server-card .metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.metric{padding:10px 12px;background:#050505;border:1px solid var(--border);border-radius:var(--radius-sm)}.metric .k{font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}.metric .v{font-size:14px;font-weight:600;margin-top:2px;font-variant-numeric:tabular-nums}.server-card .foot{display:flex;align-items:center;justify-content:space-between;gap:8px}.server-card .foot .addr{font-family:var(--mono);font-size:12px;color:var(--text-2)}.empty{text-align:center;padding:64px 24px;color:var(--text-3);border:1px dashed var(--border-strong);border-radius:var(--radius)}.empty h3{color:var(--text-2);margin:0 0 6px;font-weight:500}.status{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:500}.status .dot{width:7px;height:7px;border-radius:50%;background:var(--text-3);box-shadow:0 0 0 3px #ffffff0a}.status.online .dot{background:var(--ok);box-shadow:0 0 0 3px var(--ok-dim),0 0 10px #34d39980}.status.starting .dot{background:var(--warn);box-shadow:0 0 0 3px var(--warn-dim);animation:pulse 1.4s ease-in-out infinite}.status.unhealthy .dot{background:var(--err);box-shadow:0 0 0 3px var(--err-dim)}.status.offline{color:var(--text-3)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.chip{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:6px;background:var(--bg-elev-2);border:1px solid var(--border);font-size:11px;color:var(--text-2);font-weight:500}.chip.mono{font-family:var(--mono)}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:12px;color:var(--text-2);font-weight:500}.field .hint{font-size:11px;color:var(--text-3)}.input,.select,.textarea{width:100%;height:36px;padding:0 12px;background:#050505;border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text);outline:none;transition:border-color .15s,box-shadow .15s}.textarea{height:auto;min-height:80px;padding:10px 12px;resize:vertical;font-family:var(--mono);font-size:12px}.input:focus,.select:focus,.textarea:focus{border-color:#444;box-shadow:0 0 0 3px #ffffff0d}.input::placeholder{color:var(--text-3)}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--text-3) 50%),linear-gradient(135deg,var(--text-3) 50%,transparent 50%);background-position:calc(100% - 16px) 15px,calc(100% - 11px) 15px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:32px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.form-grid .span-2{grid-column:span 2}.check{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#050505;cursor:pointer}.check input{accent-color:#fff;width:15px;height:15px;margin:0}.check span{font-size:13px}.check small{display:block;color:var(--text-3);font-size:11px}.form-section{margin-top:24px}.form-section h4{margin:0 0 12px;font-size:12px;color:var(--text-3);text-transform:uppercase;letter-spacing:.08em;font-weight:600}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#000000bf;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;overflow-y:auto;animation:fade .15s ease-out}.modal{width:100%;max-width:720px;background:var(--bg-elev);border:1px solid var(--border-strong);border-radius:16px;box-shadow:var(--shadow);animation:rise .18s ease-out}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--border)}.modal-head h2{margin:0;font-size:16px;font-weight:600}.modal-body{padding:22px}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:16px 22px;border-top:1px solid var(--border)}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.server-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}.server-head .title{display:flex;align-items:center;gap:14px}.server-head h1{margin:0;font-size:22px;font-weight:600;letter-spacing:-.02em}.server-head .meta{display:flex;gap:8px;margin-top:6px;flex-wrap:wrap}.server-head .actions{display:flex;gap:8px}.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}.stat{padding:14px 16px}.stat .k{font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}.stat .v{font-size:18px;font-weight:600;margin-top:4px;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.stat .v small{font-size:12px;color:var(--text-3);font-weight:400;margin-left:4px}.bar{height:3px;background:#1a1a1a;border-radius:3px;margin-top:10px;overflow:hidden}.bar i{display:block;height:100%;background:var(--text-2);border-radius:3px;transition:width .4s ease}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:20px}.tab{background:none;border:none;padding:10px 14px;margin-bottom:-1px;color:var(--text-3);font-weight:500;font-size:13px;border-bottom:1px solid transparent;transition:color .15s,border-color .15s;display:inline-flex;align-items:center;gap:7px}.tab svg{width:14px;height:14px}.tab:hover{color:var(--text-2)}.tab.active{color:var(--text);border-bottom-color:var(--text)}.console{display:flex;flex-direction:column;height:calc(100vh - 380px);min-height:420px;overflow:hidden}.console-out{flex:1;overflow-y:auto;padding:14px 16px;font-family:var(--mono);font-size:12px;line-height:1.6;background:#000;white-space:pre-wrap;word-break:break-word}.console-out .line{color:#c9c9c9}.console-out .line.warn{color:var(--warn)}.console-out .line.err{color:var(--err)}.console-out .line.info{color:var(--text-3);font-style:italic}.console-out .line.cmd{color:var(--info)}.console-out .line .ts{color:var(--text-3)}.console-in{display:flex;align-items:center;gap:10px;padding:10px 12px;border-top:1px solid var(--border);background:var(--bg-elev)}.console-in .prompt{font-family:var(--mono);color:var(--text-3)}.console-in input{flex:1;background:transparent;border:none;outline:none;font-family:var(--mono);font-size:13px;height:30px}.console-toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--bg-elev);font-size:12px;color:var(--text-3)}.mods-layout{display:grid;grid-template-columns:1fr 1fr;gap:16px}.mods-layout>*{min-width:0}@media(max-width:960px){.mods-layout{grid-template-columns:1fr}.stat-row{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:span 1}}.section-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border)}.section-head h3{margin:0;font-size:13px;font-weight:600}.section-head .count{color:var(--text-3);font-weight:400;margin-left:6px}.dropzone{margin:14px 16px 0;padding:22px;text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius-sm);color:var(--text-3);font-size:12px;cursor:pointer;transition:border-color .15s,background .15s,color .15s}.dropzone:hover,.dropzone.over{border-color:#444;background:#070707;color:var(--text-2)}.dropzone strong{color:var(--text-2);font-weight:500}.list{list-style:none;margin:0;padding:8px}.list-item{display:flex;align-items:center;gap:12px;padding:10px;border-radius:var(--radius-sm);transition:background .12s}.list-item:hover{background:var(--bg-elev-2)}.list-item .icon{width:32px;height:32px;border-radius:8px;background:#0f0f0f;border:1px solid var(--border);display:grid;place-items:center;flex-shrink:0;overflow:hidden}.list-item .icon img{width:100%;height:100%;object-fit:cover}.list-item .icon svg{width:15px;height:15px;color:var(--text-3)}.list-item .body{flex:1;min-width:0}.list-item .name{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:6px}.list-item .name .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.list-item .name .chip,.list-item .name .muted{flex-shrink:0}.list-item .name.disabled{color:var(--text-3);text-decoration:line-through}.list-item .desc{font-size:11px;color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-item .acts{display:flex;gap:4px;opacity:0;transition:opacity .12s}.list-item:hover .acts{opacity:1}.search-bar{display:flex;gap:8px;padding:14px 16px 0}.muted{color:var(--text-3)}.mono{font-family:var(--mono)}.row{display:flex;align-items:center;gap:8px}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.mt{margin-top:16px}.alert{padding:12px 14px;border-radius:var(--radius-sm);font-size:13px;border:1px solid}.alert.err{color:var(--err);background:var(--err-dim);border-color:#f8717140}.alert.warn{color:var(--warn);background:var(--warn-dim);border-color:#fbbf2440}.alert.ok{color:var(--ok);background:var(--ok-dim);border-color:#34d39940}.toasts{position:fixed;right:20px;bottom:20px;z-index:100;display:flex;flex-direction:column;gap:8px}.toast{padding:10px 14px;border-radius:var(--radius-sm);background:#0f0f0f;border:1px solid var(--border-strong);box-shadow:var(--shadow);font-size:13px;max-width:380px;animation:rise .18s ease-out}.toast.err{border-color:#f8717166;color:var(--err)}.toast.ok{border-color:#34d39966}.spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.15);border-top-color:var(--text);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,#0a0a0a 25%,#121212,#0a0a0a 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius-sm)}@keyframes shimmer{to{background-position:-200% 0}}.login{min-height:100%;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 50% 0%,#0c0c0c,#000 60%)}.login .card{width:100%;max-width:380px;padding:32px}.login h1{margin:18px 0 4px;font-size:20px;font-weight:600;letter-spacing:-.02em}.login p{margin:0 0 24px;color:var(--text-3);font-size:13px}.login form{display:flex;flex-direction:column;gap:14px}.login .btn{height:38px;justify-content:center}kbd{font-family:var(--mono);font-size:11px;padding:1px 5px;border-radius:4px;background:#111;border:1px solid var(--border-strong);color:var(--text-2)}
