:root,:root[data-theme=dark]{color-scheme:dark;--bg: #0b0f14;--surface: #111820;--surface-2: #161f29;--surface-3: #1c2733;--border: #233042;--border-strong: #31435a;--fg: #e6edf3;--fg-muted: #8b9aab;--fg-subtle: #61707f;--accent: #38bdf8;--accent-fg: #04131d;--accent-soft: rgba(56, 189, 248, .14);--success: #34d399;--success-soft: rgba(52, 211, 153, .14);--warn: #fbbf24;--warn-soft: rgba(251, 191, 36, .14);--danger: #f87171;--danger-soft: rgba(248, 113, 113, .14);--info: #60a5fa;--focus-ring: 0 0 0 2px var(--bg), 0 0 0 4px var(--accent);--shadow-raised: none;--grid-line: rgba(255, 255, 255, .06)}:root[data-theme=light]{color-scheme:light;--bg: #f5f7fa;--surface: #ffffff;--surface-2: #eef2f7;--surface-3: #e3eaf3;--border: #d9e2ec;--border-strong: #b9c7d6;--fg: #0f1720;--fg-muted: #5a6b7c;--fg-subtle: #7c8b9a;--accent: #0b6bcb;--accent-fg: #ffffff;--accent-soft: rgba(11, 107, 203, .1);--success: #047857;--success-soft: rgba(4, 120, 87, .12);--warn: #b45309;--warn-soft: rgba(180, 83, 9, .12);--danger: #b91c1c;--danger-soft: rgba(185, 28, 28, .1);--info: #1d4ed8;--focus-ring: 0 0 0 2px var(--surface), 0 0 0 4px var(--accent);--shadow-raised: 0 1px 2px rgba(15, 23, 32, .06);--grid-line: rgba(15, 23, 32, .08)}:root{--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--text-2xs: 11px;--text-xs: 12px;--text-sm: 13px;--text-base: 15px;--text-lg: 20px;--text-xl: 26px;--text-2xl: 34px;--leading-tight: 1.15;--leading-body: 1.5;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--space-12: 48px;--radius-sm: 8px;--radius-md: 10px;--radius-pill: 999px;--shell-rail: 224px;--shell-rail-collapsed: 64px;--shell-topbar: 56px;--content-max: 1440px;--row-height: 44px;--motion-fast: .12s;--motion-base: .2s;--ease: cubic-bezier(.2, 0, 0, 1)}@media (prefers-reduced-motion: reduce){:root{--motion-fast: 0ms;--motion-base: 0ms}}*,*:before,*:after{box-sizing:border-box}html,body,#app{min-height:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--leading-body);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:var(--accent-soft);color:var(--fg)}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.num{text-align:right;font-variant-numeric:tabular-nums}.muted{color:var(--fg-muted)}.subtle{color:var(--fg-subtle)}.nowrap{white-space:nowrap}.t-xs{font-size:var(--text-xs)}.t-2xs{font-size:var(--text-2xs)}.stack{display:grid;gap:var(--space-3)}.row{display:flex;align-items:center;gap:var(--space-2)}.grow{flex:1 1 auto;min-width:0}.shell{display:grid;grid-template-columns:var(--shell-rail) 1fr;min-height:100vh;background:var(--bg);transition:grid-template-columns var(--motion-base) var(--ease)}.shell.is-collapsed{grid-template-columns:var(--shell-rail-collapsed) 1fr}.rail{border-right:1px solid var(--border);background:var(--surface);display:flex;flex-direction:column;min-height:100vh;position:sticky;top:0;align-self:start;height:100vh;overflow-y:auto}.rail-brand{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3) var(--space-4);min-height:var(--shell-topbar)}.brand-mark{width:18px;height:18px;border-radius:4px;background:var(--accent);flex:0 0 auto}.brand-name{font-weight:700;font-size:var(--text-sm);letter-spacing:.01em;white-space:nowrap}.rail-nav{display:grid;gap:2px;padding-bottom:var(--space-4)}.rail-group{padding:var(--space-3) var(--space-3) var(--space-1);color:var(--fg-subtle);font-size:var(--text-2xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.nav-item{display:flex;align-items:center;gap:var(--space-2);min-height:34px;padding:0 var(--space-3);border-radius:var(--radius-sm);border-left:2px solid transparent;color:var(--fg-muted);font-size:var(--text-sm);text-decoration:none;transition:background var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease)}.nav-item:hover{background:var(--surface-2);color:var(--fg);text-decoration:none}.nav-item.is-current{background:var(--surface-2);border-left-color:var(--accent);color:var(--fg);font-weight:600}.nav-item .nav-label{white-space:nowrap;overflow:hidden}.is-collapsed .nav-label,.is-collapsed .rail-group,.is-collapsed .brand-name{display:none}.is-collapsed .nav-item,.is-collapsed .rail-brand{justify-content:center;padding-left:0;padding-right:0}.rail-foot{margin-top:auto;padding:var(--space-3);border-top:1px solid var(--border);display:grid;gap:var(--space-1)}.main{min-width:0;padding:0 var(--space-6) var(--space-12)}.main-inner{max-width:var(--content-max);margin:0 auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);height:var(--shell-topbar);border-bottom:1px solid var(--border);margin-bottom:var(--space-6);position:sticky;top:0;background:var(--bg);z-index:3}.topbar-title{font-size:var(--text-lg);font-weight:600;margin:0;line-height:var(--leading-tight)}.topbar-actions{display:flex;align-items:center;gap:var(--space-2)}.chip{display:inline-flex;align-items:center;gap:6px;font:600 var(--text-2xs) var(--font-mono);padding:3px 8px;border-radius:var(--radius-pill);border:1px solid var(--border);color:var(--fg-muted);white-space:nowrap}.chip--ok{color:var(--success);border-color:var(--success-soft);background:var(--success-soft)}.chip--warn{color:var(--warn);border-color:var(--warn-soft);background:var(--warn-soft)}.chip--danger{color:var(--danger);border-color:var(--danger-soft);background:var(--danger-soft)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:0 var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--fg);font:600 var(--text-sm) var(--font-sans);cursor:pointer;white-space:nowrap;transition:background var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease)}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{cursor:not-allowed;opacity:.55}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.btn--primary:hover:not(:disabled){filter:brightness(1.06)}.btn--danger{border-color:var(--danger);color:var(--danger);background:transparent}.btn--danger:hover:not(:disabled){background:var(--danger-soft)}.btn--quiet{border-color:transparent;background:transparent;color:var(--fg-muted)}.btn--quiet:hover:not(:disabled){background:var(--surface-2);color:var(--fg);border-color:var(--border)}.btn--sm{min-height:28px;padding:0 10px;font-size:var(--text-2xs)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;min-width:28px;min-height:28px;padding:0 6px;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--fg-muted);font:600 var(--text-2xs) var(--font-sans);cursor:pointer;transition:color var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease)}.icon-btn:hover:not(:disabled){color:var(--fg);border-color:var(--border-strong)}.icon-btn:disabled{opacity:.5;cursor:not-allowed}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-raised)}.panel+.panel{margin-top:var(--space-4)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);min-height:48px}.panel-title{margin:0;font-size:var(--text-sm);font-weight:600}.panel-body{padding:var(--space-4)}.panel-body--flush{padding:0}.grid-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-3);margin-bottom:var(--space-4)}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-4)}.grid-dash{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:var(--space-4);margin-top:var(--space-4)}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-4);min-height:116px;display:flex;flex-direction:column;gap:var(--space-2);box-shadow:var(--shadow-raised)}.kpi-label{margin:0;color:var(--fg-muted);font-size:var(--text-xs);display:flex;align-items:center;gap:var(--space-2)}.kpi-value{margin:0;font:600 var(--text-xl) / var(--leading-tight) var(--font-mono);font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:6px;white-space:nowrap}.kpi-unit{font:400 var(--text-xs) var(--font-mono);color:var(--fg-muted)}.kpi-dot{width:6px;height:6px;border-radius:50%;background:var(--success);align-self:center;flex:0 0 auto}.kpi-dot--warn{background:var(--warn)}.kpi-dot--danger{background:var(--danger)}.kpi-foot{margin-top:auto;display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-2);color:var(--fg-subtle);font-size:var(--text-xs)}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse}.table th{text-align:left;padding:0 var(--space-4);height:36px;background:var(--surface-2);color:var(--fg-muted);font-size:var(--text-2xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.table td{padding:0 var(--space-4);height:var(--row-height);border-top:1px solid var(--border);font-size:var(--text-sm);vertical-align:middle}.table tbody tr{transition:background var(--motion-fast) var(--ease)}.table tbody tr:hover{background:var(--surface-2)}.table tbody tr.is-clickable{cursor:pointer}.table .col-actions{text-align:right;width:1%;white-space:nowrap}.table .cell-tight{padding-top:6px;padding-bottom:6px}.table-foot{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-top:1px solid var(--border);color:var(--fg-muted);font-size:var(--text-xs)}.site-cell{display:inline-flex;align-items:center;gap:var(--space-2);min-width:0;max-width:100%}.site-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.site-bar{width:3px;height:16px;border-radius:2px;flex:0 0 auto;background:var(--fg-subtle)}.site-bar--running{background:var(--success)}.site-bar--building,.site-bar--preparing{background:var(--warn)}.site-bar--stopped{background:var(--fg-subtle)}.site-bar--failed{background:var(--danger)}.site-bar--lg{height:28px}.status-word{display:inline-flex;align-items:center;gap:6px;font:600 var(--text-2xs) var(--font-mono);letter-spacing:.04em;color:var(--fg-muted);white-space:nowrap}.status-word .dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:0 0 auto}.status-word--running{color:var(--success)}.status-word--building{color:var(--warn)}.status-word--preparing{color:var(--info)}.status-word--stopped{color:var(--fg-muted)}.status-word--failed{color:var(--danger)}.status-word--success{color:var(--success)}.status-word--pending{color:var(--fg-muted)}@media (prefers-reduced-motion: no-preference){.status-word--building .dot,.status-word--preparing .dot{animation:dh-pulse 1.6s var(--ease) infinite}}@keyframes dh-pulse{50%{opacity:.35}}.empty{background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius-md);padding:var(--space-6);display:grid;gap:var(--space-3);justify-items:start}.empty-title{margin:0;font-size:var(--text-base);font-weight:600}.empty-text{margin:0;color:var(--fg-muted);font-size:var(--text-sm);max-width:68ch}.code-block{margin:0;width:100%;padding:var(--space-3);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--fg-muted);font:400 var(--text-xs) / 1.6 var(--font-mono);overflow-x:auto;white-space:pre}.skeleton{background:var(--surface-2);border-radius:var(--radius-sm);animation:dh-breathe 1.4s var(--ease) infinite}.skeleton-row{height:var(--row-height);border-top:1px solid var(--border);display:flex;align-items:center;gap:var(--space-4);padding:0 var(--space-4)}.skeleton-block{height:12px;border-radius:var(--radius-sm);background:var(--surface-2);animation:dh-breathe 1.4s var(--ease) infinite}@keyframes dh-breathe{50%{opacity:.5}}@media (prefers-reduced-motion: reduce){.skeleton,.skeleton-block{animation:none}}.error-bar{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--danger);border-left-width:3px;border-radius:var(--radius-sm);background:var(--danger-soft);color:var(--fg);margin-bottom:var(--space-4)}.error-bar-title{font-weight:600;font-size:var(--text-sm);margin:0 0 2px}.error-bar-code{font:600 var(--text-2xs) var(--font-mono);color:var(--danger);background:var(--surface);border:1px solid var(--danger);border-radius:var(--radius-pill);padding:1px 6px;margin-right:var(--space-2)}.error-bar-msg{margin:0;color:var(--fg-muted);font-size:var(--text-xs);word-break:break-word}.notice{display:flex;gap:var(--space-2);align-items:flex-start;padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius-sm);background:var(--surface-2);font-size:var(--text-xs);color:var(--fg-muted)}.field-label{display:block;font-size:var(--text-xs);font-weight:600;color:var(--fg-muted);margin-bottom:6px}.field-hint{margin:6px 0 0;font-size:var(--text-2xs);color:var(--fg-subtle)}.form-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid .span-2{grid-column:1 / -1}.def-list{margin:0;display:grid;grid-template-columns:max-content 1fr;gap:var(--space-2) var(--space-6);font-size:var(--text-sm)}.def-list dt{color:var(--fg-muted);white-space:nowrap}.def-list dd{margin:0;min-width:0;word-break:break-word}.log-view{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);font:400 var(--text-xs) / 1.55 var(--font-mono);overflow:auto;padding:var(--space-3);min-height:240px;max-height:60vh;white-space:pre-wrap;word-break:break-word}.log-line{display:flex;gap:var(--space-2)}.log-ts{color:var(--fg-subtle);flex:0 0 auto}.log-level{flex:0 0 auto;width:44px;text-transform:uppercase;font-weight:600;color:var(--fg-muted)}.log-level--error,.log-level--failed{color:var(--danger)}.log-level--warn,.log-level--warning{color:var(--warn)}.log-level--success,.log-level--ok{color:var(--success)}.log-body{flex:1 1 auto;counter-reset:none}.log-stream-state{display:inline-flex;align-items:center;gap:6px;font:600 var(--text-2xs) var(--font-mono);color:var(--fg-muted)}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-4)}.page-head-title{margin:0;font-size:var(--text-xl);font-weight:600;line-height:var(--leading-tight);display:flex;align-items:center;gap:var(--space-3)}.page-head-sub{margin:var(--space-2) 0 0;color:var(--fg-muted);font-size:var(--text-xs)}.toolbar{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border)}.seg{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.seg>button{min-height:30px;padding:0 var(--space-3);border:0;border-right:1px solid var(--border);background:transparent;color:var(--fg-muted);font:600 var(--text-2xs) var(--font-mono);letter-spacing:.04em;cursor:pointer;white-space:nowrap}.seg>button:last-child{border-right:0}.seg>button:hover{color:var(--fg);background:var(--surface-2)}.seg>button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent)}.url{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--fg-muted);white-space:nowrap}.hr{border:0;border-top:1px solid var(--border);margin:var(--space-4) 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.login-shell{min-height:100vh;display:grid;place-items:center;padding:var(--space-8) var(--space-4);background:var(--bg)}.login-card{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-6);box-shadow:var(--shadow-raised);display:grid;gap:var(--space-4)}.login-brand{display:flex;align-items:center;gap:var(--space-2)}.login-title{margin:0;font-size:var(--text-lg);font-weight:600}.login-sub{margin:0;color:var(--fg-muted);font-size:var(--text-xs)}@media (max-width: 1024px){.shell,.shell.is-collapsed{grid-template-columns:var(--shell-rail-collapsed) 1fr}.rail-group,.nav-label,.brand-name{display:none}.grid-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3,.grid-dash{grid-template-columns:minmax(0,1fr)}}@media (max-width: 768px){.main{padding:0 var(--space-4) var(--space-8)}.grid-kpis,.grid-2,.form-grid{grid-template-columns:minmax(0,1fr)}}.n-input:focus-within,.n-input-number:focus-within,.n-base-selection:focus-within{outline:2px solid var(--accent);outline-offset:1px;border-radius:var(--radius-sm)}.n-checkbox:focus-within,.n-radio:focus-within,.n-switch:focus-within{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.n-modal .n-card{background:var(--surface)}.site-sub{display:block;padding-left:11px;line-height:1.35}
