:root{--ink:#202d33;--muted:#697a80;--border:#e1e7e5;--paper:#f4f7f5;--green:#18735f;--dark:#152e2b;--warm:#b7781e;--red:#ab3e3e}
*{box-sizing:border-box}
.card,.stack,.split>*,main{min-width:0}
body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC",sans-serif}
button,input,textarea,select{font:inherit}button,a,input,textarea,select{outline-offset:3px}
button{cursor:pointer;border:1px solid var(--border);border-radius:8px;background:white;padding:9px 16px;color:var(--ink);transition:background .15s}
button:hover{background:#edf3f0}button:disabled{opacity:.5;cursor:wait}.primary{background:var(--green);border-color:var(--green);color:white}.primary:hover{background:#125b4b}.quiet{background:transparent}.danger{color:var(--red)}
a{color:var(--green);text-underline-offset:3px}.sidebar{position:fixed;inset:0 auto 0 0;width:236px;background:var(--dark);color:#eaf4ef;padding:32px 22px;display:flex;flex-direction:column}
.brand{text-decoration:none;color:white;display:flex;align-items:center;gap:12px;font-weight:700;font-size:21px;letter-spacing:-.5px}.brand small{display:block;color:#9db8ad;font-size:11px;font-weight:400;letter-spacing:2px;margin-top:2px}.brand-mark{height:42px;width:42px;display:grid;place-content:center;background:#cae8b0;border-radius:12px;color:#193c31;font-size:23px;line-height:1}.brand-mark span{margin-left:8px;font-size:15px}
.nav-label{margin:50px 12px 14px;font-size:11px;letter-spacing:2px;color:#86a69a}nav{display:grid;gap:7px}nav button{background:none;color:#b7cfc4;border:0;text-align:left;padding:12px 14px}nav button span{display:inline-block;width:27px;font-size:18px}nav button:hover{background:#24443c}nav button.active{background:#315348;color:#e0f1c6}.sidebar-foot{margin-top:auto;padding:20px 7px 0;border-top:1px solid #365149;font-size:12px}.sidebar-foot small{display:block;color:#91ada1;margin-top:10px;font-size:11px}.dot{width:7px;height:7px;background:#b5d994;display:inline-block;border-radius:50%;margin-right:5px}
main{margin-left:236px;padding:32px 44px;max-width:1600px}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--muted)}h1{font-size:26px;letter-spacing:-.6px;margin:5px 0 0;font-weight:650}h2{font-size:17px;margin:0 0 12px}h3{font-size:15px;margin:0 0 8px}p{margin:8px 0 16px}.muted{color:var(--muted)}.small{font-size:12px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between}.stack{display:grid;gap:20px}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.split{display:grid;grid-template-columns:260px minmax(0,1fr);gap:20px}.card{background:white;border:1px solid var(--border);border-radius:13px;padding:24px}.metric{font-size:32px;line-height:1.3;display:block;margin:10px 0;color:var(--dark)}.metric-label{color:var(--muted);font-size:12px}.hero{background:#e7eee3;border:1px solid #d6e1ce;border-radius:13px;padding:27px 30px;position:relative;overflow:hidden}.hero h2{font-size:23px;max-width:650px}.hero p{max-width:700px;color:#4f6658}.hero .eyebrow{color:#546b4b}
.badge{display:inline-block;padding:3px 9px;border-radius:5px;font-size:11px;background:#edf2ef;color:#596b61;white-space:nowrap}.badge.success,.badge.complete{color:#216a50;background:#e8f4eb}.badge.failed{color:#aa3939;background:#fbecec}.badge.collection_gap,.badge.partial,.badge.unknown{color:#8e621c;background:#fff2da}.badge.mock{background:#edf0fb;color:#53618e}.badge.demo{background:#f5ebfa;color:#8b579d}.badge.running{background:#e3f1ff;color:#306693}.banner{border-radius:8px;padding:12px 16px;background:#f7f1df;border:1px solid #eadcba;color:#7e652e}.banner.info{background:#edf4f0;border-color:#d9e7df;color:#406652}
#notice{padding:12px 18px;margin-bottom:18px;border:1px solid #c6dbcc;border-radius:8px;background:#e9f4ec;white-space:pre-wrap}#notice.error{background:#fff0ec;border-color:#f0d0c6;color:#a0442d}
label{display:block;font-size:12px;font-weight:600;margin-bottom:14px}label input,label textarea,label select{display:block;width:100%;margin-top:6px}input,textarea,select{border:1px solid #d6dfda;border-radius:7px;background:white;color:var(--ink);padding:10px 12px;max-width:100%}textarea{resize:vertical;line-height:1.65;min-height:100px}input:focus,textarea:focus,select:focus{outline:2px solid #8bb9a5}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.check{display:flex;gap:8px;align-items:center;font-weight:400;margin:8px 0}.check input{display:inline-block;width:16px;margin:0;accent-color:var(--green)}.source-checks{background:#f8faf8;border:1px solid var(--border);border-radius:8px;padding:12px;margin:8px 0 18px;max-height:200px;overflow:auto}.source-checks:empty:after{content:"当前环境暂无来源，请先添加或导入。";color:var(--muted);font-size:12px}
.business-picker{display:grid;gap:8px}.business-picker button{text-align:left;padding:15px}.business-picker button.selected{border-color:#86af99;background:#eef5ec}.business-picker small{display:block;font-size:11px;color:var(--muted);margin-top:6px}.divider{border:0;border-top:1px solid var(--border);margin:20px 0}.section-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:15px}.section-title h2{margin:0}.empty{padding:30px 15px;text-align:center;color:var(--muted);border:1px dashed #d4ded6;border-radius:9px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left}th{font-size:11px;font-weight:500;color:var(--muted);background:#f8faf8;white-space:nowrap}td,th{padding:13px 12px;border-bottom:1px solid var(--border)}td{font-size:13px}td small{display:block;color:var(--muted);font-size:11px}.nowrap{white-space:nowrap}.run-row:hover{background:#f8faf8}.run-row button{font-size:12px;padding:5px 10px}
footer{color:#8b9790;font-size:11px;margin:30px 0 0}code,pre{font:12px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace}code{background:#eff3ef;border-radius:4px;padding:2px 5px;overflow-wrap:anywhere}pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#f4f6f3;border:1px solid var(--border);padding:16px;border-radius:8px;max-height:440px;overflow:auto}dialog{width:min(980px,94vw);max-height:90vh;border:1px solid var(--border);border-radius:15px;padding:28px;color:var(--ink)}dialog::backdrop{background:#142e2866;backdrop-filter:blur(3px)}.dialog-bottom{position:sticky;bottom:-28px;background:white;padding:15px 0 0;display:flex;justify-content:flex-end}.highlight{border:1px solid var(--border);border-left:3px solid #abc98b;border-radius:8px;padding:18px;margin-top:14px}.highlight p,.message-text{white-space:pre-wrap;overflow-wrap:anywhere}.ref{padding:15px 0;border-bottom:1px solid var(--border)}.ref:target{background:#f0f7e6}.ref summary{cursor:pointer;font-size:12px}.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;font-size:12px;margin:12px 0}.fields div{overflow-wrap:anywhere}.fields span{color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:12px}.inline-code{word-break:break-all}
@media(max-width:1100px){main{padding:25px}.sidebar{width:200px;padding:25px 15px}main{margin-left:200px}.split{grid-template-columns:210px minmax(0,1fr)}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.sidebar{position:static;width:100%;padding:18px 18px 8px}.brand{font-size:18px}.brand small{font-size:10px}.brand-mark{width:34px;height:34px}.nav-label,.sidebar-foot{display:none}nav{display:flex;margin-top:14px;overflow:auto;gap:4px}nav button{white-space:nowrap;padding:9px 10px;font-size:12px}nav button span{width:17px;font-size:14px}main{margin-left:0;padding:22px 15px}.topbar{margin-bottom:20px}h1{font-size:23px}.grid{grid-template-columns:1fr}.split{grid-template-columns:1fr}.business-picker{display:flex;overflow:auto}.business-picker button{min-width:170px}.card{padding:18px}.form-grid{grid-template-columns:1fr}.hero{padding:23px}.hero h2{font-size:20px}.fields{grid-template-columns:1fr}dialog{padding:20px}.dialog-bottom{bottom:-20px}td,th{padding:10px 8px}.metric{font-size:29px}}
