.login{flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:100vh;padding:20px 16px 0;display:flex}.login-card{width:min(400px,100%);padding:28px}.login-card .brand{padding:0 0 20px}.login-btn{width:100%}.login-help{color:var(--muted);line-height:1.7}.login-help p{margin:0 0 10px}:root{--bg:#f4f5f7;--surface:#fff;--surface-2:#f8f9fb;--hover:#f1f3f6;--border:#e4e7ec;--border-strong:#cfd4dc;--text:#101828;--muted:#5d6679;--faint:#98a2b3;--primary:#111827;--primary-text:#fff;--accent:#4f46e5;--accent-soft:#eef0ff;--focus:#4f46e538;--ok:#0f9f6e;--ok-soft:#e9f8f1;--ok-line:#a6e4c9;--warn:#c2700a;--warn-soft:#fff7e8;--warn-line:#f7d49a;--err:#d92d20;--err-soft:#fef1f0;--err-line:#f9c5c0;--info:#1f7ae0;--info-soft:#edf5ff;--info-line:#b6d6fb;--code-bg:#0f172a;--code-text:#e2e8f0;--chart-1:#4f46e5;--chart-2:#a78bfa;--chart-3:#ef4444;--chart-bar:#10b981;--overlay:#0f172a73;--radius:10px;--radius-lg:14px;--shadow-sm:0 1px 2px #1018280d;--shadow:0 6px 16px #10182814;--shadow-lg:0 24px 56px #10182838;--sidebar:228px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font:14px/1.55 ui-sans-serif,system-ui,-apple-system,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}:root[data-theme=dark]{--bg:#0b0f17;--surface:#121826;--surface-2:#161d2c;--hover:#1b2335;--border:#243044;--border-strong:#33415a;--text:#e6e9ef;--muted:#9aa4b6;--faint:#6b778c;--primary:#e6e9ef;--primary-text:#0b0f17;--accent:#8b87ff;--accent-soft:#1f2140;--focus:#8b87ff4d;--ok:#34d399;--ok-soft:#0f2a22;--ok-line:#1f5c47;--warn:#fbbf24;--warn-soft:#2b2210;--warn-line:#5c4717;--err:#f87171;--err-soft:#2d1416;--err-line:#6b2a2e;--info:#60a5fa;--info-soft:#102238;--info-line:#1e4471;--code-bg:#070a10;--code-text:#d7dde8;--chart-1:#8b87ff;--chart-2:#c4b5fd;--chart-3:#f87171;--chart-bar:#34d399;--overlay:#0009;--shadow:0 6px 16px #00000059;--shadow-lg:0 24px 56px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);margin:0}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--accent)}code{font:12.5px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.layout{grid-template-columns:var(--sidebar) minmax(0, 1fr);min-height:100vh;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;height:100vh;padding:16px 12px;display:flex;position:sticky;top:0}.brand{color:var(--text);align-items:center;gap:10px;padding:4px 10px 16px;font-size:16.5px;font-weight:700;text-decoration:none;display:flex}.brand-logo{border-radius:7px;width:28px;height:28px;display:block}.brand small{color:var(--faint);margin-left:auto;font-size:11.5px;font-weight:500}.nav{flex-direction:column;gap:2px;display:flex}.nav a{color:var(--muted);border-radius:8px;align-items:center;gap:10px;padding:8px 12px;font-weight:500;text-decoration:none;display:flex}.nav a:hover{background:var(--hover);color:var(--text)}.nav a.active{background:var(--accent-soft);color:var(--accent)}.nav-icon{flex:none;width:18px;height:18px}.nav .count{color:var(--faint);margin-left:auto;font-size:11.5px}.nav .count.err{color:var(--err);font-weight:600}.sidebar-foot{border-top:1px solid var(--border);flex-direction:column;gap:8px;margin-top:auto;padding:12px 4px 0;display:flex}.theme-switch{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;gap:2px;padding:2px;display:flex}.theme-switch button{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:6px;flex:1;padding:4px 0;font-size:12.5px}.theme-switch button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.topbar{display:none}.main{flex-direction:column;min-width:0;min-height:100vh;display:flex}.content{flex:1;width:100%;max-width:1480px;margin:0 auto;padding:26px 32px 12px}.footer{text-align:center;color:var(--faint);padding:18px 32px 22px;font-size:12.5px}.footer a{color:var(--muted);font-weight:600;text-decoration:none}.footer a:hover{color:var(--accent);text-decoration:underline}.scrim{display:none}@media (width<=900px){.layout{grid-template-columns:minmax(0,1fr)}.sidebar{z-index:60;width:min(280px,84vw);box-shadow:var(--shadow-lg);transition:transform .2s;position:fixed;inset:0 auto 0 0;transform:translate(-102%)}.layout.menu-open .sidebar{transform:none}.layout.menu-open .scrim{background:var(--overlay);z-index:55;display:block;position:fixed;inset:0}.topbar{z-index:40;background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 14px;display:flex;position:sticky;top:0}.topbar .brand{padding:0;font-size:15.5px}.content{padding:18px 14px 8px}.footer{padding:14px}}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;display:flex}.page-head h1{letter-spacing:-.01em;margin:0;font-size:21px}.page-head p{color:var(--muted);margin:4px 0 0}.page-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-pad{padding:18px}.card-head{justify-content:space-between;align-items:center;gap:12px;padding:14px 16px 10px;display:flex}.card-head h2,.card-title{margin:0;font-size:15px;font-weight:650}.card-head .muted{font-size:12.5px}.section{margin-bottom:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}@media (width<=1100px){.grid-2{grid-template-columns:minmax(0,1fr)}}.toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;padding:12px 14px;display:flex}.toolbar .input,.toolbar .select{width:auto;min-width:140px;padding:7px 11px}.toolbar .search{flex:220px;max-width:320px}.toolbar .grow{flex:1}.toolbar .muted{font-size:12.5px}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;background:var(--surface-2);padding:10px 14px;font-size:12.5px;font-weight:550}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{color:var(--text)}td{border-bottom:1px solid var(--border);white-space:nowrap;vertical-align:middle;padding:10px 14px}tbody tr:last-child td{border-bottom:0}tbody tr:hover>td{background:var(--surface-2)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}td .sub{color:var(--faint);margin-top:1px;font-size:12px;display:block}td.actions{text-align:right}.row-actions{align-items:center;gap:2px;display:inline-flex}.clickable{cursor:pointer}.pager{border-top:1px solid var(--border);color:var(--muted);justify-content:flex-end;align-items:center;gap:8px;padding:10px 14px;font-size:12.5px;display:flex}.empty{text-align:center;color:var(--muted);padding:40px 20px}.empty .big{opacity:.5;margin-bottom:6px;font-size:28px}.empty p{margin:4px 0 14px}.skeleton{background:var(--hover);border-radius:6px;min-height:14px;position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg,#0000,#ffffff59,#0000);animation:1.2s infinite shimmer;position:absolute;inset:0;transform:translate(-100%)}:root[data-theme=dark] .skeleton:after{background:linear-gradient(90deg,#0000,#ffffff0f,#0000)}@keyframes shimmer{to{transform:translate(100%)}}.skeleton-rows{gap:12px;padding:14px;display:grid}.spinner{vertical-align:-2px;border:2px solid;border-right-color:#0000;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.btn{border:1px solid var(--border-strong);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:7px 14px;font-weight:500;line-height:1.4;display:inline-flex}.btn:hover{background:var(--hover)}.btn:disabled,.btn:disabled:hover{opacity:.45;cursor:default;background:0 0}.btn.primary{background:var(--primary);color:var(--primary-text);border-color:var(--primary)}.btn.primary:hover{opacity:.9}.btn.primary:disabled{opacity:.5;background:var(--primary)}.btn.accent{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--hover)}.btn.small{border-radius:7px;padding:3px 9px;font-size:12.5px}.btn.danger{color:var(--err)}.btn.danger.solid{background:var(--err);border-color:var(--err);color:#fff}.btn.icon{width:30px;height:30px;padding:5px}.btn.icon.small{width:26px;height:26px;padding:3px}.btn.on{background:var(--accent-soft);color:var(--accent);border-color:#0000}.btn svg{flex:none;width:16px;height:16px}.link-btn{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:0;padding:0}.link-btn:hover{text-decoration:underline}.field{margin-bottom:16px}.field>label,.field-label{margin-bottom:6px;font-size:13.5px;font-weight:600;display:block}.field .help,.help{color:var(--muted);margin-top:5px;font-size:12.5px}.field .error-text{color:var(--err);margin-top:5px;font-size:12.5px}.input,.select,textarea.input{border:1px solid var(--border-strong);background:var(--surface);border-radius:8px;outline:none;width:100%;padding:8px 12px;transition:border-color .12s,box-shadow .12s}.input:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}.input:disabled,.select:disabled{background:var(--surface-2);color:var(--muted)}.input.bad{border-color:var(--err)}.input.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px}.row2{grid-template-columns:1fr 1fr;gap:14px;display:grid}.row3{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}@media (width<=640px){.row2,.row3{grid-template-columns:1fr}}.ports{grid-template-columns:1fr auto 1fr;align-items:end;gap:10px;display:grid}.ports .arrow{color:var(--muted);padding-bottom:10px}.section-title{border-top:1px dashed var(--border);align-items:center;gap:8px;margin:8px 0 12px;padding-top:12px;font-weight:700;display:flex}.section-title .muted{font-size:12.5px;font-weight:400}.check{cursor:pointer;align-items:center;gap:8px;display:flex}.check input{width:16px;height:16px;accent-color:var(--accent)}.input-group{align-items:stretch;display:flex}.input-group .input{border-radius:8px 0 0 8px}.input-group .addon{border:1px solid var(--border-strong);background:var(--surface-2);color:var(--muted);white-space:nowrap;border-left:0;border-radius:0 8px 8px 0;align-items:center;padding:0 10px;font-size:12.5px;display:flex}.segmented{background:var(--surface-2);border:1px solid var(--border);border-radius:9px;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.segmented button{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:7px;padding:6px 14px;font-weight:500}.segmented button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.segmented button:disabled{cursor:default;opacity:.5}.choice-cards{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;display:grid}.choice-card{text-align:left;border:1px solid var(--border-strong);background:var(--surface);cursor:pointer;border-radius:10px;padding:11px 13px}.choice-card strong{margin-bottom:2px;display:block}.choice-card span{color:var(--muted);font-size:12.5px;line-height:1.45;display:block}.choice-card.on{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}.choice-card:disabled{opacity:.55;cursor:default}.errors{background:var(--err-soft);border:1px solid var(--err-line);color:var(--err);border-radius:8px;margin:0 0 14px;padding:10px 14px}.errors li{margin-left:16px}ul.errors{padding-left:14px}.chips{border:1px solid var(--border-strong);background:var(--surface);border-radius:8px;flex-wrap:wrap;gap:6px;padding:6px 8px;display:flex}.chips input{background:0 0;border:0;outline:none;flex:1;min-width:120px;padding:3px}.chip{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:1px 8px;font-size:13px}.chip button{cursor:pointer;color:var(--muted);background:0 0;border:0;padding:0 0 0 4px}.dot{background:var(--faint);border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.status{align-items:center;gap:6px;font-size:13px;display:inline-flex}.status.applied .dot,.status.online .dot,.status.ok .dot{background:var(--ok);box-shadow:0 0 0 3px var(--ok-soft)}.status.pending .dot,.status.waiting .dot{background:var(--warn)}.status.queued .dot,.status.deleting .dot,.status.leaving .dot{background:var(--info);animation:1.4s ease-in-out infinite pulse}.status.failed .dot,.status.offline .dot,.status.err .dot{background:var(--err)}@keyframes pulse{50%{opacity:.35}}.badge{border:1px solid var(--border);color:var(--muted);background:var(--surface-2);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;margin-left:6px;padding:0 7px;font-size:11.5px;line-height:19px;display:inline-flex}.badge.ok{background:var(--ok-soft);border-color:var(--ok-line);color:var(--ok)}.badge.warn{background:var(--warn-soft);border-color:var(--warn-line);color:var(--warn)}.badge.err{background:var(--err-soft);border-color:var(--err-line);color:var(--err)}.badge.info{background:var(--info-soft);border-color:var(--info-line);color:var(--info)}.badge.accent{background:var(--accent-soft);color:var(--accent);border-color:#0000}.proto-tag{border:1px solid var(--border);background:var(--surface);border-radius:999px;align-items:center;gap:6px;padding:1px 9px;font-size:12.5px;display:inline-flex}.label-chip{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;margin-right:4px;padding:0 7px;font-size:12px;display:inline-block}.kv{color:var(--muted);gap:4px;font-size:12.5px;display:inline-flex}.kv b{color:var(--text);font-weight:600}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px}.stats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;display:grid}.stat{flex-direction:column;gap:2px;padding:16px 18px;display:flex}.stat .l{color:var(--muted);align-items:center;gap:6px;font-size:12.5px;display:flex}.stat .n{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:24px;font-weight:700}.stat .s{color:var(--faint);font-size:12px}.stat.link{color:inherit;text-decoration:none}.stat.link:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}.meter{background:var(--hover);border-radius:999px;min-width:90px;height:7px;overflow:hidden}.meter span{background:var(--chart-bar);border-radius:999px;height:100%;display:block}.meter span.over{background:var(--warn)}.meter span.full{background:var(--err)}.barchart{align-items:flex-end;gap:3px;height:150px;padding:12px 16px 6px;display:flex}.barchart .bar{flex:1;align-items:flex-end;height:100%;display:flex;position:relative}.barchart .bar span{background:var(--chart-bar);opacity:.85;border-radius:3px 3px 0 0;width:100%;min-height:2px;display:block}.barchart .bar:hover span{opacity:1}.barchart-axis{color:var(--faint);justify-content:space-between;padding:0 16px 12px;font-size:11.5px;display:flex}.overlay{background:var(--overlay);z-index:50;place-items:center;padding:20px;animation:.12s fade;display:grid;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.dialog{background:var(--surface);border-radius:var(--radius-lg);width:min(640px,100%);max-height:calc(100vh - 40px);box-shadow:var(--shadow-lg);flex-direction:column;animation:.16s rise;display:flex;position:relative}.dialog.wide{width:min(860px,100%)}.dialog.narrow{width:min(440px,100%)}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.dialog-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:16px;padding:20px 24px 14px;display:flex}.dialog-head h2{margin:0;font-size:19px}.dialog-head p{color:var(--muted);margin:5px 0 0}.dialog-body{padding:18px 24px;overflow-y:auto}.dialog-foot{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:flex-end;gap:10px;padding:14px 24px;display:flex}.dialog-foot .left{margin-right:auto}@media (width<=640px){.overlay{place-items:end stretch;padding:0}.dialog,.dialog.wide,.dialog.narrow{border-radius:16px 16px 0 0;width:100%;max-height:92vh}.dialog-head,.dialog-body,.dialog-foot{padding-left:16px;padding-right:16px}}.proto-select{min-width:210px;position:relative}.proto-button{border:1px solid var(--border-strong);background:var(--surface);cursor:pointer;border-radius:10px;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:9px 14px;display:flex}.proto-menu{background:var(--surface);border:1px solid var(--border);width:100%;box-shadow:var(--shadow);z-index:5;border-radius:10px;max-height:60vh;padding:6px;position:absolute;top:calc(100% + 6px);right:0;overflow-y:auto}.proto-menu button{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:7px;align-items:center;gap:10px;width:100%;padding:8px 10px;display:flex}.proto-menu button:hover,.proto-menu button.on{background:var(--hover)}.menu-wrap{display:inline-block;position:relative}.menu{background:var(--surface);border:1px solid var(--border);min-width:170px;box-shadow:var(--shadow);z-index:30;text-align:left;border-radius:10px;padding:5px;position:absolute;top:calc(100% + 4px);right:0}.menu button{cursor:pointer;text-align:left;white-space:nowrap;background:0 0;border:0;border-radius:7px;align-items:center;gap:8px;width:100%;padding:7px 10px;display:flex}.menu button:hover{background:var(--hover)}.menu button:disabled{opacity:.45;cursor:default;background:0 0}.menu button.danger{color:var(--err)}.menu hr{border:0;border-top:1px solid var(--border);margin:4px 0}.notice{border:1px solid var(--border);border-radius:8px;margin-bottom:14px;padding:11px 14px}.notice.ok{background:var(--ok-soft);border-color:var(--ok-line)}.notice.warn{background:var(--warn-soft);border-color:var(--warn-line)}.notice.err{background:var(--err-soft);border-color:var(--err-line)}.notice.info{background:var(--info-soft);border-color:var(--info-line)}.notice strong{margin-bottom:2px;display:block}.toasts{z-index:90;flex-direction:column;gap:8px;max-width:min(420px,100vw - 36px);display:flex;position:fixed;bottom:18px;right:18px}.toast{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);word-break:break-word;border-radius:10px;align-items:flex-start;gap:10px;padding:11px 14px;animation:.16s rise;display:flex}.toast .dot{margin-top:6px}.toast.ok .dot{background:var(--ok)}.toast.err{border-color:var(--err-line)}.toast.err .dot{background:var(--err)}.toast.info .dot{background:var(--info)}.toast button{color:var(--faint);cursor:pointer;background:0 0;border:0;margin-left:auto;padding:0 0 0 6px}.cmd{align-items:stretch;gap:8px;display:flex}.cmd code,.codebox{background:var(--code-bg);min-width:0;color:var(--code-text);white-space:nowrap;border-radius:8px;flex:1;padding:10px 13px;display:block;overflow-x:auto}.secret{align-items:center;gap:6px;min-width:0;display:flex}.secret code{background:var(--surface-2);border:1px solid var(--border);white-space:nowrap;min-width:0;color:var(--text);border-radius:7px;flex:1;padding:6px 10px;display:block;overflow-x:auto}.secret.dark code{background:var(--code-bg);color:var(--code-text);border-color:#0000}.sub-card{margin-bottom:14px;padding:16px}.sub-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.sub-row{border-top:1px solid var(--border);grid-template-columns:240px minmax(0,1fr);align-items:center;gap:12px;padding:8px 0;display:grid}.sub-actions{justify-content:flex-end;gap:6px;margin-top:8px;display:flex}@media (width<=760px){.sub-row{grid-template-columns:minmax(0,1fr)}}.facts{grid-template-columns:140px minmax(0,1fr);gap:8px 16px;margin:0;display:grid}.facts dt{color:var(--muted)}.facts dd{overflow-wrap:anywhere;min-width:0;margin:0}.problems{color:var(--warn);margin:6px 0 0;padding-left:18px}.list-plain{margin:0;padding:0;list-style:none}.list-plain li{border-top:1px solid var(--border);align-items:baseline;gap:10px;padding:9px 16px;display:flex}.list-plain li:first-child{border-top:0}.list-plain .when{color:var(--faint);white-space:nowrap;margin-left:auto;font-size:12px}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:12.5px}.nowrap{white-space:nowrap}.ellipsis{text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;max-width:280px;display:inline-block;overflow:hidden}.hstack{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.vstack{flex-direction:column;gap:8px;display:flex}.spacer{flex:1}
