.pc-page{max-width:1480px}.pc-titlebar{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}.pc-titlebar h2{margin:0 0 6px;font-size:24px}.pc-titlebar p,.pc-card-head p{color:var(--txt3);font-size:13px;line-height:1.55}.pc-count{padding:7px 11px;border-radius:999px;background:#eaf1ff;color:var(--blue);font-size:12px;font-weight:700;white-space:nowrap}.pc-notice{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px;padding:14px 16px;background:linear-gradient(135deg,#f4f7ff,#fbfcff);border:1px solid #dce6ff;border-radius:12px;color:#4d5b73}.pc-notice-icon{display:grid;place-items:center;flex:none;width:22px;height:22px;border-radius:50%;background:var(--blue);color:#fff;font:700 13px/1 ui-serif,Georgia,serif}.pc-notice b{display:block;color:#2d3950;font-size:13.5px;margin-bottom:3px}.pc-notice p{font-size:12.5px;line-height:1.65}.pc-message{margin-bottom:14px;padding:11px 14px;border-radius:10px;font-size:13px;font-weight:600}.pc-message.is-ok{background:#edf9f1;color:#15803d}.pc-message.is-error{background:#fff0f0;color:var(--red)}.pc-layout{display:grid;grid-template-columns:minmax(660px,1.25fr) minmax(440px,.75fr);gap:16px;align-items:start}.pc-layout>.card{margin:0;min-width:0;padding:0;overflow:hidden}.pc-card-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:17px 18px;border-bottom:1px solid var(--line)}.pc-card-head h3{margin:0 0 3px;color:var(--txt);font-size:15px}.pc-card-head .btn{flex:none}.pc-table-wrap{overflow-x:auto}.pc-table{min-width:690px}.pc-table tbody tr{cursor:pointer;transition:background .12s}.pc-table tbody tr.is-selected{background:#eef4ff}.pc-table tbody tr.is-selected:hover{background:#e8f0ff}.pc-table td{font-size:13px}.pc-table td:first-child b{display:block;color:var(--txt);font-size:13.5px}.pc-table td:first-child small{display:block;margin-top:3px;color:var(--txt3);font:11.5px/1.3 ui-monospace,SFMono-Regular,Menlo,monospace}.pc-date{color:var(--txt2);white-space:nowrap;font-size:12px!important}.pc-route,.pc-key,.pc-status{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:999px;font-size:11.5px;font-weight:650;white-space:nowrap}.pc-route{background:#f0f3f8;color:#536078}.pc-route.is-signed_direct{background:#edf3ff;color:#315fce}.pc-route.is-private_network{background:#edf9f1;color:#188047}.pc-key{background:#f2f4f7;color:#7b8494}.pc-key.is-set{background:#f2edff;color:#7449c6}.pc-status.is-on{background:#eaf8ef;color:#188047}.pc-status.is-off{background:#f2f4f7;color:#7d8797}.pc-config-head{background:#fbfcfe}.pc-form{padding:17px 18px}.pc-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.pc-field{display:block;margin-bottom:14px}.pc-field>span{display:block;margin-bottom:6px;color:#556074;font-size:12.5px;font-weight:650}.pc-field>.in{width:100%;height:40px;border:1px solid #dfe4ec;border-radius:9px;padding:0 11px;background:#fff;outline:none}.pc-field textarea.in{height:auto;min-height:78px;padding:9px 11px;font:inherit;line-height:1.55;resize:vertical}.pc-field>.in:focus,.pc-field select.in:focus,.pc-input-unit input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #2f6bff17}.pc-field>.in:disabled{background:#f4f6f9;color:#8a93a3}.pc-field>small{display:block;margin-top:5px;color:var(--txt3);font-size:11px;line-height:1.45}.pc-input-unit{position:relative}.pc-input-unit .in{width:100%;padding-right:52px}.pc-input-unit span{position:absolute;right:11px;top:50%;transform:translateY(-50%);color:var(--txt3);font-size:11.5px;pointer-events:none}.pc-switch{display:flex;align-items:center;gap:9px;width:max-content;margin:2px 0 14px;cursor:pointer;color:#505b6d;font-size:13px}.pc-switch input{position:absolute;opacity:0;pointer-events:none}.pc-switch>span{position:relative;width:36px;height:20px;border-radius:999px;background:#c9d0dc;transition:.15s}.pc-switch>span:after{content:"";position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000002e;transition:.15s}.pc-switch input:checked+span{background:var(--blue)}.pc-switch input:checked+span:after{transform:translate(16px)}.pc-actions{display:flex;flex-wrap:wrap;gap:9px;padding-top:14px;border-top:1px solid var(--line)}.pc-actions .btn{margin:0}.pc-secret{margin:0 18px 18px;padding:13px;border:1px solid #f2cf78;border-radius:10px;background:#fffaf0}.pc-secret b{color:#805b00}.pc-secret p{margin:4px 0 9px;color:#806f48;font-size:11.5px}.pc-secret code{display:block;padding:8px;border-radius:7px;background:#fff;word-break:break-all;font-size:11.5px}.pc-metrics{padding:0 18px 18px}.pc-metrics>header{display:flex;align-items:center;justify-content:space-between;margin:0 0 10px;padding-top:16px;border-top:1px solid var(--line)}.pc-metrics h3{margin:0;color:var(--txt);font-size:13.5px}.pc-metrics header span{color:var(--txt3);font-size:11.5px}.pc-metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.pc-metric{padding:10px;border:1px solid #edf0f5;border-radius:9px;background:#f7f9fc}.pc-metric span{display:block;color:var(--txt3);font-size:10.5px}.pc-metric b{display:block;margin-top:3px;color:#30384a;font-size:14px}.pc-metric.is-bad b{color:var(--red)}.pc-empty{display:flex;min-height:420px;align-items:center;justify-content:center;flex-direction:column;padding:36px;text-align:center;color:var(--txt3)}.pc-empty>span{display:grid;place-items:center;width:44px;height:44px;margin-bottom:12px;border-radius:12px;background:#eef3ff;color:var(--blue);font-size:22px}.pc-empty b{color:#586276}.pc-empty p{margin-top:6px;font-size:12px;line-height:1.6}@media (max-width:1200px){.pc-layout{grid-template-columns:1fr}.pc-config-card{max-width:none}.pc-empty{min-height:220px}}@media (max-width:760px){.pc-page{padding:20px 16px}.pc-titlebar{align-items:center}.pc-notice p{line-height:1.5}.pc-form-row{grid-template-columns:1fr;gap:0}.pc-card-head{align-items:flex-start}.pc-metric-grid{grid-template-columns:repeat(2,1fr)}}:root{--blue:#2f6bff;--blue-d:#1f57e6;--bg:#f3f5f9;--line:#e9edf3;--txt:#1f2430;--txt2:#6b7280;--txt3:#9aa3b2;--green:#16a34a;--red:#e5484d;--amber:#f59e0b}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--txt);font-size:14px}button{font-family:inherit;cursor:pointer}input,select{font-family:inherit;font-size:14px}a{cursor:pointer}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#eef3ff,#f3f5f9)}.login-card{background:#fff;width:360px;padding:36px 32px;border-radius:16px;box-shadow:0 20px 60px #10182824;display:flex;flex-direction:column;gap:14px}.login-logo{width:52px;height:52px;border-radius:14px;background:linear-gradient(135deg,#2f6bff,#5b8cff);color:#fff;font-weight:800;font-size:26px;display:flex;align-items:center;justify-content:center;margin:0 auto 4px}.login-card h1{font-size:19px;text-align:center;margin-bottom:8px}.login-card input{height:44px;border:1px solid var(--line);border-radius:10px;padding:0 14px;outline:none}.login-card input:focus{border-color:var(--blue)}.login-card button{height:44px;border:none;border-radius:10px;background:var(--blue);color:#fff;font-weight:600;font-size:15px}.login-card button:hover{background:var(--blue-d)}.login-card button:disabled{opacity:.6}.login-err{color:var(--red);font-size:13px;text-align:center}.app{display:flex;min-height:100vh}.side{width:220px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;padding:16px 12px}.brand{display:flex;align-items:center;gap:8px;padding:6px 8px 18px}.brand .logo{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,#2f6bff,#5b8cff);color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center}.brand b{font-size:16px}.brand .tag{font-size:11px;color:#fff;background:var(--blue);padding:2px 6px;border-radius:5px}.side nav{display:flex;flex-direction:column;gap:3px}.side nav a{padding:11px 12px;border-radius:9px;color:#39414f;font-weight:500}.side nav a:hover{background:#f5f7fb}.side nav a.on{background:#eef3ff;color:var(--blue);font-weight:600}.side-foot{margin-top:auto;padding:12px 8px;border-top:1px solid var(--line)}.side-foot .me{font-size:12.5px;color:var(--txt2);margin-bottom:6px;word-break:break-all}.side-foot .logout{font-size:13px;color:var(--red)}.main{flex:1;overflow:auto;height:100vh}.page{padding:26px 30px;max-width:1200px}.page h2{font-size:22px;margin-bottom:18px}.page h2 .sub{font-size:13px;color:var(--txt3);font-weight:400}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px;box-shadow:0 1px 2px #1018280a}.card.nopad{padding:0;overflow:hidden}.card.stat .num{font-size:30px;font-weight:700}.card.stat .lbl{color:var(--txt2);font-size:13px;margin-top:4px}.card h3{font-size:14px;margin-bottom:14px;color:var(--txt2)}.page .card{margin-bottom:16px}.bars{display:flex;align-items:flex-end;gap:6px;height:180px;padding-top:10px;overflow-x:auto}.bar-col{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:34px}.bar{width:22px;background:linear-gradient(180deg,#5b8cff,#2f6bff);border-radius:5px 5px 0 0;margin-top:auto}.bar-v{font-size:11px;color:var(--txt2)}.bar-x{font-size:10.5px;color:var(--txt3)}.hbars{display:flex;flex-direction:column;gap:9px}.hbar-row{display:flex;align-items:center;gap:10px}.hbar-lbl{width:170px;font-size:12.5px;color:var(--txt2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hbar-track{flex:1;height:16px;background:#f1f4f9;border-radius:8px;overflow:hidden}.hbar-fill{height:100%;background:linear-gradient(90deg,#2f6bff,#5b8cff);border-radius:8px}.hbar-v{width:44px;text-align:right;font-size:12.5px;font-weight:600}.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:14px}.search{height:38px;width:300px;border:1px solid var(--line);border-radius:9px;padding:0 14px;outline:none}.search:focus{border-color:var(--blue)}.sp{flex:1}.muted{color:var(--txt3);font-size:13px}table{width:100%;border-collapse:collapse}thead th{text-align:left;font-size:12px;color:var(--txt3);font-weight:600;padding:12px 14px;background:#fafbfd;border-bottom:1px solid var(--line);white-space:nowrap}tbody td{padding:12px 14px;border-bottom:1px solid #eef1f6;vertical-align:middle}tbody tr:hover{background:#fafcff}td.email{font-weight:500}td.muted{color:var(--txt3);font-size:12.5px}.warn{color:var(--amber);font-weight:600}.badge{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:20px;margin-left:6px}.badge.on{background:#e9f9ef;color:var(--green)}.badge.off{background:#fdeced;color:var(--red)}.badge.adm{background:#f3eefe;color:#8b5cf6}.badge.sub{background:#eef4ff;color:#3b6fd4}.subrow>td{background:#fafbfd;padding:10px 14px}table.sub{width:100%;border-collapse:collapse;font-size:12px}table.sub th{color:var(--muted);font-weight:600;text-align:left;padding:6px 10px;border-bottom:1px solid #e8ecf2}table.sub td{padding:6px 10px;border-bottom:1px solid #f0f3f7}table.sub tr:last-child td{border-bottom:none}.ops{white-space:nowrap;text-align:right}button.mini{height:28px;padding:0 10px;font-size:12.5px;border:1px solid var(--line);background:#fff;border-radius:7px;margin-left:6px}button.mini:hover{border-color:#cfd8e6}button.mini.pri{background:var(--blue);border-color:var(--blue);color:#fff}.pager{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:12px 14px;border-top:1px solid var(--line);font-size:13px}.pager button{width:30px;height:30px;border:1px solid var(--line);background:#fff;border-radius:7px}.pager button:disabled{opacity:.4}.mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#141a286b;display:flex;align-items:center;justify-content:center;z-index:50;padding:24px}.modal{background:#fff;width:460px;max-width:94vw;border-radius:14px;box-shadow:0 24px 70px #1018284d;max-height:calc(100vh - 48px);display:flex;flex-direction:column;overflow:hidden}.modal-h{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line);flex:none}.modal-h b{font-size:16px}.modal-h .x{margin-left:auto;width:30px;height:30px;border:none;background:#f2f4f8;border-radius:8px;color:var(--txt2)}.modal-b{padding:18px 20px;overflow-y:auto;flex:1 1 auto;min-height:0}.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;color:var(--txt2);margin-bottom:6px}.field .ctl input:not([type=checkbox]):not([type=radio]),.field .ctl select,input.in,select.in{width:100%;height:40px;border:1px solid var(--line);border-radius:9px;padding:0 12px;outline:none}.field .ctl input[type=checkbox],.field .ctl input[type=radio]{width:16px;height:16px;margin:0;vertical-align:middle;accent-color:var(--blue)}.field .ctl input:focus,.field .ctl select:focus,.field .ctl textarea:focus,.in:focus{border-color:var(--blue)}.field .ctl textarea{width:100%;border:1px solid var(--line);border-radius:9px;padding:9px 12px;outline:none;font:inherit;line-height:1.55;resize:vertical}.field .ctl textarea.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.field .ctl .pw{position:relative}.field .ctl .pw input{padding-right:40px}.field .ctl .pw .eye{position:absolute;right:4px;top:0;height:40px;width:34px;padding:0;border:0;background:none;cursor:pointer;color:var(--txt3);font-size:15px;line-height:1}.field .ctl .pw .eye:hover{color:var(--txt1)}.field .hint{display:block;font-size:11.5px;color:var(--txt3);margin-top:5px}.chk{display:flex;align-items:center;gap:8px;font-size:13.5px;height:40px}.chk input{width:16px;height:16px}.form-col{display:flex;gap:12px}.form-col>label{flex:1;min-width:0;display:block;font-size:12.5px;color:var(--txt2)}.form-col>label .in{margin-top:6px}.renew-cur{background:#f5f7fb;border-radius:9px;padding:10px 12px;font-size:13px;color:var(--txt2);margin-bottom:14px}.modal-err,.err{color:var(--red);font-size:13px;margin-bottom:10px}.modal-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:6px;position:sticky;bottom:-18px;background:#fff;padding:14px 0 4px;border-top:1px solid var(--line)}.modal-f{display:flex;justify-content:flex-end;gap:10px;flex:none;padding:14px 20px;border-top:1px solid var(--line);background:#fff}.modal-foot button,.modal-f button,button.btn{height:38px;padding:0 18px;border:1px solid var(--line);background:#fff;border-radius:9px;font-weight:600}.modal-foot button.pri,.modal-f button.pri,button.btn.pri{background:var(--blue);border-color:var(--blue);color:#fff}.modal-foot button:disabled,.modal-f button:disabled,button.btn:disabled{opacity:.6}.card .hd{display:flex;align-items:center;gap:6px;padding:14px 16px;border-bottom:1px solid var(--line);font-size:14px}.card .hd b{font-size:14px}table.tbl th{white-space:nowrap}table.tbl td.mono{font-size:12.5px}.loading,.empty{padding:40px;text-align:center;color:var(--txt3)}.errbox{background:#fdeced;color:var(--red);padding:12px 16px;border-radius:10px;margin-bottom:14px;font-size:13.5px}.login-tabs{display:flex;gap:0;border-bottom:1px solid var(--line);margin-bottom:4px}.login-tabs span{flex:1;text-align:center;padding:8px 0;cursor:pointer;color:var(--txt2);font-weight:600;border-bottom:2px solid transparent;margin-bottom:-1px}.login-tabs span.on{color:var(--blue);border-bottom-color:var(--blue)}.login-msg{color:var(--green);font-size:12.5px;text-align:center;line-height:1.5}.login-foot{text-align:center;font-size:13px;color:var(--txt3)}.login-foot a{color:var(--blue)}.kvcard{transition:box-shadow .15s,transform .15s}.kvcard:hover{box-shadow:0 6px 20px #1018281f;transform:translateY(-2px)}.kvcard:hover .muted{color:var(--txt2)}.hintbox{background:var(--blue-l,#eef3ff);border:1px solid #dbe6ff;border-radius:8px;padding:12px 14px;font-size:12.5px;line-height:1.9;color:var(--txt2,#5a6579);margin:12px 0}.hintbox code{background:#0000000d;padding:1px 5px;border-radius:4px;font-size:11.5px}.devdoc-tabs{display:flex;gap:4px;margin:0 0 14px;border-bottom:1px solid var(--line)}.devdoc-tabs span{padding:8px 16px;cursor:pointer;font-size:13.5px;color:var(--txt2);border-bottom:2px solid transparent;margin-bottom:-1px}.devdoc-tabs span.on{color:var(--blue);border-bottom-color:var(--blue);font-weight:600}.devdoc-wrap{display:grid;grid-template-columns:232px 1fr;gap:20px;align-items:start}.devdoc-toc{position:sticky;top:12px;max-height:calc(100vh - 120px);overflow-y:auto;border:1px solid var(--line);border-radius:10px;background:#fff;padding:10px 6px}.devdoc-toc a{display:block;padding:4px 10px;font-size:12.5px;color:var(--txt2);cursor:pointer;border-radius:6px;line-height:1.45;word-break:break-word}.devdoc-toc a:hover{background:#f3f4f6;color:var(--txt1)}.devdoc-toc a.lv3{padding-left:22px;font-size:12px;color:var(--txt3)}.devdoc-body{background:#fff;border:1px solid var(--line);border-radius:12px;padding:24px 28px;min-width:0}.markdown{line-height:1.75;font-size:14px;color:var(--txt1)}.markdown h1{font-size:22px;margin:0 0 16px}.markdown h2{font-size:18px;margin:30px 0 12px;padding-top:14px;border-top:1px solid var(--line)}.markdown h3{font-size:15px;margin:22px 0 8px}.markdown h4{font-size:14px;margin:18px 0 6px;color:var(--txt2)}.markdown p{margin:10px 0}.markdown ul,.markdown ol{margin:10px 0;padding-left:22px}.markdown li{margin:4px 0}.markdown code{background:#f3f4f6;border-radius:4px;padding:1px 5px;font-size:12.5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.markdown pre{background:#0f172a;color:#e2e8f0;border-radius:9px;padding:14px 16px;overflow-x:auto;margin:12px 0}.markdown pre code{background:none;color:inherit;padding:0;font-size:12.5px;line-height:1.6}.markdown blockquote{border-left:3px solid var(--blue);background:#f8fafc;margin:12px 0;padding:8px 14px;color:var(--txt2)}.markdown table{width:100%;border-collapse:collapse;margin:12px 0;font-size:13px;display:block;overflow-x:auto}.markdown th,.markdown td{border:1px solid var(--line);padding:7px 10px;text-align:left;vertical-align:top}.markdown th{background:#f9fafb;font-weight:600;white-space:nowrap}.markdown hr{border:0;border-top:1px solid var(--line);margin:24px 0}.markdown a{color:var(--blue)}@media (max-width:1100px){.devdoc-wrap{grid-template-columns:1fr}.devdoc-toc{position:static;max-height:220px}}.field .ctl .btnrow{display:flex;flex-wrap:wrap;gap:6px}.field .ctl .btnrow button{height:30px;padding:0 12px;border:1px solid var(--line);background:#fff;border-radius:8px;font-size:12.5px;cursor:pointer;color:var(--txt2)}.field .ctl .btnrow button.pri{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}table.kv{width:100%;border-collapse:collapse;font-size:12.5px}table.kv td{padding:3px 0;vertical-align:top;border:0}table.kv td:first-child{width:88px;color:#6b7280;white-space:nowrap;padding-right:12px}.cs-modal .cs-grid{display:grid;grid-template-columns:1fr 210px;gap:22px;align-items:start}.cs-modal label{display:block;margin-bottom:16px;font-weight:600;font-size:13px;line-height:1.5}.cs-modal label .in{margin-top:6px;font-weight:400}.cs-hint{margin:-10px 0 16px;font-size:12px;line-height:1.6;color:#8b93a7}.cs-qrbox{background:#f7f8fa;border:1px solid var(--line);border-radius:10px;padding:14px}.cs-qrlab{font-size:13px;font-weight:600;margin-bottom:10px}.cs-drop{display:flex!important;align-items:center;justify-content:center;text-align:center;height:168px;border:1.5px dashed #c9ced8;border-radius:8px;background:#fff;cursor:pointer;margin:0!important;font-weight:400!important;transition:.12s;overflow:hidden;padding:8px}.cs-drop:hover{border-color:var(--blue,#3b82f6);background:#fbfcff}.cs-drop img{max-width:100%;max-height:100%;object-fit:contain}.cs-qrurl{margin-top:10px;font-size:11.5px}.cs-row{display:grid;grid-template-columns:1fr auto auto;gap:24px;align-items:start;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.cs-modal .cs-grid>div>label:last-child{margin-bottom:4px}.cs-lab{font-size:13px;font-weight:600;margin-bottom:9px}.cs-ck{display:flex!important;align-items:center;gap:7px;font-weight:400!important;margin-bottom:0!important;font-size:13px;white-space:nowrap;cursor:pointer}.cs-ck input{margin:0}.cs-sort{width:96px;margin-bottom:0!important}.cs-en{margin-top:31px}@media (max-width: 760px){.cs-modal .cs-grid{grid-template-columns:1fr}.cs-row{grid-template-columns:1fr;gap:16px}.cs-en{margin-top:0}}
