:root,[data-theme=dark]{--t-bg:#08080a;--t-card:#111114;--t-bg-raised:#16161a;--t-text:#e4e4e7;--t-dim:#71717a;--t-muted:#52525b;--t-border:#27272a;--t-bdr-weak:#ffffff0f;--t-accent:#0071e3;--t-accent-soft:#0071e31f;--t-green:#2ecc71;--t-red:#e74c3c;--t-amber:#f39c12;--t-badge-bg:#ffffff0f;--t-shadow:0 1px 2px #0000004d;--t-header-bg:#08080ab8;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:22px}[data-theme=light]{--t-bg:#f5f5f7;--t-card:#fff;--t-bg-raised:#fafafa;--t-text:#1d1d1f;--t-dim:#86868b;--t-muted:#aeaeb2;--t-border:#d2d2d7;--t-bdr-weak:#0000000f;--t-accent:#0071e3;--t-accent-soft:#0071e31a;--t-green:#2ecc71;--t-red:#e74c3c;--t-amber:#f39c12;--t-badge-bg:#0000000a;--t-shadow:0 1px 2px #0000000a, 0 8px 24px #0000000f;--t-header-bg:#f5f5f7b8;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:22px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{color:var(--t-text);background:var(--t-bg);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,system-ui,sans-serif;font-size:15px;line-height:1.5}body{min-height:100vh}code{background:var(--t-badge-bg);border-radius:4px;padding:1px 5px;font-family:SF Mono,ui-monospace,monospace;font-size:.85em}.portal-wrapper{max-width:1120px;margin:0 auto;padding:24px 20px 64px}.portal-header{z-index:20;background:var(--t-header-bg);backdrop-filter:blur(20px)saturate(180%);border-bottom:1px solid var(--t-bdr-weak);position:sticky;top:0}.portal-header-inner{justify-content:space-between;align-items:center;gap:16px;max-width:1120px;margin:0 auto;padding:14px 20px;display:flex}.portal-title{letter-spacing:-.02em;font-size:1.4rem;font-weight:700}.page-subtitle{color:var(--t-dim);margin-top:2px;font-size:13px}.header-actions{align-items:center;gap:8px;display:flex}.icon-btn{border:1px solid var(--t-border);color:var(--t-dim);cursor:pointer;background:0 0;border-radius:20px;padding:5px 12px;font-size:15px;line-height:1;transition:color .15s,border-color .15s}.icon-btn:hover{color:var(--t-text);border-color:var(--t-dim)}select.lang{background:var(--t-card);color:var(--t-text);border:1px solid var(--t-border);cursor:pointer;border-radius:20px;outline:none;padding:5px 10px;font-size:13px}select.sel{background:var(--t-card);color:var(--t-text);border:1px solid var(--t-border);cursor:pointer;border-radius:6px;outline:none;padding:3px 7px;font-family:SF Mono,ui-monospace,monospace;font-size:12px}.bar{gap:8px;margin-bottom:16px;display:flex}input.token{background:var(--t-card);border:1px solid var(--t-border);border-radius:var(--radius-md);color:var(--t-text);outline:none;flex:1;padding:10px 14px;font-family:SF Mono,ui-monospace,monospace;font-size:13px;transition:border-color .15s,box-shadow .15s}input.token:focus{border-color:var(--t-accent);box-shadow:0 0 0 3px var(--t-accent-soft)}.btn{border-radius:var(--radius-sm);border:1px solid var(--t-border);background:var(--t-card);color:var(--t-text);cursor:pointer;align-items:center;gap:4px;padding:8px 16px;font-size:14px;font-weight:500;transition:background .15s,border-color .15s,opacity .15s;display:inline-flex}.btn:hover{background:var(--t-bg-raised);border-color:var(--t-dim)}.btn-primary{background:var(--t-accent);border-color:var(--t-accent);color:#fff}.btn-primary:hover{background:color-mix(in srgb,var(--t-accent) 85%,black);border-color:color-mix(in srgb,var(--t-accent) 85%,black)}.btn-danger{border-color:var(--t-red);color:var(--t-red)}.btn-danger:hover{background:color-mix(in srgb,var(--t-red) 12%,transparent)}.grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:20px;display:grid}.card{background:var(--t-card);border-radius:var(--radius-lg);border:1px solid var(--t-bdr-weak);box-shadow:var(--t-shadow);transition:border-color .18s,box-shadow .18s;overflow:hidden}.card:hover{border-color:var(--t-border)}.card-inner{align-items:center;gap:12px;padding:16px 18px;display:flex}.card-icon{color:var(--t-dim);font-size:20px;line-height:1}.card-icon.c-nodes{color:var(--t-text)}.card-icon.c-server{color:var(--t-accent)}.card-icon.c-agent{color:var(--t-green)}.card-icon.c-updated{color:var(--t-muted)}.card-value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:700;line-height:1.1}.card-label{color:var(--t-dim);margin-top:2px;font-size:12px}.table-wrap{background:var(--t-card);border:1px solid var(--t-bdr-weak);border-radius:var(--radius-lg);box-shadow:var(--t-shadow);overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--t-border);vertical-align:middle;padding:11px 14px;font-size:14px}th{color:var(--t-dim);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--t-border);font-size:11px;font-weight:600}tbody tr:last-child td{border-bottom:none}tbody tr:not(.hw-detail):hover td{background:var(--t-bg-raised)}td.mono{font-family:SF Mono,ui-monospace,monospace;font-size:.9em}.badge{background:var(--t-badge-bg);color:var(--t-dim);border-radius:10px;align-items:center;padding:2px 9px;font-size:11px;font-weight:500;display:inline-flex}.badge-ok{color:var(--t-green);background:color-mix(in srgb,var(--t-green) 12%,transparent)}.badge-accent{color:var(--t-accent);background:var(--t-accent-soft)}.badge-warn{color:var(--t-amber);background:color-mix(in srgb,var(--t-amber) 12%,transparent)}.empty-state{text-align:center;color:var(--t-muted);padding:64px 20px;font-size:13px}.empty-state .empty-icon{color:var(--t-dim);opacity:.6;margin-bottom:10px;font-size:40px}.err{color:var(--t-red);margin:8px 0 0;font-size:13px;display:none}.err.show{display:block}.err.ok{color:var(--t-green)}.node-cell{align-items:center;gap:10px;min-width:0;display:flex}.node-cell .node-meta{flex-direction:column;gap:1px;min-width:0;display:flex}.node-cell .node-name{white-space:nowrap;font-family:SF Mono,ui-monospace,monospace;font-size:13px;font-weight:500}.node-id{color:var(--t-muted);white-space:nowrap;font-size:10px}.chip-row{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.chip{background:var(--t-badge-bg);border:1px solid var(--t-bdr-weak);white-space:nowrap;border-radius:20px;align-items:baseline;gap:5px;padding:2px 9px;font-size:11px;line-height:1.5;display:inline-flex}.chip-k{color:var(--t-muted);text-transform:uppercase;letter-spacing:.04em;font-size:9px;font-weight:600}.chip-v{color:var(--t-text);font-family:SF Mono,ui-monospace,monospace;font-size:11px}.chip-more{color:var(--t-dim);font-family:SF Mono,ui-monospace,monospace;font-size:11px}.dot{border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.dot-on{background:var(--t-green);box-shadow:0 0 0 3px color-mix(in srgb,var(--t-green) 18%,transparent)}.dot-warn{background:var(--t-amber);box-shadow:0 0 0 3px color-mix(in srgb,var(--t-amber) 18%,transparent)}.dot-off{background:var(--t-muted)}.rel-time{font-variant-numeric:tabular-nums;white-space:nowrap}.cmd-item{flex-direction:column;gap:6px;display:flex}.cmd-row{align-items:center;gap:8px;display:flex}.cmd-code{border:1px solid var(--t-border);background:var(--t-bg);min-width:0;color:var(--t-text);white-space:nowrap;border-radius:8px;flex:1;padding:10px 12px;font:12px/1.5 SF Mono,ui-monospace,monospace;overflow-x:auto}.cmd-copy{border:1px solid var(--t-border);background:var(--t-bg-raised);color:var(--t-text);cursor:pointer;border-radius:8px;flex:none;padding:8px 14px;font-size:13px;transition:background .15s}.cmd-copy:hover{background:var(--t-bg)}.cmd-name{color:var(--t-text);font-family:SF Mono,ui-monospace,monospace;font-size:13px}.cmd-desc{color:var(--t-dim);font-size:12px}.ud-pre{border:1px solid var(--t-border);background:var(--t-bg);min-width:0;max-height:280px;color:var(--t-text);white-space:pre;border-radius:8px;flex:1;margin:0;padding:12px 14px;font:12px/1.55 SF Mono,ui-monospace,monospace;overflow:auto}.dim{color:var(--t-dim)}td.hw{cursor:pointer}td.hw:hover{background:var(--t-bg-raised)}tr.hw-detail td{background:var(--t-bg);border-bottom:1px solid var(--t-border);padding:16px 18px}tr.hw-detail:hover td{background:var(--t-bg)}.hw-body{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;display:grid}.hw-sec{flex-direction:column;gap:3px;display:flex}.hw-sec.wide{grid-column:1/-1}.hw-k{color:var(--t-dim);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px;font-size:10px;font-weight:600}.hw-v{font-size:13px;line-height:1.55}.hw-tbl{border-collapse:collapse;width:100%;margin-top:4px;font-size:12px}.hw-tbl th,.hw-tbl td{border-bottom:1px solid var(--t-border);text-transform:none;letter-spacing:0;padding:4px 8px;font-size:12px}.hw-tbl th{color:var(--t-dim);font-size:10px}.admin-row{align-items:center;gap:8px;margin-top:6px;display:flex}.admin-row:first-child{margin-top:0}.admin-label{width:72px;color:var(--t-dim);text-transform:uppercase;letter-spacing:.05em;flex:none;font-size:11px}.editable{cursor:pointer;border-bottom:1px dashed var(--t-border);padding:1px 5px;font-family:SF Mono,ui-monospace,monospace;font-size:12px}.editable:hover{background:var(--t-bdr-weak)}.admin-input{background:var(--t-card);border:1px solid var(--t-accent);color:var(--t-text);border-radius:4px;outline:none;width:200px;padding:2px 6px;font-family:SF Mono,ui-monospace,monospace;font-size:12px}.wiz-group{color:var(--t-accent);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--t-border);margin:12px 0 5px;padding-bottom:4px;font-size:11px;font-weight:600}.wiz-group:first-child{margin-top:0}.wiz-row{align-items:center;gap:8px;margin-top:7px;display:flex}.wiz-label{width:96px;color:var(--t-dim);flex:none;font-size:11px}.wiz-field{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.wiz-input{background:var(--t-bg);border:1px solid var(--t-border);color:var(--t-text);border-radius:6px;outline:none;width:100%;max-width:260px;padding:4px 8px;font-family:SF Mono,ui-monospace,monospace;font-size:12px;transition:border-color .15s}.wiz-input:focus{border-color:var(--t-accent)}.wiz-input.wiz-num{width:90px}.wiz-input.wiz-sm{width:150px}.wiz-select{background:var(--t-bg);border:1px solid var(--t-border);color:var(--t-text);cursor:pointer;border-radius:6px;outline:none;max-width:260px;padding:4px 8px;font-size:12px}.wiz-select:focus{border-color:var(--t-accent)}.wiz-check{color:var(--t-dim);cursor:pointer;align-items:center;gap:5px;font-size:12px;display:inline-flex}.wiz-check input{accent-color:var(--t-accent)}.wiz-ctl{border-top:1px solid var(--t-border);align-items:center;gap:10px;margin-top:12px;padding-top:10px;display:flex}.wiz-iface{flex-wrap:wrap;align-items:center;gap:6px;margin-top:7px;display:flex}.wiz-iface-name{width:96px;color:var(--t-text);flex:none;font-size:12px}.wiz-iface .wiz-select{flex:none}.wiz-ta{resize:vertical;max-width:340px;min-height:64px;font-size:11px;line-height:1.5}.wiz-long{max-width:340px}.wiz-regen{flex:none;padding:4px 8px;font-size:11px}.ak-label{width:88px;color:var(--t-dim);text-transform:uppercase;letter-spacing:.05em;flex:none;font-size:11px}.ak-status{flex-wrap:wrap;align-items:center;gap:8px;min-height:22px;font-size:13px;display:flex}.ak-mono{font-family:SF Mono,ui-monospace,monospace;font-size:12px}.ak-remaining{font-variant-numeric:tabular-nums}.ak-hint{color:var(--t-dim);font-size:11px}.tabs{background:var(--t-bg-raised);border:1px solid var(--t-bdr-weak);border-radius:20px;align-items:center;gap:4px;padding:3px;display:flex}.tab{color:var(--t-dim);border-radius:16px;align-items:center;padding:6px 16px;font-size:13px;font-weight:500;text-decoration:none;transition:color .15s,background .15s;display:inline-flex}.tab:hover{color:var(--t-text)}.tab.active{background:var(--t-card);color:var(--t-text);box-shadow:var(--t-shadow)}.steps{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.step{border:1px solid var(--t-border);background:var(--t-card);color:var(--t-dim);cursor:pointer;border-radius:20px;align-items:center;padding:8px 16px;font-size:13px;font-weight:500;transition:all .15s;display:inline-flex}.step:hover{color:var(--t-text);border-color:var(--t-dim)}.step.active{background:var(--t-accent);border-color:var(--t-accent);color:#fff}.step-panel{margin-bottom:16px}.section-title{color:var(--t-dim);text-transform:uppercase;letter-spacing:.05em;margin:24px 0 12px;font-size:13px;font-weight:600}@media (width<=640px){.portal-wrapper{padding:20px 12px 48px}.portal-header-inner{flex-direction:column;align-items:flex-start}}:focus-visible{outline:2px solid var(--t-accent);outline-offset:2px;border-radius:6px}.btn:active,.icon-btn:active,.tab:active,.step:active,.cmd-copy:active{transform:translateY(1px)}.btn-primary:active{background:color-mix(in srgb,var(--t-accent) 80%,#000);border-color:color-mix(in srgb,var(--t-accent) 80%,#000)}.icon-btn:active{background:var(--t-bg-raised)}.step:active:not(.active){border-color:var(--t-accent)}.btn:disabled,.btn[disabled],input:disabled,select:disabled{opacity:.45;cursor:not-allowed}.skeleton{background:var(--t-bg-raised);border-radius:8px;position:relative;overflow:hidden;color:#0000!important}.skeleton>*{visibility:hidden}.skeleton:after{content:"";background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--t-text) 6%,transparent),transparent);animation:1.4s infinite tc-shimmer;position:absolute;inset:0}@keyframes tc-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}::selection{background:var(--t-accent-soft)}*{scrollbar-width:thin;scrollbar-color:var(--t-border) transparent}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--t-border);border-radius:9px}::-webkit-scrollbar-thumb:hover{background:var(--t-dim)}tbody tr{transition:background .12s}@media (width>=900px){th,td{padding:12px 16px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
