, mit Chevron in der Wertespalte. */
.dm-wertzeile--knopf {
width: 100%;
border: 0;
background: none;
font: inherit;
text-align: inherit;
color: inherit;
cursor: pointer;
}
.dm-wertzeile--knopf dd {
display: flex;
align-items: center;
gap: 6px;
}
/* Gezeichneter Pfeil wie .chev im Panel - 6x10, Strichstaerke 1,4. Vorher
stand hier eine Schriftgroesse, weil an dieser Stelle einmal ein
Schriftzeichen als Pfeil diente. */
.dm-wertzeile__chevron {
width: 6px;
height: 10px;
flex: 0 0 auto;
color: var(--fg3);
fill: none;
stroke: currentColor;
stroke-width: 1.4;
}
/* Wert als Kommentar statt als Angabe (siehe Wertzeile hinweis). Groesse und
Farbe wie jede andere Nebenzeile der App. */
.dm-wertzeile__hinweis {
font-size: 12.5px;
color: var(--fg3);
}
.dm-fussnote {
margin: var(--sp-3) 0 0;
font-size: 12.5px;
font-weight: 300;
line-height: 1.5;
color: var(--fg3);
text-wrap: pretty;
}
/* ------------------------------------------------------ Fahrzeugstatus */
/* Kreis-Häkchen für die vier Sammelzeilen der Sicherheit-Seite - Zustand ist
so schon am Symbol erkennbar, nicht nur an der Farbe. Die Detailliste
"Türen und Klappen" (TuerenKlappen.tsx) verwendet stattdessen die
gewöhnliche .dm-wertzeile-Zeile mit dem einfachen @audi-dash/ui .ads-dot -
deckungsgleich mit dem Panel, dessen vTuerenKlappen() ebenfalls den
schlichten Punkt statt des Kreis-Häkchens zeigt. */
.dm-statuskreis {
flex: none;
width: 22px;
height: 22px;
border-radius: 50%;
display: inline-flex;
align-items: center;
justify-content: center;
background: var(--ok);
}
.dm-statuskreis--warn { background: var(--warn); }
.dm-statuskreis--bad { background: var(--bad); }
.dm-statuskreis svg { display: block; }
.dm-sicherheitsliste {
display: flex;
flex-direction: column;
}
.dm-sicherheitszeile {
display: flex;
align-items: center;
gap: var(--sp-3);
padding: 12px 0;
border-bottom: 1px solid var(--line);
width: 100%;
background: none;
border-left: none;
border-right: none;
border-top: none;
font: inherit;
color: inherit;
text-align: left;
}
.dm-sicherheitszeile:last-child { border-bottom: 0; }
button.dm-sicherheitszeile { cursor: pointer; }
button.dm-sicherheitszeile:active { background: var(--tile-2); }
.dm-sicherheitszeile__text { flex: 1; font-size: 14px; }
.dm-sicherheitszeile__chev { margin-left: auto; flex: none; color: var(--fg3); }
/* Sammelzeile über den vier Sicherheitszeilen - deckungsgleich mit dem
obersten Kasten in vSicherheit() (style="display:flex;align-items:center;
gap:12px;padding:16px 20px"), dasselbe Kreis-Häkchen-Symbol wie die Zeilen
darunter, keine Zeitangabe. */
.ads-tile.dm-sicherheitssammel {
display: flex;
align-items: center;
gap: 12px;
padding: 16px 20px;
}
.dm-sicherheitssammel span {
font-size: 15px;
color: var(--fg);
}
/* ------------------------------------------------------------ Galerie */
.dm-galerie {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
gap: var(--sp-2);
margin-top: var(--sp-3);
}
/* ------------------------------------------------------- Listenzeilen */
/* `.dm-zeile`/`.dm-zeile__wisch`/`.dm-zeile__menue` sind mit dem „···"-Knopf
entfallen (siehe Zeilenmenue.tsx) - die Zeile ist jetzt direkt die
Wischzeile, wie im Panel. */
/* Zuschnitt von `.leaf` im Panel (audi-dashboard.css + iOS-Auflage, live
gemessen): 12px oben/unten, 40px links (Platz der Wischspalte), min-height
56px, Trennlinie unten, Beschriftung 16px in --fg mit 12,5px-Zusatz in
--fg3, Wert 15px in --fg2 mit demselben Zusatz. */
.dm-blatt {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--sp-4);
width: 100%;
padding: 12px 0 12px 40px;
min-height: 56px;
border: 0;
border-bottom: 1px solid var(--line);
background: none;
font-family: inherit;
text-align: left;
color: inherit;
}
.dm-blatt--letzte {
border-bottom: 0;
}
button.dm-blatt {
cursor: pointer;
transition: background .15s;
}
button.dm-blatt:active {
background: var(--tile-2);
}
/* `flex: 0 1 auto` wie `.leaf .k` im Panel — die Beschriftung nimmt ihre
natürliche Breite und schrumpft erst, wenn es sonst nicht passt. Mit
`1 1 auto` (dem Wert, den das Panel nur für die Zuletzt-Kachel setzt)
brach „Fahrt ohne Ortsangabe" hier auf zwei Zeilen um, obwohl es im Panel
einzeilig steht. */
.dm-blatt__k {
flex: 0 1 auto;
min-width: 0;
display: flex;
flex-direction: column;
gap: 3px;
font-size: 16px;
line-height: 1.35;
color: var(--fg);
}
.dm-blatt__v {
flex: 0 0 auto;
display: flex;
flex-direction: column;
gap: 3px;
text-align: right;
font-size: 15px;
color: var(--fg2);
}
.dm-blatt__k small,
.dm-blatt__v small {
font-size: 12.5px;
color: var(--fg3);
}
.dm-blatt__chevron {
width: 6px;
height: 10px;
flex: 0 0 auto;
fill: none;
stroke: var(--fg3);
stroke-width: 1.6;
stroke-linecap: round;
stroke-linejoin: round;
}
/* Die Zuletzt-Kachel der Übersicht: ohne die linke Wischspalte, und beide
Werte auf einer gemeinsamen linken Kante (`.teaser .leaf .v{min-width:72px}`
im Panel, samt der dort ausführlich begründeten flex-Verteilung). */
.dm-teaser .dm-blatt {
padding-left: 0;
}
.dm-teaser .dm-blatt__k {
flex: 1 1 auto;
}
.dm-teaser .dm-blatt__v {
min-width: 72px;
}
.dm-listenzeile {
display: flex;
align-items: center;
gap: var(--sp-3);
width: 100%;
padding: 12px 2px;
border: 0;
background: transparent;
color: inherit;
text-align: left;
}
/* Cursor nur für echte Zeilen-Buttons (navigieren bei Klick, Fahrten.tsx/
Tanken.tsx) - BatterieListe.tsx ist bewusst ein reines
, keine
Zeilennavigation, nur Wischen zum Löschen; ein Hand-Cursor würde dort
fälschlich "hier passiert beim Klick etwas" versprechen. */
button.dm-listenzeile {
cursor: pointer;
}
.dm-listenzeile__haupt {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
gap: 3px;
}
.dm-listenzeile__titel {
display: flex;
align-items: baseline;
gap: var(--sp-2);
font-size: 16px;
font-weight: 300;
}
.dm-listenzeile__neben {
font-size: 13px;
color: var(--fg2);
}
.dm-listenzeile__unter {
font-size: 12.5px;
font-weight: 300;
color: var(--fg3);
/* Umbrechen statt abschneiden: Datum, Uhrzeit und Dauer sind alle drei
wichtig, und "11.08.2026 · 12:27 Uhr · 3…" verliert genau die Angabe,
die man sucht. */
line-height: 1.4;
}
/* -------------------------------------------------------- Detailseiten */
.dm-detail__kopf {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: var(--sp-3);
margin: var(--sp-2) 0 var(--sp-3);
flex-wrap: wrap;
}
.dm-detail__zahl {
font-size: 40px;
font-weight: 300;
line-height: 1;
letter-spacing: -0.02em;
}
/* Einzelfahrt/Einzelbeleg: das Panel zeichnet die Distanz- bzw. Liter-Zahl in
vTrip()/dem Tankvorgang-Detail eigens bei 52px (style="font-size:52px"),
größer als die übrigen Detailseiten mit ihrer gemeinsamen 40px-.fig - kein
Versehen, sondern die Hauptzahl der jeweiligen Seite. */
.dm-detail__zahl--gross {
font-size: 52px;
}
.dm-detail__einheit {
font-size: 15px;
color: var(--fg2);
margin-left: 6px;
}
.dm-detail__marken {
display: flex;
flex-wrap: wrap;
gap: 6px;
align-items: center;
}
/* Deckend wie .mapbox im Panel (audi-dashboard-ios.css). --tile-2 ist im
Nachtmodus ein zweiter Schleier auf der ohnehin durchscheinenden Kachel -
die Flaeche hinter den Kartenkacheln wurde dadurch heller als vorgesehen. */
.dm-karte {
height: 240px;
width: 100%;
border-radius: var(--r-func);
overflow: hidden;
margin-top: var(--sp-3);
background: var(--tile-deckend, var(--tile-2));
}
/* ------------------------------------------------------------ Ladezustand */
/* HIG "Loading": ein unbestimmt langer Vorgang (Netzwerk, kein verlässlicher
Fortschritt) bekommt einen laufenden Indikator statt eines stumm
daliegenden Knopfes - sonst nicht von einem Hänger zu unterscheiden.
Deckungsgleich mit .lade-spinner im Panel. */
.dm-spinner {
display: inline-block;
width: 16px;
height: 16px;
flex: none;
border: 2px solid var(--line);
border-top-color: var(--fg2);
border-radius: 50%;
animation: dm-spin 0.8s linear infinite;
}
@keyframes dm-spin {
to {
transform: rotate(360deg);
}
}
.dm-ladezeile {
display: flex;
align-items: center;
gap: var(--sp-2);
margin-top: var(--sp-3);
}
/* ------------------------------------------------------------ Meldungen */
.dm-fehler {
margin: var(--sp-3) 0 0;
font-size: 13px;
font-weight: 300;
line-height: 1.5;
color: var(--bad);
}
.dm-erfolg {
margin: var(--sp-3) 0 0;
font-size: 13px;
font-weight: 300;
line-height: 1.5;
color: var(--ok);
}
.dm-fussnote--warnung {
color: var(--warn);
}
/* Ergebniszeile des Historien-Imports - eine Stufe kräftiger als die
.dm-fussnote darunter, weil sie die eigentliche Antwort auf den Vorgang
ist und nicht dessen Kleingedrucktes. */
.dm-importergebnis {
margin: var(--sp-3) 0 0;
font-size: 14px;
font-weight: 300;
line-height: 1.6;
color: var(--fg);
text-wrap: pretty;
}
/* --------------------------------------------------------- Listen, Text */
.dm-liste {
list-style: none;
margin: var(--sp-2) 0 0;
padding: 0;
font-size: 13px;
font-weight: 300;
line-height: 1.7;
}
.dm-liste li {
padding-left: 14px;
position: relative;
}
.dm-liste li::before {
content: "";
position: absolute;
left: 0;
top: 0.72em;
width: 4px;
height: 4px;
border-radius: 50%;
background: var(--fg3);
}
.dm-liste__serie {
color: var(--fg2);
}
/* 170px hoch wie BV_H im Panel — 120px ließen die Kurve sichtbar flacher
wirken als dort. */
.dm-diagramm {
width: 100%;
height: 170px;
margin: 14px 0 0;
display: block;
touch-action: none;
}
.dm-knopfreihe {
display: flex;
flex-wrap: wrap;
gap: var(--sp-2);
margin-top: var(--sp-4);
}
/* Ausklappbares Korrekturfeld (Anzugsmoment/Reifenkilometer) - deckungsgleich
mit dem entsprechenden Block im Panel (margin-top:14-18px, Trennlinie
darüber). */
.dm-bearbeiten-block {
margin-top: var(--sp-4);
padding-top: var(--sp-4);
border-top: 1px solid var(--line);
}
/* Reifen-Kachel: Kopfzeile aus Überschrift+km links, Radfoto rechts, beide
oben bündig - deckungsgleich mit .radkopf-row/.radkopf/.tile-headline im
Panel. */
.dm-radkopf-row {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: var(--sp-4);
}
.dm-radkopf {
display: flex;
flex-direction: column;
}
.dm-tile-headline {
font-size: 20px;
letter-spacing: -0.01em;
line-height: 1.2;
color: var(--fg);
display: block;
}
/* Der Kilometerstand des Radsatzes ist eine Kennzahl und traegt deshalb die
Zahlenschrift (.ads-fig, im Panel .fig mit font-size:32px) - er stand hier
bisher in der normalen Textschrift und Groesse. */
.dm-reifenzeile {
display: flex;
align-items: center;
gap: 8px;
margin-top: 14px;
font-size: 32px;
}
.dm-reifenzeile .ads-icon-button {
width: 24px;
height: 24px;
color: var(--fg3);
}
.dm-reifenzeile .ads-icon-button svg {
width: 16px;
height: 16px;
}
.dm-radfoto .ads-bildbox {
width: 96px;
height: 96px;
aspect-ratio: 1 / 1;
}
/* Kompakte Pille (Montiert) statt voller Breite - deckungsgleich mit
.montiert/.montiert.on im Panel. */
.dm-montiert-reihe {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: var(--sp-4);
}
.dm-montiert {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 12.5px;
letter-spacing: normal;
color: var(--fg2);
background: none;
border: 1px solid var(--line-strong);
border-radius: var(--r-pill);
padding: 7px 13px;
cursor: pointer;
}
.dm-montiert::before {
content: "";
position: absolute;
top: -8px;
bottom: -8px;
left: 0;
right: 0;
}
.dm-montiert:active {
transform: scale(0.96);
}
.dm-montiert--an {
background: var(--fg);
border-color: var(--fg);
color: var(--canvas);
}
.dm-archivbtn {
background: var(--tile-2);
color: var(--fg2);
}
.dm-archivbtn:hover,
.dm-archivbtn:active {
color: var(--fg);
}
.dm-waehlen {
display: flex;
flex-wrap: wrap;
gap: var(--sp-2);
margin-top: var(--sp-3);
}
.dm-waehlen__knopf {
display: inline-flex;
align-items: center;
padding: 10px 16px;
border: 1px solid var(--line-strong);
border-radius: var(--r-pill);
font-size: 13px;
font-weight: 300;
color: var(--fg);
text-decoration: none;
}
.dm-waehlen__knopf:hover {
background: var(--shade);
}
/* Bleibt beim Scrollen unten stehen, damit ungespeicherte Aenderungen nicht
aus dem Blick geraten. */
.dm-speicherleiste {
position: sticky;
bottom: 0;
display: flex;
align-items: center;
gap: var(--sp-3);
padding: var(--sp-3) 0;
background: var(--canvas);
border-top: 1px solid var(--line);
}
.dm-szene__zusatz {
min-width: 0;
}
/* Der Zusatz neben dem Typenschild darf umbrechen — abgeschnittener Text mit
Auslassungspunkten sieht nach Fehler aus, ein Umbruch nicht. Größe/Farbe
deckungsgleich mit ".badge .zusatz" im Panel (13px, var(--fg2), nicht
kursiv) - war hier 19px, geerbt von der (falschen) "ads-title"-Klasse am
Umschließer (Parität-Audit 2026-08-30). */
.dm-szene__zusatz {
min-width: 0;
white-space: normal;
overflow: visible;
text-overflow: clip;
font-size: 13px;
line-height: normal;
color: var(--fg2);
}
/* Die Galerie richtet sich nach der festen Kachelbreite der Bibliothek (78px),
damit die Kacheln nicht auseinandergezogen werden und ihre Beschriftung
innerhalb des Rahmens bleibt. */
.dm-galerie {
grid-template-columns: repeat(auto-fill, 78px);
justify-content: space-between;
gap: var(--sp-3);
}
/* ---------------------------------------------------------------- Standort
Live-GPS-Position des Fahrzeugs — deckungsgleich mit .standort-kachel/
.standort-vollbild/.standortmenu im Panel (audi-dashboard.css). War bis
2026-08-29 komplett unportiert (Parität-Audit). */
.dm-standort-kachelbtn {
display: block;
width: 100%;
position: relative;
border: none;
padding: 0;
/* 14px wie jede andere Kachel im Panel (.tile). */
margin: 0 0 14px;
background: none;
cursor: pointer;
border-radius: var(--r-tile);
overflow: hidden;
}
.dm-standort-vorschau {
width: 100%;
height: 190px;
/* Im Panel deklariert .standort-vorschau zwar var(--tile), gewinnt aber
nicht: Leaflet setzt der Karte selbst die Klasse .leaflet-container und
sein Blatt liegt dort hinter den App-Blaettern. Sichtbar sind also
tatsaechlich Leaflets eigene #ddd - waehrend die Kacheln laden und in
Luecken. Hier steht derselbe Wert ausdruecklich, damit die Reihenfolge
der gebuendelten Blaetter nichts daran aendert. */
background: #ddd;
}
.dm-standort-leer {
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
font-size: 13px;
color: var(--fg3);
text-align: center;
padding: 0 30px;
background: var(--tile);
}
.dm-fahrzeug-pin-wrap,
.dm-user-pin-wrap {
background: none;
border: none;
}
.dm-fahrzeug-pin {
display: flex;
align-items: center;
justify-content: center;
color: #fff;
filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.4));
}
.dm-user-pin {
position: relative;
width: 16px;
height: 16px;
border-radius: 50%;
background: #0a84ff;
border: 3px solid #fff;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
}
.dm-user-pin::after {
content: "";
position: absolute;
inset: -14px;
border-radius: 50%;
background: rgba(10, 132, 255, 0.18);
animation: dm-user-pulse 2.4s ease-out infinite;
}
@keyframes dm-user-pulse {
0% {
transform: scale(0.4);
opacity: 0.9;
}
100% {
transform: scale(1);
opacity: 0;
}
}
/* Füllt die verfügbare Höhe der Seite, statt bei 640px zu kappen und darunter
leeren, mit dem geschlossenen Blatt verwechselbaren Seitenhintergrund
stehen zu lassen (Nutzerbericht "Standort Slide Up ist leer" - der Inhalt
fehlte nicht, er saß nur unterhalb der Kappungsgrenze in leerem Weiß).
`.dm-inhalt > *{flex:none}` (rahmen.css) gilt für jede andere Seite zu
Recht - hier gezielt aufgehoben, die einzige Seite ohne weiteren Inhalt
unter einer einzelnen großen Fläche. */
.dm-inhalt > .dm-standort-vollbild {
flex: 1 1 auto;
}
.dm-standort-vollbild {
position: relative;
min-height: 400px;
border-radius: var(--r-tile);
overflow: hidden;
margin: 0 calc(-1 * var(--seitenrand));
}
.dm-standort-karte {
width: 100%;
height: 100%;
}
.dm-kartensteuerung {
position: absolute;
z-index: 400;
top: 16px;
right: 16px;
display: flex;
flex-direction: column;
gap: 12px;
}
.dm-kartensteuerung button {
width: 48px;
height: 48px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
background: rgba(16, 20, 26, 0.84);
color: #fff;
border: none;
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.32);
-webkit-backdrop-filter: blur(10px);
backdrop-filter: blur(10px);
cursor: pointer;
padding: 0;
}
[data-theme="tag"] .dm-kartensteuerung button {
background: rgba(255, 255, 255, 0.92);
color: #101418;
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);
}
.dm-kartensteuerung button:active {
transform: scale(0.94);
}
.dm-standortmenu {
position: absolute;
z-index: 410;
left: 0;
right: 0;
bottom: 0;
--dm-standort-peek: 96px;
/* Deckend, nicht --canvas: unter dem Blatt liegt die Karte, und im
Nachtmodus ist --canvas nicht deckend genug. Das Panel nimmt hier
ebenfalls den deckenden Wert (.standortmenu in audi-dashboard.css). */
background: var(--tile-deckend, var(--canvas));
border-radius: var(--r-tile) var(--r-tile) 0 0;
box-shadow: 0 -6px 24px rgba(0, 0, 0, 0.35);
/* Kein env(safe-area-inset-bottom) mehr: das Blatt liegt nicht am unteren
Bildschirmrand, sondern ueber der Tableiste - und die haelt den Bereich
des Home-Indikators bereits frei. Der Einzug wurde dadurch doppelt
gezaehlt, das Blatt war auf dem Geraet rund 16px hoeher als noetig und
schob sich entsprechend weiter hoch. Am Rechner faellt das nicht auf,
dort ist der Einzug 0. */
padding: 0 20px 34px;
transform: translateY(calc(100% - var(--dm-standort-peek)));
transition: transform 0.28s cubic-bezier(0.22, 0.61, 0.36, 1);
}
/* Aufgezogen bleibt unter den Knoepfen ein fester Abstand stehen, statt dass
sie buendig mit der Menueleiste abschliessen.
Vorher stand hier min-height:50% - Apples "medium detent". Gemessen ergab
das 89px (Panel) bzw. 76px (App) Luft unter dem letzten Knopf, und das war
sichtbar zu viel: das Blatt zog ueber die Haelfte des Bildschirms auf,
obwohl sein Inhalt dort laengst zu Ende war. Eine Raste ist nur dann
richtig, wenn zwischen ihr und der Inhaltshoehe kein grosses Loch klafft.
Jetzt bestimmt der Inhalt die Hoehe, und die 34px Fussabstand halten die
Knoepfe von der Leiste frei - hergeleitet aus der Beanstandung, nicht
geraten: 18px waren zu wenig, 76-89px zu viel. */
.dm-standortmenu--offen {
transform: translateY(0);
}
.dm-standortmenu__griffzone {
padding: 10px 0 14px;
position: relative;
}
.dm-standortmenu__griff {
position: relative;
display: block;
width: 36px;
height: 4px;
border: 0;
padding: 0;
border-radius: 2px;
background: var(--line-strong);
margin: 0 auto;
cursor: pointer;
}
/* --ios-fill statt --tile: das Blatt selbst ist deckend, im Tagmodus also
weiss - und --tile ist dort ebenfalls #FFFFFF. Der Knopf war damit weiss
auf weiss und als Knopf nicht zu erkennen. Nachts faellt es nicht auf,
weil --tile dort ein Schleier ueber dunklem Grund ist. --ios-fill ist in
diesem Projekt ohnehin das Zeichen fuer "das hier laesst sich bedienen"
und traegt in beiden Themes. */
.dm-standortmenu__schliessen {
position: absolute;
top: 14px;
right: 0;
width: 32px;
height: 32px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
background: var(--ios-fill);
border: none;
color: var(--fg2);
cursor: pointer;
padding: 0;
}
.dm-standortmenu__kopf {
margin-top: 8px;
padding-right: 44px;
}
.dm-standortmenu__name {
font-size: 17px;
color: var(--fg);
}
.dm-standortmenu__distanz {
font-size: 12.5px;
color: var(--fg3);
margin-top: 4px;
}
.dm-standortmenu__adresse {
font-size: 13px;
color: var(--fg2);
margin-top: 20px;
}
.dm-standortmenu__status {
display: flex;
align-items: center;
gap: 9px;
margin-top: 8px;
font-size: 13px;
color: var(--fg2);
}
.dm-standortmenu__status svg {
color: var(--fg3);
flex: none;
}
.dm-standortmenu__punkt {
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--ok);
flex: none;
}
.dm-standortmenu__werte {
display: flex;
align-items: center;
gap: 10px;
margin-top: 8px;
font-size: 13px;
color: var(--fg2);
}
.dm-standortmenu__werte svg {
color: var(--fg3);
flex: none;
}
.dm-standortmenu__aktionen {
display: flex;
gap: 10px;
margin-top: 18px;
padding-bottom: 4px;
}
.dm-standort-pille {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
height: 40px;
padding: 0 20px;
border-radius: var(--r-pill);
border: 1px solid var(--line-strong);
background: none;
color: var(--fg);
font-size: 14px;
text-decoration: none;
cursor: pointer;
}
.dm-standort-pille--primaer {
background: var(--fg);
border-color: var(--fg);
color: var(--canvas);
}
.dm-standort-pille:active {
transform: scale(0.97);
}
.dm-standort-pille:disabled {
opacity: 0.4;
pointer-events: none;
}
/* Erläuternder Absatz unter einer Kachelüberschrift. Das Panel setzt ihn als
`.label` mit einer Inline-Auflage (`color:var(--fg2);letter-spacing:0;
text-transform:none;font-size:12.5px;line-height:1.6`) - unter anderem bei
Fahrzeugprofil, Backup und Integration-Update.
Bewusst eine eigene Klasse statt einer Änderung an `.dm-fussnote`: die wird
an 35 Stellen in 13 Dateien für ganz unterschiedliche Kleintexte benutzt
(im Paritätsaudit zweimal als offener Punkt notiert). Wer die Panel-Optik
braucht, nimmt diese Klasse; alles andere bleibt unangetastet. */
.dm-erklaerung {
display: block;
margin: 10px 0 0;
font-size: 12.5px;
line-height: 1.6;
letter-spacing: 0;
text-transform: none;
color: var(--fg2);
}
/* Karte auf der Einzelfahrt/dem Einzelbeleg: das Panel setzt sie als eigene
Kachel ohne Innenabstand (`.mapbox`, 210px hoch, abgerundet). */
.dm-kartenkachel {
padding: 0;
overflow: hidden;
}
/* Die Distanz-Kachel der Einzelfahrt trägt im Panel eigene Abstände
(`style="margin:18px 0 14px"`). */
.dm-distanzkachel {
margin: 18px 0 14px;
}
/* `.marke` im Panel: Bildmarke und Text nebeneinander, z. B. vor
„SmartDeal-Ersparnis" auf dem Einzelbeleg. */
.dm-marke {
display: inline-flex;
align-items: center;
gap: 6px;
}
.dm-marke img {
/* Auf Zeilenhoehe, siehe .dm-markenlogo weiter unten. */
height: 16px;
width: auto;
}
/* Leere Kartenfläche, solange die Tankstellenadresse noch aufgelöst wird.
Maße wie `.mapbox` im Panel. */
.dm-kartenplatz {
height: 210px;
background: var(--tile-deckend, var(--tile-2));
}
/* Knopfzeile der SmartDeal-Abfrage - Abbrechen links, Bestaetigen rechts,
wie die .seg-Zeile im sdpopup des Panels. */
.dm-sd-knoepfe {
display: flex;
gap: var(--sp-2);
margin-top: 14px;
}
.dm-sd-knoepfe > * {
flex: 1;
}
/* --------------------------------------------------- Beleg-Fenster
Deckungsgleich mit .beleg-drop in audi-dashboard.css: gestrichelter Rahmen,
14px Radius, 28px Innenabstand, mittig, 15px kraeftige Zeile ueber 12.5px
gedaempfter. `--darueber` ist die Rueckmeldung beim Ziehen (nur am Rechner
erreichbar, am Telefon gibt es keine Ziehgeste fuer Dateien). */
.dm-beleg-drop {
margin-top: var(--sp-3);
border: 1px dashed var(--line-strong);
border-radius: 14px;
padding: 28px var(--sp-4);
text-align: center;
display: flex;
flex-direction: column;
gap: 6px;
}
.dm-beleg-drop strong {
font-size: 15px;
color: var(--fg);
}
.dm-beleg-drop span {
font-size: 12.5px;
color: var(--fg2);
}
.dm-beleg-drop--darueber {
border-color: var(--fg);
border-style: solid;
background: var(--shade);
}
.dm-beleg-knoepfe {
display: flex;
flex-direction: column;
gap: var(--sp-2);
margin-top: var(--sp-3);
}
/* Solldruck: vier Zeichen ("2,40"), nicht die volle Feldbreite.
Deckungsgleich mit .druckfeld in audi-dashboard.css (58px). Die Klasse
stand hier schon im Markup, hatte aber keine Regel - die Felder nahmen
deshalb die ganze Zeile ein. */
.ads-feld input.druckfeld {
width: 58px;
min-width: 0;
flex: none;
text-align: right;
}
/* Markenlogo (Shell u. a.) auf die Hoehe der Feldbeschriftung daneben -
16px, siehe .ads-feld label. Mit 14px wirkte es neben "SmartDeal aktiv"
zu klein (gemeldet vom Eigentuemer, 2026-08-31). */
.dm-markenlogo {
height: 16px;
width: auto;
vertical-align: middle;
}