:root{color-scheme:light;
 --paper:#f4f5f8;--white:#ffffff;--ink:#25324a;--muted:#657187;--line:#dce2ec;
 --brand:#365bd6;--brand-hover:#2d4ebd;--brand-soft:#edf1ff;--brand-border:#cdd8fa;
 --surface-soft:#f8f9fc;--surface-muted:#eef1f6;--detail-surface:#f5f7fc;
 --warning:#8c5c19;--warning-soft:#fff7e8;--warning-border:#ebd5ac;
 --chart-actual:#4d76d3;--chart-target:#bc852f;--chart-remaining:#8061b3;--chart-grid:#e5e9f0;
 --focus:#365bd6;--empty-border:#c9d2e1;--soft-shadow:0 1px 3px #25324a0d
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.6 "Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
button,input,select{font:inherit;color:inherit}
button,select,summary{cursor:pointer}
button,select,input{border:1px solid var(--line);border-radius:9px;background:var(--white);padding:8px 12px;max-width:100%}
button:hover{background:var(--surface-muted);border-color:var(--brand-border)}
button:disabled{opacity:.5;cursor:default}
:focus-visible{outline:3px solid var(--focus);outline-offset:4px}
a{color:var(--brand)}
.page{max-width:1380px;margin:auto;padding:30px 42px 46px}
.masthead,.brand,.header-actions{display:flex;align-items:center}
.masthead{justify-content:space-between;gap:20px}
.brand{gap:13px;text-decoration:none;color:inherit}
.brand strong{font-size:17px}
.brand-mark{width:38px;height:38px;border-radius:12px;background:var(--brand);display:grid;place-items:center;color:white;font-size:22px}
.eyebrow{display:block;font-size:10px;font-weight:650;letter-spacing:.12em;color:var(--muted);text-transform:uppercase}
.header-actions{gap:12px}
.small,.subtle{font-size:12px;color:var(--muted)}
.intro{display:flex;justify-content:space-between;align-items:end;gap:20px;margin:35px 0 23px}
h1{font-size:29px;line-height:1.35;letter-spacing:-.04em;font-weight:650;margin:0 0 8px}
h2{font-size:18px;margin:0}
h3{font-size:14px;margin:0 0 12px}
p{margin:0}
.intro p{color:var(--muted)}
.notice{border:1px solid var(--warning-border);background:var(--warning-soft);color:var(--warning);border-radius:10px;padding:11px 15px;margin-bottom:18px;font-size:13px}
.notice.neutral{border-color:var(--line);background:var(--surface-muted);color:var(--muted)}
.notice button{margin-left:10px;padding:3px 10px}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px;flex-wrap:wrap}
.time-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.time-controls label{font-size:12px;color:var(--muted)}
.segments{display:flex;gap:4px;background:var(--surface-muted);border-radius:11px;padding:4px}
.segments button{border:0;background:transparent;padding:7px 20px;color:var(--muted)}
.segments button[aria-pressed=true]{background:var(--white);color:var(--brand);box-shadow:var(--soft-shadow);font-weight:650}
.snapshot-time{color:var(--muted);font-size:12px}
.scope-note{margin-bottom:18px}
.analytics{display:grid;grid-template-columns:1.15fr 1fr 1fr;gap:14px;margin-bottom:18px}
.chart-card{border:1px solid var(--line);border-radius:14px;background:var(--white);padding:19px 18px;min-width:0}
.chart-head{margin-bottom:10px;min-height:48px}
.chart-head h2{font-size:15px}
.chart-head p,.chart-note{font-size:11px;color:var(--muted);margin-top:4px}
.chart-key{display:flex;gap:14px;font-size:11px;color:var(--muted)}
.dot{display:inline-block;width:8px;height:8px;background:var(--chart-actual);border-radius:2px;margin-right:5px}
.dot.target{background:transparent;border:1px solid var(--chart-target)}
.chart{width:100%;height:auto;display:block}
.chart text{font-family:inherit;fill:var(--muted);font-size:12px}
.chart .value{fill:var(--chart-actual);font-weight:600}
.chart-mark{cursor:help;outline:none}
.chart-mark:focus-visible{outline:none;filter:drop-shadow(0 0 3px var(--focus))}
.chart-hit{fill:transparent;stroke:transparent;stroke-width:2}
.chart-mark:focus-visible .chart-hit{stroke:var(--focus);stroke-dasharray:3 2}
.chart-tooltip{position:fixed;z-index:50;width:min(320px,calc(100vw - 20px));max-width:calc(100vw - 20px);max-height:calc(100dvh - 20px);overflow:hidden;padding:12px 15px;border:1px solid var(--line);border-radius:11px;background:var(--ink);color:var(--white);box-shadow:0 8px 28px #25324a30;white-space:pre-line;font-size:12px;line-height:1.75;overflow-wrap:anywhere;pointer-events:none}
.remaining-key{display:flex;flex-wrap:wrap;gap:8px 14px;margin:6px 0;font-size:10px;color:var(--muted)}
.remaining-key i{display:inline-block;width:20px;border-top:2px solid var(--chart-remaining);margin:0 5px 3px 0}
.remaining-key .reconstructed{border-top-style:dashed;opacity:.8}
.stage-legend button{display:flex;align-items:center;justify-content:space-between;width:100%;border:0;border-radius:4px;background:transparent;padding:0;text-align:left;font-size:inherit;gap:7px}
.stage-legend button:hover{background:var(--surface-muted)}
.stage-legend button>span{min-width:0;overflow-wrap:anywhere}
.reconstruction-badge{display:inline-block;color:var(--chart-remaining);background:var(--surface-muted);padding:2px 6px;border-radius:5px;font-size:10px;margin-left:5px;vertical-align:middle}
.history-person-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:28px;align-items:start}
.history-person-grid .personal-trend{margin-top:0}
.detail-baseline>.personal-trend{max-width:600px;margin:20px 0}
@media(max-width:760px){.history-person-grid{grid-template-columns:1fr;gap:20px}}
.chart-empty{min-height:180px;display:grid;place-items:center;text-align:center;color:var(--muted);font-size:13px}
.stage-layout{display:flex;align-items:center;gap:14px;min-height:205px}
.donut{width:43%;max-width:170px;flex-shrink:0}
.stage-legend{list-style:none;margin:0;padding:0;flex:1;font-size:11px;min-width:0}
.stage-legend li{display:flex;justify-content:space-between;gap:7px;padding:4px 0;border-bottom:1px solid var(--surface-muted)}
.stage-legend i{display:inline-block;width:8px;height:8px;margin-right:6px;border-radius:2px}
.stage-legend b{font-weight:600;white-space:nowrap}
.stage-legend small{display:block;color:var(--muted);font-weight:400}
.compact-overview{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 0 28px}
.compact-overview article{border:1px solid var(--line);border-radius:12px;background:var(--white);padding:14px 18px}
.compact-overview article:first-child{background:var(--brand-soft);color:var(--brand);border-color:var(--brand-border)}
.compact-overview article>span{font-size:11px;color:var(--muted)}
.compact-overview article:first-child>span{color:var(--brand)}
.compact-overview article:first-child p{color:var(--muted)}
.compact-overview strong{display:block;font-size:29px;font-weight:600;line-height:1.6;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.compact-overview small{font-size:12px;letter-spacing:0;font-weight:400}
.compact-overview p{font-size:11px;color:var(--muted)}
.section-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:13px}
.section-head p{font-size:12px;color:var(--muted);margin-top:4px}
.owner-filter{display:flex;align-items:center;gap:9px;font-size:12px}
.table-shell{border:1px solid var(--line);background:var(--white);border-radius:14px;overflow:hidden}
.people-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.people-table th{text-align:right;background:var(--surface-soft);font-size:11px;color:var(--muted);font-weight:500;padding:12px 14px;white-space:nowrap}
.people-table td{text-align:right;border-top:1px solid var(--line);padding:13px 14px}
.people-table th:first-child,.people-table td:first-child{text-align:left}
.person{display:flex;align-items:center;gap:11px}
.avatar{width:31px;height:31px;border-radius:50%;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand);font-size:12px;font-weight:650}
.num-main{font-size:18px;font-weight:600;color:var(--chart-actual)}
.negative{color:var(--warning)}
.row-toggle{border:0;background:transparent;color:var(--brand);font-size:12px;padding:7px 0;white-space:nowrap}
.sort-button{border:0;border-radius:4px;background:transparent;padding:3px 0;font:inherit;font-weight:inherit;white-space:nowrap}
.sort-button:hover{color:var(--brand);background:var(--brand-soft)}
.sort-arrow{display:inline-block;min-width:12px;margin-left:4px;color:var(--muted);font-size:10px;text-align:center}
th[aria-sort=ascending] .sort-button,th[aria-sort=descending] .sort-button{color:var(--brand);font-weight:650}
th[aria-sort=ascending] .sort-arrow,th[aria-sort=descending] .sort-arrow{color:var(--brand)}
.member-sort-controls{display:none}
.person-detail td{padding:20px 24px;background:var(--detail-surface);text-align:left}
.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:30px;align-items:start}
.library-list{list-style:none;padding:0;margin:0;}
.library-list li{display:flex;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding:7px 0;font-size:12px;overflow-wrap:anywhere}
.library-list span{color:var(--muted);text-align:right}
.complexity{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 15px}
.complexity span{font-size:11px;color:var(--muted);background:var(--surface-muted);padding:4px 8px;border-radius:6px}
.table-foot{font-size:11px;color:var(--muted);padding:11px 16px;border-top:1px solid var(--line)}
.plan{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:26px}
.plan>summary{padding:21px 0;display:flex;justify-content:space-between;gap:14px}
.plan-summary strong{font-size:17px}
.plan-summary span{display:block;font-size:12px;color:var(--muted)}
.plan-content{padding-bottom:23px}
.plan-totals{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:16px 0}
.plan-total{border-left:2px solid var(--brand-border);padding-left:13px}
.plan-total strong{display:block;font-size:24px}
.plan-total span{font-size:12px;color:var(--muted)}
.plan-days{display:grid;grid-template-columns:repeat(auto-fit,minmax(75px,1fr));gap:6px;max-height:350px;overflow:auto}
.plan-day{background:var(--surface-muted);border-radius:7px;padding:8px;text-align:center;font-size:11px;color:var(--muted)}
.plan-day b{display:block;color:var(--brand);font-size:18px}
.method{display:grid;grid-template-columns:repeat(3,1fr);gap:25px;margin-top:28px}
.method p{font-size:11px;color:var(--muted);margin-top:5px}
.method strong{font-size:12px}
footer{margin-top:30px;padding-top:17px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:18px;color:var(--muted);font-size:10px}
.empty-state,.connect-panel{padding:50px 24px;text-align:center;border:1px dashed var(--empty-border);border-radius:18px;background:var(--white)}
.empty-state p{margin-top:10px;color:var(--muted)}
.empty-symbol{height:53px;width:53px;border-radius:50%;background:var(--brand-soft);margin:0 auto 18px;display:grid;place-items:center;color:var(--brand);font-size:25px}
.connect-panel form{max-width:400px;margin:24px auto 0;text-align:left}
.connect-panel label{font-size:12px}
.connect-fields{display:flex;gap:8px;margin-top:6px}
.connect-fields input{min-width:0;flex:1}
.available-dates{display:flex;gap:7px;flex-wrap:wrap;justify-content:center;margin-top:20px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
[hidden]{display:none!important}
.connect-fields button{background:var(--brand);border-color:var(--brand);color:var(--white);font-weight:600}
.connect-fields button:hover{background:var(--brand-hover);border-color:var(--brand-hover)}
#refreshButton{color:var(--brand);border-color:var(--brand-border);background:var(--brand-soft)}
#refreshButton:hover{background:var(--brand-border)}
.row-toggle:hover,.row-toggle[aria-expanded=true]{color:var(--brand-hover)}
.person-row:has(.row-toggle[aria-expanded=true]){background:var(--surface-soft)}
.detail-grid>section{min-width:0}
.detail-metrics{display:flex;flex-wrap:wrap;gap:8px 22px;margin-bottom:12px;font-size:12px;color:var(--muted)}
.detail-metrics strong{color:var(--ink);font-size:17px;margin-left:5px;font-weight:600}
.detail-muted{color:var(--muted);font-size:12px}
.detail-empty{padding:13px 15px;background:var(--white);border:1px solid var(--line);border-radius:9px;font-size:12px;color:var(--muted)}
.detail-empty strong{display:block;color:var(--ink);font-size:13px;margin-bottom:3px}
.history-table{border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--white);margin-bottom:10px}
.history-header,.history-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;padding:7px 12px;font-size:12px}
.history-header{background:var(--surface-muted);font-size:11px;color:var(--muted)}
.history-row+.history-row{border-top:1px solid var(--line)}
.history-initialization{font-size:10px;color:var(--brand);margin-left:5px}
.history-row strong{color:var(--chart-actual);font-weight:600}
.personal-trend,.detail-changes{margin-top:22px}
.personal-trend .chart{max-height:195px}
.trend-baseline{font-size:12px;color:var(--muted)}
.trend-baseline strong{font-size:20px;color:var(--chart-remaining);margin:0 4px}
.trend-baseline span{display:block;margin-top:3px}
.change-list{margin-bottom:0!important}
.library-columns,.remaining-libraries li{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) 55px;gap:12px}
.library-columns{color:var(--muted);font-size:11px;padding:0 0 8px;border-bottom:1px solid var(--line)}
.remaining-libraries{list-style:none;margin:0;padding:0}
.remaining-libraries li{padding:11px 0;border-bottom:1px solid var(--line);align-items:start;font-size:12px}
.library-name{min-width:0;overflow-wrap:anywhere;font-weight:500}
.library-name small,.library-stage>small{display:block;font-size:10px;line-height:1.5;color:var(--muted);font-weight:400;margin-top:4px}
.library-name .negative{color:var(--warning)}
.stage-badge{display:inline-block;color:var(--muted);overflow-wrap:anywhere}
.stage-badge:before{content:'';display:inline-block;vertical-align:middle;width:7px;height:7px;margin-right:5px;border-radius:50%;background:var(--stage-color)}
.library-complexity{color:var(--muted)}
.library-field-label{display:none}
.library-count{font-size:11px;color:var(--muted);margin-top:9px}
.library-more{margin-top:10px}
.library-more>summary{font-size:12px;color:var(--brand);padding:5px 0}
.library-more[open]>summary{margin-bottom:4px}
.history-gaps{margin-top:9px;font-size:11px;color:var(--muted)}
.history-gaps summary{padding:3px 0;color:var(--brand)}
.history-gaps ul{list-style:none;margin:5px 0 0;padding:0}
.history-gaps li{display:flex;gap:14px;padding:5px 0;border-bottom:1px solid var(--line)}
.history-gaps time{flex-shrink:0}
.baseline-summary{display:flex;justify-content:space-between;align-items:start;gap:20px}
.baseline-summary h3{margin-bottom:4px}
.baseline-summary .detail-metrics{margin:0;flex-shrink:0}
.detail-baseline .history-gaps{margin-top:7px}
.detail-baseline .detail-library-section{margin-top:20px}
.detail-baseline .complexity-block{display:flex;gap:13px;align-items:center;flex-wrap:wrap;margin-bottom:16px}
.detail-baseline .complexity-block h3,.detail-baseline .complexity{margin:0}
.history-analytics{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}
.history-analytics .chart{max-height:235px}
.history-availability{grid-column:1/-1;display:flex;flex-direction:column;justify-content:center;gap:4px;padding:13px 18px;background:var(--surface-soft)}
.history-availability h2{font-size:13px}
.history-availability p{color:var(--muted);font-size:11px}
.history-overview{grid-template-columns:repeat(4,minmax(0,1fr))}
.delivery-provenance{margin:0 0 24px;padding:11px 15px;border:1px solid var(--line);border-radius:9px;background:var(--white);font-size:12px;color:var(--muted)}
.delivery-provenance>summary,.delivery-details>summary,.delivery-source>summary{color:var(--brand)}
.delivery-provenance>p{margin-top:10px}
.delivery-provenance dl,.delivery-source dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:5px 14px;font-size:11px;margin:10px 0 0}
.delivery-provenance dt,.delivery-source dt{color:var(--muted)}
.delivery-provenance dd,.delivery-source dd{margin:0;overflow-wrap:anywhere}
.delivery-people-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.delivery-people-table th{padding:12px 16px;background:var(--surface-soft);font-size:11px;font-weight:500;color:var(--muted);text-align:right}
.delivery-people-table td{padding:13px 16px;text-align:right;border-top:1px solid var(--line)}
.delivery-people-table th:first-child,.delivery-people-table td:first-child{text-align:left}
.delivery-person-detail td{background:var(--detail-surface);padding:18px 24px}
.delivery-records{list-style:none;margin:0;padding:0}
.delivery-records li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 18px;padding:10px 0;border-bottom:1px solid var(--line);font-size:12px}
.delivery-item-name{overflow-wrap:anywhere;font-weight:500}
.delivery-item-name>.small{margin-left:12px;font-size:11px}
.delivery-item-date{text-align:right;color:var(--muted)}
.delivery-kind{margin-left:10px;font-size:10px;color:var(--brand)}
.delivery-source{grid-column:1/-1;font-size:11px;color:var(--muted)}
.delivery-source>summary{display:list-item;width:max-content;max-width:100%}
.delivery-details{margin-top:12px;font-size:12px}
.delivery-details>.delivery-records{margin-top:6px}
@media(max-width:1150px){.page{padding:24px}
.analytics{grid-template-columns:1fr 1fr}
.stage-card{grid-column:1/-1}
.stage-layout{max-width:600px;margin:auto;min-height:0}
.stage-legend{display:grid;grid-template-columns:1fr 1fr;column-gap:20px}
.chart-head{min-height:0}
.people-table td,.people-table th{padding-left:10px;padding-right:10px}
}
@media(max-width:760px){.page{padding:20px 17px 30px}
.masthead{align-items:start;flex-wrap:wrap;gap:14px}
.header-actions{margin-left:auto;gap:8px;flex-wrap:wrap}
.header-actions button{font-size:11px;padding:5px 9px}
.brand strong{font-size:14px}
.intro{display:block;margin-top:26px}
h1{font-size:26px}
.intro>.small{display:block;margin-top:10px}
.snapshot-time{font-size:11px}
.time-controls{gap:8px}
.segments button{padding:6px 14px}
.analytics{grid-template-columns:1fr}
.stage-card{grid-column:auto}
.stage-legend{display:block}
.donut{width:43%}
.compact-overview{grid-template-columns:1fr 1fr;gap:10px}
.compact-overview article{padding:12px}
.compact-overview strong{font-size:25px}
.section-head{display:block}
.owner-filter{margin-top:12px;justify-content:space-between}
.people-table,.people-table tbody{display:block}
.people-table thead{display:none}
.member-sort-controls{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:0 0 10px;font-size:11px;color:var(--muted)}
.member-sort-controls>.sort-button{border:1px solid var(--line);padding:5px 8px;border-radius:7px;background:var(--white)}
.member-sort-controls>.sort-button[aria-pressed=true]{color:var(--brand);border-color:var(--brand-border);background:var(--brand-soft)}
.people-table tr.person-row{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));padding:14px;border-top:1px solid var(--line);gap:8px}
.people-table tr.person-row:first-child{border-top:0}
.people-table td{border:0;padding:0;text-align:left;min-width:0}
.people-table .name-cell{grid-column:1/11;order:-2;padding-bottom:5px}
.people-table .toggle-cell{grid-column:11/13;order:-1;text-align:right;padding-bottom:5px}
.people-table .metric{grid-column:span 3;order:1}
.people-table .metric[data-label="期间完成"],.people-table .metric[data-label="剩余数量"],.people-table .metric[data-label="已完成"]{grid-column:span 4;order:0}
.people-table .metric:before{content:attr(data-label);display:block;font-size:10px;color:var(--muted);margin-bottom:2px}
.person-detail,.person-detail td{display:block}
.person-detail td{padding:18px 15px}
.history-analytics{grid-template-columns:1fr}
.history-overview{grid-template-columns:1fr 1fr}
.history-availability{padding:18px}
.delivery-people-table th,.delivery-people-table td{padding-left:12px;padding-right:12px}
.delivery-person-detail td{padding:17px 14px}
.delivery-records li{grid-template-columns:1fr;gap:4px}
.delivery-item-date{text-align:left}
.delivery-provenance dl,.delivery-source dl{grid-template-columns:1fr;gap:3px}
.delivery-provenance dd,.delivery-source dd{margin-bottom:7px}
.baseline-summary{display:block}
.baseline-summary .detail-metrics{margin-top:12px}
.detail-grid{grid-template-columns:1fr;gap:24px}
.library-columns{display:none}
.remaining-libraries li{grid-template-columns:1fr auto;gap:5px 14px}
.library-name{grid-column:1/-1}
.library-field-label{display:inline;color:var(--muted);font-size:10px;margin-right:7px}
.library-stage>small{font-size:10px}
.library-complexity{text-align:right}
.history-header,.history-row{gap:8px}
.plan>summary{align-items:start}
.plan-summary strong{font-size:16px}
.method{grid-template-columns:1fr;gap:15px}
footer{display:block}
footer span{display:block}
.chart text{font-size:14px}
.chart-key{font-size:11px}
.connect-fields{flex-wrap:wrap}
.connect-fields button{flex-shrink:0}
.notice{font-size:12px}
}
.metric-reason{display:block;max-width:180px;color:var(--muted);font-size:10px;line-height:1.5}
.stage-legend li>span{overflow-wrap:anywhere;min-width:0}
.person strong{overflow-wrap:anywhere}

