:root{--ink:#14213d;--ink2:#1f2f52;--mut:#66728c;--line:#e1e6f0;--bg:#eef1f7;--panel:#fff;--blue:#2f4fd8;--blue-s:#e8edff;--teal:#0f9d8f;--slate:#8091b5;--amber:#f0a202;--coral:#e5484d;--violet:#7b5cf0;
--dg-bg:#dcfce7;--dg-fg:#166534;--do-bg:#ffedd5;--do-fg:#9a3412;--dr-bg:#fecaca;--dr-fg:#991b1b;--dd-bg:#7f1d1d;--dd-fg:#fff;--yellow:#fff2b2;
font-family:"Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,sans-serif}
*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font-size:14px;line-height:1.45;font-variant-numeric:tabular-nums}
button,input,select{font:inherit;color:inherit}button{cursor:pointer}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.shell{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh}
#rail{background:var(--ink);color:#d7def0;padding:22px 14px;display:flex;flex-direction:column;gap:22px;position:sticky;top:0;height:100vh;overflow:auto}
.brand{padding:0 8px;border-left:4px solid var(--blue);}
.brand b{display:block;font-size:21px;letter-spacing:-.4px;color:#fff;font-weight:700}
.brand span{font-size:12px;color:#9fb0d6}
#nav{display:flex;flex-direction:column;gap:2px}
#nav a{display:block;padding:9px 12px;border-radius:8px;color:#c4cfe9;cursor:pointer;text-decoration:none;font-weight:500}
#nav a:hover{background:var(--ink2);color:#fff}
#nav a.on{background:var(--blue);color:#fff;font-weight:600}
#nav .sep{height:1px;background:#2b3c63;margin:8px 6px}
.src{margin-top:auto;font-size:12px;color:#9fb0d6;padding:0 8px;line-height:1.6}
.src button{margin-top:8px;background:transparent;border:1px solid #3a4d7a;color:#dbe4fb;border-radius:8px;padding:6px 10px;width:100%}
.src button:hover{background:var(--ink2)}
main{padding:26px 34px 60px;min-width:0;max-width:1700px;width:100%}
.top{display:flex;align-items:flex-end;gap:16px;margin-bottom:18px}
.top h1{margin:0;font-size:26px;letter-spacing:-.5px;font-weight:700}
.top p{margin:3px 0 0;color:var(--mut);max-width:78ch}
.grow{flex:1}
.loadbar{height:3px;margin:-8px 0 12px;background:transparent;overflow:hidden;border-radius:3px}
.loadbar.on{background:linear-gradient(90deg,var(--blue),var(--teal),var(--blue));background-size:200% 100%;animation:ld 1s linear infinite}
@keyframes ld{to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.loadbar.on{animation:none}}
.filters{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px 18px;margin-bottom:22px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px 16px;align-items:end}
.filters.hide{display:none}
.field{display:flex;flex-direction:column;gap:5px;min-width:0}
.field>label,.lbl{font-size:12px;font-weight:600;color:#4a566f}
input,select{border:1px solid #d3dae8;background:#fff;border-radius:8px;padding:8px 10px;width:100%;min-width:0}
input:hover,select:hover{border-color:#b8c3dc}
details.multi{position:relative}
details.multi>summary{list-style:none;border:1px solid #d3dae8;border-radius:8px;padding:8px 10px;background:#fff;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
details.multi>summary::-webkit-details-marker{display:none}
.mpop{position:absolute;z-index:20;top:calc(100% + 4px);left:0;min-width:260px;max-height:320px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 36px rgba(20,33,61,.18);padding:10px}
.mpop .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}
.mpop label{display:flex;gap:6px;align-items:center;padding:4px 6px;border-radius:6px;cursor:pointer;font-weight:500}
.mpop label:hover{background:var(--blue-s)}.mpop input{width:auto}
.btn{border:1px solid #cfd7e8;background:#fff;border-radius:9px;padding:8px 14px;font-weight:600}
.btn:hover{background:var(--blue-s);border-color:#bccaf5}
.btn.p{background:var(--blue);border-color:var(--blue);color:#fff}.btn.p:hover{background:#2543b8}
.btn.sm{padding:5px 10px;font-size:12px}
.btn[disabled]{opacity:.5;cursor:default}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px 22px;margin-bottom:22px;min-width:0}
.ph{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}.ph h3{margin:0;font-size:16px;font-weight:650}.ph p{margin:2px 0 0;color:var(--mut);font-size:12.5px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:16px;margin-bottom:22px}
.kpi{background:var(--panel);border:1px solid var(--line);border-left:5px solid var(--c,var(--blue));border-radius:12px;padding:15px 18px}
.kpi .l{font-size:12.5px;color:var(--mut);font-weight:600}.kpi .v{font-size:27px;font-weight:700;letter-spacing:-.6px;margin-top:4px}.kpi .s{font-size:12px;color:var(--mut);margin-top:2px}
.k-b{--c:var(--blue)}.k-t{--c:var(--teal)}.k-g{--c:#22a06b}.k-o{--c:var(--amber)}.k-r{--c:var(--coral)}.k-s{--c:var(--slate)}.k-v{--c:var(--violet)}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.grid2>.panel{margin-bottom:22px}
@media(max-width:1250px){.grid2{grid-template-columns:1fr}.shell{grid-template-columns:200px 1fr}main{padding:20px}}
@media(max-width:820px){.shell{grid-template-columns:1fr}#rail{position:static;height:auto}}
.tabs{display:flex;gap:4px;background:#e1e6f2;border-radius:11px;padding:4px;width:max-content;max-width:100%;margin-bottom:20px;flex-wrap:wrap}
.tabs button{border:0;background:transparent;padding:8px 16px;border-radius:8px;font-weight:600;color:#55627f}
.tabs button.on{background:#fff;color:var(--blue);box-shadow:0 1px 4px rgba(20,33,61,.12)}
.pick{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap}.pick .field{min-width:150px}.pick .field.w{flex:1;min-width:260px}
.tw{overflow:auto;border:1px solid var(--line);border-radius:10px;max-height:640px}
table{border-collapse:separate;border-spacing:0;width:100%;font-size:12.5px;white-space:nowrap}
th{position:sticky;top:0;background:#f1f4fa;color:#3e4a66;font-weight:650;text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);cursor:pointer;z-index:1}
td{padding:8px 12px;border-bottom:1px solid #edf0f6}
th.n,td.n{text-align:right}
tbody tr:hover td{background:#f5f8ff}tbody tr.clk{cursor:pointer}
tr.start td{background:var(--yellow)!important}tr.term td{font-weight:700}
.dd{color:#7f1d1d}.dg{color:#15803d}.do{color:#c2570c}.dr{color:#dc2626}
td.dd,td.dg,td.do,td.dr,.heat td.dd,.heat td.dg,.heat td.do,.heat td.dr{font-weight:600;background:none}
.kpi .v.dd,.kpi .v.dg,.kpi .v.do,.kpi .v.dr{font-weight:700}
tr.xrow td{color:#98a2b8!important;text-decoration:line-through;background:#f7f8fb!important}
th[data-tip],.kpi .l[data-tip]{text-decoration:underline dotted #9aa6c0;text-underline-offset:3px;cursor:help}
.tools{display:flex;align-items:center;gap:10px;margin-bottom:8px;color:var(--mut);font-size:12.5px}.tools .grow{flex:1}
.more{margin-top:10px}
.mut{color:var(--mut)}
.badge{display:inline-block;min-width:26px;text-align:center;border-radius:6px;padding:1px 7px;color:#fff;font-weight:700;font-size:12px}
.chart{width:100%;height:auto;display:block}.chart text.ax{font-size:11px;fill:#66728c}.chart line.gl{stroke:#e8ecf4;stroke-width:1}.chart line.zero{stroke:#9aa6c0;stroke-width:1.2}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:8px;font-size:12px;color:#4a566f}.legend i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.hb{display:grid;gap:8px}.hbr{display:grid;grid-template-columns:minmax(150px,1.2fr) minmax(140px,2.4fr) 118px;gap:12px;align-items:center;font-size:12.5px}
.hbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hbl i{color:var(--mut);font-style:normal}
.hbb .bar{height:9px;border-radius:5px;margin:2px 0}.bar.t{background:var(--slate)}.bar.r{background:var(--teal)}
.hbv{text-align:right;font-weight:650}.hbv small{display:block;color:var(--mut);font-weight:500}
.heat{border-collapse:separate;border-spacing:2px;font-size:11.5px}.heat th{position:static;background:none;cursor:default;padding:4px 6px;text-align:center;border:0}
.heat td{text-align:center;padding:6px 4px;min-width:42px;border:0;border-bottom:1px solid #edf0f6}.heat th.rl{text-align:left}
.note{background:#f1f5ff;color:#35509f;border-radius:10px;padding:10px 14px;margin-bottom:16px;font-size:13px}.note.err{background:#fff0f0;color:#9c2020}
.empty{padding:34px;text-align:center;color:var(--mut)}
.gantt{overflow:auto;border:1px solid var(--line);border-radius:10px;max-height:520px}
.gantt svg{display:block}.gantt .row{cursor:pointer}.gantt .row:hover rect.bg{fill:#f2f5ff}.gantt .row.on rect.bg{fill:#e6ecff}
.pillrow{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 14px}.pill{background:#fff;border:1px solid var(--line);border-radius:99px;padding:3px 12px;font-size:12.5px}
.exp{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px}
.exp .panel{margin:0;display:flex;flex-direction:column;gap:10px}.exp h3{margin:0}.exp p{margin:0;color:var(--mut)}.exp .opts{display:flex;gap:14px;flex-wrap:wrap;align-items:center}.exp .opts label{display:flex;gap:6px;align-items:center}.exp .opts input{width:auto}

#tip{position:fixed;z-index:60;display:none;max-width:340px;background:#14213d;color:#eef2fb;padding:9px 12px;border-radius:9px;font-size:12.5px;line-height:1.45;font-weight:500;box-shadow:0 10px 28px rgba(20,33,61,.3);pointer-events:none;text-transform:none;white-space:normal}
#modal{position:fixed;inset:0;z-index:50;background:rgba(20,33,61,.45);display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;overflow:auto}
#modal .box{background:#fff;border-radius:16px;padding:24px 26px;width:min(640px,100%);box-shadow:0 24px 60px rgba(20,33,61,.35)}
#modal h3{margin:0 0 6px;font-size:18px}.mgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:16px 0}.mgrid small{color:var(--mut);font-size:11.5px}
.mact{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.chk{display:flex;gap:6px;align-items:center;font-weight:500;color:#4a566f}.chk input{width:auto}
.help{display:grid;grid-template-columns:230px minmax(0,1fr);gap:28px;align-items:start}
.help nav{position:sticky;top:18px;display:flex;flex-direction:column;gap:2px}.help nav a{padding:6px 10px;border-radius:7px;color:#44516b;cursor:pointer;font-weight:500}.help nav a:hover{background:var(--blue-s)}
.help section{margin-bottom:30px;max-width:92ch}.help h2{font-size:19px;margin:0 0 10px;letter-spacing:-.3px}.help h3{font-size:14.5px;margin:18px 0 4px}
.help p,.help li{color:#2c3856}.help ul{padding-left:20px}.help dt{font-weight:650;margin-top:10px}.help dd{margin:2px 0 0 0;color:#44516b}
.help code{background:#eef1f7;border-radius:5px;padding:1px 6px;font-size:12.5px}
@media(max-width:1100px){.help{grid-template-columns:1fr}.help nav{position:static;flex-direction:row;flex-wrap:wrap}}
.cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}.cgrid .c{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.cgrid input[type=color]{width:42px;height:34px;padding:2px;border-radius:8px}
.swatch{display:inline-flex;align-items:center;gap:8px}
.sm-note{font-size:12.5px;color:var(--mut)}
