/* ================================================================== iOS-Auflage über audi-dashboard.css — Audi CI (Rot F50537, Audi Type, dunkle Fläche) in der Formensprache einer modernen iOS-App: Große Titel, gruppierte Listen mit 44-px-Zeilen, transluente Tab-Leiste, iOS-Schalter und -Segmente, gefüllte Aktionsknöpfe. Reine Auflage: audi-dashboard.css und die App-Logik bleiben unberührt. ================================================================== */ :host{ display:block;height:100%;container-type:inline-size; font-family:"Audi Type",Helvetica,Arial,sans-serif; --ios-tint:#F50537; --ios-sep:rgba(255,255,255,.13); --ios-grau:#8E8E93; --ios-fill:rgba(120,120,128,.24); --r-tile:16px; /* deckende Kachelfarbe fuer Flaechen, die etwas verdecken muessen (Wischzeile ueber dem Loeschen-Feld, Kartenfeld) */ --tile-deckend:#171B21; } :host([data-theme="nacht"]){ --canvas:#0C1014; --tile:rgba(255,255,255,.055); --tile-2:rgba(255,255,255,.10); --line:rgba(255,255,255,.13); --line-strong:rgba(255,255,255,.24); --fg:#FFFFFF; --fg2:#BFC4CC; --fg3:#8E8E93; --ok:#30D158; --warn:#FFD60A; --bad:#FF453A; /* Ohne diese Angabe rendert der Browser native Steuerelemente (Dropdown- Aufklapp-Liste bei -Felder. */ color-scheme: dark; } :host([data-theme="tag"]){ --canvas:#F2F2F7; --tile:#FFFFFF; --tile-2:#EFEFF4; --line:rgba(60,60,67,.13); --line-strong:rgba(60,60,67,.24); /* --fg3 traegt jede Kachelueberschrift, jede Einheit und jeden Zusatz. Auf hellem Grund lag #8E8E93 bei 2,92:1 gegen die Seitenflaeche und 3,26:1 gegen die Kachel - fuer einen kurzen Blick im Auto bei Sonnenlicht zu wenig (Designpruefung 2026-08-30). #6B6B70 bringt beide auf 4,75:1 bzw. 5,30:1, ohne den ruhigen Gesamteindruck zu aendern. Der Nachtwert bleibt #8E8E93 - dort sind es ohnehin 5,86:1. */ --fg:#000000; --fg2:#3C3C43; --fg3:#6B6B70; --ok:#34C759; --warn:#FF9F0A; --bad:#FF3B30; --ios-sep:rgba(60,60,67,.16); --ios-fill:rgba(120,120,128,.16); --tile-deckend:#FFFFFF; color-scheme: light; } body{padding:0;background:var(--canvas)} html,body{height:100%} /* Der von _aufbauen() eingefuegte Wrapper zwischen Host und .phone. Die 412px-Deckelung aus audi-dashboard.css (fuer die alte Einzelgroesse gedacht) wird hier unbedingt aufgehoben, nicht nur ab 860px: auf schmalen Bildschirmen macht der Viewport selbst die Breite eng genug, :host-Selektoren innerhalb @container werden von diesem Browser aber offenbar verworfen - deshalb unbedingt statt bedingt. Die Hoehe bleibt dagegen viewport-verankert (100dvh statt 100%): das ist der Grund, warum audi-dashboard.css das ueberhaupt so baute - HA gibt der panel_custom-Kette keine verlaessliche Hoehe weiter, height:100% liess den Hauptinhalt hier auf 0px kollabieren (Tabbar direkt unter dem Header, main#view unsichtbar). Erst ab 860px (siehe @container unten) darf die 880px-Deckelung fallen, damit die App auf grossen Bildschirmen mehr als eine schwebende Telefonkarte ist. */ :host > div{height:min(880px, calc(100dvh - 24px));max-width:none} .phone{width:100%;max-width:none;height:100%;border-radius:0; font-family:"Audi Type",Helvetica,Arial,sans-serif; -webkit-font-smoothing:antialiased;letter-spacing:0} /* ---------------- Navigationsleiste ---------------- */ /* Sichere Bereiche des Geräterahmens: Statusleiste oben, Home-Indikator unten */ /* 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. */ .back svg{width:22px;height:22px;color:var(--fg)} .sync{margin-top:3px;font-size:12.5px;color:var(--fg3)} .sync svg{width:13px;height:13px} .themebtn{width:36px;height:36px;border:0;background:var(--ios-fill);color:var(--fg2)} .themebtn:hover{background:var(--tile-2);color:var(--fg)} /* Telefonbreite: die Ringe stehen oben rechts und oeffnen die Einstellungen (Stand nach dem Design-Audit). Das Zahnrad entfaellt dort, damit oben rechts nur ein Element sitzt. */ .rings{order:9;margin-left:8px;margin-right:-10px;cursor:pointer; min-width:44px;min-height:44px;height:44px;justify-content:flex-end;padding:0 10px} .rings svg{height:17px} .profilbtn{display:none} /* Unterseite: kompakter, zentrierter Titel wie in einer iOS-Navigationsleiste */ /* Gegengewicht zum Zurueck-Pfeil auf Unterseiten. Der Titel wird dort mittig gesetzt (.head{align-items:center}), aber nur innerhalb von .head - und .head beginnt erst hinter dem Zurueck-Pfeil. Rechts steht nichts, weil die Ringe auf Unterseiten ausgeblendet werden. Die Ueberschrift sass deshalb um die halbe Pfeilbreite zu weit rechts; in der App an derselben Stelle live gemessen: 17px (2026-08-31). Gleiche Masse wie .back (34px, margin -8px), damit links und rechts exakt derselbe Platz belegt ist. Auf breiten Bildschirmen steht der Titel linksbuendig - dort ist der Platzhalter abgeschaltet. */ .kopfgegengewicht{display:none} .phone:has(.back.on) .kopfgegengewicht{display:block;order:10;flex:none;width:34px;height:34px;margin-right:-8px} .phone:has(.back.on) .topbar{padding:54px 16px 6px;gap:8px} .phone:has(.back.on) .head{align-items:center} .phone:has(.back.on) .title{font-size:17px;font-weight:400;letter-spacing:-.01em;text-align:center} .phone:has(.back.on) .sync{margin-top:2px;font-size:12.5px} main#view{--seitenrand:16px;padding:0 var(--seitenrand) 30px;scroll-behavior:smooth} /* ---------------- Karten und Listen ---------------- */ .tile{padding:16px 18px;margin-bottom:14px;border-radius:var(--r-tile)} .tile.flat{padding:0} .tilebtn:hover{background:var(--tile-2)} /* top/margin-top NICHT von der Basis uebernehmen: alle .go-Kacheln (Fahrzeug/Service/Versicherung/Reifen/Schutzbrief) sind mehrzeilige Kacheln mit .label oben plus einer ganzen dl.rows-Liste darunter - eine vertikale 50%-Zentrierung landet dann mitten in der Zeilenliste statt neben dem Titel und ueberlappt umgebrochenen Zeilentext (Design-Audit 2026-08-13). Bleibt bei top:var(--sp-5) aus der Basis, nur rechter Abstand/Farbe werden fuer die iOS-Optik angepasst. */ .tilebtn .go{right:18px;stroke:var(--ios-grau);stroke-width:1.6} .label{font-size:13px;letter-spacing:.01em;text-transform:none;color:var(--fg3)} .row{min-height:44px;padding:11px 0;border-bottom:1px solid var(--ios-sep)} .row dt{font-size:16px;color:var(--fg)} .row dd{font-size:16px;color:var(--fg2)} .row dd small{font-size:12.5px;margin-top:2px} .rows-fest dt{flex:0 0 150px} .chev{stroke:var(--ios-grau);stroke-width:1.6} .acc-h{padding:13px 0;border-bottom:1px solid var(--ios-sep)} .acc-h .k{font-size:16px} .acc-h .v{font-size:12.5px} .leaf{padding:12px 0 12px 40px;border-bottom:1px solid var(--ios-sep)} .leaf .k{font-size:16px} .leaf .v{font-size:15px} .leaf .k small,.leaf .v small{font-size:12.5px} .mark::before,.mark::after{background:var(--ios-grau)} /* ---------------- Bedienelemente ---------------- */ .seg{gap:0;padding:2px;background:var(--ios-fill);border-radius:9px;margin-top:14px} .seg button{border:0;border-radius:7px;padding:7px 8px;font-size:13px;font-weight:400; letter-spacing:0;text-transform:none;color:var(--fg2)} .seg button.on{background:var(--tile-2);color:var(--fg);box-shadow:0 1px 3px rgba(0,0,0,.25)} /* Aktive/Primär-Buttons sind grau, nicht rot (Nutzerwunsch 2026-08-16): Rot bleibt nur noch für destruktive Aktionen (.loeschen). .aktion allein ist die neutrale Sekundäraktion, .primaer die grau gefüllte Hauptaktion - dieselbe Fläche wie die Grundauflage (var(--fg)/var(--canvas)). */ .aktion{margin-top:18px;padding:15px;border:0;border-radius:14px; background:var(--ios-fill);color:var(--fg);font-size:16px;font-weight:400; letter-spacing:0;text-transform:none} .aktion:hover{background:var(--tile-2)} .aktion.primaer{background:var(--fg);color:var(--canvas)} .aktion.primaer:hover{filter:brightness(1.08)} .aktion.loeschen{background:var(--ios-fill);color:var(--bad);border:0} .aktion.loeschen:hover{background:var(--bad);color:#fff;filter:none} .feld{min-height:44px;padding:9px 0;border-bottom:1px solid var(--ios-sep)} .feld label{font-size:16px;color:var(--fg)} .feld input,.feld select{background:transparent;border:0;border-radius:8px;font-size:16px; padding:8px 4px;color:var(--fg2)} /* Design-Audit 2026-08-13/16: die graue Flaeche ist das einheitliche Signal "das hier kann ich aendern". Sie trugen bisher nur die Felder mit Einheit (.mitEinheit input, z.B. "Pause bis [15] Minuten"); alles andere -