:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f4f2;--surface:#fff;--surface-2:#f8f8f6;--surface-3:#efefec;--border:#e3e2de;--border-strong:#cfcdc7;--ink:#141413;--ink-2:#4e4d49;--ink-3:#7d7b75;--ink-inv:#fff;--link:#2563c9;--focus:#2a78d6;--btn:#141413;--btn-ink:#fff;--grid:#ecebe7;--axis:#b9b7b0;--s1:#2a78d6;--s2:#eb6834;--s3:#1baf7a;--s4:#eda100;--s5:#e87ba4;--s6:#008300;--s7:#6250d6;--s8:#e34948;--seq-1:#cde2fb;--seq-2:#9ec5f4;--seq-3:#6da7ec;--seq-4:#3987e5;--seq-5:#256abf;--seq-6:#184f95;--seq-7:#0d366b;--div-neg:#d95926;--div-mid:#e7e5df;--div-pos:#2a78d6;--good:#1f7a4a;--good-bg:#e6f3eb;--warn:#9a5b00;--warn-bg:#fdf1dc;--bad:#b42335;--bad-bg:#fbe7ea;--info:#445468;--info-bg:#eaeef3;--p-actual:#4e4d49;--p-actual-bg:#ecebe7;--p-alloc:#5a45c9;--p-alloc-bg:#ece9fb;--p-fc:#1f62b8;--p-fc-bg:#e3eefb;--p-sim:#9a5b00;--p-sim-bg:#fdf1dc;--shadow:0 1px 2px #1414130d, 0 1px 1px #14141308;--shadow-lg:0 12px 32px #14141324, 0 2px 6px #14141314;--radius:10px;--radius-sm:6px;--side:232px;--font:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#111110;--surface:#1a1a19;--surface-2:#20201e;--surface-3:#2a2a27;--border:#2f2f2c;--border-strong:#3d3d39;--ink:#f0efec;--ink-2:#c3c2b7;--ink-3:#8f8e86;--ink-inv:#141413;--link:#79a8f0;--btn:#f0efec;--btn-ink:#141413;--grid:#282826;--axis:#4a4a46;--s1:#3987e5;--s2:#d95926;--s3:#199e70;--s4:#c98500;--s5:#d55181;--s6:#008300;--s7:#9085e9;--s8:#e66767;--seq-1:#0d366b;--seq-2:#104281;--seq-3:#184f95;--seq-4:#256abf;--seq-5:#3987e5;--seq-6:#6da7ec;--seq-7:#9ec5f4;--div-neg:#d95926;--div-mid:#33332f;--div-pos:#3987e5;--good:#5cc28b;--good-bg:#16301f;--warn:#e0a54a;--warn-bg:#33270f;--bad:#f07a85;--bad-bg:#3a1a1f;--info:#a9b6c7;--info-bg:#222a33;--p-actual:#c3c2b7;--p-actual-bg:#2a2a27;--p-alloc:#b0a6f5;--p-alloc-bg:#2a2547;--p-fc:#8fb8f2;--p-fc-bg:#1a2b44;--p-sim:#e0a54a;--p-sim-bg:#33270f;--shadow:0 1px 2px #0006;--shadow-lg:0 12px 32px #00000080}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);font:13.5px/1.45 var(--font);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11", "ss01";margin:0}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;color:inherit}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:600}h1{font-size:21px}h2{font-size:15px}h3{font-size:13.5px}.num,td.r,.kpi-value{font-variant-numeric:tabular-nums}.muted{color:var(--ink-3)}.ink2{color:var(--ink-2)}.small{font-size:12px}.tiny{font-size:11px}.good{color:var(--good)}.bad{color:var(--bad)}.warn{color:var(--warn)}.nowrap{white-space:nowrap}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.spacer{flex:1}.stack{flex-direction:column;gap:16px;display:flex}.stack.tight{gap:8px}html,body,#root{height:100%;overflow:hidden}.app{grid-template-columns:var(--side) minmax(0, 1fr);height:100vh;transition:grid-template-columns .18s;display:grid;overflow:hidden}.app.collapsed{--side:64px}.side{background:var(--surface);border-right:1px solid var(--border);z-index:30;flex-direction:column;height:100vh;display:flex;position:sticky;top:0;overflow:hidden}.side-scroll{flex:1;padding-bottom:8px;overflow:hidden auto}.brand{border-bottom:1px solid var(--border);flex:none;align-items:center;gap:10px;height:56px;padding:0 14px;display:flex}.brand-mark{background:var(--ink);width:30px;height:30px;color:var(--ink-inv);letter-spacing:.02em;border-radius:8px;flex:none;place-items:center;font-size:12px;font-weight:700;display:grid}.brand-name{white-space:nowrap;font-size:13.5px;font-weight:650;line-height:1.2}.brand-sub{color:var(--ink-3);white-space:nowrap;font-size:11px}.nav{flex-direction:column;gap:1px;padding:8px 10px;display:flex}.nav-sec{text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3);white-space:nowrap;padding:14px 10px 5px;font-size:10.5px;font-weight:600}.nav a{height:34px;color:var(--ink-2);white-space:nowrap;border-radius:7px;align-items:center;gap:10px;padding:0 10px;font-weight:500;display:flex;position:relative}.nav a:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}.nav a.on{background:var(--surface-3);color:var(--ink);font-weight:600}.nav a.on:before{content:"";background:var(--ink);border-radius:0 3px 3px 0;width:3px;position:absolute;top:8px;bottom:8px;left:-10px}.nav a .ico{opacity:.85;flex:none;width:17px;height:17px}.nav a .tag{background:var(--ink);color:var(--ink-inv);border-radius:99px;margin-left:auto;padding:1px 6px;font-size:10px;font-weight:600}.nav a .tag.new{background:var(--p-sim-bg);color:var(--p-sim)}.nav a .cnt{background:var(--surface-3);min-width:20px;height:18px;color:var(--ink-2);border-radius:9px;place-items:center;margin-left:auto;padding:0 6px;font-size:11px;font-weight:600;display:grid}.nav a.on .cnt{background:var(--surface)}.app.collapsed .nav-sec,.app.collapsed .nav a .lbl,.app.collapsed .nav a .tag,.app.collapsed .nav a .cnt,.app.collapsed .brand-text,.app.collapsed .side-foot .lbl{display:none}.app.collapsed .nav-sec+a,.app.collapsed .nav a{justify-content:center;padding:0}.app.collapsed .nav{gap:4px;padding-top:12px}.side-foot{border-top:1px solid var(--border);flex-direction:column;flex:none;gap:8px;padding:10px;display:flex}.sim-note{color:var(--warn);background:var(--warn-bg);border-radius:7px;padding:7px 9px;font-size:11px;line-height:1.35}.collapse-btn{height:30px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:8px;padding:0 10px;font-size:12px;display:flex}.collapse-btn:hover{background:var(--surface-2);color:var(--ink)}.collapse-btn svg{flex:none;width:16px;height:16px}.app.collapsed .collapse-btn{justify-content:center;padding:0}.main{flex-direction:column;min-width:0;height:100vh;display:flex;overflow:hidden}.topbar{background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);z-index:20;flex:none;align-items:center;gap:10px;height:56px;padding:0 24px;display:flex}.topbar .section{white-space:nowrap;margin-right:6px;font-size:13.5px;font-weight:600}.filterbar{border:1px solid var(--border-strong);background:var(--surface);border-radius:8px;align-items:center;gap:0;min-width:0;height:34px;padding:0 2px;display:flex}.filterbar>*+*{border-left:1px solid var(--border)}.filterbar .ctl{background:0 0;height:30px;box-shadow:none!important;border:0!important}.filterbar .ctl:hover{background:var(--surface-2)}.filterbar .fb-item{align-items:center;height:22px;padding:0 2px;display:flex}.filterbar .switch{padding:0 10px}.icon-btn{width:34px;height:34px;color:var(--ink-2);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;place-items:center;display:grid}.icon-btn:hover{background:var(--surface-2);color:var(--ink)}.icon-btn svg{width:17px;height:17px}.status-chip{background:var(--warn-bg);height:26px;color:var(--warn);white-space:nowrap;border-radius:99px;align-items:center;gap:6px;padding:0 10px;font-size:11.5px;font-weight:600;display:inline-flex}.status-chip:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.content{scroll-behavior:smooth;flex:1;padding:24px 28px 64px;scroll-padding:24px;overflow:hidden auto}.page{flex-direction:column;gap:18px;max-width:1440px;margin:0 auto;display:flex}.page-head{flex-wrap:wrap;align-items:flex-end;gap:16px;padding-bottom:2px;display:flex}.page-head .titles{flex:1;min-width:260px}.page-head h1{letter-spacing:-.02em;font-size:22px}.page-head .sub{color:var(--ink-3);margin-top:3px}.crumbs{color:var(--ink-3);align-items:center;gap:6px;margin-bottom:6px;font-size:12px;display:flex}.crumbs a{color:var(--ink-3)}.crumbs a:hover{color:var(--ink)}.btn{border:1px solid var(--border-strong);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:7px;justify-content:center;align-items:center;gap:6px;height:32px;padding:0 12px;font-weight:500;line-height:1;transition:background .12s,border-color .12s,box-shadow .12s;display:inline-flex}.btn:hover{background:var(--surface-2);border-color:var(--axis)}.btn:active{transform:translateY(.5px)}.btn.primary{background:var(--btn);color:var(--btn-ink);border-color:var(--btn)}.btn.primary:hover{opacity:.88;background:var(--btn)}.btn.danger{color:var(--bad)}.btn.danger-solid{background:var(--bad);border-color:var(--bad);color:#fff}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--surface-2)}.btn.sm{border-radius:6px;height:26px;padding:0 9px;font-size:12px}.btn:disabled{opacity:.45;cursor:not-allowed}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.seg{background:var(--surface-3);border-radius:8px;gap:2px;padding:2px;display:inline-flex}.seg button{cursor:pointer;height:28px;color:var(--ink-2);white-space:nowrap;background:0 0;border:0;border-radius:6px;padding:0 11px;font-weight:500}.seg button:hover{color:var(--ink)}.seg button.on{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 2px #0000001f}.seg.sm button{height:24px;padding:0 9px;font-size:12px}label.field,.field{color:var(--ink-2);flex-direction:column;gap:5px;min-width:0;font-size:12px;font-weight:500;display:flex}.field-label{color:var(--ink-2);font-size:12px;font-weight:500}.field-hint{color:var(--ink-3);margin-top:4px;font-size:11px;line-height:1.35}.dot{border-radius:50%;flex:none;width:9px;height:9px;display:inline-block}.chip{background:var(--surface-3);color:var(--ink-2);white-space:nowrap;border-radius:99px;align-items:center;gap:6px;padding:2px 8px;font-size:11.5px;font-weight:500;display:inline-flex}input,select,textarea,button{appearance:none;font:inherit;color:inherit}input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ctl{border:1px solid var(--border-strong);background:var(--surface);min-width:0;height:32px;color:var(--ink);border-radius:7px;align-items:center;gap:8px;padding:0 10px;transition:border-color .12s,box-shadow .12s;display:inline-flex}.ctl:hover{border-color:var(--axis)}.ctl:focus-within,.ctl.open,button.ctl:focus-visible{border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--focus) 18%, transparent);outline:none}.ctl.sm{border-radius:6px;height:26px;padding:0 8px;font-size:12px}.ctl input{min-width:0;height:100%;color:var(--ink);background:0 0;border:0;outline:0;flex:1;padding:0}.ctl input::placeholder{color:var(--ink-3)}button.ctl.select{cursor:pointer;text-align:left;font-weight:500}.ctl-val{text-overflow:ellipsis;white-space:nowrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex;overflow:hidden}.ctl-val.ph{color:var(--ink-3);font-weight:400}.ctl-prefix{color:var(--ink-3);white-space:nowrap;font-weight:500}.ctl-affix{color:var(--ink-3);white-space:nowrap;font-size:12px}.ctl-icon{width:14px;height:14px;color:var(--ink-3);flex:none}.ctl .chev{width:14px;height:14px;color:var(--ink-3);flex:none;transition:transform .15s}.ctl.open .chev{transform:rotate(180deg)}.ctl-clear{background:var(--surface-3);cursor:pointer;width:16px;height:16px;color:var(--ink-2);border:0;border-radius:50%;place-items:center;padding:0;font-size:12px;line-height:1;display:grid}.ctl.num{padding-right:0}.ctl.num input{text-align:right;font-variant-numeric:tabular-nums}.num-steps{border-left:1px solid var(--border);flex-direction:column;height:100%;display:flex}.num-steps button{cursor:pointer;width:22px;color:var(--ink-3);background:0 0;border:0;flex:1;place-items:center;padding:0;display:grid}.num-steps button+button{border-top:1px solid var(--border)}.num-steps button:hover{background:var(--surface-2);color:var(--ink)}.num-steps svg{width:11px;height:11px}.layer-scrim{z-index:200;position:fixed;inset:0}.menu{z-index:201;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg);border-radius:10px;flex-direction:column;animation:.12s ease-out menu-in;display:flex;position:fixed;overflow:hidden}.menu.up{animation-name:menu-in-up}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)}}@keyframes menu-in-up{0%{opacity:0;transform:translateY(4px)}}.menu-list{outline:none;padding:4px;overflow-y:auto}.menu-list.pad{padding:6px}.menu-search{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:8px 10px;display:flex}.menu-search svg{width:14px;height:14px;color:var(--ink-3);flex:none}.menu-search input{background:0 0;border:0;outline:0;flex:1}.menu-group{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);padding:8px 10px 4px;font-size:10.5px;font-weight:600}.menu-empty{color:var(--ink-3);text-align:center;padding:12px;font-size:12px}.menu-foot{border-top:1px solid var(--border);justify-content:flex-end;margin-top:4px;padding-top:4px;display:flex}.opt{cursor:pointer;min-height:32px;color:var(--ink);border-radius:6px;align-items:center;gap:9px;padding:5px 9px;display:flex}.opt.hi,.opt:hover{background:var(--surface-2)}.opt.sel{font-weight:600}.opt.dis{opacity:.45;cursor:not-allowed}.opt-main{flex-direction:column;flex:1;min-width:0;display:flex}.opt-hint{color:var(--ink-3);font-size:11px;font-weight:400}.opt-tick svg,.cbox svg{width:14px;height:14px}.opt-tick{color:var(--ink);display:grid}.menu-item{cursor:pointer;text-align:left;width:100%;min-height:32px;color:var(--ink);background:0 0;border:0;border-radius:6px;align-items:center;gap:9px;padding:0 9px;display:flex}.menu-item:hover{background:var(--surface-2)}.menu-sep{background:var(--border);height:1px;margin:4px 2px}.cbox{border:1.5px solid var(--axis);background:var(--surface);cursor:pointer;width:16px;height:16px;color:var(--ink-inv);border-radius:4px;flex:none;place-items:center;transition:background .12s,border-color .12s;display:grid}.cbox:hover{border-color:var(--ink-2)}.cbox.on,.cbox.mixed{background:var(--ink);border-color:var(--ink)}.cbox.dis{opacity:.4;cursor:not-allowed}.check{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;display:inline-flex}.check.dis{cursor:not-allowed;color:var(--ink-3)}.switch{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--ink-2);white-space:nowrap;align-items:center;gap:8px;font-size:12.5px;font-weight:500;display:inline-flex}.sw-track{background:var(--axis);border-radius:9px;flex:none;width:30px;height:18px;transition:background .15s;position:relative}.sw-track.on{background:var(--ink)}.sw-thumb{background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0000004d}.sw-track.on .sw-thumb{transform:translate(12px)}:root[data-theme=dark] .sw-track.on .sw-thumb{background:var(--ink-inv)}.slider-field{flex-direction:column;gap:4px;display:flex}.slider-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.slider-val{font-variant-numeric:tabular-nums;color:var(--ink-2);border-radius:4px;padding:1px 6px;font-size:12px;font-weight:600}.slider-val.changed{background:var(--p-sim-bg);color:var(--p-sim)}.slider{cursor:pointer;touch-action:none;height:22px;position:relative}.slider-rail{background:var(--surface-3);border-radius:2px;height:4px;position:absolute;top:9px;left:0;right:0}.slider-fill{background:var(--ink);border-radius:2px;height:4px;position:absolute;top:9px}.slider-zero{background:var(--axis);border-radius:1px;width:2px;height:12px;margin-left:-1px;position:absolute;top:5px}.slider-mark{background:var(--axis);width:1px;height:4px;position:absolute;top:15px}.slider-thumb{background:var(--surface);border:2px solid var(--ink);border-radius:50%;outline:none;width:16px;height:16px;margin-left:-8px;transition:transform .1s;position:absolute;top:3px;box-shadow:0 1px 3px #0003}.slider:hover .slider-thumb,.slider.drag .slider-thumb,.slider-thumb:focus-visible{box-shadow:0 0 0 4px color-mix(in srgb, var(--focus) 20%, transparent);transform:scale(1.15)}.cal-wrap{padding:4px}.cal-nav{align-items:center;gap:6px;padding:2px 2px 8px;display:flex}.cal-months{grid-template-columns:1fr 1fr;gap:16px;display:grid}.cal-title{text-align:center;margin-bottom:6px;font-size:12.5px;font-weight:600}.cal-grid{grid-template-columns:repeat(7,1fr);gap:2px 0;display:grid}.cal-wd{color:var(--ink-3);text-align:center;padding:2px 0 4px;font-size:10.5px;font-weight:600}.cal-day{cursor:pointer;font-variant-numeric:tabular-nums;height:30px;color:var(--ink);background:0 0;border:0;border-radius:0;font-size:12px}.cal-day:hover:not(:disabled){background:var(--surface-2);border-radius:6px}.cal-day.in{background:var(--surface-3)}.cal-day.end{background:var(--ink);color:var(--ink-inv);border-radius:6px}.cal-day:disabled{color:var(--ink-3);opacity:.4;cursor:default}.disc{border-top:1px solid var(--border)}.disc-head{cursor:pointer;width:100%;color:var(--ink-2);text-align:left;background:0 0;border:0;align-items:center;gap:6px;padding:8px 0;font-size:12.5px;font-weight:500;display:flex}.disc-head:hover{color:var(--ink)}.disc-chev{flex:none;width:14px;height:14px;transition:transform .15s}.disc.open .disc-chev{transform:rotate(90deg)}.disc-body{padding:0 0 10px}.modal-scrim{z-index:300;background:#0f0f0e6b;place-items:center;padding:16px;animation:.12s fade;display:grid;position:fixed;inset:0}.modal{background:var(--surface);width:min(440px,100%);box-shadow:var(--shadow-lg);border:1px solid var(--border);border-radius:14px;padding:20px 22px;animation:.14s menu-in}.modal h3{font-size:16px}.modal-body{color:var(--ink-2);margin-top:8px;font-size:13px;line-height:1.5}@keyframes fade{0%{opacity:0}}.gtip{z-index:400;background:var(--ink);max-width:300px;color:var(--ink-inv);pointer-events:none;box-shadow:var(--shadow-lg);white-space:normal;border-radius:6px;padding:6px 9px;font-size:11.5px;line-height:1.4;animation:.1s fade;position:fixed;transform:translate(-50%,-100%)}.gtip.below{transform:translate(-50%)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:content-box;border:2px solid #0000;border-radius:8px}::-webkit-scrollbar-thumb:hover{background-color:var(--axis)}::-webkit-scrollbar-track{background:0 0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0}.card-head{flex-wrap:wrap;align-items:center;gap:10px;padding:12px 16px 0;display:flex}.card-head .t{flex:1;min-width:160px}.card-head .s{color:var(--ink-3);margin-top:1px;font-size:12px}.card-body{padding:12px 16px 16px}.card-body.flush{padding:8px 0 0}.grid{gap:16px;display:grid}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g-2-1{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.g-1-2{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}.g-3-2{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}.kpis{grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:12px;display:grid}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);text-align:left;flex-direction:column;gap:4px;min-width:0;padding:12px 14px;display:flex}button.kpi{cursor:pointer}button.kpi:hover{border-color:var(--border-strong)}.kpi-label{color:var(--ink-2);align-items:center;gap:6px;font-size:12px;font-weight:500;display:flex}.kpi-value{letter-spacing:-.02em;font-size:22px;font-weight:650;line-height:1.15}.kpi-value.lg{font-size:30px}.kpi-sub{color:var(--ink-3);flex-wrap:wrap;align-items:center;gap:6px;font-size:11.5px;display:flex}.delta{white-space:nowrap;font-size:11.5px;font-weight:600}.delta.up.goodish,.delta.down.goodish{color:var(--good)}.delta.up.badish,.delta.down.badish{color:var(--bad)}.delta.flat{color:var(--ink-3)}.prov{letter-spacing:.02em;white-space:nowrap;text-transform:uppercase;border-radius:4px;align-items:center;gap:4px;padding:1px 6px;font-size:10.5px;font-weight:600;display:inline-flex}.prov:before{content:"";background:currentColor;border-radius:1px;width:6px;height:6px}.prov.Actual{color:var(--p-actual);background:var(--p-actual-bg)}.prov.Allocated{color:var(--p-alloc);background:var(--p-alloc-bg)}.prov.Allocated:before{border-radius:50%}.prov.Forecast{color:var(--p-fc);background:var(--p-fc-bg)}.prov.Forecast:before{background:0 0;border:1.5px dashed;width:5px;height:5px}.prov.Simulated{color:var(--p-sim);background:var(--p-sim-bg)}.prov.Simulated:before{transform:rotate(45deg)}.sev{white-space:nowrap;border-radius:4px;align-items:center;gap:5px;padding:2px 7px;font-size:11px;font-weight:600;display:inline-flex}.sev.critical{color:var(--bad);background:var(--bad-bg)}.sev.warning{color:var(--warn);background:var(--warn-bg)}.sev.info{color:var(--info);background:var(--info-bg)}.sev.good{color:var(--good);background:var(--good-bg)}.sev svg{width:12px;height:12px}.tbl-wrap{overflow-x:auto}table.tbl{border-collapse:collapse;width:100%;font-size:12.5px}.tbl th{text-align:left;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);white-space:nowrap;background:var(--surface);z-index:1;padding:7px 10px;font-size:11px;font-weight:600;position:sticky;top:0}.tbl th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.tbl th.sortable:hover{color:var(--ink)}.tbl td{border-bottom:1px solid var(--border);vertical-align:middle;padding:7px 10px}.tbl tr:last-child td{border-bottom:0}.tbl th.r,.tbl td.r{text-align:right}.tbl tbody tr.click{cursor:pointer}.tbl tbody tr.click:hover td{background:var(--surface-2)}.tbl tbody tr.sel td{background:var(--surface-3)}.tbl tfoot td{border-top:1px solid var(--border-strong);border-bottom:0;font-weight:600}.tbl.dense td,.tbl.dense th{padding:5px 8px}.card-body.flush .tbl th:first-child,.card-body.flush .tbl td:first-child{padding-left:16px}.card-body.flush .tbl th:last-child,.card-body.flush .tbl td:last-child{padding-right:16px}.bar-cell{position:relative}.bar-cell .b{background:var(--seq-2);opacity:.55;border-radius:0 3px 3px 0;height:14px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.bar-cell span{position:relative}.chart{width:100%;position:relative}.chart svg{display:block;overflow:visible}.chart text{fill:var(--ink-3);font-size:11px;font-family:var(--font)}.chart .tick line,.chart .grid line{stroke:var(--grid)}.chart .axis-line{stroke:var(--axis)}.tip{pointer-events:none;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:30;white-space:nowrap;border-radius:8px;min-width:140px;padding:8px 10px;font-size:12px;position:absolute}.tip .tt{margin-bottom:4px;font-weight:600}.tip .tr{justify-content:space-between;align-items:center;gap:8px;display:flex}.tip .tr .k{color:var(--ink-2);align-items:center;gap:6px;display:flex}.tip .tr .v{font-variant-numeric:tabular-nums;font-weight:600}.legend{color:var(--ink-2);flex-wrap:wrap;gap:4px 14px;font-size:12px;display:flex}.legend .li{align-items:center;gap:6px;display:inline-flex}.legend .sw{border-radius:2px;width:12px;height:3px}.legend .sw.box{border-radius:2px;width:10px;height:10px}.legend .sw.dash{border-top:2px dashed;height:0;background:0 0!important}.tabs{border-bottom:1px solid var(--border);gap:2px;display:flex;overflow-x:auto}.tabs button{cursor:pointer;color:var(--ink-3);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 12px;font-weight:500}.tabs button:hover{color:var(--ink)}.tabs button.on{color:var(--ink);border-bottom-color:var(--ink)}.alert-row{border-top:1px solid var(--border);align-items:flex-start;gap:10px;padding:10px 16px;display:flex}.alert-row:first-child{border-top:0}.alert-row .body{flex:1;min-width:0}.alert-row .title{font-weight:600}.alert-row .detail{color:var(--ink-2);margin-top:2px;font-size:12px}.alert-row .meta{color:var(--ink-3);flex-wrap:wrap;gap:10px;margin-top:4px;font-size:11.5px;display:flex}.callout{border:1px solid var(--border);border-left:3px solid var(--ink);background:var(--surface-2);border-radius:var(--radius-sm);color:var(--ink-2);padding:10px 12px;font-size:12.5px}.callout.alloc{border-left-color:var(--p-alloc)}.callout.sim{border-left-color:var(--p-sim)}.callout.fc{border-left-color:var(--p-fc)}.callout b{color:var(--ink)}.kv{grid-template-columns:auto 1fr;gap:6px 16px;font-size:12.5px;display:grid}.kv dt{color:var(--ink-3)}.kv dd{margin:0;font-weight:500}.flow{align-items:stretch;gap:0;padding-bottom:4px;display:flex;overflow-x:auto}.flow .step{border:1px solid var(--border);background:var(--surface-2);border-radius:0;flex:1;min-width:118px;padding:10px 12px;position:relative}.flow .step:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.flow .step:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.flow .step+.step{border-left:0}.flow .step .k{color:var(--ink-3);font-size:11px;font-weight:500}.flow .step .v{font-variant-numeric:tabular-nums;margin-top:2px;font-size:15px;font-weight:650}.flow .step .x{color:var(--ink-3);margin-top:2px;font-size:11px}.flow .step.on{background:var(--surface);border-color:var(--ink);z-index:1}.flow .step.done{background:var(--surface)}.flow .step.done .k:before{content:"✓ ";color:var(--good);font-weight:700}.empty{text-align:center;color:var(--ink-3);padding:32px}.splash{height:100%;color:var(--ink-3);place-items:center;display:grid}.hl{outline:2px solid var(--focus);outline-offset:3px;border-radius:var(--radius);transition:outline-color .3s}.pill-k{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);font-size:10.5px;font-weight:600}.scroll-y{max-height:420px;overflow-y:auto}.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11.5px}hr.sep{border:0;border-top:1px solid var(--border);margin:4px 0}.tour{z-index:100;background:var(--surface);border:1px solid var(--border-strong);width:380px;box-shadow:var(--shadow-lg);border-radius:12px;flex-direction:column;gap:8px;padding:14px 16px;display:flex;position:fixed;bottom:20px;right:20px}.tour .step-n{color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:600}.tour h3{font-size:15px}.tour p{color:var(--ink-2);margin:0;font-size:12.5px}.tour .bar{background:var(--surface-3);border-radius:2px;height:3px;overflow:hidden}.tour .bar i{background:var(--ink);height:100%;display:block}@media (max-width:1180px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.g3,.g-2-1,.g-1-2,.g-3-2{grid-template-columns:minmax(0,1fr)}.topbar .section{display:none}}.only-narrow{display:none!important}@media (max-width:860px){.app,.app.collapsed{grid-template-columns:minmax(0,1fr)}.side{display:none}.side.open{z-index:90;width:264px;box-shadow:var(--shadow-lg);display:flex;position:fixed;inset:0 auto 0 0}.app.collapsed .side.open .lbl,.app.collapsed .side.open .brand-text,.app.collapsed .side.open .nav-sec{display:initial}.g2,.g4{grid-template-columns:minmax(0,1fr)}.content{padding:16px 16px 64px}.topbar{gap:6px;padding:0 12px;overflow-x:auto}.only-narrow{display:grid!important}.hide-narrow{display:none!important}.tour{width:auto;left:12px;right:12px}}button.ctl.select,.topbar>*{flex-shrink:0}.ev-grid{grid-template-columns:minmax(320px,400px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.ev-grid>.ev-left{position:sticky;top:0}@media (max-width:1180px){.ev-grid{grid-template-columns:minmax(0,1fr)}.ev-grid>.ev-left{position:static}}@media (max-width:860px){.topbar{flex-wrap:wrap;row-gap:8px;height:auto;padding:8px 12px;overflow:visible}.topbar .filterbar{flex-shrink:0;order:10;width:100%;overflow-x:auto}.topbar .filterbar::-webkit-scrollbar{display:none}.page-head .titles{min-width:0}.page-head{flex-direction:column;align-items:stretch;gap:10px}.page-head .titles{flex:none;width:100%}.page-head h1{font-size:20px}.kpis,.page .kpis[style]{gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))!important}.kpi{padding:10px 12px}.kpi-value{font-size:18px}.kpi-value.lg{font-size:22px}.card-head{padding:12px 12px 0}.card-body{padding:10px 12px 12px}}.topbar .filterbar{flex-shrink:0}@media (max-width:1440px){.topbar .section{display:none}}@media (max-width:1360px){.status-chip .chip-long{display:none}}@media (max-width:1240px){.period-hint{display:none}}@media (max-width:860px){.topbar .filterbar{flex-shrink:0}.period-hint{display:inline}}@media (max-width:1180px) and (min-width:861px){.status-chip,.topbar .btn.primary .hide-narrow{display:none}.topbar{gap:6px;padding:0 16px}}.lang-btn{min-width:44px;padding:0 8px;font-weight:600}:root[lang=zh-CN] body{font-family:Inter,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans SC,ui-sans-serif,system-ui,sans-serif}:root[lang=zh-CN] .nav-sec,:root[lang=zh-CN] .tbl th,:root[lang=zh-CN] .pill-k{letter-spacing:.02em}@media (max-width:1600px){.topbar .section{display:none}}@media (max-width:1480px){.status-chip .chip-long{display:none}}@media (max-width:1300px){.period-hint{display:none}}@media (max-width:860px){.period-hint{display:inline}}:root[lang=zh-CN] .tbl th,:root[lang=zh-CN] .nav-sec,:root[lang=zh-CN] .pill-k,:root[lang=zh-CN] .menu-group{text-transform:none}
