Fahrten bearbeitbar, Inspektionsprognose, Bootstrap-Takt reisst nicht mehr ab

Sechs gemeldete Punkte plus ein Fund beim Nachlesen des Ladevorgangs:

- HECKKLAPPENSCHLOSS_SENSOR ueberall entfernt (einstellungen.py,
  entitaeten.py-Katalog, _sicherheitscheck()). HECKKLAPPE_SENSOR bleibt.
- Bild-Platzhalter in den Einstellungen war halb abgeschnitten: die bare
  .carfix-Regel der Desktop-Container-Query traf auch den Platzhalter-Div,
  dessen inset:0 von der festen Hoehe uebersteuert wurde. Auf .bildbox
  eingegrenzt.
- Inspektion bekommt eine eigene "voraussichtlich am ..."-Zeile (nur Datum).
  oelwechselPrognose() dafuer auf den gemeinsamen Kern servicePrognose()
  zurueckgefuehrt.
- "Neue Fahrt" bietet jetzt alle Felder, die die Einzelfahrt anzeigt, und die
  Einzelfahrt laesst sich bearbeiten - gemeinsames fahrtFelder()/
  fahrtFormularWerte() nach dem Muster von tankFelder(). Backend: Service
  audi_dashboard_fahrt_aktualisieren, profil.fahrt_bearbeiten() (edited_fields
  schuetzt gegen die Automatik, nicht gegen den Nutzer). Die Art-Pille
  speichert jetzt ebenfalls statt nur lokal umzuschalten.
- Titelzeile steht auf dem Handy buendig zu den Kacheln: .back:not(.on) gibt
  seine Breite und den Gap auf allen Breiten frei, .topbar links 16px.
- Ladebildschirm: nachladeAnstossen() und datenLaden() stiegen bei fehlendem
  HASS aus, ohne eine naechste Runde zu planen - genau die Sackgasse, aus der
  bisher nur ein Menueklick half. Beide planen jetzt weiter, der Timer wird
  beim Abhaengen gestoppt.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-08-17 11:40:36 +02:00
co-authored by Claude Opus 5
parent 91dfd4807a
commit 2d76f10c1c
17 changed files with 670 additions and 161 deletions
+19 -9
View File
@@ -68,11 +68,21 @@ html,body{height:100%}
/* ---------------- Navigationsleiste ---------------- */
/* Sichere Bereiche des Geräterahmens: Statusleiste oben, Home-Indikator unten */
.topbar{align-items:center;gap:4px;padding:56px 20px 4px}
/* Linker Innenabstand = --seitenrand von main#view (16px), damit der Titel
exakt auf der Kante der Kacheln darunter sitzt. */
.topbar{align-items:center;gap:4px;padding:56px 20px 4px 16px}
.head{display:flex;flex-direction:column}
.eyebrow{display:none}
.title{font-size:22px;font-weight:400;letter-spacing:-.01em;line-height:1.2}
.back{width:34px;height:34px;margin-left:-8px;justify-content:center}
/* Design-Audit 2026-08-13, auf allen Breiten nachgezogen 2026-08-17: .back ist
auch inaktiv (opacity:0) noch ein Flex-Element plus Gap - auf Wurzelseiten
ohne Zurueck-Pfeil schob das die Kopfzeile (.head/.title) sichtbar weiter
nach rechts, als main#view darunter beginnt. Das negative margin-right hebt
zusaetzlich den Gap auf, sonst blieben 4px Versatz. Auf Detailseiten
(.back.on) bleibt der Platz bewusst reserviert, das ist dort ein echter,
bedienbarer Knopf. */
.back:not(.on){width:0;min-width:0;margin:0 -4px 0 0;overflow:hidden}
/* Rot bleibt Akzent/destruktiv, nicht Navigationsfarbe (dieselbe Regel wie
bei den Aktions-Buttons und dem aktiven Menü-Icon) - derselbe neutrale Ton
wie die Kopfzeile selbst. */
@@ -264,12 +274,6 @@ main#view{--seitenrand:16px;padding:0 var(--seitenrand) 30px;scroll-behavior:smo
auf breiten Bildschirmen klaffte da eine sichtbare Luecke. */
.topbar{grid-column:2;grid-row:1;padding:38px 44px 8px;max-width:860px}
.phone:has(.back.on) .topbar{grid-column:2;grid-row:1;padding:34px 44px 8px;justify-content:flex-start;max-width:860px}
/* Design-Audit 2026-08-13: .back ist auch inaktiv (opacity:0) noch ein
44px breites Flex-Element plus Gap - auf Wurzelseiten ohne Zurueck-Pfeil
schob das die Kopfzeile (.head/.title) sichtbar weiter nach rechts als
main#view darunter beginnt. Auf Detailseiten (.back.on) bleibt der Platz
bewusst reserviert, das ist dort ein echter, bedienbarer Knopf. */
.back:not(.on){width:0;min-width:0;margin:0;overflow:hidden}
.phone:has(.back.on) .head{align-items:flex-start}
.phone:has(.back.on) .title{font-size:26px;text-align:left}
.title{font-size:34px}
@@ -304,8 +308,14 @@ main#view{--seitenrand:16px;padding:0 var(--seitenrand) 30px;scroll-behavior:smo
.rings{display:none !important}
.duo{grid-template-columns:repeat(3,minmax(0,1fr))}
.carfix,.bildbox.carfix{height:260px}
.carfix.klein,.bildbox.carfix.klein{height:220px}
/* Nur die Box selbst hoeher setzen, nicht jedes Element mit .carfix: die
Klasse haengt auch am <img> und am Platzhalter-<div> (siehe
bildMitPlatzhalter()). Der Platzhalter ist position:absolute;inset:0 -
eine feste Hoehe schlaegt dort das bottom:0 und machte ihn 260px hoch in
einer 132px hohen, overflow:hidden-Box (leerer Zustand), also sichtbar
abgeschnitten. Bild und Platzhalter fuellen die Box ohnehin per 100%. */
.bildbox.carfix{height:260px}
.bildbox.carfix.klein{height:220px}
.bildgrid{grid-template-columns:repeat(4,1fr)}
.quad{gap:14px}