:root{--bg: #f4f6fa;--bg2: #ffffff;--panel: #ffffff;--panel2: #f6f8fc;--line: #e5eaf2;--line2: #d5dce7;--txt: #17202f;--txt2: #3d4858;--sub: #66707e;--sub2: #6f7a89;--sub3: #9aa3b0;--acc: #4f46e5;--acc2: #0e7490;--ok: #0f9d76;--warn: #b45309;--err: #d33a3a;--add: #0f9d76;--del: #d33a3a;--hover: #f1f4f9;--sel-bg: #f3f2ff;--code-bg: #fbfcfe;--hunk-bg: #f1f5fa;--term-bg: #f8fafc;--term-cmd: #0369a1;--term-ok: #0f7d5c;--term-err: #b91c1c;--term-out: #55606f;--term-dim: #aab2bf;--df-add-bg: #eafaf3;--df-del-bg: #fdefef;--df-add-fg: #0b7356;--df-del-fg: #b42318;--df-ctx: #3d4756;--kw: #7c3aed;--st: #a16207;--cm: #98a2b0;--line-num: #eef2f7;--kpi-grad: linear-gradient(160deg, #ffffff, #f8fafd);--top-grad: linear-gradient(180deg, #ffffff, #fbfcfe);--kpi-glow: radial-gradient(circle, rgba(79, 70, 229, .1), transparent 70%);--shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 2px 6px rgba(16, 24, 40, .05);--shadow-lg: 0 10px 28px rgba(16, 24, 40, .14);--scroll: #ccd4e0;--scroll-h: #b4bdcb;--tag-ok-bg: #eafaf3;--tag-ok-bd: #a9e3ce;--tag-warn-bg: #fff7ea;--tag-warn-bd: #f0d3a2;--tag-err-bg: #fdeeee;--tag-err-bd: #f3bdbd;--heat-hi-bg: #d9f6ec;--heat-hi-fg: #0b7356;--heat-hi-bd: #a9e3ce;--heat-mid-bg: #e2f4f1;--heat-mid-fg: #0e6b60;--heat-mid-bd: #b3ddd6;--heat-low-bg: #fdf4e4;--heat-low-fg: #96540a;--heat-low-bd: #efd6ad;--heat-min-bg: #eef0f7;--heat-min-fg: #4c5170;--heat-min-bd: #d8dcec;color-scheme:light}[data-theme=dark]{--bg: #0a0e15;--bg2: #0e131d;--panel: #121926;--panel2: #172031;--line: #1f2a3d;--line2: #2a3550;--txt: #e8eef8;--txt2: #a9b8cc;--sub: #8d9bb0;--sub2: #63718a;--sub3: #4a5a75;--acc: #6366f1;--acc2: #22d3ee;--ok: #10b981;--warn: #f59e0b;--err: #ef4444;--add: #34d399;--del: #f87171;--hover: #161f2f;--sel-bg: #17203a;--code-bg: #0b1018;--hunk-bg: #101828;--term-bg: #070b12;--term-cmd: #7dd3fc;--term-ok: #4ade80;--term-err: #fca5a5;--term-out: #8fa2ba;--term-dim: #3f4d63;--df-add-bg: rgba(16, 185, 129, .07);--df-del-bg: rgba(239, 68, 68, .07);--df-add-fg: #7ee2b8;--df-del-fg: #f0a3a3;--df-ctx: #93a2b8;--kw: #c084fc;--st: #fbbf24;--cm: #4f6280;--line-num: #141d2b;--kpi-grad: linear-gradient(160deg, #141d2c, #111825);--top-grad: linear-gradient(180deg, #101725, #0c111b);--kpi-glow: radial-gradient(circle, rgba(99, 102, 241, .16), transparent 70%);--shadow: none;--shadow-lg: 0 10px 28px rgba(0, 0, 0, .5);--scroll: #243046;--scroll-h: #32405a;--tag-ok-bg: rgba(16, 185, 129, .08);--tag-ok-bd: rgba(16, 185, 129, .35);--tag-warn-bg: rgba(245, 158, 11, .08);--tag-warn-bd: rgba(245, 158, 11, .35);--tag-err-bg: rgba(239, 68, 68, .1);--tag-err-bd: rgba(239, 68, 68, .35);--heat-hi-bg: rgba(16, 185, 129, .22);--heat-hi-fg: #5eead4;--heat-hi-bd: rgba(16, 185, 129, .45);--heat-mid-bg: rgba(45, 212, 191, .16);--heat-mid-fg: #7dd3c0;--heat-mid-bd: rgba(45, 212, 191, .36);--heat-low-bg: rgba(245, 158, 11, .14);--heat-low-fg: #fbbf24;--heat-low-bd: rgba(245, 158, 11, .32);--heat-min-bg: rgba(99, 102, 241, .1);--heat-min-fg: #8b93c9;--heat-min-bd: rgba(99, 102, 241, .24);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--txt);font-size:13px;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Source Han Sans SC,sans-serif;-webkit-font-smoothing:antialiased;transition:background .18s ease,color .18s ease}code,pre,.mono{font-family:SF Mono,JetBrains Mono,Menlo,Consolas,Liberation Mono,monospace}::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-thumb{background:var(--scroll);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--scroll-h)}::-webkit-scrollbar-track{background:transparent}.cp-app{display:flex;flex-direction:column;height:100%;overflow:hidden}.cp-top{display:flex;align-items:center;gap:14px;height:52px;padding:0 18px;flex:0 0 52px;background:var(--top-grad);border-bottom:1px solid var(--line)}.cp-logo{width:26px;height:26px;border-radius:7px;flex:0 0 26px;background:linear-gradient(135deg,var(--acc),var(--acc2));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:13px}.cp-brand{display:flex;flex-direction:column;line-height:1.25}.cp-brand b{font-size:13.5px;letter-spacing:.2px}.cp-brand span{color:var(--sub2);font-size:11px}.cp-repo{display:flex;align-items:center;gap:7px;margin-left:6px;padding:4px 10px;border:1px solid var(--line);border-radius:7px;background:var(--panel2);color:var(--sub);font-size:11.5px}.cp-repo i{color:var(--acc);font-style:normal}.cp-repo b{color:var(--txt);font-weight:500}.cp-nav{display:flex;gap:2px;margin-left:auto}.cp-nav button{border:0;background:transparent;color:var(--sub);padding:7px 13px;border-radius:7px;cursor:pointer;font-size:12.5px;font-family:inherit;transition:all .15s}.cp-nav button:hover{color:var(--txt);background:var(--hover)}.cp-nav button.on{color:#fff;background:var(--acc);font-weight:600}[data-theme=light] .cp-nav button.on{box-shadow:0 2px 8px #4f46e53d}.cp-top-right{display:flex;align-items:center;gap:8px}.cp-pill{display:flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--line);border-radius:20px;font-size:11.5px;color:var(--sub);background:var(--panel2);white-space:nowrap}.cp-dot{width:6px;height:6px;border-radius:50%;background:var(--ok)}.cp-theme{display:flex;align-items:center;gap:5px;cursor:pointer;padding:5px 10px;border-radius:20px;font-size:11.5px;border:1px solid var(--line);background:var(--panel2);color:var(--sub);font-family:inherit;transition:all .15s;white-space:nowrap;line-height:1}.cp-theme:hover{color:var(--txt);border-color:var(--line2)}.cp-theme svg{flex:0 0 12px}.cp-main{flex:1;min-height:0;overflow:auto;padding:16px 18px 22px}@media (max-width: 900px){.cp-top{flex-wrap:wrap;height:auto;flex:0 0 auto;padding:9px 12px;gap:9px}.cp-repo{display:none}.cp-top-right{margin-left:auto}.cp-nav{order:3;width:100%;margin-left:0;gap:4px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.cp-nav::-webkit-scrollbar{height:0}.cp-nav button{white-space:nowrap;padding:6px 11px;font-size:12px}.cp-main{padding:12px 12px 18px}}@media (max-width: 560px){.cp-brand span{display:none}}.cp-view{max-width:1680px;margin:0 auto}.cp-card{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:14px 16px;box-shadow:var(--shadow)}.cp-card-h{display:flex;align-items:baseline;gap:8px;margin-bottom:12px}.cp-card-h h3{margin:0;font-size:13px;font-weight:600;letter-spacing:.2px}.cp-card-h .sub{color:var(--sub2);font-size:11.5px}.cp-card-h .right{margin-left:auto;font-size:11.5px;color:var(--sub)}.cp-grid{display:grid;gap:12px}.cp-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}@media (max-width: 1180px){.cp-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 620px){.cp-kpis{grid-template-columns:1fr}}.cp-kpi{background:var(--kpi-grad);border:1px solid var(--line);border-radius:11px;padding:13px 15px;position:relative;overflow:hidden;box-shadow:var(--shadow)}.cp-kpi:after{content:"";position:absolute;right:-30px;top:-30px;width:90px;height:90px;border-radius:50%;background:var(--kpi-glow)}.cp-kpi .k{color:var(--sub);font-size:11.5px}.cp-kpi .v{font-size:25px;font-weight:650;margin:5px 0 3px;letter-spacing:-.5px;font-variant-numeric:tabular-nums}.cp-kpi .v span{font-size:12px;font-weight:400;color:var(--sub);margin-left:3px}.cp-kpi .d{font-size:11.5px;color:var(--sub2);display:flex;gap:5px;align-items:center}.cp-kpi .d em{font-style:normal;font-weight:600}.cp-kpi .d em.up{color:var(--ok)}.cp-kpi .d em.down{color:var(--err)}.cp-kpi .hint{margin-top:7px;font-size:11px;color:var(--sub2);border-top:1px dashed var(--line);padding-top:6px}.cp-2col{display:grid;grid-template-columns:1.72fr 1fr;gap:12px;margin-top:12px}.cp-2col>*,.cp-taskwrap>*,.cp-diffwrap>*,.cp-kpis>*{min-width:0}@media (max-width: 1080px){.cp-2col{grid-template-columns:minmax(0,1fr)}}.cp-table{width:100%;border-collapse:collapse;font-size:12px}.cp-table th{text-align:left;font-weight:500;color:var(--sub2);font-size:11px;padding:0 10px 8px;border-bottom:1px solid var(--line);white-space:nowrap}.cp-table td{padding:9px 10px;border-bottom:1px solid var(--line)}.cp-table tr:last-child td{border-bottom:0}.cp-table tbody tr{cursor:pointer;transition:background .12s}.cp-table tbody tr:hover{background:var(--hover)}.cp-table .id{color:var(--acc2);font-family:SF Mono,Menlo,monospace;font-size:11.5px}.cp-table .ttl{color:var(--txt)}.cp-table .num{font-variant-numeric:tabular-nums;text-align:right}.cp-table .add{color:var(--add)}.cp-table .del{color:var(--del)}.cp-tag{display:inline-block;padding:1px 7px;border-radius:5px;font-size:10.5px;border:1px solid var(--line);color:var(--sub);margin-right:4px;background:var(--panel2)}.cp-tag.ok{color:var(--ok);border-color:var(--tag-ok-bd);background:var(--tag-ok-bg)}.cp-tag.rev{color:var(--warn);border-color:var(--tag-warn-bd);background:var(--tag-warn-bg)}.cp-tag.lo{color:var(--sub)}.cp-tag.mid{color:var(--warn);border-color:var(--tag-warn-bd);background:var(--tag-warn-bg)}.cp-tag.hi{color:var(--err);border-color:var(--tag-err-bd);background:var(--tag-err-bg)}.cp-lang{display:flex;flex-direction:column;gap:11px}.cp-lang .row{display:flex;align-items:center;gap:9px;font-size:12px}.cp-lang .nm{width:78px;color:var(--sub);flex:0 0 78px}.cp-lang .bar{flex:1;height:7px;border-radius:4px;background:var(--panel2);border:1px solid var(--line);overflow:hidden}.cp-lang .bar i{display:block;height:100%;border-radius:4px}.cp-lang .pc{width:52px;text-align:right;color:var(--txt);flex:0 0 52px;font-variant-numeric:tabular-nums}.cp-lang .lc{width:58px;text-align:right;color:var(--sub2);flex:0 0 58px;font-variant-numeric:tabular-nums;font-size:11px}.cp-taskwrap{display:grid;grid-template-columns:288px 1fr;gap:12px;align-items:start}@media (max-width: 1000px){.cp-taskwrap{grid-template-columns:1fr}}.cp-tlist{display:flex;flex-direction:column;gap:8px}.cp-titem{border:1px solid var(--line);border-radius:9px;padding:10px 12px;background:var(--panel2);cursor:pointer;transition:all .14s}.cp-titem:hover{border-color:var(--line2);background:var(--hover)}.cp-titem.on{border-color:var(--acc);background:var(--sel-bg);box-shadow:0 0 0 2px #4f46e51f}.cp-titem .l1{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.cp-titem .id{color:var(--acc2);font-size:11px;font-family:SF Mono,Menlo,monospace}.cp-titem .ttl{font-size:12.5px;color:var(--txt);margin:5px 0 6px;line-height:1.45}.cp-titem .l3{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--sub2)}.cp-titem .l3 .r{margin-left:auto}.cp-detail-h{display:flex;align-items:flex-start;gap:12px;margin-bottom:12px}.cp-detail-h h2{margin:0 0 5px;font-size:16px;font-weight:600}.cp-detail-h .meta{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:11.5px;color:var(--sub)}.cp-detail-h .meta b{color:var(--txt);font-weight:500;font-family:SF Mono,Menlo,monospace}.cp-steps{display:flex;flex-direction:column}.cp-step{display:flex;gap:12px}.cp-step .rail{flex:0 0 26px;display:flex;flex-direction:column;align-items:center}.cp-step .dot{width:24px;height:24px;border-radius:50%;flex:0 0 24px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;background:var(--panel2);border:1px solid var(--line);color:var(--sub);position:relative;z-index:1}.cp-step.done .dot{background:var(--tag-ok-bg);border-color:var(--tag-ok-bd);color:var(--ok)}.cp-step.fix .dot{background:var(--tag-warn-bg);border-color:var(--tag-warn-bd);color:var(--warn)}.cp-step .line{flex:1;width:1px;background:var(--line);margin:2px 0}.cp-step:last-child .line{display:none}.cp-step .body{flex:1;padding-bottom:14px;min-width:0}.cp-step .hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cp-step .hd .t{font-size:12.5px;font-weight:600}.cp-step .hd .tool{font-size:10.5px;padding:1px 7px;border-radius:5px;background:var(--panel2);color:var(--acc2);border:1px solid var(--line2);font-family:SF Mono,Menlo,monospace}.cp-step .hd .ms{margin-left:auto;font-size:11px;color:var(--sub2);font-variant-numeric:tabular-nums}.cp-step .dt{color:var(--sub);font-size:12px;margin:4px 0 0;line-height:1.55}.cp-step .out{margin-top:7px;background:var(--code-bg);border:1px solid var(--line);border-radius:7px;padding:8px 10px;font-size:11.5px;color:var(--txt2);white-space:pre-wrap;word-break:break-word;line-height:1.6;font-family:SF Mono,Menlo,monospace}.cp-diffwrap{display:grid;grid-template-columns:268px 1fr;gap:12px;align-items:start}@media (max-width: 1000px){.cp-diffwrap{grid-template-columns:1fr}}.cp-ftree{display:flex;flex-direction:column;gap:3px}.cp-fitem{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:7px;cursor:pointer;font-size:12px;color:var(--sub);border:1px solid transparent;transition:all .12s}.cp-fitem:hover{background:var(--hover);color:var(--txt)}.cp-fitem.on{background:var(--sel-bg);border-color:var(--acc);color:var(--txt)}.cp-fitem .st{width:15px;height:15px;flex:0 0 15px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:9.5px;font-weight:700}.cp-fitem .st.A{background:var(--tag-ok-bg);color:var(--ok)}.cp-fitem .st.M{background:var(--tag-warn-bg);color:var(--warn)}.cp-fitem .st.D{background:var(--tag-err-bg);color:var(--err)}.cp-fitem .p{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;direction:rtl;text-align:left}.cp-fitem .c{font-size:10.5px;color:var(--sub2);font-variant-numeric:tabular-nums}.cp-diffhead{display:flex;align-items:center;gap:10px;padding:9px 12px;background:var(--panel2);border:1px solid var(--line);border-radius:9px 9px 0 0;border-bottom:0}.cp-diffhead .p{font-family:SF Mono,Menlo,monospace;font-size:12px}.cp-diffhead .c{margin-left:auto;font-size:11px;font-variant-numeric:tabular-nums}.cp-diffhead .c .a{color:var(--add)}.cp-diffhead .c .d{color:var(--del);margin-left:6px}.cp-diff{border:1px solid var(--line);border-radius:0 0 9px 9px;overflow:auto;background:var(--code-bg);max-height:calc(100vh - 258px)}.cp-hunk{border-bottom:1px solid var(--line)}.cp-hunk:last-child{border-bottom:0}.cp-hunk-h{padding:6px 12px;background:var(--hunk-bg);color:var(--sub);font-family:SF Mono,Menlo,monospace;font-size:11px;border-bottom:1px solid var(--line)}.cp-dline{display:flex;font-family:SF Mono,Menlo,monospace;font-size:11.5px;line-height:1.75}.cp-dline .ln{flex:0 0 38px;text-align:right;padding-right:9px;color:var(--sub3);-webkit-user-select:none;user-select:none;border-right:1px solid var(--line-num)}.cp-dline .sg{flex:0 0 16px;text-align:center;-webkit-user-select:none;user-select:none}.cp-dline .tx{flex:1;white-space:pre-wrap;word-break:break-word;padding-right:12px}.cp-dline.add{background:var(--df-add-bg)}.cp-dline.add .sg,.cp-dline.add .tx{color:var(--df-add-fg)}.cp-dline.del{background:var(--df-del-bg)}.cp-dline.del .sg,.cp-dline.del .tx{color:var(--df-del-fg)}.cp-dline.ctx .tx{color:var(--df-ctx)}.cp-dline .tx .kw{color:var(--kw)}.cp-dline .tx .st{color:var(--st)}.cp-dline .tx .cm{color:var(--cm);font-style:italic}.cp-term{background:var(--term-bg);border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:11.5px;line-height:1.75;min-height:220px;max-height:360px;overflow:auto}.cp-term .ln{white-space:pre-wrap;word-break:break-word}.cp-term .cmd{color:var(--term-cmd)}.cp-term .ok{color:var(--term-ok)}.cp-term .err{color:var(--term-err)}.cp-term .out{color:var(--term-out)}.cp-term .dim{color:var(--term-dim)}.cp-term .caret{display:inline-block;width:6px;height:13px;background:var(--term-ok);vertical-align:-2px;animation:blink 1s step-end infinite}@keyframes blink{50%{opacity:0}}.cp-tests{display:flex;flex-direction:column;gap:10px}.cp-trow{display:flex;align-items:center;gap:9px;padding:7px 10px;border:1px solid var(--line);border-radius:7px;font-size:11.5px;background:var(--panel2)}.cp-trow .ic{width:14px;flex:0 0 14px;text-align:center;font-size:11px}.cp-trow .ic.p{color:var(--ok)}.cp-trow .ic.f{color:var(--err)}.cp-trow .nm{font-family:SF Mono,Menlo,monospace;color:var(--txt2);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cp-trow .fl{color:var(--sub2);font-size:10.5px}.cp-trow .ms{color:var(--sub2);font-variant-numeric:tabular-nums;min-width:44px;text-align:right}.cp-cov{display:flex;flex-direction:column;gap:9px}.cp-cov .row{display:flex;align-items:center;gap:9px;font-size:11.5px}.cp-cov .nm{flex:1;color:var(--sub);font-family:SF Mono,Menlo,monospace;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cp-cov .bar{width:110px;height:6px;border-radius:3px;background:var(--panel2);border:1px solid var(--line);overflow:hidden;flex:0 0 110px}.cp-cov .bar i{display:block;height:100%;border-radius:3px}.cp-cov .pc{width:44px;text-align:right;color:var(--txt);font-variant-numeric:tabular-nums;flex:0 0 44px}.cp-runstat{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}@media (max-width: 720px){.cp-runstat{grid-template-columns:repeat(2,minmax(0,1fr))}}.cp-runstat .it{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:10px 12px;box-shadow:var(--shadow)}.cp-runstat .it .k{font-size:11px;color:var(--sub2)}.cp-runstat .it .v{font-size:19px;font-weight:620;margin-top:3px;font-variant-numeric:tabular-nums}.cp-heat{display:grid;gap:5px}.cp-heat .hd{font-size:11px;color:var(--sub2);text-align:center;padding-bottom:2px}.cp-heat .rh{font-size:11.5px;color:var(--sub);display:flex;align-items:center}.cp-heat .cell{height:40px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;cursor:default;transition:transform .12s,box-shadow .12s}.cp-heat .cell:hover{transform:scale(1.06);box-shadow:var(--shadow-lg)}.cp-notes{display:flex;flex-direction:column;gap:12px}.cp-notes .nb{border:1px solid var(--line);border-radius:9px;padding:11px 13px;background:var(--panel);box-shadow:var(--shadow)}.cp-notes .nb h4{margin:0 0 7px;font-size:12px;font-weight:600}.cp-notes .nb ul{margin:0;padding-left:16px;color:var(--sub);font-size:11.5px;line-height:1.85}.cp-loading,.cp-error{display:flex;align-items:center;justify-content:center;height:100%;color:var(--sub2);font-size:13px}.cp-empty{color:var(--sub2);font-size:12px;padding:20px;text-align:center}
