style: visuelles Redesign (Desktop), Design-Anleihe bei Resgrid/OpenFleet/EMCS
CI / backend-tests (push) Failing after 1m56s
CI / frontend-build (push) Successful in 18s

Farbpalette/Radius/Schatten überarbeitet (global.css), alle bestehenden
Klassennamen bleiben unverändert - keine Seite muss angepasst werden. Neue
Klassen .card-grid/.stat-number für einheitliche KPI-Kacheln (Dashboard,
Mängel-Übersicht) - Muster aus allen drei Referenzprojekten (Resgrid/
OpenFleet/Emergency_Management_and_Coordination_System): Statistik-Karten
sind dort durchgängig das zentrale Dashboard-Element.

Dashboard/Mängel/Fehlbestände-Seiten von page (640px, für Mitarbeiter-
Mobilflow gedacht) auf page-wide umgestellt - das sind Verantwortliche-
Screens mit Karten/Listen, die auf Desktop-Breite gehören (Analog AdminPage).

Hartcodierte Statusfarben (#b00020/#b8860b) durch CSS-Variablen ersetzt.

Mobile/responsive Feinschliff folgt in einem eigenen Durchgang (Nutzer-
Entscheidung: erst Desktop normal bauen).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KC8HYvv6UkCVYheYiTw9DD
This commit is contained in:
2026-09-05 14:59:23 +02:00
co-authored by Claude Sonnet 5
parent 73510ff1ee
commit 7ebbae802e
6 changed files with 199 additions and 79 deletions
@@ -161,7 +161,7 @@ export function QualifikationSection({ qualifikationstypen, benutzer, onGeaender
{qualifikationen.map((q) => (
<li key={q.id} className="row-between" style={{ padding: "0.3rem 0" }}>
<span>{qualifikationstypName(q.qualifikationstyp_id)}</span>
<span className={istGueltig(q) ? "text-muted" : "text-muted"} style={{ color: istGueltig(q) ? undefined : "#b00020" }}>
<span className={istGueltig(q) ? "text-muted" : "text-muted"} style={{ color: istGueltig(q) ? undefined : "var(--color-danger)" }}>
seit {q.erworben_am}
{q.gueltig_bis ? `, gültig bis ${q.gueltig_bis}` : ", unbefristet"}
{!istGueltig(q) && " (abgelaufen)"}