html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}.antv-s2-tooltip-container{position:fixed;-webkit-user-select:text;user-select:text;min-width:200px;max-width:640px;max-height:100vh;overflow:auto;z-index:1024;display:inline-block;background:var(--antv-s2-tooltip-background, rgba(255, 255, 255, .95));border-radius:4px;box-shadow:0 1px 4px #0003;font-size:12px;font-family:Roboto,PingFang SC,Chinese Quote,Segoe UI,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif}.antv-s2-tooltip-container-hide{opacity:0;visibility:hidden;pointer-events:none}.antv-s2-tooltip-container-hide *{transition:none}.antv-s2-tooltip-container-show{opacity:1;visibility:visible;pointer-events:all}.antv-s2-tooltip-operator{color:var(--antv-s2-font, rgba(0, 0, 0, .65));background:var(--antv-s2-tooltip-operator-background, #f9f9f9);font-size:12px;line-height:36px;border:0;cursor:pointer}.antv-s2-tooltip-operator .ant-menu{font-size:12px}.antv-s2-tooltip-operator .ant-menu-horizontal:not(.ant-menu-dark){background:transparent;line-height:36px}.antv-s2-tooltip-operator .ant-dropdown-trigger,.antv-s2-tooltip-operator-dropdown{padding:0 6px 0 0}.antv-s2-tooltip-operator-menus.ant-menu-vertical.ant-menu{font-size:12px;color:var(--antv-s2-font, rgba(0, 0, 0, .65));border:0;-webkit-user-select:none;user-select:none;width:100%}.antv-s2-tooltip-operator-menus.ant-menu-vertical.ant-menu .ant-menu-item{height:36px}.antv-s2-tooltip-operator-menus.ant-menu-vertical.ant-menu .ant-menu-submenu>.ant-menu-submenu-title{height:36px;width:100%}.antv-s2-tooltip-operator-menus.ant-menu-vertical.ant-menu .ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow{color:var(--antv-s2-font, rgba(0, 0, 0, .65))}.antv-s2-tooltip-operator-menus.ant-menu-vertical.ant-menu .ant-menu-submenu.ant-menu-submenu-selected{background-color:var(--antv-s2-tooltip-operator-menu-selected-background, #e6f4ff)}.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-dropdown-menu-item,.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-dropdown-menu-item,.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-menu-item,.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-menu-item{font-size:12px;line-height:36px;padding:0 12px;border:0}.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-dropdown-menu-item:not(.ant-menu-item-active),.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-dropdown-menu-item:not(.ant-menu-item-active),.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-menu-item:not(.ant-menu-item-active),.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-menu-item:not(.ant-menu-item-active){color:var(--antv-s2-font, rgba(0, 0, 0, .65))}.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-dropdown-menu-submenu .ant-menu-submenu-title,.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-dropdown-menu-submenu .ant-menu-submenu-title,.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-dropdown-menu-submenu-vertical .ant-menu-submenu-title,.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-dropdown-menu-submenu-vertical .ant-menu-submenu-title,.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-menu-submenu .ant-menu-submenu-title,.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-menu-submenu .ant-menu-submenu-title,.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-menu-submenu-vertical .ant-menu-submenu-title,.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-menu-submenu-vertical .ant-menu-submenu-title{padding:0 0 0 12px;font-size:12px;line-height:36px;margin:0}.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-dropdown-menu-submenu .ant-menu-submenu-title:not(.ant-menu-item-active),.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-dropdown-menu-submenu .ant-menu-submenu-title:not(.ant-menu-item-active),.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-dropdown-menu-submenu-vertical .ant-menu-submenu-title:not(.ant-menu-item-active),.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-dropdown-menu-submenu-vertical .ant-menu-submenu-title:not(.ant-menu-item-active),.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-menu-submenu .ant-menu-submenu-title:not(.ant-menu-item-active),.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-menu-submenu .ant-menu-submenu-title:not(.ant-menu-item-active),.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-menu-submenu-vertical .ant-menu-submenu-title:not(.ant-menu-item-active),.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-menu-submenu-vertical .ant-menu-submenu-title:not(.ant-menu-item-active){color:var(--antv-s2-font, rgba(0, 0, 0, .65))}.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-dropdown-menu-submenu .ant-menu-submenu-title .ant-dropdown-menu-title-content,.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-dropdown-menu-submenu .ant-menu-submenu-title .ant-dropdown-menu-title-content,.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-dropdown-menu-submenu-vertical .ant-menu-submenu-title .ant-dropdown-menu-title-content,.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-dropdown-menu-submenu-vertical .ant-menu-submenu-title .ant-dropdown-menu-title-content,.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-menu-submenu .ant-menu-submenu-title .ant-dropdown-menu-title-content,.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-menu-submenu .ant-menu-submenu-title .ant-dropdown-menu-title-content,.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-menu-submenu-vertical .ant-menu-submenu-title .ant-dropdown-menu-title-content,.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-menu-submenu-vertical .ant-menu-submenu-title .ant-dropdown-menu-title-content,.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-dropdown-menu-submenu .ant-menu-submenu-title .ant-menu-title-content,.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-dropdown-menu-submenu .ant-menu-submenu-title .ant-menu-title-content,.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-dropdown-menu-submenu-vertical .ant-menu-submenu-title .ant-menu-title-content,.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-dropdown-menu-submenu-vertical .ant-menu-submenu-title .ant-menu-title-content,.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-menu-submenu .ant-menu-submenu-title .ant-menu-title-content,.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-menu-submenu .ant-menu-submenu-title .ant-menu-title-content,.antv-s2-tooltip-operator-menus.ant-dropdown-menu-vertical .ant-menu-submenu-vertical .ant-menu-submenu-title .ant-menu-title-content,.antv-s2-tooltip-operator-menus.ant-menu-vertical .ant-menu-submenu-vertical .ant-menu-submenu-title .ant-menu-title-content{margin-right:12px}.antv-s2-tooltip-operator-submenu-popup .ant-dropdown-menu-item,.antv-s2-tooltip-operator-submenu-popup .ant-menu-item{font-size:12px;line-height:36px;padding:0 12px}.antv-s2-tooltip-operator-submenu-popup .ant-dropdown-menu-item:not(.ant-menu-item-active),.antv-s2-tooltip-operator-submenu-popup .ant-menu-item:not(.ant-menu-item-active){color:var(--antv-s2-font, rgba(0, 0, 0, .65))}.antv-s2-tooltip-operator-submenu-popup .ant-menu-vertical .ant-menu-item{margin:0;height:36px;line-height:36px;width:100%}.antv-s2-tooltip-operator-submenu-popup .ant-menu-vertical .ant-menu-item:not(:last-child){margin:0}.antv-s2-tooltip-operator-icon{vertical-align:middle}.antv-s2-tooltip-operator-icon svg{width:12px;height:12px;fill:var(--antv-s2-font)}.antv-s2-html-icon{display:inline-block}.antv-s2-html-icon svg{width:12px;height:12px}.antv-s2-tooltip-tips,.antv-s2-tooltip-name{padding:12px;line-height:16px;overflow-wrap:break-word;color:var(--antv-s2-font-85, rgba(0, 0, 0, .85))}.antv-s2-tooltip-description{padding:0 12px 12px;line-height:16px;overflow-wrap:break-word;color:var(--antv-s2-font-45, rgba(0, 0, 0, .45))}.antv-s2-tooltip-tips{padding:4px 12px;color:var(--antv-s2-font-45, rgba(0, 0, 0, .45))}.antv-s2-tooltip-infos{padding:4px 12px;line-height:20px;color:var(--antv-s2-font-45, rgba(0, 0, 0, .45));overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;display:-webkit-box;-webkit-box-orient:vertical;overflow-wrap:break-word;background:#f9f9f9f5;border-radius:0 0 2px 2px;background-color:#f9f9f9}.antv-s2-tooltip-summary{line-height:20px;color:var(--antv-s2-font-65, rgba(0, 0, 0, .65));overflow:hidden;padding:12px}.antv-s2-tooltip-summary-item{display:flex}.antv-s2-tooltip-summary-key{margin-right:20px}.antv-s2-tooltip-summary-val{flex:1;text-align:right;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.antv-s2-tooltip-interpretation{color:#000000a6;overflow:hidden;padding:12px}.antv-s2-tooltip-interpretation+.antv-s2-tooltip-head-info-list{border-top:1px solid var(--antv-s2-border, #e9e9e9)}.antv-s2-tooltip-interpretation .antv-s2-tooltip-interpretation-head{margin-bottom:12px}.antv-s2-tooltip-interpretation .antv-s2-tooltip-interpretation-head .antv-s2-tooltip-interpretation-icon{width:14px;height:14px}.antv-s2-tooltip-interpretation .antv-s2-tooltip-interpretation-head .antv-s2-tooltip-interpretation-name{color:var(--antv-s2-font, #000)}.antv-s2-tooltip-head-info-list{color:var(--antv-s2-font-65, #a2a2a2);padding:12px 12px 4px;line-height:24px;word-break:break-word}.antv-s2-tooltip-bold,.antv-s2-tooltip-selected{font-weight:700}.antv-s2-tooltip-selected{margin-right:5px}.antv-s2-tooltip-highlight{color:var(--antv-s2-font-85, rgba(0, 0, 0, .85))}.antv-s2-tooltip-detail-list{padding:2px 12px 8px}.antv-s2-tooltip-detail-list .antv-s2-tooltip-detail-item{color:var(--antv-s2-font-65, rgba(0, 0, 0, .65));overflow:hidden;margin:4px 0;display:flex;justify-content:space-around;align-items:center}.antv-s2-tooltip-detail-list .antv-s2-tooltip-detail-item-key{margin-right:20px}.antv-s2-tooltip-detail-list .antv-s2-tooltip-detail-item-val{flex:1;text-align:right;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ant-dropdown-menu-item.operation-item{font-size:12px}.antv-s2-wrapper{padding:0;margin:0;display:flex;flex-direction:column;height:100%}.antv-s2-container{overflow:auto;flex:1 1 auto}.antv-s2-edit-cell{position:absolute;box-shadow:0 0 0 2px #2a83fa!important;resize:none;box-sizing:border-box;background-color:var(--antv-s2-background, #fff);margin:0;padding:4px 11px;color:#000000e0;font-size:14px;min-width:0;border-radius:6px;list-style:none;vertical-align:bottom;transition:all .3s,height 0s;min-height:32px}.antv-s2-edit-cell:hover{border-color:#4096ff;background-color:#fff}.antv-s2-edit-cell:focus,.antv-s2-edit-cell:focus-within{border-color:#1677ff;outline:0;background-color:#fff}.antv-s2-drag-copy-mask{position:absolute;top:-4px;left:-4px;z-index:9;background-color:#c2d5fe80;cursor:crosshair}.antv-s2-drag-copy-point{position:absolute;z-index:9;width:8px;height:8px;background-color:#c2d5fe;cursor:crosshair;-webkit-user-select:none;user-select:none}.antv-s2-strategy-sheet-tooltip{line-height:20px;font-size:12px;color:var(--antv-s2-font-65, rgba(0, 0, 0, .65));overflow:hidden;padding:12px}.antv-s2-strategy-sheet-tooltip ul,.antv-s2-strategy-sheet-tooltip li{list-style:none;margin:0;padding:0}.antv-s2-strategy-sheet-tooltip .antv-s2-strategy-sheet-tooltip-divider{border-top:1px solid var(--antv-s2-border, #e9e9e9);margin:10px -12px}.antv-s2-strategy-sheet-tooltip .antv-s2-strategy-sheet-tooltip-description{overflow-wrap:break-word}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-row .antv-s2-strategy-sheet-tooltip-value{font-weight:700}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-col .antv-s2-strategy-sheet-tooltip-name{margin-right:20px}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-col .antv-s2-strategy-sheet-tooltip-value{color:var(--antv-s2-font-85, rgba(0, 0, 0, .85))}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-data .antv-s2-strategy-sheet-tooltip-header{display:flex;justify-content:space-between;align-items:center}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-data .antv-s2-strategy-sheet-tooltip-header .header-label{font-weight:700;margin-right:20px}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-data .antv-s2-strategy-sheet-tooltip-original-value{text-align:right}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-data .antv-s2-strategy-sheet-tooltip-derived-values{position:relative;margin:0;padding:0;list-style:none}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-data .antv-s2-strategy-sheet-tooltip-derived-values li.derived-value-item{display:flex;justify-content:space-between;align-items:center}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-data .antv-s2-strategy-sheet-tooltip-derived-values li.derived-value-item .derived-value-group{color:var(--antv-s2-font-65, rgba(0, 0, 0, .65));margin-left:10px}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-data .antv-s2-strategy-sheet-tooltip-derived-values li.derived-value-item .derived-value-group .derived-value-trend-icon{display:inline-block;width:0;height:0;margin-right:4px;border-right:4px solid transparent;border-bottom:9px solid var(--antv-s2-font, #000);border-left:4px solid transparent;transform:rotate(0)}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-data .antv-s2-strategy-sheet-tooltip-derived-values li.derived-value-item .derived-value-group.derived-value-trend-up{color:#f46649}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-data .antv-s2-strategy-sheet-tooltip-derived-values li.derived-value-item .derived-value-group.derived-value-trend-up .derived-value-trend-icon{border-bottom-color:#f46649}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-data .antv-s2-strategy-sheet-tooltip-derived-values li.derived-value-item .derived-value-group.derived-value-trend-down{color:#2aa491}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-data .antv-s2-strategy-sheet-tooltip-derived-values li.derived-value-item .derived-value-group.derived-value-trend-down .derived-value-trend-icon{transform:rotate(180deg);border-bottom-color:#2aa491}.antv-s2-strategy-sheet-tooltip.antv-s2-strategy-sheet-tooltip-data .antv-s2-strategy-sheet-tooltip-derived-values li.derived-value-item .derived-value-group .derived-value-original{margin-left:4px}:root{color:#1f2933;background:#f3f6f9;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:#f3f6f9}.login-page{display:grid;place-items:center;min-height:100vh;padding:24px;background:linear-gradient(180deg,#14212bf0,#14212bdb),#14212b}.login-card{width:min(420px,100%)}.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:20px}.login-brand__logo{display:block;width:58px;height:58px;object-fit:contain}.login-brand h3.ant-typography{margin:0 0 2px}.login-alert{margin-bottom:16px}.password-reset-button{margin-top:8px;padding-inline:0}.password-reset-form{margin-top:18px}.app-layout{min-height:100vh}.app-sider{position:sticky;top:0;height:100vh;overflow:auto;border-right:1px solid rgba(255,255,255,.08)}.brand{display:flex;align-items:center;justify-content:center;min-height:72px;padding:12px;color:#f8fafc}.brand--collapsed{min-height:62px;padding:10px 8px}.brand__logo{display:block;width:66px;height:66px;object-fit:contain}.brand--collapsed .brand__logo{width:42px;height:42px}.app-header{display:flex;align-items:center;justify-content:space-between;gap:12px;height:auto;min-height:52px;padding:8px 16px;background:#fff;border-bottom:1px solid #dfe7ef;line-height:1.2}.app-header__left{min-width:0}.app-header__logo{display:block;width:min(260px,30vw);max-height:32px;object-fit:contain}.app-header__user{flex:0 0 auto}.app-header__identity{display:flex;align-items:center;gap:6px;min-width:0}.app-header__name{max-width:180px;overflow:hidden;color:#17212b;font-size:12px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.app-header__role{margin-inline-end:0;padding-inline:6px;font-size:11px;line-height:18px}.app-content{display:flex;flex-direction:column;gap:14px;padding:14px 18px 22px}.page-stack{width:100%}.app-tabs{display:none;padding:0 24px;background:#fff;border-bottom:1px solid #dfe7ef}.app-tabs .ant-tabs-nav{margin:0}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.metric-grid .ant-card{border-color:#dce5ee}.metric-grid .ant-statistic-title{color:#667789}.metric-grid .ant-statistic-content{color:#17212b}.project-metric-rows{display:flex;flex-direction:column;gap:12px}.project-metric-row{display:flex;flex-direction:column;gap:8px}.project-metric-row__title{min-height:24px}.table-search{width:260px}.resource-plan-selector{min-width:260px}.resource-plan-role-selector{min-width:min(520px,100%)}.resource-plan-header,.resource-plan-subheader,.resource-plan-role-header,.resource-plan-gantt-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.resource-plan-filter-grid{display:grid;grid-template-columns:repeat(6,minmax(150px,1fr)) auto;gap:10px;align-items:center}.resource-plan-link-button.ant-btn{height:auto;max-width:100%;padding:0;text-align:left;white-space:normal}.resource-plan-link-button .ant-space{max-width:100%}.resource-plan-gantt-toolbar{justify-content:flex-end}.resource-plan-gantt-controls{display:inline-flex;align-items:center;gap:10px}.resource-plan-gantt-filter{width:220px;min-width:220px;max-width:220px}.resource-plan-gantt-filter--wide{width:420px;min-width:420px;max-width:420px}.resource-plan-assignment-employee-select .ant-select-selection-search-input{display:none}.role-plan-card{overflow:hidden;border-color:#dce5ee}.role-plan-legend{display:flex;align-items:center;justify-content:flex-end;gap:16px;min-height:44px;padding:8px 14px;border-bottom:1px solid #e5edf5}.role-plan-legend span{display:inline-flex;align-items:center;gap:7px;color:#526475;font-size:13px;font-weight:650}.role-plan-legend i{width:18px;height:8px;border-radius:3px}.role-plan-legend__assignment{background:#13a8a8}.role-plan-legend__utilization{background:#1677ff}.role-plan-scroll{overflow-x:auto}.role-plan-grid{display:grid;grid-template-columns:280px minmax(660px,1fr);background:#fff;--role-plan-tick-font-size: 11px}.role-plan-header{min-height:38px;color:#526475;background:#f6f9fc;font-size:12px;font-weight:750;text-transform:uppercase}.role-plan-label{display:flex;flex-direction:column;justify-content:center;min-height:56px;padding:8px 12px;color:#17212b;text-align:left;background:#fff;border:0;border-right:1px solid #e5edf5;border-bottom:1px solid #e5edf5}.role-plan-label--sticky{position:sticky;left:0;z-index:3;box-shadow:8px 0 12px -12px #17212b61}.role-plan-header.role-plan-label--sticky{z-index:4}.role-plan-person{cursor:pointer}.role-plan-person:hover{background:#f3f8fb}.role-plan-person span:first-child,.role-plan-utilization-label span:first-child{overflow:hidden;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.role-plan-timeline{position:relative;display:block;min-height:38px;overflow:hidden}.role-plan-tick{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding-left:8px;border-left:1px solid #d8e2ec;font-size:var(--role-plan-tick-font-size);line-height:1;white-space:nowrap}.role-plan-row,.role-plan-utilization-row{position:relative;min-height:56px;overflow:hidden;background:#fff;border-bottom:1px solid #e5edf5}.role-plan-utilization-row{min-height:88px}.role-plan-grid-line{position:absolute;top:0;bottom:0;width:1px;background:#5264751c;pointer-events:none}.role-plan-assignment-bar{position:absolute;top:21px;z-index:1;height:14px;min-width:12px;color:#fff;background:#13a8a8;border:0;border-radius:4px;box-shadow:inset 0 -1px #17212b29;cursor:pointer;font-size:10px;line-height:14px}.role-plan-utilization-bar{position:absolute;bottom:0;z-index:1;min-width:12px;padding:2px 4px;color:#fff;background:#1677ff;border:0;border-radius:4px 4px 0 0;box-shadow:inset 0 -1px #17212b29;font-size:10px;font-weight:700;line-height:1}.compact-title.ant-typography{margin-bottom:2px}.profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px}.profile-value{margin-top:4px;color:#17212b;font-size:16px;font-weight:650}.profile-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.profile-password-alert{margin-bottom:16px}.profile-password-form{max-width:460px}.import-form-grid,.import-upload-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.full-width{width:100%}.selected-row>td{background:#eef8f6!important}.clickable-row,.data-table-row--editable .data-table-cell--editable{cursor:pointer}.data-table-row--editable .data-table-cell--editable:hover{background:#f1f7fb}.data-table-shell{width:100%}.data-table-shell .ant-table-wrapper .ant-table-cell,.data-table-shell .ant-table-wrapper th.ant-table-cell,.data-table-shell .ant-table-wrapper td.ant-table-cell{overflow:hidden!important;text-overflow:ellipsis;white-space:nowrap!important}.data-table-shell .ant-table-cell>*{max-width:100%}.data-table-shell th.data-table-header-cell--resizable{position:relative}.data-table-toolbar{display:flex;justify-content:flex-end;min-height:30px;margin-bottom:6px}.table-toolbar{margin-bottom:12px}.data-table-toolbar__icon{color:#617487;font-size:14px}.data-table-header-title{display:flex;align-items:center;min-width:0;width:100%;min-height:22px;padding-right:14px}.data-table-header-title__text{overflow:hidden;text-overflow:ellipsis}.data-table-resize-handle{position:absolute;top:0;right:0;bottom:0;z-index:5;width:12px;cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none}.data-table-resize-handle:after{position:absolute;top:8px;right:5px;bottom:8px;width:2px;border-radius:2px;background:#61748747;content:"";opacity:0;transition:opacity .12s ease,background-color .12s ease}.data-table-shell th.data-table-header-cell--resizable:hover .data-table-resize-handle:after,.data-table-resize-handle:hover:after{opacity:1;background:#1677ff}body.data-table-column-resizing,body.data-table-column-resizing *{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}body.data-table-column-resizing .data-table-resize-handle:after{opacity:1;background:#1677ff}.boolean-icon{font-size:16px}.boolean-icon--yes{color:#237804}.boolean-icon--no{color:#9aa7b3}.project-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.project-settings-form{max-width:920px}.project-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.stage-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:2px 0}.color-icon-picker{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:7px;width:42px;height:32px;color:#425466;background:#fff;border:1px solid #d9e2ec;border-radius:6px;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,color .15s ease}.color-icon-picker:hover{color:#1677ff;border-color:#1677ff;box-shadow:0 0 0 2px #1677ff14}.color-icon-picker input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.color-icon-picker__swatch{width:12px;height:12px;border:1px solid rgba(23,33,43,.16);border-radius:3px}.gantt-controls,.gantt-scale-control{display:inline-flex;align-items:center;gap:8px}.gantt-controls .ant-segmented{background:#eef3f8}.gantt-scale-control{width:180px}.gantt-scale-control .ant-slider{flex:1;margin:8px 2px}.gantt-card{overflow:hidden;border-color:#dce5ee}.gantt-legend{display:flex;align-items:center;justify-content:flex-end;gap:16px;min-height:44px;padding:8px 14px;border-bottom:1px solid #e5edf5}.gantt-legend span{display:inline-flex;align-items:center;gap:7px;color:#526475;font-size:13px;font-weight:650}.gantt-legend i{width:18px;height:8px;border-radius:3px}.gantt-legend__open{background:transparent!important;border:1px dashed}.gantt-scroll{overflow-x:auto}.gantt-grid{display:grid;grid-template-columns:280px minmax(660px,1fr);background:#fff;--gantt-tick-font-size: 11px}.gantt-header{min-height:38px;color:#526475;background:#f6f9fc;font-size:12px;font-weight:750;text-transform:uppercase}.gantt-stage-cell{display:flex;flex-direction:column;justify-content:center;min-height:56px;padding:8px 12px;border-right:1px solid #e5edf5;border-bottom:1px solid #e5edf5}.gantt-stage-cell--sticky{position:sticky;left:0;z-index:3;box-shadow:8px 0 12px -12px #17212b61}.gantt-header.gantt-stage-cell--sticky{z-index:4}.gantt-stage-button{width:100%;color:#17212b;text-align:left;background:#fff;border:0;cursor:pointer}.gantt-stage-button:hover:not(:disabled){background:#f3f8fb}.gantt-stage-button:disabled{cursor:default}.gantt-stage-button span:first-child{overflow:hidden;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.gantt-timeline{position:relative;display:block;min-height:38px;padding:0;overflow:hidden}.gantt-month{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding-left:8px;border-left:1px solid #d8e2ec;font-size:var(--gantt-tick-font-size);line-height:1;white-space:nowrap}.gantt-row-timeline{position:relative;min-height:56px;overflow:hidden;border-bottom:1px solid #e5edf5;background:#fff}.gantt-grid-line{position:absolute;top:0;bottom:0;width:1px;background:#5264751c;pointer-events:none}.gantt-bar{position:absolute;z-index:1;height:14px;min-width:6px;border:0;border-radius:4px;box-shadow:inset 0 -1px #17212b29;cursor:pointer}.gantt-bar:hover:not(:disabled){filter:brightness(.94)}.gantt-bar:disabled{cursor:default}.gantt-bar--fact-open{border:1px dashed rgba(23,33,43,.42);opacity:.72}.gantt-bar--plan{top:12px}.gantt-bar--fact{top:32px}.reconciliation-toolbar{display:grid;grid-template-columns:minmax(160px,1fr) minmax(160px,1fr) minmax(160px,1fr) minmax(150px,.8fr) auto;gap:12px;align-items:end}.reconciliation-toolbar .ant-form-item{margin-bottom:0}.toolbar-actions{min-width:190px}.reconciliation-viewbar{display:flex;align-items:center;justify-content:space-between;gap:16px}.metric-grid--compact .ant-card-body{padding:14px 16px}.delta-ok{color:#237804;font-weight:650}.delta-bad{color:#cf1322;font-weight:650}.muted-cell{color:#8c9aaa}.employee-filter-select{min-width:320px}.salary-matrix-wrap{max-height:460px;overflow:auto;border:1px solid #d9e1e7;border-radius:8px;background:#fff}.salary-matrix{width:100%;min-width:1320px;border-collapse:separate;border-spacing:0}.salary-matrix th,.salary-matrix td{padding:8px;border-right:1px solid #e1e7ec;border-bottom:1px solid #e1e7ec;vertical-align:middle;white-space:nowrap}.salary-matrix th{position:sticky;top:0;z-index:2;background:#eef4f7;color:#314350;font-weight:700}.salary-matrix th:first-child,.salary-matrix td:first-child{position:sticky;left:0;z-index:3;box-shadow:1px 0 #e1e7ec}.salary-matrix th:first-child{z-index:4}.salary-matrix td:first-child{background:inherit}.salary-matrix input{min-width:92px}.salary-draft-row{background:#f7fbfc}.salary-current-row{background:#fff;color:#1d252d;font-weight:700}.salary-history-row{background:#fbfcfd;color:#8a97a3}.salary-total{text-align:right;font-weight:700}.analytics-v2-page .ant-tabs-nav{margin-bottom:12px}.analytics-v2-page{display:flex;height:calc(100vh - 88px);min-height:0;overflow:hidden}.analytics-v2-page>.ant-space-item:first-child{flex:0 0 auto}.analytics-v2-page>.ant-space-item:last-child,.analytics-report-card,.analytics-report-card>.ant-card-body,.analytics-report-card .ant-tabs,.analytics-report-card .ant-tabs-content-holder,.analytics-report-card .ant-tabs-content,.analytics-report-card .ant-tabs-tabpane{min-height:0}.analytics-v2-page>.ant-space-item:last-child,.analytics-report-card,.analytics-report-card>.ant-card-body,.analytics-report-card .ant-tabs,.analytics-report-card .ant-tabs-content-holder,.analytics-report-card .ant-tabs-content,.analytics-report-card .ant-tabs-tabpane-active{flex:1 1 auto}.analytics-report-card,.analytics-report-card>.ant-card-body,.analytics-report-card .ant-tabs,.analytics-report-card .ant-tabs-content-holder,.analytics-report-card .ant-tabs-content,.analytics-report-card .ant-tabs-tabpane{height:100%}.analytics-report-card .ant-card-body{display:flex;flex-direction:column;padding:12px;overflow:hidden}.analytics-project-select{width:320px}.analytics-report{display:flex;min-height:520px;flex-direction:column;gap:12px}.analytics-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.analytics-filter{width:170px}.analytics-cols{width:112px}.analytics-stream-select,.analytics-metric-select{width:320px}.analytics-layer-select{width:380px}.analytics-matrix-wrap{position:relative;min-height:440px;overflow:auto;border:1px solid #dce5ee;border-radius:8px;background:#fff}.analytics-matrix-wrap--bounded{max-height:calc(100vh - 310px)}.analytics-loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;padding:24px;background:#f3f6f9b8;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.analytics-loading-modal{display:flex;width:min(360px,100%);flex-direction:column;align-items:center;gap:10px;padding:20px 22px;color:#17212b;text-align:center;background:#fff;border:1px solid #dce5ee;border-radius:8px;box-shadow:0 18px 40px #17212b29}.analytics-loading-modal span{color:#617487;font-size:13px}.analytics-loading-modal .ant-progress{width:100%}.analytics-matrix{width:100%;min-width:1320px;border-collapse:separate;border-spacing:0}.analytics-layers-matrix{width:max-content;min-width:100%;table-layout:fixed}.analytics-matrix th,.analytics-matrix td{min-width:132px;max-width:240px;padding:7px 9px;overflow:hidden;border-right:1px solid #e1e9f0;border-bottom:1px solid #e1e9f0;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.analytics-matrix th{position:sticky;top:0;z-index:4;color:#314350;background:#eef4f7;font-size:12px;font-weight:750}.analytics-matrix th:nth-child(1),.analytics-matrix td:nth-child(1){position:sticky;left:0;z-index:3;min-width:120px;max-width:120px;background:#fff}.analytics-matrix th:nth-child(2),.analytics-matrix td:nth-child(2){position:sticky;left:120px;z-index:3;min-width:210px;max-width:210px;background:#fff}.analytics-matrix th:nth-child(3),.analytics-matrix td:nth-child(3){position:sticky;left:330px;z-index:3;min-width:260px;max-width:260px;background:#fff;box-shadow:10px 0 14px -14px #17212b6b}.analytics-matrix th:nth-child(1),.analytics-matrix th:nth-child(2),.analytics-matrix th:nth-child(3){z-index:6;background:#eef4f7}.analytics-total-row td:nth-child(1),.analytics-total-row td:nth-child(2),.analytics-total-row td:nth-child(3){background:#f7fbfc}.analytics-layers-matrix th:nth-child(1),.analytics-layers-matrix td:nth-child(1){min-width:340px;max-width:340px}.analytics-layers-matrix th:nth-child(2),.analytics-layers-matrix td:nth-child(2){left:340px;min-width:230px;max-width:230px;box-shadow:10px 0 14px -14px #17212b6b}.analytics-layers-matrix th:nth-child(3),.analytics-layers-matrix td:nth-child(3){position:static;min-width:132px;max-width:240px;background:inherit;box-shadow:none}.analytics-layers-matrix th,.analytics-layers-matrix td{position:relative}.analytics-layers-matrix .analytics-layer-sticky-cell{position:sticky;z-index:5;background:#fff}.analytics-layers-matrix th.analytics-layer-sticky-cell{top:0;z-index:8;background:#eef4f7}.analytics-layers-matrix .analytics-layer-sticky-cell--last{box-shadow:10px 0 14px -14px #17212b6b}.analytics-total-row .analytics-layer-sticky-cell{background:#f7fbfc}.analytics-matrix-sort-button{display:flex;width:100%;min-width:0;align-items:center;justify-content:space-between;gap:8px;padding:0 14px 0 0;overflow:hidden;color:inherit;font:inherit;text-align:left;background:transparent;border:0;cursor:pointer}.analytics-matrix-sort-button span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis}.analytics-matrix-sort-state{flex:0 0 auto;color:#8b9bab;font-size:10px}.analytics-matrix-sort-state--active{color:#1677ff}.analytics-matrix-resize-handle{position:absolute;top:0;right:-1px;bottom:0;z-index:12;width:12px;cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none}.analytics-matrix-resize-handle:after{position:absolute;top:8px;right:5px;bottom:8px;width:2px;border-radius:2px;background:#61748752;content:"";opacity:.65;transition:background-color .12s ease,opacity .12s ease}.analytics-matrix-resize-handle:hover:after,.analytics-layers-matrix th:hover .analytics-matrix-resize-handle:after,body.analytics-matrix-column-resizing .analytics-matrix-resize-handle:after{background:#1677ff;opacity:1}body.analytics-matrix-column-resizing,body.analytics-matrix-column-resizing *{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}.analytics-total-row{background:#f7fbfc;color:#17212b;font-weight:750}.analytics-planfact-cell{display:flex;flex-direction:column;gap:2px;line-height:1.15}.analytics-planfact-cell small{color:#708294;font-size:11px}.analytics-good{color:#237804;background:#f0f8ec;font-weight:700}.analytics-bad{color:#cf1322;background:#fff1f0;font-weight:700}.analytics-good-soft{background:#f0f8ec}.analytics-bad-soft{background:#fff7e6}.analytics-layers-workspace{display:grid;min-height:440px;grid-template-columns:minmax(0,1fr);gap:12px}.analytics-layers-workspace--open{grid-template-columns:minmax(0,1fr) 340px}.analytics-metrics-panel{display:flex;min-height:0;max-height:640px;flex-direction:column;gap:10px;padding:12px;overflow:hidden;border:1px solid #dce5ee;border-radius:8px;background:#fff}.analytics-metric-list{display:flex;min-height:0;flex-direction:column;gap:8px;overflow:auto}.analytics-metric-chip{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:center;padding:8px;border:1px solid #e2e9f0;border-radius:6px;background:#f9fbfd}.analytics-metric-chip--active{border-color:#91caff;background:#eef7ff}.analytics-metric-chip .ant-space{grid-column:1 / -1}.analytics-pivot-prototype-toolbar{width:100%}.analytics-pivot-prototype-page{display:flex;height:100%;min-height:0;flex-direction:column;overflow:hidden}.analytics-pivot-control-bar{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:center;gap:10px}.analytics-pivot-filters-panel{flex:0 0 auto;max-height:214px;padding:10px;overflow:auto;border:1px solid #dce5ee;border-radius:8px;background:#fff}.analytics-pivot-prototype-page>.ant-space-item:last-child,.analytics-pivot-prototype-card,.analytics-pivot-prototype-card .ant-card-body{min-height:0}.analytics-pivot-prototype-page>.ant-space-item:last-child{flex:1 1 auto}.analytics-pivot-prototype-tabs .ant-tabs-nav{margin-bottom:8px}.analytics-pivot-prototype-section{width:100%}.analytics-pivot-prototype-metrics{display:flex;max-height:112px;gap:8px;overflow:auto;flex-wrap:wrap;padding:2px}.analytics-pivot-prototype-metric{display:inline-flex;align-items:center;gap:6px;max-width:360px;padding:5px 8px;color:#455866;background:#f7fbfc;border:1px solid #dce5ee;border-radius:6px;cursor:pointer}.analytics-pivot-prototype-metric span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.analytics-pivot-prototype-metric--active{color:#102a43;background:#eef8f6;border-color:#8ad5ca}.analytics-pivot-prototype-card{position:relative;flex:1 1 auto;min-height:0;overflow:hidden}.analytics-pivot-prototype-card .ant-card-body{display:flex;flex-direction:column;height:100%;padding:10px}.analytics-pivot-prototype-sheet{flex:1 1 auto;width:100%;height:100%;min-height:0;overflow:hidden}.analytics-pivot-prototype-sheet .antv-s2-wrapper,.analytics-pivot-prototype-sheet .antv-s2-container{width:100%;height:100%}.analytics-pivot-prototype-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:grid;place-items:center;background:#ffffff9e}.ant-card{box-shadow:0 1px 2px #0f172a0a}.ant-table-cell{white-space:nowrap}@media(max-width:980px){.app-layout{display:block}.app-sider{position:relative;width:100%!important;max-width:none!important;min-width:0!important;height:auto}.app-sider .ant-layout-sider-children{display:block;overflow-x:auto}.brand{min-height:58px}.app-sider .ant-menu{display:flex;min-width:560px}.app-sider .ant-menu-item{width:auto}.metric-grid,.reconciliation-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.reconciliation-viewbar{align-items:flex-start;flex-direction:column}.analytics-layers-workspace--open{grid-template-columns:1fr}.analytics-metrics-panel{max-height:none}.stage-toolbar{align-items:flex-start;flex-direction:column}.gantt-scale-control{width:min(260px,100%)}}@media(max-width:680px){.app-header{align-items:center;padding:8px 10px}.app-header__logo{width:168px}.app-header__identity{display:none}.app-content{padding:14px 16px 20px}.metric-grid{grid-template-columns:1fr}.table-search{width:100%}.import-form-grid,.import-upload-grid,.reconciliation-toolbar,.profile-grid,.project-form-grid{grid-template-columns:1fr}.toolbar-actions{min-width:0}}.app-error-page{display:grid;min-height:min(620px,calc(100vh - 160px));place-items:center;text-align:center}.app-error-page__hint{display:block;margin-top:-48px;max-width:560px}
