@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{--nav: #16213a;--nav-2: #1f2d4d;--nav-ink: #c7d0e4;--nav-ink-2: #7f8db0;--paper: #f4f6fa;--panel: #ffffff;--ink: #17202e;--ink-2: #566275;--ink-3: #8b96a8;--rule: #dfe4ec;--rule-2: #edf0f5;--accent: #2b6cb0;--accent-2: #235a94;--accent-soft: #e6f0fb;--critical: #c53030;--critical-soft: #fde8e8;--done: #2f855a;--done-soft: #e3f4ea;--warn: #b7791f;--warn-soft: #fdf1d8;--sel: #fff7dc;--weekend: #f1f3f7;--bar: #3b82c4;--summary: #2c3a52;--milestone: #17202e;--shadow: 0 1px 2px rgba(23, 32, 46, .06), 0 4px 16px rgba(23, 32, 46, .05);--radius: 8px;--font: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);font-size:13.5px;line-height:1.5;color:var(--ink);background:var(--paper);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--accent);text-decoration:none}.shell{display:grid;grid-template-columns:216px 1fr;height:100%}.side{background:var(--nav);color:var(--nav-ink);display:flex;flex-direction:column;padding:18px 12px}.brand{display:flex;align-items:center;gap:10px;color:#fff;font-weight:700;font-size:15px;letter-spacing:-.01em;padding:4px 8px 20px}.brand .logo{width:28px;height:28px;border-radius:7px;background:linear-gradient(135deg,#4f8fd6,#2b6cb0);display:grid;place-items:center}.side nav{display:flex;flex-direction:column;gap:2px}.side nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:6px;color:var(--nav-ink);font-weight:500}.side nav a svg{width:17px;height:17px;opacity:.8}.side nav a:hover{background:var(--nav-2);color:#fff}.side nav a.active{background:var(--accent);color:#fff}.side nav a.active svg{opacity:1}.side .grow{flex:1}.side .who{border-top:1px solid var(--nav-2);padding-top:14px}.side .who label{display:block;font-size:11.5px;color:var(--nav-ink-2);margin-bottom:6px}.side .who input{width:100%;background:var(--nav-2);border:1px solid transparent;color:#fff}.side .who input:focus{border-color:var(--accent);outline:none;box-shadow:none}.side .who .hint{color:var(--nav-ink-2);font-size:11px;margin-top:6px}.main{overflow:auto;min-width:0}@media (max-width: 900px){.shell{grid-template-columns:1fr;grid-template-rows:auto 1fr}.side{flex-direction:row;align-items:center;padding:10px 12px;gap:8px}.side nav{flex-direction:row;flex-wrap:wrap}.side nav a span{display:none}.side .who{border:0;padding:0}.side .who label,.side .who .hint{display:none}.brand{padding:0 6px 0 0}}.page{padding:22px 24px;max-width:1600px}.page-head{display:flex;align-items:flex-end;gap:14px;margin-bottom:22px}.page-head h2{margin:0;font-size:22px;font-weight:700;letter-spacing:-.02em}.page-head .lead{color:var(--ink-2);margin:3px 0 0;max-width:70ch}.page-head .grow{flex:1}.page h2{margin:0 0 4px;font-size:22px;font-weight:700;letter-spacing:-.02em}.page .lead{color:var(--ink-2);margin:0 0 18px;max-width:70ch}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:22px}.kpi{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}.kpi .k{color:var(--ink-2);font-size:12.5px}.kpi .v{font-size:24px;font-weight:700;letter-spacing:-.02em;margin-top:2px}.kpi .v.bad{color:var(--critical)}.kpi .v.good{color:var(--done)}.kpi .s{color:var(--ink-3);font-size:12px;margin-top:2px}input,select,textarea{border:1px solid var(--rule);border-radius:6px;padding:7px 10px;background:#fff;transition:border-color .12s}input:hover,select:hover,textarea:hover{border-color:#c5cdd9}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2b6cb026}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}textarea{min-height:72px;resize:vertical}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--accent)}button{border:1px solid var(--rule);background:var(--panel);border-radius:6px;padding:7px 12px;cursor:pointer;font-weight:500;transition:background .12s,border-color .12s}button:hover:not(:disabled){background:var(--rule-2);border-color:#c5cdd9}button:disabled{opacity:.45;cursor:default}button.pri{background:var(--accent);border-color:var(--accent);color:#fff}button.pri:hover:not(:disabled){background:var(--accent-2);border-color:var(--accent-2)}button.danger{color:var(--critical)}button.danger:hover:not(:disabled){background:var(--critical-soft);border-color:#f3c4c4}button.sm{padding:4px 9px;font-size:12.5px}button.link{border:0;background:none;color:var(--accent);padding:0;font-weight:500}button.link:hover{text-decoration:underline;background:none}.bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:10px 20px;background:var(--panel);border-bottom:1px solid var(--rule);position:sticky;top:0;z-index:3}.bar label{color:var(--ink-3);margin-left:8px;font-size:12.5px}.bar .sep{width:1px;height:24px;background:var(--rule);margin:0 6px}.bar .grp{display:inline-flex}.bar .grp button{border-radius:0;margin-left:-1px}.bar .grp button:first-child{border-radius:6px 0 0 6px;margin-left:0}.bar .grp button:last-child{border-radius:0 6px 6px 0}.notice{padding:10px 14px;border-radius:6px;margin:12px 20px 0;border:1px solid transparent}.page .notice,.modal .notice{margin:0 0 14px}.modal .notice{margin:0}.notice.err{background:var(--critical-soft);color:#7d2419;border-color:#f3c4c4}.notice.warn{background:var(--warn-soft);color:#6f4a0f;border-color:#f0d9a3}.notice ul{margin:4px 0 0 16px;padding:0}.card{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);box-shadow:var(--shadow);overflow:auto}table.grid{border-collapse:collapse;width:100%;background:var(--panel)}table.grid th{text-align:left;font-weight:600;font-size:12px;color:var(--ink-2);padding:10px 12px;border-bottom:1px solid var(--rule);background:#fafbfd;position:sticky;top:0;z-index:2;white-space:nowrap}table.grid td{padding:8px 12px;border-bottom:1px solid var(--rule-2);white-space:nowrap;vertical-align:middle}table.grid td.wrap{white-space:normal;min-width:220px}table.grid tr:last-child td{border-bottom:0}table.grid td.r,table.grid th.r{text-align:right}table.grid tr.sel td{background:var(--sel)}table.grid tr.summary td{font-weight:600}table.grid tr.click{cursor:pointer}table.grid tr.click:hover td{background:#f6f8fb}table.grid tr.sel.click:hover td{background:var(--sel)}.gridpane table.grid td{padding:5px 10px}.muted{color:var(--ink-3)}.sub{color:var(--ink-3);font-size:12px}.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:600;background:var(--rule-2);color:var(--ink-2)}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.7}.pill.crit{background:var(--critical-soft);color:var(--critical)}.pill.done{background:var(--done-soft);color:var(--done)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.acc{background:var(--accent-soft);color:var(--accent)}.pill.plain:before{display:none}.lock{color:var(--ink-3);font-size:11px;margin-left:4px}.indent-1{padding-left:22px!important}.indent-2{padding-left:42px!important}.swatch{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:7px;vertical-align:-1px}.tags span{display:inline-block;background:var(--rule-2);border-radius:4px;padding:1px 6px;margin-right:3px;font-size:11.5px;color:var(--ink-2)}.avatar{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:700;margin-right:8px;vertical-align:middle}.prog{height:6px;background:var(--rule-2);border-radius:4px;overflow:hidden;min-width:90px;max-width:140px}.prog i{display:block;height:100%;background:var(--accent);border-radius:4px}.prog.done i{background:var(--done)}.actions{display:inline-flex;gap:4px;justify-content:flex-end;white-space:nowrap}button.ib{display:inline-grid;place-items:center;width:30px;height:30px;padding:0;color:var(--ink-2)}button.ib svg{width:15px;height:15px}button.ib:hover:not(:disabled){color:var(--ink)}button.ib.danger:hover:not(:disabled){color:var(--critical)}td.act,th.act{width:1%;text-align:right}.blank{padding:70px 20px;text-align:center;color:var(--ink-2);max-width:46ch;margin:0 auto}.blank h3{color:var(--ink);margin:0 0 6px;font-size:17px}.blank p{margin:0 0 16px}.work{display:grid;grid-template-columns:minmax(560px,1fr) minmax(360px,1.1fr);height:calc(100vh - 98px)}.gridpane{overflow:auto;border-right:1px solid var(--rule);background:var(--panel)}.ganttpane{overflow:auto;background:var(--panel)}@media (max-width: 1100px){.work{grid-template-columns:1fr;height:auto}.gridpane{border-right:0}.ganttpane{border-top:1px solid var(--rule)}}.foot{display:flex;gap:22px;padding:10px 20px;border-top:1px solid var(--rule);background:var(--panel);color:var(--ink-2);font-size:12.5px}.foot b{color:var(--ink);font-weight:600}.gantt{position:relative}.gantt .head{position:sticky;top:0;z-index:2;background:#fafbfd;border-bottom:1px solid var(--rule);height:30px}.gantt .head span{position:absolute;top:0;height:30px;line-height:30px;font-size:11.5px;color:var(--ink-2);border-left:1px solid var(--rule-2);padding-left:5px;white-space:nowrap;overflow:hidden}.gantt .rows{position:relative}.gantt .row{position:relative;height:30px;border-bottom:1px solid var(--rule-2)}.gantt .row.sel{background:var(--sel)}.gantt .weekend{position:absolute;top:0;bottom:0;background:var(--weekend)}.gantt .today{position:absolute;top:0;bottom:0;width:0;border-left:2px dashed var(--warn);z-index:1}.gantt .bar{position:absolute;top:8px;height:14px;border-radius:3px;background:var(--bar)}.gantt .bar.crit{background:var(--critical)}.gantt .bar .prog{position:absolute;left:0;top:0;bottom:0;background:#0000004d;border-radius:3px 0 0 3px;min-width:0;height:100%}.gantt .bar.manual{outline:1px dashed var(--ink);outline-offset:-1px}.gantt .sum{position:absolute;top:10px;height:8px;background:var(--summary);border-radius:1px}.gantt .sum:before,.gantt .sum:after{content:"";position:absolute;bottom:-5px;border:5px solid transparent;border-top-color:var(--summary)}.gantt .sum:before{left:-1px}.gantt .sum:after{right:-1px}.gantt .dia{position:absolute;top:9px;width:12px;height:12px;background:var(--milestone);transform:rotate(45deg);border-radius:2px}.gantt .base{position:absolute;top:24px;height:3px;background:var(--ink-3);opacity:.7}.gantt .actual{position:absolute;top:3px;height:3px;background:var(--done)}.gantt svg.links{position:absolute;left:0;top:0;pointer-events:none;overflow:visible}.gantt .lbl{position:absolute;top:7px;font-size:11.5px;color:var(--ink-2);white-space:nowrap}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#17202e80;display:flex;align-items:flex-start;justify-content:center;padding:48px 16px;z-index:20;overflow:auto}.modal{background:var(--panel);border-radius:10px;width:100%;max-width:700px;box-shadow:0 24px 60px #0000004d}.modal .mh{padding:16px 22px;border-bottom:1px solid var(--rule);font-weight:600;font-size:16px;display:flex;align-items:center}.modal .mh .x{margin-left:auto;border:0;background:none;font-size:20px;color:var(--ink-3);padding:0 4px}.modal .mb{padding:18px 22px;display:grid;gap:12px}.modal .mf{padding:14px 22px;border-top:1px solid var(--rule);display:flex;justify-content:flex-end;gap:8px;background:#fafbfd;border-radius:0 0 10px 10px}.fld{display:grid;gap:4px}.fld label{color:var(--ink-2);font-size:12.5px;font-weight:500}.fld input,.fld select,.fld textarea{width:100%}.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}.checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px 14px}.checks label{display:flex;gap:7px;align-items:center;font-size:13px}.deps{border:1px solid var(--rule);border-radius:6px;overflow:hidden}.deps .dep{display:grid;grid-template-columns:1fr 76px 76px 32px;gap:6px;align-items:center;padding:6px 10px;border-bottom:1px solid var(--rule-2)}.deps .dep:last-child{border-bottom:0}.deps .add{background:#fafbfd}.hint{color:var(--ink-3);font-size:12px}.locknote{background:var(--warn-soft);color:#6f4a0f;padding:8px 12px;border-radius:6px;font-size:12.5px;border:1px solid #f0d9a3}.stack{display:grid;gap:16px}.panel{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);box-shadow:var(--shadow);overflow:auto}.panel .ph{display:flex;align-items:center;padding:12px 14px;border-bottom:1px solid var(--rule);font-weight:600;font-size:14px}.panel .ph button{margin-left:auto}.panel table.grid th{position:static}@media (prefers-reduced-motion: no-preference){.modal{animation:pop .14s ease-out}@keyframes pop{0%{transform:translateY(-8px);opacity:0}to{transform:none;opacity:1}}}.navsec{margin:14px 14px 2px;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3, #8a94a6)}.pill.ok{background:var(--done-soft);color:var(--done)}.pill.pend{background:var(--warn-soft);color:var(--warn)}.pill.rej{background:var(--critical-soft);color:var(--critical)}.phasebar{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:8px;vertical-align:-1px}.tkt-bar{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.tkt-bar select{max-width:220px}.tkt-head{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.tkt-desc{background:var(--rule-2, #f2f4f7);border-radius:8px;padding:10px 12px;margin:8px 0;white-space:pre-wrap;font-size:13.5px}.rowlink{cursor:pointer}.rowlink:hover td{background:var(--accent-soft, #eef4fa)}.attlist{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.att{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:12px;background:var(--rule-2, #f2f4f7);color:inherit;text-decoration:none;border:1px solid var(--rule, #e3e7ee)}.att:hover{border-color:var(--accent, #2f6f9e)}.att .x.sm{border:none;background:none;padding:0 2px;cursor:pointer;font-size:13px;line-height:1}.thread{margin-top:12px;max-height:320px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:4px}.msg{background:var(--rule-2, #f2f4f7);border-radius:10px;padding:8px 12px;max-width:85%;align-self:flex-start}.msg.mine{background:var(--accent-soft, #e6f0f8);align-self:flex-end}.msg-head{display:flex;gap:8px;font-size:12px;margin-bottom:3px}.msg-body{white-space:pre-wrap;font-size:13.5px}.reply{margin-top:10px;display:flex;flex-direction:column;gap:8px}.mono{font-family:ui-monospace,monospace;font-size:12.5px}.boot{display:flex;align-items:center;justify-content:center;min-height:100vh;color:#6b7280;font-size:14px}.signin-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#0f172a;padding:24px}.signin-card{width:100%;max-width:400px;background:#fff;border-radius:14px;padding:28px 30px;box-shadow:0 24px 60px -24px #0009}.signin-head{display:flex;gap:12px;align-items:center;margin-bottom:20px}.signin-head h1{font-size:19px;margin:0}.signin-head p{margin:2px 0 0;font-size:12.5px;color:#6b7280}.logo-sq{width:34px;height:34px;border-radius:8px;background:#2563eb;display:flex;align-items:center;justify-content:center;flex:0 0 34px}.ms-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:11px 14px;border:1px solid #d1d5db;border-radius:8px;background:#fff;font-size:14.5px;font-weight:500;cursor:pointer}.ms-btn:hover{background:#f9fafb}.ms-btn:disabled{opacity:.6;cursor:not-allowed}.signin-or{display:flex;align-items:center;gap:10px;margin:18px 0;color:#9ca3af;font-size:12px}.signin-or:before,.signin-or:after{content:"";flex:1;height:1px;background:#e5e7eb}.signin-form{display:flex;flex-direction:column;gap:5px}.signin-form label{font-size:12px;color:#6b7280;margin-top:8px}.signin-form input{padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font:inherit}.signin-form button{margin-top:16px;padding:11px;border:0;border-radius:8px;background:#2563eb;color:#fff;font-size:14.5px;font-weight:500;cursor:pointer}.signin-form button:disabled{opacity:.5;cursor:not-allowed}.signin-err{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;padding:10px 12px;border-radius:8px;font-size:13px;margin-bottom:14px}.signin-note{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af;padding:10px 12px;border-radius:8px;font-size:13px;margin-bottom:14px}.signin-off{background:#f9fafb;border:1px solid #e5e7eb;color:#6b7280;padding:11px 13px;border-radius:8px;font-size:13px}.signin-off span{display:block;margin-top:4px;font-size:12px;color:#9ca3af}.signin-foot{margin:18px 0 0;font-size:11.5px;color:#9ca3af;line-height:1.5}.signed-in{display:flex;gap:10px;align-items:flex-start}.avatar{width:32px;height:32px;border-radius:50%;background:#2563eb;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;flex:0 0 32px}.sig-who{min-width:0}.sig-who b{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sig-who small{display:block;font-size:11px;color:#9ca3af;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sig-tags{display:flex!important;gap:4px;flex-wrap:wrap;margin-top:5px}.signout{margin-top:10px;width:100%;padding:7px;border:1px solid rgba(255,255,255,.18);background:transparent;color:inherit;border-radius:7px;font-size:12.5px;cursor:pointer}.signout:hover{background:#ffffff14}.dir-bar{display:flex;gap:9px;margin:14px 0;flex-wrap:wrap}.dir-bar input{flex:1 1 280px;padding:9px 11px;border:1px solid #d1d5db;border-radius:8px;font:inherit}.dir-summary{display:flex;gap:18px;flex-wrap:wrap;margin:10px 0 14px;font-size:13px;color:#4b5563}.pill.member{background:#eff6ff;color:#1d4ed8}.pill.guest{background:#f5f3ff;color:#6d28d9}.pill.here{background:#f0fdf4;color:#15803d}.pill.new{background:#fffbeb;color:#b45309}.pill.off{background:#f3f4f6;color:#6b7280}.pill.admin{background:#fef2f2;color:#b91c1c}.pill.src{background:#f3f4f6;color:#4b5563}.pill.proc{background:#ecfeff;color:#0e7490}tr.muted td{opacity:.55}.proc-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:22px;align-items:start}@media (max-width:900px){.proc-layout{grid-template-columns:1fr}}.proc-list ul{list-style:none;margin:0 0 20px;padding:0}.proc-list li button{width:100%;text-align:left;padding:9px 11px;border:1px solid #e5e7eb;background:#fff;border-radius:8px;margin-bottom:6px;cursor:pointer}.proc-list li button.on{border-color:#2563eb;background:#eff6ff}.proc-list li button b{display:block;font-size:13.5px}.proc-list li button small{display:block;color:#6b7280;font-size:11.5px;margin-top:2px}.proc-new{display:flex;flex-direction:column;gap:4px;border-top:1px solid #e5e7eb;padding-top:14px}.proc-new label{font-size:11.5px;color:#6b7280;margin-top:7px}.proc-new input,.proc-new textarea{padding:8px 10px;border:1px solid #d1d5db;border-radius:7px;font:inherit;font-size:13.5px}.proc-new button{margin-top:12px}.proc-title{display:flex;align-items:center;gap:10px;margin-bottom:6px}.proc-title h3{margin:0}.proc-title .danger{margin-left:auto}.add-step{display:flex;gap:8px;margin-top:10px}.add-step input{flex:1;padding:8px 10px;border:1px solid #d1d5db;border-radius:7px;font:inherit}.mod-picks{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.mod-picks label{display:flex;gap:8px;align-items:center;border:1px solid #e5e7eb;border-radius:8px;padding:8px 12px;cursor:pointer;background:#fff}.mod-picks label.on{border-color:#2563eb;background:#eff6ff}.mod-picks label small{display:block;color:#6b7280;font-size:11px}.notice{background:#f9fafb;border:1px solid #e5e7eb;padding:11px 13px;border-radius:8px;font-size:13px;margin:10px 0}.notice.bad{background:#fef2f2;border-color:#fecaca;color:#991b1b}.notice.good{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}.notice.warn{background:#fffbeb;border-color:#fde68a;color:#92400e}.page-head p{color:#6b7280;font-size:13px;margin:4px 0 0;max-width:70ch}
