*{box-sizing:border-box}body{margin:0;background:#f5f7fb;color:#172033;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background-color:#eef1f4}.login-panel{width:min(400px,100%);padding:36px;background:#fff;border:1px solid #dfe3e8;border-radius:8px;box-shadow:0 12px 32px #17203314}.login-mark{width:40px;height:40px;margin-bottom:20px;display:grid;place-items:center;border-radius:6px;background:#2563eb;color:#fff;font-size:20px;font-weight:700}.login-title.ant-typography{margin:0 0 6px;font-size:24px}.login-form{margin-top:28px}.app-shell{min-height:100vh}.app-sider{border-right:1px solid #e5e8ef}.brand{height:56px;display:flex;align-items:center;padding:0 20px;font-weight:700;letter-spacing:0;color:#1f2937}.app-header{height:56px;padding:0 20px;background:#fff;border-bottom:1px solid #e5e8ef;display:flex;align-items:center;justify-content:space-between}.app-content{padding:16px;overflow:auto}.page-toolbar{border-radius:6px}.page-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.matrix-card{border-radius:6px}.matrix-card .ant-card-body{padding:0}.matrix-card .ant-table{font-size:12px}.matrix-card .ant-table-thead>tr>th{background:#f8fafc;font-weight:600;text-align:center;white-space:nowrap;padding:4px 6px;line-height:1.2}.matrix-card .ant-table-tbody>tr>td{padding:3px 5px;white-space:nowrap}.row-has-exception>td{background:#fff8f0}.matrix-project-row>td{background:#f4f7fb;font-weight:600}.matrix-month-row>td{background:#eaf2ff!important;color:#1d4ed8;font-weight:600}.matrix-month-row .ant-table-row-expand-icon{display:none}.matrix-project-row.row-has-exception>td{background:#fff4e8}.matrix-fixed-left,.matrix-fixed-right{background:#fff}.matrix-row-title{width:100%;max-width:100%;min-width:0;line-height:1.15}.matrix-row-title .ant-space-item{max-width:100%;min-width:0}.matrix-ellipsis-text{display:block;width:100%;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.matrix-project-title-line{display:flex;align-items:center;gap:4px;width:100%;min-width:0}.matrix-project-title-line .matrix-ellipsis-text{flex:1;min-width:0}.matrix-project-title-button{width:100%;min-width:0;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;text-align:left}.matrix-project-title-button:hover .matrix-ellipsis-text{color:#1677ff}.matrix-row-action-stack{display:inline-flex;width:18px;flex-direction:column;align-items:center;justify-content:center;gap:2px;margin-right:4px;vertical-align:middle}.matrix-row-action-button.ant-btn{width:18px;min-width:18px;height:18px;padding:0;border-radius:4px;font-size:11px}.matrix-row-action-button.ant-btn .anticon{font-size:11px}.matrix-row-action-placeholder,.matrix-expand-spacer{display:inline-block;width:18px;height:18px}.stage-title{display:inline-block;font-size:12px}.matrix-stage-header.stage-blue,.matrix-substage-header.stage-blue,.matrix-stage-cell.stage-blue{background:#f1f7ff}.matrix-stage-header.stage-cyan,.matrix-substage-header.stage-cyan,.matrix-stage-cell.stage-cyan{background:#eefcff}.matrix-stage-header.stage-green,.matrix-substage-header.stage-green,.matrix-stage-cell.stage-green{background:#f0faf4}.matrix-stage-header.stage-lime,.matrix-substage-header.stage-lime,.matrix-stage-cell.stage-lime{background:#f8fbeb}.matrix-stage-header.stage-gold,.matrix-substage-header.stage-gold,.matrix-stage-cell.stage-gold{background:#fff9e6}.matrix-stage-header.stage-orange,.matrix-substage-header.stage-orange,.matrix-stage-cell.stage-orange{background:#fff3e8}.matrix-stage-header.stage-purple,.matrix-substage-header.stage-purple,.matrix-stage-cell.stage-purple{background:#f7f2ff}.matrix-stage-header{border-left:2px solid rgba(37,99,235,.28)!important}.progress-cell{width:100%;min-height:46px;height:auto;padding:0;line-height:1}.progress-cell.ant-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.progress-cell .ant-space{width:auto;justify-content:center}.progress-cell-main{min-height:16px}.progress-cell-summary{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:46px;line-height:1}.progress-cell-inline{display:inline-flex;min-height:46px;flex-direction:column;align-items:center;justify-content:center}.progress-value{display:inline-block;min-width:34px;padding:1px 5px;border-radius:4px;color:#111827;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.35}.progress-value-completed{color:#047857;background:#dff7ea}.progress-value-active{color:#1d4ed8;background:#dbeafe}.progress-value-empty{color:#64748b;background:#f1f5f9}.progress-value-exception{color:#b42318;background:#fee4e2}.progress-owner{display:block;max-width:86px;margin-top:2px;color:#667085;font-size:10px;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-cell-time{display:flex;flex-direction:column;align-items:center;gap:1px;margin-top:1px;color:#98a2b3;font-size:9px;line-height:1.05;font-variant-numeric:tabular-nums}.matrix-month-title,.matrix-month-meta{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.matrix-month-spacer{display:block;min-height:22px}.empty-cell{color:#9ca3af}.muted-icon{color:#9ca3af;font-size:11px}.progress-warning{color:#b42318}.project-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:16px}.project-form-grid .ant-form-item:first-child{grid-column:1 / -1}.project-item-header{display:grid;grid-template-columns:minmax(220px,1fr) 132px 180px 28px;gap:8px;padding-right:2px}.project-item-row{display:grid;grid-template-columns:minmax(220px,1fr) 132px 180px 28px;align-items:flex-start;gap:8px;width:100%}.project-item-row .ant-form-item{min-width:0}.matrix-editable-text-cell{width:100%;min-height:24px;padding:2px 4px;border:0;border-radius:4px;background:transparent;color:inherit;cursor:pointer;text-align:left}.matrix-editable-text-cell:hover{background:#1677ff14}.project-stage-owner-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:16px}.project-management-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.project-management-table .ant-table-cell:first-child{max-width:0}.production-plan-card .ant-table-thead>tr>th{padding:6px 4px}.production-plan-card .ant-table-tbody>tr>td{padding:6px 4px}.production-plan-title-cell{width:100%;min-width:0}.production-plan-clickable-cell{cursor:pointer}.production-plan-clickable-cell:hover .ant-typography{color:#1677ff}.production-plan-meta{display:block;font-size:11px;line-height:1.2}.schedule-detail-tooltip{max-width:360px;color:#fff;font-size:12px;line-height:1.7}.schedule-detail-tooltip span{color:#ffffffb8}.schedule-detail-title{margin-bottom:4px;font-size:13px;font-weight:700}.production-plan-date-header{background:#f3f7ec!important}.production-plan-date-cell{background:#f8fbf7}.production-plan-date-title{width:100%;line-height:1.05;color:#355e22;font-size:11px}.production-plan-date-title small{color:#7a8b72;font-size:9px}.production-plan-day{width:100%;height:18px;border-radius:0}.production-plan-day.is-planned{display:flex;align-items:center;justify-content:center;background:#4f8d2f;border-top:1px solid #183f10;border-bottom:1px solid #183f10;color:#fff;font-size:10px}.production-plan-day.is-start{border-left:1px solid #183f10;border-radius:3px 0 0 3px}.production-plan-day.is-end{border-right:1px solid #183f10;border-radius:0 3px 3px 0}.production-plan-row.status-completed .production-plan-day.is-planned{background:#8aa08a}.production-plan-row.status-delayed .production-plan-day.is-planned{background:#d65c4f}.gantt-legend .ant-tag{margin-inline-end:0}.gantt-timeline-header{padding:0!important;background:#f7faf9!important}.gantt-header{overflow:hidden;background:#f7faf9}.gantt-month-label{height:24px;line-height:24px;padding-left:10px;border-bottom:1px solid #e4ebe7;color:#334155;font-size:12px;font-weight:700;text-align:left}.gantt-day-grid{display:grid;grid-template-columns:repeat(var(--day-count, 30),34px)}.gantt-day-header{width:34px;height:36px;padding-top:4px;border-right:1px solid #e5e7eb;color:#334155;font-size:12px;line-height:1.05;text-align:center}.gantt-day-header small{display:block;margin-top:3px;color:#94a3b8;font-size:10px}.gantt-day-header.is-weekend{background:#eef6f4}.gantt-timeline-cell{padding:0!important;background:#fbfcfd}.gantt-row-track{position:relative;min-height:38px;overflow:hidden;background:#fbfcfd}.gantt-row-track.empty{display:flex;align-items:center;padding-left:10px;color:#94a3b8;font-size:12px}.gantt-grid-lines{position:absolute;top:0;right:0;bottom:0;left:0;display:flex}.gantt-grid-lines span{width:34px;flex:0 0 34px;border-right:1px solid #edf0f3}.gantt-grid-lines span.is-weekend{background:#0e74900d}.gantt-bar{position:absolute;top:7px;height:24px;border-radius:4px;background:#4f8d2f;box-shadow:0 1px 3px #0f172a2e;color:#fff;font-size:12px;font-weight:700;line-height:24px;overflow:hidden;white-space:nowrap}.gantt-bar-fill{position:absolute;inset:0 auto 0 0;width:var(--bar-progress);background:#ffffff38}.gantt-bar-label{position:relative;display:block;padding:0 68px 0 9px;overflow:hidden;text-overflow:ellipsis}.gantt-bar-progress{position:absolute;top:2px;right:7px;font-size:11px;line-height:10px;opacity:.9}.gantt-bar-actual{position:absolute;top:13px;right:7px;font-size:10px;line-height:10px;opacity:.9}.gantt-bar.task-cutting{background:#0891b2}.gantt-bar.task-production{background:#3f7f2d}.gantt-bar.task-painting{background:#7c3aed}.gantt-bar.task-delivery{background:#2563eb}.gantt-bar.task-material{background:#b7791f}.gantt-bar.task-inspection{background:#0f766e}.gantt-bar.status-completed{background:#64748b}.gantt-bar.status-delayed{background:#dc2626}.schedule-backlog-card .ant-card-body,.production-plan-card .ant-card-body{padding:10px}.schedule-backlog-card .ant-table-thead>tr>th{background:#f7f9fc!important;font-size:12px}.schedule-backlog-card .ant-table-tbody>tr>td{padding:8px!important;vertical-align:top}.schedule-backlog-item{width:100%;min-width:0}.schedule-backlog-modal-table .ant-table-thead>tr>th{background:#f7f9fc!important;font-size:12px}.schedule-backlog-modal-table .ant-table-tbody>tr>td{padding:8px!important;vertical-align:top}.production-analysis-card .ant-card-body{padding:8px 10px 10px}.production-analysis-card .ant-tabs-nav{margin-bottom:8px}.production-detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.production-detail-grid div{min-width:0;padding:8px;border:1px solid #edf0f5;border-radius:6px;background:#fafbfc}.production-detail-grid span{display:block;margin-bottom:4px;color:#8c8c8c;font-size:12px}.production-detail-grid strong{display:block;overflow:hidden;color:#1f2937;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.report-summary-text{padding:2px 0}.report-summary-text .ant-typography{color:#1f2937;font-size:13px;line-height:1.55}.report-table-card .ant-card-body{padding:8px 10px 10px}.report-table-card .ant-tabs-nav{margin-bottom:8px}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:0 16px}.work-log-form-grid{grid-template-columns:repeat(4,minmax(150px,1fr))}.work-log-plan-title{width:100%;min-width:0}.work-log-schedule-name{display:inline-block;max-width:96px;vertical-align:bottom}.mobile-shell{min-height:100vh;background:#f5f7fb}.mobile-content{padding:12px 12px 72px}.mobile-header{height:48px;padding:0 12px;background:#fff;border-bottom:1px solid #e5e8ef;display:flex;align-items:center;justify-content:space-between}.mobile-tabbar{position:fixed;left:0;right:0;bottom:0;z-index:20;border-top:1px solid #e5e8ef;display:flex;justify-content:space-around}.mobile-tabbar .ant-menu-item{flex:1;text-align:center}.mobile-card{border-radius:6px}@media (max-width: 768px){.login-page{padding:16px}.login-panel{padding:28px 24px;box-shadow:none}.app-sider{display:none}.app-header{padding:0 12px}.app-content{padding:12px}.form-grid,.project-form-grid,.project-item-header,.project-item-row,.project-stage-owner-grid{grid-template-columns:1fr}.page-title-row{align-items:stretch;flex-direction:column}}
