.factory-calendar { font-size: 15px; @at-root .factory-calendar-dialog { border-radius: 6px; overflow: hidden; .el-dialog__header { padding: 16px 24px; border-bottom: 1px solid #edf1f7; background: linear-gradient(180deg, #ffffff, #f8fbff); } .el-dialog__title { color: #1f2d3d; font-size: 18px; font-weight: 600; } .el-dialog__headerbtn { top: 18px; } .el-dialog__body { max-height: calc(100vh - 178px); padding: 18px 28px 8px; background: #f6f8fb; overflow-y: auto; } .el-dialog__footer { padding: 12px 28px 16px; border-top: 1px solid #edf1f7; background: #ffffff; } .el-form-box { padding: 0; } .el-form-item { margin-bottom: 10px; } .el-form-item__label { color: #5f6f85; font-weight: 600; } .el-input__inner, .el-textarea__inner { border-color: #dce3ec; border-radius: 6px; background-color: #ffffff; } .el-input__inner { height: 36px; line-height: 36px; } .el-select .el-tag { height: 26px; margin: 3px 0 3px 6px; border-color: #dce3ec; border-radius: 5px; background: #f4f7fb; line-height: 24px; } } .el-form-item__label, .el-input__inner, .el-button, .el-tabs__item, .el-dialog, .el-drawer { font-size: 15px; } .el-table { font-size: 14px; th.el-table__cell, td.el-table__cell, .cell { font-size: 14px; } .el-link { font-size: 13px; } .el-tag { font-size: 12px; } } @at-root .factory-calendar-loading { .el-loading-spinner { .el-icon-loading { color: #1677ff; font-size: 30px; } .el-loading-text { color: #1f2d3d; font-size: 16px; font-weight: 600; margin-top: 12px; } } } @at-root .adjust-detail-dialog { border-radius: 8px; overflow: hidden; .el-dialog__header { padding: 22px 30px 18px; border-bottom: 1px solid #edf1f7; background: linear-gradient(180deg, #ffffff, #f8fbff); } .el-dialog__title { color: #1f2d3d; font-size: 20px; font-weight: 700; } .el-dialog__body { max-height: calc(100vh - 186px); padding: 22px 30px; background: linear-gradient(135deg, rgba(64, 158, 255, 0.05), transparent 42%), #f7faff; overflow-y: auto; } .el-dialog__footer { padding: 14px 30px 18px; border-top: 1px solid #edf1f7; background: #ffffff; } .adjust-detail-view { color: #1f2d3d; font-size: 15px; } .adjust-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; } .adjust-detail-field, .adjust-data-card, .adjust-detail-section { border: 1px solid #dbe8f5; border-radius: 8px; background: linear-gradient(135deg, rgba(255, 255, 255, 0.96), rgba(239, 247, 255, 0.86)), #ffffff; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.95), 0 8px 18px rgba(32, 89, 148, 0.06); } .adjust-detail-field { min-height: 72px; padding: 14px 18px; } .adjust-detail-field.is-wide { display: flex; min-height: 78px; grid-column: 1 / -1; justify-content: center; flex-direction: column; border-color: #c8def4; background: linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(233, 246, 255, 0.9)), #ffffff; } .adjust-detail-field span, .adjust-data-card span, .section-title { display: block; margin-bottom: 6px; color: #7a8798; font-size: 14px; line-height: 20px; font-weight: 600; } .adjust-detail-field strong, .adjust-data-card strong { display: block; color: #25364a; font-size: 16px; line-height: 24px; font-weight: 700; word-break: break-word; } .adjust-period-value { display: inline-flex; width: fit-content; max-width: 100%; align-items: center; padding: 6px 12px; border: 1px solid rgba(64, 158, 255, 0.16); border-radius: 6px; background: rgba(255, 255, 255, 0.72); color: #1f3a5f; font-size: 17px; line-height: 24px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9); white-space: normal; } .adjust-detail-field .el-tag { height: 28px; padding: 0 12px; font-size: 14px; line-height: 26px; } .adjust-compare { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 14px; } .adjust-data-card { position: relative; min-height: 88px; padding: 14px 18px; overflow: hidden; } .adjust-data-card::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; } .adjust-data-card.before::before { background: #909399; } .adjust-data-card.after::before { background: #409eff; } .adjust-detail-section { margin-top: 12px; padding: 15px 18px; } .adjust-detail-section p { margin: 0; color: #25364a; font-size: 16px; line-height: 26px; word-break: break-word; } .approve-timeline { display: flex; flex-direction: column; gap: 12px; } .approve-node { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 10px; } .node-dot { width: 10px; height: 10px; margin-top: 9px; border: 2px solid #ffffff; border-radius: 50%; background: #67c23a; box-shadow: 0 0 0 4px rgba(103, 194, 58, 0.14); } .node-content { padding: 10px 12px; border: 1px solid #dbe8f5; border-radius: 7px; background: rgba(255, 255, 255, 0.78); } .node-content > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .node-content strong { color: #25364a; font-size: 16px; line-height: 24px; } .node-content span, .node-content em { color: #7a8798; font-size: 14px; line-height: 20px; font-style: normal; } .node-content p { margin: 5px 0 2px; color: #425466; font-size: 15px; line-height: 24px; } .approve-empty { padding: 18px; border: 1px dashed #cfdceb; border-radius: 8px; color: #8a97a8; font-size: 15px; line-height: 22px; text-align: center; background: rgba(255, 255, 255, 0.62); } @media (max-width: 900px) { .adjust-detail-grid, .adjust-compare { grid-template-columns: 1fr; } } } .factory-calendar-card { min-height: calc(100vh - 112px); } .page-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; } .page-title { font-size: 22px; font-weight: 600; color: #1f2d3d; line-height: 32px; } .page-subtitle { font-size: 15px; color: #8c8c8c; margin-top: 2px; } .header-actions, .tab-actions { display: flex; align-items: center; gap: 8px; } .toolbar-form, .view-toolbar { padding: 14px 16px 2px; margin-bottom: 12px; background: linear-gradient(180deg, #ffffff, #f8fbff); border: 1px solid #e4edf7; border-radius: 6px; box-shadow: 0 6px 16px rgba(31, 45, 61, 0.04); } .range-tag { margin: 2px 4px 2px 0; } .stat-row { display: grid; grid-template-columns: repeat(6, minmax(120px, 1fr)); gap: 12px; margin-bottom: 12px; } .stat-card { min-height: 72px; padding: 12px 14px; border: 1px solid #e4edf7; border-radius: 6px; background: linear-gradient(180deg, #ffffff, #f8fbff); display: flex; align-items: center; justify-content: space-between; box-shadow: 0 8px 18px rgba(31, 45, 61, 0.05); span { color: #606266; font-size: 14px; } strong { font-size: 24px; line-height: 30px; color: #303133; } } .calendar-layout { display: grid; grid-template-columns: minmax(0, 1fr) 230px; gap: 14px; } .calendar-panel, .legend-panel, .chart-card { border: 1px solid #e4edf7; border-radius: 6px; background: #fff; box-shadow: 0 10px 24px rgba(31, 45, 61, 0.05); overflow: hidden; } .calendar-view-title { height: 42px; line-height: 42px; padding: 0 14px; border-bottom: 1px solid #e4edf7; color: #303133; font-weight: 600; background: linear-gradient(90deg, #f4f9ff, #ffffff); } .calendar-week { display: grid; grid-template-columns: repeat(7, 1fr); border-bottom: 1px solid #e4edf7; span { height: 36px; line-height: 36px; text-align: center; color: #5f6f85; font-weight: 600; background: #fbfdff; } } .calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(96px, 1fr)); min-height: 520px; &.view-day { grid-template-columns: 1fr; min-height: 260px; .calendar-cell { min-height: 240px; } .day-body { min-height: 140px; } } &.view-week { grid-template-columns: repeat(7, minmax(110px, 1fr)); min-height: 240px; .calendar-cell { min-height: 220px; } } &.view-quarter { grid-template-columns: repeat(13, minmax(68px, 1fr)); min-height: 520px; .calendar-cell { min-height: 80px; padding: 6px; } .day-body { min-height: 30px; margin: 4px 0; } .period-pill { font-size: 11px; line-height: 18px; } } } .calendar-cell { min-height: 104px; padding: 8px; border-right: 1px solid #e9eef5; border-bottom: 1px solid #e9eef5; cursor: pointer; background: #fff; transition: box-shadow 0.2s, transform 0.2s, background 0.2s; position: relative; overflow: hidden; &::before { content: ''; position: absolute; left: 0; top: 0; width: 3px; height: 100%; background: transparent; } &:hover { z-index: 1; box-shadow: inset 0 0 0 1px #409eff, 0 8px 18px rgba(64, 158, 255, 0.12); } &.empty { cursor: default; background: #fafafa; } &.muted { opacity: 0.22; } &.disabled-calendar { cursor: not-allowed; color: #c0c4cc; background: #f5f7fa; opacity: 0.72; } &.scheduled { background: #ecf5ff; &::before { background: #409eff; } } &.idle { background: #fff; } &.rest { background: #f2f3f5; &::before { background: #a8abb2; } } &.holiday { background: #fff7e8; &::before { background: #f59e0b; } } &.maintenance { background: #fff3e6; &::before { background: #e6a23c; } } &.temp { background: #f5efff; &::before { background: #9254de; } } &.conflict { background: #fef0f0; animation: conflictFlash 1.4s infinite; &::before { background: #f56c6c; } } } .day-head, .day-foot { display: flex; align-items: center; justify-content: space-between; min-height: 20px; } .day-head span { font-weight: 600; color: #303133; } .temp-icon { color: #9254de; } .holiday-tag { height: 20px; padding: 0 6px; border-color: #f7c873; background: #fff3d6; color: #b76e00; line-height: 18px; } .day-body { min-height: 46px; margin: 6px 0; } .period-pill { display: block; width: fit-content; max-width: 100%; margin-bottom: 3px; padding: 1px 6px; border-radius: 4px; background: rgba(255, 255, 255, 0.72); border: 1px solid rgba(144, 147, 153, 0.16); font-size: 12px; color: #606266; line-height: 18px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .conflict-text { color: #f56c6c; font-weight: 600; } .legend-panel { padding: 14px; } .legend-title, .chart-title, .drawer-title { font-weight: 600; color: #303133; margin-bottom: 12px; } .legend-item { display: flex; gap: 10px; margin-bottom: 14px; strong { color: #303133; } p { margin: 3px 0 0; color: #909399; font-size: 12px; line-height: 18px; } } .legend-dot { width: 14px; height: 14px; margin-top: 3px; border: 1px solid #dcdfe6; border-radius: 2px; &.scheduled { background: #409eff; } &.idle { background: #fff; } &.rest { background: #c0c4cc; } &.holiday { background: #f59e0b; } &.maintenance { background: #e6a23c; } &.temp { background: #9254de; } &.conflict { background: #f56c6c; } } .range-editor { border: 1px solid #ebeef5; border-radius: 4px; padding: 10px; } .range-row, .holiday-rule-row, .inline-time { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; } .rest-rule-editor, .legal-holiday-section, .holiday-rule-editor { border: 1px solid #dfe8f3; border-radius: 6px; padding: 14px 16px; background: linear-gradient(180deg, #ffffff, #f8fbff); box-shadow: 0 6px 16px rgba(31, 45, 61, 0.04); } .custom-rest-weekdays { margin-top: 10px; } .legal-holiday-section { min-height: 56px; } .legal-holiday-title { margin-bottom: 4px; font-weight: 600; color: #1f2d3d; } .legal-holiday-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; padding-bottom: 12px; border-bottom: 1px solid #edf2f7; } .legal-holiday-desc { margin-top: 2px; color: #909399; font-size: 12px; line-height: 18px; } .legal-holiday-count { flex: 0 0 auto; margin-top: 2px; padding: 5px 10px; border: 1px solid #cfe3ff; border-radius: 6px; background: #eef6ff; color: #1677ff; font-size: 12px; line-height: 18px; font-weight: 600; } .legal-holiday-list { display: flex; flex-direction: column; gap: 10px; max-height: 300px; overflow-y: auto; padding: 2px 6px 2px 0; } .legal-holiday-group { display: grid; grid-template-columns: 118px 1fr; gap: 12px; padding: 12px 14px; border: 1px solid #e3ebf5; border-radius: 6px; background: #ffffff; transition: border-color 0.18s ease, box-shadow 0.18s ease; &:hover { border-color: #bdd7ff; box-shadow: 0 8px 18px rgba(64, 158, 255, 0.08); } } .legal-holiday-group-head { display: flex; flex-direction: column; justify-content: center; gap: 6px; min-width: 0; strong { color: #1f2d3d; font-size: 14px; line-height: 22px; } span { width: fit-content; padding: 2px 8px; border-radius: 12px; background: #f1f5fa; color: #7a8797; font-size: 12px; line-height: 18px; } } .legal-holiday-dates { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; } .legal-holiday-date { display: inline-flex; align-items: center; justify-content: space-between; gap: 10px; min-width: 124px; height: 32px; padding: 0 10px; border: 1px solid #dce3ec; border-radius: 6px; background: #f8fafc; color: #4f5f73; font-size: 12px; cursor: pointer; transition: all 0.18s ease; span { color: #303b4a; font-weight: 600; } em { min-width: 34px; padding: 1px 6px; border-radius: 10px; background: #edf1f7; color: #8a97a8; font-size: 12px; line-height: 18px; text-align: center; font-style: normal; } &:hover { border-color: #409eff; background: #eef6ff; color: #409eff; } &.is-work { border-color: #67c23a; background: #f0f9eb; color: #2f7d18; em { background: #dff2d8; color: #2f7d18; } } } .holiday-rule-row { align-items: flex-start; } .rule-tip { margin-top: 8px; color: #909399; font-size: 12px; line-height: 18px; } .shift-option-code { float: right; color: #909399; font-size: 12px; } .range-separator { color: #909399; } .danger-link { color: #f56c6c; } .drawer-body { padding: 2px 18px 18px; background: #f6f9fc; } .drawer-summary { display: grid; grid-template-columns: 78px 1fr; gap: 14px; margin-bottom: 18px; padding: 16px; border: 1px solid #cfe7ff; border-radius: 8px; background: linear-gradient(135deg, #f2f8ff, #ffffff 72%); box-shadow: 0 10px 24px rgba(64, 158, 255, 0.1); } .summary-date { height: 82px; border-radius: 8px; background: linear-gradient(180deg, #409eff, #1f78e8); color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; box-shadow: 0 10px 20px rgba(64, 158, 255, 0.22); span { font-size: 12px; opacity: 0.82; } strong { font-size: 34px; line-height: 38px; } } .summary-info { min-width: 0; p { margin: 8px 0 10px; color: #606266; line-height: 20px; } } .summary-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: #303133; font-size: 16px; font-weight: 600; } .summary-tags { display: flex; flex-wrap: wrap; gap: 6px; } .drawer-section { margin-bottom: 18px; padding: 16px; border: 1px solid #e4edf7; border-radius: 8px; background: #fff; box-shadow: 0 8px 18px rgba(31, 45, 61, 0.05); } .drawer-title { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; span { position: relative; padding-left: 10px; color: #303133; font-size: 17px; font-weight: 600; &::before { content: ''; position: absolute; left: 0; top: 3px; width: 3px; height: 15px; border-radius: 2px; background: #409eff; } } em { color: #909399; font-size: 14px; font-style: normal; } } .detail-timeline { display: flex; flex-direction: column; gap: 12px; position: relative; } .detail-item { display: grid; grid-template-columns: 126px 1fr; gap: 12px; align-items: stretch; } .detail-time { min-height: 68px; padding: 10px; border: 1px solid #cfe7ff; border-radius: 8px; background: linear-gradient(180deg, #f3f8ff, #ffffff); text-align: center; box-sizing: border-box; display: flex; align-items: center; justify-content: center; strong { color: #1f4e86; font-size: 16px; line-height: 22px; white-space: nowrap; font-variant-numeric: tabular-nums; } } .detail-content { min-height: 68px; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border: 1px solid #edf2f7; border-left: 4px solid #409eff; border-radius: 8px; background: linear-gradient(180deg, #ffffff, #f8fbff); position: relative; &::before { display: none; } strong, span { display: block; } strong { color: #303133; font-size: 16px; line-height: 22px; } span { margin-top: 4px; color: #909399; font-size: 14px; line-height: 20px; } } .detail-meta { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 6px; margin-top: 2px; span { margin-top: 0; padding: 2px 8px; border-radius: 10px; background: #eef5ff; color: #5b6f8f; font-size: 12px; line-height: 20px; } } .plan-list { display: flex; flex-direction: column; gap: 10px; .el-tooltip { display: block; } } .plan-item { display: block; padding: 12px 16px; border: 1px solid #edf2f7; border-radius: 8px; background: linear-gradient(180deg, #ffffff, #f8fbff); border-left: 4px solid #67c23a; } .plan-main { min-width: 0; } .plan-topline { display: grid; grid-template-columns: minmax(0, 1fr) max-content; align-items: center; gap: 12px; margin-bottom: 6px; strong { color: #303133; font-size: 16px; line-height: 22px; text-align: left; } span { margin: 0; color: #8a97a8; font-size: 14px; line-height: 20px; text-align: right; } } .plan-name, .plan-metrics, .plan-topline strong, .plan-topline span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .plan-name { display: block; width: 100%; margin: 0 0 8px; color: #606266; font-size: 14px; line-height: 20px; text-align: left; } .team-queue-plan .queue-name-only { display: flex; align-items: center; gap: 4px; margin: 0; color: #303133; font-size: 16px; font-weight: 600; line-height: 22px; white-space: nowrap; .queue-name-label { flex: 0 0 auto; color: #7a8798; font-size: 13px; font-weight: 500; } .queue-name-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } } .team-queue-item { position: relative; padding: 0; overflow: hidden; border-color: #dfeaf5; border-left: 0; background: linear-gradient(135deg, rgba(64, 158, 255, 0.08), transparent 42%), linear-gradient(180deg, #ffffff, #f7fbff); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9), 0 8px 18px rgba(31, 45, 61, 0.05); transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease; &::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: linear-gradient(180deg, #67c23a, #25b8a8); } &:hover { border-color: #b9dcff; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.94), 0 12px 24px rgba(64, 158, 255, 0.1); transform: translateY(-1px); } } .team-queue-plan { display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; gap: 12px; align-items: center; min-height: 72px; padding: 13px 14px 13px 16px; } .queue-avatar { display: flex; width: 42px; height: 42px; align-items: center; justify-content: center; border: 1px solid #cfe7ff; border-radius: 8px; background: linear-gradient(180deg, #eef7ff, #dff0ff); color: #1677ff; font-size: 20px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.86), 0 8px 14px rgba(64, 158, 255, 0.1); } .queue-info { min-width: 0; } .team-queue-plan .queue-user-name { display: flex; min-width: 0; align-items: center; gap: 4px; margin-top: 7px; color: #6d7f92; font-size: 13px; line-height: 20px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; i { flex: 0 0 auto; color: #67c23a; font-size: 14px; } span { flex: 0 0 auto; } strong { min-width: 0; overflow: hidden; color: #425466; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; } } .queue-badge { flex: 0 0 auto; padding: 3px 9px; border: 1px solid #d9f2d0; border-radius: 12px; background: #f0f9eb; color: #3b8f22; font-size: 12px; line-height: 18px; font-weight: 600; } .plan-metrics { display: flex; align-items: center; justify-content: flex-start; gap: 14px; color: #8a97a8; font-size: 13px; line-height: 20px; font-variant-numeric: tabular-nums; text-align: left; em { font-style: normal; } } .drawer-empty { padding: 22px 0 10px; } .drawer-actions { position: absolute; left: 0; right: 0; bottom: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; padding: 14px 18px 18px; border-top: 1px solid #ebeef5; background: rgba(255, 255, 255, 0.96); box-shadow: 0 -8px 18px rgba(31, 45, 61, 0.06); .el-button { width: 100%; margin-left: 0; } } .visual-stat-page { display: flex; flex-direction: column; gap: 18px; padding: 20px; border-radius: 8px; border: 1px solid rgba(102, 127, 139, 0.34); background: linear-gradient(90deg, rgba(245, 181, 70, 0.08) 0 12px, transparent 12px 24px), repeating-linear-gradient( 135deg, rgba(255, 255, 255, 0.016) 0, rgba(255, 255, 255, 0.016) 1px, transparent 1px, transparent 12px ), linear-gradient(rgba(122, 156, 164, 0.045) 1px, transparent 1px), linear-gradient(90deg, rgba(122, 156, 164, 0.035) 1px, transparent 1px), radial-gradient(circle at 18% 8%, rgba(118, 173, 154, 0.13), transparent 28%), linear-gradient(145deg, #12171d 0%, #17272a 48%, #1a1f28 100%); background-size: 24px 4px, 100% 100%, 30px 30px, 30px 30px, 100% 100%, 100% 100%; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.045), inset 0 32px 70px rgba(255, 255, 255, 0.025), inset 0 -46px 100px rgba(0, 0, 0, 0.22), 0 18px 34px rgba(0, 0, 0, 0.18); position: relative; overflow: hidden; &::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: linear-gradient(90deg, rgba(35, 211, 198, 0.9), rgba(120, 190, 84, 0.9)), repeating-linear-gradient( 90deg, rgba(245, 181, 70, 0.95) 0 20px, rgba(31, 36, 40, 0.95) 20px 34px ); opacity: 0.88; } &::after { content: ''; pointer-events: none; position: absolute; inset: 8px; border: 1px solid rgba(255, 255, 255, 0.035); border-radius: 6px; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2), inset 0 0 40px rgba(78, 180, 178, 0.035); } > *:not(.factory-visual-layer) { position: relative; z-index: 1; } } .factory-visual-layer { pointer-events: none; position: absolute; inset: 0; z-index: 0; opacity: 0.52; overflow: hidden; span { position: absolute; display: block; } } .factory-roof { left: 32px; right: 32px; top: 22px; height: 98px; opacity: 0.18; background: linear-gradient(135deg, transparent 0 24px, rgba(152, 190, 184, 0.35) 25px 27px, transparent 28px), linear-gradient(45deg, transparent 0 24px, rgba(152, 190, 184, 0.22) 25px 27px, transparent 28px); background-size: 56px 56px; border-bottom: 1px solid rgba(152, 190, 184, 0.2); } .factory-stack { bottom: 24px; width: 34px; border: 1px solid rgba(152, 190, 184, 0.16); border-bottom: 0; background: repeating-linear-gradient( 0deg, rgba(255, 255, 255, 0.05) 0 8px, transparent 8px 16px ), linear-gradient(180deg, rgba(152, 190, 184, 0.1), rgba(0, 0, 0, 0.02)); } .stack-one { right: 11%; height: 180px; } .stack-two { right: 6.5%; height: 132px; } .factory-conveyor { left: 24px; right: 24px; bottom: 24px; height: 34px; border-top: 1px solid rgba(152, 190, 184, 0.18); border-bottom: 1px solid rgba(152, 190, 184, 0.12); background: repeating-linear-gradient( 90deg, rgba(245, 181, 70, 0.16) 0 18px, rgba(0, 0, 0, 0.04) 18px 36px ); } .visual-overview { min-height: 118px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 20px 24px; border: 1px solid rgba(144, 168, 171, 0.28); border-radius: 8px; background: linear-gradient(135deg, rgba(255, 255, 255, 0.1), transparent 34%), linear-gradient(90deg, rgba(47, 58, 65, 0.92), rgba(36, 88, 81, 0.82)), linear-gradient(180deg, rgba(242, 244, 235, 0.045), rgba(0, 0, 0, 0.08)), repeating-linear-gradient( 90deg, transparent 0, transparent 46px, rgba(255, 255, 255, 0.035) 47px ); box-shadow: 0 16px 34px rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.12), inset 0 -1px 0 rgba(0, 0, 0, 0.2), inset 0 -28px 60px rgba(0, 0, 0, 0.14); color: #fff; overflow: hidden; position: relative; &::before { content: ''; position: absolute; right: 190px; top: 16px; width: 1px; height: 86px; background: linear-gradient( 180deg, transparent, rgba(125, 211, 230, 0.44), transparent ); } &::after { content: ''; position: absolute; left: 0; bottom: 0; width: 100%; height: 1px; background: linear-gradient(90deg, transparent, rgba(218, 174, 81, 0.45), rgba(64, 222, 201, 0.42), transparent); } } .overview-copy, .overview-health { position: relative; z-index: 1; } .overview-kicker { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; color: rgba(231, 242, 244, 0.78); font-size: 13px; letter-spacing: 0; } .live-dot { width: 8px; height: 8px; border-radius: 50%; background: #36f0b6; box-shadow: 0 0 0 5px rgba(54, 240, 182, 0.12); } .overview-copy { h3 { margin: 0; font-size: 25px; line-height: 34px; font-weight: 600; color: #f3fbff; } p { max-width: 680px; margin: 8px 0 0; color: rgba(224, 238, 240, 0.7); line-height: 22px; } } .overview-health { min-width: 132px; padding: 10px 14px; border-radius: 6px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.025)); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08), inset 0 -12px 24px rgba(0, 0, 0, 0.12); text-align: center; span, em { display: block; color: rgba(255, 255, 255, 0.68); font-style: normal; } strong { display: block; margin: 4px 0; font-size: 42px; line-height: 46px; color: #72f0d1; text-shadow: 0 0 18px rgba(114, 240, 209, 0.24); } } .visual-kpi-row { display: grid; grid-template-columns: repeat(4, minmax(160px, 1fr)); gap: 14px; } .visual-kpi-card { min-height: 112px; padding: 15px 17px 14px; border: 1px solid rgba(130, 154, 155, 0.3); border-radius: 8px; background: linear-gradient(150deg, rgba(255, 255, 255, 0.1), transparent 36%), linear-gradient(145deg, rgba(42, 52, 58, 0.94), rgba(22, 75, 68, 0.82)), linear-gradient(180deg, rgba(216, 218, 207, 0.035), rgba(0, 0, 0, 0.1)), repeating-linear-gradient( 0deg, transparent 0, transparent 30px, rgba(255, 255, 255, 0.026) 31px ); position: relative; overflow: hidden; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), inset 0 -18px 36px rgba(0, 0, 0, 0.12), 0 10px 24px rgba(0, 0, 0, 0.2); transition: transform 0.2s, border-color 0.2s, box-shadow 0.2s; &::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: linear-gradient(90deg, var(--kpi-color), rgba(255, 255, 255, 0)), repeating-linear-gradient( 90deg, rgba(245, 181, 70, 0.8) 0 10px, transparent 10px 18px ); } &::after { content: ''; position: absolute; right: 14px; bottom: 12px; width: 52px; height: 18px; border-right: 1px solid rgba(255, 255, 255, 0.12); border-bottom: 1px solid rgba(255, 255, 255, 0.12); opacity: 0.56; } &:hover { transform: translateY(-2px); border-color: rgba(126, 211, 197, 0.5); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), 0 16px 30px rgba(0, 0, 0, 0.26); } span, small { display: block; color: rgba(232, 244, 255, 0.72); } strong { display: block; margin: 10px 0 3px; font-size: 32px; line-height: 36px; color: #ffffff; text-shadow: 0 0 14px rgba(126, 211, 197, 0.18); } } .kpi-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; position: relative; z-index: 1; span { color: rgba(255, 255, 255, 0.82); font-weight: 500; } } .kpi-card-body { position: relative; z-index: 1; } .kpi-icon { width: 38px; height: 38px; border-radius: 6px; display: flex; align-items: center; justify-content: center; color: var(--kpi-color); background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.12); font-size: 20px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12), 0 6px 14px rgba(0, 0, 0, 0.14); } .scheduled .kpi-icon { background: rgba(19, 194, 194, 0.12); } .conflict .kpi-icon { background: rgba(245, 108, 108, 0.12); } .temp .kpi-icon { background: rgba(139, 92, 246, 0.12); } .visual-grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr); grid-template-areas: 'schedule month' 'type month' 'type conflict'; align-items: start; gap: 14px; } .visual-grid > .visual-card:nth-child(2) { grid-area: month; } .visual-grid > .visual-card:nth-child(3) { grid-area: type; } .visual-card { min-height: 270px; padding: 18px 20px; border: 1px solid rgba(130, 154, 155, 0.28); border-radius: 8px; background: linear-gradient(145deg, rgba(255, 255, 255, 0.09), transparent 32%), linear-gradient(145deg, rgba(31, 42, 48, 0.95), rgba(18, 70, 65, 0.82)), linear-gradient(180deg, rgba(218, 220, 208, 0.03), rgba(0, 0, 0, 0.12)), repeating-linear-gradient( 90deg, transparent 0, transparent 44px, rgba(255, 255, 255, 0.022) 45px ); box-sizing: border-box; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), inset 0 -26px 50px rgba(0, 0, 0, 0.14), 0 12px 26px rgba(0, 0, 0, 0.2); overflow: hidden; position: relative; &::before { content: ''; position: absolute; left: 12px; top: 12px; width: 56px; height: 26px; border-left: 2px solid rgba(245, 181, 70, 0.48); border-top: 2px solid rgba(98, 212, 111, 0.42); opacity: 0.75; } &::after { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(218, 174, 81, 0.35), rgba(114, 240, 209, 0.36), transparent); } .chart-title { position: relative; margin-bottom: 4px; padding-left: 10px; font-size: 17px; font-weight: 600; color: #f2f9fb; &::before { content: ''; position: absolute; left: 0; top: 3px; width: 3px; height: 16px; border-radius: 2px; background: linear-gradient(180deg, #33b8ff, #62d46f); } } } .panel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 16px; position: relative; z-index: 1; p { margin: 0; color: rgba(224, 238, 240, 0.62); font-size: 13px; } .el-tag { border-color: rgba(255, 255, 255, 0.28); background: rgba(255, 255, 255, 0.08); font-weight: 600; } } .schedule-card { grid-area: schedule; min-height: 0; padding-bottom: 16px; &::before { width: 74px; border-left-color: rgba(245, 181, 70, 0.58); border-top-color: rgba(69, 214, 186, 0.45); } &::after { height: 3px; background: linear-gradient(90deg, rgba(245, 181, 70, 0.74), rgba(67, 222, 198, 0.56), transparent 72%), repeating-linear-gradient( 90deg, rgba(245, 181, 70, 0.8) 0 12px, rgba(22, 29, 32, 0.68) 12px 22px ); } } .donut-wrap { display: grid; grid-template-columns: minmax(188px, 220px) minmax(180px, 1fr); align-items: center; gap: 24px; min-height: 0; margin-top: 6px; padding: 18px 20px; border-radius: 8px; border: 1px solid rgba(126, 154, 154, 0.18); background: radial-gradient(circle at 25% 50%, rgba(76, 220, 193, 0.11), transparent 34%), linear-gradient(145deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.025)), linear-gradient(90deg, rgba(28, 36, 40, 0.92), rgba(18, 68, 64, 0.7)), repeating-linear-gradient( 135deg, transparent 0, transparent 16px, rgba(255, 255, 255, 0.025) 17px, rgba(255, 255, 255, 0.025) 18px ); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), inset 0 -18px 36px rgba(0, 0, 0, 0.16), 0 10px 20px rgba(0, 0, 0, 0.14); position: relative; z-index: 1; &::before, &::after { content: ''; position: absolute; width: 7px; height: 7px; border-radius: 50%; background: linear-gradient(135deg, #7f9293, #1d2a2d); box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.28), 0 0 0 1px rgba(0, 0, 0, 0.3); } &::before { left: 12px; top: 12px; } &::after { right: 12px; bottom: 12px; } } .donut-chart { width: 172px; height: 172px; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto; box-shadow: 0 18px 36px rgba(0, 0, 0, 0.22), 0 0 0 9px rgba(189, 199, 196, 0.06), 0 0 0 17px rgba(0, 0, 0, 0.12), inset 0 0 0 1px rgba(255, 255, 255, 0.2); position: relative; &::after { content: ''; position: absolute; inset: -24px; border-radius: 50%; border: 1px dashed rgba(143, 170, 169, 0.2); } } .donut-center { width: 104px; height: 104px; border-radius: 50%; background: linear-gradient(180deg, #f7fbfc, #dce8ec); box-shadow: 0 0 0 1px rgba(55, 88, 105, 0.18) inset, 0 8px 22px rgba(0, 0, 0, 0.2); display: flex; flex-direction: column; align-items: center; justify-content: center; strong { font-size: 30px; color: #10233f; } span { color: #536273; } } .donut-legend { width: 100%; position: relative; z-index: 1; .el-tooltip { display: block; } } .donut-legend-item { display: grid; grid-template-columns: 28px 1fr 40px; align-items: center; gap: 8px; margin-bottom: 10px; padding: 9px 10px; border: 1px solid rgba(132, 170, 188, 0.18); border-radius: 6px; background: linear-gradient(90deg, rgba(255, 255, 255, 0.11), rgba(255, 255, 255, 0.04)), linear-gradient(180deg, rgba(214, 210, 190, 0.035), transparent); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06), inset 4px 0 0 rgba(245, 181, 70, 0.08); em { color: rgba(232, 244, 255, 0.76); font-style: normal; } strong { color: #ffffff; text-align: right; } } .legend-line { width: 24px; height: 8px; border-radius: 8px; } .visual-bar-item { margin-bottom: 14px; padding: 10px 12px; border: 1px solid rgba(132, 170, 188, 0.16); border-radius: 6px; background: linear-gradient(90deg, rgba(255, 255, 255, 0.085), rgba(255, 255, 255, 0.035)), linear-gradient(180deg, rgba(214, 210, 190, 0.03), transparent); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); cursor: pointer; transition: background 0.2s, border-color 0.2s, transform 0.2s; &:hover { transform: translateX(2px); border-color: rgba(114, 240, 209, 0.34); background: rgba(255, 255, 255, 0.1); } } .visual-bar-list { position: relative; z-index: 1; .el-tooltip { display: block; } } .bar-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 7px; color: rgba(232, 244, 255, 0.78); strong { color: #ffffff; } } .bar-track { height: 10px; border-radius: 12px; overflow: hidden; background: rgba(211, 226, 230, 0.14); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.04), inset 0 2px 5px rgba(0, 0, 0, 0.18); } .bar-fill { height: 100%; min-width: 4px; border-radius: 12px; transition: width 0.3s; box-shadow: 8px 0 18px rgba(64, 158, 255, 0.18); } .type-visual-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; position: relative; z-index: 1; .el-tooltip { display: block; } } .type-visual-item { min-height: 160px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 14px 10px; border: 1px solid rgba(132, 170, 188, 0.18); border-radius: 8px; background: linear-gradient(160deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.045)), linear-gradient(180deg, rgba(214, 210, 190, 0.035), transparent); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06), inset 0 -18px 30px rgba(0, 0, 0, 0.1); text-align: center; cursor: pointer; transition: transform 0.2s, border-color 0.2s, background 0.2s; &:hover { transform: translateY(-2px); border-color: rgba(114, 240, 209, 0.32); background: linear-gradient(180deg, rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.08)); } span { color: #ffffff; font-weight: 600; } p { margin: 5px 0 0; color: rgba(232, 244, 255, 0.62); font-size: 14px; } } .type-ring { width: 72px; height: 72px; border-radius: 50%; background: conic-gradient( var(--ring-color) var(--ring-percent), rgba(214, 231, 248, 0.18) 0 ); display: flex; align-items: center; justify-content: center; box-shadow: 0 10px 22px rgba(3, 20, 43, 0.18); strong { width: 48px; height: 48px; border-radius: 50%; background: #f4f8f8; color: #10233f; display: flex; align-items: center; justify-content: center; } } .conflict-visual-card { grid-area: conflict; display: flex; flex-direction: column; .el-button { align-self: flex-start; margin-top: 14px; border-color: rgba(255, 178, 69, 0.34); background: rgba(255, 178, 69, 0.12); color: #ffd08a; &:hover, &:focus { border-color: rgba(255, 178, 69, 0.56); background: rgba(255, 178, 69, 0.2); color: #ffe0aa; } } } .conflict-visual { flex: 1; display: grid; grid-template-columns: 136px 1fr; align-items: end; gap: 18px; min-height: 172px; padding-bottom: 26px; position: relative; z-index: 1; } .conflict-number { align-self: center; padding: 18px 12px; border-radius: 8px; background: rgba(255, 108, 108, 0.1); border: 1px solid rgba(255, 132, 132, 0.28); text-align: center; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06), inset 0 -20px 28px rgba(0, 0, 0, 0.12); strong { display: block; font-size: 58px; line-height: 62px; color: #ff7777; text-shadow: 0 0 18px rgba(245, 108, 108, 0.28); } span { color: rgba(255, 235, 235, 0.78); } } .spark-bars { height: 158px; display: grid; grid-template-columns: repeat(6, 1fr); align-items: end; gap: 10px; padding: 14px 8px 0; border-bottom: 1px solid rgba(126, 211, 255, 0.18); background-image: linear-gradient(rgba(125, 179, 201, 0.12) 1px, transparent 1px); background-size: 100% 38px; position: relative; &::before { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(125, 211, 230, 0.45), transparent); } .el-tooltip { height: 100%; display: flex; align-items: flex-end; } span { min-height: 18px; max-width: 72px; width: 100%; justify-self: center; border-radius: 6px 6px 0 0; background: linear-gradient(180deg, #ff8a8a, #f56c6c); position: relative; box-shadow: 0 8px 16px rgba(245, 108, 108, 0.26); } b { position: absolute; left: 50%; top: -22px; transform: translateX(-50%); color: #ff7f7f; font-weight: 600; } em { position: absolute; left: 50%; bottom: -22px; transform: translateX(-50%); white-space: nowrap; color: rgba(232, 244, 255, 0.58); font-size: 12px; font-style: normal; } } .visual-stat-page { gap: 14px; padding: 16px; border: 1px solid rgba(118, 137, 136, 0.34); border-radius: 6px; background: linear-gradient(90deg, rgba(219, 167, 72, 0.12) 0 10px, transparent 10px 22px), linear-gradient(180deg, rgba(255, 255, 255, 0.045), transparent 24%), linear-gradient(rgba(142, 156, 152, 0.06) 1px, transparent 1px), linear-gradient(90deg, rgba(142, 156, 152, 0.045) 1px, transparent 1px), radial-gradient(circle at 78% 14%, rgba(76, 214, 184, 0.12), transparent 32%), linear-gradient(135deg, #161b1d 0%, #202727 42%, #132d2b 100%); background-size: 22px 100%, 100% 100%, 34px 34px, 34px 34px, 100% 100%, 100% 100%; } .visual-stat-page::after { inset: 6px; border-radius: 4px; border-color: rgba(230, 238, 230, 0.04); } .factory-visual-layer { opacity: 0.26; } .factory-roof { top: 0; height: 76px; opacity: 0.2; } .factory-conveyor { bottom: 12px; height: 24px; opacity: 0.54; } .visual-overview { min-height: 92px; padding: 18px 22px; border-radius: 6px; border-color: rgba(137, 159, 156, 0.32); background: linear-gradient(90deg, rgba(223, 166, 70, 0.12), transparent 16%), linear-gradient(135deg, rgba(255, 255, 255, 0.12), transparent 34%), linear-gradient(90deg, rgba(44, 54, 56, 0.96), rgba(31, 86, 78, 0.82)); } .visual-overview::before { right: 160px; background: linear-gradient(180deg, transparent, rgba(219, 167, 72, 0.42), transparent); } .overview-copy h3 { font-size: 24px; line-height: 30px; } .overview-copy p { margin-top: 6px; color: rgba(231, 238, 232, 0.7); } .overview-health { min-width: 118px; padding: 9px 12px; border-radius: 5px; background: linear-gradient(180deg, rgba(116, 132, 130, 0.26), rgba(26, 35, 36, 0.34)); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08), inset 0 -16px 28px rgba(0, 0, 0, 0.16); } .overview-health strong { margin: 2px 0; font-size: 38px; line-height: 40px; color: #78f0cf; } .visual-kpi-row { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; padding: 10px; border: 1px solid rgba(126, 147, 143, 0.22); border-radius: 6px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.055), rgba(255, 255, 255, 0.015)), repeating-linear-gradient(90deg, rgba(222, 169, 72, 0.08) 0 18px, transparent 18px 36px); } .visual-kpi-card { min-height: 76px; display: grid; grid-template-columns: 42px minmax(0, 1fr); grid-template-rows: auto auto; gap: 2px 10px; align-items: center; padding: 12px 14px; border-radius: 5px; border-color: rgba(143, 164, 158, 0.28); background: linear-gradient(90deg, rgba(255, 255, 255, 0.08), transparent 58%), linear-gradient(180deg, rgba(47, 59, 60, 0.95), rgba(24, 55, 52, 0.82)); } .visual-kpi-card::before { right: auto; width: 4px; height: 100%; background: var(--kpi-color); opacity: 0.82; } .visual-kpi-card::after { width: 34px; height: 14px; opacity: 0.38; } .visual-kpi-card:hover { transform: translateY(-1px); } .kpi-card-head { display: contents; } .kpi-card-head span { grid-column: 2; font-size: 13px; color: rgba(234, 242, 238, 0.74); } .kpi-icon { grid-row: 1 / 3; width: 36px; height: 36px; border-radius: 5px; background: rgba(255, 255, 255, 0.05); } .kpi-card-body { grid-column: 2; display: flex; align-items: baseline; gap: 10px; } .visual-kpi-card strong { margin: 0; font-size: 28px; line-height: 30px; } .visual-kpi-card small { min-width: 0; font-size: 12px; color: rgba(231, 238, 232, 0.6); } .visual-grid { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(360px, 0.92fr); gap: 14px; grid-template-areas: none; align-items: start; } .visual-column { min-width: 0; display: flex; flex-direction: column; gap: 14px; } .visual-card, .schedule-card, .month-card, .type-card, .conflict-visual-card, .visual-grid > .visual-card:nth-child(2), .visual-grid > .visual-card:nth-child(3) { grid-area: auto; } .visual-card { min-height: 0; padding: 16px; border-radius: 6px; border-color: rgba(138, 160, 154, 0.28); background: linear-gradient(90deg, rgba(222, 169, 72, 0.08), transparent 18%), linear-gradient(145deg, rgba(255, 255, 255, 0.09), transparent 34%), linear-gradient(180deg, rgba(45, 58, 58, 0.94), rgba(20, 66, 61, 0.84)); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), inset 0 -18px 34px rgba(0, 0, 0, 0.14), 0 8px 18px rgba(0, 0, 0, 0.18); } .visual-card::before { left: 10px; top: 10px; width: 40px; height: 18px; border-left-color: rgba(222, 169, 72, 0.6); border-top-color: rgba(82, 226, 196, 0.44); } .panel-head { margin-bottom: 12px; } .visual-card .chart-title { font-size: 16px; line-height: 22px; } .panel-head p { color: rgba(231, 238, 232, 0.62); } .donut-wrap { grid-template-columns: 180px minmax(0, 1fr); gap: 18px; padding: 16px; border-radius: 6px; background: radial-gradient(circle at 18% 52%, rgba(120, 240, 207, 0.11), transparent 38%), linear-gradient(90deg, rgba(25, 32, 34, 0.78), rgba(47, 70, 68, 0.6)); } .donut-chart { width: 158px; height: 158px; } .donut-chart::after { inset: -18px; border-color: rgba(222, 169, 72, 0.18); } .donut-center { width: 94px; height: 94px; } .donut-center strong { font-size: 28px; line-height: 32px; } .donut-legend-item { margin-bottom: 8px; padding: 10px 12px; border-radius: 5px; background: linear-gradient(90deg, rgba(255, 255, 255, 0.11), rgba(255, 255, 255, 0.035)); } .month-card .visual-bar-list { display: grid; gap: 10px; } .visual-bar-item { margin-bottom: 0; padding: 12px 14px; border-radius: 5px; border-color: rgba(137, 160, 154, 0.22); background: linear-gradient(90deg, rgba(255, 255, 255, 0.11), rgba(255, 255, 255, 0.035)); } .bar-head { margin-bottom: 8px; font-size: 14px; } .bar-track { height: 9px; background: rgba(218, 226, 222, 0.16); } .type-card .type-visual-list { grid-template-columns: 1fr; gap: 10px; } .type-visual-item { min-height: 90px; flex-direction: row; justify-content: flex-start; gap: 14px; padding: 12px 14px; text-align: left; border-radius: 5px; } .type-ring { flex: 0 0 auto; width: 58px; height: 58px; } .type-ring strong { width: 38px; height: 38px; font-size: 18px; } .conflict-visual-card { min-height: 0; } .conflict-visual { grid-template-columns: 112px minmax(0, 1fr); min-height: 140px; gap: 14px; padding-bottom: 24px; } .conflict-number { padding: 15px 10px; border-radius: 5px; } .conflict-number strong { font-size: 46px; line-height: 50px; } .spark-bars { height: 138px; gap: 8px; background-size: 100% 34px; } .donut-chart { overflow: visible; background-blend-mode: normal; box-shadow: 0 18px 0 rgba(13, 28, 29, 0.72), 0 28px 34px rgba(0, 0, 0, 0.34), 0 0 0 8px rgba(221, 227, 218, 0.08), 0 0 0 17px rgba(0, 0, 0, 0.16), inset 8px 10px 14px rgba(255, 255, 255, 0.22), inset -12px -16px 20px rgba(0, 0, 0, 0.28); } .donut-chart::before { content: ''; position: absolute; inset: -11px; border-radius: 50%; background: linear-gradient(145deg, rgba(255, 255, 255, 0.28), transparent 34%), linear-gradient(315deg, rgba(0, 0, 0, 0.38), transparent 42%); box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.18), inset 0 -10px 18px rgba(0, 0, 0, 0.28); pointer-events: none; z-index: -1; } .donut-chart::after { inset: auto 10px -22px; height: 32px; border: 0; border-radius: 50%; background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.34), transparent 66%), linear-gradient(180deg, rgba(38, 58, 56, 0.8), rgba(8, 18, 18, 0.16)); filter: blur(0.2px); transform: scaleX(1.08); z-index: -2; } .donut-center { background: radial-gradient(circle at 34% 28%, rgba(255, 255, 255, 0.98), rgba(225, 235, 235, 0.92) 52%, rgba(182, 200, 200, 0.92)); box-shadow: inset 4px 5px 9px rgba(255, 255, 255, 0.74), inset -6px -8px 12px rgba(77, 104, 111, 0.22), 0 8px 0 rgba(113, 132, 133, 0.3), 0 14px 22px rgba(0, 0, 0, 0.24); } .type-ring { position: relative; overflow: visible; filter: drop-shadow(0 14px 12px rgba(0, 0, 0, 0.28)); box-shadow: 0 10px 0 rgba(12, 26, 27, 0.72), inset 5px 7px 10px rgba(255, 255, 255, 0.22), inset -8px -10px 13px rgba(0, 0, 0, 0.28); } .type-ring::before { content: ''; position: absolute; inset: -6px; border-radius: 50%; background: linear-gradient(145deg, rgba(255, 255, 255, 0.22), transparent 38%), linear-gradient(315deg, rgba(0, 0, 0, 0.32), transparent 44%); box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.14), inset 0 -8px 14px rgba(0, 0, 0, 0.24); pointer-events: none; z-index: -1; } .type-ring::after { content: ''; position: absolute; left: 7px; right: 7px; bottom: -13px; height: 20px; border-radius: 50%; background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.3), transparent 68%); z-index: -2; } .type-ring strong { background: radial-gradient(circle at 34% 26%, #ffffff, #eef4f2 56%, #cbd9d8); box-shadow: inset 3px 4px 6px rgba(255, 255, 255, 0.76), inset -4px -6px 9px rgba(72, 93, 100, 0.22), 0 5px 0 rgba(102, 124, 125, 0.28); } .bar-track { height: 16px; padding: 3px 7px; overflow: visible; border-radius: 8px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.02)), linear-gradient(180deg, rgba(47, 65, 64, 0.9), rgba(14, 29, 31, 0.78)); box-shadow: inset 0 3px 5px rgba(255, 255, 255, 0.08), inset 0 -5px 9px rgba(0, 0, 0, 0.32), 0 7px 12px rgba(0, 0, 0, 0.2); perspective: 420px; } .bar-fill { position: relative; height: 10px; min-width: 6px; overflow: visible; border-radius: 6px; box-shadow: inset 0 3px 4px rgba(255, 255, 255, 0.32), inset 0 -5px 7px rgba(0, 0, 0, 0.22), 0 7px 0 rgba(0, 0, 0, 0.18), 0 11px 16px rgba(0, 0, 0, 0.22); } .bar-fill::before { content: ''; position: absolute; left: 5px; right: 3px; top: -4px; height: 5px; border-radius: 5px 5px 2px 2px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.48), rgba(255, 255, 255, 0.08)); transform: skewX(-28deg); transform-origin: left bottom; pointer-events: none; } .bar-fill::after { content: ''; position: absolute; right: -7px; top: 1px; width: 8px; height: 10px; border-radius: 0 5px 5px 0; background: linear-gradient(90deg, rgba(0, 0, 0, 0.2), rgba(255, 255, 255, 0.1)); transform: skewY(34deg); transform-origin: left top; pointer-events: none; } .spark-bars { perspective: 720px; padding-top: 22px; background-image: linear-gradient(rgba(125, 179, 201, 0.12) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.035) 1px, transparent 1px); background-size: 100% 34px, 42px 100%; } .spark-bars span { overflow: visible; border-radius: 7px 7px 2px 2px; background: linear-gradient(90deg, rgba(255, 255, 255, 0.22), transparent 24%), linear-gradient(180deg, #ff8f8f, #ff6262 64%, #c84141); box-shadow: inset 6px 0 8px rgba(255, 255, 255, 0.16), inset -9px 0 10px rgba(0, 0, 0, 0.18), 0 9px 0 rgba(99, 23, 25, 0.54), 0 16px 20px rgba(0, 0, 0, 0.28); transform: rotateX(2deg); transform-origin: center bottom; } .spark-bars span::before { content: ''; position: absolute; left: 5px; right: -4px; top: -8px; height: 10px; border-radius: 7px 7px 3px 3px; background: linear-gradient(180deg, #ffaaaa, #ff7777); transform: skewX(-28deg); transform-origin: left bottom; box-shadow: inset 0 2px 3px rgba(255, 255, 255, 0.34); } .spark-bars span::after { content: ''; position: absolute; right: -8px; top: -4px; bottom: -7px; width: 9px; border-radius: 0 6px 3px 0; background: linear-gradient(180deg, #d95252, #8f2e31); transform: skewY(42deg); transform-origin: left top; box-shadow: inset -2px 0 5px rgba(0, 0, 0, 0.2); } .type-visual-item { min-height: 116px; align-items: center; gap: 18px; overflow: hidden; isolation: isolate; } .type-visual-item > div:last-child { min-width: 0; position: relative; z-index: 2; } .type-visual-item > div:last-child span, .type-visual-item > div:last-child p { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .type-ring { width: 54px; height: 54px; overflow: hidden; filter: none; z-index: 1; box-shadow: 0 5px 10px rgba(0, 0, 0, 0.24), inset 4px 5px 8px rgba(255, 255, 255, 0.18), inset -6px -7px 10px rgba(0, 0, 0, 0.2); } .type-ring::before { inset: 3px; background: linear-gradient(145deg, rgba(255, 255, 255, 0.2), transparent 42%), linear-gradient(315deg, rgba(0, 0, 0, 0.16), transparent 46%); box-shadow: inset 0 -4px 8px rgba(0, 0, 0, 0.16); z-index: 0; } .type-ring::after { left: 8px; right: 8px; bottom: 3px; height: 7px; background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.18), transparent 72%); z-index: 0; } .type-ring strong { width: 34px; height: 34px; position: relative; z-index: 1; box-shadow: inset 2px 3px 5px rgba(255, 255, 255, 0.72), inset -3px -4px 7px rgba(72, 93, 100, 0.18), 0 2px 5px rgba(0, 0, 0, 0.16); } .bar-track { height: 13px; padding: 2px; overflow: hidden; border-radius: 9px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.12), rgba(0, 0, 0, 0.08)), rgba(25, 42, 43, 0.78); box-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.32), inset 0 -1px 0 rgba(255, 255, 255, 0.08); perspective: none; } .bar-fill { height: 9px; border-radius: 8px; box-shadow: inset 0 2px 3px rgba(255, 255, 255, 0.36), inset 0 -3px 5px rgba(0, 0, 0, 0.18), 0 2px 6px rgba(0, 0, 0, 0.2); } .bar-fill::before { left: 5px; right: 5px; top: 1px; height: 3px; border-radius: 8px; background: linear-gradient(90deg, rgba(255, 255, 255, 0.42), rgba(255, 255, 255, 0.04)); transform: none; } .bar-fill::after { display: none; } .spark-bars { height: 132px; gap: 12px; padding: 18px 6px 0; perspective: none; background-image: linear-gradient(rgba(125, 179, 201, 0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.026) 1px, transparent 1px); background-size: 100% 32px, 48px 100%; } .spark-bars span { min-height: 7px; max-width: 62px; border-radius: 8px 8px 2px 2px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.26), transparent 42%), linear-gradient(180deg, #ff8b8b, #f45d5d); box-shadow: inset 4px 0 6px rgba(255, 255, 255, 0.14), inset -4px 0 6px rgba(0, 0, 0, 0.12), 0 4px 7px rgba(245, 108, 108, 0.24); transform: none; } .spark-bars span::before { left: 5px; right: 5px; top: 2px; height: 4px; border-radius: 8px; background: linear-gradient(90deg, rgba(255, 255, 255, 0.38), rgba(255, 255, 255, 0.06)); transform: none; box-shadow: none; } .spark-bars span::after { display: none; } .spark-bars b { top: -24px; } .visual-stat-page { gap: 16px; padding: 18px; border: 1px solid rgba(76, 214, 214, 0.28); border-radius: 8px; background: linear-gradient(90deg, rgba(76, 214, 214, 0.08) 1px, transparent 1px), linear-gradient(rgba(76, 214, 214, 0.055) 1px, transparent 1px), radial-gradient(circle at 76% 18%, rgba(82, 226, 196, 0.16), transparent 30%), radial-gradient(circle at 16% 78%, rgba(222, 169, 72, 0.1), transparent 28%), linear-gradient(135deg, #0d1418 0%, #132323 48%, #101619 100%); background-size: 34px 34px, 34px 34px, 100% 100%, 100% 100%, 100% 100%; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.04), inset 0 0 56px rgba(76, 214, 214, 0.04), 0 18px 36px rgba(0, 0, 0, 0.22); } .visual-stat-page::before { height: 2px; background: linear-gradient(90deg, #52e2c4, #3da6ff, #dca948, #52e2c4); opacity: 0.9; } .visual-stat-page::after { inset: 10px; border-color: rgba(76, 214, 214, 0.12); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.025), inset 0 0 40px rgba(76, 214, 214, 0.035); } .factory-visual-layer { opacity: 0.34; } .factory-roof { top: 12px; height: 120px; opacity: 0.16; background: linear-gradient(135deg, transparent 0 22px, rgba(76, 214, 214, 0.28) 23px 24px, transparent 25px), linear-gradient(45deg, transparent 0 22px, rgba(220, 169, 72, 0.2) 23px 24px, transparent 25px); background-size: 48px 48px; } .factory-stack, .factory-conveyor { opacity: 0.28; } .visual-overview { min-height: 108px; padding: 18px 24px; border: 1px solid rgba(76, 214, 214, 0.24); border-radius: 8px; background: linear-gradient(90deg, rgba(82, 226, 196, 0.15), transparent 22%), linear-gradient(135deg, rgba(255, 255, 255, 0.1), transparent 32%), linear-gradient(90deg, rgba(22, 35, 38, 0.94), rgba(19, 69, 65, 0.76)); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), inset 0 -18px 38px rgba(0, 0, 0, 0.16), 0 12px 26px rgba(0, 0, 0, 0.2); } .overview-kicker { color: rgba(190, 245, 238, 0.78); } .live-dot { background: #52e2c4; box-shadow: 0 0 0 4px rgba(82, 226, 196, 0.13), 0 0 16px rgba(82, 226, 196, 0.46); } .overview-copy h3 { color: #f4fbff; text-shadow: 0 0 18px rgba(76, 214, 214, 0.18); } .overview-health { border: 1px solid rgba(82, 226, 196, 0.22); background: linear-gradient(180deg, rgba(82, 226, 196, 0.12), rgba(255, 255, 255, 0.025)); } .visual-kpi-row { padding: 0; border: 0; background: transparent; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; } .visual-kpi-card { min-height: 86px; border: 1px solid rgba(96, 190, 190, 0.22); border-radius: 8px; background: linear-gradient(90deg, rgba(82, 226, 196, 0.1), transparent 42%), linear-gradient(180deg, rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.025)), rgba(16, 30, 32, 0.78); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.09), 0 10px 20px rgba(0, 0, 0, 0.18); } .visual-kpi-card::before { width: 3px; border-radius: 0 3px 3px 0; box-shadow: 0 0 14px var(--kpi-color); } .visual-kpi-card::after { right: 12px; bottom: 10px; width: 42px; height: 16px; border-color: rgba(76, 214, 214, 0.18); } .kpi-icon { border-color: rgba(82, 226, 196, 0.24); background: rgba(82, 226, 196, 0.09); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.13), 0 0 14px rgba(82, 226, 196, 0.14); } .visual-grid { grid-template-columns: minmax(0, 1.08fr) minmax(380px, 0.92fr); gap: 16px; } .visual-column { gap: 16px; } .visual-card { padding: 16px; border: 1px solid rgba(76, 214, 214, 0.2); border-radius: 8px; background: linear-gradient(135deg, rgba(255, 255, 255, 0.085), transparent 34%), linear-gradient(90deg, rgba(82, 226, 196, 0.08), transparent 24%), rgba(15, 35, 36, 0.82); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.09), inset 0 -20px 42px rgba(0, 0, 0, 0.12), 0 12px 26px rgba(0, 0, 0, 0.18); } .visual-card::before { left: 12px; top: 12px; width: 48px; height: 22px; border-left-color: rgba(82, 226, 196, 0.72); border-top-color: rgba(220, 169, 72, 0.58); } .visual-card::after { background: linear-gradient(90deg, transparent, rgba(82, 226, 196, 0.5), rgba(61, 166, 255, 0.42), transparent); } .visual-card .chart-title { color: #f5fbff; text-shadow: 0 0 12px rgba(82, 226, 196, 0.18); } .visual-card .chart-title::before { background: linear-gradient(180deg, #52e2c4, #3da6ff); box-shadow: 0 0 12px rgba(82, 226, 196, 0.36); } .donut-wrap { grid-template-columns: 190px minmax(0, 1fr); padding: 18px; border: 1px solid rgba(76, 214, 214, 0.16); border-radius: 8px; background: radial-gradient(circle at 96px 50%, rgba(61, 166, 255, 0.12), transparent 38%), linear-gradient(90deg, rgba(9, 18, 22, 0.56), rgba(255, 255, 255, 0.035)); } .donut-chart { width: 156px; height: 156px; box-shadow: 0 14px 26px rgba(0, 0, 0, 0.24), 0 0 0 8px rgba(82, 226, 196, 0.055), inset 8px 10px 14px rgba(255, 255, 255, 0.18), inset -10px -12px 18px rgba(0, 0, 0, 0.2); } .donut-chart::before { inset: -10px; background: conic-gradient(from 90deg, rgba(82, 226, 196, 0.24), transparent 22%, rgba(61, 166, 255, 0.2), transparent 58%, rgba(220, 169, 72, 0.2), transparent 82%); box-shadow: none; } .donut-chart::after { inset: -16px; height: auto; border: 1px dashed rgba(82, 226, 196, 0.2); background: transparent; transform: none; z-index: -1; } .donut-center { background: radial-gradient(circle at 34% 28%, #ffffff, #e9f6f5 58%, #bed1d0); box-shadow: inset 3px 4px 8px rgba(255, 255, 255, 0.7), inset -4px -6px 10px rgba(60, 86, 94, 0.2), 0 8px 16px rgba(0, 0, 0, 0.18); } .donut-legend-item { border-color: rgba(76, 214, 214, 0.16); background: linear-gradient(90deg, rgba(82, 226, 196, 0.08), rgba(255, 255, 255, 0.035)); } .type-visual-item { min-height: 104px; padding: 14px 16px; border: 1px solid rgba(76, 214, 214, 0.16); background: linear-gradient(90deg, rgba(82, 226, 196, 0.08), transparent 44%), rgba(255, 255, 255, 0.035); } .type-ring { width: 56px; height: 56px; border-radius: 50%; box-shadow: 0 8px 14px rgba(0, 0, 0, 0.22), inset 4px 5px 8px rgba(255, 255, 255, 0.2), inset -5px -6px 10px rgba(0, 0, 0, 0.18); } .type-ring::before { inset: 4px; background: linear-gradient(145deg, rgba(255, 255, 255, 0.18), transparent 44%), linear-gradient(315deg, rgba(0, 0, 0, 0.12), transparent 48%); } .type-ring::after { display: none; } .type-ring strong { width: 35px; height: 35px; } .month-card .visual-bar-list { gap: 12px; } .visual-bar-item { padding: 13px 14px; border: 1px solid rgba(76, 214, 214, 0.15); background: linear-gradient(90deg, rgba(82, 226, 196, 0.07), transparent 36%), rgba(255, 255, 255, 0.035); } .bar-track { height: 14px; padding: 2px; border: 1px solid rgba(76, 214, 214, 0.1); border-radius: 10px; background: linear-gradient(90deg, rgba(76, 214, 214, 0.08) 1px, transparent 1px), rgba(9, 20, 22, 0.76); background-size: 32px 100%, 100% 100%; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.34), 0 0 12px rgba(82, 226, 196, 0.06); } .bar-fill { height: 8px; border-radius: 8px; box-shadow: inset 0 2px 3px rgba(255, 255, 255, 0.36), 0 0 12px currentColor; } .bar-fill::before { top: 1px; height: 2px; background: linear-gradient(90deg, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.05)); } .conflict-visual { grid-template-columns: 118px minmax(0, 1fr); min-height: 148px; padding-bottom: 18px; } .conflict-number { border-color: rgba(255, 112, 112, 0.28); background: linear-gradient(180deg, rgba(255, 112, 112, 0.12), rgba(255, 255, 255, 0.025)); } .spark-bars { height: 136px; gap: 14px; padding: 22px 8px 0; border-bottom-color: rgba(82, 226, 196, 0.2); background-image: linear-gradient(rgba(76, 214, 214, 0.11) 1px, transparent 1px), linear-gradient(90deg, rgba(76, 214, 214, 0.045) 1px, transparent 1px); background-size: 100% 34px, 56px 100%; } .spark-bars span { max-width: 48px; min-height: 6px; border-radius: 8px 8px 2px 2px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.28), transparent 40%), linear-gradient(180deg, #ff8b8b, #f15e63); box-shadow: inset 0 2px 4px rgba(255, 255, 255, 0.24), 0 0 14px rgba(241, 94, 99, 0.22); } .spark-bars span::before { top: 2px; height: 3px; background: linear-gradient(90deg, rgba(255, 255, 255, 0.42), rgba(255, 255, 255, 0.05)); } .tech-dashboard-v2 { gap: 16px; padding: 18px; border: 1px solid rgba(61, 166, 255, 0.28); border-radius: 10px; background: linear-gradient(90deg, rgba(61, 166, 255, 0.11) 1px, transparent 1px), linear-gradient(rgba(82, 226, 196, 0.08) 1px, transparent 1px), radial-gradient(circle at 20% 18%, rgba(82, 226, 196, 0.16), transparent 30%), radial-gradient(circle at 82% 26%, rgba(61, 166, 255, 0.18), transparent 34%), linear-gradient(135deg, #081116 0%, #0d2020 48%, #091316 100%); background-size: 38px 38px, 38px 38px, 100% 100%, 100% 100%, 100% 100%; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.04), inset 0 0 90px rgba(82, 226, 196, 0.05), 0 20px 40px rgba(0, 0, 0, 0.24); } .tech-dashboard-v2::before { height: 2px; background: linear-gradient(90deg, transparent, #52e2c4 18%, #3da6ff 52%, #dca948 82%, transparent); box-shadow: 0 0 18px rgba(82, 226, 196, 0.45); } .tech-dashboard-v2::after { inset: 9px; border: 1px solid rgba(82, 226, 196, 0.12); border-radius: 8px; box-shadow: inset 0 0 0 1px rgba(61, 166, 255, 0.04), inset 0 0 46px rgba(61, 166, 255, 0.035); } .tech-dashboard-v2 .factory-visual-layer { opacity: 0.22; } .tech-dashboard-v2 .factory-roof { top: 16px; height: 150px; opacity: 0.22; background: linear-gradient(135deg, transparent 0 20px, rgba(82, 226, 196, 0.24) 21px 22px, transparent 23px), linear-gradient(45deg, transparent 0 20px, rgba(61, 166, 255, 0.18) 21px 22px, transparent 23px); background-size: 46px 46px; border-bottom-color: rgba(82, 226, 196, 0.16); } .tech-dashboard-v2 .factory-stack, .tech-dashboard-v2 .factory-conveyor { opacity: 0.18; } .tech-dashboard-v2 .visual-overview { min-height: 104px; padding: 18px 24px; border: 1px solid rgba(82, 226, 196, 0.24); border-radius: 10px; background: linear-gradient(90deg, rgba(82, 226, 196, 0.15), transparent 26%), linear-gradient(135deg, rgba(255, 255, 255, 0.1), transparent 34%), rgba(9, 26, 29, 0.76); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12), inset 0 -22px 44px rgba(0, 0, 0, 0.18), 0 0 28px rgba(82, 226, 196, 0.08); backdrop-filter: blur(6px); } .tech-dashboard-v2 .visual-overview::before { right: 178px; background: linear-gradient(180deg, transparent, rgba(82, 226, 196, 0.5), transparent); } .tech-dashboard-v2 .visual-overview::after { background: linear-gradient(90deg, transparent, rgba(82, 226, 196, 0.58), rgba(61, 166, 255, 0.48), transparent); } .tech-dashboard-v2 .overview-kicker { color: rgba(207, 251, 247, 0.8); text-transform: uppercase; } .tech-dashboard-v2 .live-dot { background: #52e2c4; box-shadow: 0 0 0 5px rgba(82, 226, 196, 0.12), 0 0 22px rgba(82, 226, 196, 0.52); } .tech-dashboard-v2 .overview-copy h3 { color: #f7fcff; font-size: 27px; line-height: 34px; text-shadow: 0 0 20px rgba(82, 226, 196, 0.2); } .tech-dashboard-v2 .overview-copy p { color: rgba(220, 239, 238, 0.72); } .tech-dashboard-v2 .overview-health { min-width: 128px; border: 1px solid rgba(82, 226, 196, 0.26); border-radius: 8px; background: radial-gradient(circle at 50% 18%, rgba(82, 226, 196, 0.18), transparent 58%), rgba(11, 26, 29, 0.66); box-shadow: inset 0 0 24px rgba(82, 226, 196, 0.06), 0 0 18px rgba(82, 226, 196, 0.08); } .tech-dashboard-v2 .overview-health strong { color: #6ff7d6; text-shadow: 0 0 18px rgba(111, 247, 214, 0.38); } .tech-dashboard-v2 .visual-kpi-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; padding: 0; border: 0; background: transparent; } .tech-dashboard-v2 .visual-kpi-card { min-height: 84px; padding: 13px 15px; border: 1px solid rgba(108, 205, 210, 0.22); border-radius: 10px; background: linear-gradient(90deg, rgba(61, 166, 255, 0.1), transparent 42%), linear-gradient(180deg, rgba(255, 255, 255, 0.075), rgba(255, 255, 255, 0.018)), rgba(10, 24, 28, 0.72); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 0 22px rgba(61, 166, 255, 0.055); backdrop-filter: blur(5px); } .tech-dashboard-v2 .visual-kpi-card::before { width: 3px; background: var(--kpi-color); box-shadow: 0 0 18px var(--kpi-color); } .tech-dashboard-v2 .visual-kpi-card::after { right: 13px; bottom: 12px; border-color: rgba(82, 226, 196, 0.2); opacity: 0.78; } .tech-dashboard-v2 .kpi-icon { border-color: rgba(82, 226, 196, 0.24); background: rgba(82, 226, 196, 0.09); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), 0 0 18px rgba(82, 226, 196, 0.12); } .tech-dashboard-v2 .visual-grid { grid-template-columns: minmax(0, 1.05fr) minmax(380px, 0.95fr); gap: 16px; align-items: stretch; } .tech-dashboard-v2 .visual-column { gap: 16px; } .tech-dashboard-v2 .visual-card { border: 1px solid rgba(82, 226, 196, 0.2); border-radius: 10px; background: linear-gradient(135deg, rgba(255, 255, 255, 0.085), transparent 32%), linear-gradient(90deg, rgba(82, 226, 196, 0.08), transparent 28%), rgba(9, 29, 31, 0.76); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), inset 0 -22px 46px rgba(0, 0, 0, 0.12), 0 0 24px rgba(82, 226, 196, 0.055); backdrop-filter: blur(5px); } .tech-dashboard-v2 .visual-card::before { left: 12px; top: 12px; width: 50px; height: 22px; border-left-color: rgba(82, 226, 196, 0.74); border-top-color: rgba(61, 166, 255, 0.58); } .tech-dashboard-v2 .visual-card::after { background: linear-gradient(90deg, transparent, rgba(82, 226, 196, 0.54), rgba(61, 166, 255, 0.44), transparent); } .tech-dashboard-v2 .visual-card .chart-title { color: #f5fcff; text-shadow: 0 0 14px rgba(82, 226, 196, 0.2); } .tech-dashboard-v2 .visual-card .chart-title::before { background: linear-gradient(180deg, #52e2c4, #3da6ff); box-shadow: 0 0 14px rgba(82, 226, 196, 0.36); } .tech-dashboard-v2 .panel-head p { color: rgba(214, 234, 234, 0.62); } .tech-dashboard-v2 .donut-wrap { grid-template-columns: 210px minmax(0, 1fr); align-items: center; padding: 18px; border: 1px solid rgba(82, 226, 196, 0.16); border-radius: 10px; background: radial-gradient(circle at 108px 50%, rgba(61, 166, 255, 0.14), transparent 40%), linear-gradient(90deg, rgba(6, 18, 22, 0.62), rgba(255, 255, 255, 0.035)); } .tech-dashboard-v2 .donut-chart { width: 166px; height: 166px; box-shadow: 0 16px 28px rgba(0, 0, 0, 0.24), 0 0 0 8px rgba(82, 226, 196, 0.055), inset 8px 10px 14px rgba(255, 255, 255, 0.17), inset -10px -12px 18px rgba(0, 0, 0, 0.2); } .tech-dashboard-v2 .donut-chart::before { inset: -11px; background: conic-gradient(from 90deg, rgba(82, 226, 196, 0.24), transparent 22%, rgba(61, 166, 255, 0.2), transparent 58%, rgba(220, 169, 72, 0.2), transparent 82%); box-shadow: none; } .tech-dashboard-v2 .donut-chart::after { inset: -17px; height: auto; border: 1px dashed rgba(82, 226, 196, 0.2); background: transparent; transform: none; z-index: -1; } .tech-dashboard-v2 .donut-center { background: radial-gradient(circle at 34% 28%, #ffffff, #e9f6f5 58%, #bed1d0); box-shadow: inset 3px 4px 8px rgba(255, 255, 255, 0.7), inset -4px -6px 10px rgba(60, 86, 94, 0.2), 0 8px 16px rgba(0, 0, 0, 0.18); } .tech-dashboard-v2 .donut-legend-item, .tech-dashboard-v2 .type-visual-item, .tech-dashboard-v2 .visual-bar-item { border-color: rgba(82, 226, 196, 0.15); background: linear-gradient(90deg, rgba(82, 226, 196, 0.08), transparent 42%), rgba(255, 255, 255, 0.035); } .tech-dashboard-v2 .type-visual-item { min-height: 108px; padding: 15px 16px; } .tech-dashboard-v2 .type-ring { width: 58px; height: 58px; box-shadow: 0 8px 14px rgba(0, 0, 0, 0.22), inset 4px 5px 8px rgba(255, 255, 255, 0.2), inset -5px -6px 10px rgba(0, 0, 0, 0.18); } .tech-dashboard-v2 .type-ring::after { display: none; } .tech-dashboard-v2 .bar-track { height: 14px; padding: 2px; border: 1px solid rgba(82, 226, 196, 0.12); border-radius: 10px; background: linear-gradient(90deg, rgba(82, 226, 196, 0.08) 1px, transparent 1px), rgba(6, 18, 22, 0.78); background-size: 34px 100%, 100% 100%; } .tech-dashboard-v2 .bar-fill { height: 8px; border-radius: 8px; box-shadow: inset 0 2px 3px rgba(255, 255, 255, 0.36), 0 0 12px rgba(82, 226, 196, 0.18); } .tech-dashboard-v2 .spark-bars { height: 138px; gap: 14px; padding: 22px 8px 0; background-image: linear-gradient(rgba(82, 226, 196, 0.12) 1px, transparent 1px), linear-gradient(90deg, rgba(61, 166, 255, 0.052) 1px, transparent 1px); background-size: 100% 34px, 56px 100%; } .tech-dashboard-v2 .spark-bars span { max-width: 48px; min-height: 6px; border-radius: 8px 8px 2px 2px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.28), transparent 40%), linear-gradient(180deg, #ff8b8b, #f15e63); box-shadow: inset 0 2px 4px rgba(255, 255, 255, 0.24), 0 0 14px rgba(241, 94, 99, 0.24); } } .calendar-day-drawer { display: flex; flex-direction: column; .el-drawer__header { flex: 0 0 auto; padding: 22px 24px 14px; margin-bottom: 0; border-bottom: 1px solid #e4edf7; color: #303133; font-size: 18px; font-weight: 600; background: linear-gradient(90deg, #f4f9ff, #ffffff); } .el-drawer__body { flex: 1 1 auto; min-height: 0; height: auto; position: relative; background: #f5f7fb; overflow: hidden; } .drawer-body { height: 100%; padding: 18px; box-sizing: border-box; overflow-y: auto; } .drawer-summary { display: grid; grid-template-columns: 78px 1fr; gap: 14px; margin-bottom: 18px; padding: 16px; border: 1px solid #cfe7ff; border-radius: 8px; background: linear-gradient(135deg, #f2f8ff, #ffffff 72%); box-shadow: 0 10px 24px rgba(64, 158, 255, 0.1); } .summary-date { height: 82px; border-radius: 8px; background: linear-gradient(180deg, #409eff, #1f78e8); color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; box-shadow: 0 10px 20px rgba(64, 158, 255, 0.22); span { font-size: 12px; opacity: 0.82; } strong { font-size: 34px; line-height: 38px; } } .summary-info { min-width: 0; p { margin: 8px 0 10px; color: #606266; line-height: 20px; } } .summary-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: #303133; font-size: 16px; font-weight: 600; } .summary-tags { display: flex; flex-wrap: wrap; gap: 6px; } .drawer-section { margin-bottom: 18px; padding: 16px; border: 1px solid #e4edf7; border-radius: 8px; background: #fff; box-shadow: 0 8px 18px rgba(31, 45, 61, 0.05); } .drawer-title { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; span { position: relative; padding-left: 10px; color: #303133; font-size: 17px; font-weight: 600; &::before { content: ''; position: absolute; left: 0; top: 3px; width: 3px; height: 15px; border-radius: 2px; background: #409eff; } } em { color: #909399; font-size: 14px; font-style: normal; } } .detail-timeline, .plan-list { display: flex; flex-direction: column; gap: 12px; } .plan-list { .el-tooltip { display: block; } } .detail-item { display: grid; grid-template-columns: 126px 1fr; gap: 12px; align-items: stretch; } .detail-time { min-height: 68px; padding: 10px; border: 1px solid #cfe7ff; border-radius: 8px; background: linear-gradient(180deg, #f3f8ff, #ffffff); text-align: center; box-sizing: border-box; display: flex; align-items: center; justify-content: center; strong { color: #1f4e86; font-size: 16px; line-height: 22px; white-space: nowrap; font-variant-numeric: tabular-nums; } } .detail-content { min-height: 68px; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border: 1px solid #edf2f7; border-left: 4px solid #409eff; border-radius: 8px; background: linear-gradient(180deg, #ffffff, #f8fbff); position: relative; &::before { display: none; } strong, span { display: block; } strong { color: #303133; font-size: 16px; line-height: 22px; } span { margin-top: 4px; color: #909399; font-size: 14px; line-height: 20px; } } .detail-meta { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 6px; margin-top: 2px; span { margin-top: 0; padding: 2px 8px; border-radius: 10px; background: #eef5ff; color: #5b6f8f; font-size: 12px; line-height: 20px; } } .plan-item { display: block; padding: 12px 16px; border: 1px solid #edf2f7; border-left: 4px solid #67c23a; border-radius: 8px; background: linear-gradient(180deg, #ffffff, #f8fbff); } .plan-main { min-width: 0; } .plan-topline { display: grid; grid-template-columns: minmax(0, 1fr) max-content; align-items: center; gap: 12px; margin-bottom: 6px; strong { color: #303133; font-size: 16px; line-height: 22px; text-align: left; } span { margin-top: 0; color: #8a97a8; font-size: 14px; line-height: 20px; text-align: right; } } .plan-name, .plan-metrics, .plan-topline strong, .plan-topline span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .plan-name { display: block; width: 100%; margin: 0 0 8px; color: #606266; font-size: 14px; line-height: 20px; text-align: left; } .team-queue-plan .queue-name-only { display: flex; align-items: center; gap: 4px; margin: 0; color: #303133; font-size: 16px; font-weight: 600; line-height: 22px; white-space: nowrap; .queue-name-label { flex: 0 0 auto; color: #7a8798; font-size: 13px; font-weight: 500; } .queue-name-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } } .plan-metrics { display: flex; align-items: center; justify-content: flex-start; gap: 14px; color: #8a97a8; font-size: 13px; line-height: 20px; font-variant-numeric: tabular-nums; text-align: left; em { font-style: normal; } } .drawer-empty { padding: 22px 0 10px; } .drawer-actions { position: absolute; left: 0; right: 0; bottom: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; padding: 14px 18px 18px; border-top: 1px solid #ebeef5; background: rgba(255, 255, 255, 0.96); box-shadow: 0 -8px 18px rgba(31, 45, 61, 0.06); .el-button { width: 100%; margin-left: 0; } } } .calendar-tooltip { line-height: 24px; color: #303133; } .plan-tooltip { max-width: 360px; line-height: 24px; color: #303133; word-break: break-all; } @keyframes conflictFlash { 0% { box-shadow: inset 0 0 0 1px rgba(245, 108, 108, 0.2); } 50% { box-shadow: inset 0 0 0 2px rgba(245, 108, 108, 0.85); } 100% { box-shadow: inset 0 0 0 1px rgba(245, 108, 108, 0.2); } } @media (max-width: 1200px) { .factory-calendar { .stat-row, .visual-kpi-row, .visual-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .visual-overview { align-items: flex-start; flex-direction: column; &::before { display: none; } } .donut-wrap, .type-visual-list { grid-template-columns: 1fr; } .calendar-layout { grid-template-columns: 1fr; } .calendar-grid.view-quarter { grid-template-columns: repeat(7, minmax(78px, 1fr)); } } } @media (max-width: 768px) { .factory-calendar { .stat-row { grid-template-columns: 1fr; } .calendar-grid, .calendar-grid.view-week, .calendar-grid.view-quarter { grid-template-columns: repeat(2, minmax(140px, 1fr)); } .legend-panel { display: none; } .visual-stat-page { padding: 12px; } .visual-overview { padding: 16px; } .overview-copy h3 { font-size: 22px; line-height: 30px; } .visual-kpi-row, .visual-grid, .conflict-visual { grid-template-columns: 1fr; } .visual-grid { grid-template-areas: none; > .visual-card, > .visual-card:nth-child(2), > .visual-card:nth-child(3), .schedule-card, .conflict-visual-card { grid-area: auto; } } .type-visual-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } } .calendar-day-drawer { width: 92% !important; .drawer-summary, .detail-item, .plan-item { grid-template-columns: 1fr; } .plan-extra { min-width: 0; text-align: left; } } } .factory-calendar .industrial-stat-board { position: relative; min-height: 650px; padding: 18px; overflow: hidden; color: #dff6ff; border: 1px solid rgba(52, 185, 220, 0.34); border-radius: 8px; background: linear-gradient(90deg, rgba(42, 187, 215, 0.13) 1px, transparent 1px), linear-gradient(rgba(39, 207, 178, 0.08) 1px, transparent 1px), radial-gradient(circle at 16% 8%, rgba(47, 220, 188, 0.16), transparent 28%), radial-gradient(circle at 88% 18%, rgba(56, 132, 255, 0.16), transparent 30%), linear-gradient(135deg, #061017 0%, #0a1d27 46%, #07131b 100%); background-size: 42px 42px, 42px 42px, 100% 100%, 100% 100%, 100% 100%; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), inset 0 0 0 1px rgba(97, 227, 255, 0.06), inset 0 -70px 130px rgba(0, 0, 0, 0.22), 0 18px 34px rgba(0, 0, 0, 0.18); } .factory-calendar .industrial-stat-board::before, .factory-calendar .industrial-stat-board::after { content: ''; position: absolute; pointer-events: none; } .factory-calendar .industrial-stat-board::before { left: 18px; right: 18px; top: 10px; height: 2px; background: linear-gradient(90deg, transparent, #31e7cc 20%, #45a7ff 52%, #f2b84b 82%, transparent); box-shadow: 0 0 20px rgba(49, 231, 204, 0.36); } .factory-calendar .industrial-stat-board::after { inset: 8px; border: 1px solid rgba(92, 209, 237, 0.12); border-radius: 7px; } .factory-calendar .industrial-grid-layer { position: absolute; inset: 0; pointer-events: none; opacity: 0.76; } .factory-calendar .grid-beam { position: absolute; height: 1px; background: linear-gradient(90deg, transparent, rgba(49, 231, 204, 0.52), transparent); } .factory-calendar .grid-beam-main { left: 4%; right: 6%; top: 36%; } .factory-calendar .grid-beam-sub { left: 18%; right: 4%; bottom: 30%; } .factory-calendar .grid-node { position: absolute; width: 9px; height: 9px; border: 1px solid rgba(49, 231, 204, 0.76); background: #061017; box-shadow: 0 0 16px rgba(49, 231, 204, 0.42); transform: rotate(45deg); } .factory-calendar .grid-node-a { left: 16%; top: 35%; } .factory-calendar .grid-node-b { right: 18%; bottom: 29%; } .factory-calendar .industrial-command, .factory-calendar .industrial-kpi-strip, .factory-calendar .industrial-main-grid { position: relative; z-index: 1; } .factory-calendar .industrial-command { display: grid; grid-template-columns: minmax(0, 1fr) 410px; gap: 18px; align-items: stretch; min-height: 138px; padding: 22px 24px; border: 1px solid rgba(71, 203, 218, 0.25); border-radius: 8px; background: linear-gradient(100deg, rgba(49, 231, 204, 0.15), transparent 36%), linear-gradient(180deg, rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.025)), rgba(6, 22, 31, 0.86); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12), inset 0 -28px 60px rgba(0, 0, 0, 0.16), 0 16px 30px rgba(0, 0, 0, 0.2); } .factory-calendar .command-copy { min-width: 0; } .factory-calendar .command-kicker { display: flex; align-items: center; gap: 8px; color: rgba(174, 235, 246, 0.78); font-size: 12px; line-height: 18px; letter-spacing: 0; } .factory-calendar .command-live-dot { width: 8px; height: 8px; border-radius: 50%; background: #31e7cc; box-shadow: 0 0 0 5px rgba(49, 231, 204, 0.12), 0 0 18px rgba(49, 231, 204, 0.55); } .factory-calendar .command-copy h3 { margin: 10px 0 8px; color: #f3fbff; font-size: 30px; line-height: 38px; font-weight: 700; } .factory-calendar .command-copy p { max-width: 720px; margin: 0; color: rgba(221, 239, 246, 0.7); font-size: 14px; line-height: 22px; } .factory-calendar .command-status { display: grid; grid-template-columns: 146px minmax(0, 1fr); gap: 12px; } .factory-calendar .health-gauge { display: flex; align-items: center; justify-content: center; flex-direction: column; border: 1px solid rgba(49, 231, 204, 0.24); border-radius: 8px; background: linear-gradient(160deg, rgba(49, 231, 204, 0.12), rgba(255, 255, 255, 0.035)); } .factory-calendar .health-ring { display: flex; width: 74px; height: 74px; align-items: center; justify-content: center; margin-bottom: 6px; border-radius: 50%; background: radial-gradient(circle at center, #07131b 0 54%, transparent 55%), conic-gradient(#31e7cc 0 70%, rgba(69, 167, 255, 0.2) 70% 100%); box-shadow: inset 4px 5px 10px rgba(255, 255, 255, 0.12), inset -6px -8px 14px rgba(0, 0, 0, 0.22), 0 0 24px rgba(49, 231, 204, 0.12); } .factory-calendar .health-ring strong { color: #74f8d9; font-size: 30px; line-height: 36px; font-weight: 800; font-variant-numeric: tabular-nums; } .factory-calendar .health-gauge span, .factory-calendar .health-gauge em { color: rgba(221, 239, 246, 0.68); font-size: 12px; line-height: 18px; font-style: normal; } .factory-calendar .command-summary { display: grid; grid-template-columns: 1fr; gap: 10px; } .factory-calendar .command-summary div { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border: 1px solid rgba(69, 167, 255, 0.2); border-radius: 8px; background: rgba(255, 255, 255, 0.045); } .factory-calendar .command-summary span { color: rgba(221, 239, 246, 0.68); font-size: 12px; line-height: 18px; } .factory-calendar .command-summary strong { color: #f3fbff; font-size: 24px; line-height: 30px; font-weight: 800; font-variant-numeric: tabular-nums; } .factory-calendar .command-summary .danger strong { color: #ff8b8b; } .factory-calendar .industrial-kpi-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 14px; } .factory-calendar .industrial-kpi { position: relative; display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 12px; align-items: center; min-height: 86px; padding: 14px 16px; overflow: hidden; border: 1px solid rgba(71, 203, 218, 0.22); border-radius: 8px; background: linear-gradient(90deg, rgba(69, 167, 255, 0.1), transparent 44%), linear-gradient(180deg, rgba(255, 255, 255, 0.075), rgba(255, 255, 255, 0.022)), rgba(7, 25, 36, 0.82); box-shadow: inset 3px 0 0 var(--accent-color), inset 0 1px 0 rgba(255, 255, 255, 0.09), 0 10px 20px rgba(0, 0, 0, 0.16); } .factory-calendar .industrial-kpi::after { content: ''; position: absolute; right: 10px; bottom: 10px; width: 30px; height: 16px; border-right: 1px solid rgba(174, 235, 246, 0.22); border-bottom: 1px solid rgba(174, 235, 246, 0.22); } .factory-calendar .industrial-kpi-icon { display: flex; width: 38px; height: 38px; align-items: center; justify-content: center; border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 7px; color: var(--accent-color); background: rgba(255, 255, 255, 0.06); font-size: 19px; } .factory-calendar .industrial-kpi-copy { min-width: 0; } .factory-calendar .industrial-kpi-copy span, .factory-calendar .industrial-kpi-copy em { display: block; overflow: hidden; color: rgba(221, 239, 246, 0.68); font-size: 12px; line-height: 18px; text-overflow: ellipsis; white-space: nowrap; font-style: normal; } .factory-calendar .industrial-kpi-copy strong { display: block; margin: 2px 0; color: #f3fbff; font-size: 27px; line-height: 32px; font-weight: 800; font-variant-numeric: tabular-nums; } .factory-calendar .industrial-main-grid { display: grid; grid-template-columns: minmax(0, 1.18fr) minmax(360px, 0.82fr); grid-template-areas: 'schedule types' 'month conflict'; gap: 14px; margin-top: 14px; } .factory-calendar .industrial-panel { position: relative; min-width: 0; padding: 16px; border: 1px solid rgba(71, 203, 218, 0.22); border-radius: 8px; background: linear-gradient(135deg, rgba(255, 255, 255, 0.08), transparent 34%), linear-gradient(180deg, rgba(8, 31, 43, 0.92), rgba(5, 19, 28, 0.92)); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), inset 0 -24px 52px rgba(0, 0, 0, 0.13), 0 12px 24px rgba(0, 0, 0, 0.16); } .factory-calendar .industrial-panel::before { content: ''; position: absolute; left: 12px; top: 12px; width: 42px; height: 18px; border-top: 1px solid rgba(49, 231, 204, 0.62); border-left: 1px solid rgba(49, 231, 204, 0.62); } .factory-calendar .schedule-analysis { grid-area: schedule; } .factory-calendar .type-analysis { grid-area: types; } .factory-calendar .month-analysis { grid-area: month; } .factory-calendar .conflict-analysis { grid-area: conflict; } .factory-calendar .industrial-panel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 14px; padding-left: 12px; } .factory-calendar .industrial-panel-head span { display: block; color: #57d4ff; font-size: 11px; line-height: 16px; } .factory-calendar .industrial-panel-head strong { display: block; margin-top: 2px; color: #f3fbff; font-size: 17px; line-height: 24px; font-weight: 700; } .factory-calendar .industrial-panel-head p { margin: 2px 0 0; color: rgba(221, 239, 246, 0.58); font-size: 12px; line-height: 18px; } .factory-calendar .schedule-analysis-body { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 18px; align-items: center; } .factory-calendar .schedule-radar { position: relative; width: 204px; height: 204px; margin: 0 auto; border: 1px solid rgba(49, 231, 204, 0.22); border-radius: 50%; background: linear-gradient(90deg, transparent 49%, rgba(49, 231, 204, 0.12) 50%, transparent 51%), linear-gradient(0deg, transparent 49%, rgba(69, 167, 255, 0.12) 50%, transparent 51%), rgba(5, 19, 28, 0.7); box-shadow: inset 0 0 24px rgba(49, 231, 204, 0.08), 0 18px 28px rgba(0, 0, 0, 0.24); } .factory-calendar .schedule-radar::before { content: ''; position: absolute; inset: 16px; border: 1px dashed rgba(174, 235, 246, 0.26); border-radius: 50%; } .factory-calendar .schedule-donut { position: absolute; inset: 29px; border-radius: 50%; box-shadow: inset 8px 10px 14px rgba(255, 255, 255, 0.16), inset -10px -13px 18px rgba(0, 0, 0, 0.22); } .factory-calendar .schedule-donut-center { position: absolute; inset: 35px; display: flex; align-items: center; justify-content: center; flex-direction: column; border: 1px solid rgba(255, 255, 255, 0.26); border-radius: 50%; background: linear-gradient(180deg, #edf8fb, #bdd5dc); color: #07131b; box-shadow: 0 10px 18px rgba(0, 0, 0, 0.28); } .factory-calendar .schedule-donut-center strong { font-size: 30px; line-height: 36px; font-weight: 800; font-variant-numeric: tabular-nums; } .factory-calendar .schedule-donut-center span { color: #365568; font-size: 12px; line-height: 18px; } .factory-calendar .schedule-segments, .factory-calendar .month-telemetry-list, .factory-calendar .type-distribution { display: flex; flex-direction: column; gap: 10px; } .factory-calendar .schedule-segment-row, .factory-calendar .month-telemetry-row, .factory-calendar .type-distribution-row { border: 1px solid rgba(71, 203, 218, 0.16); border-radius: 7px; background: rgba(255, 255, 255, 0.045); } .factory-calendar .schedule-segment-row, .factory-calendar .month-telemetry-row { padding: 11px 12px; } .factory-calendar .segment-meta, .factory-calendar .month-row-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; color: rgba(221, 239, 246, 0.78); font-size: 13px; line-height: 18px; } .factory-calendar .segment-meta strong, .factory-calendar .month-row-head strong { color: #f3fbff; font-weight: 800; font-variant-numeric: tabular-nums; } .factory-calendar .segment-track, .factory-calendar .month-track { height: 9px; overflow: hidden; border-radius: 9px; background: linear-gradient(90deg, rgba(174, 235, 246, 0.13) 1px, transparent 1px), rgba(2, 12, 19, 0.76); background-size: 28px 100%, 100% 100%; } .factory-calendar .segment-track i, .factory-calendar .month-track i { display: block; height: 100%; border-radius: 9px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.34), transparent 44%), var(--segment-color, var(--month-color)); box-shadow: 0 0 14px var(--segment-color, var(--month-color)); } .factory-calendar .type-distribution-row { display: grid; grid-template-columns: 66px minmax(0, 1fr); gap: 12px; align-items: center; min-height: 82px; padding: 12px; } .factory-calendar .type-orbit { display: flex; width: 56px; height: 56px; align-items: center; justify-content: center; border-radius: 50%; background: radial-gradient(circle at center, #07131b 0 55%, transparent 56%), conic-gradient(var(--type-color) 0 var(--type-percent), rgba(174, 235, 246, 0.15) var(--type-percent) 100%); box-shadow: inset 4px 5px 8px rgba(255, 255, 255, 0.1), inset -5px -6px 10px rgba(0, 0, 0, 0.2); } .factory-calendar .type-orbit strong { color: #f3fbff; font-size: 18px; line-height: 24px; font-weight: 800; font-variant-numeric: tabular-nums; } .factory-calendar .type-copy { min-width: 0; } .factory-calendar .type-copy strong { display: block; overflow: hidden; color: #f3fbff; font-size: 15px; line-height: 22px; text-overflow: ellipsis; white-space: nowrap; } .factory-calendar .type-copy span { display: block; overflow: hidden; color: rgba(221, 239, 246, 0.62); font-size: 12px; line-height: 18px; text-overflow: ellipsis; white-space: nowrap; } .factory-calendar .conflict-analysis-body { display: grid; grid-template-columns: 118px minmax(0, 1fr); gap: 14px; align-items: stretch; } .factory-calendar .conflict-total { display: flex; min-height: 148px; align-items: center; justify-content: center; flex-direction: column; border: 1px solid rgba(49, 231, 204, 0.18); border-radius: 8px; background: linear-gradient(160deg, rgba(49, 231, 204, 0.1), rgba(255, 255, 255, 0.035)); } .factory-calendar .conflict-total.danger { border-color: rgba(244, 114, 114, 0.28); background: linear-gradient(160deg, rgba(244, 114, 114, 0.13), rgba(255, 255, 255, 0.035)); } .factory-calendar .conflict-total span { color: rgba(221, 239, 246, 0.66); font-size: 12px; line-height: 18px; } .factory-calendar .conflict-total strong { color: #74f8d9; font-size: 42px; line-height: 50px; font-weight: 800; font-variant-numeric: tabular-nums; } .factory-calendar .conflict-total.danger strong { color: #ff8b8b; } .factory-calendar .conflict-bars { display: grid; grid-template-columns: repeat(6, minmax(26px, 1fr)); gap: 10px; align-items: end; min-height: 148px; padding: 12px 8px 0; border: 1px solid rgba(71, 203, 218, 0.14); border-radius: 8px; background: linear-gradient(rgba(174, 235, 246, 0.1) 1px, transparent 1px), rgba(2, 12, 19, 0.36); background-size: 100% 34px, 100% 100%; } .factory-calendar .conflict-bar { display: flex; min-width: 0; height: 124px; align-items: center; justify-content: flex-end; flex-direction: column; gap: 6px; } .factory-calendar .conflict-bar span { position: relative; display: flex; width: 100%; min-height: 6px; max-width: 36px; align-items: flex-start; justify-content: center; border-radius: 7px 7px 2px 2px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.34), transparent 38%), linear-gradient(180deg, #ff9b81, #f15363); box-shadow: 0 0 12px rgba(241, 83, 99, 0.22); } .factory-calendar .conflict-bar b { position: absolute; top: -20px; color: #ffd1d1; font-size: 12px; font-weight: 800; line-height: 16px; font-variant-numeric: tabular-nums; } .factory-calendar .conflict-bar em { overflow: hidden; width: 100%; color: rgba(221, 239, 246, 0.62); font-size: 12px; line-height: 16px; text-align: center; text-overflow: ellipsis; white-space: nowrap; font-style: normal; } @media (max-width: 1360px) { .factory-calendar .industrial-command, .factory-calendar .industrial-main-grid, .factory-calendar .schedule-analysis-body { grid-template-columns: 1fr; } .factory-calendar .industrial-main-grid { grid-template-areas: 'schedule' 'types' 'month' 'conflict'; } } @media (max-width: 1100px) { .factory-calendar .industrial-kpi-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 768px) { .factory-calendar .industrial-stat-board, .factory-calendar .industrial-command, .factory-calendar .industrial-panel { padding: 14px; } .factory-calendar .command-copy h3 { font-size: 22px; line-height: 30px; } .factory-calendar .command-status, .factory-calendar .industrial-kpi-strip, .factory-calendar .conflict-analysis-body { grid-template-columns: 1fr; } .factory-calendar .schedule-radar { width: 178px; height: 178px; } } .factory-calendar .industrial-stat-board { color: #203447; border-color: rgba(55, 145, 190, 0.26); background: linear-gradient(90deg, rgba(43, 135, 190, 0.08) 1px, transparent 1px), linear-gradient(rgba(38, 180, 165, 0.07) 1px, transparent 1px), radial-gradient(circle at 14% 10%, rgba(52, 211, 190, 0.18), transparent 28%), radial-gradient(circle at 88% 18%, rgba(78, 145, 255, 0.16), transparent 30%), linear-gradient(135deg, #f3f9fc 0%, #eaf5f9 46%, #f7fbfd 100%); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.86), inset 0 0 0 1px rgba(255, 255, 255, 0.64), 0 16px 32px rgba(40, 94, 128, 0.1); } .factory-calendar .industrial-stat-board::after { border-color: rgba(55, 145, 190, 0.14); } .factory-calendar .grid-node { background: #f6fbfd; } .factory-calendar .industrial-command, .factory-calendar .industrial-panel, .factory-calendar .industrial-kpi { border-color: rgba(55, 145, 190, 0.22); background: linear-gradient(135deg, rgba(255, 255, 255, 0.92), rgba(255, 255, 255, 0.5) 45%, rgba(229, 246, 249, 0.7)), rgba(255, 255, 255, 0.76); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.92), inset 0 -18px 38px rgba(42, 145, 176, 0.04), 0 12px 26px rgba(33, 83, 116, 0.1); } .factory-calendar .industrial-command { background: linear-gradient(100deg, rgba(55, 210, 190, 0.18), transparent 38%), linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(234, 248, 251, 0.72)), rgba(255, 255, 255, 0.82); } .factory-calendar .command-kicker, .factory-calendar .industrial-panel-head span { color: #168fb3; } .factory-calendar .command-copy h3, .factory-calendar .industrial-panel-head strong, .factory-calendar .industrial-kpi-copy strong, .factory-calendar .command-summary strong, .factory-calendar .segment-meta strong, .factory-calendar .month-row-head strong, .factory-calendar .type-copy strong { color: #183044; text-shadow: none; } .factory-calendar .command-copy p, .factory-calendar .industrial-panel-head p, .factory-calendar .industrial-kpi-copy span, .factory-calendar .industrial-kpi-copy em, .factory-calendar .health-gauge span, .factory-calendar .health-gauge em, .factory-calendar .command-summary span, .factory-calendar .segment-meta, .factory-calendar .month-row-head, .factory-calendar .type-copy span, .factory-calendar .conflict-total span, .factory-calendar .conflict-bar em { color: #65798a; } .factory-calendar .health-gauge, .factory-calendar .command-summary div, .factory-calendar .schedule-segment-row, .factory-calendar .month-telemetry-row, .factory-calendar .type-distribution-row, .factory-calendar .conflict-total { border-color: rgba(65, 160, 190, 0.18); background: linear-gradient(135deg, rgba(255, 255, 255, 0.78), rgba(229, 248, 249, 0.62)), rgba(255, 255, 255, 0.66); } .factory-calendar .industrial-kpi-icon { border-color: rgba(65, 160, 190, 0.22); background: rgba(237, 249, 251, 0.9); } .factory-calendar .health-ring { background: radial-gradient(circle at center, #f8fcfd 0 54%, transparent 55%), conic-gradient(#21bfae 0 70%, rgba(60, 141, 225, 0.18) 70% 100%); box-shadow: inset 4px 5px 10px rgba(255, 255, 255, 0.78), inset -5px -7px 12px rgba(66, 121, 148, 0.14), 0 10px 22px rgba(33, 191, 174, 0.12); } .factory-calendar .health-ring strong, .factory-calendar .conflict-total strong { color: #0b9f91; } .factory-calendar .schedule-radar { border-color: rgba(65, 160, 190, 0.22); background: linear-gradient(90deg, transparent 49%, rgba(32, 172, 184, 0.12) 50%, transparent 51%), linear-gradient(0deg, transparent 49%, rgba(65, 132, 220, 0.11) 50%, transparent 51%), rgba(247, 252, 253, 0.92); box-shadow: inset 0 0 24px rgba(54, 178, 190, 0.08), 0 16px 24px rgba(33, 83, 116, 0.1); } .factory-calendar .schedule-radar::before { border-color: rgba(65, 160, 190, 0.26); } .factory-calendar .schedule-donut { box-shadow: inset 8px 10px 14px rgba(255, 255, 255, 0.28), inset -10px -13px 18px rgba(43, 92, 120, 0.12), 0 12px 22px rgba(33, 83, 116, 0.14); } .factory-calendar .schedule-donut-center { border-color: rgba(65, 160, 190, 0.2); background: linear-gradient(180deg, #ffffff, #e5f4f8); color: #173247; box-shadow: inset 2px 3px 8px rgba(255, 255, 255, 0.8), 0 10px 18px rgba(33, 83, 116, 0.12); } .factory-calendar .schedule-donut-center span { color: #607789; } .factory-calendar .segment-track, .factory-calendar .month-track { background: linear-gradient(90deg, rgba(63, 150, 188, 0.12) 1px, transparent 1px), rgba(220, 237, 243, 0.78); } .factory-calendar .type-orbit { background: radial-gradient(circle at center, #f9fdfe 0 55%, transparent 56%), conic-gradient(var(--type-color) 0 var(--type-percent), rgba(96, 153, 180, 0.16) var(--type-percent) 100%); box-shadow: inset 4px 5px 8px rgba(255, 255, 255, 0.7), inset -5px -6px 10px rgba(66, 121, 148, 0.14); } .factory-calendar .type-orbit strong { color: #173247; } .factory-calendar .conflict-bars { border-color: rgba(65, 160, 190, 0.16); background: linear-gradient(rgba(63, 150, 188, 0.11) 1px, transparent 1px), rgba(239, 248, 251, 0.72); } .factory-calendar .conflict-bar em { color: #607789; } .factory-calendar .conflict-total.danger { border-color: rgba(244, 114, 114, 0.3); background: linear-gradient(160deg, rgba(255, 233, 233, 0.9), rgba(255, 255, 255, 0.7)), rgba(255, 255, 255, 0.72); } .factory-calendar .industrial-main-grid { align-items: start; } .factory-calendar .conflict-analysis { align-self: start; } .factory-calendar .conflict-analysis .industrial-panel-head { margin-bottom: 10px; } .factory-calendar .conflict-analysis-body { grid-template-columns: 136px minmax(0, 1fr); gap: 12px; align-items: stretch; } .factory-calendar .conflict-total { min-height: 118px; padding: 10px 8px; } .factory-calendar .conflict-total strong { font-size: 38px; line-height: 44px; } .factory-calendar .conflict-bars { min-height: 118px; padding: 10px 10px 2px; align-items: end; } .factory-calendar .conflict-bar { height: 98px; gap: 4px; } .factory-calendar .conflict-bar span { max-width: 42px; } .factory-calendar .industrial-main-grid { display: grid; grid-template-columns: minmax(0, 1.18fr) minmax(360px, 0.82fr); grid-template-areas: none; align-items: start; } .factory-calendar .industrial-column { display: flex; min-width: 0; flex-direction: column; gap: 14px; } .factory-calendar .schedule-analysis, .factory-calendar .type-analysis, .factory-calendar .month-analysis, .factory-calendar .conflict-analysis { grid-area: auto; } .factory-calendar .schedule-analysis .industrial-panel-head { margin-bottom: 10px; } .factory-calendar .schedule-analysis-body { grid-template-columns: 190px minmax(0, 1fr); gap: 16px; } .factory-calendar .schedule-radar { width: 172px; height: 172px; } .factory-calendar .schedule-radar::before { inset: 12px; } .factory-calendar .schedule-donut { inset: 24px; } .factory-calendar .schedule-donut-center { inset: 31px; } .factory-calendar .schedule-donut-center strong { font-size: 26px; line-height: 32px; } .factory-calendar .schedule-segments { gap: 8px; } .factory-calendar .schedule-segment-row { padding: 9px 11px; } .factory-calendar .conflict-analysis { min-height: 0; } @media (max-width: 1360px) { .factory-calendar .industrial-main-grid { grid-template-columns: 1fr; } } .factory-calendar .industrial-main-grid { grid-template-columns: minmax(0, 1.26fr) minmax(460px, 0.74fr); align-items: stretch; } .factory-calendar .industrial-column { height: 100%; } .factory-calendar .industrial-column-side { display: grid; grid-template-rows: auto minmax(240px, 1fr); align-content: stretch; } .factory-calendar .industrial-column-side > .industrial-panel { width: 100%; box-sizing: border-box; } .factory-calendar .schedule-analysis-body { grid-template-columns: 168px minmax(0, 1fr); gap: 14px; } .factory-calendar .schedule-radar { width: 152px; height: 152px; } .factory-calendar .schedule-radar::before { inset: 10px; } .factory-calendar .schedule-donut { inset: 20px; } .factory-calendar .schedule-donut-center { inset: 28px; } .factory-calendar .schedule-donut-center strong { font-size: 25px; line-height: 30px; } .factory-calendar .schedule-segments { gap: 7px; } .factory-calendar .schedule-segment-row { padding: 8px 11px; } .factory-calendar .schedule-segment-row, .factory-calendar .month-telemetry-row, .factory-calendar .type-distribution-row, .factory-calendar .conflict-total, .factory-calendar .conflict-bars { border-color: rgba(74, 162, 196, 0.22); background: linear-gradient(135deg, rgba(255, 255, 255, 0.88), rgba(234, 248, 250, 0.72)), rgba(255, 255, 255, 0.72); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.88), 0 8px 18px rgba(45, 95, 123, 0.06); } .factory-calendar .conflict-analysis { display: flex; min-height: 252px; flex-direction: column; overflow: hidden; } .factory-calendar .conflict-analysis .industrial-panel-head { margin-bottom: 12px; } .factory-calendar .conflict-analysis-body { display: grid; flex: 1; grid-template-columns: 148px minmax(0, 1fr); gap: 14px; align-items: stretch; } .factory-calendar .conflict-total { position: relative; min-height: 164px; padding: 14px 12px; border-radius: 8px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.9), rgba(232, 248, 249, 0.72)), linear-gradient(135deg, rgba(31, 184, 168, 0.12), transparent 58%); } .factory-calendar .conflict-total::after { content: ''; position: absolute; right: 12px; bottom: 12px; left: 12px; height: 3px; border-radius: 3px; background: linear-gradient(90deg, #2bc4b6, rgba(48, 142, 232, 0.28)); } .factory-calendar .conflict-total.danger::after { background: linear-gradient(90deg, #ff7b72, rgba(255, 176, 88, 0.35)); } .factory-calendar .conflict-total span { max-width: 94px; text-align: center; } .factory-calendar .conflict-total strong { margin-top: 6px; color: #0b9f91; font-size: 44px; line-height: 52px; } .factory-calendar .conflict-bars { position: relative; display: grid; min-height: 164px; grid-template-columns: repeat(6, minmax(34px, 1fr)); gap: 12px; align-items: end; padding: 22px 16px 12px; overflow: hidden; border-radius: 8px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.86), rgba(237, 249, 251, 0.7)), linear-gradient(rgba(66, 151, 186, 0.12) 1px, transparent 1px); background-size: 100% 100%, 100% 32px; } .factory-calendar .conflict-bars::before { content: ''; position: absolute; right: 14px; bottom: 38px; left: 14px; height: 1px; background: linear-gradient(90deg, rgba(43, 196, 182, 0.18), rgba(48, 142, 232, 0.28), rgba(43, 196, 182, 0.18)); } .factory-calendar .conflict-bar { position: relative; z-index: 1; display: flex; height: 132px; min-width: 0; align-items: center; justify-content: flex-end; flex-direction: column; gap: 7px; } .factory-calendar .conflict-bar span { position: relative; display: flex; width: calc(100% - 8px); min-height: 8px; max-width: 50px; align-items: flex-start; justify-content: center; border: 1px solid rgba(255, 255, 255, 0.68); border-radius: 5px 5px 3px 3px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.36), transparent 45%), linear-gradient(180deg, #ff9b8f, #f05d68); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.42), 0 7px 12px rgba(229, 87, 97, 0.18); } .factory-calendar .conflict-bar.is-zero span { background: linear-gradient(180deg, rgba(255, 255, 255, 0.52), transparent 45%), linear-gradient(180deg, #8fe2e0, #35b7c8); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5), 0 6px 12px rgba(53, 183, 200, 0.16); } .factory-calendar .conflict-bar b { top: -21px; color: #d86363; font-size: 12px; line-height: 16px; } .factory-calendar .conflict-bar.is-zero b { color: #22a6a2; } .factory-calendar .conflict-bar em { color: #5f7383; font-size: 12px; line-height: 16px; } @media (max-width: 1500px) { .factory-calendar .industrial-main-grid { grid-template-columns: minmax(0, 1.12fr) minmax(420px, 0.88fr); } .factory-calendar .conflict-analysis-body { grid-template-columns: 130px minmax(0, 1fr); } } @media (max-width: 1360px) { .factory-calendar .industrial-main-grid, .factory-calendar .schedule-analysis-body, .factory-calendar .conflict-analysis-body { grid-template-columns: 1fr; } .factory-calendar .industrial-column-side { display: flex; } .factory-calendar .conflict-total, .factory-calendar .conflict-bars { min-height: 132px; } } .factory-calendar .conflict-analysis { min-height: 242px; } .factory-calendar .conflict-analysis-body { display: flex; flex: 1; flex-direction: column; gap: 12px; } .factory-calendar .conflict-total { min-height: 64px; padding: 11px 16px; align-items: center; justify-content: space-between; flex-direction: row; border-radius: 8px; } .factory-calendar .conflict-total span { max-width: none; color: #607789; font-size: 13px; line-height: 20px; text-align: left; } .factory-calendar .conflict-total strong { margin-top: 0; font-size: 34px; line-height: 40px; } .factory-calendar .conflict-total::after { right: auto; bottom: 12px; left: 16px; width: 118px; } .factory-calendar .conflict-bars { min-height: 126px; grid-template-columns: repeat(6, minmax(58px, 1fr)); gap: 8px; padding: 22px 14px 12px; align-items: end; } .factory-calendar .conflict-bars::before { right: 14px; bottom: 35px; left: 14px; } .factory-calendar .conflict-bar { height: 104px; gap: 6px; } .factory-calendar .conflict-bar span { width: 38px; min-height: 8px; max-width: 38px; } .factory-calendar .conflict-bar b { top: -20px; font-size: 12px; line-height: 16px; } .factory-calendar .conflict-bar em { width: 58px; min-width: 58px; overflow: visible; color: #587284; font-size: 12px; line-height: 16px; text-overflow: clip; white-space: nowrap; } @media (max-width: 1500px) { .factory-calendar .conflict-bars { grid-template-columns: repeat(6, minmax(52px, 1fr)); gap: 6px; padding-right: 10px; padding-left: 10px; } .factory-calendar .conflict-bar em { width: 52px; min-width: 52px; } } .factory-calendar .schedule-radar { width: 168px; height: 168px; border: 1px solid rgba(70, 183, 207, 0.26); background: radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.92) 0 40%, transparent 41%), repeating-conic-gradient(from -2deg, rgba(33, 160, 185, 0.24) 0deg 1deg, transparent 1deg 10deg), radial-gradient(circle at 50% 50%, rgba(45, 196, 186, 0.14), transparent 62%), linear-gradient(145deg, rgba(255, 255, 255, 0.92), rgba(228, 247, 250, 0.72)); box-shadow: inset 0 0 0 10px rgba(238, 249, 251, 0.78), inset 0 0 0 11px rgba(65, 168, 196, 0.12), inset 10px 14px 22px rgba(255, 255, 255, 0.82), inset -12px -16px 24px rgba(55, 112, 145, 0.12), 0 18px 28px rgba(36, 96, 128, 0.14); } .factory-calendar .schedule-radar::before { inset: 18px; border: 1px dashed rgba(63, 158, 190, 0.28); background: linear-gradient(90deg, transparent 49%, rgba(63, 158, 190, 0.18) 50%, transparent 51%), linear-gradient(0deg, transparent 49%, rgba(36, 190, 177, 0.14) 50%, transparent 51%); box-shadow: inset 0 0 18px rgba(39, 172, 186, 0.08); } .factory-calendar .schedule-radar::after { content: ''; position: absolute; inset: 4px; border-radius: 50%; background: conic-gradient(from 218deg, transparent 0 66%, rgba(255, 255, 255, 0.72) 72%, transparent 82%), radial-gradient(circle at 32% 22%, rgba(255, 255, 255, 0.64), transparent 26%); opacity: 0.7; pointer-events: none; mix-blend-mode: screen; } .factory-calendar .schedule-donut { inset: 30px; overflow: hidden; border: 1px solid rgba(255, 255, 255, 0.7); box-shadow: inset 7px 9px 12px rgba(255, 255, 255, 0.32), inset -9px -12px 16px rgba(39, 90, 122, 0.18), 0 12px 22px rgba(36, 96, 128, 0.16); } .factory-calendar .schedule-donut::before { content: ''; position: absolute; inset: 0; border-radius: 50%; background: linear-gradient(135deg, rgba(255, 255, 255, 0.42), transparent 38%), radial-gradient(circle at 70% 76%, rgba(23, 118, 180, 0.18), transparent 32%); pointer-events: none; } .factory-calendar .schedule-donut::after { content: ''; position: absolute; inset: 11px; border: 1px solid rgba(255, 255, 255, 0.62); border-radius: 50%; box-shadow: inset 0 0 0 1px rgba(54, 160, 186, 0.12), 0 0 16px rgba(45, 196, 186, 0.1); pointer-events: none; } .factory-calendar .schedule-donut-center { inset: 30px; z-index: 1; border: 1px solid rgba(58, 160, 188, 0.18); background: radial-gradient(circle at 36% 26%, rgba(255, 255, 255, 0.95), transparent 34%), linear-gradient(145deg, #ffffff, #e7f6f8 60%, #d3e9ef); box-shadow: inset 3px 4px 9px rgba(255, 255, 255, 0.86), inset -5px -7px 12px rgba(68, 117, 148, 0.16), 0 8px 16px rgba(36, 96, 128, 0.14); } .factory-calendar .schedule-donut-center strong { color: #173247; font-size: 28px; line-height: 32px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.9); } .factory-calendar .schedule-donut-center span { margin-top: 1px; color: #5b7486; font-size: 12px; line-height: 17px; } .factory-calendar .schedule-analysis-body { grid-template-columns: 220px minmax(0, 1fr); } .factory-calendar .schedule-radar { width: 190px; height: 190px; flex: 0 0 190px; } .factory-calendar .schedule-radar::before { inset: 20px; } .factory-calendar .schedule-donut { inset: 28px; } .factory-calendar .schedule-donut::after { inset: 12px; } .factory-calendar .schedule-donut-center { inset: 26px; } .factory-calendar .schedule-donut-center strong { font-size: 29px; line-height: 34px; } .factory-calendar .schedule-donut-center span { margin-top: 2px; line-height: 18px; white-space: nowrap; } .factory-calendar .industrial-stat-board { contain: paint; overflow-anchor: none; } .factory-calendar .industrial-stat-board.is-stat-scrolling { pointer-events: none; } .factory-calendar .industrial-stat-board.is-stat-scrolling *, .factory-calendar .industrial-stat-board.is-stat-scrolling *::before, .factory-calendar .industrial-stat-board.is-stat-scrolling *::after { transition: none !important; } @at-root body.factory-calendar-stat-scrolling .factory-calendar-stat-tooltip { display: none !important; } .factory-calendar .schedule-radar, .factory-calendar .schedule-segment-row, .factory-calendar .month-telemetry-row, .factory-calendar .type-distribution-row, .factory-calendar .conflict-bar { cursor: pointer; transition: border-color 0.22s ease, box-shadow 0.22s ease, transform 0.22s ease, background 0.22s ease; will-change: transform; } .factory-calendar .industrial-stat-board:not(.is-stat-scrolling) .schedule-radar:hover, .factory-calendar .industrial-stat-board:not(.is-stat-scrolling) .schedule-segment-row:hover, .factory-calendar .industrial-stat-board:not(.is-stat-scrolling) .month-telemetry-row:hover, .factory-calendar .industrial-stat-board:not(.is-stat-scrolling) .type-distribution-row:hover { border-color: rgba(35, 178, 208, 0.46); background: linear-gradient(135deg, rgba(255, 255, 255, 0.96), rgba(222, 249, 251, 0.82)), rgba(255, 255, 255, 0.84); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.94), 0 10px 22px rgba(35, 132, 168, 0.13), 0 0 0 3px rgba(52, 211, 190, 0.08); transform: translateY(-2px); } .factory-calendar .industrial-stat-board:not(.is-stat-scrolling) .schedule-radar:hover { animation: factoryStatTipPulse 0.48s ease-out both; } .factory-calendar .industrial-stat-board:not(.is-stat-scrolling) .schedule-segment-row:hover .segment-track i, .factory-calendar .industrial-stat-board:not(.is-stat-scrolling) .month-telemetry-row:hover .month-track i { filter: saturate(1.12); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.36), 0 0 16px var(--segment-color, var(--month-color)); } .factory-calendar .industrial-stat-board:not(.is-stat-scrolling) .type-distribution-row:hover .type-orbit { transform: scale(1.05); box-shadow: inset 4px 5px 8px rgba(255, 255, 255, 0.76), inset -5px -6px 10px rgba(66, 121, 148, 0.14), 0 8px 16px rgba(35, 132, 168, 0.12); } .factory-calendar .type-orbit, .factory-calendar .conflict-bar span { transition: box-shadow 0.22s ease, transform 0.22s ease, filter 0.22s ease; will-change: transform; } .factory-calendar .industrial-stat-board:not(.is-stat-scrolling) .conflict-bar:hover span { filter: saturate(1.12); transform: translateY(-3px) scaleY(1.04); transform-origin: center bottom; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.54), 0 8px 16px rgba(53, 183, 200, 0.22); } .factory-calendar .industrial-stat-board:not(.is-stat-scrolling) .conflict-bar:not(.is-zero):hover span { box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5), 0 8px 16px rgba(229, 87, 97, 0.22); } .factory-calendar .industrial-stat-board:not(.is-stat-scrolling) .conflict-bar:hover em { color: #16384d; font-weight: 600; } .factory-calendar .industrial-stat-board .industrial-kpi-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); } .factory-calendar .industrial-stat-board .industrial-main-grid { grid-template-columns: minmax(0, 1.42fr) minmax(360px, 0.58fr); grid-template-areas: 'schedule types' 'month month'; align-items: stretch; } .factory-calendar .industrial-stat-board .schedule-analysis { grid-area: schedule; } .factory-calendar .industrial-stat-board .type-analysis { grid-area: types; } .factory-calendar .industrial-stat-board .type-analysis { display: flex; width: 100%; min-height: 0; flex-direction: column; } .factory-calendar .industrial-stat-board .type-distribution { display: grid; flex: 1; grid-template-rows: repeat(3, minmax(92px, 1fr)); gap: 12px; } .factory-calendar .industrial-stat-board .type-distribution-row { grid-template-columns: 68px minmax(0, 1fr); min-height: 92px; padding: 14px; background: linear-gradient(135deg, rgba(255, 255, 255, 0.92), rgba(231, 249, 252, 0.78)), rgba(255, 255, 255, 0.8); } .factory-calendar .industrial-stat-board .type-orbit { width: 58px; height: 58px; } .factory-calendar .industrial-stat-board .month-analysis { grid-area: month; grid-column: 1 / -1; min-height: 0; } .factory-calendar .industrial-stat-board .month-telemetry-list { display: grid; grid-template-columns: repeat(5, minmax(150px, 1fr)); gap: 12px; } .factory-calendar .industrial-stat-board .month-telemetry-row { display: flex; min-height: 72px; justify-content: center; flex-direction: column; padding: 14px 16px; } .factory-calendar .industrial-stat-board .schedule-analysis-body { grid-template-columns: 210px minmax(0, 1fr); gap: 20px; } .factory-calendar .industrial-stat-board .schedule-segments { gap: 12px; } .factory-calendar .industrial-stat-board .schedule-segment-row { padding: 13px 15px; } @media (max-width: 1500px) { .factory-calendar .industrial-stat-board .industrial-main-grid { grid-template-columns: minmax(0, 1.24fr) minmax(330px, 0.76fr); } .factory-calendar .industrial-stat-board .schedule-analysis-body { grid-template-columns: 188px minmax(0, 1fr); } .factory-calendar .industrial-stat-board .month-telemetry-list { grid-template-columns: repeat(3, minmax(180px, 1fr)); } } @media (max-width: 1360px) { .factory-calendar .industrial-stat-board .industrial-kpi-strip, .factory-calendar .industrial-stat-board .industrial-main-grid, .factory-calendar .industrial-stat-board .schedule-analysis-body, .factory-calendar .industrial-stat-board .month-telemetry-list { grid-template-columns: 1fr; } .factory-calendar .industrial-stat-board .industrial-main-grid { grid-template-areas: 'schedule' 'types' 'month'; } .factory-calendar .industrial-stat-board .type-distribution { grid-template-rows: none; } } .factory-calendar .industrial-stat-board .industrial-kpi-strip { grid-template-columns: repeat(4, minmax(0, 1fr)); } .factory-calendar .industrial-stat-board .industrial-main-grid { grid-template-columns: minmax(0, 1.28fr) minmax(380px, 0.72fr); grid-template-areas: 'schedule types' 'month conflict'; } .factory-calendar .industrial-stat-board .month-analysis { grid-area: month; grid-column: auto; } .factory-calendar .industrial-stat-board .conflict-analysis { display: flex; grid-area: conflict; min-height: 0; flex-direction: column; } .factory-calendar .industrial-stat-board .month-telemetry-list { grid-template-columns: repeat(2, minmax(180px, 1fr)); } .factory-calendar .industrial-stat-board .month-telemetry-row { min-height: 76px; } .factory-calendar .industrial-stat-board .conflict-analysis-body { display: grid; flex: 1; grid-template-columns: 1fr; grid-template-rows: auto minmax(168px, 1fr); gap: 14px; } .factory-calendar .industrial-stat-board .conflict-total { position: relative; display: flex; min-height: 74px; align-items: center; justify-content: space-between; flex-direction: row; padding: 14px 18px 14px 20px; overflow: hidden; border: 1px solid rgba(74, 162, 196, 0.24); border-radius: 8px; background: linear-gradient(135deg, rgba(255, 255, 255, 0.95), rgba(231, 249, 252, 0.78)), rgba(255, 255, 255, 0.82); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9), 0 8px 18px rgba(45, 95, 123, 0.07); } .factory-calendar .industrial-stat-board .conflict-total::before { content: ''; position: absolute; left: 0; top: 14px; bottom: 14px; width: 4px; border-radius: 0 4px 4px 0; background: linear-gradient(180deg, #2bc4b6, #308ee8); } .factory-calendar .industrial-stat-board .conflict-total.danger::before { background: linear-gradient(180deg, #ff8f70, #f05d68); } .factory-calendar .industrial-stat-board .conflict-total span { color: #607789; font-size: 14px; line-height: 22px; font-weight: 600; } .factory-calendar .industrial-stat-board .conflict-total strong { margin-left: auto; color: #0b9f91; font-size: 36px; line-height: 42px; } .factory-calendar .industrial-stat-board .conflict-total.danger strong { color: #df5a63; } .factory-calendar .industrial-stat-board .conflict-total em { margin-left: 10px; color: #6d8292; font-size: 12px; line-height: 18px; font-style: normal; } .factory-calendar .industrial-stat-board .conflict-bars { position: relative; display: grid; height: 100%; min-height: 214px; grid-template-columns: repeat(6, minmax(54px, 1fr)); gap: 12px; align-items: end; padding: 32px 18px 18px; overflow: hidden; border: 1px solid rgba(74, 162, 196, 0.22); border-radius: 8px; background: linear-gradient(rgba(66, 151, 186, 0.11) 1px, transparent 1px), linear-gradient(180deg, rgba(255, 255, 255, 0.9), rgba(237, 249, 251, 0.72)); background-size: 100% 34px, 100% 100%; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.88), 0 8px 18px rgba(45, 95, 123, 0.06); } .factory-calendar .industrial-stat-board .conflict-bar { display: flex; height: 158px; min-width: 0; align-items: center; justify-content: flex-end; flex-direction: column; gap: 9px; } .factory-calendar .industrial-stat-board .conflict-bar span { position: relative; display: flex; width: min(46px, 70%); min-height: 8px; max-width: 46px; align-items: flex-start; justify-content: center; border: 1px solid rgba(255, 255, 255, 0.68); border-radius: 6px 6px 3px 3px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.36), transparent 45%), linear-gradient(180deg, #ff9b8f, #f05d68); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.44), 0 7px 13px rgba(229, 87, 97, 0.2); } .factory-calendar .industrial-stat-board .conflict-bar.is-zero span { background: linear-gradient(180deg, rgba(255, 255, 255, 0.52), transparent 45%), linear-gradient(180deg, #8fe2e0, #35b7c8); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5), 0 6px 12px rgba(53, 183, 200, 0.16); } .factory-calendar .industrial-stat-board .conflict-bar b { position: absolute; top: -24px; color: #d86363; font-size: 13px; line-height: 18px; font-weight: 700; } .factory-calendar .industrial-stat-board .conflict-bar.is-zero b { color: #22a6a2; } .factory-calendar .industrial-stat-board .conflict-bar em { width: 64px; overflow: visible; color: #587284; font-size: 12px; line-height: 16px; text-align: center; text-overflow: clip; white-space: nowrap; font-style: normal; } @media (max-width: 1500px) { .factory-calendar .industrial-stat-board .industrial-main-grid { grid-template-columns: minmax(0, 1.12fr) minmax(350px, 0.88fr); } .factory-calendar .industrial-stat-board .industrial-kpi-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 1360px) { .factory-calendar .industrial-stat-board .industrial-main-grid { grid-template-columns: 1fr; grid-template-areas: 'schedule' 'types' 'month' 'conflict'; } .factory-calendar .industrial-stat-board .month-telemetry-list { grid-template-columns: repeat(3, minmax(160px, 1fr)); } } @media (max-width: 900px) { .factory-calendar .industrial-stat-board .industrial-kpi-strip, .factory-calendar .industrial-stat-board .month-telemetry-list { grid-template-columns: 1fr; } } @keyframes factoryStatTipPulse { 0% { transform: translateY(0) scale(1); } 58% { transform: translateY(-2px) scale(1.015); } 100% { transform: translateY(-2px) scale(1); } }