# Design Audit — 2026-08-13 (Grossbildschirm-Layout) Auslöser: zwei konkrete User-Reports ("Einstellungen-Knopf sitzt am Bildschirmrand, obwohl die App-Spalte schon vorher endet" und "die Ringe als Einstellungen-Knopf sind zu klein"). Beide sind bestätigt, behoben und live im `audi_ha_test`-Container verifiziert (Desktop 1920px + Mobil 375px, Chrome-Konsole fehlerfrei bis auf die vorbestehenden, unbezogenen Service-Worker-/Platzhalterbild-404-Meldungen). Im Zuge der Fehlersuche wurde ein dritter, verwandter Fehler im selben Muster gefunden und mitbehoben. Geprüft wurden Übersicht, Mein Audi, Fahrten, Statistik, Tanken und Einstellungen (inkl. Setup-Popup) bei 375px und 1920px. Die drei unten dokumentierten Befunde sind die einzigen gefundenen Abweichungen; der Rest folgt konsistent den bestehenden Tokens (`--r-tile`, Farbrollen aus dem iOS-Overlay, `.aktion`/`.switch`-Semantik). ## Befund 1 — Zahnrad/Kopfzeile sass bei breiten Fenstern am Fensterrand statt am Inhaltsrand **Root Cause:** `.topbar` (enthält den Einstellungen-Knopf `.profilbtn`) liegt im Grossbildschirm-Raster (`@container (min-width:860px)` in `audi-dashboard-ios.css`) in Spalte 2 (`grid-column:2`), derselben Spalte wie `main#view`. `main#view` hat dort ein `max-width:860px`, `.topbar` hatte keins - die Spalte selbst ist aber `minmax(0,1fr)`, füllt also die volle restliche Fensterbreite. `.head{flex:1}` in der Kopfzeile hat den Rest der Zeile aufgefüllt und `.profilbtn` bis an den rechten Rand der vollen Spalte geschoben, weit hinter das Ende des sichtbaren Inhalts. **Beleg (1920px Fenster):** `main#view` endete bei `x=1380`, `.topbar` ging bis `x=1920`, `.profilbtn` sass bei `x=1832-1876` - eine Lücke von über 450px zwischen Inhaltsende und Knopf. **Fix:** `.topbar`, `.phone:has(.back.on) .topbar` und `.ptr` bekommen im 860px-Container-Query dasselbe `max-width:860px` wie `main#view`. Nach dem Fix enden `.topbar` und `main#view` an derselben Kante (`x=1380`), der Knopf sitzt bei `x=1292-1336`, sichtbar über dem Inhalt. **Datei:** `homeassistant/www/audi-dashboard-ios.css` ## Befund 2 — Audi-Ringe als einziger Einstellungen-Zugang in Telefonbreite zu klein **Root Cause:** In Telefonbreite blendet die iOS-Auflage das Zahnrad-Icon (`.profilbtn`) aus - die Audi-Ringe (`#marke`/`.rings`) sind dort laut eigenem Code-Kommentar "der einzige Zugang zu den Einstellungen" und seit einer früheren Session bewusst ein echter, tastaturbedienbarer Knopf. Die Knopfgrösse war mit 42×24px aber deutlich kleiner als jeder andere Symbol-Knopf in derselben Kopfzeile (`.themebtn`/`.profilbtn`/`.back` sind alle 44×44px) und lag unter der üblichen 44px-Mindestgrösse für Tippflächen. **Fix:** `.rings` von 42×24px auf 58×32px vergrössert (Seitenverhältnis beibehalten, `.rings svg{width:58px}`). Funktion (Klick navigiert zu Einstellungen) unverändert getestet. **Datei:** `homeassistant/www/audi-dashboard.css` ## Befund 3 — Popups/Sheets auf breiten Bildschirmen fast bildschirmbreit (gleiches Muster wie Befund 1) Beim Nachprüfen von Befund 1 fiel derselbe Fehler bei vier weiteren Elementen auf: sie sind `position:absolute` mit `left`/`right` relativ zu `.phone` (der vollen Rasterbreite, Seitenspalte inklusive) statt zur schmaleren Inhaltsspalte, ohne eigenes `max-width` für grosse Bildschirme: - `.setup-popup` (Sensor-Zuordnung) - **bestätigt live:** 1644px breit bei 1920px Fenster (nur 10px Rand auf jeder Seite), praktisch bildschirmfüllend statt eines ruhigen Dialogs. - `.sdpopup` (SmartDeal-Aktivierung) - `.sheet` (Action-Sheet, ersetzt confirm()/alert() beim Löschen) - `.standortmenu` (Standort-Bottom-Sheet auf der Kartenansicht) **Fix:** Im selben 860px-Container-Query `max-width:560px` (Popups/Sheet) bzw. `max-width: 640px` (Standortmenü, mehr Inhalt) plus `margin-left/right:auto` ergänzt - zentriert die Elemente innerhalb ihres bestehenden `left`/`right`-Abstands, ohne die Transform-basierte Einblend-Animation dieser Elemente anzufassen (eine `transform:translateX(-50%)`-Zentrierung hätte mit der `sheet-rein`-Keyframe-Animation kollidiert, die am Ende selbst `transform:none` setzt). `border-radius` bleibt jeweils unverändert (`.standortmenu` behält oben abgerundete/unten eckige Kanten, passend zur weiterhin am unteren Fensterrand andockenden Bauweise). **Beleg nach Fix (Setup-Popup, 1920px Fenster):** 560px breit, zentriert bei `x=808-1368`. **Datei:** `homeassistant/www/audi-dashboard-ios.css` ## Nicht verändert (bewusst ausserhalb dieses Audits) - `.bildmenu` (Kontextmenü bei Fahrzeugbildern) ist bereits `min-width:160px` und wächst nicht mit der Fensterbreite - kein Fehler. - Zentrierung der Popups erfolgt relativ zur vollen `.phone`-Breite (Seitenspalte inklusive), nicht exakt zur Mitte der 860px-Inhaltsspalte - bei 1920px ein Versatz von ca. 138px nach rechts gegenüber echter Inhaltsmitte. Sichtbar besser als der vorige Zustand (praktisch volle Fensterbreite), aber für pixelgenaue Zentrierung müssten die Popups im Markup in die Grid-Spalte 2 verschoben werden statt als Geschwister von `main#view` direkt in `.phone` zu liegen - eine grössere strukturelle Änderung, hier bewusst zurückgestellt. ## Runde 2 — sechs weitere User-Findings Vier bestätigt, ursächlich geklärt und behoben; zwei trotz gezielter Suche (Computed-Style- Vergleich, 2.5x-Zoom per temporärem `transform:scale()` auf das Live-DOM, Tag- und Nacht-Theme) nicht reproduzierbar - siehe unten. ### Befund 4 — Kopfzeile (Übersicht/Fahrten/...) auf breiten Bildschirmen 30px zu weit rechts **Root Cause:** `.back` (Zurück-Pfeil) ist auch inaktiv (`opacity:0`, kein `.on`) weiterhin ein 44px breites Flex-Element in `.topbar` plus `gap`. Auf Wurzelseiten ohne Zurück-Pfeil (Übersicht, Fahrten, ...) schiebt dieser unsichtbare Platzhalter `.head`/`.title` sichtbar weiter nach rechts als `main#view` darunter beginnt. **Beleg:** `.title` links bei `x=594`, die erste Kachel in `main#view` links bei `x=564` - 30px Versatz. **Fix:** `.back:not(.on){width:0;min-width:0;margin:0;overflow:hidden}` im 860px-Container-Query. Nur für Wurzelseiten relevant; auf Detailseiten (`.back.on`, z. B. Einzelfahrt) bleibt der Knopf unverändert 44px breit und funktionsfähig - live getestet (Klick navigiert zurück zur Liste). **Beleg nach Fix:** Versatz auf 4px reduziert (der verbleibende `gap` zum nächsten Flex-Element, nicht mehr wahrnehmbar). **Datei:** `homeassistant/www/audi-dashboard-ios.css` ### Befund 5 — Graue Pfeile auf "Mein Audi" (Fahrzeug/Service/Versicherung/Reifen) überlappen Text **Root Cause:** `.tilebtn .go{top:50%;margin-top:-5px}` zentriert den Kachel-Chevron vertikal auf die **gesamte** Kachelhöhe. Diese fünf Kacheln sind aber keine Einzeiler, sondern `Titel` + Chevron + eine ganze `dl.rows`-Liste darunter - die 50%-Mitte der gesamten Kachel liegt damit mitten in der Zeilenliste statt neben dem Titel, und überlappt besonders bei mehrzeilig umgebrochenen Werten (z. B. "2.9 TFSI quattro · 331 kW · 450 PS") sichtbar den Text. **Fix:** `top:50%;margin-top:-5px` aus der iOS-Auflage entfernt - fällt zurück auf `top:var(--sp-5)` aus der Basis, die den Chevron wieder neben den Titel oben in der Kachel setzt (dafür existiert dort bereits extra Padding: `.tile:has(> .go) > .label:first-child {padding-right:44px}`). **Betroffen:** alle 5 `.go`-Kacheln (Fahrzeug, Service, Versicherung/Steuer, Reifen, Schutzbrief Mobilität) - identisches Markup-Muster überall. **Datei:** `homeassistant/www/audi-dashboard-ios.css` ### Befund 6 — "10.000 km" / "1 Jahr" (Ölwechsel-Intervall) sehen nicht editierbar aus **Root Cause:** Beide Werte sind echte `