:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0e141f;--surface-1:#131a28;--surface-2:#182133;--surface-3:#0a0f19;--hover:#1e2940;--border:#94a3c21a;--border-strong:#94a3c22e;--border-faint:#94a3c20f;--ink:#e8eef7;--ink-dim:#93a1b8;--ink-faint:#7b8798;--accent:#4c8dff;--accent-strong:#1d63ed;--accent-ink:#fff;--accent-wash:#4c8dff26;--ring:#4c8dff6b;--selection:#4c8dff4d;--c1:#0db7ed;--c2:#f2a93c;--seg-1:#4c8dff;--seg-2:#7d8ea8;--seg-3:#55637c;--seg-4:#38435a;--ok:#3fb950;--warn:#e0a63f;--bad:#e5534b;--info:#4c8dff;--muted:#93a1b8;--ok-bg:#3fb95021;--ok-bd:#3fb95061;--warn-bg:#e0a63f21;--warn-bd:#e0a63f61;--bad-bg:#e5534b21;--bad-bd:#e5534b61;--info-bg:#4c8dff24;--info-bd:#4c8dff66;--muted-bg:#93a1b81a;--muted-bd:#93a1b84d;--error-band-bg:#e5534b12;--warn-band-bg:#e0a63f12;--overlay:#04080fa8;--shadow-panel:0 1px 2px #00000059, 0 14px 34px -22px #000000a6;--shadow-modal:0 32px 96px #000000b3;--shadow-toast:0 12px 32px #0000008c;--btn-inset:inset 0 1px 0 #ffffff0a;--btn-primary-bd:#1d63ed;--tone-ok-hover:#3fb9501a;--tone-warn-hover:#e0a63f1a;--tone-bad-hover:#e5534b1a;--scrollbar-thumb:#94a3c238;--scrollbar-thumb-hover:#94a3c25c;--term-dot:#93a1b84d;--stream-inset:inset 0 12px 24px -24px #000c;--radius:12px;--radius-sm:8px;--radius-xs:6px;--mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;--ease:cubic-bezier(.22, 1, .36, 1);--t-fast:.14s;--t-mid:.2s;--sidebar-w:240px}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f6f9;--surface-1:#fff;--surface-2:#eef1f6;--surface-3:#dfe5ee;--hover:#e6eaf1;--border:#0f172a17;--border-strong:#0f172a29;--border-faint:#0f172a0d;--ink:#0f172a;--ink-dim:#48566a;--ink-faint:#56606f;--accent:#1d63ed;--accent-strong:#1a55d0;--accent-ink:#fff;--accent-wash:#1d63ed1a;--ring:#1d63ed52;--selection:#1d63ed2e;--c1:#0d9dc9;--c2:#d98b1f;--seg-1:#1d63ed;--seg-2:#6b7c94;--seg-3:#94a3b6;--seg-4:#a8b5c6;--ok:#15803d;--warn:#a85f0a;--bad:#c62828;--info:#1d63ed;--muted:#64748b;--ok-bg:#16a34a1a;--ok-bd:#16a34a66;--warn-bg:#c2620d1f;--warn-bd:#c2620d6b;--bad-bg:#dc262617;--bad-bd:#dc262661;--info-bg:#1d63ed1f;--info-bd:#1d63ed61;--muted-bg:#64748b1f;--muted-bd:#64748b59;--error-band-bg:#dc26260f;--warn-band-bg:#c2620d12;--overlay:#0f172a59;--shadow-panel:0 1px 2px #0f172a0f, 0 14px 34px -22px #0f172a40;--shadow-modal:0 32px 96px #0f172a59;--shadow-toast:0 12px 32px #0f172a38;--btn-inset:inset 0 1px 0 #ffffffb3;--btn-primary-bd:#1a55d0;--tone-ok-hover:#16a34a1a;--tone-warn-hover:#a85f0a1a;--tone-bad-hover:#c628281a;--scrollbar-thumb:#0f172a2e;--scrollbar-thumb-hover:#0f172a4d;--term-dot:#0f172a40;--stream-inset:inset 0 12px 24px -24px #0f172a2e}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--ink);font-family:var(--sans);margin:0;font-size:14px;line-height:1.55}::selection{background:var(--selection)}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border:2px solid var(--bg);border-radius:8px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}::-webkit-scrollbar-track{background:0 0}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}#app{grid-template-columns:var(--sidebar-w) 1fr;height:100vh;display:grid;overflow:hidden}.hidden{display:none!important}.sidebar{background:var(--surface-1);border-right:1px solid var(--border);flex-direction:column;gap:24px;padding:16px 12px;display:flex}.brand{align-items:center;gap:10px;padding:0 8px;display:flex}.brand-mark{width:24px;height:24px;color:var(--accent);flex:none}.brand-name{letter-spacing:0;font-size:15px;font-weight:600}.nav{flex-direction:column;gap:2px;display:flex}.nav-item{border-radius:var(--radius-xs);height:34px;color:var(--ink-dim);transition:background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);align-items:center;gap:10px;padding:0 10px;font-size:14px;font-weight:500;text-decoration:none;display:flex}.nav-item .ic{flex:none;width:16px;height:16px}.nav-item:hover{background:var(--hover);color:var(--ink)}.nav-item.active{background:var(--accent-wash);color:var(--accent)}.sidebar-foot{flex-direction:column;gap:8px;margin-top:auto;display:flex}.theme-toggle{width:100%;height:32px;color:var(--ink-dim);background:0 0;justify-content:flex-start;gap:8px;padding:0 10px;font-size:13px}.theme-toggle:hover:not(:disabled){background:var(--hover);color:var(--ink)}.theme-toggle .ic{width:16px;height:16px}.mode-card{background:var(--surface-3);border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;gap:8px;padding:12px;display:flex}.demo-badge{color:var(--warn);align-items:center;gap:6px;width:fit-content;font-size:12px;font-weight:500;display:inline-flex}.demo-badge.hidden{display:none}.foot-meta{color:var(--ink-faint);font-size:11px;line-height:1.5}.foot-meta code{font-family:var(--mono);font-size:11px}.main{flex-direction:column;min-width:0;min-height:0;display:flex}.view{outline:none;flex:1;min-height:0;padding:24px 32px 48px;overflow-y:auto}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:24px;display:flex}.page-head .ph-main{flex-direction:column;gap:4px;min-width:0;display:flex}.page-title{letter-spacing:-.01em;align-items:center;gap:8px;margin:0;font-size:24px;font-weight:600;line-height:1.25;display:flex}.page-sub{color:var(--ink-dim);margin:0;font-size:13px;line-height:1.5}.head-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.back-link{color:var(--ink-dim);transition:color var(--t-fast) var(--ease);align-items:center;gap:4px;margin-bottom:12px;font-size:13px;font-weight:500;text-decoration:none;display:inline-flex}.back-link:hover{color:var(--accent)}.back-link .ic{width:16px;height:16px}.btn{height:32px;font:inherit;color:var(--ink);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-xs);cursor:pointer;box-shadow:var(--btn-inset);transition:background-color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease), opacity var(--t-fast) var(--ease);white-space:nowrap;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:500;display:inline-flex}.btn:hover:not(:disabled){background:var(--hover);border-color:var(--border-strong)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn .ic{width:16px;height:16px}.btn-primary{background:var(--accent-strong);border-color:var(--btn-primary-bd);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-ghost{box-shadow:none;background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--hover);border-color:var(--border)}.btn-icon{border-radius:var(--radius-xs);width:28px;height:28px;color:var(--ink-dim);cursor:pointer;transition:background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), opacity var(--t-fast) var(--ease);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;display:inline-flex}.btn-icon:hover:not(:disabled){background:var(--hover);color:var(--ink);border-color:var(--border)}.btn-icon:active:not(:disabled){transform:translateY(1px)}.btn-icon:disabled{opacity:.35;cursor:not-allowed}.btn-icon .ic{width:16px;height:16px}.btn-icon.tone-ok{color:var(--ok)}.btn-icon.tone-ok:hover:not(:disabled){background:var(--tone-ok-hover);border-color:var(--ok-bd)}.btn-icon.tone-bad{color:var(--bad)}.btn-icon.tone-bad:hover:not(:disabled){background:var(--tone-bad-hover);border-color:var(--bad-bd)}.btn-icon.tone-warn{color:var(--warn)}.btn-icon.tone-warn:hover:not(:disabled){background:var(--tone-warn-hover);border-color:var(--warn-bd)}select,input[type=text],input[type=number],input[type=search],textarea{font:inherit;color:var(--ink);background:var(--surface-3);border:1px solid var(--border);border-radius:var(--radius-xs);height:32px;transition:border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);outline:none;padding:0 10px;font-size:13px}textarea{height:auto;padding:8px 10px}select:focus,input[type=text]:focus,input[type=number]:focus,input[type=search]:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}.checkbox{color:var(--ink-dim);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;font-size:13px;display:inline-flex}.checkbox input{accent-color:var(--accent)}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;display:flex}.toolbar .grow{flex:1}.badge{border-radius:var(--radius-xs);vertical-align:middle;letter-spacing:0;border:1px solid #0000;padding:0 8px;font-size:11px;font-weight:500;line-height:16px;display:inline-block}.badge-ok{color:var(--ok);background:var(--ok-bg);border-color:var(--ok-bd)}.badge-warn{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-bd)}.badge-bad{color:var(--bad);background:var(--bad-bg);border-color:var(--bad-bd)}.badge-info{color:var(--info);background:var(--info-bg);border-color:var(--info-bd)}.badge-muted{color:var(--muted);background:var(--muted-bg);border-color:var(--muted-bd)}.dot{border-radius:50%;flex:none;width:8px;height:8px}.dot-ok{background:var(--ok)}.dot-bad{background:var(--bad)}.dot-warn{background:var(--warn)}.dot-info{background:var(--info)}.dot-muted{background:var(--muted)}.status-line{align-items:center;gap:8px;min-width:0;display:inline-flex}.panel{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-panel);overflow:hidden}.panel+.panel{margin-top:16px}.card-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.node-card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;box-shadow:var(--shadow-panel);transition:border-color var(--t-fast) var(--ease), background-color var(--t-fast) var(--ease);flex-direction:column;gap:12px;padding:16px 20px;display:flex}.node-card:hover{border-color:var(--border-strong);background:var(--surface-2)}.node-card .head{align-items:center;gap:8px;display:flex}.node-card .name{font-size:15px;font-weight:600}.node-card .addr{font-family:var(--mono);color:var(--ink-dim);font-variant-numeric:tabular-nums;font-size:12px}.node-card .meta{color:var(--ink-dim);justify-content:space-between;align-items:center;gap:12px;font-size:12px;display:flex}.node-card .count{color:var(--ink);font-variant-numeric:tabular-nums;font-size:13px;font-weight:500}.node-card.unreachable{opacity:.72}.node-card.unreachable .name{color:var(--ink-dim)}.node-card .facts{border-top:1px solid var(--border-faint);font-family:var(--mono);color:var(--ink-faint);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:4px 12px;padding-top:12px;font-size:11px;display:flex}table.grid{border-collapse:collapse;width:100%;font-size:13px}.grid thead th{text-align:left;color:var(--ink-faint);border-bottom:1px solid var(--border);background:var(--surface-3);white-space:nowrap;padding:8px 16px;font-size:12px;font-weight:500}.grid tbody td{border-bottom:1px solid var(--border-faint);vertical-align:middle;height:36px;padding:0 16px}.grid tbody tr:last-child td{border-bottom:none}.grid tbody tr.row-link{cursor:pointer;transition:background-color var(--t-fast) var(--ease)}.grid tbody tr.row-link:hover{background:var(--surface-2)}.grid tbody tr.row-link:hover td:first-child{box-shadow:inset 2px 0 0 var(--accent)}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:12px}.dim{color:var(--ink-dim)}.faint{color:var(--ink-faint)}.name-cell{color:var(--accent);font-weight:500}.actions-cell{text-align:right;white-space:nowrap}.actions-cell .btn-icon+.btn-icon{margin-left:2px}.group-head{background:var(--surface-2);border-bottom:1px solid var(--border);align-items:center;gap:8px;min-height:44px;padding:8px 16px;font-size:13px;display:flex}.group-head .g-name{color:var(--ink);font-weight:500}.group-head .g-addr{font-family:var(--mono);color:var(--ink-dim);font-variant-numeric:tabular-nums;font-size:12px}.group-head .g-count{color:var(--ink-dim);font-variant-numeric:tabular-nums;margin-left:auto;font-size:12px}.group-head .g-spacer,.spacer{flex:1}.group-error,.group-warn{border-radius:var(--radius-sm);border:1px solid #0000;flex-direction:column;gap:4px;margin:12px 16px;padding:8px 12px;font-size:13px;display:flex}.group-error{color:var(--bad);background:var(--error-band-bg);border-color:var(--bad-bd)}.group-warn{color:var(--warn);background:var(--warn-band-bg);border-color:var(--warn-bd)}.empty,.loading{text-align:center;color:var(--ink-dim);padding:48px 20px;font-size:13px}.empty h2{color:var(--ink);margin:0 0 4px;font-size:15px;font-weight:600}.loading .spinner{border:2px solid var(--border);border-top-color:var(--accent);vertical-align:-3px;border-radius:50%;width:16px;height:16px;margin-right:8px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{color:var(--bad);border:1px solid var(--bad-bd);background:var(--error-band-bg);border-radius:var(--radius-sm);text-align:left;margin-bottom:16px;padding:12px 16px;font-size:13px}.notice{border:1px solid var(--border);border-left:2px solid var(--accent);border-radius:var(--radius-xs);background:var(--surface-1);color:var(--ink-dim);align-items:center;gap:8px;margin-bottom:16px;padding:10px 16px;font-size:13px;display:flex}.detail-meta{color:var(--ink-dim);flex-wrap:wrap;gap:4px 24px;margin-bottom:16px;font-size:12px;display:flex}.detail-meta .k{color:var(--ink-faint);margin-right:6px}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:16px;display:flex}.tab{height:36px;font:inherit;color:var(--ink-dim);cursor:pointer;transition:color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:8px;margin-bottom:-1px;padding:0 12px;font-size:13px;font-weight:500;display:inline-flex}.tab:hover{color:var(--ink)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.tab .ic{width:16px;height:16px}.stream-shell{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-3);box-shadow:var(--shadow-panel);flex-direction:column;display:flex;overflow:hidden}.stream-toolbar{background:var(--surface-2);border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:8px 12px;font-size:12px;display:flex}.term-dots{flex:none;gap:6px;margin-right:4px;display:flex}.term-dots i{background:var(--term-dot);border-radius:50%;width:8px;height:8px}.stream-title{color:var(--ink-dim);font-size:12px;font-weight:500}.stream-toolbar .conn{color:var(--ink-dim);align-items:center;gap:6px;font-size:12px;display:inline-flex}.stream-toolbar .spacer{flex:1}.conn-live .dot{background:var(--ok)}.conn-off .dot{background:var(--muted)}.stream-body{height:460px;font-family:var(--mono);white-space:pre-wrap;word-break:break-all;background:var(--surface-3);box-shadow:var(--stream-inset);padding:12px 16px;font-size:12px;line-height:1.6;overflow-y:auto}.stream-body:focus{outline:none}.stream-empty{color:var(--ink-faint)}.btn.tone-ok{color:var(--ok);border-color:var(--ok-bd)}.btn.tone-ok:hover:not(:disabled){background:var(--tone-ok-hover);border-color:var(--ok-bd)}.btn.tone-warn{color:var(--warn);border-color:var(--warn-bd)}.btn.tone-warn:hover:not(:disabled){background:var(--tone-warn-hover);border-color:var(--warn-bd)}.btn.tone-bad{color:var(--bad);border-color:var(--bad-bd)}.btn.tone-bad:hover:not(:disabled){background:var(--tone-bad-hover);border-color:var(--bad-bd)}.modal-overlay{background:var(--overlay);z-index:40;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:var(--surface-1);border:1px solid var(--border-strong);width:560px;max-width:100%;max-height:90vh;box-shadow:var(--shadow-modal);border-radius:14px;flex-direction:column;display:flex}.modal-head{border-bottom:1px solid var(--border);background:var(--surface-2);border-radius:14px 14px 0 0;justify-content:space-between;align-items:center;gap:12px;padding:12px 20px;display:flex}.modal-head h3{margin:0;font-size:15px;font-weight:600}.modal-body{flex-direction:column;gap:12px;padding:16px 20px;display:flex;overflow-y:auto}.modal-foot{border-top:1px solid var(--border);background:var(--surface-2);border-radius:0 0 14px 14px;justify-content:flex-end;gap:8px;padding:12px 20px;display:flex}.field{flex-direction:column;gap:4px;display:flex}.field .k{color:var(--ink-dim);font-size:12px;font-weight:500}.field input[type=text],.field input[type=number],.field select,.field textarea{width:100%}.field textarea{resize:vertical;font-family:var(--mono);font-size:12px;line-height:1.5}.field-row{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.create-section{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-3);transition:border-color var(--t-fast) var(--ease);padding:8px 12px}.create-section[open]{border-color:var(--border-strong)}.create-section summary{cursor:pointer;color:var(--ink-dim);-webkit-user-select:none;user-select:none;transition:color var(--t-fast) var(--ease);padding:4px 0;font-size:12px;font-weight:500}.create-section[open] summary{color:var(--ink)}.create-section .section-body{flex-direction:column;gap:12px;padding:8px 0 4px;display:flex}.compose-editor{background:var(--surface-3);border-top:1px solid var(--border);overflow:hidden}.compose-yaml{width:100%;min-height:340px;font-family:var(--mono);color:var(--ink);resize:vertical;box-sizing:border-box;background:0 0;border:none;border-radius:0;outline:none;padding:12px 16px;font-size:12px;line-height:1.6;display:block}.compose-yaml:focus{box-shadow:inset 0 0 0 1px var(--accent)}.template-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;padding:12px;display:grid}.template-card{text-align:left;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);font:inherit;color:var(--ink);transition:border-color var(--t-fast) var(--ease), background-color var(--t-fast) var(--ease);flex-direction:column;gap:8px;padding:12px;display:flex}.template-card:hover{border-color:var(--border-strong);background:var(--hover)}.tpl-head{align-items:center;gap:8px;display:flex}.tpl-name{font-size:13px;font-weight:500}.tpl-note{color:var(--ink-dim);font-size:12px;line-height:1.5}.tpl-actions{gap:4px;margin-top:auto;display:flex}.tpl-form{border-bottom:1px solid var(--border);background:var(--surface-3);flex-wrap:wrap;gap:8px;padding:12px;display:flex}.tpl-form .inline-input{flex:160px;min-width:140px}.tpl-hint{flex:100%;font-size:12px}.detail-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;display:grid}.dl{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-panel);grid-template-columns:auto 1fr;align-items:baseline;gap:8px 16px;padding:16px;font-size:13px;display:grid}.dl .k{color:var(--ink-faint);white-space:nowrap;font-size:12px;font-weight:500}.dl .mono{word-break:break-all}.dl .env-list{word-break:break-all;flex-direction:column;gap:2px;display:flex}.toast-wrap{z-index:50;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.toast{background:var(--surface-2);border:1px solid var(--border-strong);border-left:2px solid var(--accent);border-radius:var(--radius-xs);box-shadow:var(--shadow-toast);animation:toast-in var(--t-mid) var(--ease);align-items:center;gap:8px;max-width:380px;padding:10px 16px;font-size:13px;display:flex}.toast.t-ok{border-left-color:var(--ok)}.toast.t-bad{border-left-color:var(--bad)}.toast.t-warn{border-left-color:var(--warn)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (width<=900px){#app{grid-template-columns:1fr}.sidebar{display:none}.view{padding:16px 16px 40px}.stream-body{height:360px}.grid-wide .col-image,.grid-wide .col-id,.grid-wide .col-run,.grid-wide .col-actions{display:none}}.login-wrap{justify-content:center;align-items:center;min-height:60vh;display:flex}.login-card{flex-direction:column;gap:16px;width:100%;max-width:360px;padding:24px;display:flex}.login-head{text-align:center;flex-direction:column;align-items:center;gap:4px;display:flex}.login-head .brand-mark{width:32px;height:32px;color:var(--accent)}.login-submit{justify-content:center;width:100%;height:36px}.inline-input{min-width:120px;max-width:220px}.row-active{background:var(--surface-2)}.grid th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.grid th.sortable:hover{color:var(--ink-dim)}.alerts-grid td.alert-msg-cell{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;max-width:520px;overflow:hidden}.alert-container{color:var(--ink)}.alerts-grid tbody tr{position:relative}.row-cover{color:inherit;text-decoration:none}.row-cover:after{content:"";position:absolute;inset:0}.alerts-grid tbody tr:focus-within{background:var(--surface-2)}.alerts-grid tbody tr:focus-within td:first-child{box-shadow:inset 2px 0 0 var(--accent)}.row-cover:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.alert-summary{margin-bottom:16px;padding:16px}.alert-summary-head{align-items:center;gap:12px;display:flex}.alert-summary-msg{color:var(--ink);font-size:14px;font-weight:500}.alert-suggestion{border-top:1px solid var(--border-faint);color:var(--ink-dim);margin:12px 0 0;padding-top:12px;font-size:13px}.alert-summary-bad{border-color:var(--bad-bd)}.alert-summary-warn{border-color:var(--warn-bd)}.seg{border:1px solid var(--border);border-radius:var(--radius-xs);display:inline-flex;overflow:hidden}.seg-btn{height:30px;font:inherit;color:var(--ink-dim);background:var(--surface-3);cursor:pointer;transition:background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);border:none;padding:0 12px;font-size:12px;font-weight:500}.seg-btn+.seg-btn{border-left:1px solid var(--border)}.seg-btn:hover{color:var(--ink);background:var(--hover)}.seg-btn.on{color:var(--accent);background:var(--accent-wash)}.xterm-host{height:420px;padding:8px 10px;overflow:hidden}.xterm-host .xterm{height:100%}.xterm-host .xterm .xterm-viewport{background-color:#0000}.xterm-host .xterm .xterm-viewport::-webkit-scrollbar{width:8px}.xterm-host .xterm .xterm-viewport::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}.xterm-host .xterm .xterm-viewport::-webkit-scrollbar-track{background:0 0}.grid-scroll{overscroll-behavior:contain;max-height:60vh;overflow-y:auto}.grid-scroll table.grid thead th{z-index:1;background:var(--surface-1);position:sticky;top:0}.grid-scroll tbody tr.spacer{pointer-events:none}.node-labels{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.grid-scroll tbody tr.spacer td{border:none;padding:0}.load-more{text-align:center;padding:8px 12px}.node-picker{position:relative}.node-picker>button{white-space:nowrap;font-size:12px}.picker-caret{opacity:.7;margin-left:6px;font-size:9px}.node-picker-body{z-index:60;border:1px solid var(--border-strong);border-radius:var(--radius-xs);background:var(--surface-1);min-width:220px;box-shadow:var(--shadow-modal);flex-direction:column;gap:6px;padding:10px 12px;display:flex;position:absolute;top:calc(100% + 6px);left:0}.grid td .btn+.btn{margin-left:4px}.grid td .btn{margin-bottom:0}.batch-node{border-top:1px solid var(--border)}.batch-node:first-of-type{border-top:none}.auth-warn{border-bottom:1px solid var(--warn-bd);background:var(--warn-band-bg);color:var(--ink-dim);align-items:center;gap:8px;margin:0;padding:8px 16px;font-size:12px;display:flex}.auth-warn code{font-family:var(--mono);background:var(--surface-3);color:var(--ink);border-radius:4px;padding:0 4px}.help-body{color:var(--ink-dim);padding:12px 16px 16px;font-size:13px;line-height:1.7}.help-body p{margin:8px 0}.help-body p:first-child{margin-top:0}.help-body ul{margin:8px 0 8px 20px;padding:0}.help-body li{margin:4px 0}.help-body code,.page-sub code,.empty code{font-family:var(--mono);background:var(--surface-2);color:var(--ink);border-radius:4px;padding:0 4px;font-size:12px}.metric-grid{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));align-items:stretch;gap:16px;display:grid}.metric-card{flex-direction:column;min-height:240px;display:flex}.metric-grid>.panel+.panel{margin-top:0}.metric-stats{font-family:var(--mono);color:var(--ink-faint);border-top:1px solid var(--border-faint);font-variant-numeric:tabular-nums;margin-top:auto;padding:8px 16px;font-size:11px}.metric-value{box-sizing:border-box;font-variant-numeric:tabular-nums;height:48px;color:var(--ink);white-space:nowrap;align-items:baseline;gap:8px;padding:12px 16px 0;font-size:28px;font-weight:500;display:flex;overflow:hidden}.metric-sub{color:var(--ink-dim);font-size:12px;font-weight:400}.metric-empty{padding:24px 16px;font-size:12px}.metric-chart{flex-direction:column;flex:auto;min-height:0;padding:8px 16px;display:flex}.metric-chart svg{touch-action:none;flex:auto;width:100%;min-height:64px;display:block}.metric-tick{font-family:var(--mono);fill:var(--ink-faint);font-variant-numeric:tabular-nums;font-size:10px}.metric-legend{color:var(--ink-dim);box-sizing:border-box;flex-wrap:nowrap;align-items:center;gap:12px;height:24px;padding-top:8px;font-size:11px;display:flex;overflow:hidden}.legend-item{align-items:center;gap:6px;display:inline-flex}.legend-dot{border-radius:2px;width:8px;height:8px;display:inline-block}.metric-readout{font-variant-numeric:tabular-nums;gap:12px;display:inline-flex}.readout-item{font-family:var(--mono);font-size:11px}.breadcrumb{font-family:var(--mono);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:4px;padding:8px 16px;font-size:12px;display:flex}.crumb-item{align-items:center;gap:4px;display:inline-flex}.crumb{border-radius:var(--radius-xs);color:var(--ink-dim);cursor:pointer;font-family:var(--mono);transition:color var(--t-fast) var(--ease), background-color var(--t-fast) var(--ease);background:0 0;border:1px solid #0000;padding:2px 6px;font-size:12px;line-height:1.6}.crumb:hover{color:var(--ink);background:var(--hover)}.crumb-sep{color:var(--ink-faint);-webkit-user-select:none;user-select:none}.file-list{max-height:460px;overflow-y:auto}.file-list thead th{z-index:1;background:var(--surface-3);position:sticky;top:0}.link-btn{color:var(--accent);cursor:pointer;font:inherit;text-align:left;background:0 0;border:none;padding:0}.link-btn:hover{text-decoration:underline}.sidebar-logout{border-top:1px solid var(--border);width:100%;height:32px;color:var(--ink-dim);border-radius:0;justify-content:flex-start;margin-top:4px;padding:0 10px;font-size:13px}.sidebar-logout:hover:not(:disabled){color:var(--bad);background:0 0}.confirm-modal{width:420px;max-width:420px}.confirm-detail{color:var(--ink-dim);margin:0;font-size:13px;line-height:1.6}.btn-danger{background:var(--bad);color:#fff;border-color:var(--bad)}.btn-danger:hover:not(:disabled){background:var(--bad);filter:brightness(1.1)}.label-snippets{gap:12px;margin-top:8px;display:grid}.snippet{background:var(--surface-3);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.snippet-head{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:4px 4px 4px 12px;display:flex}.snippet-where{color:var(--ink-dim);font-size:12px;font-weight:500}.snippet-head .btn{margin-left:auto}.snippet-code{font-family:var(--mono);color:var(--ink);white-space:pre-wrap;word-break:break-all;margin:0;padding:12px;font-size:12px;line-height:1.6}.disk-summary{flex-direction:column;gap:16px;margin-bottom:16px;padding:20px 24px;display:flex}.disk-total{align-items:baseline;gap:12px;display:flex}.disk-total-num{font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:32px;font-weight:500;line-height:1.1}.disk-total-label{color:var(--ink-dim);font-size:12px}.disk-bar{background:var(--surface-3);border-radius:6px;gap:2px;height:12px;display:flex;overflow:hidden}.disk-seg{height:100%;display:block}.seg-images{background:var(--seg-1)}.seg-containers{background:var(--seg-2)}.seg-volumes{background:var(--seg-3)}.seg-buildcache{background:var(--seg-4)}.disk-legend{color:var(--ink-dim);flex-wrap:wrap;gap:8px 24px;font-size:12px;display:flex}.disk-legend-item{align-items:center;gap:6px;display:inline-flex}.disk-legend-item .mono{color:var(--ink)}.vol-detail{border-top:1px solid var(--border)}.add-node{margin-bottom:16px;padding:16px}.add-node-fields{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.add-node-fields .field{flex:200px;min-width:180px}.add-node-fields .btn{flex:none}.invite-panel{margin-bottom:16px}.invite-form{flex-wrap:wrap;align-items:flex-end;gap:12px;padding:16px;display:flex}.invite-form .field{flex:200px;min-width:180px}.invite-form .field-narrow{flex:0 0 130px;min-width:110px}.invite-form .btn{flex:none}.invite-issued{padding:16px}.invite-hint{color:var(--ink-dim);margin:0 0 12px;font-size:13px}.code-block{background:var(--surface-3);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--mono);color:var(--ink);white-space:pre;margin:0;padding:12px 16px;font-size:12px;line-height:1.6;overflow-x:auto}.invite-actions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.invite-actions .btn{flex:none}.code-ink{color:var(--accent)}.invite-meta{margin-top:12px}.invite-foot{padding:0 16px 12px}.invite-table,.manual-form{border-top:1px solid var(--border)}.ok-ink{color:var(--ok)}.link-danger{font:inherit;color:var(--ink-faint);cursor:pointer;transition:color var(--t-fast) var(--ease);background:0 0;border:none;align-self:flex-start;padding:0;font-size:12px}.link-danger:hover{color:var(--bad)}.node-card .link-danger{margin-top:auto}.hint{color:var(--ink-faint);margin-bottom:16px;font-size:12px}.meta-gap{margin-left:8px}.bad-ink{color:var(--bad)}.toolbar-gap{margin-left:8px}.mode-live{color:var(--ink);align-items:center;gap:6px;font-size:12px;font-weight:500;display:inline-flex}.link-action{font:inherit;color:var(--ink-dim);cursor:pointer;transition:color var(--t-fast) var(--ease), background-color var(--t-fast) var(--ease);background:0 0;border:none;border-radius:4px;padding:0 4px;font-size:12px}.link-action:hover{color:var(--ink);background:var(--hover)}.link-action+.link-action{margin-left:4px}.link-action.danger:hover{color:var(--bad)}.compose-bar{flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:16px;padding:16px;display:flex}.compose-bar .field{flex:180px;min-width:160px}.compose-bar>.btn,.compose-bar>.node-picker{flex:none}.compose-bar>.node-picker{margin-left:auto}
