:root{--bg: #0f1115;--bg-elev: #161a22;--bg-elev-2: #1d222c;--border: #262c38;--text: #e7eaf0;--text-dim: #97a0b3;--primary: #5b8cff;--primary-hover: #7aa1ff;--danger: #ef5b6b;--warning: #f5a623;--success: #4ade80;--radius: 8px;--shadow: 0 4px 16px rgba(0, 0, 0, .25);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--text)}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.app{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:var(--bg-elev);border-right:1px solid var(--border);padding:20px 16px}.sidebar h1{font-size:16px;font-weight:600;margin:0 0 24px;color:var(--text)}.sidebar nav{display:flex;flex-direction:column;gap:4px}.sidebar nav a{color:var(--text-dim);padding:8px 10px;border-radius:var(--radius)}.sidebar nav a.active,.sidebar nav a:hover{background:var(--bg-elev-2);color:var(--text);text-decoration:none}.content{padding:24px 28px}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}.card+.card{margin-top:16px}.vm-thumb{width:100%;height:150px;object-fit:cover;object-position:top;border-radius:calc(var(--radius) - 2px);background:#000;margin-bottom:12px}.badge.ip{background:#00aaff26;color:#7ec8ff;font-family:var(--font-mono);padding:1px 8px;border-radius:4px}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.stack{display:flex;flex-direction:column;gap:12px}.input,button.btn{font-size:14px;border-radius:var(--radius);border:1px solid var(--border);padding:8px 12px;background:var(--bg-elev-2);color:var(--text)}button.btn{cursor:pointer}button.btn:hover{border-color:var(--primary)}button.btn:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--primary);border-color:var(--primary);color:#0b0d12}button.primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.badge.running{background:#4ade8026;color:var(--success)}.badge.stopped{background:#97a0b326;color:var(--text-dim)}.badge.suspended{background:#f5a62326;color:var(--warning)}.badge.unknown{background:#ef5b6b26;color:var(--danger)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}th{color:var(--text-dim);font-weight:500;font-size:13px}.error{color:var(--danger);font-size:14px}.muted{color:var(--text-dim)}.center-page{display:grid;place-items:center;min-height:100vh;background:var(--bg)}.center-page .card{min-width:360px;max-width:420px}label{font-size:13px;color:var(--text-dim)}.field{display:flex;flex-direction:column;gap:4px}@media (max-width: 720px){.app{grid-template-columns:1fr}.sidebar{border-right:none;border-bottom:1px solid var(--border)}}.toasts{position:fixed;top:16px;right:16px;display:flex;flex-direction:column;gap:8px;z-index:1000;pointer-events:none}.toast{pointer-events:auto;background:var(--bg-elev-2);border:1px solid var(--border);border-left:3px solid var(--primary);padding:10px 14px;border-radius:var(--radius);box-shadow:var(--shadow);font-size:14px;max-width:380px;animation:toast-in .2s ease-out}.toast.success{border-left-color:var(--success)}.toast.error{border-left-color:var(--danger)}@keyframes toast-in{0%{transform:translate(20px);opacity:0}to{transform:translate(0);opacity:1}}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.stat{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.stat .label{font-size:12px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}.stat .value{font-size:24px;font-weight:600;margin-top:4px}.stat .sub{font-size:12px;color:var(--text-dim);margin-top:4px}.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.filters .input{padding:6px 10px;font-size:13px}.filters select.input{padding-right:24px}.banner{background:#f5a6231a;border:1px solid var(--warning);border-radius:var(--radius);padding:10px 14px;font-size:13px;color:var(--warning)}
