.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.dispatch-hall-page.light{min-height:calc(100vh - 80px);padding:20px 24px 48px;background:linear-gradient(135deg,#fdfbff,#edf4ff 55%,#f4fbff)}.dispatch-hall-stack{width:100%}.header-bar{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.header-bar h2{margin:0;font-size:26px;color:#1f2750}.header-bar p{margin:4px 0 0;color:#69729a}.neo-card{background:#fff!important;border-radius:20px!important;border:1px solid rgba(177,193,255,.4)!important;box-shadow:0 18px 35px #7284ff26}.neo-card .ant-card-head{border-bottom:1px solid rgba(220,226,255,.6)}.neo-card .ant-card-head-title{font-size:16px;color:#273057}.neo-card .ant-card-body{color:#2c3355}.neo-alert{background:#fff8e0;border:1px solid #ffd486;color:#8a5200}.neo-stat .ant-statistic-title{color:#677194;font-size:13px}.neo-stat .ant-statistic-content-value{color:#1e254c;font-weight:600}.neon-button{border-radius:999px;border:1px solid rgba(109,130,255,.5);background:linear-gradient(120deg,#6b7bff,#50c7ff);color:#fff;box-shadow:0 12px 25px #5c78ff59}.neon-button.ghost{background:transparent;color:#5260a4;border-color:#6d82ff99}.order-board .board-table{display:flex;flex-direction:column;gap:6px}.board-row{display:grid;grid-template-columns:1.2fr .9fr .7fr;font-size:14px;padding:8px 0;border-bottom:1px solid rgba(222,229,255,.8)}.board-row.header{font-weight:600;color:#56609a}.board-row:last-child{border-bottom:none}.board-sub{color:#8d95ba}.ticker-card{overflow:hidden}.ticker-track{display:inline-flex;gap:30px;white-space:nowrap;animation:tickerMove 22s linear infinite}.ticker-item{font-size:14px;color:#1d2552}.ticker-item.sell{color:#a14c00}@keyframes tickerMove{0%{transform:translate(0)}to{transform:translate(-50%)}}.dispatch-flow-card{overflow:hidden}.dispatch-flow-canvas{width:100%;height:100%;border-radius:18px;background:linear-gradient(135deg,#f0f5ff,#fdfbff);border:1px solid rgba(179,194,255,.5)}.flow-layout{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.distribution-card .distribution-block{border:1px solid rgba(214,222,255,.9);border-radius:14px;padding:12px;margin-bottom:12px;background:linear-gradient(180deg,#fdfdff,#f5f7ff)}.compact-chart .ant-card-body{padding:16px 18px}.compact-chart .ant-empty{margin:0}.distribution-block h4{margin:0 0 8px;font-size:14px;color:#31407a}.distribution-block p{margin:4px 0;color:#5c6697}.longest-card .longest-item{display:flex;flex-direction:column;gap:4px}.mono{font-family:JetBrains Mono,monospace}.mono-dim{color:#7b82a6;font-size:12px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:radial-gradient(1200px 900px at 12% 0%,#635bff1a,#fff0 50%),linear-gradient(180deg,#f0f3ffbf,#fffffff5 60%);color:#1f2430}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#0000001f;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#0003}.ant-pro-layout .ant-pro-layout-content{padding:32px;min-height:calc(100vh - 88px)}.ant-pro-layout .ant-pro-layout-header,.ant-pro-layout .ant-pro-top-nav-header-main{background:transparent!important;box-shadow:none!important;-webkit-backdrop-filter:saturate(160%) blur(12px);backdrop-filter:saturate(160%) blur(12px)}.ant-pro-sider{background:linear-gradient(180deg,#fffffff2,#f8f9ffeb)!important;border-right:1px solid rgba(99,91,255,.12);-webkit-backdrop-filter:saturate(160%) blur(16px);backdrop-filter:saturate(160%) blur(16px);box-shadow:2px 0 12px #635bff0f}.ant-pro-table{background:transparent}.glass-card{background:#ffffffe6!important;border:1px solid rgba(255,255,255,.45)!important;box-shadow:0 20px 40px #2c38801f!important;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-radius:18px!important}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.section-header-title{font-size:22px;font-weight:600;color:#20243b}.section-header-subtitle{color:#6f7485;font-size:14px}.app-page-container,.app-page-content{display:flex;flex-direction:column;gap:24px}.app-tabs-container{padding:8px 12px 0;border-radius:14px;background:#ffffffd9;border:1px solid rgba(99,91,255,.12);box-shadow:0 16px 40px #2c388014;-webkit-backdrop-filter:saturate(160%) blur(12px);backdrop-filter:saturate(160%) blur(12px)}.app-page-tabs .ant-tabs-nav{margin:0}.app-page-tabs .ant-tabs-nav-wrap{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.app-page-tabs .ant-tabs-tab{padding:10px 16px}.app-page-tabs .ant-tabs-tab-active .ant-tabs-tab-btn{color:#635bff;font-weight:600}.app-page-tabs .ant-tabs-ink-bar{height:3px;background:#635bff;border-radius:999px}.app-page-tabs .ant-tabs-tab-remove{color:#8c91a5;margin-left:6px}.app-page-tabs .ant-tabs-tab-remove:hover{color:#5b6072}.dashboard-stat-card .ant-statistic-title{color:#6f7485!important;font-size:13px}.dashboard-stat-card .ant-statistic-content{color:#20243b!important;font-weight:600!important;font-size:28px!important}.layout-header-actions{gap:12px!important}.header-search-input{width:260px}.header-search-input .ant-input{font-size:14px}.header-search-input .ant-input-prefix{color:#8c91a5}.layout-header-actions .ant-btn{color:#5b6072}.layout-header-actions .ant-btn:hover{color:#2b2f43}@media (max-width: 992px){.layout-header-actions{width:100%;justify-content:flex-end;flex-wrap:wrap}.header-search-input{min-width:200px;flex:1 1 220px}}@media (max-width: 768px){.ant-pro-layout .ant-pro-layout-content{padding:16px}.app-page-tabs .ant-tabs-tab{padding:8px 12px}.ant-pro-query-filter-row{margin-left:-8px!important;margin-right:-8px!important}.ant-pro-query-filter-row>.ant-col,.ant-pro-query-filter-row .ant-col{flex:0 0 100%!important;max-width:100%!important}}@media (max-width: 576px){.ant-pro-layout .ant-pro-layout-content{padding:12px}.app-logo span{display:none}.layout-header-actions .ant-btn>span:not(.anticon){display:none}.layout-header-actions .ant-btn{padding-inline:8px}.ant-pro-query-filter-row{margin-left:-8px!important;margin-right:-8px!important}.ant-pro-query-filter-row>.ant-col{padding-left:8px!important;padding-right:8px!important}.ant-pro-query-filter-row>.ant-col,.ant-pro-query-filter-row .ant-col{flex:0 0 100%!important;max-width:100%!important}.ant-pro-query-filter-actions{width:100%;text-align:right!important}.ant-pro-query-filter .ant-form-item{margin-bottom:8px}}@keyframes fadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.ant-pro-layout-content>*{animation:fadeIn .32s ease}.ant-pro-table .ant-table-pagination{position:sticky!important;bottom:0!important;background:#fffffffa!important;padding:12px 16px!important;margin:0!important;border-top:1px solid rgba(0,0,0,.06)!important;-webkit-backdrop-filter:blur(8px)!important;backdrop-filter:blur(8px)!important;z-index:10!important;box-shadow:0 -2px 8px #0000000a!important}.ant-pro-table .ant-table-wrapper,.ant-pro-table .ant-spin-nested-loading,.ant-pro-table .ant-spin-container{display:flex!important;flex-direction:column!important;height:100%!important}.ant-pro-table .ant-table{flex:1!important;overflow:auto!important}.ant-pro-table .ant-table-body{overflow-y:auto!important;max-height:calc(100vh - 550px)!important}.ant-pro-card-body>.ant-pro-table{margin-bottom:0!important}:root{--brand-primary: #635bff;--brand-accent: #6f8bff;--brand-bg: radial-gradient(1200px 880px at 8% 5%, rgba(99, 91, 255, .14) 0%, rgba(255, 255, 255, 0) 45%), linear-gradient(180deg, rgba(240, 243, 255, .8) 0%, rgba(255, 255, 255, .96) 60%)}html,body,#root{height:100%}body{margin:0;background:var(--brand-bg)}.app-logo{height:56px;display:flex;align-items:center;gap:12px;font-weight:600;color:#1f2430;cursor:pointer;padding:0 16px;overflow:hidden}.app-logo span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;font-size:15px;letter-spacing:.3px;line-height:1.5}.app-logo-image{width:40px;height:40px;border-radius:10px;object-fit:contain;background:linear-gradient(135deg,#fff,#f8f9ff);padding:7px;box-shadow:0 2px 8px #635bff33,0 0 0 1px #635bff1f;flex-shrink:0}.ant-pro-sider-logo{background:linear-gradient(135deg,#fffffffa,#f8f9fff5)!important;border-bottom:1px solid rgba(99,91,255,.15);box-shadow:0 2px 8px #635bff14}.menu-item-custom{display:flex;align-items:center}.brand-app-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--brand-bg)}.login-wrapper{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card-title{text-align:center;margin-bottom:8px}.login-brand{display:flex;justify-content:center;margin-bottom:16px}.login-brand img{width:72px;height:72px;border-radius:20px;object-fit:cover;box-shadow:0 10px 26px #0b3e754d}.login-subtitle{text-align:center;color:#8c8c8c;margin-bottom:24px}
