:root{--r-xs:4px;--r-sm:8px;--r:12px;--r-lg:16px;--r-pill:999px;--s1:4px;--s2:6px;--s3:8px;--s4:12px;--s5:16px;--s6:20px;--s7:24px;--s8:32px;--fs-2xs:11px;--fs-xs:12px;--fs-sm:13px;--fs-md:14px;--fs-lg:16px;--fs-xl:20px;--fs-hero:30px;--fw:500;--fw-med:600;--fw-bold:700;--fw-black:800;--lh-tight:1.25;--lh:1.5;--cell-y:10px;--cell-x:16px;--maxw:1720px;--pad:24px;--topH:54px}:root,:root[data-theme=dark]{--bg:#0f1218;--panel:#161b26;--panel2:#1c2230;--line:#2a3142;--line2:#222838;--text:#e6e9f0;--text2:#c7cddb;--muted:#9aa3b8;--muted2:#858ea4;--red:#f97066;--redbg:#3a1d1d;--amber:#fdb022;--amberbg:#3a2c12;--green:#32d583;--greenbg:#12301f;--blue:#84caff;--bluebg:#16273d;--accent:#a5b4fc;--accentbg:#26294a;--chip:#1c2230;--chipon:#e6e9f0;--chipontext:#0f1218;--shadow:none;--overlay:rgba(0,0,0,.55);--knob:#fff;--panel3:color-mix(in srgb, var(--panel2) 70%, var(--bg));--focus:color-mix(in srgb, var(--accent) 55%, transparent);--c1:var(--red);--c2:var(--amber);--c3:#f7b2ad;--c4:var(--blue);--c5:#8ce99a;--c6:#b197fc}:root[data-theme=light]{--bg:#f3f4f7;--panel:#ffffff;--panel2:#f8f9fb;--line:#e4e7ee;--line2:#f0f2f5;--text:#141821;--text2:#344054;--muted:#475467;--muted2:#667085;--red:#d92d20;--redbg:#fef3f2;--amber:#b54708;--amberbg:#fff6e5;--green:#067647;--greenbg:#ecfdf3;--blue:#175cd3;--bluebg:#eff4ff;--accent:#4338ca;--accentbg:#eef0fb;--chip:#f2f4f7;--chipon:#141821;--chipontext:#ffffff;--shadow:0 1px 2px rgba(16,24,40,.04);--overlay:rgba(20,24,33,.35);--knob:#fff;--panel3:color-mix(in srgb, var(--panel2) 55%, var(--bg));--focus:color-mix(in srgb, var(--accent) 55%, transparent);--c1:var(--red);--c2:var(--amber);--c3:#c11574;--c4:var(--blue);--c5:#067647;--c6:#6941c6}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Manrope,Noto Sans SC,PingFang SC,Hiragino Sans GB,Microsoft YaHei,system-ui,-apple-system,sans-serif;font-size:var(--fs-sm);line-height:var(--lh);-webkit-font-smoothing:antialiased}#app{min-height:100dvh}a{color:inherit;text-decoration:none}h1,h2,h3,h4,p{margin:0}.mono{font-family:SF Mono,ui-monospace,Menlo,Consolas,monospace;font-size:var(--fs-xs)}.num{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.muted2{color:var(--muted2)}.small{font-size:var(--fs-xs)}.tiny{font-size:var(--fs-2xs)}.nowrap{white-space:nowrap}.c-red{color:var(--red)}.c-amber{color:var(--amber)}.c-green{color:var(--green)}.c-blue{color:var(--blue)}.c-none{color:var(--muted2)}.bg-red{background:var(--red)}.bg-amber{background:var(--amber)}.bg-green{background:var(--green)}.bg-blue{background:var(--blue)}.bg-gray,.bg-none{background:var(--muted2)}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grow{flex:1 1 auto;min-width:0}.row{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:var(--s3);min-width:0}.stack{display:flex;flex-direction:column;gap:var(--s5)}svg.i{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;flex:none}.metric{display:flex;flex-direction:column;line-height:var(--lh-tight);min-width:0}.metric>b{font-weight:var(--fw-black)}.metric>.sub{font-size:var(--fs-2xs);color:var(--muted2)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--r-xs)}.sechead{display:flex;align-items:baseline;gap:var(--s4);flex-wrap:wrap;margin-bottom:var(--s5)}.sechead b{font-size:var(--fs-xl);font-weight:var(--fw-black);line-height:var(--lh-tight)}.sechead .sub{font-size:var(--fs-xs);color:var(--muted2)}.top{height:var(--topH);background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:var(--s6);position:sticky;top:0;z-index:20;padding-left:max(var(--pad),calc((100% - var(--maxw))/2));padding-right:max(var(--pad),calc((100% - var(--maxw))/2))}.brand{display:flex;align-items:center;gap:var(--s3);font-weight:var(--fw-black);font-size:var(--fs-md);flex:none}.brand svg{width:20px;height:20px;stroke:var(--accent);fill:none;stroke-width:2}.tabs{display:flex;gap:2px;min-width:0;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs a,.tabs span{flex:none;display:flex;align-items:center;gap:var(--s1);padding:var(--s2) var(--s4);border-radius:var(--r-sm);color:var(--muted);font-weight:var(--fw);white-space:nowrap}.tabs a.on{background:var(--accentbg);color:var(--accent);font-weight:var(--fw-bold)}.tabs span.off{color:var(--muted2);cursor:not-allowed}.tabs .later{font-size:var(--fs-2xs);font-weight:var(--fw-bold);color:var(--muted2);background:var(--chip);border-radius:var(--r-pill);padding:0 var(--s2);line-height:1.5}.who{display:flex;align-items:center;gap:var(--s3);flex:none;color:var(--muted);font-size:var(--fs-xs)}.main{padding-top:var(--s7);padding-bottom:var(--s8);padding-left:max(var(--pad),calc((100% - var(--maxw))/2));padding-right:max(var(--pad),calc((100% - var(--maxw))/2))}.tb{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}.tb-h,.tb-r,.tb-g,.tb-f{display:grid;gap:var(--s4);align-items:center;padding:var(--cell-y) var(--cell-x)}.tb-h{background:var(--panel2);border-bottom:1px solid var(--line);font-size:var(--fs-2xs);font-weight:var(--fw-bold);color:var(--muted);letter-spacing:.04em}.tb-r{border-bottom:1px solid var(--line2)}.tb-r:last-child{border-bottom:0}.tb-r:hover{background:var(--panel2)}.tb-r.sel{background:var(--accentbg)}.tb-g{background:var(--panel2);border-bottom:1px solid var(--line2);font-size:var(--fs-xs);color:var(--muted)}.tb-g.flat{display:flex;flex-wrap:wrap}.tb-g.g2{background:var(--panel3)}.tb-f{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--s3);background:var(--panel2);border-top:1px solid var(--line);color:var(--muted);font-size:var(--fs-xs)}.tb-r.clickable,.tb-g.clickable{cursor:pointer}.tb-r.clickable:active,.tb-g.clickable:active{background:var(--panel3)}.tb-r>*,.tb-h>*,.tb-g>*,.tb-f>*{min-width:0}.empty{padding:var(--s8) var(--s5);text-align:center;color:var(--muted2);font-size:var(--fs-sm)}.cols-servers{grid-template-columns:minmax(160px,1.4fr) minmax(110px,1fr) minmax(150px,1.1fr) 104px 128px minmax(140px,1.1fr) 92px}.cols-keys{grid-template-columns:minmax(160px,1.3fr) minmax(200px,1.6fr) 104px 150px minmax(120px,1fr)}.cols-checks{grid-template-columns:150px 64px 80px minmax(0,1fr) 110px}.cols-passkeys{grid-template-columns:minmax(120px,1fr) 150px 150px 72px}.cols-audit{grid-template-columns:150px minmax(120px,.9fr) minmax(0,1.6fr) 120px}.ctl{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);height:32px;padding:0 var(--s4);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel);color:var(--text);cursor:pointer;white-space:nowrap;font-family:inherit;font-size:var(--fs-sm);font-weight:var(--fw)}.ctl:hover{border-color:var(--accent)}.ctl.sm{height:28px;padding:0 var(--s3);font-size:var(--fs-xs)}.ctl.primary{background:var(--accent);border-color:var(--accent);color:var(--chipontext);font-weight:var(--fw-bold)}.ctl.danger{color:var(--red)}.ctl.danger.primary{background:var(--red);border-color:var(--red);color:var(--chipontext)}.ctl:disabled{opacity:.5;cursor:not-allowed}.ctl:disabled:hover{border-color:var(--line)}input.ctl,select.ctl,textarea.ctl{background:var(--panel2);cursor:text;justify-content:flex-start;font-weight:var(--fw)}select.ctl{cursor:pointer}input.ctl:focus,select.ctl:focus,textarea.ctl:focus{border-color:var(--accent);outline:none}input.ctl,select.ctl{height:34px}textarea.ctl{height:auto;min-height:150px;padding:var(--s3) var(--s4);line-height:var(--lh);resize:vertical}input.ctl::placeholder,textarea.ctl::placeholder{color:var(--muted2)}.toolbar{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap;margin-bottom:var(--s5)}.toolbar .search{width:min(260px,100%)}.pill{display:inline-flex;align-items:center;gap:var(--s1);padding:1px var(--s3);border-radius:var(--r-pill);font-size:var(--fs-2xs);font-weight:var(--fw-bold);white-space:nowrap}.pill.green{background:var(--greenbg);color:var(--green)}.pill.amber{background:var(--amberbg);color:var(--amber)}.pill.red{background:var(--redbg);color:var(--red)}.pill.blue{background:var(--bluebg);color:var(--blue)}.pill.gray,.pill.none{background:var(--chip);color:var(--muted2)}.chip{display:inline-flex;align-items:center;gap:var(--s1);padding:2px var(--s3);border-radius:var(--r-sm);background:var(--chip);color:var(--text);font-size:var(--fs-2xs);font-weight:var(--fw-med)}.count{display:inline-flex;align-items:center;padding:0 var(--s2);border-radius:var(--r-pill);background:var(--chipon);color:var(--chipontext);font-size:var(--fs-2xs);font-weight:var(--fw-black)}.dot{width:7px;height:7px;border-radius:var(--r-pill);flex:none;display:inline-block}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:var(--s6)}.card>h3{font-size:var(--fs-md);font-weight:var(--fw-bold);margin-bottom:var(--s5);display:flex;align-items:baseline;justify-content:space-between;gap:var(--s4)}.card>h3 .note{font-size:var(--fs-2xs);color:var(--muted2);font-weight:var(--fw)}.cards{display:grid;gap:var(--s5);grid-template-columns:repeat(auto-fit,minmax(340px,1fr));align-items:start}.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:var(--s6);box-shadow:var(--shadow)}.stat b{display:block;font-size:var(--fs-hero);font-weight:var(--fw-black);line-height:var(--lh-tight)}.stat .lab{font-size:var(--fs-xs);color:var(--muted)}.stats{display:grid;gap:var(--s5);grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin-bottom:var(--s5)}.form{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4) var(--s5)}.form .full{grid-column:1 / -1}.field{display:flex;flex-direction:column;gap:var(--s1);min-width:0}.field>label{font-size:var(--fs-2xs);font-weight:var(--fw-bold);color:var(--muted);letter-spacing:.04em}.field .hint{font-size:var(--fs-2xs);color:var(--muted2)}.kv{display:grid;grid-template-columns:auto 1fr;gap:var(--s2) var(--s5);align-items:baseline;font-size:var(--fs-sm)}.kv dt{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap}.kv dd{margin:0;min-width:0;word-break:break-all}.code{background:var(--panel2);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s3) var(--s4);font-family:SF Mono,ui-monospace,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--text2);white-space:pre-wrap;word-break:break-all;max-height:220px;overflow:auto}.alert{border-radius:var(--r-sm);padding:var(--s3) var(--s4);font-size:var(--fs-xs)}.alert.red{background:var(--redbg);color:var(--red)}.alert.amber{background:var(--amberbg);color:var(--amber)}.alert.green{background:var(--greenbg);color:var(--green)}.alert.blue{background:var(--bluebg);color:var(--blue)}.toggle{width:32px;height:18px;border-radius:var(--r-pill);background:var(--line);border:0;position:relative;cursor:pointer;flex:none;padding:0}.toggle i{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:var(--r-pill);background:var(--knob);transition:left .15s}.toggle.on{background:var(--accent)}.toggle.on i{left:16px}.toggle:disabled{opacity:.5;cursor:not-allowed}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:50;display:grid;place-items:center;padding:var(--s6)}.modal{background:var(--panel);border-radius:var(--r-lg);width:min(760px,100%);max-height:92vh;overflow:auto;padding:var(--s7);border:1px solid var(--line);display:flex;flex-direction:column;gap:var(--s5)}.modal.narrow{width:min(460px,100%)}.modal h3{font-size:var(--fs-lg);font-weight:var(--fw-bold)}.modal-foot{display:flex;justify-content:flex-end;gap:var(--s3);flex-wrap:wrap}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(500px,100%);background:var(--panel);border-left:1px solid var(--line);z-index:41;padding:var(--s7);overflow:auto;box-shadow:-12px 0 32px #00000040;display:flex;flex-direction:column;gap:var(--s5)}.mask{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:40}.toast{position:fixed;bottom:var(--s7);left:50%;transform:translate(-50%);background:var(--chipon);color:var(--chipontext);padding:var(--s3) var(--s5);border-radius:var(--r-sm);z-index:99;font-weight:var(--fw-med);box-shadow:0 8px 24px #00000059}.login-wrap{min-height:100dvh;display:grid;place-items:center;padding:var(--s6)}.login{width:min(380px,100%);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s8) var(--s7);display:flex;flex-direction:column;gap:var(--s5);box-shadow:var(--shadow)}.login .brand{justify-content:center;font-size:var(--fs-lg)}.sep{display:flex;align-items:center;gap:var(--s4);color:var(--muted2);font-size:var(--fs-2xs)}.sep:before,.sep:after{content:"";flex:1;height:1px;background:var(--line)}@media(max-width:1279px){:root,:root[data-theme]{--pad:18px}.cols-servers{grid-template-columns:minmax(150px,1.4fr) minmax(150px,1.1fr) 104px 128px minmax(140px,1fr) 92px}.cols-servers .c-vendor{display:none}}@media(max-width:899px){:root,:root[data-theme]{--pad:14px;--topH:54px}.only-m{display:flex!important}.only-d{display:none!important}.tb-h{display:none}.tb-r,.tb-g{display:flex;flex-wrap:wrap;align-content:flex-start;gap:var(--s3);padding:var(--s4) var(--s4)}.tb-f{padding:var(--s4)}.tb-r>[data-l]:before,.tb-g>[data-l]:before{content:attr(data-l);display:block;font-size:var(--fs-2xs);font-weight:var(--fw-bold);color:var(--muted2);letter-spacing:.04em;line-height:var(--lh-tight)}.tb-r>[data-l].nl:before,.tb-g>[data-l].nl:before{content:none}.tb-r>[data-l].il:before,.tb-g>[data-l].il:before{display:inline;margin-right:var(--s1)}.cols-servers .c-vendor{display:block}.cols-servers>.c-alias,.cols-keys>.c-alias{flex:1 1 100%}.cols-servers>.c-act{flex:1 1 100%;display:flex;justify-content:flex-end}.ctl{min-height:44px;height:44px}.ctl.sm{height:36px;min-height:36px}input.ctl,select.ctl{height:44px}.form{grid-template-columns:1fr}.top{gap:var(--s4);overflow:hidden}.brand span,.who .ctl:first-child{display:none}.who span{max-width:80px}.main{padding-bottom:calc(var(--s8) + env(safe-area-inset-bottom))}.modal{padding:var(--s6);border-radius:var(--r)}.toast{bottom:calc(var(--s7) + env(safe-area-inset-bottom))}}.later[data-v-6beabcdc]{font-style:normal;margin-left:var(--s1)}
