:root{--bg:#f5f6f8;--surface:#fff;--border:#e4e7ec;--border-soft:#eef0f3;--border-strong:#d0d5dd;--row-line:#f0f2f5;--grid:#eef0f3;--text:#101828;--text-2:#344054;--muted:#667085;--faint:#98a2b3;--primary:#1d4ed8;--primary-hover:#1e40af;--primary-tint:#eef4ff;--focus:#1d4ed829;--today:#e5484d;--ns-fill:#98a2b3;--ns-track:#f2f4f7;--ns-border:#d0d5dd;--ip-fill:#17b26a;--ip-track:#dcfae6;--ip-border:#75e0a7;--ip-text:#067647;--wc-fill:#f79009;--wc-track:#fef0c7;--wc-border:#fec84b;--wc-text:#b54708;--dl-fill:#f04438;--dl-track:#fee4e2;--dl-border:#fda29b;--dl-text:#b42318;--dn-fill:#98a2b3;--radius:10px;--shadow-sm:0 1px 2px #1018280d;--shadow-lg:0 16px 40px #10182829;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang TC,Microsoft JhengHei UI,Microsoft JhengHei,Noto Sans TC,Noto Sans CJK TC,Roboto,Helvetica Neue,sans-serif;font-size:14px;line-height:1.45}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:not-allowed}a{color:inherit;text-decoration:none}h1,h2,h3{letter-spacing:-.01em}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.muted{color:var(--muted)}.sep{color:var(--faint)}.pre{white-space:pre-wrap}.btn{border:1px solid var(--border-strong);height:34px;color:var(--text-2);white-space:nowrap;box-shadow:var(--shadow-sm);background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:0 14px;font-size:13.5px;font-weight:600;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.btn:hover:not(:disabled){color:var(--text);background:#f9fafb}.btn:disabled{opacity:.55}.btn--primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn--primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover);color:#fff}.btn--danger{color:#fff;background:#d92d20;border-color:#d92d20}.btn--danger:hover:not(:disabled){color:#fff;background:#b42318;border-color:#b42318}.btn--danger-ghost{box-shadow:none;color:#b42318;background:0 0;border-color:#0000}.btn--danger-ghost:hover:not(:disabled){color:#b42318;background:#fef3f2}.btn--ghost{box-shadow:none;color:var(--text-2);background:0 0;border-color:#0000}.btn--ghost:hover:not(:disabled){background:#f2f4f7}.btn--sm{border-radius:7px;height:30px;padding:0 10px;font-size:12.5px}.btn--block{width:100%;height:40px}.icon-btn{width:32px;height:32px;color:var(--muted);border-radius:7px;flex:none;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover:not(:disabled){color:var(--text);background:#f2f4f7}.icon-btn:disabled{opacity:.35}.icon-btn--sm{border-radius:6px;width:26px;height:26px}input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea{border:1px solid var(--border-strong);width:100%;height:36px;font:inherit;color:var(--text);box-shadow:var(--shadow-sm);background:#fff;border-radius:8px;padding:0 10px;font-size:13.5px}textarea{resize:vertical;height:auto;padding:8px 10px;line-height:1.5}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--focus);outline:none}input::placeholder,textarea::placeholder{color:var(--faint)}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field-label{color:var(--text-2);font-size:12.5px;font-weight:600}.req{color:#d92d20;margin-left:2px;font-weight:400}.field-hint{color:var(--faint);font-size:12px}.form-stack{flex-direction:column;gap:16px;display:flex}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.form-row--3{grid-template-columns:repeat(3,1fr)}.form-error{color:#b42318;background:#fef3f2;border:1px solid #fecdca;border-radius:8px;padding:8px 12px;font-size:13px}.check{color:var(--text-2);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;margin-left:8px;font-size:12.5px;display:inline-flex}.check input{width:14px;height:14px;accent-color:var(--primary);margin:0}.segmented{background:#f2f4f7;border-radius:8px;gap:2px;width:fit-content;padding:3px;display:inline-flex}.segmented button{height:28px;color:var(--muted);white-space:nowrap;border-radius:6px;padding:0 12px;font-size:13px;font-weight:600}.segmented button:hover{color:var(--text)}.segmented button.is-on{color:var(--text);background:#fff;box-shadow:0 1px 2px #1018281f}.segmented--sm button{height:24px;padding:0 11px;font-size:12.5px}.chip-btn{border:1px solid var(--border-strong);height:24px;color:var(--text-2);background:#fff;border-radius:6px;padding:0 8px;font-size:12px}.chip-btn.is-on{border-color:var(--primary);color:var(--primary);background:var(--primary-tint)}.progress-input{flex-direction:column;gap:8px;display:flex}.progress-input input[type=range]{width:100%;accent-color:var(--primary);margin:4px 0 0}.progress-quick{gap:6px;display:flex}.status-picker{flex-wrap:wrap;gap:6px;display:flex}.status-option{border:1px solid var(--border-strong);height:32px;color:var(--text-2);background:#fff;border-radius:8px;align-items:center;gap:7px;padding:0 11px;font-size:13px;font-weight:600;display:inline-flex}.status-option:hover{background:#f9fafb}.status-option.is-on{border-color:var(--c);background:var(--t);color:var(--x);box-shadow:0 0 0 1px var(--c)}.status-option--not_started{--c:#98a2b3;--t:#f2f4f7;--x:#344054}.status-option--in_progress{--c:var(--ip-fill);--t:#ecfdf3;--x:var(--ip-text)}.status-option--waiting_client{--c:var(--wc-fill);--t:#fffaeb;--x:var(--wc-text)}.status-option--delayed{--c:var(--dl-fill);--t:#fef3f2;--x:var(--dl-text)}.status-option--done{--c:#667085;--t:#f2f4f7;--x:#344054}.status-dot{background:var(--ns-border);border-radius:50%;flex:none;width:8px;height:8px}.status-dot--not_started{background:#d0d5dd}.status-dot--in_progress{background:var(--ip-fill)}.status-dot--waiting_client{background:var(--wc-fill)}.status-dot--delayed{background:var(--dl-fill)}.status-dot--done{background:#98a2b3}.status-badge{border-radius:999px;align-items:center;gap:6px;padding:2px 9px 2px 8px;font-size:12px;font-weight:600;display:inline-flex}.status-badge .status-dot{width:7px;height:7px}.status-badge--not_started{color:#344054;background:#f2f4f7}.status-badge--not_started .status-dot{background:#98a2b3}.status-badge--in_progress{color:var(--ip-text);background:#ecfdf3}.status-badge--in_progress .status-dot{background:var(--ip-fill)}.status-badge--waiting_client{color:var(--wc-text);background:#fffaeb}.status-badge--waiting_client .status-dot{background:var(--wc-fill)}.status-badge--delayed{color:var(--dl-text);background:#fef3f2}.status-badge--delayed .status-dot{background:var(--dl-fill)}.status-badge--done{color:#475467;background:#f2f4f7}.status-badge--done .status-dot{background:#667085}.party{border-radius:4px;flex:none;padding:0 6px;font-size:11px;font-weight:600;line-height:18px}.party--360d{color:#3538cd;background:#eef4ff}.party--client{color:#c11574;background:#fdf2fa}.party--both{color:#475467;background:#f2f4f7}.kind-tag{color:var(--text-2);font-size:11.5px;font-weight:600}.dot{border-radius:50%;flex:none;width:7px;height:7px;display:inline-block}.dot--active{background:#1570ef}.dot--planning{background:#fff;box-shadow:inset 0 0 0 1.5px #84adff}.dot--paused{background:#98a2b3}.dot--closed{background:#d0d5dd}.poc-badge{white-space:nowrap;border-radius:6px;padding:2px 9px;font-size:12px;font-weight:700}.poc-badge--active{color:#175cd3;background:#eff8ff}.poc-badge--planning{color:#444ce7;background:#f5f8ff;box-shadow:inset 0 0 0 1px #c7d7fe}.poc-badge--paused{color:#475467;background:#f2f4f7}.poc-badge--closed{color:#667085;background:#f2f4f7}.role-pill{letter-spacing:.02em;border-radius:999px;padding:1px 7px;font-size:11px;font-weight:700}.role-pill--admin{background:var(--primary);color:#fff}.role-pill--viewer{color:#475467;background:#f2f4f7}.chip{white-space:nowrap;border-radius:4px;padding:0 6px;font-size:11px;font-weight:700;line-height:18px}.chip--delayed{background:var(--dl-track);color:var(--dl-text)}.chip--waiting{background:var(--wc-track);color:var(--wc-text)}.chip--soon{color:#b54708;background:#fff4e5;box-shadow:inset 0 0 0 1px #fedf89}.chip--ok{color:var(--ip-text);background:#ecfdf3}.count{border-radius:9px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:700;display:inline-flex}.count--delayed{background:var(--dl-track);color:var(--dl-text)}.count--waiting{background:var(--wc-track);color:var(--wc-text)}.progress{background:#eaecf0;border-radius:999px;flex:1;height:8px;overflow:hidden}.progress-fill{background:#1570ef;border-radius:999px;height:100%}.progress--green .progress-fill{background:var(--ip-fill)}.app{flex-direction:column;height:100%;display:flex}.topbar{border-bottom:1px solid var(--border);z-index:20;background:#fff;flex:none;justify-content:space-between;align-items:center;height:54px;padding:0 16px 0 18px;display:flex}.brand{color:var(--text);align-items:center;gap:10px;font-size:15px;font-weight:700;display:flex}.brand-mark{background:var(--primary);border-radius:7px;flex-direction:column;flex:none;justify-content:center;gap:3px;width:28px;height:28px;padding:0 5px;display:inline-flex}.brand-mark i{background:#fff;border-radius:2px;height:4px;display:block}.brand-mark i:first-child{width:62%}.brand-mark i:nth-child(2){background:#93c5fd;width:70%;margin-left:30%}.brand-mark i:nth-child(3){width:44%;margin-left:14%}.brand-mark--lg{border-radius:12px;gap:5px;width:46px;height:46px;padding:0 9px}.brand-mark--lg i{border-radius:3px;height:6px}.topbar-right{align-items:center;gap:14px;display:flex}.save-state{color:var(--muted);align-items:center;gap:6px;font-size:12.5px;font-weight:600;display:flex}.save-state--saved{color:var(--ip-text)}.save-state--error{color:var(--dl-text)}.user-menu{position:relative}.user-btn{height:38px;color:var(--muted);border-radius:9px;align-items:center;gap:8px;padding:0 8px 0 4px;display:flex}.user-btn:hover{background:#f2f4f7}.avatar{background:var(--primary-tint);color:#3538cd;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;font-size:13px;font-weight:700;display:inline-flex}.user-name{color:var(--text);font-size:13.5px;font-weight:600}.menu{border:1px solid var(--border);width:270px;box-shadow:var(--shadow-lg);z-index:40;background:#fff;border-radius:10px;padding:6px;position:absolute;top:calc(100% + 6px);right:0}.menu-head{border-bottom:1px solid var(--border-soft);margin-bottom:4px;padding:8px 10px 10px}.menu-email{word-break:break-all;font-size:13px;font-weight:600}.menu-role{color:var(--muted);margin-top:2px;font-size:12px}.menu-item{width:100%;color:var(--text-2);border-radius:6px;align-items:center;gap:8px;padding:8px 10px;font-size:13.5px;display:flex}.menu-item:hover{color:var(--text);background:#f2f4f7}.menu-item-text{text-align:left;flex-direction:column;align-items:flex-start;gap:1px;display:flex}.menu-item-sub{color:var(--faint);font-size:11.5px}.menu-item-sub.is-due{color:#b54708}.menu-dot{background:#f79009;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 2px #fff}.backup-reminder{color:#b54708;background:#fffaeb;border:1px solid #fedf89;border-radius:8px;align-items:center;gap:8px;padding:5px 6px 5px 10px;font-size:12.5px;display:inline-flex}.page-head-actions{align-items:center;gap:10px;display:flex}.app-body{flex:1;min-height:0;display:flex}.sidebar{border-right:1px solid var(--border);background:#fbfbfc;flex:none;width:236px;padding:14px 10px;overflow-y:auto}.side-nav{flex-direction:column;gap:2px;margin-bottom:14px;display:flex}.side-link{height:36px;color:var(--text-2);border-radius:8px;align-items:center;gap:9px;padding:0 10px;font-size:13.5px;font-weight:600;display:flex}.side-link:hover{background:#f2f4f7}.side-link.active{background:var(--primary-tint);color:var(--primary)}.side-title{color:var(--faint);letter-spacing:.04em;align-items:center;gap:6px;padding:8px 10px 6px;font-size:11.5px;font-weight:700;display:flex}.side-title--btn{width:100%;margin-top:10px}.side-title--btn:hover{color:var(--text-2)}.side-count{color:var(--muted);letter-spacing:0;background:#eef0f3;border-radius:999px;padding:0 6px;font-size:11px;font-weight:600}.side-list{flex-direction:column;gap:1px;margin:0;padding:0;list-style:none;display:flex}.side-poc{color:var(--text-2);border-radius:7px;align-items:center;gap:9px;padding:7px 10px;font-size:13px;display:flex}.side-poc:hover{background:#f2f4f7}.side-poc.active{background:var(--primary-tint);color:var(--primary);font-weight:600}.side-poc-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.side-empty{color:var(--faint);padding:6px 10px;font-size:12px}.main{flex:1;min-width:0;overflow:auto}.page{flex-direction:column;gap:16px;min-width:720px;padding:18px 24px 40px;display:flex}.page--fill{gap:14px;height:100%;padding-bottom:18px}.page-center{justify-content:center;align-items:center;height:100%;min-height:300px;padding:24px;display:flex}.center-screen{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.notice-card{border:1px solid var(--border);text-align:center;max-width:440px;box-shadow:var(--shadow-sm);background:#fff;border-radius:12px;padding:28px 32px}.notice-card h1,.notice-card h2{margin:0 0 8px;font-size:17px}.notice-card p{color:var(--muted);margin:0 0 16px;font-size:13.5px}.page-head{justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.page-title{margin:0;font-size:20px;font-weight:700}.page-sub{color:var(--muted);margin-top:3px;font-size:12.5px}.back-link{color:var(--muted);align-items:center;gap:5px;width:fit-content;margin-bottom:-6px;font-size:13px;display:inline-flex}.back-link:hover{color:var(--primary)}.card{border:1px solid var(--border);box-shadow:var(--shadow-sm);background:#fff;border-radius:12px}.card--gantt{flex-direction:column;display:flex;overflow:hidden}.card--fill{flex:1;min-height:380px}.card-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;min-height:54px;padding:12px 16px;display:flex}.card-title{align-items:center;gap:8px;margin:0;font-size:14.5px;font-weight:700;display:flex}.count-muted{color:var(--faint);font-size:12px;font-weight:600}.stats{flex:none;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.stat{border:1px solid var(--border);text-align:left;box-shadow:var(--shadow-sm);background:#fff;border-radius:12px;grid-template-columns:1fr auto;grid-template-areas:"label value""caption value";align-items:center;column-gap:12px;padding:12px 16px 13px;transition:border-color .12s,box-shadow .12s;display:grid}.stat:hover{border-color:var(--border-strong)}.stat.is-active{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary), 0 0 0 4px var(--focus)}.stat-label{color:var(--text-2);grid-area:label;font-size:13px;font-weight:700}.stat-caption{color:var(--faint);grid-area:caption;font-size:12px}.stat-value{font-variant-numeric:tabular-nums;color:var(--text);grid-area:value;font-size:28px;font-weight:700;line-height:1}.stat--delayed .stat-value{color:#d92d20}.stat--waiting .stat-value{color:#dc6803}.stat--soon .stat-value{color:#b54708}.gantt-toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;flex:none;justify-content:space-between;align-items:center;gap:12px;min-height:50px;padding:9px 12px 9px 14px;display:flex}.gantt-toolbar-left,.gantt-toolbar-right{align-items:center;gap:10px;display:flex}.toolbar-group{align-items:center;gap:2px;display:flex}.filter-chip{background:var(--primary-tint);color:var(--primary);border-radius:999px;align-items:center;gap:4px;padding:2px 3px 2px 11px;font-size:12.5px;font-weight:600;display:inline-flex}.filter-chip .icon-btn{color:var(--primary)}.legend{color:var(--muted);flex-wrap:wrap;gap:12px;margin-right:6px;font-size:11.5px;display:flex}.legend-item{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.lg{border-radius:2px;width:16px;height:9px;display:inline-block}.lg--not_started{background:var(--ns-track);box-shadow:inset 0 0 0 1px var(--ns-border)}.lg--in_progress{background:var(--ip-fill)}.lg--waiting_client{background:var(--wc-fill)}.lg--delayed{background:var(--dl-fill)}.lg--done{background:#b9c0cb}.lg-ms{background:#344054;border-radius:1px;width:8px;height:8px;margin:0 2px;display:inline-block;transform:rotate(45deg)}.lg-today{background:var(--today);width:2px;height:12px;margin:0 2px;display:inline-block}.gantt{overscroll-behavior:contain;background:#fff;max-height:70vh;position:relative;overflow:auto}.gantt--fill{flex:1;min-height:0;max-height:none}.gantt.is-dragging,.gantt.is-dragging *{-webkit-user-select:none;user-select:none;cursor:grabbing!important}.g-inner{min-height:100%;position:relative}.g-head{z-index:6;border-bottom:1px solid var(--border);background:#fff;display:flex;position:sticky;top:0}.g-corner{z-index:7;border-right:1px solid var(--border);color:var(--muted);background:#fff;flex:none;align-items:flex-end;padding:0 14px 8px;font-size:12px;font-weight:600;display:flex;position:sticky;left:0}.g-scale{flex:none;position:relative}.g-scale-top,.g-scale-bottom{height:26px;position:relative}.g-scale-top{border-bottom:1px solid var(--border-soft)}.g-scale-cell{border-left:1px solid var(--border-soft);color:var(--muted);white-space:nowrap;align-items:center;padding:0 6px;font-size:12px;display:flex;position:absolute;top:0;bottom:0}.g-scale-top .g-scale-cell{color:var(--text-2);font-weight:700}.g-scale-sticky{left:calc(var(--left-w) + 8px);position:sticky}.g-scale-bottom--day .g-scale-cell{flex-direction:column;justify-content:center;gap:1px;padding:0;line-height:1}.g-scale-bottom--week .g-scale-cell,.g-scale-bottom--month .g-scale-cell{padding-left:6px}.g-day-num{color:var(--text-2);font-size:11.5px;font-weight:600}.g-day-wd{color:var(--faint);font-size:9.5px}.g-scale-cell.is-weekend{background:#fafbfc}.g-scale-cell.is-weekend .g-day-num{color:var(--faint)}.g-scale-bottom .g-scale-cell.is-today{color:var(--today);box-shadow:inset 0 -2px 0 var(--today);background:#fff1f1;font-weight:700}.g-scale-bottom .g-scale-cell.is-today .g-day-num,.g-scale-bottom .g-scale-cell.is-today .g-day-wd{color:var(--today)}.g-body{position:relative}.g-grid{z-index:0;pointer-events:none;position:absolute;top:0;bottom:0}.g-vline{background:var(--grid);width:1px;position:absolute;top:0;bottom:0}.g-weekend{background:#f9fafb;position:absolute;top:0;bottom:0}.g-today{background:var(--today);opacity:.8;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}.g-links{z-index:1;pointer-events:none;position:absolute;top:0;overflow:visible}.g-link{fill:none;stroke:#98a2b3;stroke-width:1.3px}.g-link--bad{stroke:#e5484d;stroke-width:1.7px}.g-link--focus{stroke:#667085;stroke-width:1.5px}.g-arrowhead{fill:#98a2b3}.g-arrowhead--bad{fill:#e5484d}.g-row{border-bottom:1px solid var(--row-line);display:flex;position:relative}.g-row:hover .g-cell{background:#f7f9fc}.g-row:hover .g-track{background:#1d4ed806}.g-row.is-active .g-track{background:#1d4ed80d}.g-cell{z-index:4;width:var(--left-w);border-right:1px solid var(--border);background:#fff;flex:none;align-items:center;gap:6px;min-width:0;padding:0 10px 0 8px;display:flex;position:sticky;left:0}.g-track{flex:1;position:relative}.g-toggle{width:22px;height:22px;color:var(--muted);border-radius:5px;flex:none;justify-content:center;align-items:center;display:inline-flex}.g-toggle:hover{color:var(--text);background:#eaecf0}.g-row--poc{border-bottom-color:var(--border)}.g-row--poc.is-open .g-cell{background:#f9fafb}.g-row--poc.is-open .g-track{background:#f9fafb99}.g-poc-text{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.g-poc-name{color:var(--text);text-align:left;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:13.5px;font-weight:700;overflow:hidden}.g-poc-name:hover{color:var(--primary);text-underline-offset:2px;text-decoration:underline}.g-poc-meta{color:var(--muted);white-space:nowrap;align-items:center;gap:5px;font-size:11.5px;display:flex;overflow:hidden}.g-poc-side{flex:none;align-items:center;gap:5px;display:flex}.g-pct{font-variant-numeric:tabular-nums;color:var(--text-2);text-align:right;min-width:34px;font-size:12px;font-weight:700}.g-muted{color:var(--faint);font-size:11.5px}.g-row--phase .g-cell{background:#f9fafb;gap:4px}.g-row--phase .g-track{background:#f9fafbb3}.g-row--phase:hover .g-cell{background:#f2f4f7}.g-row--phase.depth-1 .g-cell{padding-left:30px}.g-phase-name{color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12.5px;font-weight:700;overflow:hidden}.g-phase-side{flex:none;align-items:center;gap:4px;display:flex}.g-row-actions{gap:1px;display:none}.g-row:hover .g-row-actions{display:inline-flex}.g-row--add .g-cell{padding-left:12px}.g-row--task.depth-1 .g-cell{padding-left:36px}.g-row--task.depth-2 .g-cell{padding-left:60px}.g-task-name{text-align:left;min-width:0;color:var(--text);flex:1;align-items:center;gap:8px;height:100%;font-size:13px;display:flex}.g-task-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.g-task-name:hover .g-task-text{color:var(--primary);text-underline-offset:2px;text-decoration:underline}.g-ms-icon{background:#344054;border-radius:1px;flex:none;width:8px;height:8px;margin:0 .5px;transform:rotate(45deg)}.g-ms-icon--done{background:#98a2b3}.g-ms-icon--delayed{background:var(--dl-fill)}.g-ms-icon--waiting_client{background:var(--wc-fill)}.g-pocbar{cursor:pointer;z-index:2;background:#dbe7fe;border-radius:5px;height:20px;margin-top:-10px;position:absolute;top:50%;overflow:hidden;box-shadow:inset 0 0 0 1px #b2ccff}.g-pocbar-fill{background:#2e6bf0;height:100%}.g-pocbar:hover{filter:brightness(.97)}.g-pocbar--risk{box-shadow:inset 0 0 0 1.5px var(--dl-fill)}.g-pocbar--planning{background:#f5f8ff repeating-linear-gradient(135deg,#0000 0 6px,#84adff2e 6px 8px);box-shadow:inset 0 0 0 1px #a4bcfd}.g-pocbar--planning .g-pocbar-fill{background:#84adff}.g-pocbar--paused{background:#f2f4f7 repeating-linear-gradient(135deg,#0000 0 5px,#98a2b340 5px 7px);box-shadow:inset 0 0 0 1px #d0d5dd}.g-pocbar--paused .g-pocbar-fill{background:#98a2b3}.g-pocbar--closed{box-shadow:none;background:#eaecf0}.g-pocbar--closed .g-pocbar-fill{background:#b9c0cb}.g-phasebar{z-index:2;background:#d0d5dd;border-radius:2px;height:8px;margin-top:-4px;position:absolute;top:50%}.g-phasebar:before,.g-phasebar:after{content:"";border-top:7px solid #475467;width:0;height:0;position:absolute;top:4px}.g-phasebar:before{border-right:6px solid #0000;left:0}.g-phasebar:after{border-left:6px solid #0000;right:0}.g-phasebar-fill{background:#475467;border-radius:2px;height:100%}.g-bar{z-index:2;background:var(--c-track);height:18px;box-shadow:inset 0 0 0 1px var(--c-border);border-radius:4px;margin-top:-9px;position:absolute;top:50%;overflow:hidden}.g-bar-fill{background:var(--c-fill);height:100%}.g-bar--not_started{--c-track:var(--ns-track);--c-border:var(--ns-border);--c-fill:#b9c0cb}.g-bar--in_progress{--c-track:var(--ip-track);--c-border:var(--ip-border);--c-fill:var(--ip-fill)}.g-bar--waiting_client{--c-track:var(--wc-track);--c-border:var(--wc-border);--c-fill:var(--wc-fill)}.g-bar--delayed{--c-track:var(--dl-track);--c-border:var(--dl-border);--c-fill:var(--dl-fill)}.g-bar--done{--c-track:#d0d5dd;--c-border:transparent;--c-fill:#b9c0cb}.g-bar-check{color:#fff;display:flex;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.g-bar:not(.is-editable),.g-ms:not(.is-editable){cursor:pointer}.g-bar.is-editable,.g-ms.is-editable{cursor:grab;touch-action:none}.g-bar.is-editable:hover{box-shadow:inset 0 0 0 1px var(--c-border), 0 0 0 2px #1d4ed847}.g-bar.is-dragging{box-shadow:0 0 0 2px var(--primary), 0 4px 12px #1018282e;overflow:visible}.g-handle{cursor:ew-resize;z-index:1;width:8px;position:absolute;top:0;bottom:0}.g-handle--start{left:0}.g-handle--end{right:0}.g-bar.is-editable:hover .g-handle:after{content:"";background:#fff;border-radius:2px;width:3px;position:absolute;top:4px;bottom:4px;box-shadow:0 0 0 1px #10182840}.g-handle--start:after{left:2px}.g-handle--end:after{right:2px}.g-ms{z-index:2;background:#344054;border-radius:2px;width:13px;height:13px;position:absolute;top:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:0 0 0 2px #fff}.g-ms--done{background:#98a2b3}.g-ms--delayed{background:var(--dl-fill)}.g-ms--waiting_client{background:var(--wc-fill)}.g-ms.is-editable:hover{box-shadow:0 0 0 2px #fff,0 0 0 4px #1d4ed859}.g-label{color:var(--muted);white-space:nowrap;z-index:2;pointer-events:none;background:#ffffffdb;border-radius:4px;align-items:center;gap:6px;margin-left:-3px;padding:0 3px;font-size:11.5px;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.g-label-owner{color:var(--text-2)}.g-label-pct,.g-label-dates{font-variant-numeric:tabular-nums}.g-label-done{color:var(--faint)}.g-drag-tip{color:#fff;z-index:5;white-space:nowrap;pointer-events:none;font-variant-numeric:tabular-nums;background:#101828;border-radius:6px;padding:3px 8px;font-size:11.5px;font-weight:600;position:absolute;top:1px;transform:translate(-50%,-100%)}.g-empty{z-index:3;background:#fff;position:sticky;left:0}.empty{text-align:center;color:var(--muted);padding:56px 24px;font-size:13.5px}.empty h3{color:var(--text);margin:0 0 6px;font-size:15px}.empty p{max-width:460px;margin:0 auto;line-height:1.6}.empty-actions{justify-content:center;gap:8px;margin-top:16px;display:flex}.poc-head{padding:18px 20px}.poc-head-top{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.poc-head-title{align-items:center;gap:10px;min-width:0;display:flex}.poc-head-title h1{margin:0;font-size:21px}.poc-head-actions{flex:none;gap:4px;display:flex}.poc-facts{border-top:1px solid var(--border-soft);grid-template-columns:1fr 1.7fr .9fr .9fr 1.3fr;gap:16px;margin-top:16px;padding-top:16px;display:grid}.fact-label{color:var(--muted);margin-bottom:4px;font-size:12px}.fact-value{color:var(--text);font-variant-numeric:tabular-nums;font-size:14px;font-weight:600}.fact-sub{color:var(--muted);margin-top:2px;font-size:12px;font-weight:400;display:block}.poc-progress{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin-top:18px;display:flex}.poc-progress-main{flex:1;align-items:center;gap:12px;min-width:280px;max-width:560px;display:flex}.poc-progress-label{color:var(--muted);flex:none;font-size:12.5px}.poc-progress-value{font-variant-numeric:tabular-nums;min-width:44px;font-size:16px;font-weight:700}.poc-progress-flags{flex-wrap:wrap;gap:6px;display:flex}.poc-progress-flags .chip{border-radius:6px;padding:0 9px;font-size:12px;line-height:22px}.poc-notes{color:var(--text-2);white-space:pre-wrap;background:#f9fafb;border-radius:8px;margin-top:14px;padding:10px 12px;font-size:13px}.req-count{color:#b54708;background:#fffaeb;border-radius:6px;padding:1px 8px;font-size:12px;font-weight:700}.req-count.is-overdue{color:var(--dl-text);background:var(--dl-track)}.req-count.is-ok{color:var(--ip-text);background:#ecfdf3}.req-list{margin:0;padding:4px 0;list-style:none}.req{align-items:center;gap:12px;min-height:46px;padding:8px 16px;display:flex}.req:hover{background:#f9fafb}.req-check{color:#98a2b3;border-radius:50%;flex:none;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.req-check:not(:disabled):hover{color:var(--ip-fill);background:#ecfdf3}.req-check:disabled{cursor:default}.req--received .req-check{background:var(--ip-fill);color:#fff}.req--received .req-check:not(:disabled):hover{background:var(--ip-text);color:#fff}.req.is-overdue .req-check{color:var(--dl-fill)}.req-main{flex:1;min-width:0}.req-name{color:var(--text);font-size:13.5px;font-weight:600}.req--received .req-name,.req--na .req-name{color:var(--muted);font-weight:500}.req--na .req-name{text-decoration:line-through}.req-notes{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:12px;overflow:hidden}.req-source{color:#475467;background:#f2f4f7;border-radius:4px;flex:none;padding:1px 7px;font-size:11.5px;font-weight:600}.req-source--client{color:#c11574;background:#fdf2fa}.req-source--sales{color:#3538cd;background:#eef4ff}.req-date{width:150px;color:var(--text-2);font-variant-numeric:tabular-nums;flex:none;justify-content:flex-end;align-items:center;gap:6px;font-size:12.5px;display:inline-flex}.req.is-overdue .req-date{color:var(--dl-text);font-weight:600}.req-received{color:var(--ip-text)}.req-actions{opacity:0;flex:none;gap:2px;display:flex}.req:hover .req-actions,.req-actions:focus-within{opacity:1}.req-done-toggle button{color:var(--muted);align-items:center;gap:4px;padding:8px 16px;font-size:12.5px;display:inline-flex}.req-done-toggle button:hover{color:var(--text)}.req-allgood{color:var(--ip-text);padding:12px 16px;font-size:13px}.req-empty{color:var(--muted);margin:0;padding:16px;font-size:13px;line-height:1.6}.req-empty p{margin:0}.req-empty-actions{gap:8px;margin-top:12px;display:flex}.req-form{border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);background:#f9fafb;padding:12px 16px}.req-form form{flex-direction:column;gap:8px;display:flex}.req-form-row{grid-template-columns:1fr 120px 150px 110px;gap:8px;display:grid}.req-form-actions{justify-content:flex-end;gap:6px;display:flex}.count--reqs{color:#475467;white-space:nowrap;background:#fff;font-weight:600;box-shadow:inset 0 0 0 1px #d0d5dd}.count--reqs.is-overdue{color:var(--dl-text);box-shadow:inset 0 0 0 1px var(--dl-border)}.doc-list{margin:0;padding:6px 0;list-style:none}.doc{align-items:center;gap:12px;min-height:42px;padding:8px 16px;display:flex}.doc:hover{background:#f9fafb}.doc-link{color:var(--text);align-items:center;gap:8px;min-width:0;font-size:13.5px;font-weight:600;display:flex}.doc-link>svg:first-child{color:var(--muted);flex:none}.doc-link:hover .doc-name{color:var(--primary);text-underline-offset:2px;text-decoration:underline}.doc-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.doc-ext{color:var(--faint);flex:none}.doc-type{color:#475467;background:#f2f4f7;border-radius:4px;flex:none;padding:1px 7px;font-size:11.5px;font-weight:600}.doc-host{color:var(--faint);white-space:nowrap;margin-left:auto;font-size:12px}.doc-actions{opacity:0;gap:2px;display:flex}.doc:hover .doc-actions,.doc-actions:focus-within{opacity:1}.doc-empty{color:var(--muted);padding:14px 16px;font-size:13px}.doc-form{border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);background:#f9fafb;padding:12px 16px}.doc-form form{flex-direction:column;gap:8px;display:flex}.doc-form-row{grid-template-columns:1fr 150px;gap:8px;display:grid}.doc-form-actions{justify-content:flex-end;gap:6px;display:flex}.drawer-overlay{z-index:50;background:#10182829;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer{background:#fff;flex-direction:column;width:460px;max-width:100vw;height:100%;animation:.16s ease-out slide-in;display:flex;box-shadow:-10px 0 30px #1018281f}@keyframes slide-in{0%{opacity:.6;transform:translate(24px)}to{opacity:1;transform:none}}.drawer-head{border-bottom:1px solid var(--border);flex:none;justify-content:space-between;align-items:center;gap:12px;height:54px;padding:0 10px 0 20px;display:flex}.drawer-kicker{color:var(--muted);white-space:nowrap;gap:6px;min-width:0;font-size:12.5px;display:flex;overflow:hidden}.kicker-link{color:var(--primary);text-overflow:ellipsis;font-weight:600;overflow:hidden}.kicker-link:hover{text-decoration:underline}.drawer-body{flex:1;padding:20px 20px 28px;overflow:auto}.drawer-title{margin:0 0 16px;font-size:18px;font-weight:700;line-height:1.35}.drawer-foot{border-top:1px solid var(--border);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:12px 14px 12px 12px;display:flex}.drawer-foot-left,.drawer-foot-right{align-items:center;gap:4px;display:flex}.drawer-foot-right{gap:8px}.banner{border-radius:8px;align-items:flex-start;gap:8px;margin-bottom:18px;padding:10px 12px;font-size:13px;line-height:1.5;display:flex}.banner svg{flex:none;margin-top:1px}.banner--delayed{color:#b42318;background:#fef3f2;border:1px solid #fecdca}.banner--waiting{color:#b54708;background:#fffaeb;border:1px solid #fedf89}.pred-picker{flex-direction:column;gap:8px;display:flex}.pred-chips{flex-wrap:wrap;gap:6px;display:flex}.pred-chip{color:var(--text-2);background:#f2f4f7;border-radius:6px;align-items:center;gap:4px;padding:3px 4px 3px 9px;font-size:12.5px;font-weight:600;display:inline-flex}.pred-chip button{color:var(--muted);border-radius:4px;padding:2px;display:flex}.pred-chip button:hover{color:var(--text);background:#e4e7ec}.ro-badges{align-items:center;gap:6px;margin-bottom:10px;display:flex}.ro-list{grid-template-columns:80px 1fr;gap:14px 12px;margin:0;font-size:13.5px;display:grid}.ro-list dt{color:var(--muted);padding-top:1px;font-size:12.5px}.ro-list dd{color:var(--text);margin:0}.ro-progress{font-variant-numeric:tabular-nums;align-items:center;gap:10px;font-weight:600;display:flex}.ro-note{color:var(--faint);align-items:center;gap:6px;margin-top:28px;font-size:12.5px;display:flex}.overlay{z-index:60;background:#1018285c;justify-content:center;align-items:flex-start;padding:9vh 16px 24px;display:flex;position:fixed;inset:0;overflow:auto}.modal{box-shadow:var(--shadow-lg);background:#fff;border-radius:14px;flex-direction:column;max-width:100%;animation:.14s ease-out pop-in;display:flex}@keyframes pop-in{0%{opacity:.5;transform:translateY(6px)scale(.99)}to{opacity:1;transform:none}}.modal-head{justify-content:space-between;align-items:center;padding:16px 12px 0 20px;display:flex}.modal-head h2{margin:0;font-size:16.5px;font-weight:700}.modal-body{padding:16px 20px 20px}.modal-foot{border-top:1px solid var(--border);justify-content:flex-end;align-items:center;gap:8px;padding:12px 16px;display:flex}.modal-foot-left{align-items:center;gap:4px;margin-right:auto;display:flex}.confirm-msg{color:var(--text-2);font-size:14px;line-height:1.75}.choice-cards{grid-template-columns:1.5fr 1fr;gap:10px;display:grid}.choice{border:1px solid var(--border-strong);cursor:pointer;border-radius:10px;flex-direction:column;gap:4px;padding:12px 14px;display:flex;position:relative}.choice input{opacity:0;pointer-events:none;position:absolute}.choice:hover{border-color:#98a2b3}.choice.is-on{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary);background:#f7f9ff}.choice:focus-within{box-shadow:0 0 0 1px var(--primary), 0 0 0 4px var(--focus)}.choice-title{font-size:13.5px;font-weight:700}.choice-desc{color:var(--muted);font-size:12.5px;line-height:1.55}.toasts{z-index:80;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast{color:#fff;min-width:280px;max-width:440px;box-shadow:var(--shadow-lg);background:#101828;border-radius:10px;align-items:center;gap:10px;padding:10px 8px 10px 14px;font-size:13.5px;animation:.16s ease-out pop-in;display:flex}.toast>span{flex:1}.toast--error{background:#b42318}.toast--success svg:first-child{color:#75e0a7}.toast .icon-btn{color:#ffffffb3}.toast .icon-btn:hover{color:#fff;background:#ffffff1f}.login{background:radial-gradient(1200px 500px at 50% -10%, #e6edff 0%, #e6edff00 70%), var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{border:1px solid var(--border);background:#fff;border-radius:16px;width:400px;max-width:100%;padding:32px 32px 26px;box-shadow:0 12px 32px #10182814}.login-brand{align-items:center;gap:14px;margin-bottom:28px;display:flex}.login-brand h1{margin:0;font-size:19px}.login-brand p{color:var(--muted);margin:3px 0 0;font-size:13px}.login-form{flex-direction:column;gap:16px;display:flex}.login-form input:not([type=checkbox]){height:40px}.login-foot{color:var(--faint);text-align:center;margin:20px 0 0;font-size:12.5px;line-height:1.6}.spinner{border:3px solid #d0d5dd;border-top-color:var(--primary);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}.spinner--xs{border-width:2px;width:12px;height:12px}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=1100px){.legend{display:none}}@media (width<=900px){.sidebar{display:none}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.poc-facts{grid-template-columns:1fr 1fr}.user-name{display:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
