.dashboard{font-size:13px;line-height:1.5;min-width:0}.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}.filter-card.ant-card,.alerts-card.ant-card{height:100%;display:flex;flex-direction:column;border:1px solid #E8E4DF;box-shadow:0 1px 3px #1a18140d}.filter-card.ant-card .ant-card-body,.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}.project-list-card.ant-card{border:1px solid #E8E4DF;box-shadow:0 1px 3px #1a18140d}.project-schedule{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:13px;line-height:1.4;color:#1a1a1a;min-height:calc(100vh - 48px);width:100%;max-width:100%;box-sizing:border-box}.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;font-weight:600;color:#1a1a1a}.projects-table-container{padding:20px;overflow-y:auto;min-height:calc(100vh - 80px);width:100%}.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;font-weight:600}.projects-table-header th{padding:12px 16px;text-align:left;border-bottom:1px solid #e8e8e8;color:#1a1a1a;font-size:13px;font-weight:600}.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}.project-col-name{width:25%}.project-col-brand,.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;min-height:calc(100vh - 80px)}.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-title{font-size:15px;font-weight:600;color:#1a1a1a;margin-bottom:4px}.project-subtitle{font-size:12px;color:#666}.version-nav-list{flex:1;overflow-y:auto;padding:12px}.version-nav-title{font-size:12px;font-weight:600;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-weight:600;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;font-weight:600;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;overflow-y:auto;padding:20px;background:#fafafa;min-width:0}.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;font-weight:600;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}.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;font-weight:600}.spec-table-header tr{border-bottom:1px solid #e8e8e8}.spec-header-cell{padding:4px 6px;border-right:1px solid #e8e8e8;text-align:center;font-weight:600;min-width:120px}.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:120px}.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:28px;text-align:center;position:relative}.milestone-cell.merged-cell{position:relative}.milestone-dates{display:flex;align-items:center;justify-content:center;gap:4px;font-size:12px;line-height:1.2;min-width:0;overflow:hidden}.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-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;font-weight:600;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}.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:18px;height:18px;border-radius:50%;border:2px 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.1);box-shadow:0 1px 4px #00000026}.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-weight:600;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}}.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;min-height:calc(100vh - 48px)}.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:100%;min-width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}.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:200px;padding:8px 6px;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:200px;padding:8px 6px;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}}*{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{min-height:100vh;width:100%}.app-layout .ant-layout-content.app-content{flex:1 1 auto;min-width:0;width:100%}.app-header{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{padding:20px;margin:0;width:100%;min-height:calc(100vh - 48px);background:#f2f0ec}.app-content>*{width:100%;max-width:100%}.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}}: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)!important}::-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}
