*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.5;color:#333;background:#f5f7fa;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.flex-1{flex:1}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#d9d9d9;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#bfbfbf}.sidebar-custom .ant-layout-sider-children{display:flex;flex-direction:column;height:100%}.sidebar-custom .ant-layout-sider-children>div:not(.sidebar-menu-scroll){flex-shrink:0}.sidebar-menu-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:none}.sidebar-menu-scroll::-webkit-scrollbar{display:none}.kpi-card-proto{background:#fff;border-radius:8px;padding:10px 12px;position:relative;overflow:hidden}.kpi-card-proto:before{content:"";position:absolute;top:0;left:0;right:0;height:3px}.kpi-card-proto.green:before{background:linear-gradient(90deg,var(--c-brand),var(--c-brand-hover))}.kpi-card-proto.success:before{background:linear-gradient(90deg,var(--c-success),var(--c-success-hover))}.kpi-card-proto.blue:before{background:linear-gradient(90deg,var(--c-info),var(--c-info-active))}.kpi-card-proto.orange:before{background:linear-gradient(90deg,var(--c-warning),var(--c-warning-active))}.kpi-card-proto.purple:before{background:linear-gradient(90deg,var(--c-purple),var(--c-purple-active))}.kpi-card-proto.red:before{background:linear-gradient(90deg,var(--c-error),var(--c-error-deep))}.kpi-card-proto .kpi-header{display:flex;align-items:center;gap:10px;margin-bottom:4px}.kpi-card-proto .kpi-icon{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:14px}.kpi-card-proto.green .kpi-icon{background:var(--c-brand-bg);color:var(--c-brand)}.kpi-card-proto.success .kpi-icon{background:var(--c-success-bg);color:var(--c-success)}.kpi-card-proto.blue .kpi-icon{background:var(--c-info-bg);color:var(--c-info)}.kpi-card-proto.orange .kpi-icon{background:var(--c-warning-bg);color:var(--c-warning)}.kpi-card-proto.purple .kpi-icon{background:var(--c-purple-bg);color:var(--c-purple)}.kpi-card-proto.red .kpi-icon{background:var(--c-error-bg);color:var(--c-error)}.kpi-card-proto .kpi-trend{display:flex;align-items:center;gap:3px;font-size:11px;padding:3px 7px;border-radius:4px}.kpi-card-proto .kpi-trend.up{background:var(--c-brand-bg);color:var(--c-brand)}.kpi-card-proto .kpi-trend.down{background:var(--c-error-bg);color:var(--c-error)}.kpi-card-proto .kpi-value{font-size:20px;font-weight:700;color:#1a1a1a}.kpi-card-proto .kpi-label{font-size:11px;color:#999}.dashboard-panel{background:#fff;border-radius:10px;padding:16px 18px;border:1px solid #f0f0f0;transition:box-shadow .2s,transform .15s}.dashboard-panel:hover{box-shadow:0 2px 12px #0000000f;transform:translateY(-1px)}.dashboard-panel .panel-header{display:flex;align-items:center;gap:10px;margin-bottom:12px}.dashboard-panel .panel-icon{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.dashboard-panel .panel-title{font-size:14px;font-weight:600;color:#1a1a1a}.dashboard-panel .panel-subtitle{font-size:11px;color:#999;margin-left:auto}.dashboard-panel .panel-primary-value{font-size:28px;font-weight:700;color:#1a1a1a;line-height:1.2;margin-bottom:4px}.dashboard-panel .panel-stats{padding-top:6px;border-top:1px solid #f5f5f5;margin-top:4px}.flow-nav-container{background:#fff;border-radius:12px;padding:14px 20px;margin-bottom:20px;overflow:hidden;position:relative;transition:padding .3s ease}.flow-nav-container.collapsed{padding:12px 20px}.flow-nav-title{font-size:14px;font-weight:700;color:#1a1a1a;margin-bottom:10px;display:flex;align-items:center;gap:8px;border-bottom:1px solid #f5f5f5;padding-bottom:8px;flex-wrap:wrap}.flow-nav-container.collapsed .flow-nav-title{margin-bottom:0;border-bottom:none;padding-bottom:0}.flow-title-badge{font-size:10px;font-weight:500;padding:2px 10px;border-radius:10px;white-space:nowrap}.flow-title-badge.count{color:var(--c-cyan-active);background:var(--c-cyan-bg);border:1px solid var(--c-cyan-border);margin-left:auto}.flow-title-badge.cycle{color:var(--c-success);background:var(--c-success-bg);border:1px solid var(--c-success-border)}.flow-collapse-btn{margin-left:auto;font-size:12px;font-weight:500;color:#8c8c8c;background:#fafafa;border:1px solid #e8e8e8;border-radius:6px;padding:3px 12px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all .2s ease;white-space:nowrap}.flow-collapse-btn:hover{color:var(--c-brand);border-color:var(--c-brand);background:var(--c-brand-bg)}.flow-nav-body{overflow:hidden;animation:flowExpandIn .35s ease}@keyframes flowExpandIn{0%{max-height:0;opacity:0}to{max-height:300px;opacity:1}}.flow-nav-row-label{font-size:11px;color:var(--c-success);margin-bottom:6px;padding:0 2px;font-weight:500;display:flex;align-items:center;gap:6px}.flow-nav-row-label:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,#e0f3e0,transparent)}.flow-nav-row-label.data-row{color:var(--c-info);margin-top:4px}.flow-nav-row-label.data-row:after{background:linear-gradient(90deg,#e0f0ff,transparent)}.flow-nav-track{display:flex;align-items:center;gap:0;padding:2px 2px 6px}.flow-nav-track::-webkit-scrollbar{height:4px}.flow-nav-track::-webkit-scrollbar-thumb{background:#d9d9d9;border-radius:2px}.flow-node-wrapper{display:flex;align-items:center;flex:1;min-width:0}.flow-node{display:flex;align-items:center;gap:8px;background:#fff;border:1.5px solid #e8e8e8;border-radius:10px;padding:10px 12px;cursor:pointer;transition:all .2s ease;flex:1;min-width:0}.flow-node:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a;border-color:var(--c-brand);background:var(--c-info-bg)}.flow-node-icon{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}.flow-node-text{text-align:left;min-width:0}.flow-node-label{font-size:13px;font-weight:600;color:#1a1a1a;line-height:1.3}.flow-node-sub{font-size:11px;color:#999;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.flow-arrow{display:flex;align-items:center;flex-shrink:0;padding:0 3px}.flow-arrow-line{width:18px;height:2px;background:var(--c-info)}.flow-arrow-icon{font-size:10px;color:var(--c-info)}.flow-arrow:hover .flow-arrow-line{background:var(--c-info-hover)}.flow-arrow:hover .flow-arrow-icon{color:var(--c-info-hover)}.flow-arrow.reverse{padding:0 3px}.flow-arrow.reverse .flow-arrow-line{width:18px}.flow-arrow.reverse .flow-arrow-icon{order:2}.flow-nav-connector-right,.flow-connector-line,.flow-connector-label{display:none}.flow-rows-wrapper{display:flex;align-items:stretch;gap:0}.flow-side-loopback{display:flex;flex-direction:column;width:48px;flex-shrink:0;padding:28px 0 30px;position:relative}.flow-side-svg{width:100%;height:100%;flex:1;overflow:visible}.flow-side-svg text{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.flow-rows-content{flex:1;min-width:0}@media (max-width: 1100px){.flow-nav-container{padding:10px 14px}.flow-node{padding:8px 10px;gap:6px}.flow-node-icon{width:28px;height:28px;font-size:14px;border-radius:6px}.flow-node-label{font-size:12px}.flow-node-sub{font-size:10px}.flow-arrow-line,.flow-arrow.reverse .flow-arrow-line{width:14px}.flow-side-loopback{width:38px;padding:22px 0 24px}}@media (max-width: 768px){.flow-nav-container{padding:8px 10px;border-radius:8px}.flow-nav-title{font-size:13px;margin-bottom:6px;padding-bottom:6px;gap:4px}.flow-title-badge{font-size:9px;padding:1px 6px}.flow-collapse-btn{font-size:10px;padding:2px 8px;border-radius:4px}.flow-nav-row-label{font-size:10px;margin-bottom:4px}.flow-node{padding:6px 8px;gap:4px;border-radius:8px}.flow-node-icon{width:24px;height:24px;font-size:12px;border-radius:6px}.flow-node-label{font-size:11px}.flow-node-sub{font-size:9px}.flow-arrow-line,.flow-arrow.reverse .flow-arrow-line{width:10px}.flow-arrow-icon{font-size:8px}.flow-side-loopback{width:30px;padding:16px 0 18px}}.section-title{font-size:15px;font-weight:600;color:#1a1a1a;margin-bottom:12px;display:flex;align-items:center;gap:6px}.overview-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:12px;margin-bottom:20px}@media (max-width: 1400px){.overview-grid{grid-template-columns:repeat(4,1fr)}}@media (max-width: 900px){.overview-grid{grid-template-columns:repeat(2,1fr)}}.overview-card{background:#fff;border-radius:10px;padding:14px 16px;display:flex;align-items:flex-start;gap:12px;border:1px solid #f0f0f0;position:relative;overflow:hidden;transition:box-shadow .2s,transform .15s}.overview-card:hover{box-shadow:0 2px 12px #0000000f;transform:translateY(-1px)}.overview-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px}.overview-card.blue:before{background:linear-gradient(90deg,var(--c-info),var(--c-info-active))}.overview-card.green:before{background:linear-gradient(90deg,var(--c-brand),var(--c-brand-hover))}.overview-card.orange:before{background:linear-gradient(90deg,var(--c-warning),var(--c-warning-active))}.overview-card.purple:before{background:linear-gradient(90deg,var(--c-purple),var(--c-purple-active))}.overview-card.cyan:before{background:linear-gradient(90deg,var(--c-cyan),var(--c-cyan-active))}.overview-card.red:before{background:linear-gradient(90deg,var(--c-error),var(--c-error-deep))}.overview-card.teal:before{background:linear-gradient(90deg,var(--c-cyan-active),#006d75)}.overview-card-icon{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.overview-card.blue .overview-card-icon{background:var(--c-info-bg);color:var(--c-info)}.overview-card.green .overview-card-icon{background:var(--c-brand-bg);color:var(--c-brand)}.overview-card.orange .overview-card-icon{background:var(--c-warning-bg);color:var(--c-warning)}.overview-card.purple .overview-card-icon{background:var(--c-purple-bg);color:var(--c-purple)}.overview-card.cyan .overview-card-icon{background:var(--c-cyan-bg);color:var(--c-cyan)}.overview-card.red .overview-card-icon{background:var(--c-error-bg);color:var(--c-error)}.overview-card.teal .overview-card-icon{background:var(--c-cyan-bg);color:var(--c-cyan-active)}.overview-card-content{flex:1;min-width:0}.overview-card-value{font-size:22px;font-weight:700;color:#1a1a1a;line-height:1.2}.overview-card-unit{font-size:12px;font-weight:400;color:#999;margin-left:2px}.overview-card-label{font-size:11px;color:#999;margin-top:2px}.alert-panel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:12px}@media (max-width: 1200px){.alert-panel-grid{grid-template-columns:repeat(2,1fr)}}.alert-category-card{background:#fff;border-radius:10px;padding:14px 16px;border:1px solid #f0f0f0;transition:all .2s}.alert-category-card.has-alert:hover{box-shadow:0 2px 12px #0000000f;transform:translateY(-1px)}.alert-category-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.alert-category-icon{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}.alert-category-label{font-size:13px;font-weight:600;color:#333;flex:1}.alert-category-count{font-size:12px;font-weight:600;padding:2px 10px;border-radius:10px;flex-shrink:0}.alert-category-detail{font-size:12px;color:#999;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.autocomplete-dropdown{position:absolute;top:100%;left:0;right:0;z-index:1050;background:#fff;border:1px solid #e8e8e8;border-radius:0 0 8px 8px;box-shadow:0 4px 12px #0000001a;max-height:200px;overflow-y:auto;margin-top:-1px}.autocomplete-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;cursor:pointer;font-size:13px;transition:background .15s}.autocomplete-item:hover{background:var(--c-brand-bg)}.autocomplete-item:first-child{border-radius:0}.autocomplete-name{color:#1a1a1a;font-weight:500}.autocomplete-code{color:#999;font-size:12px}.kanban-board{display:flex;gap:16px;overflow-x:auto;padding-bottom:8px;min-height:0;scrollbar-gutter:stable}.kanban-column{min-width:280px;max-width:320px;background:#fff;border-radius:10px;padding:0 12px 12px;display:flex;flex-direction:column;overflow-y:auto;min-height:0}.kanban-column#pending{width:280px;flex-shrink:0;scrollbar-width:none;-ms-overflow-style:none;overflow-x:hidden}.kanban-column#pending::-webkit-scrollbar{display:none}.kanban-column.pending-collapsed{min-width:150px;max-width:180px}.kanban-column.locked{opacity:.85;background:var(--c-purple-bg);border:1px solid var(--c-purple-border)}.kanban-column.finished{background:var(--c-success-bg);border:1px solid var(--c-success-border)}.kanban-column-header{display:flex;align-items:center;gap:8px;padding-top:12px;padding-bottom:8px;border-bottom:1px solid #e8e8e8;position:sticky;top:0;z-index:2;background:inherit}.kanban-week-title{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:600;flex:1}.kanban-week-title .week-icon{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:13px}.kanban-week-title.pending .week-icon{background:var(--c-warning-bg);color:var(--c-warning)}.kanban-week-title.locked .week-icon{background:var(--c-purple-bg);color:var(--c-purple)}.kanban-week-title.active .week-icon{background:var(--c-brand-bg);color:var(--c-brand)}.kanban-week-title.finished .week-icon{background:var(--c-success-bg);color:var(--c-success)}.kanban-column-count{background:#e8e8e8;color:#666;font-size:11px;padding:2px 8px;border-radius:10px;font-weight:600}.kanban-actions{display:flex;gap:4px}.kanban-icon-btn{width:26px;height:26px;border:none;background:#fff;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;color:#999;transition:all .2s}.kanban-icon-btn:hover{background:#e8e8e8;color:#333}.ant-modal-footer .kanban-icon-btn{display:inline-flex}.ant-modal-footer button+button{margin-inline-start:8px}.kanban-card{background:#fff;border-radius:8px;padding:12px;margin-bottom:8px;cursor:pointer;border:1px solid #f0f0f0;transition:all .2s}.kanban-card:hover{box-shadow:0 2px 8px #00000014;border-color:var(--c-brand)}.kanban-card-mini{padding:8px 10px;margin-bottom:4px;display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;border-radius:6px;background:#fff;border:1px solid #f0f0f0;transition:all .15s}.kanban-card-mini:hover{background:var(--c-brand-bg);border-color:var(--c-success-border)}.kanban-card-mini-name{font-size:13px;font-weight:500;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.kanban-card-mini-qty{font-size:12px;color:var(--c-brand);font-weight:600;white-space:nowrap;background:var(--c-success-bg);padding:1px 8px;border-radius:10px;flex-shrink:0}.kanban-card.finished-card{opacity:.85;background:#fafafa}.kanban-card-title{font-size:13px;font-weight:600;color:#1a1a1a;margin-bottom:6px}.kanban-card-meta{display:flex;flex-wrap:wrap;gap:8px;font-size:12px;color:#999}.kanban-card-meta span{display:flex;align-items:center;gap:3px}.kanban-card-tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;margin-top:6px}.kanban-card-tag.urgent{background:var(--c-error-bg);color:var(--c-error)}.kanban-card-tag.normal{background:var(--c-brand-bg);color:var(--c-brand)}.kanban-card-tag.type-normal{background:var(--c-success-bg);color:var(--c-success)}.kanban-card-tag.type-urgent{background:var(--c-error-bg);color:var(--c-error)}.kanban-card-tag.type-overdue{background:var(--c-warning-bg);color:var(--c-warning)}.kanban-card-tag.type-crossweek{background:var(--c-geekblue-bg);color:var(--c-geekblue)}.kanban-card-tag.type-crossweek-forward{background:var(--c-warning-bg);color:var(--c-gold-active);border:1px solid #ffd666;font-weight:600}.kanban-card-tag.type-crossweek-in{background:var(--c-success-bg);color:var(--c-success-active);border:1px solid var(--c-success-hover)}.kanban-card-tag.type-bom{background:var(--c-geekblue-bg);color:var(--c-geekblue);border:1px solid var(--c-geekblue-border)}.kanban-card-tag.type-oem{background:var(--c-info-bg);color:var(--c-info);border:1px solid var(--c-info-border)}.kanban-filter-bar{display:flex;align-items:center;gap:4px;margin-bottom:10px;padding:6px 0;position:sticky;top:49px;z-index:1;background:inherit}.kanban-icon-filter{position:relative}.kanban-icon-filter-btn{width:28px;height:28px;border:none;background:#f5f7fa;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;color:#666;transition:all .2s}.kanban-icon-filter-btn:hover{background:#e8e8e8}.kanban-filter-dropdown{position:absolute;top:100%;left:0;background:#fff;border-radius:8px;box-shadow:0 4px 16px #0000001f;min-width:120px;z-index:60;display:none;padding:4px 0}.kanban-filter-dropdown.show{display:block}.kanban-filter-option{padding:8px 16px;font-size:13px;cursor:pointer;color:#666;transition:all .2s}.kanban-filter-option:hover{background:#f5f7fa;color:#333}.kanban-filter-option.selected{color:var(--c-brand);font-weight:600;background:var(--c-brand-bg)}.kanban-filter-separator{height:1px;background:#f0f0f0;margin:2px 0}.kanban-filter-clear{color:var(--c-error)}.locked-overlay-hint{text-align:center;padding:12px;color:var(--c-purple);font-size:12px}.gantt-container{display:flex;border:1px solid #e8e8e8;border-radius:8px;overflow:hidden}.gantt-left{min-width:180px;border-right:1px solid #e8e8e8;background:#fafafa}.gantt-right{flex:1;overflow-x:auto}.gantt-date-header{box-shadow:0 0 4px #0000000f}.gantt-holiday-dot{transition:transform .15s ease}.gantt-holiday-dot:hover{transform:scale(2.2)}.gantt-header-cell{padding:12px 16px;font-size:13px;font-weight:600;border-bottom:1px solid #e8e8e8;background:#fafafa}.gantt-row-cell{padding:10px 16px;display:flex;align-items:center;gap:8px;border-bottom:1px solid #f0f0f0;font-size:13px}.gantt-row-selected{background:var(--c-info-bg);border-left:3px solid var(--c-info);padding-left:13px}.gantt-conflict-badge{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--c-warning);color:#fff;font-size:10px;margin-left:4px;flex-shrink:0;animation:conflictPulse 1.5s ease-in-out infinite}@keyframes conflictPulse{0%,to{opacity:1}50%{opacity:.5}}.gantt-row{position:relative;height:42px;border-bottom:1px solid #f0f0f0}.gantt-bar{position:absolute;top:6px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff;cursor:pointer}.gantt-clip{position:absolute;top:50%;transform:translateY(-50%);font-size:12px;font-weight:700;line-height:1;color:#fffffff2;pointer-events:none;z-index:2}.gantt-clip-left{left:3px}.gantt-clip-right{right:3px}.gantt-process{margin-right:6px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-dates{font-size:10px;opacity:.85;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-bar.orange{background:linear-gradient(135deg,var(--c-warning),var(--c-warning-active))}.gantt-bar.blue{background:linear-gradient(135deg,var(--c-info),var(--c-info-active))}.gantt-bar.purple{background:linear-gradient(135deg,var(--c-purple),var(--c-purple-active))}.gantt-bar.green{background:linear-gradient(135deg,var(--c-brand),var(--c-brand-hover))}.gantt-bar.red{background:linear-gradient(135deg,var(--c-error),var(--c-error-deep))}.gantt-today-line{position:absolute;top:0;bottom:0;width:2px;background:var(--c-error);z-index:10}.gantt-popover-detail{animation:ganttFadeIn .15s ease}@keyframes ganttFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.gantt-bar:hover{filter:brightness(1.15);transform:scaleY(1.15);transition:all .15s ease;box-shadow:0 2px 8px #0003;z-index:5}.gantt-bar-draggable{cursor:grab}.gantt-bar-draggable:active{cursor:grabbing}.gantt-bar-dragging{cursor:grabbing!important;filter:brightness(.9)!important;box-shadow:0 4px 16px #0000004d!important;z-index:20!important;transition:none!important}.gantt-resize-handle{position:absolute;top:0;height:100%;width:6px;cursor:ew-resize;z-index:6;transition:background .15s}.gantt-resize-left{left:0;border-radius:6px 0 0 6px}.gantt-resize-right{right:0;border-radius:0 6px 6px 0}.gantt-resize-handle:hover{background:#ffffff73}.gantt-resize-handle:active{background:#ffffffa6}.gantt-drag-hint{position:absolute;top:-22px;left:50%;transform:translate(-50%);font-size:9px;color:#fff;background:#000000b3;padding:2px 8px;border-radius:4px;white-space:nowrap;pointer-events:none}.gantt-right::-webkit-scrollbar{height:8px}.gantt-right::-webkit-scrollbar-track{background:#f0f0f0;border-radius:4px}.gantt-right::-webkit-scrollbar-thumb{background:silver;border-radius:4px}.gantt-right::-webkit-scrollbar-thumb:hover{background:#999}.gantt-modal-maximized .ant-modal-wrap{overflow:hidden}.gantt-modal-maximized .ant-modal{position:fixed!important;margin:0!important;padding-bottom:0!important;max-width:none!important;width:auto!important}.gantt-modal-maximized .ant-modal-content{border-radius:8px;display:flex;flex-direction:column;height:100%}.gantt-modal-maximized .ant-modal-header{border-radius:8px 8px 0 0;flex-shrink:0}.gantt-modal-maximized .ant-modal-body{flex:1;overflow:auto;padding:16px}.ant-modal-close:has(.gantt-close-area){width:auto!important;right:32px!important}.gantt-maximize-btn:hover{background:transparent}.ant-modal-close:has(.gantt-close-area):hover{background:transparent}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;flex-wrap:wrap;gap:12px}.page-header h1{font-size:20px;font-weight:600;margin:0}.page-header-actions{display:flex;gap:10px;flex-wrap:wrap}.filter-bar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap;padding:12px 16px;background:#fff;border-radius:8px}.filter-group{display:flex;align-items:center;gap:8px}.filter-label{font-size:13px;color:#666;white-space:nowrap}.progress-bar{background:#f0f0f0;border-radius:4px;overflow:hidden;height:6px}.progress-bar-fill{height:100%;border-radius:4px}.progress-bar-fill.green{background:var(--c-success)}.progress-bar-fill.blue{background:var(--c-info)}.progress-bar-fill.orange{background:var(--c-warning)}.status-tag{display:inline-block;padding:4px 12px;border-radius:4px;font-size:12px;font-weight:500}.status-tag.confirming{background:var(--c-brand-bg);color:var(--c-brand)}.status-tag.producing{background:var(--c-info-bg);color:var(--c-info)}.status-tag.pending-delivery{background:var(--c-warning-bg);color:var(--c-warning)}.status-tag.completed{background:var(--c-success-bg);color:var(--c-success)}.status-tag.cancelled{background:#f5f5f5;color:#999}button{font-family:inherit}button:not(:disabled){cursor:pointer}.btn{display:inline-flex;align-items:center;gap:6px;padding:6px 15px;border-radius:6px;font-size:14px;border:1px solid #d9d9d9;background:#fff;color:#333;cursor:pointer;transition:all .2s;line-height:1.4;white-space:nowrap}.btn:hover{border-color:var(--c-brand);color:var(--c-brand)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-default{background:#fff;color:#333;border:1px solid #d9d9d9}.btn-default:hover{border-color:var(--c-brand);color:var(--c-brand)}.btn-primary{background:var(--c-brand);color:#fff;border:1px solid var(--c-brand)}.btn-primary:hover{background:var(--c-brand-hover);border-color:var(--c-brand-hover);color:#fff}.btn-primary:disabled{background:#91d5a7;border-color:#91d5a7;color:#fff}.action-btn{padding:4px 12px;border:1px solid #d9d9d9;background:#fff;border-radius:4px;font-size:12px;cursor:pointer;color:#666;transition:all .2s}.action-btn:hover{color:var(--c-brand);border-color:var(--c-brand)}.action-btn.danger{color:var(--c-error)}.action-btn.danger:hover{background:var(--c-error-bg)}.quick-actions{background:#fff;border-radius:10px;padding:16px;margin-bottom:20px;border:1px solid #f0f0f0}.quick-actions-title{font-size:14px;font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:6px}.quick-actions-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.quick-action-item{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px;background:#f5f7fa;border-radius:8px;cursor:pointer;transition:all .2s}.quick-action-item:hover{background:var(--c-brand-bg)}.quick-action-item i{font-size:20px;color:var(--c-brand)}.print-device-card{transition:all .2s}.print-device-card:hover{transform:translate(2px);box-shadow:0 2px 8px #0000000f}.print-device-card.connected{border-color:var(--c-brand);background:#f0fdf4}.print-preview-box::-webkit-scrollbar{width:4px}.print-preview-box::-webkit-scrollbar-thumb{background:#d9d9d9;border-radius:2px}.salary-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}.salary-summary-card{background:#fff;border-radius:8px;padding:12px 14px;text-align:center;border-top:3px solid var(--c-brand)}.salary-summary-card.blue{border-top-color:var(--c-info)}.salary-summary-card.orange{border-top-color:var(--c-warning)}.salary-summary-label{font-size:12px;color:#999;margin-bottom:4px}.salary-summary-value{font-size:20px;font-weight:700;color:#1a1a1a;margin-bottom:2px}.salary-summary-desc{font-size:11px;color:var(--c-brand)}.report-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px}.report-card{background:#fff;border-radius:10px;padding:16px}.report-card.full-width{grid-column:1 / -1}.report-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.report-card-title{font-size:14px;font-weight:600;display:flex;align-items:center;gap:6px;margin:0}.chart-container{height:260px}.chart-container.small{height:220px}.report-tabs{display:flex;gap:0;margin-bottom:16px;background:#f5f7fa;border-radius:8px;padding:4px}.report-tab{padding:8px 20px;border:none;background:transparent;font-size:13px;cursor:pointer;border-radius:6px;color:#666;transition:all .2s}.report-tab.active{background:#fff;color:var(--c-brand);font-weight:600;box-shadow:0 1px 3px #0000000f}.print-tabs{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.print-tab{display:flex;align-items:center;gap:6px;padding:10px 16px;border-radius:8px;cursor:pointer;transition:all .2s;border:1px solid #e8e8e8;background:#fff;font-size:13px}.print-tab.active{background:var(--c-brand-bg);border-color:var(--c-brand);color:var(--c-brand);font-weight:600}.print-tab .tab-count{background:#f0f0f0;padding:1px 7px;border-radius:8px;font-size:11px}.search-box{display:flex;align-items:center;background:#f5f7fa;border-radius:8px;padding:6px 12px;gap:6px}.search-box input{border:none;background:transparent;outline:none;font-size:13px;min-width:140px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center;color:#999}.empty-state i{font-size:48px;color:#d9d9d9;margin-bottom:16px}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 37%,#f0f0f0 63%);background-size:400% 100%;animation:skeleton-loading 1.4s ease infinite}@media print{.no-print{display:none!important}body{-webkit-print-color-adjust:exact;print-color-adjust:exact}}@keyframes highlight-new{0%{background-color:var(--c-info-bg)}to{background-color:transparent}}.row-highlight{animation:highlight-new 3s ease-out}.data-table-wrapper{background:#fff;border-radius:8px;border:1px solid #f0f0f0;overflow:hidden}.cfg-table .ant-table-pagination.ant-pagination{margin-inline-end:16px}.order-no-link{font-weight:500;color:var(--c-info);font-size:inherit}.order-no-link:hover{color:var(--c-info-active)}.order-batch-bar{display:flex;align-items:center;gap:10px;margin-bottom:10px;padding:8px 14px;background:var(--c-info-bg);border-radius:6px;border:1px solid var(--c-info-border)}.order-batch-cancel{font-size:12px;color:#999;cursor:pointer}.order-batch-cancel:hover{color:var(--c-info)}.order-detail-content{padding:0 4px}.order-detail-content .drawer-section{margin-bottom:4px}.order-detail-content .drawer-section-title{font-size:13px;margin-bottom:8px}.order-list-page .page-header{margin-bottom:14px}.order-kpi-row{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:10px}.drawer-overlay{position:fixed;inset:0;background:#00000080;z-index:1000;opacity:0;visibility:hidden;transition:all .3s ease}.drawer-overlay.active{opacity:1;visibility:visible}.drawer-right{position:fixed;top:0;right:-1200px;width:1200px;max-width:90vw;height:100vh;background:#fff;box-shadow:-4px 0 20px #00000026;z-index:1001;display:flex;flex-direction:column;transition:right .3s ease}.drawer-right.active{right:0}.drawer-header{padding:18px 24px;border-bottom:1px solid #e8e8e8;display:flex;align-items:center;justify-content:space-between;background:#fafafa;flex-shrink:0}.drawer-header h3{font-size:16px;font-weight:600;margin:0}.drawer-close{border:none;background:none;font-size:24px;color:#999;cursor:pointer;padding:0;line-height:1}.drawer-close:hover{color:#333}.drawer-body{padding:24px;overflow-y:auto;flex:1}.drawer-footer{padding:16px 24px;border-top:1px solid #e8e8e8;display:flex;justify-content:flex-end;gap:12px;background:#fafafa;flex-shrink:0}.drawer-section{margin-bottom:24px}.drawer-section-title{font-size:14px;font-weight:600;color:#1a1a1a;padding-bottom:12px;margin-bottom:16px;border-bottom:2px solid var(--c-brand);display:flex;align-items:center;gap:8px}.drawer-section-title i{color:var(--c-brand)}.drawer-section .form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.drawer-section .form-grid.three-col{grid-template-columns:repeat(3,1fr)}.drawer-section .form-group{margin-bottom:0}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.form-group{margin-bottom:16px}.form-label{display:block;font-size:13px;font-weight:500;color:#333;margin-bottom:6px}.form-label .required{color:var(--c-error)}.form-input,.form-select,.form-textarea{width:100%;padding:10px 12px;border:1px solid #e8e8e8;border-radius:8px;font-size:14px;color:#333;outline:none;transition:all .2s;height:38px;box-sizing:border-box;font-family:inherit}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--c-brand);box-shadow:0 0 0 3px #194fbf1f}.form-textarea{resize:none;min-height:80px;height:auto}.form-select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23999' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.order-schedule-status{background:linear-gradient(135deg,var(--c-success-bg) 0%,var(--c-cyan-bg) 100%);border:1px solid var(--c-success-border);border-radius:10px;padding:16px;margin-bottom:20px}.order-schedule-status h4{margin:0 0 12px;font-size:14px;color:#333}.schedule-stats{display:flex;gap:20px}.schedule-stat{flex:1;text-align:center}.schedule-stat-value{font-size:24px;font-weight:700;color:var(--c-brand)}.schedule-stat-value.pending{color:var(--c-warning)}.schedule-stat-label{font-size:12px;color:#666;margin-top:4px}.schedule-progress{height:6px;background:#f0f0f0;border-radius:3px;margin-top:12px;overflow:hidden}.schedule-progress-bar{height:100%;background:linear-gradient(90deg,var(--c-brand),var(--c-success));border-radius:3px;transition:width .3s ease}.overdue-task-list{max-height:280px;overflow-y:auto;border:1px solid #f0f0f0;border-radius:8px;background:#fafafa}.overdue-task-item{display:flex;align-items:center;padding:12px 16px;border-bottom:1px solid #f0f0f0;gap:12px;transition:background .2s}.overdue-task-item:last-child{border-bottom:none}.overdue-task-item:hover{background:#fff}.overdue-task-item.selected{background:var(--c-success-bg);border-left:3px solid var(--c-brand)}.overdue-task-checkbox{width:18px;height:18px;cursor:pointer;accent-color:var(--c-brand)}.overdue-task-info{flex:1}.overdue-task-title{font-size:13px;color:#333;font-weight:500}.overdue-task-meta{font-size:11px;color:#999;margin-top:3px;display:flex;gap:12px;align-items:center}.overdue-task-qty{font-size:13px;color:var(--c-warning);font-weight:600}.overdue-task-add-btn{padding:4px 12px;border:1px solid var(--c-brand);background:#fff;color:var(--c-brand);border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s;white-space:nowrap}.overdue-task-add-btn:hover{background:var(--c-brand);color:#fff}.week-workers-status{display:flex;flex-direction:column;gap:10px;max-height:150px;overflow-y:auto}.week-worker-item{display:flex;align-items:center;padding:10px 12px;background:#fafafa;border-radius:8px;gap:12px;transition:all .2s}.week-worker-item:hover{background:#f0f7ff}.week-worker-avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:600;flex-shrink:0}.week-worker-info{flex:1}.week-worker-name{font-size:13px;font-weight:500;color:#333}.week-worker-tasks{font-size:11px;color:#999;margin-top:2px}.week-worker-status-tag{font-size:11px;padding:2px 8px;border-radius:4px;flex-shrink:0}.week-worker-status-tag.busy{background:var(--c-warning-bg);color:var(--c-warning)}.week-worker-status-tag.overtime{background:var(--c-error-bg);color:var(--c-error)}.product-source-tabs{display:flex;gap:8px;margin-bottom:12px;padding:4px;background:#f5f5f5;border-radius:8px}.product-source-tab{flex:1;padding:10px 16px;border:none;background:transparent;border-radius:6px;font-size:13px;color:#666;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:6px}.product-source-tab:hover{background:#e6e6e6}.product-source-tab.active{background:#fff;color:var(--c-info);font-weight:500;box-shadow:0 1px 4px #0000001a}.product-multi-select{display:flex;flex-wrap:wrap;gap:8px}.product-checkbox-item{display:flex;align-items:center;padding:8px 14px;background:#fafafa;border:1px solid #e8e8e8;border-radius:8px;cursor:pointer;transition:all .2s;gap:8px}.product-checkbox-item:hover{background:var(--c-info-bg);border-color:var(--c-info-border)}.product-checkbox-item.selected{background:var(--c-info-bg);border-color:var(--c-info)}.product-checkbox-item input[type=checkbox]{display:none}.product-check-box{width:16px;height:16px;border:2px solid #d9d9d9;border-radius:3px;transition:all .15s;display:flex;align-items:center;justify-content:center}.product-checkbox-item.selected .product-check-box{background:var(--c-info);border-color:var(--c-info)}.product-checkbox-item.selected .product-check-box:after{content:"✓";color:#fff;font-size:11px;font-weight:700}.product-check-label{font-size:13px;color:#333}.process-worker-list{display:flex;flex-direction:column;gap:12px}.process-worker-item{background:#fafafa;border:1px solid #f0f0f0;border-radius:8px;padding:14px}.process-worker-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.process-worker-name{font-size:14px;font-weight:600;color:#1a1a1a}.process-worker-duration{font-size:11px;color:var(--c-info)}.process-worker-content{display:flex;gap:10px;flex-wrap:wrap}.worker-chip{display:flex;align-items:center;padding:6px 12px;background:#fff;border:1px solid #e8e8e8;border-radius:16px;gap:6px;cursor:pointer;transition:all .2s}.worker-chip:hover{border-color:var(--c-brand);background:var(--c-success-bg)}.worker-chip.selected{background:var(--c-brand);border-color:var(--c-brand);color:#fff}.worker-chip-avatar{width:20px;height:20px;border-radius:50%;background:var(--c-info);color:#fff;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600}.worker-chip.selected .worker-chip-avatar{background:#fff;color:var(--c-brand)}.worker-chip-name{font-size:12px}.task-type-selector{display:flex;gap:12px}.task-type-option{flex:1;cursor:pointer}.task-type-option input[type=radio]{display:none}.task-type-card{display:flex;flex-direction:column;align-items:center;padding:16px 12px;background:#fafafa;border:1px solid #e8e8e8;border-radius:10px;transition:all .2s;gap:6px}.task-type-card i{font-size:24px;color:#999}.task-type-card span{font-size:13px;font-weight:600;color:#333}.task-type-card small{font-size:11px;color:#999}.task-type-option:hover .task-type-card{border-color:var(--c-info-border);background:var(--c-info-bg)}.task-type-option:hover .task-type-card i{color:var(--c-info)}.task-type-option input:checked+.task-type-card{border-color:var(--c-info);background:var(--c-info-bg)}.task-type-option input:checked+.task-type-card i{color:var(--c-info)}.task-type-option input:checked+.task-type-card span{color:var(--c-info)}.order-detail-expand{padding:16px 24px;background:#fafbfc;border-top:1px solid #e8e8e8}.ring-progress-wrap{display:flex;align-items:center;gap:20px}.ring-progress-circle{position:relative;width:80px;height:80px;flex-shrink:0}.ring-progress-circle svg{transform:rotate(-90deg)}.ring-progress-circle .ring-bg{fill:none;stroke:#f0f0f0;stroke-width:8}.ring-progress-circle .ring-fill{fill:none;stroke-width:8;stroke-linecap:round;transition:stroke-dashoffset .6s ease}.ring-progress-circle .ring-text{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:var(--c-brand);line-height:1.2}.ring-progress-circle .ring-text small{font-size:11px;font-weight:400;color:#999}.batch-card{background:#fff;border:1px solid #e8e8e8;border-radius:8px;padding:14px;margin-bottom:10px;cursor:pointer;transition:all .2s;position:relative}.batch-card:hover{box-shadow:0 2px 8px #0000000f;border-color:var(--c-brand)}.batch-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.batch-card-title{font-size:13px;font-weight:600;color:#1a1a1a;display:flex;align-items:center;gap:8px}.batch-card-meta{font-size:12px;color:#999;display:flex;gap:16px;margin-bottom:10px}.batch-status-tag{font-size:11px;padding:2px 8px;border-radius:4px;font-weight:500}.batch-status-tag.done{background:var(--c-success-bg);color:var(--c-success)}.batch-status-tag.doing{background:var(--c-info-bg);color:var(--c-info)}.batch-status-tag.pending{background:#f5f5f5;color:#999}.expand-arrow{display:inline-block;transition:transform .2s;font-size:12px;color:#999}.expand-arrow.expanded{transform:rotate(90deg)}.batch-expand-content{margin-top:10px;padding-top:12px;border-top:1px dashed #e8e8e8}.bom-item{display:flex;align-items:center;gap:12px;padding:8px 0;font-size:12px;border-bottom:1px solid #f5f5f5}.bom-item:last-child{border-bottom:none}.bom-item-name{width:90px;color:#333;font-weight:500;flex-shrink:0}.bom-item-qty{color:#999;font-size:11px}.bom-progress-bar{flex:1;height:5px;background:#f0f0f0;border-radius:3px;overflow:hidden;max-width:200px}.bom-progress-fill{height:100%;border-radius:3px;transition:width .3s}.process-step{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #f5f5f5;font-size:12px}.process-step:last-child{border-bottom:none}.process-step-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.process-step-dot.done{background:var(--c-success)}.process-step-dot.doing{background:var(--c-info)}.process-step-dot.pending{background:#d9d9d9}.process-step-name{width:50px;flex-shrink:0;color:#333;font-weight:500}.process-step-connector{width:20px;height:2px;border-top:2px dashed #d9d9d9;flex-shrink:0}.process-step-info{flex:1;display:flex;align-items:center;gap:12px}.process-step-assignee{color:#666}.process-step-qty{color:var(--c-info);font-weight:600}.order-detail-drawer .order-detail-section{margin-bottom:20px}.order-product-table{width:100%;border-collapse:collapse;font-size:13px}.order-product-table th{text-align:left;padding:8px 10px;background:#fafafa;border-bottom:2px solid #e8e8e8;font-weight:600;color:#333;font-size:12px}.order-product-table td{padding:12px 10px;border-bottom:1px solid #f0f0f0}.order-product-table .qty-input{width:80px;padding:8px;border:1px solid #e8e8e8;border-radius:6px;font-size:13px;text-align:center;outline:none}.order-product-table .qty-input:focus{border-color:var(--c-brand)}.order-product-table.compact{table-layout:fixed}.order-product-table.compact td{padding:12px 2px}.order-product-table.compact .qty-input{width:100%}.order-product-table .add-row-btn{color:var(--c-brand);cursor:pointer;font-size:12px;padding:6px 0;display:inline-flex;align-items:center;gap:4px}.order-product-table .add-row-btn:hover{opacity:.8}.order-product-table .remove-row-btn{background:none;border:none;color:var(--c-error);cursor:pointer;font-size:14px;padding:2px 6px}.order-total-amount{font-size:16px;font-weight:700;color:var(--c-brand)}.order-filter-select-proto{padding:6px 12px;border-radius:6px;border:1px solid #d9d9d9;font-size:13px;outline:none;cursor:pointer;background:#fff}.order-filter-select-proto:focus{border-color:var(--c-brand)}.tab-bar-scroll::-webkit-scrollbar{display:none}.report-row-overdue>td{background:#fff2f0!important}.report-row-overdue>td:first-child{box-shadow:inset 3px 0 0 var(--c-error)}.report-row-done>td{background:#fcfff5}.ant-picker-week-panel .ant-picker-cell-week{color:#fff;font-size:12px;font-weight:500;opacity:.9;background:var(--c-warning)}.kanban-column.pending-collapsed .kanban-column-header{flex-wrap:nowrap}.kanban-column.pending-collapsed .kanban-week-title{white-space:nowrap}.kanban-column.pending-collapsed .kanban-actions{margin-left:auto}.kanban-column.pending-collapsed .kanban-actions .kanban-icon-btn{display:inline-flex;align-items:center;justify-content:center}th.ant-table-column-sort:hover .ant-table-column-sorter-up:not(.active),th.ant-table-column-sort:hover .ant-table-column-sorter-down:not(.active){color:#0000004a!important}.page-tabs-card{background:#fff;border-radius:8px;padding:0 16px 16px}.page-tabs-fill{display:flex;flex-direction:column}.page-tabs-fill .ant-tabs-content-holder{flex:1;min-height:0;overflow:auto}.table-fill-height,.table-fill-height .ant-spin-nested-loading,.table-fill-height .ant-spin-container,.table-fill-height .ant-table,.table-fill-height .ant-table-container{display:flex;flex:1;min-height:0;flex-direction:column}.table-fill-height .ant-table-body{flex:1;max-height:unset!important}
