:root{--bg: #080b12;--bg-2: #10151f;--bg-3: #1a2231;--bg-elev: #1f2839;--border: #222c3d;--border-soft: #1a2231;--text: #e7ebf3;--text-dim: #8994a8;--accent: #4f8ef7;--accent-2: #7c5cf7;--cyan: #22d3ee;--ok: #34d399;--warn: #fbbf24;--err: #f87171;--radius: 14px;--radius-sm: 10px;--shadow: 0 1px 2px rgba(0,0,0,.3), 0 4px 16px rgba(0,0,0,.22);--shadow-lg: 0 8px 30px rgba(0,0,0,.4);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-size:14px;background-image:radial-gradient(1200px 600px at 80% -10%,rgba(79,142,247,.06),transparent 60%)}a{color:var(--accent);text-decoration:none}code,pre{font-family:SF Mono,Fira Code,Consolas,monospace}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--bg-3);border-radius:6px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:var(--bg-elev)}.layout{display:flex;min-height:100vh}.sidebar{width:220px;background:var(--bg-2);border-right:1px solid var(--border);padding:20px 12px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh}.logo{display:flex;flex-direction:column;gap:4px;padding:0 10px 18px}.logo img{width:100%;max-width:170px;height:auto;display:block}.logo span{color:var(--accent);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:2.2px}.login-logo{padding:0;margin-bottom:10px;align-items:center}.login-logo img{max-width:230px}.login-logo span{letter-spacing:3px}.nav-item{padding:9px 12px;border-radius:8px;color:var(--text-dim);display:flex;align-items:center;gap:9px;cursor:pointer;font-weight:500}.nav-item:hover{background:var(--bg-3);color:var(--text)}.nav-item.active{background:linear-gradient(90deg,#4f8ef72e,#6d5ef71f);color:var(--text)}.sidebar .spacer{flex:1}.sidebar-user{border-top:1px solid var(--border);padding:12px 10px 4px}.sidebar-user-info{display:flex;align-items:center;gap:9px}.sidebar-user .avatar{width:32px;height:32px;border-radius:50%;flex:0 0 auto;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:14px}.sidebar-user .uname{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user .urole{color:var(--text-dim);font-size:11px;text-transform:uppercase;letter-spacing:.5px}a.btn.sm{padding:5px 10px;font-size:12px;text-decoration:none;display:inline-block}.gauge-card{text-align:center;padding:6px 4px;display:flex;flex-direction:column;align-items:center}.gauge-label{font-size:11px;letter-spacing:1.6px;color:var(--text-dim);font-weight:700;margin-top:4px}.gauge-sub{font-size:11px;color:var(--text-dim);margin-top:2px}.hostgrid{display:grid;grid-template-columns:minmax(240px,1fr) minmax(420px,2.1fr);gap:12px}.host-info{min-width:0}.host-gauges{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;align-items:center;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius);padding:14px 10px;box-shadow:var(--shadow)}.host-rates{grid-column:1 / -1;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.host-kv{grid-template-columns:58px 1fr;gap:9px 12px;margin-top:12px;font-size:12.5px}.host-ellipsis{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}@media (max-width: 1100px){.hostgrid{grid-template-columns:1fr}.host-gauges{grid-template-columns:repeat(4,1fr)}.host-rates{grid-template-columns:1fr}}.main{flex:1;padding:28px 34px;max-width:1440px;width:100%;margin:0 auto}.page-title{font-size:22px;font-weight:700;margin:0 0 4px;letter-spacing:-.2px}.page-sub{color:var(--text-dim);margin:0 0 22px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:20px}.card{background:linear-gradient(180deg,#ffffff06,#fff0),var(--bg-2);border:1px solid var(--border);border-radius:var(--radius);padding:15px 17px;box-shadow:var(--shadow);transition:transform .15s,border-color .15s}.card:hover{border-color:#2e3a4f}.card .k{color:var(--text-dim);font-size:11.5px;text-transform:uppercase;letter-spacing:.7px;font-weight:600}.card .v{font-size:27px;font-weight:700;margin-top:7px;letter-spacing:-.5px}.panel{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius);padding:20px 22px;margin-bottom:18px;box-shadow:var(--shadow)}.panel h3{margin:0 0 15px;font-size:15px;font-weight:650;display:flex;align-items:center;gap:8px}.panel h3:before{content:"";width:3px;height:15px;border-radius:3px;background:linear-gradient(180deg,var(--accent),var(--accent-2));display:inline-block}table{width:100%;border-collapse:collapse}th{text-align:left;color:var(--text-dim);font-size:11px;text-transform:uppercase;letter-spacing:.6px;font-weight:600;padding:9px 12px;border-bottom:1px solid var(--border)}td{padding:12px;border-bottom:1px solid var(--border-soft);vertical-align:middle}tr:last-child td{border-bottom:none}tbody tr{transition:background .12s}tbody tr:hover td{background:#ffffff05}.badge{display:inline-block;padding:3px 9px;border-radius:20px;font-size:12px;font-weight:600}.badge.ok{background:#34d39924;color:var(--ok)}.badge.warn{background:#fbbf2424;color:var(--warn)}.badge.err{background:#f8717124;color:var(--err)}.badge.dim{background:#8b96a824;color:var(--text-dim)}.badge.info{background:#4f8ef724;color:var(--accent)}button,.btn{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:8px 15px;font-weight:600;cursor:pointer;font-size:13px}button:hover{filter:brightness(1.1)}button.secondary{background:var(--bg-3);color:var(--text);border:1px solid var(--border)}button.danger{background:#f8717126;color:var(--err);border:1px solid rgba(248,113,113,.3)}button.sm{padding:5px 10px;font-size:12px}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:9px 12px;font-size:14px;width:100%}input:focus,select:focus{outline:none;border-color:var(--accent)}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus{-webkit-text-fill-color:var(--text);-webkit-box-shadow:0 0 0 1000px var(--bg) inset;caret-color:var(--text);transition:background-color 9999s ease-in-out 0s}label{display:block;color:var(--text-dim);font-size:12px;margin:12px 0 5px;font-weight:600}.row{display:flex;gap:12px}.row>*{flex:1}.form-actions{margin-top:18px;display:flex;gap:10px;justify-content:flex-end}.link-btn{background:none;border:none;color:var(--accent);padding:0;font-size:12px;cursor:pointer;width:auto}.link-btn:hover{text-decoration:underline}.upload-card{border:1px solid var(--border);background:var(--bg-2);border-radius:10px;padding:10px 14px;margin-bottom:12px}.upload-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.upload-name{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-bar{height:10px;border-radius:6px;background:var(--bg);border:1px solid var(--border);overflow:hidden}.upload-fill{height:100%;border-radius:6px;background:linear-gradient(90deg,var(--accent),#4fc3f7);transition:width .18s ease;background-size:30px 30px;animation:upload-stripes 1s linear infinite;background-image:linear-gradient(90deg,var(--accent),#4fc3f7),repeating-linear-gradient(45deg,rgba(255,255,255,.14) 0 8px,transparent 8px 16px)}@keyframes upload-stripes{0%{background-position:0 0,0 0}to{background-position:0 0,30px 0}}.upload-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:11px;margin-top:6px}.panel.drop-active{outline:2px dashed var(--accent);outline-offset:-6px;position:relative}.drop-hint{position:absolute;top:6px;right:6px;bottom:6px;left:6px;z-index:5;border-radius:10px;display:flex;align-items:center;justify-content:center;gap:6px;background:color-mix(in srgb,var(--accent) 12%,var(--bg-2));color:var(--text);font-weight:600;pointer-events:none}.ini-field{display:grid;grid-template-columns:230px 200px 1fr;gap:12px;align-items:center;padding:6px 0;border-bottom:1px solid var(--border)}.ini-field .ini-label{display:flex;flex-direction:column;gap:2px}.ini-field .ini-label .mono{color:var(--text-dim)}.ini-field .ini-input input,.ini-field .ini-input select{padding:6px 9px;font-size:13px}.ini-field .ini-help{line-height:1.35}@media (max-width: 780px){.ini-field{grid-template-columns:1fr;gap:4px}.ini-field .ini-help{margin-bottom:6px}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--bg-2);border:1px solid var(--border);border-radius:14px;padding:22px 24px;width:560px;max-width:94vw;max-height:88vh;overflow-y:auto}.modal{position:relative;box-shadow:var(--shadow-lg)}.modal h3{margin:0 6px 6px 0}.modal .hint{color:var(--text-dim);font-size:13px;margin-bottom:8px}.modal-x{position:absolute;top:14px;right:14px;width:30px;height:30px;padding:0;background:var(--bg-3);color:var(--text-dim);border:1px solid var(--border);border-radius:8px;font-size:15px;line-height:1;cursor:pointer}.modal-x:hover{background:var(--bg-elev);color:var(--text)}.log-view{background:#05070c;border:1px solid var(--border);border-radius:8px;padding:12px;font-size:12px;white-space:pre-wrap;max-height:420px;overflow-y:auto;line-height:1.55;color:#a8ffbf}.error-text{color:var(--err);font-size:13px;margin-top:10px}.muted{color:var(--text-dim)}.mono{font-family:SF Mono,Consolas,monospace;font-size:12.5px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-box{width:380px}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.kv{display:grid;grid-template-columns:160px 1fr;gap:6px 14px;font-size:13px}.kv .k{color:var(--text-dim)}.copy-block{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px;word-break:break-all}.toast-wrap{position:fixed;bottom:22px;right:22px;display:flex;flex-direction:column;gap:10px;z-index:200;max-width:380px}.toast{display:flex;align-items:flex-start;gap:10px;padding:12px 15px;border-radius:11px;background:var(--bg-elev);border:1px solid var(--border);box-shadow:var(--shadow-lg);font-size:13.5px;cursor:pointer;animation:toast-in .22s ease;line-height:1.4}@keyframes toast-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:none}}.toast-icon{flex:0 0 auto;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}.toast-ok{border-left:3px solid var(--ok)}.toast-ok .toast-icon{background:#34d39929;color:var(--ok)}.toast-err{border-left:3px solid var(--err)}.toast-err .toast-icon{background:#f8717129;color:var(--err)}.toast-warn{border-left:3px solid var(--warn)}.toast-warn .toast-icon{background:#fbbf2429;color:var(--warn)}.toast-info{border-left:3px solid var(--accent)}.toast-info .toast-icon{background:#4f8ef729;color:var(--accent)}.console{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:18px;box-shadow:var(--shadow)}.console-failed{border-color:#f8717173}.console-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 15px;background:var(--bg-2);border-bottom:1px solid var(--border);flex-wrap:wrap}.console-follow{display:flex;align-items:center;gap:5px;margin:0;font-size:12px;color:var(--text-dim)}.console-follow input{width:auto}.console-body{background:#04060a;padding:12px 14px;max-height:440px;overflow-y:auto;font-family:SF Mono,Consolas,monospace;font-size:12.5px;line-height:1.6}.console-body .ln{white-space:pre-wrap;word-break:break-word;color:#c4ccd8}.console-body .ln-err{color:#ff9b9b}.console-body .ln-warn{color:#ffd479}.console-body .ln-ok{color:#7ee2a8}.console-foot{padding:9px 15px;background:#f8717114;color:var(--err);font-size:12.5px;border-top:1px solid rgba(248,113,113,.25)}.spinner{width:14px;height:14px;border:2px solid var(--bg-3);border-top-color:var(--accent);border-radius:50%;display:inline-block;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.checks{display:grid;grid-template-columns:1fr 1fr;gap:8px}.check-tile{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--border);border-radius:10px;cursor:pointer;background:var(--bg);transition:border-color .12s,background .12s}.check-tile:hover{border-color:#2e3a4f}.check-tile.on{border-color:var(--accent);background:#4f8ef712}.check-tile input{width:auto;margin-top:2px}.check-tile .ct-title{font-weight:600;font-size:13px}.check-tile .ct-desc{color:var(--text-dim);font-size:11.5px;margin-top:2px;line-height:1.4}tbody tr.row-sel td{background:#4f8ef724!important}.ctx-menu{position:fixed;z-index:300;min-width:190px;padding:6px;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-lg);-webkit-user-select:none;user-select:none}.ctx-item{padding:8px 12px;border-radius:8px;font-size:13px;cursor:pointer;display:flex;gap:8px;align-items:center}.ctx-item:hover{background:var(--accent);color:#fff}.ctx-item.danger{color:var(--err)}.ctx-item.danger:hover{background:var(--err);color:#fff}.ctx-sep{height:1px;background:var(--border);margin:5px 4px}
