@charset "UTF-8";.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:flex}.vue-recycle-scroller__slot{flex:auto 0 0}.vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}#app{width:100%;min-height:100vh}.el-overlay--image{z-index:99999!important}.el-image-viewer__wrapper{z-index:100000!important}.el-image-viewer__mask{z-index:-1!important}.el-image-viewer__close,.el-image-viewer__actions{z-index:100001!important}.el-overlay.image-viewer{z-index:99999!important}.el-overlay .el-image-viewer__wrapper{z-index:100000!important}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.6;color:#333;background-color:#f5f7fa}#app{height:100%}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#888;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#555}.text-center{text-align:center}.text-right{text-align:right}.mt-1{margin-top:8px}.mt-2{margin-top:16px}.mt-3{margin-top:24px}.mb-1{margin-bottom:8px}.mb-2{margin-bottom:16px}.mb-3{margin-bottom:24px}.p-1{padding:8px}.p-2{padding:16px}.p-3{padding:24px}.fade-enter-active,.fade-leave-active{transition:opacity .3s ease}.fade-enter-from,.fade-leave-to{opacity:0}.slide-fade-enter-active{transition:all .3s ease-out}.slide-fade-leave-active{transition:all .3s cubic-bezier(1,.5,.8,1)}.slide-fade-enter-from,.slide-fade-leave-to{transform:translate(20px);opacity:0}.page-wrapper{padding:24px;background:#f5f7fa;min-height:100vh}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.header-left{display:flex;align-items:center;gap:16px}.page-title{font-size:24px;font-weight:600;color:#1a1a2e;margin:0}.header-actions{display:flex;gap:12px}.stats-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-bottom:24px}.stat-card{background:#fff;border-radius:12px;padding:20px;display:flex;align-items:center;gap:16px;box-shadow:0 2px 8px #0000000a;transition:transform .2s,box-shadow .2s}.stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000014}.stat-card .stat-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px;color:#fff}.stat-card .stat-content{flex:1}.stat-card .stat-value{font-size:28px;font-weight:700;line-height:1.2}.stat-card .stat-label{font-size:13px;color:#909399;margin-top:4px}.stat-card .stat-unit{font-size:14px;font-weight:400;margin-left:2px}.stat-card.stat-total .stat-icon{background:linear-gradient(135deg,#667eea,#764ba2)}.stat-card.stat-total .stat-value{color:#667eea}.stat-card.stat-active .stat-icon,.stat-card.stat-confirmed .stat-icon{background:linear-gradient(135deg,#43e97b,#38f9d7)}.stat-card.stat-active .stat-value,.stat-card.stat-confirmed .stat-value{color:#67c23a}.stat-card.stat-pending .stat-icon{background:linear-gradient(135deg,#f093fb,#f5576c)}.stat-card.stat-pending .stat-value{color:#f5576c}.stat-card.stat-scheduled .stat-icon,.stat-card.stat-progress .stat-icon{background:linear-gradient(135deg,#4facfe,#00f2fe)}.stat-card.stat-scheduled .stat-value,.stat-card.stat-progress .stat-value{color:#409eff}.stat-card.stat-completed .stat-icon{background:linear-gradient(135deg,#fa709a,#fee140)}.stat-card.stat-completed .stat-value{color:#00c48c}.stat-card.stat-urgent .stat-icon,.stat-card.stat-rejected .stat-icon{background:linear-gradient(135deg,#ff6b6b,orange)}.stat-card.stat-urgent .stat-value,.stat-card.stat-rejected .stat-value{color:#f56c6c}.stat-card.stat-warning .stat-icon,.stat-card.stat-hold .stat-icon,.stat-card.stat-overtime .stat-icon{background:linear-gradient(135deg,#f093fb,#f5576c)}.stat-card.stat-warning .stat-value,.stat-card.stat-hold .stat-value,.stat-card.stat-overtime .stat-value{color:#e6a23c}.stat-card.stat-info .stat-icon{background:linear-gradient(135deg,#4facfe,#00f2fe)}.stat-card.stat-info .stat-value{color:#409eff}.filter-panel{background:#fff;border-radius:12px;margin-bottom:24px;overflow:hidden;box-shadow:0 2px 8px #0000000a}.filter-panel.is-collapsed .filter-arrow{transform:rotate(180deg)}.filter-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;cursor:pointer;-webkit-user-select:none;user-select:none;border-bottom:1px solid #f0f0f0}.filter-header:hover{background:#fafafa}.filter-title{display:flex;align-items:center;gap:8px;font-weight:500;color:#303133}.filter-arrow{transition:transform .3s;color:#909399}.filter-arrow.is-rotated{transform:rotate(180deg)}.filter-body{padding:20px}.filter-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:16px}.filter-item{display:flex;flex-direction:column;gap:8px}.filter-item label{font-size:13px;color:#606266;font-weight:500}.filter-item .el-select,.filter-item .el-input,.filter-item .el-date-editor{width:100%}.filter-actions{display:flex;justify-content:flex-end;gap:12px}.content-list{background:#fff;border-radius:12px;padding:20px;box-shadow:0 2px 8px #0000000a}.card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.list-card{background:#fafbfc;border:2px solid transparent;border-radius:10px;overflow:hidden;transition:all .2s}.list-card:hover{background:#f5f7fa;border-color:#e4e7ed}.list-card.is-completed{opacity:.85}.list-card.is-urgent{border-color:#f56c6c;background:#fef0f0}.list-card.is-hold{border-color:#e6a23c;background:#fdf6ec}.card-header{padding:14px 16px;background:linear-gradient(135deg,#f5f7fa,#e4e7ed)}.card-header.status-active{background:linear-gradient(135deg,#e8f5e9,#c8e6c9)}.card-header.status-pending{background:linear-gradient(135deg,#fff8e1,#ffecb3)}.card-header.status-completed{background:linear-gradient(135deg,#f3e5f5,#e1bee7)}.card-header.status-urgent{background:linear-gradient(135deg,#ffebee,#ffcdd2)}.card-title-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.card-name{font-size:16px;font-weight:600;color:#303133}.card-code{display:flex;align-items:center;gap:8px;font-weight:600;font-size:14px}.card-tags{display:flex;gap:8px}.card-body{padding:16px;cursor:pointer}.card-footer{padding:12px 16px;border-top:1px solid #ebeef5;display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:16px}.info-item{display:flex;align-items:center;gap:6px;font-size:13px;color:#606266}.info-item .el-icon{color:#909399;font-size:14px}.info-item .info-label{color:#909399}.info-item .info-value{color:#303133;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-item .info-value.highlight{color:#409eff;font-weight:500}.pagination-wrapper{margin-top:20px;display:flex;justify-content:flex-end}.slide-enter-active,.slide-leave-active{transition:all .3s ease;overflow:hidden}.slide-enter-from,.slide-leave-to{opacity:0;max-height:0;padding-top:0;padding-bottom:0}.slide-enter-to,.slide-leave-from{opacity:1;max-height:500px}@media (max-width: 1600px){.stats-grid{grid-template-columns:repeat(4,1fr)}}@media (max-width: 1200px){.stats-grid{grid-template-columns:repeat(3,1fr)}.filter-grid{grid-template-columns:repeat(2,1fr)}.card-grid{grid-template-columns:1fr}}@media (max-width: 768px){.page-wrapper{padding:16px}.page-header{flex-direction:column;gap:16px;align-items:flex-start}.header-actions{width:100%;flex-wrap:wrap}.stats-grid{grid-template-columns:repeat(2,1fr)}.filter-grid,.info-grid{grid-template-columns:1fr}}:root{--color-primary: #409eff;--color-primary-light: #66b1ff;--color-primary-lighter: #ecf5ff;--color-primary-dark: #337ecc;--color-success: #67c23a;--color-success-light: #95d475;--color-success-lighter: #f0f9ff;--color-success-dark: #529b2e;--color-warning: #e6a23c;--color-warning-light: #f3d19e;--color-warning-lighter: #fdf6ec;--color-warning-dark: #c77c1a;--color-danger: #f56c6c;--color-danger-light: #f89898;--color-danger-lighter: #fef0f0;--color-danger-dark: #c94c4c;--color-info: #909399;--color-info-light: #b1b3b8;--color-info-lighter: #f4f4f5;--color-info-dark: #73767a;--color-text-primary: #303133;--color-text-regular: #606266;--color-text-secondary: #909399;--color-text-placeholder: #a8abb2;--color-bg-primary: #ffffff;--color-bg-secondary: #f5f7fa;--color-bg-tertiary: #ebeef5;--color-bg-overlay: rgba(0, 0, 0, .5);--color-border-base: #dcdfe6;--color-border-light: #e4e7ed;--color-border-lighter: #ebeef5;--color-border-dark: #d4d7de;--task-bar-completed: var(--color-success);--task-bar-completed-bg: linear-gradient(90deg, var(--color-success) 0%, var(--color-success-light) 100%);--task-bar-in-progress: var(--color-primary);--task-bar-in-progress-bg: linear-gradient(90deg, var(--color-primary) 0%, var(--color-primary-light) 100%);--task-bar-not-started: var(--color-info);--task-bar-not-started-bg: linear-gradient(90deg, var(--color-info) 0%, var(--color-info-light) 100%);--task-bar-delayed: var(--color-danger);--task-bar-delayed-bg: linear-gradient(90deg, var(--color-danger) 0%, var(--color-danger-light) 100%);--task-bar-milestone: #f39c12;--task-bar-milestone-bg: linear-gradient(135deg, #f39c12 0%, #e67e22 100%);--task-bar-critical: #e74c3c;--task-bar-critical-bg: linear-gradient(90deg, #e74c3c 0%, #c0392b 100%);--priority-high: var(--color-danger);--priority-medium: var(--color-warning);--priority-low: var(--color-success);--gantt-row-height: 60px;--gantt-task-height: 32px;--gantt-day-width: 40px;--gantt-header-height: 60px;--gantt-timeline-min-height: 400px;--task-table-width: 550px;--task-table-column-name: 200px;--task-table-column-date: 100px;--task-table-column-duration: 80px;--task-table-column-progress: 80px;--task-table-column-status: 80px;--timeline-day-width: 40px;--timeline-week-width: 280px;--timeline-month-width: 1200px;--timeline-header-height: 60px;--dependency-line-color: #909399;--dependency-line-width: 2px;--dependency-line-critical: #f56c6c;--dependency-arrow-size: 6px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-family-mono: "SF Mono", Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--font-size-xs: 12px;--font-size-sm: 13px;--font-size-base: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--radius-xs: 2px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 9999px;--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .06);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .3s cubic-bezier(.4, 0, .2, 1);--transition-slow: .5s cubic-bezier(.4, 0, .2, 1);--easing-linear: cubic-bezier(0, 0, 1, 1);--easing-ease: cubic-bezier(.25, .1, .25, 1);--easing-ease-in: cubic-bezier(.42, 0, 1, 1);--easing-ease-out: cubic-bezier(0, 0, .58, 1);--easing-ease-in-out: cubic-bezier(.42, 0, .58, 1);--z-index-dropdown: 1000;--z-index-sticky: 1020;--z-index-fixed: 1030;--z-index-modal-backdrop: 1040;--z-index-modal: 1050;--z-index-popover: 1060;--z-index-tooltip: 1070;--z-index-notification: 1080;--breakpoint-xs: 320px;--breakpoint-sm: 375px;--breakpoint-md: 768px;--breakpoint-lg: 1024px;--breakpoint-xl: 1280px;--breakpoint-2xl: 1536px;--toolbar-height: 56px;--toolbar-compact-height: 48px;--dialog-width-sm: 400px;--dialog-width-md: 600px;--dialog-width-lg: 800px;--dialog-width-xl: 1000px;--grid-columns: 12;--grid-gutter: var(--spacing-md);--scrollbar-width: 8px;--scrollbar-thumb-color: #dcdfe6;--scrollbar-thumb-hover-color: #c0c4cc;--scrollbar-track-color: #f5f7fa}[data-theme=dark]{--color-primary: #409eff;--color-primary-light: #66b1ff;--color-primary-lighter: #1a2a3a;--color-primary-dark: #53a8ff;--color-success: #67c23a;--color-success-light: #85ce61;--color-success-lighter: #1a3a1a;--color-warning: #e6a23c;--color-warning-light: #ebb563;--color-warning-lighter: #3a2a1a;--color-danger: #f56c6c;--color-danger-light: #f78989;--color-danger-lighter: #3a1a1a;--color-info: #909399;--color-info-light: #a6a9ad;--color-info-lighter: #2a2a2a;--color-text-primary: #e5eaf3;--color-text-regular: #cfd3dc;--color-text-secondary: #a3a6ad;--color-text-placeholder: #8d9095;--color-bg-primary: #1a1a1a;--color-bg-secondary: #2a2a2a;--color-bg-tertiary: #3a3a3a;--color-bg-overlay: rgba(0, 0, 0, .7);--color-border-base: #4c4d4f;--color-border-light: #414243;--color-border-lighter: #363637;--color-border-dark: #58585b;--scrollbar-thumb-color: #4c4d4f;--scrollbar-thumb-hover-color: #58585b;--scrollbar-track-color: #2a2a2a}@media (max-width: 374px){:root{--gantt-row-height: 80px;--gantt-day-width: 30px;--task-table-width: 100%}}@media (min-width: 375px) and (max-width: 767px){:root{--gantt-row-height: 70px;--gantt-day-width: 35px;--task-table-width: 100%}}@media (min-width: 768px) and (max-width: 1023px){:root{--gantt-row-height: 65px;--gantt-day-width: 38px;--task-table-width: 400px}}@media (min-width: 1024px){:root{--gantt-row-height: 60px;--gantt-day-width: 40px;--task-table-width: 550px}}@media (min-width: 1536px){:root{--gantt-day-width: 50px;--task-table-width: 600px}}:root{--gantt-bar-gradient: linear-gradient(135deg, #4e9bff 0%, #2b7de9 100%);--gantt-bar-gradient-hover: linear-gradient(135deg, #5fa9ff 0%, #338de8 100%);--gantt-bar-done-gradient: linear-gradient(135deg, #52c41a 0%, #389e0d 100%);--gantt-bar-delay-gradient: linear-gradient(135deg, #ff7875 0%, #f5222d 100%);--gantt-bar-todo-gradient: linear-gradient(135deg, #b8c4d3 0%, #8a9aaf 100%);--gantt-critical-gradient: linear-gradient(135deg, #ff7575 0%, #f5222d 100%);--gantt-milestone-gradient: linear-gradient(135deg, #ffc53d 0%, #fa8c16 100%);--gantt-grid-line: #f0f2f5;--gantt-grid-line-strong: #e4e7ed;--gantt-weekend-bg: #fafbfc;--gantt-today-bg: #e8f3ff;--gantt-today-marker: #2b7de9;--gantt-row-stripe: #fafbfc;--gantt-row-hover: #f5f7fa;--gantt-row-selected: #e8f3ff;--gantt-row-selected-border: #2b7de9;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 2px 8px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .12);--shadow-bar: 0 1px 3px rgba(0, 0, 0, .06);--shadow-bar-hover: 0 4px 12px rgba(43, 125, 233, .25);--shadow-critical: 0 2px 8px rgba(245, 34, 45, .2);--radius-bar: 5px;--radius-card: 8px;--radius-pill: 12px;--gantt-row-height: 44px;--gantt-bar-height: 26px;--gantt-bar-y-offset: 9px;--gantt-font-size: 13px;--gantt-font-size-sm: 12px;--gantt-font-size-xs: 11px;--gantt-table-header-bg: #fafbfc;--gantt-table-border: #e8e8e8;--gantt-table-indent-line: #e8e8e8;--gantt-bar-text: #ffffff;--gantt-bar-text-secondary: rgba(255, 255, 255, .85);--gantt-toolbar-bg: #fafbfc;--gantt-toolbar-border: #e8e8e8;--gantt-transition: .2s ease;--gantt-transition-fast: .15s ease;--gantt-transition-slow: .3s ease}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px;transition:background .2s}::-webkit-scrollbar-thumb:hover{background:#0000004d}::-webkit-scrollbar-corner{background:transparent}@media (min-width: 768px){:root{--gantt-row-height: 44px;--gantt-day-width: 40px}}@media (min-width: 1024px){:root{--gantt-row-height: 44px;--gantt-day-width: 44px;--task-table-width: 520px}}[data-theme=dark]{--task-bar-completed: #85ce61;--task-bar-completed-bg: linear-gradient(90deg, #85ce61 0%, #67c23a 100%);--task-bar-in-progress: #66b1ff;--task-bar-in-progress-bg: linear-gradient(90deg, #66b1ff 0%, #409eff 100%);--task-bar-not-started: #a6a9ad;--task-bar-not-started-bg: linear-gradient(90deg, #a6a9ad 0%, #909399 100%);--task-bar-delayed: #f78989;--task-bar-delayed-bg: linear-gradient(90deg, #f78989 0%, #f56c6c 100%);--dependency-line-color: #a6a9ad;--dependency-line-critical: #f78989;--timeline-grid-line: rgba(255, 255, 255, .1);--timeline-grid-line-weekend: rgba(255, 255, 255, .15);--header-bg: #2a2a2a;--header-border: #4c4d4f;--row-hover-bg: rgba(255, 255, 255, .05);--row-selected-bg: rgba(64, 158, 255, .15);--drag-preview-bg: rgba(64, 158, 255, .2);--drag-preview-border: #409eff;--drag-shadow: 0 0 20px rgba(64, 158, 255, .3);--tooltip-bg: #3a3a3a;--tooltip-text: #e5eaf3;--tooltip-border: #4c4d4f;--scrollbar-thumb-color: #4c4d4f;--scrollbar-thumb-hover-color: #6a6b6d;--scrollbar-track-color: #1a1a1a;--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .4)}[data-theme=dark] .task-table{background-color:var(--color-bg-primary);border-color:var(--color-border-base)}[data-theme=dark] .task-table__row{border-bottom-color:var(--color-border-light)}[data-theme=dark] .task-table__row:hover{background-color:var(--row-hover-bg)}[data-theme=dark] .timeline{background-color:var(--color-bg-secondary)}[data-theme=dark] .timeline__grid-line{background-color:var(--timeline-grid-line)}[data-theme=dark] .timeline__grid-line--weekend{background-color:var(--timeline-grid-line-weekend)}[data-theme=dark] .task-bar{box-shadow:0 2px 4px #0000004d}[data-theme=dark] .el-dialog{background-color:var(--color-bg-primary)}[data-theme=dark] .el-dialog__header{border-bottom-color:var(--color-border-light)}[data-theme=dark] .el-dropdown-menu{background-color:var(--color-bg-primary);border-color:var(--color-border-base)}[data-theme=dark] .el-dropdown-menu__item:hover{background-color:var(--row-hover-bg)}[data-theme=dark] .el-input__wrapper{background-color:var(--color-bg-secondary);border-color:var(--color-border-base)}[data-theme=dark] .el-input__wrapper:hover{border-color:var(--color-border-dark)}[data-theme=dark] .el-input__wrapper.is-focus{border-color:var(--color-primary)}[data-theme=dark] .el-button--default{background-color:var(--color-bg-secondary);border-color:var(--color-border-base);color:var(--color-text-primary)}[data-theme=dark] .el-button--default:hover{background-color:var(--color-bg-tertiary);border-color:var(--color-border-dark)}
