:root{--bg:#f5f7fa;--surface:#fff;--surface-2:#eef2f7;--surface-3:#e3e9f1;--border:#d5dde8;--border-strong:#b9c5d6;--text:#121b2b;--text-dim:#5a6472;--text-faint:#8490a0;--brand:#0b1f3a;--blue:#1f6feb;--blue-soft:#1f6feb1f;--red:#c0392b;--red-soft:#c0392b1f;--amber:#a86b12;--amber-soft:#b7791f26;--green:#1e7e4f;--green-soft:#1e7e4f24;--radius:8px;--side:232px;--shadow:0 8px 30px #0f1e3c1f;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0d1420;--surface:#141d2b;--surface-2:#1b2535;--surface-3:#243044;--border:#2a3648;--border-strong:#3a4a62;--text:#e6ecf5;--text-dim:#93a1b5;--text-faint:#6d7b90;--blue:#5b9bff;--blue-soft:#5b9bff29;--red:#ff7b6b;--red-soft:#ff7b6b24;--amber:#e0b155;--amber-soft:#e0b15526;--green:#58c896;--green-soft:#58c89624;--shadow:0 8px 30px #00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}[hidden]{display:none!important}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font:14px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{margin:0}code,.mono{font-family:var(--mono);font-size:12px}.muted{color:var(--text-dim)}.faint{color:var(--text-faint)}.small{font-size:12px}.nowrap{white-space:nowrap}.num{text-align:right;font-variant-numeric:tabular-nums}.stack{flex-direction:column;gap:16px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.row.tight{gap:6px}.spacer{flex:1}.grid-2{grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:16px;display:grid}.grid-3{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;display:grid}.stats{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;display:grid}.shell{grid-template-columns:var(--side) 1fr;min-height:100%;display:grid}.sidebar{color:#cfd9e8;background:#0b1f3a;flex-direction:column;height:100vh;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar .brand{align-items:center;gap:10px;padding:16px 16px 10px;display:flex}.sidebar .brand .logo{color:#5b9bff;background:#1b3a66;border-radius:7px;place-items:center;width:30px;height:30px;font-weight:800;display:grid}.sidebar .brand strong{color:#fff;letter-spacing:.05em;font-size:13px;display:block}.sidebar .brand small{color:#8fa3bf;text-overflow:ellipsis;white-space:nowrap;max-width:160px;font-size:11.5px;display:block;overflow:hidden}.sidebar nav{flex-direction:column;gap:1px;padding:4px 8px 16px;display:flex}.sidebar .group{text-transform:uppercase;letter-spacing:.09em;color:#6f86a6;padding:14px 10px 4px;font-size:10.5px}.sidebar nav a{color:#cfd9e8;border-radius:6px;align-items:center;gap:9px;padding:7px 10px;font-size:13px;text-decoration:none;display:flex}.sidebar nav a:hover{background:#ffffff12}.sidebar nav a.active{color:#fff;background:#5b9bff33;font-weight:600}.sidebar nav a .ico{text-align:center;opacity:.85;width:16px}.sidebar nav a .badge{margin-left:auto}.sidebar .foot{color:#8fa3bf;border-top:1px solid #ffffff14;margin-top:auto;padding:12px 16px;font-size:11.5px}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:20;align-items:center;gap:12px;min-height:56px;padding:10px 24px;display:flex;position:sticky;top:0}.topbar h1{font-size:17px;font-weight:600}.topbar .crumb{color:var(--text-dim);font-size:13px}.menu-toggle{display:none}main.content{width:100%;max-width:1480px;padding:24px}.user-menu{position:relative}.user-menu .avatar{background:var(--blue-soft);width:32px;height:32px;color:var(--blue);border:1px solid var(--border);cursor:pointer;border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid}.dropdown{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:220px;box-shadow:var(--shadow);z-index:30;padding:6px;position:absolute;top:calc(100% + 6px);right:0}.dropdown .who{border-bottom:1px solid var(--border);margin-bottom:4px;padding:8px 10px}.dropdown button,.dropdown a{text-align:left;width:100%;color:var(--text);background:0 0;border:none;border-radius:5px;padding:7px 10px;font-size:13px;display:block}.dropdown button:hover,.dropdown a:hover{background:var(--surface-2);text-decoration:none}.banner{border-radius:var(--radius);border:1px solid;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;font-size:13px;display:flex}.banner.warn{background:var(--amber-soft);border-color:color-mix(in srgb, var(--amber) 40%, transparent);color:var(--amber)}.banner.bad{background:var(--red-soft);border-color:color-mix(in srgb, var(--red) 40%, transparent);color:var(--red)}.banner.info{background:var(--blue-soft);border-color:color-mix(in srgb, var(--blue) 35%, transparent);color:var(--blue)}.banner.good{background:var(--green-soft);border-color:color-mix(in srgb, var(--green) 35%, transparent);color:var(--green)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.panel>header{border-bottom:1px solid var(--border);background:var(--surface-2);align-items:center;gap:10px;min-height:46px;padding:11px 16px;display:flex}.panel>header h2{font-size:13.5px;font-weight:600}.panel>header .sub{color:var(--text-dim);font-size:12px;font-weight:400}.panel .body{padding:16px}.panel .toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:flex-end;gap:10px;padding:12px 16px;display:flex}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:0;padding:14px 16px}.stat.link{cursor:pointer}.stat.link:hover{border-color:var(--blue)}.stat .label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:6px;font-size:11.5px;display:flex}.stat .value{font-variant-numeric:tabular-nums;margin-top:4px;font-size:26px;font-weight:600}.stat .hint{color:var(--text-dim);margin-top:2px;font-size:12px}.dot{border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.dot.bad{background:var(--red)}.dot.warn{background:var(--amber)}.dot.good{background:var(--green)}.dot.off{background:var(--text-faint)}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:9px 14px}th{color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;background:var(--surface);font-size:11px;font-weight:600}tbody tr:hover{background:var(--surface-2)}tbody tr.clickable{cursor:pointer}tbody tr:last-child td{border-bottom:none}td.wrap{overflow-wrap:anywhere;max-width:520px}.pager{border-top:1px solid var(--border);color:var(--text-dim);justify-content:flex-end;align-items:center;gap:8px;padding:10px 16px;font-size:12px;display:flex}.empty{text-align:center;color:var(--text-dim);padding:36px 16px}.empty strong{color:var(--text);margin-bottom:4px;display:block}dl.kv{grid-template-columns:max-content 1fr;gap:7px 18px;margin:0;font-size:13px;display:grid}dl.kv dt{color:var(--text-dim)}dl.kv dd{overflow-wrap:anywhere;min-width:0;margin:0}.pill{white-space:nowrap;background:var(--surface-3);color:var(--text-dim);border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.pill.red{background:var(--red-soft);color:var(--red)}.pill.amber{background:var(--amber-soft);color:var(--amber)}.pill.blue{background:var(--blue-soft);color:var(--blue)}.pill.green{background:var(--green-soft);color:var(--green)}.badge{text-align:center;color:#fff;background:#e5484d;border-radius:999px;min-width:20px;padding:0 6px;font-size:11px;font-weight:700;line-height:18px;display:inline-block}.badge.dim{background:#ffffff29}button,.btn{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:6px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;line-height:1.4;text-decoration:none;display:inline-flex}button:hover:not(:disabled),.btn:hover{border-color:var(--blue);color:var(--blue);text-decoration:none}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--blue);border-color:var(--blue);color:#fff}button.primary:hover:not(:disabled){filter:brightness(1.08);color:#fff}button.danger{color:var(--red)}button.danger:hover:not(:disabled){border-color:var(--red);color:var(--red)}button.danger.solid{background:var(--red);border-color:var(--red);color:#fff}button.ghost{background:0 0;border-color:#0000}button.small{padding:4px 9px;font-size:12px}button.link{color:var(--blue);background:0 0;border:none;padding:0}input,select,textarea{font:inherit;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:6px;min-width:0;padding:7px 10px;font-size:13px}textarea{width:100%;min-height:120px;font-family:var(--mono);resize:vertical;font-size:12px}input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid var(--blue);outline-offset:-1px}input[type=checkbox]{width:16px;height:16px;accent-color:var(--blue)}.field{flex-direction:column;gap:4px;min-width:0;display:flex}.field>label{color:var(--text-dim);font-size:12px;font-weight:500}.field .help{color:var(--text-faint);font-size:12px}.field .error{color:var(--red);font-size:12px}.field.inline{flex-direction:row;align-items:center;gap:8px}.input-group{align-items:stretch;display:flex}.input-group input{border-top-right-radius:0;border-bottom-right-radius:0;flex:1}.input-group .suffix{border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-dim);border-left:none;border-radius:0 6px 6px 0;padding:7px 10px;font-size:12px}.form-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px 16px;display:grid}.form-grid .full{grid-column:1/-1}.toggle{flex:none;width:38px;height:22px;position:relative}.toggle input{opacity:0;width:0;height:0;position:absolute}.toggle span{background:var(--surface-3);border:1px solid var(--border-strong);cursor:pointer;border-radius:999px;transition:all .15s;position:absolute;inset:0}.toggle span:before{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:all .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0000004d}.toggle input:checked+span{background:var(--green);border-color:var(--green)}.toggle input:checked+span:before{transform:translate(16px)}.toggle input:disabled+span{opacity:.5;cursor:not-allowed}.toggle input:focus-visible+span{outline:2px solid var(--blue);outline-offset:2px}.tabs{border-bottom:1px solid var(--border);background:var(--surface-2);gap:2px;padding:0 16px;display:flex;overflow-x:auto}.tabs button{color:var(--text-dim);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:10px 12px;font-size:13px}.tabs button.active{color:var(--blue);border-bottom-color:var(--blue);font-weight:600}.modal-backdrop{z-index:50;background:#050c188c;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;flex-direction:column;width:100%;max-width:640px;max-height:calc(100vh - 32px);display:flex}.modal.wide{max-width:1040px}.modal>header{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:14px 18px;display:flex}.modal>header h3{font-size:15px;font-weight:600}.modal .content{padding:18px;overflow:auto}.modal>footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:12px 18px;display:flex}.toasts{z-index:60;flex-direction:column;gap:8px;max-width:460px;display:flex;position:fixed;bottom:16px;right:16px}.toast{background:var(--brand);color:#fff;border-radius:var(--radius);box-shadow:var(--shadow);overflow-wrap:anywhere;padding:10px 14px;font-size:13px}.toast.error{background:var(--red)}.toast.success{background:var(--green)}@media (prefers-color-scheme:dark){.toast.error,.toast.success{color:#0d1420}.toast{color:#0d1420;background:#c9d8ef}}pre.json{background:var(--surface-2);font-family:var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:6px;max-height:380px;margin:6px 0 10px;padding:10px 12px;font-size:12px;overflow:auto}details>summary{cursor:pointer;color:var(--blue);font-size:12px}.section-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;margin:16px 0 6px;font-size:11px;font-weight:600}.spinner{border:2px solid var(--border);border-top-color:var(--blue);border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading{justify-content:center;padding:40px;display:flex}.bars{flex-direction:column;gap:2px;font-size:12px;display:flex}.bars .bar-row{color:var(--text);border-radius:4px;grid-template-columns:160px 1fr 44px;align-items:center;gap:10px;padding:3px 4px;text-decoration:none;display:grid}.bars .bar-row:hover{background:var(--surface-2);text-decoration:none}.bars .track{height:14px;position:relative}.bars .fill{background:var(--blue);border-radius:0 4px 4px 0;min-width:2px;height:100%}.bars .fill.zero{background:var(--border);width:100%;height:1px;margin-top:7px}.bars .name{color:var(--text-dim)}.timeline{border-left:2px solid var(--border);margin:0;padding:0;list-style:none}.timeline li{padding:0 0 12px 16px;font-size:13px;position:relative}.timeline li:before{content:"";background:var(--surface);border:2px solid var(--blue);border-radius:50%;width:10px;height:10px;position:absolute;top:5px;left:-6px}.auth-page{background:radial-gradient(ellipse at top, color-mix(in srgb, var(--blue) 12%, var(--bg)), var(--bg) 60%);place-items:center;min-height:100%;padding:24px;display:grid}.auth-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:420px;box-shadow:var(--shadow);border-radius:12px;padding:28px}.auth-card .logo-row{align-items:center;gap:10px;margin-bottom:18px;display:flex}.auth-card .logo{color:#5b9bff;background:#0b1f3a;border-radius:8px;place-items:center;width:36px;height:36px;font-weight:800;display:grid}.auth-card h1{font-size:19px}.auth-card form{flex-direction:column;gap:14px;margin-top:18px;display:flex}.auth-card button.primary{justify-content:center;padding:9px}.wizard{grid-template-columns:260px 1fr;align-items:start;gap:20px;display:grid}.steps{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px;position:sticky;top:76px}.steps button{text-align:left;width:100%;color:var(--text);background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;padding:9px 10px;display:flex}.steps button:hover{background:var(--surface-2);color:var(--text)}.steps button.active{background:var(--blue-soft);color:var(--blue);font-weight:600}.steps .num{border:1.5px solid var(--border-strong);width:22px;height:22px;color:var(--text-dim);border-radius:50%;flex:none;place-items:center;font-size:11px;font-weight:700;display:grid}.steps .done .num{background:var(--green);border-color:var(--green);color:#fff}.steps .opt{color:var(--text-faint);font-size:11px;font-weight:400}.check-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.check-list li{align-items:center;gap:8px;font-size:13px;display:flex}.check-list .ok{color:var(--green)}.check-list .no{color:var(--text-faint)}.flow-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;display:flex}.flow-card.on{border-color:color-mix(in srgb, var(--green) 45%, var(--border))}.flow-card>header{border-bottom:1px solid var(--border);align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.flow-card .code{font-family:var(--mono);color:var(--blue);background:var(--blue-soft);border-radius:4px;padding:2px 6px;font-size:11px;font-weight:700}.flow-card h3{margin-top:4px;font-size:14px;font-weight:600}.flow-card .body{flex-direction:column;flex:1;gap:10px;padding:12px 16px;font-size:13px;display:flex}@media (width<=960px){.shell{grid-template-columns:1fr}.sidebar{width:var(--side);z-index:40;transition:transform .15s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.shell.menu-open .sidebar{box-shadow:var(--shadow);transform:none}.menu-toggle{display:inline-flex}main.content{padding:14px}.topbar{padding:10px 14px}.grid-2,.wizard{grid-template-columns:1fr}.steps{position:static}}
