:root{--bg:#eef2f4;--panel:#fff;--line:#d9e0e5;--text:#2a3a45;--muted:#6b7a85;--side:#2f3e52;--side2:#3b4d63;--side-t:#cdd7e2;--blue:#2067b0;--blue-d:#17548f;--green:#3bc8f5;--ok:#2e9e5b;--okbg:#e4f5ea;--warn:#b7791f;--warnbg:#fff3d6;--err:#c0392b;--errbg:#fde8e6;--info:#2067b0;--infobg:#e3eefa;--grey:#8795a1;--greybg:#eceff1}
@media(prefers-color-scheme:dark){:root{--bg:#161d24;--panel:#1f2831;--line:#33404c;--text:#dbe4ea;--muted:#92a2ae;--side:#10161c;--side2:#1a232c;--side-t:#aebdca;--blue:#5aa2e6;--blue-d:#7bb7f0;--ok:#4cc17f;--okbg:#17352a;--warn:#e0a94a;--warnbg:#3b2f14;--err:#ee7a6d;--errbg:#40201c;--info:#6ab0f2;--infobg:#17304a;--grey:#9aa8b3;--greybg:#2a343d}}
*{box-sizing:border-box}html,body{margin:0}body{font:14px/1.45 -apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--text)}
a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}
.top{height:48px;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 16px;gap:16px;position:fixed;left:0;right:0;top:0;z-index:10}
.logo{font-weight:700;color:var(--blue)}.top .sp{flex:1}.top .acc{color:var(--muted);font-size:13px}
.proto{background:var(--warnbg);color:var(--warn);border-radius:12px;padding:2px 10px;font-size:12px}
.side{position:fixed;top:48px;left:0;bottom:0;width:230px;background:var(--side);color:var(--side-t);overflow:auto;padding:12px 0}
.side h4{margin:14px 16px 6px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#7f93a8}
.side a{display:block;padding:8px 16px;color:var(--side-t);border-left:3px solid transparent}.side a:hover{background:var(--side2);text-decoration:none}
.side a.on{background:var(--side2);border-left-color:var(--green);color:#fff}.side a.sub{padding-left:30px;font-size:13px}
.main{margin:48px 0 0 230px;padding:20px 24px 60px}
.crumbs{color:var(--muted);font-size:13px;margin-bottom:6px}
h1{font-size:22px;font-weight:600;margin:0 0 16px}h2{font-size:16px;margin:0 0 10px}h3{font-size:14px;margin:0 0 8px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:16px;margin-bottom:16px}
.grid{display:grid;gap:16px}.grid>*{min-width:0}.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g32{grid-template-columns:2fr 1fr}
@media(max-width:1100px){.g4,.g3,.g2,.g32{grid-template-columns:1fr 1fr}}
.stat{padding:14px 16px}.stat .n{font-size:26px;font-weight:600}.stat .l{color:var(--muted);font-size:13px}
.btn{display:inline-block;border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:4px;padding:7px 14px;cursor:pointer;font:inherit}
.btn:hover{text-decoration:none;border-color:var(--blue)}.btn.p{background:var(--blue);border-color:var(--blue);color:#fff}.btn.p:hover{background:var(--blue-d)}
.btn.s{padding:3px 10px;font-size:13px}.btns{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
table{width:100%;border-collapse:collapse}th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
th{font-weight:600;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.03em;background:var(--bg)}
tr:hover td{background:rgba(32,103,176,.04)}td.n,th.n{text-align:right}
.badge{display:inline-block;border-radius:10px;padding:1px 9px;font-size:12px;white-space:nowrap}
.b-ok{background:var(--okbg);color:var(--ok)}.b-warn{background:var(--warnbg);color:var(--warn)}.b-err{background:var(--errbg);color:var(--err)}.b-info{background:var(--infobg);color:var(--info)}.b-grey{background:var(--greybg);color:var(--grey)}
.bar{height:8px;border-radius:4px;background:var(--greybg);overflow:hidden}.bar i{display:block;height:100%;background:var(--blue)}.bar i.w{background:var(--warn)}.bar i.o{background:var(--ok)}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:16px;flex-wrap:wrap}
.tabs a{padding:9px 16px;color:var(--muted);border-bottom:2px solid transparent;cursor:pointer}.tabs a.on{color:var(--text);border-bottom-color:var(--blue);font-weight:600}.tabs a:hover{text-decoration:none;color:var(--text)}
.tab{display:none}.tab.on{display:block}
label.f{display:block;font-weight:600;margin:12px 0 4px}.hint{color:var(--muted);font-size:13px;margin-top:4px}
input[type=text],input[type=number],select,textarea{width:100%;max-width:420px;padding:7px 9px;border:1px solid var(--line);border-radius:4px;background:var(--panel);color:var(--text);font:inherit}
select.s,input.s{width:auto;max-width:none;padding:3px 6px;font-size:13px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.opt{display:flex;gap:8px;align-items:flex-start;margin:6px 0}.opt input{margin-top:4px}
.note{border-left:3px solid var(--info);background:var(--infobg);padding:10px 12px;border-radius:0 4px 4px 0;margin:10px 0}.note.w{border-color:var(--warn);background:var(--warnbg)}.note.e{border-color:var(--err);background:var(--errbg)}.note.o{border-color:var(--ok);background:var(--okbg)}
.steps{display:flex;gap:0;margin-bottom:20px;flex-wrap:wrap}.steps div{flex:1;min-width:130px;padding:10px 12px;background:var(--greybg);color:var(--muted);border-right:2px solid var(--panel);font-size:13px}
.steps div b{display:block;font-size:12px}.steps div.on{background:var(--blue);color:#fff}.steps div.done{background:var(--okbg);color:var(--ok)}
.step{display:none}.step.on{display:block}
.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px}
.modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:50;align-items:flex-start;justify-content:center;padding-top:60px}.modal.on{display:flex}
.modal .box{background:var(--panel);border-radius:8px;width:min(920px,94vw);max-height:80vh;overflow:auto;padding:20px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}.tree{list-style:none;padding-left:18px;margin:4px 0}.tree li{padding:3px 0}.tree>li{padding-left:0}
.pill{display:inline-block;background:var(--greybg);border-radius:4px;padding:1px 7px;margin:1px 3px 1px 0;font-size:12px}
.req{color:var(--err);font-weight:600}.muted{color:var(--muted)}.right{text-align:right}.mb0{margin-bottom:0}
.toast{position:fixed;right:20px;bottom:20px;background:#2f3e52;color:#fff;padding:10px 16px;border-radius:6px;display:none;z-index:99}
.kv{display:grid;grid-template-columns:170px 1fr;gap:6px 14px}.kv dt{color:var(--muted)}.kv dd{margin:0}
.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{border:1px solid var(--line);border-radius:14px;padding:3px 12px;cursor:pointer;background:var(--panel)}.chip.on{background:var(--blue);color:#fff;border-color:var(--blue)}
