// ============================================================================= // DashboardPage — KPI tile grid + a grid of small trend charts + a couple of // breakdown lists. Colocated with DashboardPage.tsx. // ============================================================================= .kpi-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr)); gap: var(--space-sm); margin-bottom: var(--space-xl); } .kpi-tile { display: flex; flex-direction: column; gap: 0.15rem; padding: var(--space-md); background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); &__value { font-family: var(--font-display); font-size: var(--font-size-xl); font-weight: 700; color: var(--color-text); font-variant-numeric: tabular-nums; } &__label { font-size: var(--font-size-xs); color: var(--color-text-muted); } } .chart-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr)); gap: var(--space-md); margin-bottom: var(--space-xl); } .chart-card { padding: var(--space-md); background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); &__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-sm); margin-bottom: var(--space-sm); h2 { font-size: var(--font-size-md); } } &__total { font-size: var(--font-size-sm); color: var(--color-text-muted); font-variant-numeric: tabular-nums; } } .breakdown { margin-bottom: var(--space-lg); h2 { font-size: var(--font-size-md); margin-bottom: var(--space-sm); } &__list { list-style: none; margin: 0; padding: 0; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); max-width: 30rem; li { display: flex; justify-content: space-between; gap: var(--space-md); padding: var(--space-sm) var(--space-md); border-bottom: 1px solid var(--color-border); font-size: var(--font-size-sm); &:last-child { border-bottom: none; } span:last-child { font-variant-numeric: tabular-nums; color: var(--color-text-muted); } } } }