:root{--plan-bg: #f5f5f5;--plan-surface: #ffffff;--plan-surface-alt: #fafafa;--plan-text: #262626;--plan-text-secondary: #595959;--plan-text-tertiary: #8c8c8c;--plan-text-quaternary: #bfbfbf;--plan-border: #f0f0f0;--plan-border-strong: #d9d9d9;--plan-primary: #1677ff;--plan-error: #f5222d;--plan-warning: #fa8c16;--plan-success: #52c41a;--plan-row-project: #e6fffb;--plan-row-epic: #f4f0fb;--plan-row-story: #f5f9ff;--plan-row-hold: #f5f5f5;--plan-done-bg: #f6ffed;--plan-actual-bar: #b7eb8f;--plan-today: #fa8c16;--plan-marker-label-bg: #ffffffd9;--plan-hatch: #262626;color-scheme:light}:root[data-theme=dark]{--plan-row-project: #113536;--plan-row-epic: #1f1533;--plan-row-story: #111d2c;--plan-row-hold: #1f1f1f;--plan-done-bg: #162312;--plan-actual-bar: #49aa19;--plan-today: #d87a16;--plan-marker-label-bg: #141414d9;--plan-hatch: #d9d9d9;color-scheme:dark}html,body,#app{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Arial,sans-serif;background:var(--plan-bg);color:var(--plan-text)}.page{padding:16px 24px}.page__header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.page__title{margin:0}.startup-error{font-family:system-ui,sans-serif;max-width:640px;margin:80px auto;padding:24px;border-radius:8px;border:1px solid #ffccc7;background:#fff2f0;color:#262626}.startup-error__title{margin-top:0}.startup-error__hint{color:#8c8c8c}.startup-error__trace{white-space:pre-wrap;color:#a8071a}@media (prefers-color-scheme: dark){:root:not([data-theme]){color-scheme:dark}:root:not([data-theme]) body{background:#141414;color:#e6e6e6}.startup-error{border-color:#58181c;background:#2a1215;color:#e6e6e6}.startup-error__hint{color:#8c8c8c}.startup-error__trace{color:#ff7875}}.main-layout{min-height:100vh}.main-layout__header.ant-layout-header{display:flex;align-items:center;justify-content:space-between;background:var(--plan-surface, #fff);color:var(--plan-text, #262626);border-bottom:1px solid var(--plan-border);padding:0 24px}.main-layout__title{font-size:18px;font-weight:600}.main-layout__actions{display:flex;align-items:center;gap:12px}.main-layout__logout{cursor:pointer}.main-layout__sider{background:var(--plan-surface, #fff);border-right:1px solid var(--plan-border)}.main-layout__sider .ant-layout-sider-children{display:flex;flex-direction:column}.main-layout__sider .ant-menu{flex:1;border-inline-end:none;border-right:none}.main-layout__sider .ant-layout-sider-trigger{background:var(--plan-surface, #fff);color:var(--plan-text-secondary, #595959);border-top:1px solid var(--plan-border);border-right:1px solid var(--plan-border)}.main-layout__sider .ant-layout-sider-trigger:hover{background:var(--plan-surface-alt, #fafafa)}.main-layout__content{background:var(--plan-bg);overflow:auto}.jira-link{white-space:nowrap}.jira-link__icon{font-size:10px;margin-left:4px;opacity:.5}.gantt{display:flex;background:var(--plan-surface, #fff);border:1px solid var(--plan-border);border-radius:8px;overflow:hidden;--row-height: 48px}.gantt__pane--tree{flex-grow:0;flex-shrink:0;border-right:1px solid var(--plan-border-strong, #d9d9d9)}.gantt__pane--timeline{flex:1;overflow-x:auto}.gantt__scroll{position:relative}.gantt__row{display:flex;align-items:center;height:var(--row-height);border-bottom:1px solid var(--plan-border);font-size:13px;white-space:nowrap;border-left:3px solid var(--type-color, transparent)}.gantt__row--head{font-weight:600;background:var(--plan-surface-alt, #fafafa);position:sticky;top:0;z-index:3}.gantt__row--head .gantt__cell{overflow:visible}.gantt__row--project{background:var(--plan-row-project, #e6fffb);font-weight:700}.gantt__row--epic{background:var(--plan-row-epic, #f4f0fb);font-weight:600}.gantt__row--story{background:var(--plan-row-story, #f5f9ff);font-weight:500}.gantt__row--task{background:var(--plan-surface, #fff)}.gantt__row--hold{background:var(--plan-row-hold, #f5f5f5);color:var(--plan-text-tertiary, #8c8c8c)}.gantt__row--dragging{opacity:.4}.gantt__row--drop{box-shadow:inset 0 2px 0 var(--plan-primary, #1677ff)}.gantt__hold,.gantt__ready{margin-left:6px}.gantt__handle{color:var(--plan-text-quaternary, #bfbfbf);cursor:grab;flex:0 0 auto;padding-left:4px}.gantt__cell{overflow:hidden;text-overflow:ellipsis;position:relative;box-sizing:border-box;padding-right:10px;padding-left:10px}.gantt__cell--name{display:flex;align-items:center;gap:6px;min-width:0;padding-left:8px}.gantt__cell--estimate,.gantt__cell--done{text-align:right;padding-right:12px}.gantt__cell--person{color:var(--plan-text-secondary, #595959)}.gantt__cell--actions{text-align:center;display:flex;gap:8px;justify-content:center}.gantt__resizer{position:absolute;top:0;right:0;bottom:0;width:8px;cursor:col-resize;z-index:4}.gantt__resizer:before{content:"";position:absolute;top:0;right:0;bottom:0;width:2px;background:var(--plan-border-strong, #d9d9d9);transition:background .1s}.gantt__resizer:hover:before,.gantt__resizer--active:before{background:var(--plan-primary, #1677ff)}.gantt__resizer:hover,.gantt__resizer--active{background:#1677ff33}.gantt__planned{font-variant-numeric:tabular-nums;color:var(--plan-text-tertiary, #8c8c8c);position:relative;z-index:1}.gantt__planned--suspicious{color:var(--plan-error, #d4380d);text-decoration:underline dotted;cursor:help}.gantt__estimate{font-variant-numeric:tabular-nums;position:relative;z-index:1}.gantt__estimate--none{color:var(--plan-text-quaternary, #bfbfbf)}.gantt__estimate--spent{color:var(--plan-warning, #fa8c16);font-weight:600}.gantt__progress{position:absolute;left:0;top:0;bottom:0;background:var(--plan-done-bg, #f6ffed);z-index:0}.gantt__done-share{position:relative;z-index:1;font-size:11px;color:var(--plan-text-tertiary, #8c8c8c);margin-left:6px}.gantt__settings{color:var(--plan-text-quaternary, #bfbfbf);cursor:pointer}.gantt__settings:hover{color:var(--plan-primary, #1677ff)}.gantt__close{color:var(--plan-text-quaternary, #bfbfbf);cursor:pointer}.gantt__close:hover{color:var(--plan-error, #f5222d)}.gantt__pin{margin-left:4px;color:var(--plan-warning, #fa8c16)}.gantt__parallel{margin-left:4px;cursor:pointer;color:var(--plan-primary, #1677ff)}.gantt__parallel--off{color:var(--plan-text-quaternary, #bfbfbf)}.gantt__unpin{margin-left:4px;color:var(--plan-text-quaternary, #bfbfbf);cursor:pointer}.gantt__unpin:hover{color:var(--plan-error, #f5222d)}.gantt__key{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;margin-right:2px}.gantt__type{display:inline-flex;align-items:center;color:var(--type-color, #d9d9d9);font-size:13px;line-height:1;flex:0 0 auto}.gantt__type svg{display:block;width:14px;height:14px}.gantt__summary{color:var(--plan-text-secondary, #595959);white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.25;min-width:0}.gantt__caret{cursor:pointer;transition:transform .15s}.gantt__caret--collapsed{transform:rotate(-90deg)}.gantt__caret-placeholder{display:inline-block;width:14px}.gantt__ticks{position:sticky;top:0;z-index:3}.gantt__tick{position:absolute;font-size:11px;color:var(--plan-text-tertiary, #8c8c8c);padding-left:3px}.gantt__tick--major{color:var(--plan-text, #262626);font-weight:600}.gantt__body{position:relative}.gantt__grid{position:absolute;top:0;bottom:0;width:1px;background:var(--plan-bg, #f5f5f5)}.gantt__grid--major{background:var(--plan-surface-alt, #e8e8e8)}.gantt__lane{position:absolute;left:0;right:0;height:var(--row-height);border-bottom:1px solid var(--plan-border)}.gantt__bar{position:absolute;top:8px;height:16px;border-radius:4px;opacity:.9}.gantt__bar--rollup{top:12px;height:8px;border-radius:2px;opacity:.55}.gantt__bar--actual{background:var(--plan-actual-bar, #b7eb8f);opacity:.85}.gantt__bar--pending{background:#f5222d2e;border:1px dashed var(--plan-error, #f5222d)}.gantt__bar--compare{top:4px;height:4px;background:repeating-linear-gradient(90deg,var(--plan-hatch, #262626) 0 4px,transparent 4px 8px);opacity:.75}.gantt__bar--draggable{cursor:grab}.gantt__bar--dragging{cursor:grabbing;opacity:.7}.gantt__marker{position:absolute;top:0;bottom:0;width:2px;background:var(--marker-color, #722ed1);z-index:2}.gantt__marker--today{--marker-color: var(--plan-today, #fa8c16);border-left:2px dashed var(--plan-today, #fa8c16);background:transparent}.gantt__marker-label{position:absolute;top:2px;left:4px;font-size:11px;color:var(--marker-color, #722ed1);background:var(--plan-marker-label-bg, rgba(255, 255, 255, .8509803922));padding:0 4px;border-radius:3px;cursor:pointer;white-space:nowrap}.parallel-prompt__lead[data-v-4d406238]{margin-bottom:12px}.parallel-prompt__list.ant-checkbox-group[data-v-4d406238]{display:block;width:100%;white-space:normal}.parallel-prompt__row[data-v-4d406238]{margin-bottom:6px;min-width:0;max-width:100%}.parallel-prompt__row[data-v-4d406238] .ant-checkbox-wrapper{display:flex;align-items:flex-start;width:100%}.parallel-prompt__row[data-v-4d406238] .ant-checkbox{flex:none;align-self:flex-start;top:0;margin-top:3px}.parallel-prompt__row[data-v-4d406238] .ant-checkbox+span{min-width:0;overflow-wrap:anywhere}.parallel-prompt__dates[data-v-4d406238]{margin-left:8px;color:var(--plan-text-tertiary, #8c8c8c)}.parallel-prompt__actions[data-v-4d406238]{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.push-modal__warning[data-v-4aafb770],.push-modal__error[data-v-4aafb770],.push-modal__result[data-v-4aafb770]{margin-bottom:12px}.push-modal__failed[data-v-4aafb770]{margin:0 0 12px;padding-left:20px;color:var(--plan-text-secondary, #595959);font-size:13px}.push-modal__actions[data-v-4aafb770]{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.gantt-page__issues{margin-bottom:16px}.gantt-page__legend{display:flex;align-items:center;gap:16px;margin-bottom:8px;font-size:12px;color:var(--plan-text-tertiary, #8c8c8c)}.gantt-page__legend-item{display:inline-flex;align-items:center;gap:6px}.gantt-page__legend-dot{width:8px;height:8px;border-radius:50%}.gantt-page__legend-dot--actual{background:var(--plan-actual-bar, #b7eb8f)}.gantt-page__legend-bar{width:18px;height:0}.gantt-page__legend-bar--today{border-top:2px dashed var(--plan-today, #fa8c16)}.gantt-page__legend-bar--compare{border-top:3px dotted var(--plan-hatch, #262626)}.gantt-page__hint{margin-top:12px}.project-panel__head{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:12px}.project-panel__dates{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;margin:0 0 12px}.project-panel__dates dt{color:var(--plan-text-tertiary, #8c8c8c)}.project-panel__dates dd{margin:0}.project-panel__title{margin:20px 0 8px}.project-panel__form{display:flex;flex-direction:column;align-items:flex-end;gap:8px;margin-bottom:16px}.project-panel__comment{padding:10px 0;border-top:1px solid var(--plan-border-strong, #d9d9d9)}.project-panel__meta{display:flex;gap:8px;color:var(--plan-text-tertiary, #8c8c8c);font-size:12px}.project-panel__text{margin-top:4px;white-space:pre-wrap}.project-panel__actions{display:flex;gap:12px;margin-top:6px;font-size:12px}.project-panel__danger{color:var(--plan-error, #f5222d)}.project-panel__muted{color:var(--plan-text-tertiary, #8c8c8c)}.roadmap__labels-filter{min-width:220px}.roadmap__scroll{overflow-x:auto;background:var(--plan-surface, #fff);border:1px solid var(--plan-border-strong, #d9d9d9);border-radius:8px}.roadmap__timeline{min-width:720px}.roadmap__months{position:relative;height:30px;background:var(--plan-surface-alt, #fafafa);border-bottom:1px solid var(--plan-border-strong, #d9d9d9)}.roadmap__month{position:absolute;top:0;bottom:0;padding:6px 8px;overflow:hidden;font-size:12px;font-weight:600;color:var(--plan-text-secondary, #595959);white-space:nowrap;border-left:1px solid var(--plan-border, #f0f0f0);box-sizing:border-box}.roadmap__body{position:relative;min-height:60px;padding-bottom:8px;overflow-x:clip}.roadmap__grid{position:absolute;top:0;bottom:0;width:1px;background:var(--plan-border, #f0f0f0)}.roadmap__today{position:absolute;top:0;bottom:0;z-index:2;width:2px;background:var(--plan-error, #f5222d);pointer-events:none}.roadmap__today span{position:absolute;top:0;left:4px;font-size:10px;color:var(--plan-error, #f5222d)}.roadmap__empty{padding:20px;color:var(--plan-text-tertiary, #8c8c8c);text-align:center}.roadmap__row{position:relative;height:52px}.roadmap__bar{--bar-color: var(--plan-primary, #1677ff);position:absolute;top:8px;z-index:1;height:30px;cursor:pointer;background:color-mix(in srgb,var(--bar-color) 30%,var(--plan-surface, #fff));border:1px solid var(--bar-color);border-radius:7px;box-sizing:border-box}.roadmap__bar:hover{box-shadow:0 0 0 1px var(--bar-color)}.roadmap__bar--start-dashed{border-left:2px dashed var(--bar-color)}.roadmap__bar--end-dashed{border-right:2px dashed var(--bar-color)}.roadmap__bar--completed,.roadmap__bar--hold{--bar-color: var(--plan-border-strong, #d9d9d9);color:var(--plan-text-tertiary, #8c8c8c)}.roadmap__bar--completed{background:var(--plan-surface-alt, #fafafa)}.roadmap__bar--hold{background:repeating-linear-gradient(135deg,var(--plan-surface-alt, #fafafa) 0 8px,var(--plan-border, #f0f0f0) 8px 16px)}.roadmap__label{position:absolute;top:8px;z-index:2;display:flex;align-items:center;gap:6px;height:30px;padding:0 8px;color:var(--plan-text, #262626);white-space:nowrap;cursor:pointer}.roadmap__label--before{flex-direction:row-reverse}.roadmap__name{font-weight:600}.roadmap__stage.ant-tag{margin:0}.roadmap__chip{padding:0 6px;font-size:11px;line-height:18px;background:var(--plan-surface, #fff);border:1px solid var(--plan-border-strong, #d9d9d9);border-radius:9px}.roadmap__chip--state{color:var(--plan-text-secondary, #595959);border-radius:4px}.roadmap__comments{font-size:12px;color:var(--plan-text-secondary, #595959)}.roadmap__forecast{position:absolute;top:4px;z-index:1;height:38px;border-left:2px dashed var(--plan-text-tertiary, #8c8c8c);color:var(--plan-text-tertiary, #8c8c8c);pointer-events:none}.roadmap__forecast span{position:absolute;top:36px;left:4px;font-size:10px;white-space:nowrap}.roadmap__forecast--green{color:var(--plan-success, #52c41a);border-color:var(--plan-success, #52c41a)}.roadmap__forecast--amber{color:var(--plan-warning, #fa8c16);border-color:var(--plan-warning, #fa8c16)}.roadmap__forecast--red{color:var(--plan-error, #f5222d);border-color:var(--plan-error, #f5222d)}.roadmap__undated{margin-top:16px}.roadmap__undated h4{margin:0 0 8px}.roadmap__undated-item{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px;cursor:pointer;border-top:1px solid var(--plan-border, #f0f0f0)}.roadmap__undated-item:hover{background:var(--plan-surface-alt, #fafafa)}.roadmap__undated-item .ant-tag{margin:0}.workload__swatch{display:inline-block;width:10px;height:10px;margin-right:8px;border-radius:2px;vertical-align:middle}.workload__summary{margin-top:16px}.epics__sample{color:var(--plan-text-quaternary, #bfbfbf);margin-left:4px;font-size:12px}.epics__closed{margin-left:6px;font-size:11px}.epics__muted{color:var(--plan-text-quaternary, #bfbfbf)}.epics__warning{margin-bottom:4px;max-width:420px}.explainer__table{margin-top:12px}.explainer__note{margin-top:16px;color:var(--plan-text-tertiary, #8c8c8c);font-size:12px}.risks__title{display:flex;flex-direction:column;line-height:1.25;padding:4px 0}.risks__key{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--plan-text-tertiary, #8c8c8c)}.risks__summary{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.risks__block{margin-bottom:16px}.risks__unplanned{margin-bottom:4px}.risks__coverage{margin-top:12px}.risks__factors{margin-top:8px}.task-comments__facts{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;margin:0 0 12px}.task-comments__facts dt{color:var(--plan-text-tertiary, #8c8c8c)}.task-comments__facts dd{margin:0}.task-comments__title{margin:20px 0 8px}.task-comments__dev-row{display:flex;align-items:center;gap:8px;padding:2px 0}.task-comments__form{display:flex;flex-direction:column;align-items:flex-end;gap:8px;margin-bottom:16px}.task-comments__comment{padding:10px 0;border-top:1px solid var(--plan-border-strong, #d9d9d9)}.task-comments__meta{display:flex;gap:8px;color:var(--plan-text-tertiary, #8c8c8c);font-size:12px}.task-comments__text{margin-top:4px;white-space:pre-wrap}.task-comments__actions{display:flex;gap:12px;margin-top:6px;font-size:12px}.task-comments__danger{color:var(--plan-error, #f5222d)}.task-comments__muted{color:var(--plan-text-tertiary, #8c8c8c)}.task-risks__sync{font-size:12px;color:var(--plan-text-tertiary, #8c8c8c);margin-bottom:8px}.task-risks__filters{margin-bottom:16px}.task-risks__summary{margin-left:8px}.task-risks__muted{font-size:12px;color:var(--plan-text-tertiary, #8c8c8c)}.task-risks__comments{cursor:pointer;min-height:22px}.flow__unmapped[data-v-0dfb0fe1]{margin-bottom:12px}.flow__title[data-v-ca982ba6]{margin-bottom:4px}.flow__caption[data-v-ca982ba6]{display:block;margin-bottom:12px}.flow__block[data-v-ca982ba6]{margin-bottom:12px}.flow__muted[data-v-ca982ba6]{color:var(--plan-text-muted, #8c8c8c)}.flow__team[data-v-ca982ba6]{color:var(--plan-text-secondary, #595959)}.flow__resync[data-v-ca982ba6]{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}.flow__incomplete-row[data-v-ca982ba6],.flow__title[data-v-3ea22932]{margin-bottom:4px}.flow__caption[data-v-3ea22932]{display:block;margin-bottom:12px}.flow__block[data-v-3ea22932]{margin-bottom:4px}.flow__note[data-v-3ea22932]{display:block;margin-bottom:12px;font-size:12px}.flow__title[data-v-2398948d]{margin-bottom:4px}.flow__caption[data-v-2398948d]{display:block;margin-bottom:12px}.flow__big[data-v-2398948d]{font-size:28px;font-weight:600}.flow__block[data-v-2398948d]{margin:12px 0}.flow__note[data-v-2398948d]{font-size:12px;opacity:.75}.flow__block[data-v-dc4bfb54]{margin:12px 0}.flow__muted[data-v-dc4bfb54]{color:var(--plan-text-muted, #8c8c8c)}.flow__title[data-v-dc4bfb54]{margin-bottom:4px}.flow__skipped-title[data-v-dc4bfb54]{margin-top:16px}.flow__caption[data-v-dc4bfb54]{display:block;margin-bottom:12px}.flow__skipped[data-v-dc4bfb54]{margin-top:4px}.flow__error[data-v-cb2dc0c8],.flow__period[data-v-cb2dc0c8]{margin-bottom:12px}.worklogs__cell[data-v-0d7fe7d4]{display:inline-flex;align-items:center;gap:4px;padding:0;border:none;background:none;color:inherit;cursor:pointer}.worklogs__cell--open[data-v-0d7fe7d4]{text-decoration:underline}.worklogs__late[data-v-0d7fe7d4]{color:var(--plan-warning, #fa8c16)}.worklogs__muted[data-v-0d7fe7d4]{color:var(--plan-text-secondary, #595959)}.worklogs__line[data-v-0d7fe7d4]{display:flex;flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:4px}.worklogs__summary[data-v-0d7fe7d4]{flex:1 1 240px;min-width:0}.worklogs__title[data-v-0d7fe7d4]{margin-top:24px;margin-bottom:4px}.worklogs__caption[data-v-0d7fe7d4]{display:block;margin-bottom:8px}.worklogs__block[data-v-2b274984]{margin-bottom:12px}.worklogs__placeholder[data-v-2b274984]{min-height:160px}.worklogs__freshness[data-v-2b274984]{color:var(--plan-text-secondary, #595959)}.history__runs{margin-bottom:8px}.history__summary,.persons__hint{margin-bottom:16px}.persons__actions{margin-top:12px}.calendar__hint,.calendar__form{margin-bottom:16px}.calendar__form{margin-top:16px}.closed__hint{margin-bottom:16px}.completion-stats__empty{color:var(--plan-text-muted, #8c8c8c)}.completion-stats .completion-stats__team td{font-weight:600;background:var(--plan-row-hold, #fafafa)}.completion-stats .completion-stats__role{padding-left:20px}.completed-projects__edit{margin-left:8px;font-size:12px;color:var(--plan-primary, #1677ff)}.projects__hint{margin-bottom:16px}.projects__swatch{display:inline-block;width:10px;height:10px;margin-right:8px;border-radius:2px;vertical-align:middle}.projects__rank{font-weight:600}.projects__move{color:var(--plan-primary, #1677ff);cursor:pointer}.projects__hold{display:flex;align-items:center;gap:6px;margin-top:4px}.projects__label-filter{min-width:280px;margin-bottom:12px}.projects__labels-input{width:100%}.projects__chat{margin-left:8px;font-size:12px}.projects__comment,.projects__muted{color:var(--plan-text-tertiary, #8c8c8c);font-size:12px}.projects__slack{color:var(--plan-success, #52c41a);font-size:12px}.projects__slack--late{color:var(--plan-error, #f5222d)}.projects__color{width:64px;height:32px;padding:0;border:1px solid var(--plan-border-strong, #d9d9d9);border-radius:6px;background:none;cursor:pointer}.projects__danger{color:var(--plan-error, #f5222d)}.stages__hint{margin-bottom:16px}.stages__muted{color:var(--plan-text-tertiary, #8c8c8c)}
