.budget-center-page { min-width: 0; display: grid; gap: 14px; color: #1f2937; } .budget-local-head { min-height: 34px; display: flex; align-items: center; } .budget-local-head h2 { margin: 0; color: #111827; font-size: 24px; line-height: 1.2; font-weight: 800; } .budget-summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: 1px solid #e5eaf1; border-radius: 8px; background: #fff; overflow: hidden; } .budget-summary-card { min-height: 118px; padding: 22px 28px; display: grid; grid-template-columns: 64px minmax(0, 1fr); align-items: center; gap: 18px; border-right: 1px solid #edf1f6; } .budget-summary-card:last-child { border-right: 0; } .summary-icon { width: 54px; height: 54px; border-radius: 50%; display: grid; place-items: center; font-size: 30px; } .summary-icon.green { background: #e8f7ef; color: #07965f; } .summary-icon.blue { background: #edf4ff; color: #2f7fd7; } .summary-icon.orange { background: #fff4e5; color: #df9300; } .budget-summary-card span:not(.summary-icon) { display: block; color: #1f2937; font-size: 14px; font-weight: 700; } .budget-summary-card strong { display: block; margin-top: 8px; color: #111827; font-size: 24px; line-height: 1; font-weight: 500; font-variant-numeric: tabular-nums; white-space: nowrap; } .budget-summary-card em { display: block; margin-top: 10px; color: #8a94a6; font-size: 13px; font-style: normal; } .budget-filter-bar { min-height: 62px; border: 1px solid #e5eaf1; border-radius: 8px; background: #fff; padding: 12px 18px; display: flex; align-items: center; gap: 22px; } .budget-filter-bar label { display: inline-flex; align-items: center; gap: 10px; color: #1f2937; font-size: 14px; font-weight: 700; } .budget-filter-bar select, .budget-table-foot select { height: 34px; min-width: 150px; border: 1px solid #dbe2ec; border-radius: 5px; background: #fff; color: #1f2937; padding: 0 34px 0 12px; font-size: 14px; } .budget-primary-btn { margin-left: auto; height: 36px; border: 0; border-radius: 5px; background: #0aa66f; color: #fff; padding: 0 18px; display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 800; } .budget-work-grid { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 10px; } .budget-department-panel, .budget-table-panel, .budget-chart-panel, .budget-alert-panel { border: 1px solid #e5eaf1; border-radius: 8px; background: #fff; overflow: hidden; } .budget-department-panel header, .budget-table-panel > header, .budget-card-head { min-height: 48px; padding: 13px 18px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #edf1f6; } .budget-department-panel strong, .budget-table-panel > header strong, .budget-card-head strong { color: #111827; font-size: 16px; font-weight: 800; } .department-search { position: relative; margin: 12px 14px 8px; } .department-search i { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: #9aa5b5; } .department-search input { width: 100%; height: 36px; border: 1px solid #e2e8f0; border-radius: 5px; padding: 0 12px 0 34px; background: #fff; color: #1f2937; } .department-list { display: grid; gap: 4px; padding: 8px 12px 16px; } .department-list button { height: 38px; border: 0; border-radius: 5px; background: transparent; color: #4b5563; padding: 0 12px; display: flex; align-items: center; gap: 10px; font-size: 14px; font-weight: 700; text-align: left; } .department-list button.active { background: #e9f7f1; color: #07965f; } .budget-table-wrap { overflow-x: auto; } .budget-table-panel table { width: 100%; min-width: 1040px; border-collapse: collapse; } .budget-table-panel th, .budget-table-panel td { padding: 13px 18px; border-bottom: 1px solid #edf1f6; border-right: 1px solid #edf1f6; color: #273142; font-size: 14px; text-align: left; white-space: nowrap; } .budget-table-panel th:last-child, .budget-table-panel td:last-child { border-right: 0; } .budget-table-panel th { background: #fafbfd; color: #1f2937; font-weight: 800; } .budget-rate { width: 96px; display: grid; gap: 6px; } .budget-rate span { color: #273142; font-size: 13px; } .budget-rate div { height: 6px; border-radius: 999px; background: #e9edf3; overflow: hidden; } .budget-rate em { display: block; height: 100%; border-radius: inherit; } .budget-rate em.ok { background: #13a66b; } .budget-rate em.warn { background: #f2a51a; } .budget-rate em.danger { background: #ef4444; } .budget-warning-red { color: #e24b4b !important; font-weight: 800; } .budget-warning-yellow { color: #e3a008 !important; font-weight: 800; } .budget-row-actions { display: flex; align-items: center; gap: 14px; } .budget-row-actions button { border: 0; background: transparent; color: #1c7ed6; font-size: 14px; font-weight: 800; } .budget-table-foot { min-height: 52px; padding: 10px 18px; display: flex; align-items: center; justify-content: flex-end; gap: 10px; } .budget-table-foot button { width: 32px; height: 32px; border: 1px solid #dbe2ec; border-radius: 5px; background: #fff; color: #64748b; } .budget-table-foot button.active { border-color: #10a873; color: #10a873; font-weight: 800; } .budget-table-foot span { color: #4b5563; font-size: 14px; } .budget-bottom-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(360px, 0.82fr); gap: 10px; } .budget-card-head button { border: 0; background: transparent; color: #1c7ed6; font-size: 14px; font-weight: 800; } .budget-chart-legend { display: flex; align-items: center; gap: 22px; color: #4b5563; font-size: 13px; } .budget-chart-legend span { display: inline-flex; align-items: center; gap: 7px; } .legend-line { width: 18px; height: 0; border-top: 2px dashed #2f7fd7; } .legend-line.used { border-top-style: solid; border-top-color: #13a66b; } .budget-chart-panel { padding-bottom: 16px; } .budget-chart-panel .budget-trend-chart { margin: 12px 18px 0; } .budget-alert-list { display: grid; padding: 12px 20px 18px; } .budget-alert-row { min-height: 46px; display: grid; grid-template-columns: 12px 120px minmax(0, 1fr) 92px; gap: 12px; align-items: center; border-bottom: 1px solid #edf1f6; } .budget-alert-row:last-child { border-bottom: 0; } .budget-alert-row i { width: 8px; height: 8px; border-radius: 999px; } .budget-alert-row i.danger { background: #ef4444; } .budget-alert-row i.warn { background: #f59e0b; } .budget-alert-row i.ok { background: #13a66b; } .budget-alert-row strong { color: #273142; font-size: 14px; font-weight: 800; } .budget-alert-row span { min-width: 0; color: #4b5563; font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .budget-alert-row time { color: #6b7280; font-size: 13px; text-align: right; } @media (max-width: 1280px) { .budget-summary-grid, .budget-bottom-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .budget-work-grid { grid-template-columns: 1fr; } .budget-department-panel { min-height: auto; } .department-list { grid-template-columns: repeat(3, minmax(0, 1fr)); } } @media (max-width: 760px) { .budget-summary-grid, .budget-bottom-grid { grid-template-columns: 1fr; } .budget-filter-bar { align-items: stretch; flex-direction: column; } .budget-filter-bar label, .budget-filter-bar select, .budget-primary-btn { width: 100%; } .department-list { grid-template-columns: 1fr; } .budget-alert-row { grid-template-columns: 12px minmax(0, 1fr); } .budget-alert-row span, .budget-alert-row time { grid-column: 2; } }