:root{--g-arrow-color: #1f2937;--g-bar-color: #fff;--g-bar-border: #fff;--g-tick-color-thick: #ededed;--g-tick-color: #f3f3f3;--g-actions-background: #f3f3f3;--g-border-color: #ebeff2;--g-text-muted: #7c7c7c;--g-text-light: #fff;--g-text-dark: #171717;--g-progress-color: #dbdbdb;--g-handle-color: #37352f;--g-weekend-label-color: #dcdce4;--g-expected-progress: #c4c4e9;--g-header-background: #fff;--g-row-color: #fdfdfd;--g-row-border-color: #c7c7c7;--g-today-highlight: #37352f;--g-popup-actions: #ebeff2;--g-weekend-highlight-color: #f7f7f7}html[data-theme=dark]{--g-arrow-color: #e5e5e5;--g-bar-color: #2a2a2a;--g-bar-border: #3a3a3a;--g-tick-color-thick: #1a1a1a;--g-tick-color: #0a0a0a;--g-actions-background: #1a1a1a;--g-border-color: #2a2a2a;--g-text-muted: #999999;--g-text-light: #ffffff;--g-text-dark: #f5f5f5;--g-progress-color: #4a4a4a;--g-handle-color: #d0d0d0;--g-weekend-label-color: #3a3a3a;--g-expected-progress: #5a5a5a;--g-header-background: #0a0a0a;--g-row-color: #141414;--g-row-border-color: #2a2a2a;--g-today-highlight: #999999;--g-popup-actions: #1a1a1a;--g-weekend-highlight-color: #0f0f0f}.gantt-container{line-height:14.5px;position:relative;overflow:auto;font-size:12px;height:var(--gv-grid-height);width:100%;border-radius:8px;isolation:isolate}.gantt-container .popup-wrapper{position:absolute;top:0;left:0;background:var(--g-header-background);box-shadow:0 10px 24px -3px #0003;padding:10px;border-radius:5px;width:max-content;z-index:1000}.gantt-container .popup-wrapper .title{margin-bottom:2px;color:var(--g-text-dark);font-size:.85rem;font-weight:650;line-height:15px}.gantt-container .popup-wrapper .subtitle{color:var(--g-text-dark);font-size:.8rem;margin-bottom:5px}.gantt-container .popup-wrapper .details{color:var(--g-text-muted);font-size:.7rem}.gantt-container .popup-wrapper .actions{margin-top:10px;margin-left:3px}.gantt-container .popup-wrapper .action-btn{border:none;padding:5px 8px;background-color:var(--g-popup-actions);border-right:1px solid var(--g-border-color)}.gantt-container .popup-wrapper .action-btn:hover{filter:brightness(97%)}.gantt-container .popup-wrapper .action-btn:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}.gantt-container .popup-wrapper .action-btn:last-child{border-right:none;border-top-right-radius:4px;border-bottom-right-radius:4px}.gantt-container .grid-header{height:calc(var(--gv-lower-header-height) + var(--gv-upper-header-height) + 10px);background-color:var(--g-header-background);position:sticky;top:0;left:0;border-bottom:1px solid var(--g-row-border-color);z-index:1000}.gantt-container .lower-text,.gantt-container .upper-text{text-anchor:middle}.gantt-container .upper-header{height:var(--gv-upper-header-height)}.gantt-container .lower-header{height:var(--gv-lower-header-height)}.gantt-container .lower-text{font-size:12px;position:absolute;width:calc(var(--gv-column-width) * .8);height:calc(var(--gv-lower-header-height) * .8);margin:0 calc(var(--gv-column-width) * .1);align-content:center;text-align:center;color:var(--g-text-muted)}.gantt-container .upper-text{position:absolute;width:fit-content;font-weight:500;font-size:14px;color:var(--g-text-dark);height:calc(var(--gv-lower-header-height) * .66)}.gantt-container .current-upper{position:sticky;left:0!important;padding-left:17px;background:var(--g-header-background)}.gantt-container .side-header{position:sticky;top:0;right:0;float:right;z-index:1000;line-height:20px;font-weight:400;width:max-content;margin-left:auto;padding-right:10px;padding-top:10px;background:var(--g-header-background);display:flex}.gantt-container .side-header *{transition-property:background-color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;background-color:var(--g-actions-background);border-radius:.5rem;border:none;padding:5px 8px;color:var(--g-text-dark);font-size:14px;letter-spacing:.02em;font-weight:420;box-sizing:content-box;margin-right:5px}.gantt-container .side-header *:last-child{margin-right:0}.gantt-container .side-header *:hover{filter:brightness(97.5%)}.gantt-container .side-header select{width:60px;padding-top:2px;padding-bottom:2px}.gantt-container .side-header select:focus{outline:none}.gantt-container .date-range-highlight{background-color:var(--g-progress-color);border-radius:12px;height:calc(var(--gv-lower-header-height) - 6px);top:calc(var(--gv-upper-header-height) + 5px);position:absolute}.gantt-container .current-highlight{position:absolute;background:var(--g-today-highlight);width:1px;z-index:999}.gantt-container .current-ball-highlight{position:absolute;background:var(--g-today-highlight);z-index:1001;border-radius:50%}.gantt-container .current-date-highlight{background:var(--g-today-highlight);color:var(--g-text-light);border-radius:5px}.gantt-container .holiday-label{position:absolute;top:0;left:0;opacity:0;z-index:1000;background:var(--g-weekend-label-color);border-radius:5px;padding:2px 5px}.gantt-container .holiday-label.show{opacity:100}.gantt-container .extras{position:sticky;left:0}.gantt-container .extras .adjust{position:absolute;left:8px;top:calc(var(--gv-grid-height) - 60px);background-color:var(--g-actions-background);color:var(--g-text-light);border:none;padding:8px;border-radius:3px}.gantt-container .hide{display:none}.gantt{user-select:none;-webkit-user-select:none;position:absolute}.gantt .grid-background{fill:none}.gantt .grid-row{fill:var(--g-row-color)}.gantt .row-line{stroke:var(--g-border-color)}.gantt .tick{stroke:var(--g-tick-color);stroke-width:.4}.gantt .tick.thick{stroke:var(--g-tick-color-thick);stroke-width:.7}.gantt .arrow{fill:none;stroke:var(--g-arrow-color);stroke-width:1.5}.gantt .bar-wrapper .bar{fill:var(--g-bar-color);stroke:var(--g-bar-border);stroke-width:0;transition:stroke-width .3s ease}.gantt .bar-progress{fill:var(--g-progress-color);border-radius:4px}.gantt .bar-expected-progress{fill:var(--g-expected-progress)}.gantt .bar-invalid{fill:transparent;stroke:var(--g-bar-border);stroke-width:1;stroke-dasharray:5}:is(.gantt .bar-invalid)~.bar-label{fill:var(--g-text-light)}.gantt .bar-label{fill:var(--g-text-dark);dominant-baseline:central;font-family:Helvetica;font-size:13px;font-weight:400}.gantt .bar-label.big{fill:var(--g-text-dark);text-anchor:start}.gantt .handle{fill:var(--g-handle-color);opacity:0;transition:opacity .3s ease}.gantt .handle.active,.gantt .handle.visible{cursor:ew-resize;opacity:1}.gantt .handle.progress{fill:var(--g-text-muted)}.gantt .bar-wrapper{cursor:pointer}.gantt .bar-wrapper .bar{outline:1px solid var(--g-row-border-color);border-radius:3px}.gantt .bar-wrapper:hover .bar{transition:transform .3s ease}.gantt .bar-wrapper:hover .date-range-highlight{display:block}.gantt .grid-column{fill:transparent;pointer-events:all}.gantt .grid-column:hover{fill:var(--g-weekend-highlight-color);transition:fill .1s ease}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:#f0f2f5}.page-panel{background:#fff;border-radius:10px;padding:20px;margin-bottom:16px;border:1px solid #f0f0f0;box-shadow:0 1px 2px #10182808;transition:box-shadow .2s ease}.page-panel:hover{box-shadow:0 6px 16px #1018280f}.panel-top{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:14px}.panel-title{position:relative;padding-left:12px;font-size:16px;font-weight:600;color:#1f2d3d}.panel-title:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:4px;height:16px;border-radius:2px;background:linear-gradient(180deg,#d51a22,#8f0507)}.comp-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 14px;font-size:12px;color:#606266;line-height:18px}.comp-legend-item{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.comp-legend-item i{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.panel-desc{font-size:12px;color:#909399;margin-top:4px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}@media (max-width: 1400px){.metric-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 900px){.metric-grid{grid-template-columns:repeat(2,1fr)}}.metric-card{background:#fff;border-radius:10px;border:1px solid #ebeef5;padding:14px 16px;min-width:0;overflow:hidden;transition:transform .18s ease,box-shadow .18s ease}.metric-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px #b9090c24;border-color:#f3c7c8}.metric-card .metric-title{font-size:13px;color:#909399}.metric-card .metric-num{font-size:19px;font-weight:700;line-height:1.3;margin-top:6px;color:#303133;font-variant-numeric:tabular-nums;word-break:break-all}.metric-card .metric-extra{font-size:12px;margin-top:6px;color:#909399;line-height:1.4}.metric-card.accent .metric-num{color:#b9090c}.metric-card.success .metric-num{color:#67c23a}.metric-card.danger .metric-num{color:#f56c6c}.metric-card-clickable{cursor:pointer;position:relative}.metric-card-clickable:after{content:"↗ 点击看趋势";position:absolute;right:8px;top:8px;font-size:10px;color:#c9ccd4;opacity:0;transition:opacity .15s ease}.metric-card-clickable:hover:after{opacity:1}.metric-card-selected{border-color:#b9090c!important;box-shadow:0 0 0 2px #b9090c2e,0 8px 20px #b9090c24!important}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px}.toolbar .grow{flex:1}.store-badge{display:inline-block;padding:2px 10px;border-radius:10px;background:#ecf5ff;color:#409eff;font-size:12px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0b1f3a,#1f3a5f 55%,#2f7fe0 130%)}.login-card{width:400px;background:#fff;border-radius:12px;padding:36px 32px;box-shadow:0 16px 40px #0000004d}.brand{height:56px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-weight:600;letter-spacing:1px;background:linear-gradient(90deg,#0b1f3a,#16324f)}.ant-card{border-radius:10px;border:1px solid #f0f0f0;box-shadow:0 1px 2px #10182808}.ant-card .ant-card-head{border-bottom:1px solid #f0f0f0;min-height:46px;padding:0 16px}.ant-card .ant-card-head-title{font-size:15px;color:#1f2d3d;padding:12px 0}.ant-card .ant-card-body{padding:16px}.ant-table-small .ant-table-thead>tr>th{background:#f5f7fa;color:#606266;font-weight:600}.ant-btn-primary{box-shadow:none}.ant-layout-sider{box-shadow:2px 0 8px #0000000f}.brand-side .ant-layout-sider-trigger{background:#8f0507!important}.page-panel{animation:fadeSlideIn .45s ease both}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.page-fade{animation:fadeIn .35s ease both}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.brand{height:56px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-weight:700;letter-spacing:1px;background:#ffffff1f;margin:8px;border-radius:10px;overflow:hidden;white-space:nowrap}.brand-side{background:linear-gradient(180deg,#8f0507,#b9090c 60%,#8f0507)!important}.brand-side .ant-menu{background:transparent!important;border-right:none!important}.brand-side .ant-menu-item-selected{background:#fff3!important;border-radius:8px}.brand-side .ant-menu-item,.brand-side .ant-menu-submenu-title{margin:2px 8px;border-radius:8px;width:calc(100% - 16px)}.stat-num{font-variant-numeric:tabular-nums;transition:color .2s ease}.page-panel .ant-btn-primary{transition:all .2s ease}.page-panel .ant-btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 10px #b9090c40}.metric-card.metric-card-brand .metric-num{color:#b9090c}.metric-card .metric-extra.metric-delta-up{color:#f56c6c}.metric-card .metric-extra.metric-delta-down{color:#67c23a}.metric-card .metric-extra.metric-delta-flat{color:#909399}.banner-store-select .ant-select-selector{background:#ffffff29!important;border-color:#ffffff73!important}.banner-store-select .ant-select-selection-item,.banner-store-select .ant-select-arrow{color:#fff!important}.banner-num{margin-top:4px;font-size:32px;font-weight:700;color:#fff;line-height:1.2;font-variant-numeric:tabular-nums}.gantt-container .bar-wrapper.bar-task-pending .bar{fill:#faad14}.gantt-container .bar-wrapper.bar-task-in_progress .bar{fill:#2494ae}.gantt-container .bar-wrapper.bar-task-completed .bar{fill:#52c41a}.gantt-container .bar-wrapper.bar-task-overdue .bar{fill:#ff5b4d}.gantt-container .bar-wrapper.bar-meeting .bar{fill:#8f0507}.gantt-container .bar-wrapper.bar-order .bar{fill:#d46b08}.gantt-container .bar-wrapper.bar-order-overdue .bar{fill:#b9090c}.gantt-container .bar-wrapper.bar-order .bar-label,.gantt-container .bar-wrapper.bar-order-overdue .bar-label{fill:#fff;font-weight:600}.gantt-container{color-scheme:light;background:#fff;--g-arrow-color: #1f2937;--g-bar-color: #fff;--g-bar-border: #fff;--g-tick-color-thick: #ededed;--g-tick-color: #f3f3f3;--g-actions-background: #f3f3f3;--g-border-color: #ebeff2;--g-text-muted: #7c7c7c;--g-text-light: #fff;--g-text-dark: #171717;--g-progress-color: #dbdbdb;--g-handle-color: #37352f;--g-weekend-label-color: #dcdce4;--g-expected-progress: #c4c4e9;--g-header-background: #fff;--g-row-color: #fdfdfd;--g-row-border-color: #c7c7c7;--g-today-highlight: #b9090c;--g-popup-actions: #ebeff2;--g-weekend-highlight-color: #f7f7f7}*{scrollbar-width:thin;scrollbar-color:rgba(185,9,12,.18) transparent}*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:#b9090c2e;border-radius:3px}*::-webkit-scrollbar-thumb:hover{background:#b9090c52}*::-webkit-scrollbar-corner{background:transparent}.brand-side-menu::-webkit-scrollbar-thumb{background:#ffffff38}.brand-side-menu::-webkit-scrollbar-thumb:hover{background:#fff6}.brand-side .ant-layout-sider-children{display:flex;flex-direction:column;height:100%}
