#layout[data-v-fc3680be]{min-height:100vh;display:flex;flex-direction:column}.navbar[data-v-fc3680be]{display:flex;align-items:center;gap:20px;padding:0 24px;height:52px;background:#fff;border-bottom:1px solid var(--gray-200);position:sticky;top:0;z-index:100}.nav-brand[data-v-fc3680be]{display:flex;align-items:center;gap:10px}.nav-logo[data-v-fc3680be]{width:30px;height:30px;background:var(--blue);color:#fff;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600}.nav-title[data-v-fc3680be]{font-size:14px;font-weight:600;color:var(--gray-900)}.nav-links[data-v-fc3680be]{display:flex;gap:4px;margin-left:16px}.nav-link[data-v-fc3680be]{padding:5px 12px;border-radius:var(--radius-sm);font-size:13px;color:var(--gray-600);transition:all .15s}.nav-link[data-v-fc3680be]:hover{background:var(--gray-100);color:var(--gray-900)}.nav-link.active[data-v-fc3680be]{background:var(--blue-light);color:var(--blue);font-weight:500}.nav-date[data-v-fc3680be]{margin-left:auto;font-size:12px;color:var(--gray-400)}.main-content[data-v-fc3680be]{flex:1;padding:24px;max-width:1100px;margin:0 auto;width:100%}.summary-bar[data-v-f3c4e5e0]{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:20px}.scard[data-v-f3c4e5e0]{background:var(--gray-100);border-radius:var(--radius-md);padding:10px 14px}.scard-label[data-v-f3c4e5e0]{font-size:11px;color:var(--gray-600);margin-bottom:4px}.scard-val[data-v-f3c4e5e0]{font-size:22px;font-weight:600;color:var(--gray-900)}@media (max-width: 768px){.summary-bar[data-v-f3c4e5e0]{grid-template-columns:repeat(3,1fr)}}.task-table-wrap[data-v-c9f8766a]{overflow-x:auto}.task-table[data-v-c9f8766a]{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}.task-table th[data-v-c9f8766a]{background:var(--gray-50);color:var(--gray-600);font-weight:500;font-size:11px;padding:7px 10px;border-bottom:1px solid var(--gray-200);text-align:left;white-space:nowrap}.task-table td[data-v-c9f8766a]{padding:9px 10px;border-bottom:1px solid var(--gray-100);vertical-align:middle}.task-row:last-child td[data-v-c9f8766a]{border-bottom:none}.task-row:hover td[data-v-c9f8766a]{background:var(--gray-50)}.col-task[data-v-c9f8766a]{width:26%}.col-proj[data-v-c9f8766a]{width:18%}.col-status[data-v-c9f8766a]{width:13%}.col-pri[data-v-c9f8766a]{width:10%}.col-prog[data-v-c9f8766a]{width:17%}.col-due[data-v-c9f8766a]{width:10%}.col-action[data-v-c9f8766a]{width:8%;text-align:right}.task-name[data-v-c9f8766a]{font-weight:500}.task-proj[data-v-c9f8766a]{color:var(--gray-600);font-size:12px}.pri-text[data-v-c9f8766a]{font-size:12px;color:var(--gray-600);vertical-align:middle}.prog-row[data-v-c9f8766a]{display:flex;align-items:center;gap:6px}.prog-wrap[data-v-c9f8766a]{flex:1;height:5px;background:var(--gray-200);border-radius:3px;overflow:hidden}.prog-bar[data-v-c9f8766a]{height:100%;border-radius:3px;transition:width .3s}.prog-pct[data-v-c9f8766a]{font-size:11px;color:var(--gray-600);min-width:30px}.due-urgent[data-v-c9f8766a]{color:#a32d2d;font-weight:600}.due-soon[data-v-c9f8766a]{color:#854f0b}.empty-row[data-v-c9f8766a]{text-align:center;color:var(--gray-400);padding:20px;font-size:13px}.action-btn[data-v-c9f8766a]{padding:3px 7px;border-radius:var(--radius-sm);font-size:12px;border:1px solid var(--gray-200);color:var(--gray-600);background:#fff;margin-left:4px;cursor:pointer;transition:all .15s}.edit-btn[data-v-c9f8766a]:hover{background:var(--blue-light);color:var(--blue);border-color:var(--blue-mid)}.del-btn[data-v-c9f8766a]:hover{background:var(--red-light);color:var(--red);border-color:#f09595}.member-card[data-v-1aba35c1]{margin-bottom:16px}.member-header[data-v-1aba35c1]{display:flex;align-items:center;gap:12px;margin-bottom:14px}.avatar[data-v-1aba35c1]{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0}.member-info[data-v-1aba35c1]{flex:1}.member-name[data-v-1aba35c1]{font-size:14px;font-weight:600;color:var(--gray-900)}.member-role[data-v-1aba35c1]{font-size:12px;color:var(--gray-600);margin-top:1px}.member-load[data-v-1aba35c1]{text-align:right}.load-label[data-v-1aba35c1]{font-size:12px;color:var(--gray-600);display:flex;align-items:center;gap:6px;justify-content:flex-end;margin-bottom:4px}.load-pct[data-v-1aba35c1]{font-weight:600;font-size:13px}.load-bar-wrap[data-v-1aba35c1]{width:100px;height:7px;background:var(--gray-200);border-radius:4px;overflow:hidden;margin-left:auto}.load-bar[data-v-1aba35c1]{height:100%;border-radius:4px;transition:width .4s}.load-detail[data-v-1aba35c1]{font-size:10px;color:var(--gray-400);margin-top:3px}.page-top[data-v-0a22b5c8]{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:20px}.page-title[data-v-0a22b5c8]{font-size:18px;font-weight:600;color:var(--gray-900)}.page-sub[data-v-0a22b5c8]{font-size:12px;color:var(--gray-600);margin-top:2px}.filter-row[data-v-0a22b5c8]{display:flex;gap:6px;flex-wrap:wrap}.filter-btn[data-v-0a22b5c8]{font-size:12px;padding:5px 12px;border-radius:20px;border:1px solid var(--gray-200);background:#fff;color:var(--gray-600);cursor:pointer;transition:all .15s;font-family:inherit}.filter-btn[data-v-0a22b5c8]:hover{background:var(--gray-100)}.filter-btn.active[data-v-0a22b5c8]{background:var(--blue);color:#fff;border-color:var(--blue)}.loading[data-v-0a22b5c8]{text-align:center;padding:40px;color:var(--gray-600)}.error-msg[data-v-0a22b5c8]{padding:12px 16px;background:var(--red-light);color:#791f1f;border-radius:var(--radius-md);font-size:13px}.modal-backdrop[data-v-de8e6aef]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}.modal[data-v-de8e6aef]{background:#fff;border-radius:var(--radius-lg);width:100%;max-width:520px;border:1px solid var(--gray-200)}.modal-header[data-v-de8e6aef]{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--gray-200)}.modal-title[data-v-de8e6aef]{font-size:14px;font-weight:600}.close-btn[data-v-de8e6aef]{width:26px;height:26px;border-radius:var(--radius-sm);border:1px solid var(--gray-200);background:#fff;font-size:12px;color:var(--gray-600);cursor:pointer;display:flex;align-items:center;justify-content:center}.close-btn[data-v-de8e6aef]:hover{background:var(--gray-100)}.modal-body[data-v-de8e6aef]{padding:16px 18px}.modal-footer[data-v-de8e6aef]{display:flex;gap:8px;justify-content:flex-end;padding:12px 18px;border-top:1px solid var(--gray-200)}.form-grid[data-v-de8e6aef]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.full-width[data-v-de8e6aef]{grid-column:1 / -1}.form-range[data-v-de8e6aef]{width:100%;margin-top:4px}.form-error[data-v-de8e6aef]{margin-top:10px;padding:8px 12px;background:var(--red-light);color:#791f1f;border-radius:var(--radius-sm);font-size:12px}.page-top[data-v-3825538d]{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:20px}.page-title[data-v-3825538d]{font-size:18px;font-weight:600}.page-sub[data-v-3825538d]{font-size:12px;color:var(--gray-600);margin-top:2px}.loading[data-v-3825538d]{text-align:center;padding:40px;color:var(--gray-600)}.error-msg[data-v-3825538d]{padding:12px 16px;background:var(--red-light);color:#791f1f;border-radius:var(--radius-md);font-size:13px}.add-task-btn[data-v-3825538d]{margin-top:10px;width:100%;padding:8px;border:1px dashed var(--blue-mid);border-radius:var(--radius-md);background:transparent;color:var(--blue);font-size:13px;cursor:pointer;font-family:inherit;transition:background .15s}.add-task-btn[data-v-3825538d]:hover{background:var(--blue-light)}.modal-backdrop[data-v-3825538d]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}.confirm-modal[data-v-3825538d]{max-width:320px;width:100%}.confirm-text[data-v-3825538d]{font-size:14px;font-weight:500;margin-bottom:4px}.confirm-sub[data-v-3825538d]{font-size:12px;color:var(--gray-600);margin-bottom:16px}.confirm-actions[data-v-3825538d]{display:flex;gap:8px;justify-content:flex-end}.page-top[data-v-a2167f0b]{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:14px}.page-title[data-v-a2167f0b]{font-size:18px;font-weight:600;color:var(--gray-900)}.page-sub[data-v-a2167f0b]{font-size:12px;color:var(--gray-600);margin-top:2px}.filter-row[data-v-a2167f0b]{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.filter-label[data-v-a2167f0b]{font-size:12px;color:var(--gray-600);margin-right:4px}.filter-btn[data-v-a2167f0b]{font-size:12px;padding:5px 12px;border-radius:20px;border:1px solid var(--gray-200);background:#fff;color:var(--gray-600);cursor:pointer;font-family:inherit}.filter-btn[data-v-a2167f0b]:hover{background:var(--gray-100)}.filter-btn.active[data-v-a2167f0b]{background:var(--blue);color:#fff;border-color:var(--blue)}.legend[data-v-a2167f0b]{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:16px;font-size:12px;color:var(--gray-600)}.legend-item[data-v-a2167f0b]{display:inline-flex;align-items:center;gap:5px}.dot[data-v-a2167f0b]{display:inline-block;width:10px;height:10px;border-radius:50%}.loading[data-v-a2167f0b]{text-align:center;padding:40px;color:var(--gray-600)}.error-msg[data-v-a2167f0b]{padding:12px 16px;background:var(--red-light);color:#791f1f;border-radius:var(--radius-md);font-size:13px}.gantt-card[data-v-a2167f0b]{margin-bottom:16px;padding:14px}.member-header[data-v-a2167f0b]{display:flex;align-items:center;gap:12px;margin-bottom:12px}.avatar[data-v-a2167f0b]{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.member-name[data-v-a2167f0b]{font-size:14px;font-weight:600;color:var(--gray-900)}.member-role[data-v-a2167f0b]{font-size:12px;color:var(--gray-600);margin-top:1px}.gantt-grid[data-v-a2167f0b]{display:grid;grid-template-columns:180px 1fr;border:1px solid var(--gray-200);border-radius:var(--radius-md);overflow:hidden}.task-col-head[data-v-a2167f0b],.timeline-head[data-v-a2167f0b]{background:var(--gray-50);border-bottom:1px solid var(--gray-200);font-size:11px;color:var(--gray-600);font-weight:500}.task-col-head[data-v-a2167f0b]{padding:8px 10px;display:flex;align-items:center}.timeline-head[data-v-a2167f0b]{padding:0}.months-row[data-v-a2167f0b],.weeks-row[data-v-a2167f0b]{display:grid}.weeks-row[data-v-a2167f0b]{border-top:1px solid var(--gray-200)}.month-cell[data-v-a2167f0b]{padding:4px 6px;text-align:center;border-right:1px solid var(--gray-200);font-size:11px}.month-cell[data-v-a2167f0b]:last-child{border-right:none}.week-cell[data-v-a2167f0b]{padding:4px 0;text-align:center;font-size:10px;color:var(--gray-400);border-right:1px solid var(--gray-100)}.week-cell[data-v-a2167f0b]:nth-child(4n){border-right:1px solid var(--gray-200)}.week-cell[data-v-a2167f0b]:last-child{border-right:none}.task-col[data-v-a2167f0b]{padding:8px 10px;border-bottom:1px solid var(--gray-100);border-right:1px solid var(--gray-200);font-size:12px}.task-col.empty[data-v-a2167f0b]{color:var(--gray-400);font-style:italic;text-align:center}.task-name[data-v-a2167f0b]{font-weight:500;color:var(--gray-900);font-size:13px}.task-proj[data-v-a2167f0b]{color:var(--gray-600);font-size:11px;margin-top:1px}.timeline-row[data-v-a2167f0b]{position:relative;border-bottom:1px solid var(--gray-100);height:38px}.grid-bg[data-v-a2167f0b]{position:absolute;top:0;right:0;bottom:0;left:0;display:grid}.week-bg[data-v-a2167f0b]{border-right:1px solid var(--gray-100)}.week-bg.month-edge[data-v-a2167f0b]{border-right:1px solid var(--gray-200)}.week-bg[data-v-a2167f0b]:last-child{border-right:none}.task-bar[data-v-a2167f0b]{position:absolute;top:8px;bottom:8px;border-radius:4px;font-size:11px;font-weight:500;padding:0 8px;display:flex;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;z-index:2}.due-marker[data-v-a2167f0b]{position:absolute;top:50%;transform:translate(-50%,-50%);width:10px;height:10px;border-radius:50%;background:var(--gray-400);z-index:2}.today-line[data-v-a2167f0b]{position:absolute;top:0;bottom:0;width:2px;background:#e24b4a;z-index:3;pointer-events:none}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--blue: #185FA5;--blue-light: #E6F1FB;--blue-mid: #85B7EB;--green: #1D9E75;--green-light: #EAF3DE;--amber: #EF9F27;--amber-light: #FAEEDA;--red: #E24B4A;--red-light: #FCEBEB;--purple-light: #EEEDFE;--purple: #534AB7;--gray-50: #F8F8F7;--gray-100: #F1EFE8;--gray-200: #D3D1C7;--gray-400: #888780;--gray-600: #5F5E5A;--gray-900: #1a1a1a;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px}body{font-family:Inter,sans-serif;font-size:14px;color:var(--gray-900);background:var(--gray-50);line-height:1.5}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none}input,select,textarea{font-family:inherit;font-size:13px}.badge{display:inline-block;font-size:10px;padding:2px 8px;border-radius:20px;font-weight:500;white-space:nowrap}.badge-inprog{background:var(--blue-light);color:#0c447c}.badge-waiting{background:var(--purple-light);color:#3c3489}.badge-queue{background:var(--amber-light);color:#633806}.badge-done{background:var(--green-light);color:#27500a}.badge-hold{background:var(--gray-100);color:var(--gray-600)}.pri-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px;vertical-align:middle}.pri-high{background:var(--red)}.pri-med{background:var(--amber)}.pri-low{background:var(--green)}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--radius-md);font-size:13px;font-weight:500;border:1px solid var(--gray-200);background:#fff;color:var(--gray-900);transition:background .15s,border-color .15s}.btn:hover{background:var(--gray-100)}.btn-primary{background:var(--blue);color:#fff;border-color:var(--blue)}.btn-primary:hover{background:#0c447c;border-color:#0c447c}.btn-danger{color:var(--red);border-color:#f09595}.btn-danger:hover{background:var(--red-light)}.card{background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-lg);padding:16px 18px}.form-group{display:flex;flex-direction:column;gap:4px}.form-label{font-size:11px;font-weight:500;color:var(--gray-600);text-transform:uppercase;letter-spacing:.4px}.form-input{padding:7px 10px;border:1px solid var(--gray-200);border-radius:var(--radius-sm);font-size:13px;color:var(--gray-900);background:#fff;outline:none;transition:border-color .15s}.form-input:focus{border-color:var(--blue-mid)}.divider{border:none;border-top:1px solid var(--gray-200);margin:16px 0}
