:root{--on-primary: #fff;--bg: #f4f6fa;--surface: #ffffff;--surface-2: #f8fafc;--surface-3: #eff3f8;--border: #e3e8ef;--border-strong: #cfd7e2;--text: #0f1b2d;--text-2: #4f5d72;--text-3: #8592a6;--ok: #1d7f47;--ok-bg: #e4f4ea;--warn: #a9650a;--warn-bg: #fdf1dd;--err: #c0392b;--err-bg: #fceae8;--info: #0b7fb5;--info-bg: #e3f3fa;--neutral: #4f5d72;--neutral-bg: #eef1f5;--side-text: rgba(255,255,255,.72);--side-hover: rgba(255,255,255,.07);--side-active: rgba(255,255,255,.13);--side-section: rgba(255,255,255,.42);--c-demand: #1E5AA8;--c-stock: #D08A1E;--c-risk: #C0392B;--c-ref: #94A3B8;--shadow-xs: 0 1px 2px rgba(15,27,45,.05);--shadow-sm: 0 1px 3px rgba(15,27,45,.06), 0 1px 2px rgba(15,27,45,.04);--shadow-md: 0 6px 18px rgba(15,27,45,.08);--shadow-lg: 0 24px 60px rgba(15,27,45,.22);--radius-xs: 6px;--radius-sm: 8px;--radius-btn: 10px;--radius-md: 12px;--radius-lg: 16px;--control-h: 40px;--row-h: 52px;--topbar-h: 64px;--sidebar-w: 252px;--sans: Inter, "Segoe UI Variable Text", "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;--mono: "JetBrains Mono", "Cascadia Code", Consolas, monospace;color-scheme:light}:root,:root[data-brand=koda]{--navy: #0B2A4A;--side-bg: #0B2A4A;--side-bg-2: #0E3157;--primary: #1E5AA8;--primary-hover: #174A8C;--primary-soft: #EAF2FC;--primary-ring: rgba(30,90,168,.22);--mint: #0096D6;--c-plan: #1E5AA8;--c-cap: #6A48C2;--band: rgba(30,90,168,.11)}:root[data-brand=aubergine]{--navy: #2A1033;--side-bg: #2A1033;--side-bg-2: #3B1747;--primary: #7A2E8E;--primary-hover: #632577;--primary-soft: #F5EBF8;--primary-ring: rgba(122,46,142,.22);--mint: #C2569B;--c-plan: #7A2E8E;--c-cap: #3B5B8C;--band: rgba(122,46,142,.11)}:root[data-brand=indigo]{--navy: #1C1B4D;--side-bg: #1C1B4D;--side-bg-2: #28266A;--primary: #4F46E5;--primary-hover: #4338CA;--primary-soft: #EEF0FE;--primary-ring: rgba(79,70,229,.22);--mint: #8B5CF6;--c-plan: #4F46E5;--c-demand: #0B7FB5;--c-cap: #8E4B7A;--band: rgba(79,70,229,.1)}:root[data-brand=graphite]{--navy: #1E2329;--side-bg: #1E2329;--side-bg-2: #2A3038;--primary: #3E4C5E;--primary-hover: #2B3644;--primary-soft: #EDF0F4;--primary-ring: rgba(62,76,94,.25);--mint: #8A9BB0;--c-plan: #3E4C5E;--c-cap: #8E4B7A;--band: rgba(62,76,94,.11)}:root[data-brand=teal]{--navy: #073B3A;--side-bg: #073B3A;--side-bg-2: #0A4A47;--primary: #0E7C74;--primary-hover: #0B655F;--primary-soft: #E6F4F2;--primary-ring: rgba(14,124,116,.22);--mint: #2BC4A0;--c-plan: #0E7C74;--c-cap: #6A48C2;--band: rgba(14,124,116,.12)}:root[data-theme=dark]{--bg: #0d1420;--surface: #141d2b;--surface-2: #182233;--surface-3: #1e2a3d;--border: #243246;--border-strong: #2f4059;--text: #e8eef6;--text-2: #a9b6c8;--text-3: #74839a;--ok: #4cc287;--ok-bg: rgba(76,194,135,.14);--warn: #f0b556;--warn-bg: rgba(240,181,86,.14);--err: #f07466;--err-bg: rgba(240,116,102,.14);--info: #4fc0f0;--info-bg: rgba(79,192,240,.14);--neutral: #a9b6c8;--neutral-bg: rgba(169,182,200,.12);--c-demand: #6fa6ea;--c-stock: #f0b556;--c-risk: #f07466;--c-ref: #6b7a90;--shadow-xs: 0 1px 2px rgba(0,0,0,.3);--shadow-md: 0 6px 18px rgba(0,0,0,.35);--shadow-lg: 0 24px 60px rgba(0,0,0,.55);color-scheme:dark}:root[data-theme=dark],:root[data-theme=dark][data-brand=koda]{--navy: #0A111C;--side-bg: #0A111C;--side-bg-2: #0D1624;--primary: #4D8FE0;--primary-hover: #6AA3EA;--primary-soft: rgba(77,143,224,.14);--primary-ring: rgba(77,143,224,.35);--on-primary: #06101E;--c-plan: #4D8FE0;--c-cap: #a88bf0;--band: rgba(77,143,224,.14)}:root[data-theme=dark][data-brand=aubergine]{--navy: #170A1C;--side-bg: #170A1C;--side-bg-2: #221029;--primary: #C98FDB;--primary-hover: #D9A9E7;--primary-soft: rgba(201,143,219,.14);--primary-ring: rgba(201,143,219,.35);--on-primary: #1d0b24;--c-plan: #C98FDB;--c-cap: #7fa6e0;--band: rgba(201,143,219,.14)}:root[data-theme=dark][data-brand=indigo]{--navy: #0f0e2b;--side-bg: #0f0e2b;--side-bg-2: #17163d;--primary: #8C87F5;--primary-hover: #A6A2F8;--primary-soft: rgba(140,135,245,.15);--primary-ring: rgba(140,135,245,.35);--on-primary: #0f0e2b;--c-plan: #8C87F5;--c-demand: #4fc0f0;--c-cap: #d38fc0;--band: rgba(140,135,245,.14)}:root[data-theme=dark][data-brand=graphite]{--navy: #0b0e12;--side-bg: #0b0e12;--side-bg-2: #141920;--primary: #AFC0D3;--primary-hover: #C8D5E3;--primary-soft: rgba(175,192,211,.13);--primary-ring: rgba(175,192,211,.35);--on-primary: #0f1720;--c-plan: #AFC0D3;--c-cap: #d38fc0;--band: rgba(175,192,211,.12)}:root[data-theme=dark][data-brand=teal]{--navy: #061716;--side-bg: #061716;--side-bg-2: #0A1F1E;--primary: #3FBFB2;--primary-hover: #5ED0C4;--primary-soft: rgba(63,191,178,.14);--primary-ring: rgba(63,191,178,.35);--on-primary: #04211f;--c-plan: #3FBFB2;--c-cap: #a88bf0;--band: rgba(63,191,178,.14)}:root[data-density=compact]{--row-h: 40px;--control-h: 34px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 var(--sans);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--primary)}.num,td.n,.kpi .v{font-variant-numeric:tabular-nums}svg.ic{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}svg.ic.sm{width:15px;height:15px}svg.ic.lg{width:22px;height:22px}.app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:var(--topbar-h) 1fr;height:100vh}.app.collapsed{--sidebar-w: 72px}.side{grid-row:1 / 3;background:linear-gradient(180deg,var(--side-bg),var(--side-bg-2));color:var(--side-text);display:flex;flex-direction:column;overflow:hidden}.brand{height:var(--topbar-h);display:flex;align-items:center;gap:11px;padding:0 18px;flex:none}.brand .mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--mint));display:grid;place-items:center;flex:none}.brand .name b{display:block;color:#fff;font-weight:700;font-size:15.5px;letter-spacing:.1px}.brand .name span{font-size:11.5px;color:var(--side-section)}.side nav{flex:1;overflow-y:auto;padding:6px 12px}.side .sec{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--side-section);padding:16px 10px 6px;white-space:nowrap}.side .item{display:flex;align-items:center;gap:12px;width:100%;padding:9px 10px;border:0;background:none;color:var(--side-text);border-radius:var(--radius-sm);cursor:pointer;text-align:left;white-space:nowrap}.side .item:hover{background:var(--side-hover);color:#fff}.side .item.on{background:var(--side-active);color:#fff;font-weight:600}.side .item .cnt{margin-left:auto;background:var(--err);color:#fff;border-radius:999px;font-size:11px;font-weight:700;padding:1px 7px}.side .foot{padding:12px;border-top:1px solid rgba(255,255,255,.08)}.me{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;color:#fff;padding:8px;border-radius:var(--radius-sm);cursor:pointer;text-align:left}.me:hover{background:var(--side-hover)}.me .who b{display:block;font-size:13px}.me .who span{font-size:11.5px;color:var(--side-section)}.av{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--mint));color:#fff;display:grid;place-items:center;font-size:12px;font-weight:700;flex:none}.av.sm{width:26px;height:26px;font-size:10.5px}.collapsed .side .nl,.collapsed .side .sec,.collapsed .brand .name,.collapsed .me .who,.collapsed .side .item .cnt{display:none}.collapsed .side .item{justify-content:center}.top{display:flex;align-items:center;gap:12px;padding:0 22px;background:var(--surface);border-bottom:1px solid var(--border);min-width:0}.crumbs{display:flex;align-items:center;gap:6px;color:var(--text-2);white-space:nowrap;overflow:hidden}.crumbs b{color:var(--text);font-weight:650}.spacer{flex:1}.crumbs{flex:none}.searchbox span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.searchbox{flex:0 1 240px;min-width:44px;display:flex;align-items:center;gap:8px;height:38px;padding:0 10px 0 12px;border:1px solid var(--border);border-radius:var(--radius-btn);background:var(--surface-2);color:var(--text-3);cursor:pointer}.searchbox kbd{margin-left:auto;font:11px var(--mono);background:var(--surface);border:1px solid var(--border);border-radius:5px;padding:1px 5px;color:var(--text-3)}.tools{display:flex;align-items:center;gap:6px}.icon-btn{position:relative;width:38px;height:38px;border-radius:var(--radius-btn);border:0;background:none;color:var(--text-2);display:grid;place-items:center;cursor:pointer}.icon-btn:hover{background:var(--surface-3);color:var(--text)}.icon-btn.on{background:var(--primary-soft);color:var(--primary)}.icon-btn .pip{position:absolute;top:4px;right:3px;background:var(--err);color:#fff;font-size:10px;font-weight:700;border-radius:999px;padding:0 5px;line-height:16px}.env{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:3px 8px;border-radius:999px;background:var(--warn-bg);color:var(--warn)}.picker{display:flex;align-items:center;gap:8px;height:38px;padding:0 10px;border:1px solid var(--border-strong);border-radius:var(--radius-btn);background:var(--surface);cursor:pointer;white-space:nowrap;max-width:260px}.picker .dot{width:9px;height:9px;border-radius:50%;flex:none}.picker span{overflow:hidden;text-overflow:ellipsis}main{overflow:auto;min-width:0}.page{max-width:1480px;margin:0 auto;padding:24px 32px 48px}.page.wide{max-width:none}.ph{display:flex;align-items:flex-end;gap:16px;margin-bottom:20px;flex-wrap:wrap}.ph h1{font-size:24px;font-weight:680;margin:0;line-height:1.2}.ph .sub{color:var(--text-2);font-size:13.5px;margin-top:4px}.ph .actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;align-items:center}h2{font-size:18px;font-weight:680;margin:0}h3{font-size:15px;font-weight:650;margin:0}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);min-width:0}.panel>.ph2{display:flex;align-items:center;gap:10px;min-height:58px;padding:0 20px;border-bottom:1px solid var(--border)}.panel>.ph2 h3{display:flex;align-items:center;gap:8px}.panel>.ph2 .r{margin-left:auto;display:flex;gap:8px;align-items:center}.panel>.pb{padding:16px 20px}.panel>.pb.flush{padding:0}.grid{display:grid;gap:20px}.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-side{grid-template-columns:264px minmax(0,1fr);align-items:start}@media (max-width: 1180px){.g2,.g3,.g4,.g-2-1,.g-1-2{grid-template-columns:1fr}}.stack{display:flex;flex-direction:column;gap:20px}.stack.s12{gap:12px}.stack.s8{gap:8px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row.nw{flex-wrap:nowrap}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:15px 18px;box-shadow:var(--shadow-xs);position:relative;min-width:0}.kpi .l{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);font-weight:650;display:flex;align-items:center;gap:6px}.kpi .v{font-size:28px;font-weight:700;letter-spacing:-.02em;line-height:1;margin-top:10px}.kpi .d{font-size:12.5px;color:var(--text-2);margin-top:7px;display:flex;align-items:center;gap:6px}.kpi.bad .v{color:var(--err)}.kpi.warn .v{color:var(--warn)}.kpi.good .v{color:var(--ok)}.kpi .spark{position:absolute;right:14px;bottom:12px;opacity:.9}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:12.5px}.btn{height:var(--control-h);display:inline-flex;align-items:center;gap:8px;padding:0 16px;border-radius:var(--radius-btn);border:1px solid var(--border-strong);background:var(--surface);box-shadow:var(--shadow-xs);font-size:13.5px;font-weight:600;cursor:pointer;white-space:nowrap}.btn:hover{background:var(--surface-2)}.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.btn.primary:hover{background:var(--primary-hover)}.btn.ghost{border-color:transparent;background:none;box-shadow:none}.btn.ghost:hover{background:var(--surface-3)}.btn.danger{color:var(--err)}.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}.btn.sm{height:32px;padding:0 12px;font-size:12.5px;border-radius:var(--radius-sm)}.btn.xs{height:26px;padding:0 9px;font-size:12px;border-radius:var(--radius-xs);gap:5px}.btn:disabled{opacity:.45;cursor:not-allowed}.seg{display:inline-flex;padding:3px;background:var(--surface-3);border-radius:var(--radius-btn);gap:2px}.seg button{border:0;background:none;height:30px;padding:0 11px;border-radius:var(--radius-sm);cursor:pointer;font-size:12.5px;font-weight:600;color:var(--text-2);white-space:nowrap}.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.chip{height:32px;display:inline-flex;align-items:center;gap:6px;padding:0 12px;border:1px solid var(--border-strong);border-radius:999px;background:var(--surface);font-size:12.5px;font-weight:550;cursor:pointer;white-space:nowrap}.chip.on{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}.badge{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 9px;border-radius:999px;font-size:11.5px;font-weight:600;background:var(--neutral-bg);color:var(--neutral);white-space:nowrap}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.err{background:var(--err-bg);color:var(--err)}.badge.info{background:var(--info-bg);color:var(--info)}.badge.brand{background:var(--primary-soft);color:var(--primary)}.badge.solid{background:var(--navy);color:#fff}.cls{display:inline-grid;place-items:center;min-width:30px;height:20px;border-radius:6px;font:700 11px var(--mono);background:var(--surface-3);color:var(--text-2)}.cls.A{background:var(--primary-soft);color:var(--primary)}.input,select.input,textarea.input{height:var(--control-h);border:1px solid var(--border-strong);border-radius:var(--radius-btn);background:var(--surface);padding:0 12px;min-width:0}textarea.input{height:auto;padding:10px 12px;resize:vertical}.input.sm{height:32px;border-radius:var(--radius-sm);padding:0 9px;font-size:13px}.input:focus,.btn:focus-visible,.chip:focus-visible{outline:3px solid var(--primary-ring);outline-offset:0;border-color:var(--primary)}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>label{font-size:12.5px;color:var(--text-2);font-weight:550;display:flex;align-items:center;gap:5px}.form{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px 16px}input[type=range]{accent-color:var(--primary);width:100%}input[type=checkbox]{accent-color:var(--primary);width:16px;height:16px}table.t{width:100%;border-collapse:collapse}table.t th{position:sticky;top:0;z-index:1;background:var(--surface-2);text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);font-weight:650;padding:10px 14px;border-bottom:1px solid var(--border);white-space:nowrap}table.t td{padding:0 14px;height:var(--row-h);border-bottom:1px solid var(--border)}table.t tr:last-child td{border-bottom:0}table.t tr.click{cursor:pointer}table.t tr.click:hover td{background:var(--surface-2)}table.t td.n,table.t th.n{text-align:right}table.t.dense td{height:40px}.tw{overflow:auto}.banner{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;border-radius:var(--radius-md);background:var(--primary-soft);color:var(--text)}.banner.warn{background:var(--warn-bg)}.banner.err{background:var(--err-bg)}.banner.info{background:var(--info-bg)}.banner .ic{color:var(--primary);margin-top:2px}.banner.warn .ic{color:var(--warn)}.banner.err .ic{color:var(--err)}#toasts{position:fixed;right:20px;bottom:20px;display:flex;flex-direction:column;gap:8px;z-index:100}.toast{background:var(--navy);color:#fff;padding:12px 16px;border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:13.5px;max-width:420px;display:flex;gap:10px;align-items:center}.toast.err{background:var(--err)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#08141e6b;z-index:60}.modal{position:fixed;left:50%;top:8vh;transform:translate(-50%);width:min(720px,94vw);max-height:84vh;overflow:auto;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:61}.modal.wide{width:min(1080px,96vw)}.modal .mh{display:flex;align-items:center;gap:10px;padding:18px 22px;border-bottom:1px solid var(--border)}.modal .mb{padding:20px 22px}.modal .mf{display:flex;justify-content:flex-end;gap:8px;padding:14px 22px;border-top:1px solid var(--border)}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(460px,96vw);background:var(--surface);box-shadow:var(--shadow-lg);z-index:61;display:flex;flex-direction:column}.drawer.wide{width:min(640px,96vw)}.drawer .dh{display:flex;align-items:center;gap:10px;height:var(--topbar-h);padding:0 20px;border-bottom:1px solid var(--border);flex:none}.drawer .db{flex:1;overflow:auto;padding:20px}.drawer .df{padding:14px 20px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end}.menu{position:fixed;z-index:70;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:6px;min-width:240px}.menu button{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;padding:8px 10px;border-radius:var(--radius-sm);cursor:pointer;text-align:left}.menu button:hover,.menu button.on{background:var(--surface-3)}.menu .s{margin-left:auto;color:var(--text-3);font-size:12px}.menu .mh{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);padding:8px 10px 4px}.menu .sep{height:1px;background:var(--border);margin:6px 0}.palette{position:fixed;left:50%;top:12vh;transform:translate(-50%);width:min(640px,94vw);background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:71;overflow:hidden}.palette input{width:100%;height:56px;border:0;border-bottom:1px solid var(--border);padding:0 20px;font-size:16px;outline:0;background:none}.palette .list{max-height:420px;overflow:auto;padding:6px}.palette .it{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer}.palette .it.on{background:var(--primary-soft)}.palette .it .d{color:var(--text-3);font-size:12.5px;margin-left:auto;text-align:right}kbd{font:11px var(--mono);border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;padding:1px 6px;background:var(--surface-2)}.help{position:relative;display:inline-grid;place-items:center;width:17px;height:17px;border-radius:50%;color:var(--text-3);cursor:help;flex:none}.help:hover{color:var(--primary)}.tip{position:fixed;z-index:90;width:320px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:14px 16px;font-size:13px;text-transform:none;letter-spacing:0;font-weight:400;color:var(--text)}.tip b{display:block;margin-bottom:4px;font-size:13.5px}.tip .s{font-weight:600;color:var(--primary);margin-bottom:6px}.tip .e{color:var(--text-2)}.tip .f{margin-top:8px;font:12px var(--mono);background:var(--surface-2);border-radius:var(--radius-xs);padding:7px 9px;color:var(--text)}.flist{padding:8px;max-height:calc(100vh - 170px);overflow:auto}.flist .seg-h{display:flex;align-items:center;gap:7px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-weight:700;padding:12px 8px 5px}.flist .seg-h i{width:8px;height:8px;border-radius:3px}.fi{display:flex;align-items:center;gap:8px;padding:8px 9px;border-radius:var(--radius-sm);cursor:pointer}.fi:hover{background:var(--surface-3)}.fi.on{background:var(--primary-soft);color:var(--primary);font-weight:600}.fi .nm{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sev{width:8px;height:8px;border-radius:50%;flex:none}.sev.high{background:var(--err)}.sev.medium{background:var(--warn)}.sev.low{background:var(--text-3)}.sev.ok{background:var(--ok)}.pg-wrap{overflow:auto;max-height:62vh}table.pg{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;min-width:100%}table.pg th,table.pg td{height:34px;border-bottom:1px solid var(--border);white-space:nowrap}table.pg thead th{position:sticky;top:0;z-index:2;background:var(--surface-2);font-size:11.5px;font-weight:650;color:var(--text-2);text-align:right;padding:0 10px}table.pg thead th.past{color:var(--text-3)}table.pg thead th .g{display:block;font-size:9.5px;color:var(--text-3);font-weight:600;letter-spacing:.05em}table.pg .lab{position:sticky;left:0;z-index:1;background:var(--surface);text-align:left;padding:0 12px 0 16px;min-width:250px;max-width:290px;overflow:hidden;text-overflow:ellipsis;border-right:1px solid var(--border)}table.pg thead .lab{z-index:3;background:var(--surface-2)}table.pg .lab .in{display:flex;align-items:center;gap:6px}table.pg td.c{text-align:right;padding:0 10px;min-width:76px}table.pg td.c.past{color:var(--text-3);background:var(--surface-2)}table.pg td.c.ed{background:#fffbea;cursor:cell}:root[data-theme=dark] table.pg td.c.ed{background:#f0b55614}table.pg td.c.ed:hover{box-shadow:inset 0 0 0 1px #e8c45a}table.pg td.c.sel{box-shadow:inset 0 0 0 2px var(--primary)!important}table.pg td.c input{width:100%;border:0;outline:0;background:transparent;text-align:right}table.pg td.c.neg{color:var(--err);font-weight:650}table.pg td.c.lo{background:var(--err-bg);color:var(--err)}table.pg td.c.hi{background:var(--warn-bg);color:var(--warn)}table.pg tr.strong td{font-weight:650}table.pg tr.tracked td{background:var(--primary-soft)}table.pg tr.tracked .lab{background:var(--primary-soft);font-weight:650}table.pg tr.muted td{color:var(--text-3)}table.pg tr.grp td{background:var(--surface-3);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--primary);font-weight:700;height:28px;cursor:pointer}table.pg tr.grp .lab{background:var(--surface-3)}.steps{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:8px}.step{border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 11px;background:var(--surface);cursor:pointer;min-width:0}.step:hover{border-color:var(--border-strong)}.step .n{font-size:11px;color:var(--text-3);display:flex;justify-content:space-between}.step b{display:block;font-size:13px;margin:3px 0 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.step.DONE{background:var(--ok-bg);border-color:transparent}.step.IN_PROGRESS{background:var(--primary-soft);border-color:var(--primary)}.step.BLOCKED{background:var(--err-bg);border-color:transparent}.step.sel{box-shadow:0 0 0 3px var(--primary-ring)}.bar{height:8px;border-radius:999px;background:var(--surface-3);overflow:hidden}.bar>i{display:block;height:100%;background:var(--primary);border-radius:999px}.list-item{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--border)}.list-item:last-child{border-bottom:0}.empty{padding:36px;text-align:center;color:var(--text-3)}.heat td.h{text-align:center;font-size:11.5px;font-weight:650;height:34px;padding:0 2px;min-width:38px}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--text-2)}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}.card-sel{border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;background:var(--surface);cursor:pointer;box-shadow:var(--shadow-xs);position:relative;min-width:0}.card-sel:hover{border-color:var(--border-strong)}.card-sel.on{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-ring)}.matrix9{display:grid;grid-template-columns:34px repeat(3,minmax(0,1fr));gap:6px}.matrix9 .h{display:grid;place-items:center;font:700 12px var(--mono);color:var(--text-3)}.matrix9 .c{border-radius:var(--radius-md);padding:10px 12px;min-height:92px;cursor:pointer;border:1px solid transparent}.matrix9 .c:hover{border-color:var(--primary)}.matrix9 .c.on{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-ring)}.chat{display:flex;flex-direction:column;gap:12px}.msg{max-width:88%;padding:11px 14px;border-radius:14px;white-space:pre-wrap;font-size:13.5px}.msg.me{align-self:flex-end;background:var(--primary);color:#fff;border-bottom-right-radius:4px}.msg.ai{align-self:flex-start;background:var(--surface-2);border:1px solid var(--border);border-bottom-left-radius:4px}.sim{font-size:11px;color:var(--text-3);display:flex;align-items:center;gap:5px;margin-top:6px}.slide{position:fixed;top:0;right:0;bottom:0;left:0;z-index:55;background:var(--bg);display:grid;grid-template-columns:1fr 380px}.slide .stage{padding:36px 48px;overflow:auto}.slide .side2{background:var(--surface);border-left:1px solid var(--border);display:flex;flex-direction:column}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:20px;flex-wrap:wrap}.tabs button{border:0;background:none;padding:11px 14px;cursor:pointer;font-weight:600;color:var(--text-2);border-bottom:2px solid transparent;margin-bottom:-1px;display:flex;gap:8px;align-items:center}.tabs button.on{color:var(--primary);border-bottom-color:var(--primary)}.gantt{position:relative}.gantt .lane{display:grid;grid-template-columns:220px 1fr;align-items:center;height:40px;border-bottom:1px solid var(--border)}.gantt .track{position:relative;height:100%}.gantt .barx{position:absolute;top:11px;height:18px;border-radius:6px;font-size:11px;color:#fff;padding:0 7px;display:flex;align-items:center;white-space:nowrap;overflow:hidden}.gantt .today{position:absolute;top:0;bottom:0;width:2px;background:var(--err);opacity:.6}@media print{.side,.top,.no-print{display:none!important}.app{display:block}main{overflow:visible}.page{padding:0;max-width:none}.panel{break-inside:avoid;box-shadow:none}}@media (max-width: 760px){.app{grid-template-columns:1fr}.side{display:none}.page{padding:14px}.searchbox{min-width:0}.searchbox span,.searchbox kbd{display:none}.steps{grid-template-columns:repeat(3,1fr)}}@media (max-width: 760px){.top{gap:6px;padding:0 10px}.top .crumbs,.top .searchbox,.top .spacer,.top .tools .seg,.top .tools .env,.top .tools .picker>span,.top .tools>.icon-btn:nth-last-child(-n+2){display:none}.top .tools{margin-left:auto;gap:2px}}.with-strip{display:flex;flex-direction:column;height:100vh}.with-strip>.app{flex:1;min-height:0;height:auto}.sandbox-strip{flex:none;padding:6px 16px;background:#b54708;color:#fff;font-size:12px;font-weight:600;letter-spacing:.3px;text-align:center}@media print{.with-strip{display:block;height:auto}.sandbox-strip{display:none}}
