: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:#999;--g-text-light:#fff;--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:#999;--g-popup-actions:#1a1a1a;--g-weekend-highlight-color:#0f0f0f}.gantt-container{height:var(--gv-grid-height);isolation:isolate;border-radius:8px;width:100%;font-size:12px;line-height:14.5px;position:relative;overflow:auto}.gantt-container .popup-wrapper{background:var(--g-header-background);z-index:1000;border-radius:5px;width:max-content;padding:10px;position:absolute;top:0;left:0;box-shadow:0 10px 24px -3px #0003}.gantt-container .popup-wrapper .title{color:var(--g-text-dark);margin-bottom:2px;font-size:.85rem;font-weight:650;line-height:15px}.gantt-container .popup-wrapper .subtitle{color:var(--g-text-dark);margin-bottom:5px;font-size:.8rem}.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{background-color:var(--g-popup-actions);border:none;border-right:1px solid var(--g-border-color);padding:5px 8px}.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);border-bottom:1px solid var(--g-row-border-color);z-index:1000;position:sticky;top:0;left:0}.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{width:calc(var(--gv-column-width) * .8);height:calc(var(--gv-lower-header-height) * .8);margin:0 calc(var(--gv-column-width) * .1);text-align:center;color:var(--g-text-muted);align-content:center;font-size:12px;position:absolute}.gantt-container .upper-text{width:fit-content;color:var(--g-text-dark);height:calc(var(--gv-lower-header-height) * .66);font-size:14px;font-weight:500;position:absolute}.gantt-container .current-upper{background:var(--g-header-background);padding-left:17px;position:sticky;left:0!important}.gantt-container .side-header{float:right;z-index:1000;background:var(--g-header-background);width:max-content;margin-left:auto;padding-top:10px;padding-right:10px;font-weight:400;line-height:20px;display:flex;position:sticky;top:0;right:0}.gantt-container .side-header *{background-color:var(--g-actions-background);color:var(--g-text-dark);letter-spacing:.02em;box-sizing:content-box;border:none;border-radius:.5rem;margin-right:5px;padding:5px 8px;font-size:14px;font-weight:420;transition-property:background-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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);height:calc(var(--gv-lower-header-height) - 6px);top:calc(var(--gv-upper-header-height) + 5px);border-radius:12px;position:absolute}.gantt-container .current-highlight{background:var(--g-today-highlight);z-index:999;width:1px;position:absolute}.gantt-container .current-ball-highlight{background:var(--g-today-highlight);z-index:1001;border-radius:50%;position:absolute}.gantt-container .current-date-highlight{background:var(--g-today-highlight);color:var(--g-text-light);border-radius:5px}.gantt-container .holiday-label{opacity:0;z-index:1000;background:var(--g-weekend-label-color);border-radius:5px;padding:2px 5px;position:absolute;top:0;left:0}.gantt-container .holiday-label.show{opacity:100}.gantt-container .extras{position:sticky;left:0}.gantt-container .extras .adjust{left:8px;top:calc(var(--gv-grid-height) - 60px);background-color:var(--g-actions-background);color:var(--g-text-light);border:none;border-radius:3px;padding:8px;position:absolute}.gantt-container .hide{display:none}.gantt{-webkit-user-select:none;user-select:none;position:absolute}.gantt .grid-background{fill:none}.gantt .grid-row{fill:var(--g-row-color)}.gantt .tick{stroke:var(--g-tick-color);stroke-width:.4px}.gantt .tick.thick{stroke:var(--g-tick-color-thick);stroke-width:.7px}.gantt .arrow{fill:none;stroke:var(--g-arrow-color);stroke-width:1.5px}.gantt .bar-wrapper .bar{fill:var(--g-bar-color);stroke:var(--g-bar-border);stroke-width:0;transition:stroke-width .3s}.gantt .bar-progress{fill:var(--g-progress-color);border-radius:4px}.gantt .bar-expected-progress{fill:var(--g-expected-progress)}.gantt .bar-invalid{fill:#0000;stroke:var(--g-bar-border);stroke-width:1px;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}.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}.gantt .bar-wrapper:hover .date-range-highlight{display:block}.gantt .grid-column{fill:#0000;pointer-events:all}.gantt .grid-column:hover{fill:var(--g-weekend-highlight-color);transition:fill .1s}.gantt-container{background:#fff;border-radius:8px;overflow:visible!important}.gantt .row-line,.gantt .tick{stroke:#f1f5f9}.gantt .tick.thick{stroke:#e2e8f0}.gantt .holiday-highlight{fill:#f8fafc}.gantt .upper-header,.gantt .lower-header{fill:#fafbfc}.gantt-container .upper-text,.gantt-container .lower-text{color:#475569;font-size:11px;font-weight:500}.gantt-container{--g-row-color:#fff;--g-row-border-color:#f1f5f9}.gantt-container .gantt .bar-wrapper .bar{rx:4!important;ry:4!important;fill:#fff!important;stroke:#cbd5e1!important;stroke-width:1.5px!important}.gantt-container .gantt .bar-progress{rx:4!important;ry:4!important}.gantt-container .gantt .bar-wrapper.bar-pending .bar{fill:#f8fafc!important;stroke:#cbd5e1!important}.gantt-container .gantt .bar-wrapper.bar-pending .bar-progress{fill:#cbd5e1!important;fill-opacity:.6!important}.gantt-container .gantt .bar-wrapper.bar-active .bar{fill:#eef2ff!important;stroke:#a5b4fc!important}.gantt-container .gantt .bar-wrapper.bar-active .bar-progress{fill:#6366f1!important;fill-opacity:.65!important}.gantt-container .gantt .bar-wrapper.bar-done .bar{fill:#f0fdf4!important;stroke:#86efac!important}.gantt-container .gantt .bar-wrapper.bar-done .bar-progress{fill:#22c55e!important;fill-opacity:.65!important}.gantt-container .gantt .bar-wrapper.bar-accepted .bar{fill:#f0fdfa!important;stroke:#5eead4!important}.gantt-container .gantt .bar-wrapper.bar-accepted .bar-progress{fill:#14b8a6!important;fill-opacity:.65!important}.gantt-container .gantt .bar-wrapper.bar-paused .bar{fill:#fffbeb!important;stroke:#fcd34d!important}.gantt-container .gantt .bar-wrapper.bar-paused .bar-progress{fill:#f59e0b!important;fill-opacity:.65!important}.gantt-container .gantt .bar-wrapper.bar-cancelled .bar{opacity:.55;fill:#f8fafc!important;stroke:#cbd5e1!important}.gantt-container .gantt .bar-wrapper.bar-cancelled .bar-progress{fill:#94a3b8!important;fill-opacity:.55!important}.gantt-container .gantt .bar-wrapper.bar-overdue .bar{stroke:#ef4444!important;stroke-width:2px!important}.gantt-container .gantt .bar-wrapper.bar-overdue .bar-label{fill:#dc2626!important;font-weight:700!important}.gantt .bar-label{font-size:12px;font-weight:500;fill:#0f172a!important}.gantt .bar-label.big{fill:#0f172a!important}.gantt .bar-wrapper{transition:filter .15s}.gantt .bar-wrapper:hover .bar{filter:drop-shadow(0 2px 4px #0f172a1a)}.gantt .handle{fill:#fff;stroke:#0f172a33;stroke-width:1px;rx:2;ry:2}.gantt .handle.progress{fill:#fff;stroke:#0f172a40}.gantt .handle.active{fill:#fff}.gantt .bar-has-children .bar{stroke-dasharray:5 3;fill:#fafbfc}.gantt .bar-has-children .bar-progress{fill-opacity:.45}.gantt-container .gantt .bar-label,.gantt-container .gantt-task-name,.gantt-container .gantt .row-text{font-family:ui-monospace,Consolas,Courier New,monospace}.gantt-container .today-button{color:#fff;cursor:pointer;background:#0f172a;border:none;border-radius:6px;padding:4px 12px;font-size:12px;font-weight:500}.gantt-container .today-button:hover{background:#1e293b}.gantt .current-highlight{fill:#6366f10d}.gantt-container .popup-wrapper{color:#f1f5f9!important;background:#0f172a!important;border-radius:8px!important;min-width:240px!important;padding:12px 14px!important;font-size:12px!important;line-height:1.6!important;box-shadow:0 12px 32px #0f172a59!important}.gantt-container .popup-wrapper .title{margin-bottom:4px;font-size:14px;font-weight:600;color:#fff!important}.gantt-container .popup-wrapper .subtitle{margin-bottom:6px;font-size:11px;color:#94a3b8!important}.gantt-container .popup-wrapper .details{color:#e2e8f0!important}.gantt-container .popup-wrapper .actions{gap:6px;margin-top:8px;display:flex}.gantt-container .popup-wrapper .action-btn{cursor:pointer;font-weight:500;color:#fff!important;background:#6366f1!important;border:none!important;border-radius:5px!important;padding:5px 12px!important;font-size:11px!important}.gantt-container .popup-wrapper .action-btn:hover{background:#4f46e5!important}.gantt-container .popup-wrapper .pointer{fill:#0f172a!important}#nprogress{pointer-events:none}#nprogress .bar{z-index:1031;background:#29d;width:100%;height:2px;position:fixed;top:0;left:0}#nprogress .peg{opacity:1;width:100px;height:100%;display:block;position:absolute;right:0;transform:rotate(3deg)translateY(-4px);box-shadow:0 0 10px #29d,0 0 5px #29d}#nprogress .spinner{z-index:1031;display:block;position:fixed;top:15px;right:15px}#nprogress .spinner-icon{box-sizing:border-box;border:2px solid #0000;border-color:#29d #0000 #0000 #29d;border-radius:50%;width:18px;height:18px;animation:.4s linear infinite nprogress-spinner}.nprogress-custom-parent{position:relative;overflow:hidden}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.task-row-l1>td{background:#fff!important}.task-row-l2>td{background:#fafafa!important}.task-row-l3>td{background:#f0f5ff!important}.task-row-l4>td{background:#e6f4ff!important}.task-row:hover>td{background:#fff7e6!important}.task-row>td{font-size:12.5px;padding-top:4px!important;padding-bottom:4px!important;line-height:1.35!important}.task-row .ant-tag{padding:0 5px;font-size:11px;line-height:16px}.task-row .ant-rate{font-size:11px!important}.task-row .ant-select-single .ant-select-selector{height:24px!important;padding:0 8px!important}.task-row .ant-select-single .ant-select-selector .ant-select-selection-item{line-height:22px!important}.task-row .ant-btn-sm{height:22px;padding:0 6px;font-size:12px}.ant-table-row-indent+.ant-table-row-expand-icon{margin-right:4px}.ant-table-thead>tr>th{white-space:nowrap!important}html,body{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}@media (width<=640px){.ant-layout-header{height:52px!important;padding:0 12px!important;line-height:52px!important}.ant-layout-content{margin:8px!important}.ant-layout-content>div{border-radius:8px!important;padding:12px!important}.ant-table-wrapper .ant-table{font-size:13px}.ant-table{overflow-x:auto}.ant-table-thead>tr>th,.ant-table-tbody>tr>td{padding:8px 6px!important}.ant-statistic .ant-statistic-content{font-size:18px!important;line-height:1.2!important}.ant-statistic .ant-statistic-title{font-size:12px!important}.ant-card-body{padding:12px!important}.ant-card-head{min-height:40px!important;padding:0 12px!important}.ant-card-head-title{padding:8px 0!important;font-size:14px!important}.ant-modal{max-width:calc(100vw - 16px)!important;margin:8px auto!important}.ant-modal-content{padding:16px!important}.ant-drawer-content-wrapper{max-width:100vw!important}.ant-form-item-label{padding:0 0 4px!important}.ant-form-item{margin-bottom:12px!important}.ant-tabs-nav-list{font-size:13px}.ant-tabs-tab{padding:8px 10px!important}.ant-btn-sm{min-height:32px!important}.ant-layout-sider.boya-desktop-sider{display:none!important}.ant-layout-content>div{min-height:calc(100vh - 80px)!important}.ant-form{width:100%!important}.echarts-for-react{min-height:220px!important}.ant-space{flex-wrap:wrap!important;row-gap:4px!important}}@media (width<=360px){.ant-layout-content{margin:4px!important}.ant-layout-content>div,.ant-card-body{padding:8px!important}.ant-table-thead>tr>th,.ant-table-tbody>tr>td{padding:6px 4px!important;font-size:12px!important}}@media (width>=641px){.boya-mobile-menu-btn{display:none!important}}:root{--boya-color-primary:#1677ff;--boya-color-primary-hover:#4096ff;--boya-color-primary-active:#0958d9;--boya-color-success:#52c41a;--boya-color-warning:#faad14;--boya-color-error:#ff4d4f;--boya-color-info:#1677ff;--boya-color-text:#1f1f1f;--boya-color-text-secondary:#595959;--boya-color-text-tertiary:#8c8c8c;--boya-color-text-quaternary:#bfbfbf;--boya-color-border:#e5e7eb;--boya-color-border-secondary:#f0f0f0;--boya-color-bg-page:#f5f7fa;--boya-color-bg-container:#fff;--boya-color-bg-elevated:#fff;--boya-color-bg-hover:#f5f5f5;--boya-space-xs:4px;--boya-space-sm:8px;--boya-space-md:16px;--boya-space-lg:24px;--boya-space-xl:32px;--boya-space-2xl:48px;--boya-radius-sm:4px;--boya-radius-md:8px;--boya-radius-lg:12px;--boya-radius-xl:16px;--boya-font-size-xs:12px;--boya-font-size-sm:13px;--boya-font-size-md:14px;--boya-font-size-lg:16px;--boya-font-size-xl:20px;--boya-font-size-2xl:24px;--boya-shadow-sm:0 1px 2px #0000000a;--boya-shadow-md:0 2px 8px #0000000f;--boya-shadow-lg:0 6px 16px #00000014;--boya-shadow-xl:0 12px 32px #0000001f;--boya-ease-out:cubic-bezier(.22, 1, .36, 1);--boya-ease-in-out:cubic-bezier(.65, 0, .35, 1);--boya-duration-fast:.15s;--boya-duration-base:.22s;--boya-duration-slow:.32s}.ant-btn,.ant-input,.ant-select-selector,.ant-card,.ant-tag,.ant-tabs-tab,.ant-menu-item{transition:color var(--boya-duration-fast) var(--boya-ease-out), background-color var(--boya-duration-fast) var(--boya-ease-out), border-color var(--boya-duration-fast) var(--boya-ease-out), box-shadow var(--boya-duration-base) var(--boya-ease-out), transform var(--boya-duration-fast) var(--boya-ease-out)!important}.ant-card.ant-card-hoverable:hover{transform:translateY(-2px);box-shadow:var(--boya-shadow-lg)!important}.ant-btn-primary:not(:disabled):active{transform:scale(.97)}.ant-table-tbody>tr:hover>td{background:var(--boya-color-bg-hover)!important}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{transition:background var(--boya-duration-fast);background:#d9d9d9;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#bfbfbf}::-webkit-scrollbar-track{background:0 0}#nprogress .bar{background:var(--boya-color-primary)!important;height:3px!important}#nprogress .peg{box-shadow:0 0 10px var(--boya-color-primary), 0 0 5px var(--boya-color-primary)!important}#nprogress .spinner-icon{border-top-color:var(--boya-color-primary)!important;border-left-color:var(--boya-color-primary)!important}@keyframes task-row-flash{0%{background-color:#52c41a47}60%{background-color:#52c41a24}to{background-color:#0000}}.task-row-flash>td{animation:1.4s ease-out task-row-flash}
