.navbar[data-v-78b56ce4]{height:var(--navbar-height);background:var(--primary);color:#fff;display:flex;align-items:center;padding:0 24px;gap:24px;box-shadow:0 2px 8px #0000001f;position:sticky;top:0;z-index:100}.navbar-brand[data-v-78b56ce4]{font-size:18px;font-weight:700;white-space:nowrap}.navbar-tabs[data-v-78b56ce4]{display:flex;gap:4px;flex:1;overflow-x:auto}.nav-tab[data-v-78b56ce4]{background:transparent;border:none;color:#ffffffbf;padding:6px 14px;border-radius:6px;cursor:pointer;font-size:13px;white-space:nowrap;transition:all .2s}.nav-tab[data-v-78b56ce4]:hover{color:#fff;background:#ffffff1f}.nav-tab.active[data-v-78b56ce4]{color:#fff;background:#fff3;font-weight:600}.navbar-actions[data-v-78b56ce4]{display:flex;align-items:center;gap:12px;white-space:nowrap}.save-indicator[data-v-78b56ce4]{font-size:12px;opacity:.85}.sidebar[data-v-6b9794eb]{width:var(--sidebar-width);background:var(--bg-white);border-right:1px solid var(--border);display:flex;flex-direction:column;height:calc(100vh - var(--navbar-height));overflow:hidden}.sidebar-header[data-v-6b9794eb]{display:flex;justify-content:space-between;align-items:center;padding:16px 16px 12px;border-bottom:1px solid var(--border)}.sidebar-header h3[data-v-6b9794eb]{font-size:15px;color:var(--primary)}.project-list[data-v-6b9794eb]{flex:1;overflow-y:auto;padding:8px}.project-item[data-v-6b9794eb]{display:flex;align-items:center;padding:12px;border-radius:8px;cursor:pointer;transition:all .15s;margin-bottom:4px}.project-item[data-v-6b9794eb]:hover{background:#f0f6fa}.project-item.active[data-v-6b9794eb]{background:#ebf5fb;border-left:3px solid var(--primary)}.project-item-info[data-v-6b9794eb]{flex:1;min-width:0}.project-name[data-v-6b9794eb]{font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-meta[data-v-6b9794eb]{display:flex;gap:4px;margin-top:4px;align-items:center}.btn-del[data-v-6b9794eb]{background:none;border:none;color:#ccc;font-size:18px;cursor:pointer;padding:0 4px;opacity:0;transition:all .15s}.project-item:hover .btn-del[data-v-6b9794eb]{opacity:1}.btn-del[data-v-6b9794eb]:hover{color:var(--danger)}.empty-hint[data-v-6b9794eb]{text-align:center;color:var(--text-secondary);font-size:13px;padding:24px 0}.overview[data-v-23a48833]{padding:4px 0}.empty-state[data-v-23a48833]{text-align:center;color:var(--text-secondary);padding:60px 0}.card-header[data-v-23a48833]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.card-header h3[data-v-23a48833]{color:var(--primary)}.detail-grid[data-v-23a48833]{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.detail-grid label[data-v-23a48833]{display:block;font-size:12px;color:var(--text-secondary);margin-bottom:2px}.progress-wrap[data-v-23a48833]{display:flex;align-items:center;gap:12px}.progress-wrap label[data-v-23a48833]{font-size:12px;color:var(--text-secondary);white-space:nowrap}.progress-bar[data-v-23a48833]{flex:1;height:8px;background:#e8ecf0;border-radius:4px;overflow:hidden}.progress-fill[data-v-23a48833]{height:100%;background:var(--primary);border-radius:4px;transition:width .3s}.progress-text[data-v-23a48833]{font-size:13px;font-weight:600;color:var(--primary)}.stage-card[data-v-23a48833]{border-left:3px solid var(--primary)}.stage-card-header[data-v-23a48833]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.stage-meta[data-v-23a48833]{font-size:12px;color:var(--text-secondary);margin-bottom:8px}.node-item[data-v-23a48833]{display:flex;gap:16px;font-size:13px;padding:4px 0;border-bottom:1px dashed var(--border)}.node-name[data-v-23a48833]{font-weight:500}.node-time[data-v-23a48833]{color:var(--text-secondary)}.checkbox-group[data-v-23a48833]{display:flex;gap:16px;flex-wrap:wrap}.checkbox-group label[data-v-23a48833]{display:flex;align-items:center;gap:4px;font-size:14px;cursor:pointer}.form-actions[data-v-23a48833]{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.stageflow[data-v-cc3ad453]{padding:4px 0}.empty-state[data-v-cc3ad453]{text-align:center;color:var(--text-secondary);padding:60px 0}.stageflow-header[data-v-cc3ad453]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.stageflow-header h3[data-v-cc3ad453]{color:var(--primary)}.stage-card[data-v-cc3ad453]{border-left:3px solid var(--primary);margin-bottom:16px}.stage-top[data-v-cc3ad453]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px;flex-wrap:wrap;gap:8px}.stage-info strong[data-v-cc3ad453]{display:block;margin-bottom:6px}.stage-dates[data-v-cc3ad453]{display:flex;align-items:center;gap:6px}.date-input[data-v-cc3ad453]{padding:4px 8px;border:1px solid var(--border);border-radius:4px;font-size:12px}.stage-actions[data-v-cc3ad453]{display:flex;gap:8px;align-items:center}.status-select[data-v-cc3ad453]{padding:4px 8px;border:1px solid var(--border);border-radius:4px;font-size:12px}.nodes-section[data-v-cc3ad453]{border-top:1px solid var(--border);padding-top:12px}.nodes-header[data-v-cc3ad453]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.nodes-title[data-v-cc3ad453]{font-size:13px;font-weight:600;color:var(--text-secondary)}.no-nodes[data-v-cc3ad453]{font-size:12px;color:var(--text-secondary);padding:8px 0}.node-card[data-v-cc3ad453]{background:#f8fafb;border-radius:6px;padding:12px;margin-bottom:8px}.node-row[data-v-cc3ad453]{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}.node-name-input[data-v-cc3ad453]{flex:1;min-width:160px;padding:4px 8px;border:1px solid var(--border);border-radius:4px;font-size:13px}.mini-label[data-v-cc3ad453]{font-size:12px;color:var(--text-secondary);white-space:nowrap;width:64px;text-align:right}.multi-select[data-v-cc3ad453]{display:flex;gap:4px;flex-wrap:wrap}.multi-tag[data-v-cc3ad453]{padding:2px 10px;border-radius:12px;font-size:12px;border:1px solid var(--border);cursor:pointer;transition:all .15s;-webkit-user-select:none;user-select:none}.multi-tag[data-v-cc3ad453]:hover{border-color:var(--primary)}.multi-tag.selected[data-v-cc3ad453]{background:var(--primary);color:#fff;border-color:var(--primary)}.gantt[data-v-11ed89da]{padding:4px 0}.empty-state[data-v-11ed89da]{text-align:center;color:var(--text-secondary);padding:60px 0}.gantt-legend[data-v-11ed89da]{display:flex;gap:16px;margin-bottom:12px;align-items:center}.legend-item[data-v-11ed89da]{display:flex;align-items:center;gap:6px;font-size:12px}.legend-color[data-v-11ed89da]{width:14px;height:14px;border-radius:3px;display:inline-block}.conflict-bar[data-v-11ed89da]{border:2px solid #E74C3C;background:#fdedec!important}.gantt-scroll[data-v-11ed89da]{overflow-x:auto;border:1px solid var(--border);border-radius:8px}.gantt-chart[data-v-11ed89da]{display:flex;min-width:max-content}.gantt-labels[data-v-11ed89da]{width:220px;flex-shrink:0;border-right:1px solid var(--border)}.gantt-bars[data-v-11ed89da]{flex:1;min-width:600px;overflow-x:auto}.gantt-header-cell[data-v-11ed89da]{height:36px;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--text-secondary);border-bottom:1px solid var(--border);border-right:1px solid #F0F0F0}.gantt-header[data-v-11ed89da]{display:flex}.gantt-header .gantt-header-cell[data-v-11ed89da]{width:90px;flex-shrink:0}.gantt-label-cell[data-v-11ed89da]{height:36px;display:flex;align-items:center;padding:0 12px;border-bottom:1px solid var(--border);overflow:hidden}.gantt-label-proj[data-v-11ed89da]{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:6px}.gantt-label-stage[data-v-11ed89da]{font-size:11px;color:var(--text-secondary);white-space:nowrap}.gantt-row[data-v-11ed89da]{height:36px;position:relative;border-bottom:1px solid var(--border)}.gantt-bar[data-v-11ed89da]{position:absolute;top:6px;height:24px;border-radius:4px;opacity:.85;transition:opacity .15s;cursor:pointer;min-width:4px}.gantt-bar[data-v-11ed89da]:hover{opacity:1}.gantt-bar.conflict[data-v-11ed89da]{border:2px solid #E74C3C;animation:conflict-pulse-11ed89da 1s infinite}@keyframes conflict-pulse-11ed89da{0%,to{box-shadow:0 0 #e74c3c66}50%{box-shadow:0 0 0 4px #e74c3c00}}.timeline[data-v-33642086]{padding:4px 0}.empty-state[data-v-33642086]{text-align:center;color:var(--text-secondary);padding:60px 0}.timeline-scroll[data-v-33642086]{overflow-x:auto;border:1px solid var(--border);border-radius:8px}.timeline-table[data-v-33642086]{border-collapse:collapse;width:100%;min-width:max-content}.timeline-table th[data-v-33642086],.timeline-table td[data-v-33642086]{border-bottom:1px solid var(--border)}.member-col[data-v-33642086]{width:120px;text-align:center;font-size:12px;color:var(--text-secondary)}.week-col[data-v-33642086]{width:60px;text-align:center;font-size:10px;color:var(--text-secondary);padding:6px 2px}.member-cell[data-v-33642086]{padding:8px 12px;font-size:13px;font-weight:500;white-space:nowrap}.member-dot[data-v-33642086]{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:middle}.load-cell[data-v-33642086]{height:32px;min-width:60px;transition:background .2s}.load-0[data-v-33642086]{background:#f8fafb}.load-1[data-v-33642086]{background:#aed6f1}.load-2[data-v-33642086]{background:#5dade2}.overload[data-v-33642086]{background:#e74c3c}.timeline-legend[data-v-33642086]{display:flex;gap:16px;margin-top:12px;align-items:center}.legend-item[data-v-33642086]{display:flex;align-items:center;gap:6px;font-size:12px}.legend-color[data-v-33642086]{width:14px;height:14px;border-radius:3px}.conflict[data-v-d6478e7e]{padding:4px 0}.empty-state[data-v-d6478e7e]{text-align:center;color:var(--text-secondary);padding:40px 0}.conflict-summary h3[data-v-d6478e7e]{color:var(--primary);margin-bottom:12px}.summary-stats[data-v-d6478e7e]{display:flex;gap:32px}.stat-item[data-v-d6478e7e]{font-size:14px;color:var(--text-secondary)}.stat-num[data-v-d6478e7e]{font-size:24px;font-weight:700;color:var(--danger);margin-right:4px}.conflict-group[data-v-d6478e7e]{margin-top:20px}.group-title[data-v-d6478e7e]{font-size:15px;color:var(--primary);border-left:3px solid var(--primary);padding-left:10px;margin-bottom:12px}.conflict-card[data-v-d6478e7e]{border-left:3px solid var(--danger);background:#fff5f5}.conflict-pair[data-v-d6478e7e]{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.conflict-task[data-v-d6478e7e]{flex:1;min-width:200px}.conflict-task-name[data-v-d6478e7e]{font-weight:600;font-size:14px}.conflict-task-proj[data-v-d6478e7e]{font-size:12px;color:var(--text-secondary)}.conflict-task-time[data-v-d6478e7e]{font-size:12px;color:var(--danger);margin-top:2px}.conflict-vs[data-v-d6478e7e]{font-size:12px;font-weight:700;color:var(--danger);background:#fdedec;padding:4px 12px;border-radius:12px}.member-manage[data-v-d875ba2f]{padding:4px 0}.empty-state[data-v-d875ba2f]{text-align:center;color:var(--text-secondary);padding:24px 0}.member-header[data-v-d875ba2f]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.member-header h3[data-v-d875ba2f]{color:var(--primary)}.member-grid[data-v-d875ba2f]{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px}.member-card[data-v-d875ba2f]{display:flex;align-items:center;gap:12px;padding:16px}.member-dot[data-v-d875ba2f]{width:12px;height:12px;border-radius:50%;flex-shrink:0}.member-info[data-v-d875ba2f]{flex:1}.member-info strong[data-v-d875ba2f]{display:block;font-size:14px}.member-role[data-v-d875ba2f]{font-size:12px;color:var(--text-secondary)}.member-actions[data-v-d875ba2f]{display:flex;gap:6px;align-items:center}.color-picker[data-v-d875ba2f]{width:28px;height:28px;border:none;border-radius:4px;cursor:pointer;padding:0}.form-actions[data-v-d875ba2f]{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.app[data-v-d434560c]{min-height:100vh;display:flex;flex-direction:column}.main-layout[data-v-d434560c]{display:flex;flex:1}.content[data-v-d434560c]{flex:1;padding:20px 24px;overflow-y:auto;height:calc(100vh - var(--navbar-height))}.checkbox-group[data-v-d434560c]{display:flex;gap:16px;flex-wrap:wrap}.checkbox-group label[data-v-d434560c]{display:flex;align-items:center;gap:4px;cursor:pointer;font-size:14px}.form-actions[data-v-d434560c]{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}:root{--primary: #2E86AB;--primary-light: #4A9BC0;--primary-dark: #1E5F7A;--bg: #F5F7FA;--bg-white: #FFFFFF;--text: #2C3E50;--text-secondary: #7F8C8D;--border: #E0E6ED;--success: #27AE60;--warning: #F39C12;--danger: #E74C3C;--sidebar-width: 240px;--navbar-height: 56px;--radius: 8px;--shadow: 0 2px 8px rgba(0,0,0,.08)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);line-height:1.6}#app{min-height:100vh}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:#c0c4cc;border-radius:3px}::-webkit-scrollbar-track{background:transparent}.card{background:var(--bg-white);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:16px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:6px;cursor:pointer;font-size:14px;transition:all .2s}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#c0392b}.btn-ghost{background:transparent;color:var(--primary);border:1px solid var(--primary)}.btn-ghost:hover{background:var(--primary);color:#fff}.btn-sm{padding:4px 10px;font-size:12px}.tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;background:#ebf5fb;color:var(--primary);margin:2px}.tag-warn{background:#fef5e7;color:var(--warning)}.tag-danger{background:#fdedec;color:var(--danger)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:var(--bg-white);border-radius:var(--radius);padding:24px;min-width:420px;max-width:560px;max-height:80vh;overflow-y:auto;box-shadow:0 8px 32px #00000026}.modal h3{margin-bottom:16px;color:var(--primary)}.form-group{margin-bottom:14px}.form-group label{display:block;font-size:13px;color:var(--text-secondary);margin-bottom:4px}.form-group input,.form-group select,.form-group textarea{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:14px;outline:none;transition:border .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary)}.status-badge{display:inline-block;padding:2px 10px;border-radius:12px;font-size:12px;font-weight:500}.status-todo{background:#f0f0f0;color:#999}.status-doing{background:#ebf5fb;color:var(--primary)}.status-done{background:#e8f8f5;color:var(--success)}
