fix(a11y): Kontroll-UI - Touch-Targets, Labels, Live-Regions, Dialog-Semantik
CI / backend-tests (push) Failing after 2m12s
CI / frontend-build (push) Successful in 22s

44px-Mindestgröße für Buttons/Inputs (Feldeinsatz mit Handschuhen), echte
Label-Verknüpfung statt reinem placeholder auf allen Kontroll-Eingabefeldern,
aria-live-Statusansagen beim Speichern/Fehler einer Position und beim Öffnen
des Nachfüll-Dialogs, NachfuellDialog jetzt mit role="dialog"/aria-modal,
Fokus beim Öffnen und Esc zum Schließen, Pflichtfeld Begründung mit
aria-required.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
2026-09-07 23:30:01 +02:00
co-authored by Claude Sonnet 5
parent 7750d49d40
commit c608f06806
4 changed files with 100 additions and 17 deletions
+18 -1
View File
@@ -359,12 +359,13 @@ a {
font-weight: 600;
}
.input,
.input:not([type="checkbox"]):not([type="radio"]),
select.input,
textarea.input {
width: 100%;
font-size: 0.98rem;
padding: 0.6rem 0.75rem;
min-height: 44px;
border: 1px solid var(--color-border-strong);
border-radius: var(--radius-sm);
background: var(--color-surface);
@@ -395,6 +396,9 @@ select.input:focus {
font-size: 0.95rem;
font-weight: 600;
padding: 0.6rem 1.05rem;
/* Mindestens 44x44px Touch-Ziel (WCAG 2.5.5) - im Feld/Lager oft mit
Handschuhen bedient. */
min-height: 44px;
border-radius: var(--radius-sm);
border: 1px solid transparent;
cursor: pointer;
@@ -593,6 +597,19 @@ select.input:focus {
color: var(--color-text-muted);
}
/* Nur für Screenreader sichtbar - Label-Text ohne visuelle Verschiebung. */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
.text-success {
color: var(--color-success);
}