admin: dashboard instead of the invoice list

/admin redirected to the invoice list, which stopped making sense once
the admin also ran the bingo. Make it a dashboard with one tile per
area: invoice totals, outstanding amount per currency, overdue count and
the five latest invoices; the bingo score, reserve size, latest incident
and card cells still missing a photo. A shared nav links the sections.
Tiles are per area so they can follow user permissions later.

Assisted-by: Claude:opus-5
This commit is contained in:
Sergei Poljanski 2026-10-10 08:23:14 +04:00
commit c2020bf903
Signed by: asxpi
GPG key ID: 4F8851660FA4121B
8 changed files with 134 additions and 5 deletions

View file

@ -346,6 +346,36 @@ a:hover {
font-size: 0.9rem;
}
/* Admin nav + dashboard */
.admin-nav {
display: flex;
gap: 16px;
justify-content: center;
margin-bottom: 24px;
font-family: var(--font-mono);
font-size: 0.85rem;
}
.admin-nav a { color: var(--text-dim); text-decoration: none; }
.admin-nav a.active,
.admin-nav a:hover { color: var(--text-bright); }
.dash { display: grid; gap: 24px; }
.dash-tile h2 a { color: inherit; text-decoration: none; }
.stats {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
margin: 12px 0 16px;
}
.stats div {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 4px;
padding: 12px;
text-align: center;
}
.stats b { display: block; font-size: 1.4rem; color: var(--text-bright); font-variant-numeric: tabular-nums; }
.stats span { font-size: 0.75rem; color: var(--text-faint); text-transform: uppercase; letter-spacing: 0.06em; }
/* Invoices */
.invoice-list {
width: 100%;