*{box-sizing:border-box}body,html{padding:0;margin:0;min-height:100%}body{background:#f5f7fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Hiragino Sans GB,sans-serif;color:rgba(0,0,0,.88);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:rgba(0,0,0,.15);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.25)}.mobile-content-pad{padding-bottom:calc(56px + env(safe-area-inset-bottom, 0px))}.dept-task-row{transition:background .15s}.dept-task-row:hover{background:var(--dash-hover,rgba(255,255,255,.06))}.gantt-row{transition:background .15s}.gantt-row:hover{background:var(--dash-hover,rgba(255,255,255,.06))}.gantt-action-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:76px;padding:7px 10px;border:1px solid var(--dash-border,rgba(0,0,0,.08));border-radius:8px;background:color-mix(in srgb,var(--dash-track,rgba(0,0,0,.06)) 72%,transparent);color:var(--dash-text,rgba(0,0,0,.88));cursor:pointer;text-align:left;line-height:1.1;transition:border-color .15s,background .15s,box-shadow .15s}.gantt-action-card:hover{border-color:var(--dash-accent,#1677ff);box-shadow:0 6px 16px -12px var(--dash-accent,#1677ff)}.gantt-action-card.is-active{border-color:var(--dash-accent,#1677ff);background:color-mix(in srgb,var(--dash-accent,#1677ff) 12%,transparent)}.gantt-action-card span,.gantt-action-card strong{display:block}.gantt-action-card span{color:var(--dash-sub,rgba(0,0,0,.55));font-size:11px;font-weight:600}.gantt-action-card strong{margin-top:3px;color:var(--dash-text,rgba(0,0,0,.88));font-size:13px;font-weight:700;white-space:nowrap}.ant-card{box-shadow:0 1px 2px rgba(0,0,0,.03),0 8px 20px -12px rgba(0,0,0,.12)}@keyframes app-page-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes app-card-in{0%{opacity:0;transform:translateY(20px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}.app-page-motion{animation:app-page-in .36s cubic-bezier(.22,1,.36,1) both}.app-card-reveal{opacity:0;transform:translateY(20px) scale(.985)}.app-card-reveal.app-card-visible{animation:app-card-in .52s cubic-bezier(.22,1,.36,1) var(--card-delay,0s) both}@media (prefers-reduced-motion:reduce){.app-card-reveal.app-card-visible,.app-page-motion{animation:none}.app-card-reveal{opacity:1;transform:none}}.app-themed-content .ant-card{background:var(--app-card-bg,#fff);border-color:var(--app-card-border,#f0f0f0)}.app-themed-content .ant-card .ant-card-head{background:color-mix(in srgb,var(--app-card-bg,#fff) 82%,#fff);border-bottom-color:var(--app-card-border,#f0f0f0)}.app-themed-content .ant-table-wrapper .ant-table,.app-themed-content .ant-table-wrapper .ant-table-container{background:transparent}.app-themed-content .ant-table-wrapper .ant-table-thead>tr>th{background:var(--app-panel-bg,#fafafa)}.app-themed-content .ant-table-wrapper .ant-table-tbody>tr>td{background:color-mix(in srgb,var(--app-card-bg,#fff) 72%,#fff)}.app-themed-content .ant-empty,.app-themed-content .ant-list{background:transparent}@keyframes overdue-marquee{0%{transform:translateX(0)}to{transform:translateX(-50%)}}.overdue-marquee{animation:overdue-marquee 40s linear infinite}.overdue-marquee:hover{animation-play-state:paused}.dept-overview-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-gap:12px;gap:12px}.dept-chip{background:var(--dash-track,rgba(0,0,0,.04));transition:background .15s,transform .15s,box-shadow .15s}.dept-chip:hover{background:var(--dash-hover,rgba(0,0,0,.03));transform:translateY(-2px);box-shadow:0 6px 16px -8px rgba(0,0,0,.25)}@media (max-width:1400px){.dept-overview-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (max-width:1100px){.dept-overview-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (max-width:640px){.dept-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.task-switch{gap:4px;padding:4px;border:1px solid rgba(22,119,255,.28);border-radius:8px;background:#eef5ff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.65),0 4px 12px -10px rgba(22,119,255,.9)}.task-switch,.task-switch-item{display:inline-flex;align-items:center}.task-switch-item{justify-content:center;gap:6px;min-width:88px;height:32px;padding:0 14px;border:0;border-radius:6px;background:transparent;color:rgba(0,0,0,.72);font:inherit;font-weight:600;line-height:1;cursor:pointer;transition:background .15s,color .15s,box-shadow .15s}.task-switch-compact .task-switch-item{min-width:72px}.task-switch-item:hover{color:#1677ff;background:rgba(22,119,255,.08)}.task-switch-item.is-active{box-shadow:0 6px 14px -8px rgba(22,119,255,.95)}.task-switch-item.is-active,.task-switch-item.is-active:hover{color:#fff;background:#1677ff}.progress-filter-bar{display:grid;grid-template-columns:repeat(2,minmax(180px,260px));grid-gap:12px;gap:12px;margin-bottom:16px}.progress-filter-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #d9e6ff;border-radius:8px;background:#fff;padding:12px 14px;text-align:left;cursor:pointer;transition:border-color .15s,box-shadow .15s,background .15s}.progress-filter-card:hover{border-color:#1677ff;box-shadow:0 6px 16px -12px rgba(22,119,255,.7)}.progress-filter-card.is-active{border-color:#1677ff;background:#f0f6ff;box-shadow:inset 0 0 0 1px rgba(22,119,255,.16)}.progress-filter-desc,.progress-filter-title{display:block}.progress-filter-title{color:rgba(0,0,0,.72);font-size:13px;font-weight:700}.progress-filter-card strong{display:block;margin-top:4px;color:#1677ff;font-size:28px;line-height:1.1}.progress-filter-desc{margin-top:6px;color:rgba(0,0,0,.45);font-size:12px}@media (max-width:640px){.progress-filter-bar{grid-template-columns:1fr}}.progress-detail-table .ant-table-thead>tr>th{background:#f3f7ff!important;color:rgba(0,0,0,.78);font-weight:700;border-bottom:1px solid #dce8ff!important}.progress-detail-table .ant-table-tbody>tr>td{vertical-align:top;background:#fff}.progress-detail-table .ant-table-tbody>tr:hover>td{background:#fbfdff!important}.progress-table-head{display:inline-flex;align-items:center;gap:6px}