:root{color:#17181c;font-synthesis:none;text-rendering:optimizelegibility;background:#f6f7f9;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei UI,sans-serif}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{background:#f6f7f9;min-height:100vh}button,input,textarea,select{font:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#c8cbd2 padding-box padding-box;border:3px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#aeb2ba padding-box padding-box;border:3px solid #0000}.app-shell{background:#f6f7f9;min-height:100vh}.app-sider{height:100vh;box-shadow:none;z-index:10;border-right:1px solid #e8e9ed;top:0;position:sticky!important}.app-sider .ant-layout-sider-children{flex-direction:column;display:flex}.brand{align-items:center;gap:11px;height:76px;padding:20px 18px 14px;display:flex}.brand>span,.login-mark{color:#fff;background:#4c4cec;border-radius:10px;flex:none;place-items:center;width:36px;height:36px;font-size:18px;font-weight:700;display:grid;box-shadow:0 8px 18px #4c4cec38}.brand div{gap:1px;min-width:0;display:grid}.brand strong{color:#17181c;white-space:nowrap;font-size:15px}.brand small{color:#8b909a;font-size:11px}.main-menu{flex:1;padding:8px 0;border-inline-end:0!important}.account-panel{background:#f6f7f9;border:1px solid #e8e9ed;border-radius:12px;grid-template-columns:36px minmax(0,1fr) 28px;align-items:center;gap:10px;margin:14px;padding:12px;display:grid}.account-panel>div{min-width:0;display:grid}.account-panel strong,.account-panel span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.account-panel strong{font-size:13px}.account-panel span{color:#8b909a;font-size:11px}.workspace{background:#f6f7f9;min-width:0}.topbar{z-index:8;border-bottom:1px solid #e8e9ed;align-items:center;height:68px;padding:0 28px;line-height:normal;display:flex;position:sticky;top:0}.week-switcher>div{text-align:center;gap:2px;min-width:180px;display:grid}.week-switcher strong{color:#292b31;font-size:13px}.week-switcher span{color:#8b909a;font-size:11px}.header-actions{margin-left:auto}.header-avatar{color:#3d3dc5;background:#e8e9fb;font-weight:700}.page-content{width:100%;max-width:1720px;margin:0 auto;padding:28px}.page-title{margin-bottom:20px}.page-title h2{letter-spacing:-.02em;margin:0 0 3px!important;font-size:24px!important;line-height:1.3!important}.page-title p{margin:0!important}.filters-bar{margin-bottom:16px}.filter-search{width:min(360px,100%)}.filter-select{width:168px}.report-search{width:min(420px,100%);margin-bottom:20px}.metrics-grid{grid-template-columns:repeat(7,minmax(112px,1fr));gap:10px;margin-bottom:16px;display:grid}.metric-card{text-align:left;flex-direction:column;justify-content:space-between;background:#fff!important;border:1px solid #e8e9ed!important;border-radius:10px!important;align-items:flex-start!important;height:78px!important;padding:13px 15px!important;display:flex!important}.metric-card:hover{background:#fafafb!important;border-color:#caccd3!important}.metric-card span{color:#60646c;font-size:12px;font-weight:500}.metric-card strong{color:#17181c;letter-spacing:-.02em;font-size:23px;line-height:1}.metric-card.primary{border-top:2px solid #4c4cec!important}.metric-card.danger{border-top:2px solid #d9364f!important}.metric-card.warning{border-top:2px solid #c77a13!important}.metric-card.success{border-top:2px solid #14966d!important}.table-card,.list-card,.report-card,.backup-card{border-color:#e8e9ed;box-shadow:0 1px 2px #191c2608}.project-name{gap:3px;display:grid}.status-progress{white-space:nowrap;grid-template-columns:auto minmax(48px,1fr) auto;align-items:center;gap:7px;display:grid}.status-progress .ant-progress{min-width:44px}.clamp-text{color:#3e4149;margin:0!important}.danger-text{color:#b52d42!important}.overdue-row>td:first-child{box-shadow:inset 3px 0 #d9364f}.blocked-row>td:first-child{box-shadow:inset 3px 0 #c77a13}.project-detail{background:#fafafb;margin:-12px -8px;padding:4px 8px 10px}.detail-header{padding:10px 4px 14px}.detail-notes{grid-template-columns:2fr 1fr;gap:16px;padding:16px 4px 0;display:grid}.detail-notes>div{background:#fff;border:1px solid #e8e9ed;border-radius:8px;padding:12px 14px}.detail-notes p{margin:5px 0 0}.work-item{border-bottom:1px solid #e8e9ed;grid-template-columns:auto minmax(180px,1fr) auto auto;align-items:center;gap:14px;min-height:76px;padding:16px 20px;display:grid}.work-item:last-child{border-bottom:0}.work-item-main{gap:3px;display:grid}.list-card .blocked-item{background:#fff8f8;box-shadow:inset 3px 0 #d9364f}.empty-state{padding:48px 20px}.report-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.report-card{height:100%}.report-section{margin-top:18px}.report-section p{white-space:pre-wrap;margin:5px 0 0}.backup-card{height:100%}.import-preview{margin-top:18px}.form-alert{margin-bottom:20px}.full-control{width:100%}.loading-screen{background:#f6f7f9;place-content:center;justify-items:center;gap:14px;min-height:100vh;display:grid}.login-page{background:#fff;grid-template-columns:minmax(380px,1.1fr) minmax(420px,.9fr);min-height:100vh;display:grid}.login-intro{background:radial-gradient(circle at 18% 20%,#6c6cf42e,#0000 34%),linear-gradient(145deg,#eff0ff 0%,#f7f7ff 48%,#eceefb 100%);border-right:1px solid #e1e3f1;align-items:center;min-height:100vh;padding:72px;display:grid}.login-copy{max-width:560px}.login-mark{border-radius:13px;width:48px;height:48px;margin-bottom:28px;font-size:22px}.login-copy h1{color:#20213f;letter-spacing:-.045em;margin:0 0 12px!important;font-size:clamp(38px,5vw,62px)!important}.login-copy>p{color:#656983;max-width:500px;font-size:18px}.login-points{flex-wrap:wrap;gap:8px;margin-top:34px;display:flex}.login-points span{color:#3e4260;background:#ffffffa3;border:1px solid #5b5e8724;border-radius:999px;padding:8px 12px;font-size:13px}.login-panel{place-items:center;padding:48px;display:grid}.login-card{width:min(420px,100%);box-shadow:none}.login-card h2{margin-bottom:4px!important}.login-card .ant-alert{margin:18px 0}.login-card .ant-form{margin-top:26px}@media (width<=1250px){.metrics-grid{grid-template-columns:repeat(4,minmax(112px,1fr))}}@media (width<=900px){.page-content{padding:22px 18px}.topbar{padding:0 18px}.metrics-grid{grid-template-columns:repeat(2,minmax(112px,1fr))}.login-intro{padding:44px}}@media (width<=767px){.app-shell{display:block}.app-sider{border:0;border-top:1px solid #e1e3e8;height:64px;width:100%!important;min-width:100%!important;max-width:100%!important;position:fixed!important;inset:auto 0 0!important}.app-sider .ant-layout-sider-children{display:block}.brand,.account-panel{display:none}.mobile-nav{grid-template-columns:repeat(5,minmax(0,1fr));align-items:stretch;height:64px;padding:5px 4px;display:grid}.mobile-nav .ant-btn{color:#60646c;flex-direction:column;gap:2px;min-width:0;height:54px;padding:4px 1px;font-size:10px;line-height:15px;display:flex}.mobile-nav .ant-btn .anticon{margin:0;font-size:17px}.mobile-nav .ant-btn.active{color:#4c4cec;background:#e8e9fb}.workspace{min-height:100vh;display:block;width:100%!important;min-width:100%!important}.topbar{height:60px;padding:0 10px}.week-switcher>div{min-width:150px}.header-actions .ant-btn{display:none}.page-content{padding:18px 12px 88px}.page-title{align-items:flex-start!important}.page-title>div{min-width:0}.page-title h2{font-size:21px!important}.filter-search,.filter-select{width:100%}.metrics-grid{gap:8px}.metric-card{height:72px!important}.detail-notes{grid-template-columns:1fr}.work-item{grid-template-columns:auto minmax(0,1fr) auto}.work-item>.ant-space{grid-column:2/-1}.work-item>.ant-btn:last-child{grid-area:1/3}.report-grid{grid-template-columns:1fr}.login-page{background:#f6f7f9;grid-template-columns:1fr}.login-intro{display:none}.login-panel{min-height:100vh;padding:24px}.login-card{border:1px solid #e8e9ed}.ant-drawer-content-wrapper{width:100%!important}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
