:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#162335;background:#f3f6fa;font-size:16px}*{box-sizing:border-box}body{margin:0}button,select{font:inherit}button{cursor:pointer}.loading{padding:4rem;text-align:center}.shell{max-width:1600px;margin:auto;padding:0 32px 48px}.top{height:76px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #dce3eb}.brand{display:flex;align-items:center;gap:14px}.mark{width:38px;height:38px;border-radius:11px;background:#101b2c;color:#72e1c5;display:grid;place-items:center;font-size:24px;font-weight:800}.brand strong{display:block;font-size:19px;letter-spacing:-.02em}.brand small{display:block;font-size:12px;color:#6c7d8c;margin-top:2px}.topmeta{display:flex;align-items:center;gap:12px;font-size:13px;color:#546676}.pill{border:1px solid #cbd7e1;border-radius:99px;padding:7px 11px;background:#fff}.pill.warn{background:#fff8e7;border-color:#e9d59d;color:#8b6000}.heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin:30px 0 22px}.heading h1{margin:0;font-size:32px;letter-spacing:-.045em}.heading p{margin:8px 0 0;color:#667888;font-size:14px}.tabs{display:flex;gap:4px;padding:4px;border:1px solid #d9e2eb;border-radius:12px;background:#e9eef4}.tabs button{border:0;background:transparent;color:#617486;border-radius:9px;padding:10px 15px;font-size:14px;font-weight:700}.tabs button.active{background:#fff;color:#142437;box-shadow:0 2px 8px #14243715}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.card{background:#fff;border:1px solid #dfe6ee;border-radius:16px;box-shadow:0 4px 15px #19354a08}.kpi{padding:22px 24px;min-height:154px}.label{color:#657688;font-size:14px}.number{font-size:30px;font-weight:750;letter-spacing:-.045em;margin:13px 0 8px;white-space:nowrap}.sub{font-size:13px;color:#718090}.sub b{color:#314255}.up{color:#098b70!important}.down{color:#c65d43!important}.main{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(320px,.8fr);gap:16px;margin-top:16px}.stack{display:grid;gap:16px;align-content:start}.panel{padding:24px}.panel h2{font-size:19px;margin:0;letter-spacing:-.02em}.panel p{font-size:13px;color:#718090;margin:6px 0 0}.panel-head{display:flex;justify-content:space-between;align-items:start;gap:12px}.controls{display:flex;gap:7px;flex-wrap:wrap}.controls button{border:1px solid #dbe4ec;background:#fff;color:#536779;padding:8px 12px;border-radius:8px;font-size:13px}.controls button.active{background:#17283a;color:#fff;border-color:#17283a}.chartwrap{position:relative;margin-top:22px;min-height:290px}.chartwrap svg{display:block;width:100%;height:290px;overflow:visible}.chartwrap .grid{stroke:#e6edf2;stroke-width:1}.chartwrap text{font:12px Inter,-apple-system,"PingFang SC",sans-serif;fill:#8393a2}.chartwrap .hit{cursor:crosshair}.chartwrap .hit:focus{outline:none;fill:#ddeef080}.tooltip{position:absolute;z-index:4;min-width:180px;max-width:280px;background:#112437;color:#fff;border-radius:10px;padding:12px 14px;font-size:13px;line-height:1.7;box-shadow:0 12px 30px #17273735;pointer-events:none;transform:translate(-50%,-110%)}.tooltip strong{font-size:15px}.tip-date{color:#9bb5c5}.legend{display:flex;gap:16px;margin-top:10px;color:#667888;font-size:13px}.legend i{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:6px}.tablebox{overflow:auto;margin-top:20px;max-height:560px}table{width:100%;border-collapse:collapse;min-width:690px;font-variant-numeric:tabular-nums}th,td{text-align:right;padding:13px 10px;border-bottom:1px solid #e9eef3;font-size:14px;white-space:nowrap}th:first-child,td:first-child{text-align:left}th{position:sticky;top:0;background:#fff;color:#718092;font-size:12px;font-weight:700;z-index:1}tbody tr:hover{background:#f5fafb}td strong{color:#1a2c3d}.callout{padding:17px;background:#f4f8fa;border:1px solid #dde9eb;border-radius:11px;margin-top:18px;font-size:14px;line-height:1.65}.callout.warn{background:#fff9ed;border-color:#efdfb9;color:#6e511c}.statlist{margin-top:20px}.statrow{display:flex;justify-content:space-between;border-bottom:1px solid #e7edf1;padding:13px 0;font-size:14px}.statrow span{color:#687b8a}.statrow b{font-variant-numeric:tabular-nums}.source{display:block;color:#147c78;font-size:14px;text-decoration:none;margin-top:14px}.date-select{border:1px solid #d9e3ec;border-radius:8px;background:#fff;padding:8px 10px;color:#2b3c4b;max-width:170px}.progress{height:13px;background:#e8eef2;border-radius:99px;overflow:hidden;margin:20px 0 8px}.progress>i{display:block;height:100%;background:linear-gradient(90deg,#157a75,#5bd9b8)}.progresslabels{display:flex;justify-content:space-between;font-size:13px;color:#687a89}.task-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;margin-top:18px}.day{border:1px solid #dce5ec;background:#fff;border-radius:9px;padding:10px 5px;text-align:left;min-width:0}.day.active{border-color:#128d82;box-shadow:0 0 0 2px #b9e8dd}.day.future{background:#f7f9fb;color:#8796a5}.day .d{font-size:12px;color:#738595}.day .v{font-size:16px;font-weight:750;margin:6px 0 1px}.day .mini{font-size:11px;color:#80909f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-detail{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px}.task-detail>div{border:1px solid #e2eaf0;border-radius:9px;padding:12px}.task-detail span{display:block;font-size:12px;color:#728393}.task-detail b{display:block;margin-top:5px;font-size:18px}.foot{display:flex;justify-content:space-between;gap:14px;color:#81919f;font-size:12px;padding-top:28px}.empty{padding:35px;color:#6d7d8b;text-align:center}@media(max-width:1100px){.kpis{grid-template-columns:repeat(2,1fr)}.main{grid-template-columns:1fr}}@media(max-width:680px){.shell{padding:0 14px 32px}.top{height:auto;padding:14px 0;align-items:start}.topmeta{display:block;text-align:right}.topmeta .pill{display:block;margin:3px 0;font-size:11px}.brand strong{font-size:15px}.heading{display:block;margin-top:23px}.heading h1{font-size:27px}.tabs{margin-top:16px;width:max-content}.kpis{gap:8px}.kpi{min-height:128px;padding:15px}.number{font-size:22px}.panel{padding:17px}.panel-head{display:block}.controls{margin-top:12px}.task-grid{grid-template-columns:repeat(5,1fr)}.task-detail{grid-template-columns:1fr 1fr}.foot{display:block}.foot span{display:block;margin-bottom:5px}}
