.task-table[data-v-848d1bc1]{display:flex;flex-direction:column;height:100%;background:#fff;border-right:1px solid var(--color-border);font-size:13px;overflow:hidden}.task-table__header[data-v-848d1bc1]{flex-shrink:0;background:#f5f3ec;border-bottom:2px solid var(--color-border-strong);display:flex;align-items:flex-end}.task-table__body[data-v-848d1bc1]{flex:1;overflow:auto;position:relative}.task-table__row[data-v-848d1bc1]{display:flex;border-bottom:1px solid var(--color-grid);cursor:pointer;user-select:none}.task-table__row--header[data-v-848d1bc1]{cursor:default;font-weight:600;color:var(--color-text-muted);height:100%}.task-table__row[data-v-848d1bc1]:not(.task-table__row--header):hover{background:#f9f7f0}.task-table__row--selected[data-v-848d1bc1]{background:#fff5e8!important}.task-table__row--summary[data-v-848d1bc1]{font-weight:600;background:#faf8f0}.task-table__cell[data-v-848d1bc1]{flex-shrink:0;padding:0 8px;display:flex;align-items:center;border-right:1px solid var(--color-grid);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.task-table__cell>span[data-v-848d1bc1]{overflow:hidden;text-overflow:ellipsis;display:block;width:100%}.task-table__cell--id[data-v-848d1bc1]{width:56px;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.task-table__cell--title[data-v-848d1bc1]{flex:1;min-width:200px}.task-table__cell--num[data-v-848d1bc1]{width:70px;justify-content:flex-end;font-variant-numeric:tabular-nums}.task-table__cell--date[data-v-848d1bc1]{width:80px;justify-content:flex-end;font-variant-numeric:tabular-nums;color:var(--color-text-muted)}.task-table__cell--preds[data-v-848d1bc1]{width:140px}.task-table__cell--notes[data-v-848d1bc1]{flex:1;min-width:120px}.task-table__muted[data-v-848d1bc1]{color:var(--color-text-faint)}.task-table__cell-input[data-v-848d1bc1]{width:100%;height:100%;border:none;background:#fffdf7;outline:2px solid var(--color-accent);padding:0 4px;font:inherit;color:inherit}.task-table__empty[data-v-848d1bc1]{padding:32px;text-align:center;color:var(--color-text-faint);font-size:13px}.app[data-v-4ffe5f8f]{display:flex;flex-direction:column;height:100%;background:var(--color-bg)}.toolbar[data-v-4ffe5f8f]{display:flex;align-items:center;gap:4px;padding:8px 12px;background:#fff;border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-sm);flex-shrink:0}.toolbar__group[data-v-4ffe5f8f]{display:flex;align-items:center;gap:4px}.toolbar__group--project[data-v-4ffe5f8f]{gap:6px}.toolbar__sep[data-v-4ffe5f8f]{width:1px;height:22px;background:var(--color-border);margin:0 6px}.toolbar__spacer[data-v-4ffe5f8f]{flex:1}.toolbar__btn[data-v-4ffe5f8f]{border:1px solid var(--color-border-strong);background:#fff;padding:5px 10px;border-radius:var(--radius-sm);font-size:13px;color:var(--color-text);transition:background .1s,border-color .1s}.toolbar__btn[data-v-4ffe5f8f]:hover:not(:disabled){background:#f5f3ec}.toolbar__btn[data-v-4ffe5f8f]:disabled{opacity:.4;cursor:not-allowed}.toolbar__btn--ghost[data-v-4ffe5f8f]{border-color:transparent;background:transparent}.toolbar__btn--ghost[data-v-4ffe5f8f]:hover:not(:disabled){background:#f0eee5}.toolbar__select[data-v-4ffe5f8f],.toolbar__date[data-v-4ffe5f8f]{border:1px solid var(--color-border-strong);background:#fff;padding:4px 6px;border-radius:var(--radius-sm);font-size:13px}.toolbar__label[data-v-4ffe5f8f]{font-size:12px;color:var(--color-text-muted)}.toolbar__dirty[data-v-4ffe5f8f]{color:#c14545;margin-left:2px}.status[data-v-4ffe5f8f]{padding:6px 16px;font-size:12px;background:#fff;border-bottom:1px solid var(--color-border);flex-shrink:0}.status__error[data-v-4ffe5f8f]{color:#c14545}.status__msg--info[data-v-4ffe5f8f]{color:var(--color-text-muted)}.status__msg--error[data-v-4ffe5f8f]{color:#c14545}.main[data-v-4ffe5f8f]{flex:1;display:flex;min-height:0;position:relative}.main__table[data-v-4ffe5f8f]{flex-shrink:0;position:relative;background:#fff}.main__chart[data-v-4ffe5f8f]{flex:1;min-width:0;background:#fff}.main__resizer[data-v-4ffe5f8f]{width:4px;background:transparent;cursor:col-resize;flex-shrink:0;transition:background .15s}.main__resizer[data-v-4ffe5f8f]:hover{background:var(--color-accent);opacity:.4}.main__empty-cta[data-v-4ffe5f8f]{position:absolute;top:80px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:10px;z-index:2}.cta-btn[data-v-4ffe5f8f]{border:1px solid var(--color-accent);background:var(--color-accent);color:#fff;padding:10px 24px;border-radius:var(--radius-md);font-size:13px;font-weight:500}.cta-btn[data-v-4ffe5f8f]:hover{opacity:.9}.cta-btn--ghost[data-v-4ffe5f8f]{background:#fff;color:var(--color-accent)}.footer[data-v-4ffe5f8f]{flex-shrink:0;background:#fff;border-top:1px solid var(--color-border);padding:8px 16px 10px;font-size:11px;color:var(--color-text-faint)}.footer__inner[data-v-4ffe5f8f]{display:flex;align-items:center;justify-content:space-between;gap:16px}.footer__left[data-v-4ffe5f8f]{color:var(--color-text-muted)}.footer__right[data-v-4ffe5f8f]{display:flex;align-items:center;gap:8px}.footer__right a[data-v-4ffe5f8f]{color:var(--color-text-faint);text-decoration:none}.footer__right a[data-v-4ffe5f8f]:hover{color:var(--color-text-muted)}.footer__sep[data-v-4ffe5f8f]{color:var(--color-text-faint)}.footer__notice[data-v-4ffe5f8f]{margin-top:4px;text-align:center;font-size:10.5px;color:var(--color-text-faint);opacity:.8}*,*:before,*:after{box-sizing:border-box}html,body,#app{margin:0;padding:0;height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:14px;color:#2a2a2a;background:#fafaf7;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button{font-family:inherit;cursor:pointer}input,select{font-family:inherit}:root{--color-bg: #fafaf7;--color-surface: #ffffff;--color-border: #e8e6dd;--color-border-strong: #d4d2c8;--color-text: #2a2a2a;--color-text-muted: #777;--color-text-faint: #aaa;--color-accent: #2a2a2a;--color-accent-soft: #4d4d4d;--color-bar: #4a90e2;--color-bar-summary: #2a2a2a;--color-bar-milestone: #d4794a;--color-bar-critical: #c14545;--color-grid: #f0eee5;--color-non-working: #f5f3ec;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 2px 8px rgba(0, 0, 0, .06);--radius-sm: 4px;--radius-md: 6px}.gantt-view{display:flex;flex-direction:column;flex:1;min-height:400px}.gantt-loading{display:flex;align-items:center;justify-content:center;flex:1;color:var(--text-muted);font-size:16px}.gantt-cycle-error{background:#fff3cd;border:1px solid #ffc107;color:#856404;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);margin-bottom:var(--space-sm);display:flex;align-items:center;gap:var(--space-sm)}.gantt-cycle-error__close{margin-left:auto;background:none;border:none;font-size:18px;cursor:pointer;color:#856404;padding:0 4px}.gantt-toolbar{display:flex;flex-direction:column;padding:4px 0;border-bottom:1px solid var(--border-color);margin-bottom:4px;gap:0}.gantt-toolbar__row{display:flex;align-items:center;gap:6px;flex-wrap:nowrap}.gantt-toolbar__row--actions{gap:4px}.gantt-toolbar__left,.gantt-toolbar__right{display:flex;align-items:center;gap:4px}.gantt-toolbar__right{margin-left:auto}.gantt-toolbar__group{display:inline-flex;align-items:center;gap:var(--space-sm)}.gantt-toolbar__separator{width:1px;height:20px;background:var(--border-color);flex-shrink:0}.gantt-toolbar__file-dropdown{position:relative;display:inline-block}.gantt-toolbar__file-dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;min-width:150px;background:var(--bg-white);border:1px solid var(--border-color);border-radius:var(--radius-sm);box-shadow:var(--shadow-card);z-index:100;padding:4px 0}.gantt-toolbar__file-dropdown-menu button{display:block;width:100%;text-align:left;padding:8px 14px;border:none;background:none;font-size:13px;color:var(--text-body);cursor:pointer;transition:background .15s}.gantt-toolbar__file-dropdown-menu button:hover{background:var(--bg-light)}.gantt-toolbar__file-dropdown-menu button:disabled{opacity:.4;cursor:not-allowed}.gantt-toolbar__file-dropdown-menu hr{border:none;border-top:1px solid var(--border-color);margin:4px 0}.gantt-toolbar__label{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--text-body)}.gantt-toolbar__input{padding:2px 6px;border:1px solid var(--border-color);border-radius:var(--radius-sm);font-size:12px}.gantt-toolbar__stat{font-size:11px;color:var(--text-muted);white-space:nowrap}.gantt-toolbar__btn{padding:4px 10px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-white);font-size:12px;cursor:pointer;color:var(--text-body);transition:background .15s;white-space:nowrap}.gantt-toolbar__btn--sm{padding:3px 8px;font-size:11px}.gantt-toolbar__btn:hover{background:var(--bg-light)}.gantt-toolbar__btn--primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.gantt-toolbar__btn--primary:hover{background:var(--color-primary-dark)}.gantt-toolbar__btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.gantt-toolbar__btn--edit{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.gantt-toolbar__btn--edit:hover{background:var(--color-primary-dark)}.gantt-toolbar__btn--edit:disabled{background:var(--bg-light);color:var(--text-muted);border-color:var(--border-color);opacity:1;cursor:not-allowed;pointer-events:none}.gantt-toolbar__btn--icon{display:inline-flex;align-items:center;justify-content:center;padding:4px 6px;line-height:1}.gantt-toolbar__btn--icon svg{display:block}.gantt-toolbar__zoom{display:flex;align-items:center;border:1px solid var(--border-color);border-radius:var(--radius-sm);overflow:hidden}.gantt-toolbar__zoom--compact .gantt-toolbar__zoom-btn{padding:2px 6px}.gantt-toolbar__v-height-label{font-size:11px;color:var(--text-muted);padding:0 4px;white-space:nowrap}.gantt-toolbar__zoom-btn{padding:3px 8px;border:none;background:var(--bg-white);font-size:11px;cursor:pointer;color:var(--text-body);transition:background .15s}.gantt-toolbar__zoom-btn+.gantt-toolbar__zoom-btn{border-left:1px solid var(--border-color)}.gantt-toolbar__zoom-btn.active{background:var(--color-primary);color:#fff}.gantt-toolbar__scale{display:flex;align-items:center;gap:4px;margin-left:4px}.gantt-toolbar__scale--compact{margin-left:0}.gantt-toolbar__scale-slider{width:72px;height:4px;cursor:pointer;accent-color:var(--color-primary, #667eea)}.gantt-toolbar__scale-icon{font-size:14px;color:var(--text-muted, #718096);line-height:1}.gantt-toolbar__scale-label{font-size:11px;color:var(--text-muted, #718096);min-width:36px;text-align:center}.gantt-split{display:flex;flex:1;overflow:hidden;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-white);position:relative}.gantt-split__resizer{flex:0 0 7px;cursor:col-resize;background:transparent;display:flex;align-items:center;justify-content:center}.gantt-split__resizer-line{width:1px;height:100%;background:#6b7280;transition:background .15s,width .15s}.gantt-split__resizer:hover .gantt-split__resizer-line{width:2px;background:var(--color-primary)}.gantt-table{display:flex;flex-direction:column;border-right:none;background:var(--bg-white);overflow:hidden}.gantt-table__header-wrapper{flex-shrink:0;overflow:hidden;border-bottom:1px solid var(--border-color);background:var(--bg-light)}.gantt-table__header{display:flex;height:var(--gantt-header-height, 50px);align-items:center;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.gantt-table__body{flex:1;overflow:auto}.gantt-table__row{display:flex;height:var(--gantt-row-height, 40px);align-items:center;border-bottom:1px solid var(--border-color);font-size:13px;color:var(--text-body);transition:background .1s}.gantt-table__row:hover{background:#667eea0a}.gantt-table__row--hidden{display:none}.gantt-table__row--summary{background:#00000006}.gantt-table__row--summary:hover{background:#0000000d}.gantt-table__title-inner{display:flex;align-items:center;gap:4px;width:100%;min-width:0}.gantt-table__title-summary{font-weight:600}.gantt-table__expander{flex:0 0 14px;width:14px;height:14px;border:none;background:transparent;cursor:pointer;font-size:9px;line-height:1;color:var(--text-muted);padding:0;display:inline-flex;align-items:center;justify-content:center;transition:transform .15s;user-select:none}.gantt-table__expander:hover{color:var(--text-body)}.gantt-table__expander--collapsed{transform:rotate(-90deg)}.gantt-table__expander-spacer{flex:0 0 14px;width:14px}.gantt-table__col{position:relative;padding:0 var(--space-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-right:1px solid var(--border-color)}.gantt-table__col:last-child{border-right:none}.gantt-table__col--drag{padding:0 4px;text-overflow:clip;display:flex;align-items:center;justify-content:space-between}.gantt-table__col--num{text-align:center;color:var(--text-muted);font-size:12px}.gantt-table__col--wbs{text-align:left;color:var(--text-muted);font-size:12px;font-variant-numeric:tabular-nums}.gantt-table__wbs-text{display:inline-block;overflow:hidden;text-overflow:ellipsis;max-width:100%}.gantt-table__col--edit{text-align:center}.gantt-table__col--title{cursor:text}.gantt-table__col--todo{display:flex;align-items:center;justify-content:center}.gantt-table__col--owner{cursor:pointer}.gantt-table__col--dur{text-align:center;cursor:text}.gantt-table__col--start,.gantt-table__col--end,.gantt-table__col--milestone-date{text-align:center;font-size:12px;color:var(--text-muted)}.gantt-table__date-suffix{font-size:.72em;opacity:.5;margin-left:1px;font-weight:400;letter-spacing:0}.gantt-table__col--progress{display:flex;align-items:center;gap:4px;cursor:text}.gantt-table__col--pred{color:var(--color-primary);font-size:12px}.gantt-table__col--notes{font-size:12px;color:var(--text-muted);cursor:text}.gantt-table__col--comment{flex:0 0 36px!important;display:flex;align-items:center;justify-content:center}.gantt-table__col--calendar{font-size:12px}.gantt-table__col--actions{text-align:center}.gantt-table__resize-handle{position:absolute;top:0;right:-1px;width:2px;height:100%;cursor:col-resize;z-index:3;user-select:none;background:#888;transition:width .1s,background .1s}.gantt-table__resize-handle:hover{width:5px;right:-2px;background:var(--color-primary, #667eea)}.gantt-table__editing-input{width:100%;padding:2px 4px;border:1px solid var(--color-primary);border-radius:3px;font-size:13px;outline:none;box-sizing:border-box}.gantt-table__editing-input--narrow{width:44px}.gantt-table__progress-bar{flex:1;height:6px;background:var(--border-color);border-radius:3px;overflow:hidden}.gantt-table__progress-fill{height:100%;background:var(--color-primary);border-radius:3px;transition:width .2s}.gantt-table__progress-text{font-size:11px;color:var(--text-muted);min-width:28px;text-align:right}.gantt-table__pred-text{cursor:pointer}.gantt-table__pred-text:hover{text-decoration:underline}.gantt-table__notes-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.gantt-table__del-btn{background:none;border:none;font-size:16px;color:var(--text-light);cursor:pointer;padding:0;line-height:1}.gantt-table__del-btn:hover{color:var(--color-danger)}.gantt-table__empty{padding:var(--space-lg);text-align:center;color:var(--text-muted);font-size:14px}.gantt-milestone-label{font-weight:600;color:var(--color-warning)}.gantt-chart{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:200px}.gantt-chart__header-wrapper{flex-shrink:0;overflow:hidden;border-bottom:1px solid var(--border-color);background:var(--bg-light)}.gantt-chart__header-svg{display:block}.gantt-chart__body{flex:1;overflow:auto}.gantt-chart__svg{display:block}.gantt-chart__date-label{font-size:11px;fill:var(--text-muted);font-family:var(--font-stack)}.gantt-chart__weekend{fill:#0000000f}.gantt-chart__grid-line{stroke:#00000029;stroke-width:.5}.gantt-chart__grid-line--week{stroke:#00000052;stroke-width:1}.gantt-chart__grid-line--month{stroke:#0006;stroke-width:1.5}.gantt-chart__row-line{stroke:#00000029;stroke-width:.5}.gantt-chart__bar{fill:#c6d0f5;cursor:pointer;transition:fill .15s,opacity .15s,stroke .15s}.gantt-chart__bar--hovered{fill:#a5b4fc;stroke:var(--color-primary);stroke-width:2}.gantt-chart__bar--predecessor{fill:#fbbf24;stroke:#f59e0b;stroke-width:1.5}.gantt-chart__bar--successor{fill:#34d399;stroke:#10b981;stroke-width:1.5}.gantt-chart__bar--critical{fill:#ef4444;stroke:#dc2626;stroke-width:2}.gantt-chart__bar--pred-trace,.gantt-chart__bar--today{fill:#f59e0b;stroke:#d97706;stroke-width:1.5}.gantt-chart__bar--dimmed{opacity:.2}.gantt-chart__bar-progress{fill:var(--color-primary)}.gantt-chart__bar-text{font-size:11px;fill:var(--text-dark);font-family:var(--font-stack);pointer-events:none}.gantt-chart__bar-text--summary{font-weight:600}.gantt-chart__summary-bar{fill:#1f2937;stroke:#1f2937;stroke-width:1;pointer-events:auto;cursor:pointer}.gantt-chart__milestone{fill:var(--color-warning);stroke:#e6a400;stroke-width:1;cursor:pointer;transition:fill .15s,opacity .15s,stroke .15s}.gantt-chart__milestone--hovered,.gantt-chart__milestone--predecessor{fill:#fbbf24;stroke:#f59e0b;stroke-width:2}.gantt-chart__milestone--successor{fill:#34d399;stroke:#10b981;stroke-width:2}.gantt-chart__milestone--critical{fill:#ef4444;stroke:#dc2626;stroke-width:2}.gantt-chart__milestone--pred-trace{fill:#f59e0b;stroke:#d97706;stroke-width:1.5}.gantt-chart__milestone--today{fill:#f59e0b;stroke:#d97706;stroke-width:2}.gantt-chart__milestone--dimmed{opacity:.2}.gantt-chart__dep-group{cursor:pointer}.gantt-chart__dep-hit{stroke:transparent;stroke-width:12;fill:none;pointer-events:stroke}.gantt-chart__dep-line{stroke:var(--text-light);stroke-width:1.5;pointer-events:none;transition:stroke .1s,stroke-width .1s,opacity .1s}.gantt-chart__dep-line--hovered{stroke:var(--color-primary);stroke-width:2.5}.gantt-chart__dep-line--selected{stroke:var(--color-primary-dark, #5a67d8);stroke-width:2.5}.gantt-chart__dep-line--dimmed{opacity:.15}.gantt-chart__dep-line--critical{stroke:#dc2626;stroke-width:2.5}.gantt-chart__dep-line--pred-trace{stroke:#d97706;stroke-width:2}.gantt-chart__dep-line--cycle{stroke:var(--color-danger);stroke-dasharray:5 3}.gantt-chart__dep-line--predecessor{stroke:#f59e0b;stroke-width:2}.gantt-chart__dep-line--successor{stroke:#10b981;stroke-width:2}.gantt-chart__dep-arrow{fill:var(--text-light);pointer-events:none;transition:fill .1s,opacity .1s}.gantt-chart__dep-arrow--hovered{fill:var(--color-primary)}.gantt-chart__dep-arrow--selected{fill:var(--color-primary-dark, #5a67d8)}.gantt-chart__dep-arrow--dimmed{opacity:.15}.gantt-chart__dep-arrow--critical{fill:#dc2626}.gantt-chart__dep-arrow--pred-trace{fill:#d97706}.gantt-chart__dep-arrow--cycle{fill:var(--color-danger)}.gantt-chart__dep-arrow--predecessor{fill:#f59e0b}.gantt-chart__dep-arrow--successor{fill:#10b981}.gantt-chart__today-line{stroke:var(--color-danger);stroke-width:1.5;stroke-dasharray:4 2}.dep-modal{max-width:520px;width:90vw}.dep-modal__cycle-error{background:#f8d7da;border:1px solid #f5c6cb;color:#721c24;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);margin-bottom:var(--space-md);font-size:13px}.dep-modal__section{margin-bottom:var(--space-md)}.dep-modal__section h4{font-size:14px;color:var(--text-dark);margin:0 0 var(--space-sm)}.dep-modal__empty{font-size:13px;color:var(--text-muted)}.dep-modal__dep-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-xs) var(--space-sm);border:1px solid var(--border-color);border-radius:var(--radius-sm);margin-bottom:var(--space-xs);font-size:13px}.dep-modal__dep-info{display:flex;align-items:center;gap:var(--space-sm)}.dep-modal__dep-type{padding:1px 6px;background:var(--bg-light);border-radius:3px;font-size:11px;font-weight:600;color:var(--text-muted)}.dep-modal__dep-lag{font-size:11px;color:var(--text-muted)}.dep-modal__dep-del{background:none;border:1px solid var(--color-danger);color:var(--color-danger);padding:2px 8px;border-radius:3px;font-size:12px;cursor:pointer}.dep-modal__dep-del:hover{background:var(--color-danger);color:#fff}.dep-modal__form{display:flex;flex-direction:column;gap:var(--space-sm)}.dep-modal__form label{font-size:13px;color:var(--text-body);display:flex;flex-direction:column;gap:2px}.dep-modal__select,.dep-modal__input{padding:6px 8px;border:1px solid var(--border-color);border-radius:var(--radius-sm);font-size:13px;width:100%;box-sizing:border-box}.dep-modal__select--inline{width:auto;padding:2px 4px;font-size:12px}.dep-modal__input--inline{width:60px;padding:2px 4px;font-size:12px}.dep-modal__lag-inline{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--text-muted)}.dep-modal__add-btn{padding:8px 16px;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:14px;cursor:pointer;transition:background .15s;align-self:flex-start}.dep-modal__add-btn:hover{background:var(--color-primary-dark)}.dep-modal__add-btn:disabled{opacity:.5;cursor:not-allowed}.gantt-locked-field{opacity:.7;cursor:default!important}.gantt-lock-icon{font-size:10px;margin-left:2px;opacity:.6}.gantt-table__select{width:100%;padding:2px 4px;border:1px solid var(--border-color);border-radius:3px;font-size:12px;background:var(--bg-white);cursor:pointer;box-sizing:border-box}.gantt-table__select:hover{border-color:var(--color-primary)}.gantt-table__select:focus{outline:none;border-color:var(--color-primary)}.gantt-table__select-cb{width:14px;height:14px;cursor:pointer;accent-color:var(--color-primary);margin:0}.gantt-table__drag-handle{cursor:grab;color:var(--text-light);font-size:10px;user-select:none;line-height:1;letter-spacing:-2px;padding:2px 0}.gantt-table__drag-handle:hover{color:var(--text-body)}.gantt-table__row--dragging{opacity:.4;background:var(--bg-light)}.gantt-table__row--drop-target{border-top:2px solid var(--color-primary)!important}.gantt-table__row--selected{background:#667eea1a;box-shadow:inset 3px 0 0 var(--color-primary, #667eea)}.gantt-table__row--selected:hover{background:#667eea26}.gantt-table__row--predecessor{background:#fbbf241a;box-shadow:inset 3px 0 #f59e0b}.gantt-table__row--predecessor:hover{background:#fbbf2426}.gantt-table__row--successor{background:#34d3991a;box-shadow:inset 3px 0 #10b981}.gantt-table__row--successor:hover{background:#34d39926}.gantt-table__row--critical{background:#ef44441a;box-shadow:inset 3px 0 #dc2626}.gantt-table__row--critical:hover{background:#ef444426}.gantt-table__row--pred-trace{background:#f59e0b1a;box-shadow:inset 3px 0 #d97706}.gantt-table__row--pred-trace:hover{background:#f59e0b26}.gantt-table__row--today{background:#f59e0b1a;box-shadow:inset 3px 0 #f59e0b}.gantt-table__row--today:hover{background:#f59e0b26}.gantt-table__row--dimmed{opacity:.4}.gantt-table__row--new{animation:gantt-row-highlight 4s ease-out}@keyframes gantt-row-highlight{0%{background:#fef3c7}30%{background:#fef9e7}to{background:transparent}}.gantt-table__row--kickoff{background:#ffc1070f}.gantt-table__col--status{padding:0 4px;display:flex;align-items:center;justify-content:center}.gantt-status-badge{display:inline-flex;align-items:center;gap:3px;padding:1px 6px 1px 4px;border:1px solid;border-radius:9px;font-size:11px;line-height:1.4;font-weight:500;white-space:nowrap;user-select:none}.gantt-status-badge__icon{font-size:10px;line-height:1}.gantt-status-badge__label{font-size:11px}.gantt-table__edit-btn{background:none;border:none;font-size:13px;color:var(--text-light);cursor:pointer;padding:2px;line-height:1;border-radius:3px}.gantt-table__edit-btn:hover{color:var(--color-primary);background:#667eea1a}.gantt-table__action-group{display:flex;gap:2px;justify-content:center}.gantt-table__insert-btn{background:none;border:none;font-size:14px;color:var(--text-light);cursor:pointer;padding:0 2px;line-height:1;font-weight:700}.gantt-table__insert-btn:hover{color:var(--color-success, #28a745)}.gantt-table__owner-text{color:var(--color-primary);cursor:pointer;font-size:12px}.gantt-table__owner-text:hover{text-decoration:underline}.gantt-table__owner-text--empty{color:var(--text-muted);font-style:italic}.gantt-table__owner-text--empty:hover{color:var(--color-primary)}.gantt-table__col--owner{display:flex;flex-wrap:nowrap;align-items:center;gap:4px;padding:2px 4px;overflow:hidden;white-space:nowrap}.user-pill{display:inline-flex;align-items:center;gap:4px;padding:1px 8px 1px 1px;border-radius:999px;font-size:12px;line-height:18px;background:var(--bg-light, #f3f4f6);color:var(--text-color, #374151);white-space:nowrap;user-select:none;flex-shrink:0}.user-pill__avatar{width:18px;height:18px;border-radius:50%;object-fit:cover;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#fff}.user-pill__name{overflow:hidden;text-overflow:ellipsis;font-weight:500}.user-pill--removable{padding-right:2px}.user-pill__remove{background:transparent;border:none;color:inherit;opacity:.6;cursor:pointer;font-size:14px;line-height:1;padding:0 4px;border-radius:50%}.user-pill__remove:hover{opacity:1;background:#00000014}.gantt-table__calendar-select{width:100%;border:none;background:transparent;font-size:11px;color:var(--text-color);cursor:pointer;padding:0;outline:none}.gantt-table__calendar-select:hover{color:var(--color-primary)}.gantt-owner-dialog{background:var(--bg-white);border-radius:var(--radius-md);width:420px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0003}.gantt-owner-dialog__header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-md);border-bottom:1px solid var(--border-color)}.gantt-owner-dialog__header h3{margin:0;font-size:16px}.gantt-owner-dialog__close{background:none;border:none;font-size:20px;cursor:pointer;color:var(--text-muted);padding:0 4px}.gantt-owner-dialog__close:hover{color:var(--text-dark)}.gantt-owner-dialog__current{display:flex;align-items:center;gap:8px;padding:var(--space-sm) var(--space-md);background:var(--bg-light);border-bottom:1px solid var(--border-color)}.gantt-owner-dialog__search{margin:var(--space-sm) var(--space-md);padding:8px 12px;border:1px solid var(--border-color);border-radius:var(--radius-sm);font-size:13px;outline:none;box-sizing:border-box;width:calc(100% - 2 * var(--space-md))}.gantt-owner-dialog__search:focus{border-color:var(--color-primary)}.gantt-owner-dialog__list{flex:1;overflow-y:auto;max-height:360px;padding:0 var(--space-sm)}.gantt-owner-dialog__item{display:flex;align-items:center;gap:10px;padding:8px var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;transition:background .1s}.gantt-owner-dialog__item:hover{background:var(--bg-light)}.gantt-owner-dialog__item--selected{background:#667eea1a}.gantt-owner-dialog__avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;flex-shrink:0}.gantt-owner-dialog__avatar-placeholder{width:32px;height:32px;border-radius:50%;background:var(--color-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;flex-shrink:0}.gantt-owner-dialog__user-info{flex:1;min-width:0}.gantt-owner-dialog__user-name{font-size:14px;font-weight:500}.gantt-owner-dialog__user-en{font-weight:400;color:var(--text-muted);font-size:12px}.gantt-owner-dialog__user-email{font-size:12px;color:var(--text-muted)}.gantt-owner-dialog__empty{padding:16px;text-align:center;color:var(--text-muted);font-size:13px}.gantt-owner-dialog__current--multi{flex-wrap:wrap}.gantt-owner-dialog__footer{display:flex;justify-content:flex-end;gap:8px;padding:var(--space-sm) var(--space-md);border-top:1px solid var(--border-color)}.gantt-table__col--pred-clickable{cursor:pointer}.gantt-table__col--pred-clickable:hover{background:var(--bg-light)}.gantt-pred-dialog{background:var(--bg-white);border-radius:var(--radius-md);width:560px;max-width:92vw;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0003}.gantt-pred-dialog__header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-md);border-bottom:1px solid var(--border-color);gap:8px}.gantt-pred-dialog__header h3{margin:0;font-size:16px;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;min-width:0}.gantt-pred-dialog__subject{font-size:13px;color:var(--text-muted);font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px}.gantt-pred-dialog__count{font-size:13px;color:var(--text-muted);font-weight:400}.gantt-pred-dialog__close{background:none;border:none;font-size:20px;cursor:pointer;color:var(--text-muted);padding:0 4px}.gantt-pred-dialog__close:hover{color:var(--text-dark)}.gantt-pred-dialog__selected{display:flex;flex-direction:column;gap:4px;padding:var(--space-sm) var(--space-md);background:var(--bg-light);border-bottom:1px solid var(--border-color);max-height:200px;overflow-y:auto}.gantt-pred-dialog__sel-row{display:flex;align-items:center;gap:6px;font-size:13px}.gantt-pred-dialog__sel-id{flex:0 0 auto;font-family:var(--font-mono, monospace);color:var(--text-muted);font-size:12px;min-width:36px}.gantt-pred-dialog__sel-title{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.gantt-pred-dialog__sel-type{flex:0 0 60px;padding:2px 4px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-white);font-size:12px}.gantt-pred-dialog__sel-lag{flex:0 0 56px;padding:2px 6px;border:1px solid var(--border-color);border-radius:var(--radius-sm);font-size:12px;text-align:right}.gantt-pred-dialog__sel-remove{flex:0 0 auto;background:none;border:none;font-size:16px;cursor:pointer;color:var(--text-muted);padding:0 4px;line-height:1}.gantt-pred-dialog__sel-remove:hover{color:#d33}.gantt-pred-dialog__search{margin:var(--space-sm) var(--space-md);padding:8px 12px;border:1px solid var(--border-color);border-radius:var(--radius-sm);font-size:13px;outline:none;box-sizing:border-box;width:calc(100% - 2 * var(--space-md))}.gantt-pred-dialog__search:focus{border-color:var(--color-primary)}.gantt-pred-dialog__list{flex:1;overflow-y:auto;max-height:360px;padding:0 var(--space-sm)}.gantt-pred-dialog__item{display:flex;align-items:center;gap:8px;padding:6px var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;font-size:13px;transition:background .1s}.gantt-pred-dialog__item:hover{background:var(--bg-light)}.gantt-pred-dialog__item--selected{background:#667eea1a}.gantt-pred-dialog__item-id{font-family:var(--font-mono, monospace);color:var(--text-muted);font-size:12px;flex:0 0 auto;min-width:36px}.gantt-pred-dialog__item-title{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-pred-dialog__empty{padding:16px;text-align:center;color:var(--text-muted);font-size:13px}.gantt-pred-dialog__footer{display:flex;justify-content:flex-end;gap:8px;padding:var(--space-sm) var(--space-md);border-top:1px solid var(--border-color)}.task-edit-modal{max-width:640px;width:90vw;max-height:90vh;position:relative;overflow:hidden;display:flex;flex-direction:column}.task-edit-modal>.modal-content__title{flex-shrink:0}.task-edit-modal__body{flex:1;overflow-y:auto;min-height:0;padding-right:4px}.task-edit-modal__notes{min-height:72px;resize:vertical;line-height:1.5}.task-edit-modal__owner-current{display:flex;align-items:center;gap:8px;margin-bottom:8px}.task-edit-modal__owner-badges{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:8px}.task-edit-modal__owner-empty{color:var(--text-muted);font-size:13px;font-style:italic;margin-bottom:8px}.task-edit-modal__user-list{max-height:180px;overflow-y:auto;border:1px solid var(--border-color);border-radius:var(--radius-sm);margin-top:4px}.task-edit-modal__user-item{display:flex;align-items:center;gap:8px;padding:6px 10px;cursor:pointer;font-size:13px;transition:background .1s}.task-edit-modal__user-item:hover{background:var(--bg-light)}.task-edit-modal__user-item--selected{background:#667eea1a}.task-edit-modal__user-avatar{width:24px;height:24px;border-radius:50%;object-fit:cover}.task-edit-modal__user-avatar-placeholder{width:24px;height:24px;border-radius:50%;background:var(--color-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.task-edit-modal__dates{display:flex;gap:var(--space-md);font-size:13px;color:var(--text-muted)}.task-edit-modal__actions{justify-content:space-between!important;flex-shrink:0;border-top:1px solid var(--border-color, #e9ecef);padding-top:16px}.task-edit-modal__actions-right{display:flex;gap:10px}.task-edit-modal__delete-btn{background:none;color:var(--color-danger);border:1px solid var(--color-danger);font-size:13px;cursor:pointer}.task-edit-modal__delete-btn:hover{background:var(--color-danger);color:#fff}.task-edit-modal__confirm-overlay{position:absolute;inset:0;background:#00000059;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);z-index:10}.task-edit-modal__confirm-dialog{background:var(--bg-white);border-radius:var(--radius-md);padding:24px;max-width:360px;text-align:center;box-shadow:var(--shadow-lg)}.task-edit-modal__confirm-hint{font-size:13px;color:var(--text-muted);margin-top:4px}.task-edit-modal__confirm-actions{display:flex;gap:10px;justify-content:center;margin-top:18px}.task-edit-modal__confirm-delete-btn{background:var(--color-danger);color:#fff;border:1px solid var(--color-danger);cursor:pointer}.task-edit-modal__confirm-delete-btn:hover{opacity:.85}.form-hint{font-size:12px;color:var(--text-muted);margin-top:2px}.calendar-manager{max-width:800px;width:90vw;max-height:85vh;display:flex;flex-direction:column}.calendar-manager__layout{display:flex;flex:1;overflow:hidden;min-height:400px}.calendar-manager__sidebar{flex:0 0 220px;border-right:1px solid var(--border-color);overflow-y:auto;padding:var(--space-sm)}.calendar-manager__sidebar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-sm)}.calendar-manager__new-form{display:flex;flex-direction:column;gap:var(--space-xs);margin-bottom:var(--space-sm);padding:var(--space-sm);background:var(--bg-light);border-radius:var(--radius-sm)}.calendar-manager__template-group{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.calendar-manager__radio-label{display:flex;align-items:flex-start;gap:6px;cursor:pointer;padding:4px 0;font-size:var(--font-sm)}.calendar-manager__radio-label input[type=radio]{margin-top:3px}.calendar-manager__cal-item{padding:var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;position:relative;margin-bottom:2px;transition:background .1s}.calendar-manager__cal-item:hover{background:var(--bg-light)}.calendar-manager__cal-item--active{background:#667eea1a;border-left:3px solid var(--color-primary)}.calendar-manager__cal-name{font-size:14px;font-weight:500}.calendar-manager__cal-desc{font-size:12px;color:var(--text-muted);margin-top:2px}.calendar-manager__cal-del{position:absolute;top:4px;right:4px;background:none;border:none;font-size:14px;color:var(--text-light);cursor:pointer;line-height:1;padding:2px 4px;border-radius:3px;opacity:0;transition:opacity .15s}.calendar-manager__cal-item:hover .calendar-manager__cal-del{opacity:1}.calendar-manager__cal-del:hover{color:var(--color-danger);background:#dc35451a}.calendar-manager__cal-badge{font-size:10px;padding:1px 5px;background:var(--color-primary);color:#fff;border-radius:3px;margin-left:4px;vertical-align:middle}.calendar-manager__detail{flex:1;overflow-y:auto;padding:var(--space-md)}.calendar-manager__detail-title{margin:0 0 var(--space-xs);font-size:18px}.calendar-manager__detail-desc{color:var(--text-muted);font-size:13px;margin:0 0 var(--space-md)}.calendar-manager__section{margin-bottom:var(--space-lg)}.calendar-manager__section h4{margin:0 0 var(--space-xs);font-size:14px}.calendar-manager__week-grid{display:flex;gap:6px;margin-top:var(--space-sm)}.calendar-manager__day-cell{flex:1;padding:10px 4px;text-align:center;border-radius:var(--radius-sm);cursor:pointer;border:2px solid transparent;transition:all .15s;user-select:none}.calendar-manager__day-cell--working{background:#28a7451a;border-color:#28a7454d;color:#28a745}.calendar-manager__day-cell--off{background:#dc35451a;border-color:#dc35454d;color:#dc3545}.calendar-manager__day-cell:hover{transform:scale(1.05)}.calendar-manager__day-name{font-size:13px;font-weight:600}.calendar-manager__day-status{font-size:11px;margin-top:2px}.calendar-manager__exc-form{padding:var(--space-sm);background:var(--bg-light);border-radius:var(--radius-sm);margin-top:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-xs)}.calendar-manager__exc-list{margin-top:var(--space-sm)}.calendar-manager__exc-item{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);border:1px solid var(--border-color);border-radius:var(--radius-sm);margin-bottom:4px;font-size:13px}.calendar-manager__exc-date{font-weight:500;min-width:90px}.calendar-manager__exc-type{padding:1px 6px;border-radius:3px;font-size:11px;font-weight:600}.calendar-manager__exc-type--work{background:#28a74526;color:#28a745}.calendar-manager__exc-type--off{background:#dc354526;color:#dc3545}.calendar-manager__exc-desc{flex:1;color:var(--text-muted)}.calendar-manager__exc-del{background:none;border:none;font-size:14px;color:var(--text-light);cursor:pointer;padding:0 2px}.calendar-manager__exc-del:hover{color:var(--color-danger)}.calendar-manager__empty{font-size:13px;color:var(--text-muted);text-align:center;padding:var(--space-sm)}.modal-close-btn{background:none;border:none;font-size:22px;cursor:pointer;color:var(--text-muted);float:right;line-height:1;padding:0 4px}.modal-close-btn:hover{color:var(--text-dark)}.gantt-split--table-only{overflow-x:auto;overflow-y:hidden}.gantt-split--table-only .gantt-table{flex:1 1 auto;min-width:0}@media(max-width:767px){.gantt-view,.gantt-split{min-height:300px}.gantt-toolbar__btn{padding:5px 10px;font-size:12px}.gantt-toolbar__zoom-btn{padding:5px 10px}.gantt-toolbar__left,.gantt-toolbar__right{gap:var(--space-sm);flex-wrap:wrap}.calendar-manager__layout{flex-direction:column;min-height:unset}.calendar-manager__sidebar{flex:0 0 auto;border-right:none;border-bottom:1px solid var(--border-color);max-height:180px;overflow-y:auto}}@media(min-width:768px)and (max-width:1023px){.gantt-table__col--owner,.gantt-table__col--calendar,.gantt-table__col--progress,.gantt-table__col--pred,.gantt-table__col--notes{display:none}}.csv-import-modal{max-width:800px}.csv-import-modal__initial{text-align:center;padding:20px 0 24px}.csv-import-modal__hint{font-size:14px;color:var(--text-muted);margin:0 0 20px}.csv-import-modal__initial-actions{display:flex;justify-content:center;gap:16px}.csv-import-modal__btn--template-lg{padding:10px 20px;border:1px dashed var(--border-color);border-radius:var(--radius-sm);background:var(--bg-white);color:var(--text-body);font-size:14px;cursor:pointer;transition:border-color .15s,background .15s}.csv-import-modal__btn--template-lg:hover{border-color:var(--brand-primary, #4f46e5);background:var(--bg-hover, #f9fafb)}.csv-import-modal__btn--pick{padding:10px 20px;border:1px solid var(--brand-primary, #4f46e5);border-radius:var(--radius-sm);background:var(--brand-primary, #4f46e5);color:#fff;font-size:14px;cursor:pointer;transition:opacity .15s}.csv-import-modal__btn--pick:hover{opacity:.9}.csv-import-modal__mode{display:flex;gap:20px;margin-bottom:16px}.csv-import-modal__radio{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:14px;color:var(--text-body)}.csv-import-modal__radio input[type=radio]{margin:0;cursor:pointer}.csv-import-modal__radio-desc{font-size:12px;color:var(--text-muted);margin-left:2px}.csv-import-modal__summary{padding:10px 14px;border-radius:var(--radius-sm);font-size:14px;margin-bottom:12px;background:var(--bg-success-subtle, #f0fdf4);color:var(--text-success, #16a34a);border:1px solid var(--border-success, #bbf7d0)}.csv-import-modal__summary--error{background:var(--bg-danger-subtle, #fef2f2);color:var(--text-danger, #dc2626);border-color:var(--border-danger, #fecaca)}.csv-import-modal__errors,.csv-import-modal__warnings{margin-bottom:12px;padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;max-height:150px;overflow-y:auto}.csv-import-modal__errors{background:var(--bg-danger-subtle, #fef2f2);border:1px solid var(--border-danger, #fecaca);color:var(--text-danger, #dc2626)}.csv-import-modal__warnings{background:var(--bg-warning-subtle, #fffbeb);border:1px solid var(--border-warning, #fde68a);color:var(--text-warning, #d97706)}.csv-import-modal__errors-title,.csv-import-modal__warnings-title{font-weight:600;margin-bottom:6px}.csv-import-modal__errors ul,.csv-import-modal__warnings ul{margin:0;padding-left:18px}.csv-import-modal__errors li,.csv-import-modal__warnings li{margin-bottom:2px}.csv-import-modal__table-wrap{max-height:300px;overflow:auto;border:1px solid var(--border-color);border-radius:var(--radius-sm);margin-bottom:16px}.csv-import-modal__table{width:100%;border-collapse:collapse;font-size:13px}.csv-import-modal__table th{position:sticky;top:0;background:var(--bg-gray);padding:8px 10px;text-align:left;font-weight:600;font-size:12px;color:var(--text-muted);border-bottom:1px solid var(--border-color);white-space:nowrap}.csv-import-modal__table td{padding:6px 10px;border-bottom:1px solid var(--border-light, #f0f0f0);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.csv-import-modal__table tr:hover td{background:var(--bg-hover, #f9fafb)}.csv-import-modal__owner-matched{color:var(--text-body)}.csv-import-modal__owner-unmatched{color:var(--text-warning, #d97706)}.csv-import-modal__owner-empty{color:var(--text-muted)}.csv-import-modal__footer{display:flex;justify-content:space-between;align-items:center;padding-top:12px;border-top:1px solid var(--border-color)}.csv-import-modal__footer-right{display:flex;gap:8px}.csv-import-modal__btn{padding:8px 16px;border:1px solid var(--border-color);border-radius:var(--radius-sm);font-size:13px;cursor:pointer;background:var(--bg-white);color:var(--text-body);transition:background .15s,border-color .15s}.csv-import-modal__btn:hover{background:var(--bg-hover, #f9fafb)}.csv-import-modal__btn--template{border-color:transparent;color:var(--brand-primary, #4f46e5);background:none;font-size:12px}.csv-import-modal__btn--template:hover{text-decoration:underline;background:none}.csv-import-modal__btn--cancel{background:var(--bg-white)}.csv-import-modal__btn--confirm{background:var(--brand-primary, #4f46e5);color:#fff;border-color:var(--brand-primary, #4f46e5)}.csv-import-modal__btn--confirm:hover{opacity:.9}.csv-import-modal__btn--confirm:disabled{opacity:.5;cursor:not-allowed}
