.project-monitor-detail{font-size:13px;line-height:1.5;min-width:0}.pmd-summary-row{margin-bottom:20px}.pmd-summary-card{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:#fff;border:1px solid #f0f0f0;border-radius:8px;box-shadow:0 1px 4px #0000000a;min-height:72px}.pmd-summary-card__left{display:flex;align-items:center;gap:12px}.pmd-summary-card__icon{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.pmd-summary-card__icon--total{background:#fff7e6;color:#d48806}.pmd-summary-card__icon--normal{background:#f6ffed;color:#52c41a}.pmd-summary-card__icon--risk{background:#fff1f0;color:#ff4d4f}.pmd-summary-card__label{font-size:14px;color:#595959;font-weight:400}.pmd-summary-card__value{font-size:28px;font-weight:600;color:#262626;line-height:1}.pmd-summary-card__value--risk{color:#ff4d4f}.pmd-monitor-tabs.ant-tabs{margin-bottom:0}.pmd-monitor-tabs>.ant-tabs-nav{margin-bottom:16px}.pmd-monitor-tabs>.ant-tabs-nav:before{border-bottom:1px solid #f0f0f0}.pmd-monitor-tabs .ant-tabs-nav-list{gap:32px}.pmd-monitor-tabs .ant-tabs-tab{padding:8px 0;margin:0!important;font-size:14px;color:#595959}.pmd-monitor-tabs .ant-tabs-tab+.ant-tabs-tab{margin-left:0!important}.pmd-monitor-tabs .ant-tabs-tab:hover{color:#1677ff}.pmd-monitor-tabs .ant-tabs-tab-active .ant-tabs-tab-btn{color:#1677ff;font-weight:500}.pmd-monitor-tabs .ant-tabs-ink-bar{background:#1677ff;height:2px}.pmd-risk-ranking-card.ant-card{border:1px solid #f0f0f0;border-radius:8px;background:#fff;box-shadow:0 1px 4px #0000000a}.pmd-risk-ranking-card>.ant-card-head{border-bottom:1px solid #f0f0f0;background:#fff;padding:14px 20px;min-height:auto}.pmd-risk-ranking-card>.ant-card-head .ant-card-head-title{font-size:15px;font-weight:600;color:#262626}.pmd-risk-ranking-card__title-icon{color:#faad14;margin-right:8px}.pmd-risk-ranking-card>.ant-card-body{padding:16px 20px 20px}.pmd-risk-filter-row{display:flex;flex-wrap:wrap;gap:12px 32px;align-items:center;margin-bottom:16px}.pmd-filter-field{display:flex;flex-direction:column;gap:6px}.pmd-filter-field--inline{flex-direction:row;align-items:center;gap:8px}.pmd-filter-field-label{font-size:13px;color:#262626;font-weight:400;line-height:1;white-space:nowrap}.pmd-risk-filter-row .pmd-filter-brand.ant-select{width:120px}.pmd-risk-filter-row .pmd-filter-code.ant-input{width:150px}.pmd-risk-filter-row .pmd-filter-name.ant-input{width:180px}.pmd-risk-ranking-card .pmd-risk-table .ant-table-thead>tr>th{background:#fafafa;color:#262626;font-weight:500;border-bottom:1px solid #f0f0f0}.pmd-risk-ranking-card .pmd-risk-table .ant-table-thead>tr>th:before{display:none}.pmd-risk-ranking-card .pmd-risk-table .ant-table-tbody>tr>td{border-bottom:1px solid #f0f0f0;color:#262626;padding:12px 16px!important}.pmd-risk-ranking-card .pmd-risk-table .ant-table-thead>tr>th{padding:12px 16px!important}.pmd-risk-ranking-card .pmd-risk-table .ant-table-tbody>tr:hover>td{background:#fafafa!important}.pmd-risk-ranking-card .ant-pagination{margin-top:16px}.pmd-count-unit{color:#262626}.pmd-count-num--delayed{color:#ff4d4f;font-weight:600}.pmd-count-num--risk{color:#fa8c16;font-weight:600}.pmd-delay-days{color:#262626;font-weight:500}.pmd-delay-days--overdue{color:#ff4d4f}.pmd-filter-bar{margin-bottom:16px}.pmd-content-card.ant-card{border:1px solid #f0f0f0;border-radius:8px;background:#fff;box-shadow:0 1px 4px #0000000a}.pmd-content-card>.ant-card-body{padding:16px 20px 20px}.pmd-content-card .ant-table-thead>tr>th{background:#fafafa;color:#262626;font-weight:500}.pmd-matrix-card .pmd-matrix-table .ant-table-thead>tr>th{background:#fafafa;color:#262626;font-weight:500;border-bottom:1px solid #f0f0f0;padding:12px 16px!important}.pmd-matrix-card .pmd-matrix-table .ant-table-thead>tr>th:before{display:none}.pmd-matrix-card .pmd-matrix-table .ant-table-tbody>tr>td{border-bottom:1px solid #f0f0f0;color:#262626;padding:12px 16px!important}.pmd-matrix-card .pmd-matrix-table .ant-table-tbody>tr:hover>td{background:#fafafa!important}.pmd-matrix-card .ant-pagination{margin-top:16px}.pmd-matrix-card.ant-card{border:1px solid #f0f0f0;border-radius:8px;background:#fff;box-shadow:0 1px 4px #0000000a}.pmd-matrix-card>.ant-card-head{border-bottom:1px solid #f0f0f0;background:#fff;padding:14px 20px;min-height:auto}.pmd-matrix-card>.ant-card-head .ant-card-head-title{font-size:15px;font-weight:600;color:#262626}.pmd-matrix-card__title-icon{color:#1677ff;margin-right:8px}.pmd-matrix-card>.ant-card-body{padding:16px 20px 20px}.pmd-matrix-filter-row{flex-wrap:wrap;gap:12px 32px}.pmd-matrix-filter-row .pmd-matrix-filter-keyword.ant-input{width:180px}.pmd-matrix-filter-row .pmd-matrix-filter-node.ant-select{width:120px}.pmd-matrix-filter-row .pmd-matrix-filter-status.ant-select,.pmd-matrix-filter-row .pmd-matrix-filter-risk.ant-select{min-width:120px;max-width:200px}.pmd-matrix-project-info{display:flex;flex-direction:column;gap:2px;line-height:1.4}.pmd-project-link{border:none;background:none;color:#1677ff;cursor:pointer;padding:0;text-align:left;max-width:100%;font:inherit}.pmd-project-link:hover{text-decoration:underline}.pmd-matrix-project-info__name{font-size:13px;font-weight:600;text-align:left}.pmd-matrix-project-info__code{font-size:12px;font-weight:400}.pmd-matrix-cell{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:72px;font-size:13px;font-weight:500;line-height:1.4}.pmd-progress-badge{display:inline-block;padding:2px 10px;border:1px solid;border-radius:4px;font-size:12px;font-weight:500;line-height:1.5;white-space:nowrap}.pmd-matrix-cell__badge{min-width:52px;text-align:center}.pmd-matrix-cell__dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.pmd-matrix-cell--empty{color:#bfbfbf}.pmd-matrix-legend{display:flex;flex-wrap:wrap;gap:16px 24px;margin-bottom:12px;padding:8px 0;font-size:12px;color:#595959}.pmd-matrix-legend__group{display:inline-flex;align-items:center;gap:10px}.pmd-matrix-legend__label{color:#8c8c8c}.pmd-matrix-legend__risk-item{display:inline-flex;align-items:center;gap:4px}.pmd-node-analysis-card.ant-card{border:1px solid #f0f0f0;border-radius:8px;background:#fff;box-shadow:0 1px 4px #0000000a}.pmd-node-analysis-card>.ant-card-head{border-bottom:1px solid #f0f0f0;background:#fff;padding:14px 20px;min-height:auto}.pmd-node-analysis-card>.ant-card-head .ant-card-head-title{font-size:15px;font-weight:600;color:#262626}.pmd-node-analysis-card__title-icon{color:#1677ff;margin-right:8px}.pmd-node-analysis-card>.ant-card-body{padding:0 20px 20px}.pmd-node-analysis-card .pmd-node-analysis-table .ant-table-thead>tr>th{background:#fafafa;color:#262626;font-weight:500;border-bottom:1px solid #f0f0f0;padding:12px 16px!important}.pmd-node-analysis-card .pmd-node-analysis-table .ant-table-thead>tr>th:before{display:none}.pmd-node-analysis-card .pmd-node-analysis-table .ant-table-tbody>tr>td{border-bottom:1px solid #f0f0f0;color:#262626;padding:12px 16px!important}.pmd-node-analysis-card .pmd-node-analysis-table .ant-table-tbody>tr:hover>td{background:#fafafa!important}.pmd-node-analysis-node{display:flex;flex-direction:column;gap:2px;line-height:1.4}.pmd-node-analysis-node__name{font-size:13px;font-weight:600;color:#262626}.pmd-node-analysis-node__code{font-size:12px;color:#8c8c8c}.pmd-node-analysis-count{display:inline;border:none;background:none;padding:0;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;line-height:inherit}.pmd-node-analysis-count:hover{text-decoration:underline}.pmd-node-analysis-count--zero{color:#bfbfbf;font-weight:400;cursor:default}.pmd-node-analysis-modal .ant-modal-content{border-radius:8px;overflow:hidden;box-shadow:0 8px 24px #0000001f}.pmd-node-analysis-modal .ant-modal-header{padding:18px 24px;margin-bottom:0;border-bottom:1px solid #f0f0f0}.pmd-node-analysis-modal .ant-modal-title{font-size:16px;font-weight:600;color:#1a1a1a;line-height:1.4}.pmd-node-analysis-modal .ant-modal-close{top:18px;inset-inline-end:24px;color:#8c8c8c}.pmd-node-analysis-modal .ant-modal-body{padding:20px 24px 24px}.pmd-node-analysis-modal__filters{flex-wrap:wrap;gap:12px 40px;margin-bottom:20px}.pmd-node-analysis-modal__filters .pmd-filter-field-label{color:#595959;font-size:13px}.pmd-node-analysis-modal__filter-source.ant-select{width:108px}.pmd-node-analysis-modal__filter-keyword.ant-input{width:200px}.pmd-node-analysis-modal__filter-brand.ant-select{width:140px}.pmd-node-analysis-modal__filters .ant-select-selector,.pmd-node-analysis-modal__filters .ant-input{border-radius:6px}.pmd-node-analysis-modal__table-wrap{border:1px solid #f0f0f0;border-radius:6px;overflow:hidden}.pmd-node-analysis-modal__table.ant-table-wrapper{margin:0}.pmd-node-analysis-modal__table .ant-table{font-size:13px;color:#262626}.pmd-node-analysis-modal__table .ant-table-container{border-inline-start:none!important;border-start-start-radius:0;border-start-end-radius:0}.pmd-node-analysis-modal__table .ant-table-thead>tr>th{background:#fafafa!important;color:#595959;font-weight:400;font-size:13px;border-bottom:1px solid #f0f0f0;padding:11px 16px!important}.pmd-node-analysis-modal__table .ant-table-thead>tr>th:before{display:none}.pmd-node-analysis-modal__table .ant-table-tbody>tr>td{border-bottom:1px solid #f5f5f5;color:#262626;padding:14px 16px!important;vertical-align:middle}.pmd-node-analysis-modal__table .ant-table-tbody>tr:last-child>td{border-bottom:none}.pmd-node-analysis-modal__table .ant-table-tbody>tr:hover>td{background:#fafafa!important}.pmd-node-analysis-modal .pmd-matrix-project-info{gap:4px}.pmd-node-analysis-modal .pmd-matrix-project-info__name{color:#1a1a1a;font-weight:500;font-size:13px;line-height:1.5}.pmd-node-analysis-modal .pmd-matrix-project-info__code{color:#8c8c8c;font-weight:400;font-size:12px;line-height:1.4}.pmd-node-analysis-modal .pmd-source-tag{padding:0 8px;line-height:22px;font-size:12px;border-radius:4px}.pmd-node-analysis-modal__status{font-size:13px;font-weight:400}.pmd-node-analysis-modal__risk{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:400;line-height:1}.pmd-node-analysis-modal__risk-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.pmd-node-analysis-modal__date{color:#262626;font-size:13px;font-variant-numeric:tabular-nums}.pmd-node-analysis-modal__pagination.ant-pagination{margin:16px 0 0;padding:0 4px;width:100%;display:flex;flex-wrap:wrap;align-items:center;gap:8px}.pmd-node-analysis-modal__pagination .ant-pagination-total-text{flex:1;color:#8c8c8c;font-size:13px;margin-inline-end:0!important}.pmd-node-analysis-modal__pagination .ant-pagination-item-active{border-color:#1677ff}.pmd-node-analysis-modal__pagination .ant-pagination-item-active a{color:#1677ff}.pmd-pill-nav{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #f0f0f0}.pmd-pill{padding:4px 16px;border:1px solid #d9d9d9;border-radius:16px;background:#fff;font-size:13px;color:#595959;cursor:pointer;transition:all .2s;font-family:inherit}.pmd-pill:hover{border-color:#1677ff;color:#1677ff}.pmd-pill--active{background:#1677ff;color:#fff;border-color:#1677ff}.pmd-pill--active:hover{background:#4096ff;color:#fff}.pmd-stat-card.ant-card{border:1px solid #f0f0f0;box-shadow:0 1px 4px #0000000a}.pmd-stat-card .ant-statistic-title{font-size:12px;color:#8c8c8c}.pmd-project-detail{font-size:13px}.pmd-detail-header{margin-bottom:20px}.pmd-detail-back{padding-left:0;color:#595959}.pmd-detail-back:hover{color:#1677ff}.pmd-detail-title{margin:4px 0 12px;font-size:20px;font-weight:600;color:#262626}.pmd-detail-meta{display:flex;flex-wrap:wrap;gap:24px;color:#595959;font-size:13px}.pmd-detail-table-wrap{background:#fff;border:1px solid #f0f0f0;border-radius:8px;overflow:hidden}.pmd-detail-table-wrap .ant-table-thead>tr>th{background:#fafafa;color:#262626;font-weight:500}.pmd-detail-table-wrap .ant-table-tbody>tr>td{border-bottom:1px solid #f0f0f0}.pmd-source-tag{display:inline-block;padding:0 8px;border-radius:4px;font-size:12px;line-height:22px;font-weight:500}.pmd-source-tag--ipc{color:#1677ff;background:#e6f4ff;border:1px solid #91caff}.pmd-source-tag--ipd{color:#722ed1;background:#f9f0ff;border:1px solid #d3adf7}.pmd-risk-indicator{display:inline-flex;align-items:center;gap:6px;color:#262626}.pmd-risk-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.pmd-risk-days{color:#d46b08;font-weight:600}.pmd-delay-days-cell{color:#cf1322;font-weight:600}.pmd-note-form{margin-bottom:20px}.pmd-note-add-btn{margin-top:12px}.pmd-note-list{max-height:360px;overflow-y:auto;padding-left:4px}.pmd-note-item{display:flex;gap:12px;position:relative;padding-bottom:20px}.pmd-note-item:not(:last-child):before{content:"";position:absolute;left:5px;top:14px;bottom:0;width:2px;background:#e6f4ff}.pmd-note-item__dot{width:12px;height:12px;border-radius:50%;background:#1677ff;flex-shrink:0;margin-top:4px;position:relative;z-index:1}.pmd-note-item__header{display:flex;align-items:flex-start;gap:8px}.pmd-note-item__content{flex:1;min-width:0;color:#262626;font-size:13px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.pmd-note-item__delete{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;margin-top:1px;padding:0;border:none;border-radius:4px;background:transparent;color:#ff4d4f;font-size:12px;cursor:pointer;opacity:0;transition:opacity .15s ease,background .15s ease}.pmd-note-item:hover .pmd-note-item__delete{opacity:1}.pmd-note-item__delete:hover:not(:disabled){background:#fff1f0}.pmd-note-item__delete:disabled{cursor:not-allowed;opacity:.5}.pmd-note-item__meta{margin-top:6px;font-size:12px;color:#8c8c8c}.pmd-note-modal-footer{display:flex;justify-content:flex-end}.pmd-loading{text-align:center;padding:40px;color:#8c8c8c}.ipc-resizable-table .ant-table-thead>tr>th{border-right:none!important}.ipc-resizable-table .ant-table-thead>tr>th:before{display:none!important}.ipc-resizable-table__handle{position:absolute;top:0;right:0;z-index:2;width:6px;height:100%;cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none}.ipc-resizable-table__handle:after{content:"";position:absolute;top:50%;right:0;transform:translateY(-50%);width:1px;height:14px;border-radius:1px;background:transparent;transition:background-color .15s ease,height .15s ease,opacity .15s ease}.ipc-resizable-table .ant-table-thead>tr>th:hover .ipc-resizable-table__handle:after{background:#0000001f}.ipc-resizable-table__handle:hover:after{height:18px;background:#1677ff73}.ipc-resizable-table__handle:active:after{height:22px;background:#1677ff}.dashboard{font-size:13px;line-height:1.5;min-width:0}.dashboard-toolbar{display:flex;align-items:center;margin-bottom:16px}.stats-row{margin-bottom:16px}.stat-card.ant-card{transition:transform .18s ease,box-shadow .18s ease!important;border:1px solid #E8E4DF;box-shadow:0 1px 3px #1a18140d}.stat-card.ant-card:hover{transform:translateY(-2px);box-shadow:0 6px 18px #1a18141a!important;border-color:#d8d4cf!important}.stat-card .stat-card-inner{display:flex;align-items:center;gap:14px}.stat-card .stat-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-card .ant-statistic-content-value{font-weight:700;letter-spacing:-.02em}.stat-card .ant-statistic-title{color:#6e685e;font-size:12px}.alerts-card.ant-card{height:100%;display:flex;flex-direction:column;border:1px solid #E8E4DF;box-shadow:0 1px 3px #1a18140d}.alerts-card.ant-card .ant-card-body{flex:1;display:flex;flex-direction:column}.alerts-card.ant-card{border-left:3px solid #B54040}.alerts-list{display:flex;flex-direction:column;gap:8px;flex:1;justify-content:center}.alerts-list .alert-item{margin-bottom:0}.alerts-list .alert-item.ant-alert{padding:8px 12px}.ant-card-head-title{display:flex;align-items:center}.filter-field-label{font-size:12px;color:#6e685e;margin-bottom:6px}.filter-hint{margin-top:12px;font-size:12px;color:#8f97aa;line-height:1.5}.project-progress-card.ant-card{border:1px solid #E8E4DF;box-shadow:0 1px 3px #1a18140d}.project-progress-toolbar{margin:0 0 16px;padding-bottom:14px;border-bottom:1px solid #f0f0f0}.project-progress-card .filter-hint{margin-top:10px;margin-bottom:0}.dashboard-link-btn{border:none;background:none;color:#1677ff;cursor:pointer;padding:0;text-align:left;max-width:100%;font:inherit}.dashboard-link-btn:hover{text-decoration:underline}.dashboard-ms{display:inline-block;min-width:52px;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500;line-height:1.4;text-align:center;box-sizing:border-box}.dashboard-ms--empty{color:#bfbfbf;font-weight:400}.dashboard-ms--pending{color:#595959;background:#f5f5f5;border:1px solid #d9d9d9}.dashboard-ms--in_progress{color:#0958d9;background:#e6f4ff;border:1px solid #91caff}.dashboard-ms--completed{color:#237804;background:#f6ffed;border:1px solid #b7eb8f}.dashboard-ms--delay{color:#cf1322;background:#fff1f0;border:1px solid #ffa39e;font-weight:600}.dashboard-ms--other{color:#722ed1;background:#f9f0ff;border:1px solid #d3adf7}.dashboard-in-progress-names{color:#d46b08;font-weight:500}.project-schedule{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:13px;line-height:1.4;color:#1a1a1a;width:100%;max-width:100%;box-sizing:border-box}.project-schedule-detail{min-height:0;height:calc(100vh - 88px);max-height:calc(100vh - 88px);overflow:hidden}.project-schedule .form-label .required{color:#ff4d4f;margin-right:2px}.form-field-error{font-size:12px;color:#ff4d4f!important;margin-top:4px;line-height:1.4}.schedule-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e8e8e8;background:#fff;width:100%}.schedule-header h2{margin:0;font-size:18px;color:#1a1a1a}.filter-section{padding:16px 20px;background:#fff;border-bottom:1px solid #e8e8e8}.filter-row{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap}.filter-item{display:flex;flex-direction:column;gap:6px}.filter-label{font-size:12px;font-weight:500;color:#666}.filter-actions{display:flex;gap:8px;margin-left:auto}.filter-actions .btn-sm{display:flex;align-items:center;gap:4px}.projects-table-container{padding:20px;width:100%}.projects-table-pagination{display:flex;justify-content:flex-end;align-items:center;margin-top:16px;padding-top:12px;border-top:1px solid #f0f0f0}.projects-table{width:100%;min-width:800px;border-collapse:collapse;background:#fff;border:1px solid #e8e8e8;border-radius:8px;overflow:hidden;font-size:13px}.projects-table-header{background:#fafafa}.projects-table-header th{padding:12px 16px;text-align:left;border-bottom:1px solid #e8e8e8;color:#1a1a1a;font-size:13px}.projects-table-header th:last-child{text-align:center}.projects-table-body{background:#fff}.project-table-row{border-bottom:1px solid #f0f0f0;cursor:pointer;transition:background-color .2s}.project-table-row:last-child{border-bottom:none}.project-table-row:hover{background-color:#f5f5f5}.project-table-row td{padding:12px 16px;vertical-align:middle}.project-cell-name{font-weight:500;color:#1a1a1a}.project-cell-brand,.project-cell-category,.project-cell-versions{color:#666}.project-cell-launch{color:#333;font-family:monospace}.project-cell-status{text-align:left}.project-cell-action{text-align:center;display:flex;align-items:center;justify-content:center;gap:8px}.project-cell-template{vertical-align:middle}.project-cell-template .ant-select{font-size:13px}.project-template-readonly{color:#333;font-size:13px}.project-col-name{width:20%}.project-col-brand{width:11%}.project-col-template{width:16%}.project-col-category{width:12%}.project-col-status{width:10%}.project-col-launch{width:15%}.project-col-versions{width:10%}.project-col-action{width:16%}.projects-grid,.project-card,.project-card-header,.project-card-meta,.project-card-schedule,.schedule-info{display:none}.project-detail-layout{display:flex;height:100%;min-height:0;overflow:hidden}.version-sidebar{width:240px;background:#f5f5f5;border-right:1px solid #e8e8e8;display:flex;flex-direction:column;flex-shrink:0}.version-sidebar-header{padding:16px;border-bottom:1px solid #e8e8e8;background:#fff}.version-sidebar-header .btn{width:100%;margin-bottom:12px}.project-info-header{display:flex;flex-direction:column;gap:6px}.project-info-row{font-size:13px;color:#333;line-height:1.4}.project-info-name{font-size:15px;color:#1a1a1a}.project-info-brand,.project-info-launch{font-size:12px;color:#666}.version-nav-list{flex:1;overflow-y:auto;padding:12px}.version-nav-title{font-size:12px;color:#666;text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px;display:flex;align-items:center;gap:6px}.version-count{color:#999;font-weight:400}.version-nav-item{background:#fff;border:1px solid #d9d9d9;border-radius:6px;padding:12px;margin-bottom:8px;cursor:pointer;transition:all .2s}.version-nav-item:hover{border-color:#4a6fa5;box-shadow:0 2px 4px #0000000d}.version-nav-item.active{border-color:#4a6fa5;background:#edf2f9;box-shadow:0 0 0 2px #4a6fa52e}.version-nav-item.published{border-left:3px solid #52c41a}.version-nav-main{display:flex;align-items:center;gap:8px;margin-bottom:6px}.version-nav-number{font-size:14px;color:#1a1a1a}.version-nav-status{font-size:11px;padding:2px 6px;border-radius:3px;font-weight:500}.version-nav-status.published{background:#f6ffed;color:#52c41a}.version-nav-status.draft{background:#fff7e6;color:#fa8c16}.version-nav-status.archived{background:#f5f5f5;color:#999}.version-nav-name{font-size:13px;color:#333;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.version-nav-meta{display:flex;justify-content:space-between;font-size:11px;color:#999}.sidebar-legend{padding:16px;border-top:1px solid #e8e8e8;background:#fff}.sidebar-legend .legend-title{font-size:12px;color:#666;margin-bottom:10px}.sidebar-legend .legend-item{display:flex;align-items:center;gap:8px;font-size:12px;color:#666;margin-bottom:6px}.sidebar-legend .legend-color{width:16px;height:16px;border-radius:3px;border:1px solid #d9d9d9}.sidebar-legend .legend-color.completed{background:#f6ffed;border-color:#b7eb8f}.sidebar-legend .legend-color.in-progress{background:#edf2f9;border-color:#a8bfdb}.sidebar-legend .legend-color.pending{background:#fafafa;border-color:#d9d9d9}.schedule-main-content{flex:1;min-height:0;overflow-y:auto;padding:20px;background:#fafafa;min-width:0}.project-schedule-detail .schedule-main-content.schedule-main-with-tabs{display:flex;flex-direction:column;overflow:hidden}.project-schedule-detail .schedule-detail-tabs.ant-tabs{flex:1;min-height:0;display:flex;flex-direction:column}.project-schedule-detail .schedule-detail-tabs .ant-tabs-nav{flex-shrink:0;margin-bottom:12px;padding:4px 6px;background:#f7f9fc;border-radius:10px;border:1px solid #e2e5ec}.project-schedule-detail .schedule-detail-tabs .ant-tabs-tab{padding:6px 18px;margin:0;border-radius:7px;font-size:13px;font-weight:500;color:#5c6b8a;transition:all .2s ease;border:none;background:transparent}.project-schedule-detail .schedule-detail-tabs .ant-tabs-tab:hover{color:#2f4f8f;background:#4a6fa514}.project-schedule-detail .schedule-detail-tabs .ant-tabs-tab.ant-tabs-tab-active{background:#fff;color:#2f4f8f;box-shadow:0 1px 3px #2f39501f}.project-schedule-detail .schedule-detail-tabs .ant-tabs-tab+.ant-tabs-tab{margin-left:2px}.project-schedule-detail .schedule-detail-tabs .ant-tabs-ink-bar{display:none}.project-schedule-detail .schedule-detail-tabs .ant-tabs-content-holder{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.project-schedule-detail .schedule-detail-tabs .ant-tabs-content-holder>.ant-tabs-content{flex:1 1 0;min-height:0;display:flex;flex-direction:column}.project-schedule-detail .schedule-detail-tabs .ant-tabs-tabpane.ant-tabs-tabpane-active{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;height:100%;overflow:hidden}.project-schedule-detail .schedule-data-tab-scroll{flex:1 1 0;min-height:0;height:100%;overflow-y:auto}.project-schedule-detail .schedule-gantt-tab{flex:1;min-height:0;height:100%;padding:12px;overflow:hidden;display:flex;flex-direction:column;background:#fff;border:1px solid #e8e8e8;border-radius:8px;box-sizing:border-box}.version-cards-container{display:flex;flex-direction:column;gap:20px}.version-card{background:#fff;border:1px solid #e8e8e8;border-radius:8px;overflow:hidden;transition:all .3s}.version-card:hover{box-shadow:0 4px 12px #00000014}.version-card.published{border-left:4px solid #52c41a}.version-card.active{box-shadow:0 0 0 2px #1890ff4d}.version-card-header{display:flex;justify-content:space-between;align-items:flex-start;padding:16px 20px;background:#fafafa;border-bottom:1px solid #e8e8e8}.version-info{flex:1}.version-title{display:flex;align-items:center;gap:10px;margin-bottom:8px}.version-number{font-size:16px;font-weight:700;color:#4a6fa5}.version-name{font-size:15px;color:#1a1a1a}.version-name-editable{background:none;border:none;padding:0;font-size:inherit;font-weight:inherit;color:inherit;cursor:pointer;text-align:left}.version-name-editable:hover{color:#4a6fa5;text-decoration:underline}.version-meta{display:flex;gap:16px;font-size:12px;color:#666}.version-meta .meta-item{display:flex;align-items:center;gap:4px}.version-actions{display:flex;gap:8px}.sort-order-toggle{display:inline-flex;gap:6px}.sort-order-btn{min-width:52px}.sort-order-btn.sort-order-asc.active{background:#52c41a;color:#fff;border-color:#52c41a}.sort-order-btn.sort-order-desc.active{background:#fa8c16;color:#fff;border-color:#fa8c16}.sort-order-btn:disabled{opacity:.6;cursor:not-allowed}.version-card-body{padding:16px 20px}.spec-table-container{overflow-x:auto;overflow-y:visible;margin-bottom:16px;max-width:100%}.spec-table{min-width:100%;border:1px solid #e8e8e8;border-collapse:collapse;table-layout:auto}.spec-table-header{background:#fafafa;font-size:12px}.spec-table-header tr{border-bottom:1px solid #e8e8e8}.spec-header-cell{padding:4px 6px;border-right:1px solid #e8e8e8;text-align:center;min-width:140px}.spec-header-cell:last-child{border-right:none}.spec-name-header{min-width:140px!important;width:140px!important;text-align:left;padding-left:8px;position:sticky!important;position:-webkit-sticky!important;left:0!important;z-index:10;background:#f5f5f5!important;box-shadow:2px 0 4px #0000000d}.action-header{min-width:80px!important;width:80px!important;position:sticky!important;position:-webkit-sticky!important;right:0!important;z-index:10;background:#f5f5f5!important;box-shadow:-2px 0 4px #0000000d}.milestone-name{color:#1a1a1a;font-size:12px;display:flex;align-items:center;justify-content:center;gap:4px}.header-relation-icon{display:inline-flex;align-items:center;justify-content:center;color:#4a6fa5;opacity:.7;cursor:pointer;padding:2px;border-radius:3px;transition:all .2s}.header-relation-icon:hover{opacity:1;background:#1890ff1a}.spec-table-body{background:#fff}.spec-table-row{border-bottom:1px solid #f0f0f0}.spec-table-row:last-child{border-bottom:none}.spec-cell{padding:2px 4px;border-right:1px solid #f0f0f0;vertical-align:middle;min-width:140px}.spec-name-cell{min-width:140px;width:140px;padding-left:8px;background:#fafafa!important;position:sticky;position:-webkit-sticky;left:0;z-index:5;box-shadow:2px 0 4px #0000000d}.action-cell{min-width:80px;width:80px;text-align:center;position:sticky;position:-webkit-sticky;right:0;z-index:5;background:#fff!important;box-shadow:-2px 0 4px #0000000d}.action-cell:hover{background:#f5f5f5}.empty-cell{background:#fafafa}.column-drag-handle{display:none}.spec-header-cell.dragging{opacity:.5;background:#edf2f9}.spec-header-cell.drop-target{background:#edf2f9;border-left:2px solid #4A6FA5}.resize-handle{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;background:transparent;transition:background .2s;z-index:10}.resize-handle:hover,.resize-handle.resizing{background:#4a6fa5}.spec-header-cell{position:relative;flex-shrink:0}.spec-cell{flex-shrink:0}.spec-name{font-weight:500;color:#1a1a1a;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background .2s}.spec-name:hover{background:#edf2f9}.spec-name-input{width:100%;padding:4px 8px;border:1px solid #4A6FA5;border-radius:4px;font-size:13px;outline:none}.milestone-cell{min-height:52px;text-align:center;position:relative}.milestone-cell.merged-cell{position:relative}.milestone-dates{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px;font-size:12px;line-height:1.2;min-width:0;overflow:hidden}.milestone-dates-actual{margin-top:4px;padding-top:4px;border-top:1px dashed rgba(0,0,0,.08)}.milestone-dates .date-row-label{font-size:11px;color:#888;flex-shrink:0;margin-right:2px}.spec-cell.milestone-cell{overflow:hidden;box-sizing:border-box}.spec-cell.milestone-cell .ant-picker{width:72px!important;min-width:72px!important;max-width:72px!important}.spec-cell.milestone-cell .ant-picker-input>input{min-width:0!important;width:100%!important;box-sizing:border-box!important}.date-text{cursor:pointer;padding:2px 6px;border-radius:3px;transition:background .2s}.date-text:hover{background:#0000000d}.start-date,.end-date{color:#666}.date-text.cross-year:hover{background:#00000014}.date-separator{color:#999}.milestone-date-input{width:90px;padding:1px 2px;border:1px solid #4A6FA5;border-radius:3px;font-size:11px;outline:none;box-sizing:border-box}.cell-note{font-size:11px;line-height:1.2;margin-top:2px}.cell-note-text{color:#999;cursor:pointer;display:block;padding:2px 6px;border-radius:3px;word-wrap:break-word;white-space:normal;overflow:visible;text-align:left}.cell-note-text.has-note{color:#4a6fa5;background:#1890ff0d}.cell-note-text.has-note:hover,.cell-note-text.editable:hover{background:#1890ff1a}.cell-note-input{width:100%;padding:2px 6px;border:1px solid #4A6FA5;border-radius:3px;font-size:11px;outline:none}.version-notes-section{background:#fafafa;border:1px solid #e8e8e8;border-radius:6px;padding:12px 16px}.notes-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.notes-header h4{margin:0;font-size:13px;color:#1a1a1a}.notes-hint{font-size:11px;color:#999}.version-notes-textarea{width:100%;padding:10px 12px;border:1px solid #d9d9d9;border-radius:4px;font-size:13px;line-height:1.5;resize:vertical;min-height:60px;font-family:inherit}.version-notes-textarea:focus{outline:none;border-color:#4a6fa5;box-shadow:0 0 0 2px #4a6fa52e}.version-notes-textarea:disabled{background:#fafafa;color:#1a1a1a;cursor:not-allowed;opacity:1}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;color:#666;cursor:pointer;border-radius:4px;transition:all .2s}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500}.badge-success{background:#f6ffed;color:#52c41a}.badge-warning{background:#fff7e6;color:#fa8c16}.badge-info{background:#edf2f9;color:#4a6fa5}.badge-secondary{background:#f5f5f5;color:#999}.modal-header h3{margin:0;font-size:16px}.milestone-relation-indicator{display:flex;align-items:center;gap:4px;margin-bottom:2px;font-size:10px;color:#4a6fa5;height:14px}.relation-chain{color:#999;font-family:monospace}.auto-calc-icon{color:#52c41a;flex-shrink:0}.conflict-icon{color:#fa8c16;flex-shrink:0}.milestone-status-btn-wrapper{position:absolute;right:4px;top:4px;z-index:0}.milestone-status-btn{width:10px;height:10px;border-radius:50%;border:1.5px solid #d9d9d9;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;padding:0;outline:none}.milestone-status-btn:hover{transform:scale(1.3);box-shadow:0 0 0 3px #1890ff33}.milestone-status-btn.status-pending{border-color:#d9d9d9;background:#fff}.milestone-status-btn.status-in_progress{border-color:#1890ff;background:#1890ff;animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 #1890ff66}70%{box-shadow:0 0 0 4px #1890ff00}to{box-shadow:0 0 #1890ff00}}.milestone-status-btn.status-completed{border-color:#52c41a;background:#52c41a;color:#fff}.relation-config-modal{max-width:600px;width:90%}.relation-config-list{display:flex;flex-direction:column;gap:12px;max-height:60vh;overflow-y:auto}.relation-config-item{border:1px solid #e8e8e8;border-radius:6px;padding:12px;background:#fafafa}.relation-config-milestone{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid #e8e8e8}.relation-config-milestone .milestone-name{font-size:14px;color:#1a1a1a}.relation-config-milestone .milestone-phase{font-size:11px;color:#999;padding:2px 8px;background:#f0f0f0;border-radius:3px}.relation-config-form{display:flex;flex-direction:column;gap:8px}.form-row{display:flex;align-items:center;gap:8px}.form-label{font-size:12px;color:#666;min-width:70px;flex-shrink:0}.form-select,.form-input{flex:1;padding:6px 10px;border:1px solid #d9d9d9;border-radius:4px;font-size:13px;outline:none}.form-select:focus,.form-input:focus{border-color:#4a6fa5;box-shadow:0 0 0 2px #4a6fa52e}.form-input[type=number]{width:80px;flex:0 0 80px}.form-row label{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:12px;color:#666}.form-row input[type=checkbox]{width:14px;height:14px;cursor:pointer}@media (max-width: 1200px){.version-sidebar{width:200px}}@media (max-width: 768px){.project-detail-layout{flex-direction:column}.version-sidebar{width:100%;height:auto;max-height:200px;border-right:none;border-bottom:1px solid #e8e8e8}.schedule-main-content{padding:12px}}.schedule-gantt{display:flex;flex-direction:column;flex:1 1 0;min-height:0;height:100%;font-size:12px;color:#1a1a1a}.schedule-gantt-empty{padding:32px 16px;text-align:center;color:#8c8c8c;font-size:13px}.schedule-gantt-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:10px;flex-shrink:0}.schedule-gantt-toolbar-title{font-weight:600;font-size:13px;color:#2f3950}.schedule-gantt-toolbar-right{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.schedule-gantt-nav-group{display:inline-flex;align-items:center;gap:2px;padding:2px;border-radius:8px;border:1px solid #dce2ef;background:#f7f9fc}.schedule-gantt-nav-btn{width:30px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:6px;background:#fff;color:#4a6fa5;cursor:pointer;box-shadow:0 1px 2px #2f39500f}.schedule-gantt-nav-btn:hover{background:#edf2f9;color:#2f4f8f}.schedule-gantt-nav-btn:active{background:#e2e9f5}.schedule-gantt-nav-btn:disabled{opacity:.35;cursor:not-allowed}.schedule-gantt-spec-label{font-size:12px;color:#666}.schedule-gantt-spec-select{height:26px;min-width:140px;border:1px solid #cfd8ea;border-radius:6px;padding:0 8px;background:#fff;color:#1f1f1f;font-size:12px}.schedule-gantt-view-mode-group{display:inline-flex;align-items:center;gap:2px;padding:2px;border-radius:8px;border:1px solid #dce2ef;background:#f7f9fc}.schedule-gantt-view-mode-btn{height:24px;min-width:32px;padding:0 10px;border:none;border-radius:6px;background:transparent;color:#4a6fa5;font-size:12px;font-weight:500;cursor:pointer;transition:all .15s}.schedule-gantt-view-mode-btn:hover{background:#edf2f9;color:#2f4f8f}.schedule-gantt-view-mode-btn.active{background:#4a6fa5;color:#fff;box-shadow:0 1px 3px #2f395026}.schedule-gantt-critical-toggle{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:#444;-webkit-user-select:none;user-select:none}.schedule-gantt-scroll-wrap{position:relative;flex:1 1 0;min-height:0;display:flex;flex-direction:column;border:1px solid #c5d4eb;border-radius:8px;background:#fff;overflow:hidden}.schedule-gantt-hscroll{flex:1 1 0;min-height:0;min-width:0;overflow-x:auto;overflow-y:auto;scrollbar-width:thin;padding:0;box-sizing:border-box}.schedule-gantt-grid{display:inline-block;min-width:100%;vertical-align:top}.schedule-gantt-head{position:sticky;top:0;z-index:3;display:flex;background:#fff;border-bottom:1px solid #c5d4eb}.schedule-gantt-head-spacer{flex-shrink:0;align-self:stretch;border-right:1px solid #c5d4eb;background:#fff;position:sticky;left:0;z-index:6;box-shadow:4px 0 8px -4px #2f39501f}.schedule-gantt-head-tracks{display:flex;flex-direction:column;flex-shrink:0;position:relative;z-index:1}.schedule-gantt-head-months{display:flex;flex-shrink:0;border-bottom:1px solid #a8bfdb}.schedule-gantt-month-cell{box-sizing:border-box;text-align:center;font-size:11px;font-weight:600;color:#1a3a5c;padding:5px 4px;border-right:1px solid #a8bfdb;background:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.schedule-gantt-head-weeks,.schedule-gantt-head-nums{display:flex;flex-shrink:0}.schedule-gantt-day-col{flex-shrink:0;box-sizing:border-box;border-right:1px solid #b8cce8}.schedule-gantt-day-col-week{border-bottom:1px solid #c5d4eb}.schedule-gantt-day-col-week:not(.non-work),.schedule-gantt-day-col-num:not(.non-work){background:#fff}.schedule-gantt-day-col.non-work{background:#e4e4e4}.schedule-gantt-day-week{text-align:center;font-size:11px;color:#4a6fa5;font-weight:600;padding:4px 0;line-height:1.2}.schedule-gantt-day-num{text-align:center;font-size:11px;color:#333;padding:3px 0 4px}.schedule-gantt-body{position:relative;background:#fff;border-bottom:1px solid #9eb8d8}.schedule-gantt-pair{display:flex;border-bottom:2px solid #6a87b0;background:#fff}.schedule-gantt-pair:last-child{border-bottom:none}.schedule-gantt-left{flex-shrink:0;border-right:1px solid #c5d4eb;position:sticky;left:0;z-index:3;align-self:flex-start;box-shadow:4px 0 8px -4px #2f39501a}.schedule-gantt-pair--status-pending .schedule-gantt-left{background:#fafafa}.schedule-gantt-pair--status-in_progress .schedule-gantt-left{background:#edf2f9}.schedule-gantt-pair--status-completed .schedule-gantt-left{background:#f6ffed}.schedule-gantt-left table{width:100%;border-collapse:collapse;table-layout:fixed;height:100%}.schedule-gantt-left tbody{height:100%}.schedule-gantt-left tr{height:32px}.schedule-gantt-pair.no-actual .schedule-gantt-left tr{height:24px}.schedule-gantt-left td{border-bottom:1px solid #e8eef6;padding:4px 8px;vertical-align:middle;font-size:12px;line-height:1.35;background:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.schedule-gantt-pair.no-actual .schedule-gantt-left td{padding-top:2px;padding-bottom:2px;line-height:1.25}.schedule-gantt-pair--status-pending .schedule-gantt-left td{background:#fafafa}.schedule-gantt-pair--status-in_progress .schedule-gantt-left td{background:#edf2f9}.schedule-gantt-pair--status-completed .schedule-gantt-left td{background:#f6ffed}.schedule-gantt-left tr:last-child td{border-bottom:none}.schedule-gantt-left td.schedule-gantt-cell-node{font-weight:600;color:#1a1a1a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:4px 8px 4px 4px}.schedule-gantt-pair.no-actual .schedule-gantt-left td.schedule-gantt-cell-node{padding-top:2px;padding-bottom:2px}.schedule-gantt-cell-spec{display:block;font-size:11px;font-weight:500;color:#666}.schedule-gantt-cell-muted{color:#8c8c8c}.schedule-gantt-right{position:relative;flex-shrink:0;display:flex;align-items:stretch;z-index:1}.schedule-gantt-timeline-rows{display:flex;flex-direction:column;flex:1;min-height:100%;height:100%}.schedule-gantt-tl-row{position:relative;min-height:32px;flex:1 1 32px;box-sizing:border-box;border-bottom:1px solid #e8eef6}.schedule-gantt-tl-row.compact{min-height:24px;flex-basis:24px}.schedule-gantt-tl-row:last-child{border-bottom:none}.schedule-gantt-tl-row-bg{position:absolute;top:0;right:0;bottom:0;left:0;display:flex}.schedule-gantt-day-bg{height:100%;box-sizing:border-box;border-right:1px solid #dce8f4;background:#fff}.schedule-gantt-day-bg.non-work{background:#e4e4e4}.schedule-gantt-bar-layer{position:absolute;left:0;top:0;height:100%;pointer-events:none}.schedule-gantt-bar-layer.compact{height:100%}.schedule-gantt-bar{position:absolute;top:50%;transform:translateY(-50%);height:18px;border-radius:3px;box-sizing:border-box;pointer-events:none}.schedule-gantt-bar.compact{height:14px}.schedule-gantt-bar-plan{background:#5b7cff;border:1px solid #3f63f0}.schedule-gantt-bar-actual{background:#fa8c1673;border:1px solid rgba(217,119,6,.9)}.schedule-gantt-bar-overdue{background:var(--color-warning, #faad14)!important;border-color:var(--color-warning, #faad14)!important}.schedule-gantt-bar-draggable{cursor:grab;pointer-events:auto!important}.schedule-gantt-bar-draggable:active{cursor:grabbing}.schedule-gantt-ghost-bar{opacity:.25!important;border:2px dashed rgba(63,99,240,.6)!important;background:#5b7cff26!important;pointer-events:none}.schedule-gantt-dependency-overlay{position:absolute;top:0;pointer-events:none;overflow:visible;z-index:2}.schedule-gantt-dep-line{fill:none;stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round;opacity:.95}.schedule-gantt-dep-arrow{opacity:.95}.schedule-gantt-dep-line-plan{stroke:#111827}.schedule-gantt-dep-arrow-plan{fill:#111827}.schedule-gantt-dep-line-actual{stroke:#b42318}.schedule-gantt-dep-arrow-actual{fill:#b42318}.schedule-gantt-drag-tooltip{position:absolute;top:50%;transform:translateY(-50%);background:#1a1a1a;color:#fff;padding:3px 8px;border-radius:4px;font-size:11px;white-space:nowrap;pointer-events:none;z-index:10}.schedule-gantt-align-guide{transition:opacity .15s ease}.milestone-config{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:13px;line-height:1.4;color:#1a1a1a;background:#fafafa}.config-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e8e8e8;background:#fff}.config-tabs-wrap{background:#fff}.config-tabs-wrap .ant-tabs-nav{margin-left:20px;margin-right:20px;margin-bottom:0}.config-header h2{margin:0;font-size:18px;font-weight:600;color:#1a1a1a;display:flex;align-items:center;gap:8px}.config-tabs{display:flex;gap:4px;padding:12px 20px;background:#fff;border-bottom:1px solid #e8e8e8}.config-tab{display:flex;align-items:center;gap:6px;padding:8px 16px;border:none;background:transparent;color:#666;font-size:13px;font-weight:500;cursor:pointer;border-radius:4px;transition:all .2s}.config-tab:hover{background:#f5f5f5;color:#1a1a1a}.config-tab.active{background:#edf2f9;color:#4a6fa5;font-weight:600}.config-content{padding:20px;background:#fafafa}.config-actions{margin-bottom:16px}.templates-list{display:flex;flex-direction:column;gap:20px}.template-card-block{background:#fff;border:1px solid #e8e8e8;border-radius:8px;overflow:hidden}.template-card-block-header{display:flex;justify-content:space-between;align-items:flex-start;padding:12px 16px;background:#fafafa;border-bottom:1px solid #e8e8e8}.template-card-block-header .template-name-content{margin:0}.template-card-block-table-wrap{overflow-x:auto}.template-single-table{width:100%;min-width:100%;border-collapse:collapse;font-size:13px}.template-single-table-header{background:#f5f5f5;font-size:12px;font-weight:600}.template-single-table-header th{padding:8px 12px;text-align:center;border-right:1px solid #e8e8e8;border-bottom:1px solid #e8e8e8}.template-single-table-header th:last-child{border-right:none}.template-single-table-body{background:#fff}.template-single-table-body td{padding:8px 12px;border-right:1px solid #f0f0f0;vertical-align:top}.template-single-table-body td:last-child{border-right:none}.template-single-table .milestone-header-cell,.template-single-table .template-milestone-cell{min-width:140px}.templates-table-container{background:#fff;border:1px solid #e8e8e8;border-radius:8px;overflow:hidden}.templates-table-wrapper{overflow-x:auto}.templates-table{width:100%;min-width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}.templates-table-header{background:#fafafa;font-size:12px;font-weight:600}.templates-table-header tr{border-bottom:1px solid #e8e8e8}.template-name-header{min-width:180px;width:180px;padding:12px 16px;text-align:left;background:#fafafa;border-right:1px solid #e8e8e8;position:sticky;left:0;z-index:10}.milestone-header-cell{min-width:120px;padding:8px 6px;text-align:center;border-right:1px solid #e8e8e8;position:relative;font-weight:600}.milestone-header-cell:last-of-type{border-right:none}.milestone-header-cell .milestone-name{color:#1a1a1a;font-size:12px;display:flex;align-items:center;justify-content:center;gap:4px;line-height:1.4}.template-actions-header{min-width:140px;width:140px;padding:12px 16px;text-align:center;border-left:1px solid #e8e8e8}.templates-table-body{background:#fff}.template-table-row{border-bottom:1px solid #f0f0f0;transition:background-color .2s}.template-table-row:last-child{border-bottom:none}.template-table-row:hover{background-color:#fafafa}.template-name-cell{min-width:180px;width:180px;padding:12px 16px;background:#fafafa;border-right:1px solid #e8e8e8;position:sticky;left:0;z-index:5}.template-name-content{display:flex;flex-direction:column;gap:4px}.template-name-text{font-weight:600;color:#1a1a1a;font-size:14px}.template-desc-text{font-size:12px;color:#666;line-height:1.4}.template-milestone-cell{min-width:120px;padding:8px 6px;text-align:center;border-right:1px solid #f0f0f0;vertical-align:middle}.template-milestone-cell:last-of-type{border-right:none}.template-milestone-cell.empty-cell{background:#fafafa;color:#999}.template-milestone-content{display:flex;flex-direction:column;align-items:center;gap:4px}.template-milestone-method,.template-milestone-merge{display:flex;justify-content:center}.template-milestone-relation{display:flex;flex-direction:column;gap:2px;margin-top:4px;font-size:11px;color:#666}.template-relation-text{line-height:1.3}.template-actions-cell{min-width:140px;width:140px;padding:8px 12px;text-align:center;border-left:1px solid #f0f0f0}.template-actions{display:flex;gap:6px;justify-content:center;align-items:center}.tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:500;white-space:nowrap}.tag.auto{background:#f6ffed;color:#52c41a;border:1px solid #b7eb8f}.tag.manual{background:#fff7e6;color:#fa8c16;border:1px solid #ffe58f}.tag.merge-tag{background:#edf2f9;color:#4a6fa5;border:1px solid #91d5ff;font-size:10px;padding:1px 6px}.template-card{background:#fff;border:1px solid #e8e8e8;border-radius:8px;overflow:hidden;margin-bottom:16px}.template-edit-form{padding:20px;background:#fff}.template-edit-header{display:flex;gap:16px;margin-bottom:20px}.template-edit-header .form-group{flex:1}.template-edit-table-container{background:#fff;border:1px solid #e8e8e8;border-radius:8px;overflow:hidden;margin-top:8px}.template-edit-table-wrapper{overflow-x:auto}.template-edit-table{width:max-content;min-width:100%;border-collapse:collapse;font-size:13px}.template-edit-table-header{background:#fafafa}.template-name-header-edit{min-width:180px;width:180px;padding:12px 16px;text-align:left;background:#fafafa;border-right:1px solid #e8e8e8;position:sticky;left:0;z-index:10;font-weight:600}.milestone-header-cell-edit{min-width:220px;padding:8px 12px;text-align:center;border-right:1px solid #e8e8e8;position:relative;font-weight:600;cursor:pointer;transition:all .2s}.milestone-header-cell-edit:hover{background:#edf2f9}.milestone-header-cell-edit.in-template{background:#edf2f9;border-color:#a8bfdb}.milestone-header-cell-edit .milestone-name{color:#1a1a1a;font-size:12px;display:flex;flex-direction:column;align-items:center;gap:4px;line-height:1.4}.milestone-header-badge{font-size:10px;color:#4a6fa5;background:#fff;padding:1px 6px;border-radius:3px;border:1px solid #91d5ff;font-weight:500}.template-edit-table-body{background:#fff}.template-edit-row{border-bottom:1px solid #f0f0f0}.template-name-cell-edit{min-width:180px;width:180px;padding:12px 16px;background:#fafafa;border-right:1px solid #e8e8e8;position:sticky;left:0;z-index:5}.template-milestone-cell-edit{min-width:220px;padding:8px 12px;text-align:center;border-right:1px solid #f0f0f0;vertical-align:top}.template-milestone-cell-edit.empty-cell{background:#fafafa;color:#999}.empty-cell-hint{font-size:11px;color:#999;font-style:italic}.template-milestone-edit-content{display:flex;flex-direction:column;gap:8px;align-items:stretch}.template-milestone-edit-field{width:100%;display:flex;flex-direction:column;gap:4px}.template-milestone-edit-field .ant-select,.template-milestone-edit-field .ant-input-number{width:100%!important}.edit-field-label{font-size:11px;color:#666;font-weight:500;display:flex;align-items:center;gap:4px;justify-content:center}.edit-field-label input[type=checkbox]{cursor:pointer}.form-select-sm,.form-input-sm{padding:4px 8px;font-size:12px;border:1px solid #d9d9d9;border-radius:4px;background:#fff;width:100%;box-sizing:border-box;height:24px;line-height:16px}.form-select-sm{cursor:pointer}.form-select-sm:focus,.form-input-sm:focus{outline:none;border-color:#4a6fa5;box-shadow:0 0 0 2px #4a6fa52e}.form-input-sm[type=number]{-moz-appearance:textfield;width:100%;text-align:left}.form-input-sm[type=number]::-webkit-outer-spin-button,.form-input-sm[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.template-milestone-edit-actions{display:flex;gap:4px;justify-content:center;padding-top:4px;border-top:1px solid #f0f0f0}.btn-sm{padding:2px 4px;font-size:11px}.drag-handle{color:#d9d9d9;cursor:grab}.drag-handle:hover{color:#999}.row-actions{display:flex;gap:4px;align-items:center}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:transparent;color:#666;cursor:pointer;border-radius:4px;transition:all .2s}.btn-icon:hover{background:#f0f0f0;color:#4a6fa5}.btn-icon.btn-delete:hover{background:#fff1f0;color:#ff4d4f}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.available-milestones{display:flex;flex-wrap:wrap;gap:8px;padding:12px;border:1px solid #e8e8e8;border-radius:6px;background:#fafafa;margin-top:8px}.add-milestone-btn{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;border:1px solid #d9d9d9;border-radius:4px;background:#fff;color:#666;font-size:12px;cursor:pointer;transition:all .2s}.add-milestone-btn:hover{border-color:#4a6fa5;color:#4a6fa5;background:#edf2f9}.empty-tips{color:#999;font-size:12px;padding:20px;text-align:center}.nodes-config{display:flex;flex-direction:column;gap:16px}.phase-section{background:#fff;border:1px solid #e8e8e8;border-radius:8px;overflow:hidden;transition:all .3s}.phase-section:hover{box-shadow:0 2px 8px #0000000d}.phase-section-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#fafafa;border-bottom:1px solid #e8e8e8}.phase-section-title{font-size:14px;font-weight:600;color:#1a1a1a}.phase-section-count{font-size:12px;color:#666;background:#fff;padding:2px 8px;border-radius:4px;border:1px solid #e8e8e8}.nodes-list{padding:8px}.node-config-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #f0f0f0;transition:background .2s}.node-config-item:last-child{border-bottom:none}.node-config-item:hover{background:#fafafa}.node-info{flex:1}.node-main{display:flex;align-items:center;gap:8px;margin-bottom:4px}.node-name{font-weight:500;color:#1a1a1a;font-size:14px}.node-desc{font-size:12px;color:#999;margin-left:10px}.node-modal{max-width:440px}.required{color:#ff4d4f;margin-left:2px}.node-type{font-size:11px;color:#4a6fa5;background:#edf2f9;padding:2px 6px;border-radius:3px;border:1px solid #91d5ff}.node-meta{display:flex;gap:8px;align-items:center;margin-top:4px}.node-days{font-size:12px;color:#666;background:#f5f5f5;padding:2px 8px;border-radius:3px}.node-actions{display:flex;gap:4px}.node-edit-form,.template-edit-form{padding:16px;background:#fafafa;border-radius:6px;border:1px solid #e8e8e8}.form-group{margin-bottom:16px}.form-label{display:block;font-size:12px;font-weight:500;color:#1a1a1a;margin-bottom:6px}.form-row{display:flex;gap:12px}.form-row .form-group{flex:1}.form-input,.form-select{width:100%;padding:8px 12px;border:1px solid #d9d9d9;border-radius:4px;font-size:13px;transition:all .2s;background:#fff}.form-input:focus,.form-select:focus{outline:none;border-color:#4a6fa5;box-shadow:0 0 0 2px #4a6fa52e}.form-input:disabled{background:#f5f5f5;color:#999;cursor:not-allowed}.form-select{cursor:pointer}.edit-actions{display:flex;gap:8px;margin-top:16px;padding-top:16px;border-top:1px solid #e8e8e8}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border:1px solid transparent;border-radius:4px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s;background:#fff}.btn-primary{background:#4a6fa5;color:#fff;border-color:#4a6fa5}.btn-primary:hover{background:#5a7eb4;border-color:#40a9ff}.btn-secondary{background:#fff;color:#666;border-color:#d9d9d9}.btn-secondary:hover{color:#4a6fa5;border-color:#4a6fa5}.btn-danger{background:#fff;color:#ff4d4f;border-color:#ff4d4f}.btn-danger:hover{background:#ff4d4f;color:#fff}.btn-sm{padding:5px 12px;font-size:12px}.config-footer{margin:20px;padding:16px 20px;background:#fff;border:1px solid #e8e8e8;border-radius:8px}.config-footer h4{margin:0 0 12px;font-size:14px;font-weight:600;color:#1a1a1a}.usage-guide{color:#666;line-height:1.8;font-size:13px}.usage-guide ul{margin:0;padding-left:20px}.usage-guide li{margin-bottom:8px}.usage-guide strong{color:#1a1a1a;font-weight:600}.empty-state{text-align:center;padding:60px 20px;color:#999;background:#fff;border:1px solid #e8e8e8;border-radius:8px;font-size:14px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;border-radius:8px;width:90%;max-width:500px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 4px 20px #00000026}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e8e8e8}.modal-header h3{margin:0;font-size:16px;font-weight:600}.modal-body{padding:20px;overflow-y:auto;flex:1}.modal-hint{margin:0 0 16px;font-size:13px;color:#666}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid #e8e8e8}.milestone-checkbox-list{display:flex;flex-direction:column;gap:8px}.milestone-checkbox-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid #e8e8e8;border-radius:6px;cursor:pointer;transition:all .2s}.milestone-checkbox-item:hover{border-color:#4a6fa5;background:#edf2f9}.milestone-checkbox-item input[type=checkbox]{width:16px;height:16px;cursor:pointer}.milestone-checkbox-name{flex:1;font-size:13px;color:#1a1a1a}.milestone-checkbox-phase{font-size:11px;color:#999;padding:2px 8px;background:#f5f5f5;border-radius:3px}@media (max-width: 768px){.config-content{padding:12px}.form-row{flex-direction:column;gap:0}.template-header{flex-direction:column;gap:12px}.available-milestones{flex-direction:column}.add-milestone-btn{width:100%;justify-content:center}}.table-select-wrap{width:100%;position:relative}.table-select-dropdown{width:100%;background:#fff}.table-select-search{padding:8px 12px;border-bottom:1px solid #f0f0f0}.table-select-table .ant-table-thead>tr>th{background:#fafafa;color:#262626;font-weight:500;padding:8px 12px}.table-select-table .ant-table-tbody>tr>td{padding:8px 12px;cursor:pointer}.table-select-row--active>td{background:#e6f4ff!important}.table-select-check{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:1px solid #d9d9d9;border-radius:2px;color:#fff;font-size:10px}.table-select-check--active{background:#1677ff;border-color:#1677ff}.table-select-footer{display:flex;justify-content:flex-end;gap:8px;padding:10px 12px;border-top:1px solid #f0f0f0}.monitor-node-config{background:var(--ant-color-bg-container, #fff);border:1px solid var(--ant-color-border-secondary, #ede9e6);border-radius:var(--ant-border-radius, 6px);overflow:hidden}.mnc-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 20px;border-bottom:1px solid var(--ant-color-border-secondary, #ede9e6);background:var(--ant-color-bg-container, #fff)}.mnc-title{display:flex;align-items:center;gap:8px;margin:0;font-size:var(--ant-font-size-lg, 16px);font-weight:600;color:var(--ant-color-text-heading, #1a1814);white-space:nowrap}.mnc-title-icon{color:var(--ant-color-primary, #4a6fa5);font-size:18px}.mnc-header-actions{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:10px}.mnc-search-input{width:180px}.mnc-filter-select{width:100px}.mnc-table-wrap{padding:0}.mnc-table .ant-table{background:transparent}.mnc-table .ant-table-thead>tr>th{background:var(--ant-color-fill-alter, #f2f0ec)!important;font-weight:500;color:var(--ant-color-text, #1a1814);border-bottom:1px solid var(--ant-color-border-secondary, #ede9e6)}.mnc-table .ant-table-thead>tr>th:before{display:none}.mnc-table .ant-table-tbody>tr>td{border-bottom:1px solid var(--ant-color-border-secondary, #ede9e6)}.mnc-table .ant-table-tbody>tr:hover>td{background:var(--ant-color-primary-bg, #edf2f9)!important}.mnc-table .ant-table-cell{padding:12px 16px!important}.mnc-cell-code{color:var(--ant-color-text-secondary, #6e685e);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.mnc-cell-name{font-weight:600;color:var(--ant-color-text, #1a1814)}.mnc-cell-desc{color:var(--ant-color-text-secondary, #6e685e)}.mnc-cell-days{color:var(--ant-color-text, #1a1814)}.mnc-switch-cell{display:inline-flex;align-items:center;gap:8px}.mnc-switch-label{color:var(--ant-color-text, #1a1814);font-size:var(--ant-font-size, 13px)}.mnc-mapping-badge{display:inline-block;padding:2px 10px;border-radius:4px;font-size:var(--ant-font-size-sm, 12px);line-height:20px;border:1px solid transparent}.mnc-mapping-badge--configured{color:var(--ant-color-success, #3e7d5c);background:var(--ant-color-success-bg, #edf5f0);border-color:#3e7d5c59}.mnc-mapping-badge--pending{color:var(--ant-color-text-secondary, #6e685e);background:var(--ant-color-fill-alter, #f2f0ec);border-color:var(--ant-color-border-secondary, #ede9e6)}.mnc-actions{justify-content:flex-end}.mnc-actions .ant-btn-primary{min-width:56px}.mnc-mapping-section{margin-bottom:24px}.mnc-mapping-section h4{margin-bottom:12px;font-size:14px;color:#1f1f1f}.mnc-mapping-fields{display:grid;gap:16px}.mnc-mapping-field{display:flex;flex-direction:column;gap:6px}.mnc-mapping-label{font-size:13px;font-weight:500;color:#262626}.mnc-required{color:#ff4d4f}.mnc-view-mapping-modal .ant-modal-body{padding-top:16px}.mnc-view-mapping-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px}.mnc-view-mapping-filter{flex:0 0 auto}.mnc-view-mapping-filter .ant-input{width:100px}.mnc-view-mapping-filters>.ant-btn{flex:0 0 auto}.mnc-view-mapping-empty{text-align:center;padding:40px;color:#999}.mnc-view-mapping-modal .ant-table-thead>tr>th{background:#fafafa;font-weight:500}.calendar-config-page{padding:16px;background:#f5f6fa;min-height:calc(100vh - 64px)}.calendar-config-toolbar-sticky{position:sticky;top:0;box-sizing:border-box;background:transparent;z-index:100;margin-bottom:16px}.calendar-config-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid #e8ebf2;border-radius:12px;box-sizing:border-box;padding:12px 14px;box-shadow:none}.calendar-loading{display:flex;justify-content:center;align-items:center;min-height:240px;position:relative;z-index:0;isolation:isolate}.month-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(560px,1fr));gap:16px;position:relative;z-index:0;isolation:isolate}.month-card{background:#fff;border:1px solid #e6e9f2;border-radius:14px;padding:12px 12px 10px;box-shadow:0 2px 8px #1a202c0a}.month-title{font-size:15px;font-weight:600;margin-bottom:10px;color:#2f3950}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.week-header{margin-bottom:6px}.week-cell{text-align:center;font-size:12px;color:#8f97aa;padding:4px 0}.week-cell.weekend{color:#e26a6a}.day-grid{gap:8px}.day-cell{display:flex;flex-direction:column;min-height:150px;border:1px solid #eceff5;border-radius:10px;padding:7px;background:#f9fafe;transition:all .2s ease;overflow:visible}.day-cell.workday:hover,.day-cell.offday:hover{transform:translateY(-1px);box-shadow:0 3px 10px #5a66811f}.day-cell.empty{background:#fff;border-style:dashed;opacity:.65}.day-cell.offday{background:#fff6f6;border-color:#ffdede}.day-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.day-number{font-size:14px;font-weight:600;color:inherit}.day-status-pill{margin:0;padding:0 8px;min-width:28px;height:22px;line-height:20px;font-size:12px;font-weight:600;border-radius:4px;border:1px solid transparent;cursor:pointer;background:transparent;transition:background .15s ease,border-color .15s ease,opacity .15s ease}.day-status-pill:disabled{cursor:default}.day-status-pill.pending{opacity:.55}.day-status-pill.readonly{opacity:.88}.day-status-pill.work{color:#1f1f1f;border-color:#d9dee8;background:#f3f5f9}.day-status-pill.work:hover:not(:disabled){background:#e8ecf4;border-color:#c5ccd9}.day-status-pill.off{color:#c73e3e;border-color:#f0c4c4;background:#fff0f0}.day-status-pill.off:hover:not(:disabled){background:#ffe4e4;border-color:#e8a8a8}.day-cell.workday .day-number{color:#1f1f1f}.day-cell.offday .day-number{color:#d45d5d}.day-actions{display:flex;flex-direction:column;flex:1;min-height:0;gap:4px}.day-remark-textarea.ant-input{font-size:12px;line-height:1.45;word-break:break-word;resize:none}.day-actions.locked .day-remark-textarea.ant-input{cursor:default;background:#f0f2f7!important;color:#595959}.calendar-config-page .ant-input{border-radius:8px;border-color:#dce2ef;background:#fff}.calendar-config-page .ant-input:focus,.calendar-config-page .ant-input-focused{border-color:#8d9eff;box-shadow:0 0 0 2px #8d9eff26}.calendar-config-page .ant-picker,.calendar-config-page .ant-select-selector{border-radius:8px!important;border-color:#dce2ef!important}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Segoe UI,sans-serif;font-size:13px;line-height:1.5;color:#1a1814;background-color:#f2f0ec;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-layout,.app-layout.ant-layout{display:flex;flex-direction:column;height:100vh;max-height:100vh;overflow:hidden;width:100%}.app-layout .ant-layout-content.app-content{flex:1 1 0;min-height:0;min-width:0;width:100%;overflow-y:auto}.app-header{flex-shrink:0;display:flex;align-items:center;padding:0 20px;background:#0f1b2d;height:48px;line-height:48px;border-bottom:1px solid rgba(255,255,255,.06);box-shadow:0 1px 6px #0000002e}.app-header .ant-menu{height:48px;line-height:48px;background:transparent}.app-header .ant-menu-item{height:48px!important;line-height:48px!important;margin-top:0!important;margin-bottom:0!important;border-bottom:none!important}.app-header .ant-menu-item:after{display:none!important}.app-header .ant-menu-item-selected{background-color:#ffffff26!important}.app-header .ant-menu-item:hover{background-color:#ffffff1a!important}.app-brand{font-size:15px;font-weight:600;color:#fff;margin-right:28px;white-space:nowrap;letter-spacing:.03em;opacity:.92}.app-content{--app-content-edge-pad: 20px;padding:0;margin:0;width:100%;background:#f2f0ec}.app-content-inner{box-sizing:border-box;width:100%;max-width:100%;min-height:100%;padding:var(--app-content-edge-pad)}.card{background:#fff;border-radius:6px;padding:12px;border:1px solid #e8e8e8;margin-bottom:12px}.card-title{font-size:14px;font-weight:600;margin-bottom:10px;color:#1a1a1a}.btn{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;border:none;border-radius:4px;cursor:pointer;font-size:12px;font-weight:500;transition:all .15s;line-height:1.4}.btn-primary{background-color:#4a6fa5;color:#fff}.btn-primary:hover{background-color:#5a7eb4}.btn-secondary{background-color:#f5f5f5;color:#666;border:1px solid #d9d9d9}.btn-secondary:hover{background-color:#e8e8e8;color:#1a1a1a}.btn-danger{background-color:#ff4d4f;color:#fff}.btn-danger:hover{background-color:#ff7875}.badge{display:inline-block;padding:2px 6px;border-radius:3px;font-size:11px;font-weight:500;line-height:1.2}.badge-success{background-color:#f6ffed;color:#389e0d;border:1px solid #b7eb8f}.badge-warning{background-color:#fffbe6;color:#d48806;border:1px solid #ffe58f}.badge-danger{background-color:#fff1f0;color:#cf1322;border:1px solid #ffa39e}.badge-info{background-color:#e6f7ff;color:#096dd9;border:1px solid #91d5ff}.table{width:100%;border-collapse:collapse;font-size:12px}.table th,.table td{padding:8px 10px;text-align:left;border-bottom:1px solid #f0f0f0}.table th{background-color:#f5f5f5;font-weight:600;color:#1a1a1a;border-bottom:1px solid #e8e8e8}.table tr:hover{background-color:#fafafa}.form-group{margin-bottom:10px}.form-label{display:block;margin-bottom:4px;font-weight:500;color:#1a1a1a;font-size:12px}.form-input{width:100%;padding:5px 8px;border:1px solid #d9d9d9;border-radius:4px;font-size:12px;line-height:1.4;transition:all .2s}.form-input:focus{outline:none;border-color:#4a6fa5;box-shadow:0 0 0 2px #4a6fa52e}.grid{display:grid;gap:12px}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 768px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.navbar{padding:0 12px;height:44px}.nav-brand{font-size:14px}.nav-links a{padding:4px 8px;font-size:12px}.main-content{padding:12px}}.page-container{width:100%;max-width:100%;font-size:var(--ant-font-size);line-height:var(--ant-line-height);color:var(--ant-color-text);box-sizing:border-box}.page-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--ant-color-border);background:var(--ant-color-bg-container)}.page-header h2{margin:0;font-size:var(--ant-font-size-heading2);font-weight:600;color:var(--ant-color-text-heading)}.page-header h2 .anticon{color:var(--ant-color-primary)}.page-content{padding:20px;background:var(--ant-color-bg-layout)}.content-card{background:var(--ant-color-bg-container);border-radius:var(--ant-border-radius);box-shadow:var(--ant-box-shadow);margin-bottom:16px}.content-card .card-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--ant-color-border-secondary)}.content-card .card-header h3{margin:0;font-size:var(--ant-font-size-lg);font-weight:600;color:var(--ant-color-text-heading)}.content-card .card-body{padding:16px}.filter-bar{display:flex;flex-wrap:wrap;gap:12px;padding:12px 20px;background:var(--ant-color-bg-container);border-bottom:1px solid var(--ant-color-border)}.action-bar{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;background:var(--ant-color-bg-container);border-bottom:1px solid var(--ant-color-border-secondary)}.action-bar .left-actions,.action-bar .right-actions{display:flex;gap:8px}.table-container{padding:16px 20px;background:var(--ant-color-bg-container)}.table-container.full-width{padding:0}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;padding:20px}.stat-card{background:var(--ant-color-bg-container);border-radius:var(--ant-border-radius);padding:16px;box-shadow:var(--ant-box-shadow-tertiary)}.stat-card .stat-label{font-size:var(--ant-font-size-sm);color:var(--ant-color-text-description);margin-bottom:8px}.stat-card .stat-value{font-size:var(--ant-font-size-xl);font-weight:600;color:var(--ant-color-text-heading)}.split-layout{display:flex;gap:0;height:100%}.split-layout .left-panel{width:280px;flex-shrink:0;border-right:1px solid var(--ant-color-border);overflow-y:auto;background:var(--ant-color-bg-container)}.split-layout .right-panel{flex:1;overflow:auto;min-width:0;background:var(--ant-color-bg-layout)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 20px;color:var(--ant-color-text-description)}.empty-state .anticon{font-size:48px;color:var(--ant-color-text-quaternary);margin-bottom:16px}.empty-state p{margin:0 0 16px;font-size:var(--ant-font-size);color:var(--ant-color-text-secondary)}.tag-status-pending{color:var(--ant-color-warning);background:var(--ant-color-warning-bg);border-color:var(--ant-color-warning)}.tag-status-active{color:var(--ant-color-primary);background:var(--ant-color-primary-bg);border-color:var(--ant-color-primary)}.tag-status-done{color:var(--ant-color-success);background:var(--ant-color-success-bg);border-color:var(--ant-color-success)}.tag-status-error{color:var(--ant-color-error);background:var(--ant-color-error-bg);border-color:var(--ant-color-error)}.form-section{margin-bottom:20px}.form-section .section-title{font-size:var(--ant-font-size-lg);font-weight:600;color:var(--ant-color-text-heading);margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--ant-color-border-secondary)}.page-breadcrumb{padding:12px 20px;background:var(--ant-color-bg-container);border-bottom:1px solid var(--ant-color-border-secondary)}:root{--color-primary: #4A6FA5;--color-primary-hover: #5A7EB4;--color-primary-light: #EDF2F9;--color-bg: #F2F0EC;--color-surface: #FFFFFF;--color-text: #1A1814;--color-text-muted: #6E685E;--color-border: #E2DDDA;--color-success: #3E7D5C;--color-warning: #C27A2A;--color-error: #B54040;--shadow-sm: 0 1px 3px rgba(26, 24, 20, .06), 0 0 0 1px rgba(26, 24, 20, .03);--shadow-md: 0 4px 12px rgba(26, 24, 20, .1);--radius: 6px;--transition: .15s ease}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}html,body,#root{width:100%;min-width:100%}body{font-family:-apple-system,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--color-bg);color:var(--color-text)}.ant-btn,.ant-card,.ant-menu-item,.ant-tabs-tab,.ant-tag,.ant-select-selector,.ant-input,.ant-input-textarea,.ant-table-row{transition:all var(--transition)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#c8c4bf;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#a8a4a0}code{font-family:JetBrains Mono,Fira Code,source-code-pro,Menlo,Monaco,Consolas,monospace}
