/* ============================================================================
   wawi.css -- die WaWi-Ergaenzung zur gemeinsamen Stilbibliothek
   ----------------------------------------------------------------------------
   Diese Datei wird NACH stil-bibliothek.css geladen und enthaelt nur, was die
   WaWi zusaetzlich braucht. Sie ist damit die zweite und letzte Stildatei von
   Pipos Vollansicht; stil.css, cockpit.css und navigation.css sind am
   20.09.2026 mit Schritt B der Design-Linie weggefallen.

   DREI REGELN FUER DIESE DATEI

   1. Gemeinsame Bauteile werden ZUERST IM DASHBOARD geaendert
      (/root/projekte/dashboard/public/stil.css, Katalog public/stil.html) und
      danach mit werkzeuge/stil-uebernehmen.sh hierher geholt. Eine Handaenderung
      an stil-bibliothek.css laesst tests_stilbibliothek.py rot werden. Karte,
      Knopf, Tabelle, Eingabefeld, Meldung, Zustandsmarke gehoeren allen Apps.

   2. Kein fester Farbwert. Alles kommt aus den Tokens der Bibliothek
      (--accent*, --good/--warn/--crit/--neutral samt -text und -bg, --line,
      --bg, --card, --text, --muted, --wurst, Radien --r/--rk/--rs/--rp,
      Abstaende --a1..--a7, Schriftgroessen --s11..--s32, --zeile-h). Einzige
      Ausnahme ist der :root-Block direkt unten, und auch der setzt nur Tokens
      auf Tokens. tests_stilbibliothek.py prueft das mechanisch.

   3. Keine Uebergangsabbildung mehr. Bis zum 23.09.2026 bildete der
      groesste Teil dieser Datei die alten WaWi-Klassennamen (hinweis, rtable,
      warnkarte, knopf-leicht, meldung-fehler, zustand-ok ...) auf die
      Katalog-Bauteile ab. Schritt E hat die Vorlagen auf die Katalognamen
      umgebaut, Schritt E6 die Abbildung geloescht: `.hinweis` ist wieder
      ausschliesslich der Toast der Bibliothek, und wer einen alten Namen in
      eine Vorlage schreibt, faellt bei tests_altklassen.py durch.
      Was von der Abbildung UEBRIG ist, steht am Dateiende unter
      "Katalog-Bauteile mit WaWi-Zuschnitt": die wenigen Stellen, an denen die
      WaWi ein Bauteil bewusst anders braucht, jede mit ihrem Grund.

   SPEZIFITAET: Klassen, die es in der Bibliothek ebenfalls gibt (karte, knopf,
   pille, feld, zeile, aktionen, ampel, kopf, marke), stehen hier mit
   `body.wawi` davor. Reine Ladereihenfolge waere zu duenn: die Bibliothek hat
   zu mehreren dieser Klassen Regeln mit zwei Klassen (.knopf.pri,
   .pille:hover, .hinweis.an), und die schlagen eine blosse Klasse unabhaengig
   von der Reihenfolge. Ausserdem baut berichte.py die beiden Dateien fuer den
   lokalen Bericht selbst zusammen; eine Zusage, die nur an der Reihenfolge
   haengt, waere dort still verloren.
   ========================================================================== */

/* ---------------------------------------------------------------------------
   0. DIE EINZIGE ABWEICHUNG VOM DASHBOARD: die Aktionsfarbe (Pipo 4A, 20.09.)
   ----------------------------------------------------------------------------
   Die WaWi handelt fuer die Wurstkutsche, also ist ihre Aktionsfarbe das
   Wurstkutsche-Blau der Firmengruppe und nicht das allgemeine Dashboard-Blau.
   Das ist der GANZE Unterschied im Aussehen; alles andere ist identisch.
   --accent-dunkel wird aus demselben Ton gerechnet, damit kein zweiter Wert
   gepflegt werden muss.
   ------------------------------------------------------------------------ */
:root{
  --accent:var(--wurst);
  --accent-bg:var(--wurst-bg);
  --accent-text:var(--wurst);
  --accent-dunkel:color-mix(in srgb,var(--wurst) 85%,black);
}

/* ---------------------------------------------------------------------------
   1. SEITE UND FLIESSTEXT
   ----------------------------------------------------------------------------
   Die Bibliothek ist fuer das Dashboard gebaut: dort gibt es Karten und
   Kacheln, aber keinen Fliesstext. Deshalb nimmt sie Absaetzen, Listen und
   Ueberschriften alle Aussenabstaende und den Listen ihre Punkte. Die WaWi
   besteht zur Haelfte aus Text (Hinweise, Erklaerungen, Rezeptbuch), also
   bekommen diese Elemente hier ihre Abstaende zurueck -- aus der Abstands-
   leiter, nicht aus Browservorgaben.
   ------------------------------------------------------------------------ */
body.wawi{overflow-x:clip}
/* overflow-wrap:anywhere gilt fuer die ganze Flaeche und nicht nur fuer
   Tabellenzellen: ein Artikelname ohne Trennzeichen sprengt sonst als
   Ueberschrift die Seite (gemessen 20.09.2026: 2625 px Dokument in einem
   1280 px breiten Fenster). Die Regel kam am 11.09.2026 mit cockpit.css. */
.inhalt{max-width:60rem;margin:0 auto;padding:var(--a7) var(--a6);overflow-wrap:anywhere}
body.wawi fieldset{min-width:0;max-width:100%}
/* Auf breiten Schirmen darf der Inhalt atmen: die Tabellen (Preisliste,
   Startseite) sind die Hauptnutzer der Breite. */
@media (min-width:1400px){
  .inhalt,.kopf-innen{max-width:78rem}
}
.inhalt :where(p,ul,ol,dl){margin:var(--a4) 0}
.inhalt :where(ul,ol){padding-left:var(--a7);list-style:disc}
.inhalt ol{list-style:decimal}
.inhalt li{display:list-item}
.inhalt ul.knapp{margin:var(--a2) 0 0;padding-left:var(--a6)}
.inhalt h1{font-family:var(--f-head);font-size:var(--s24);line-height:1.25;margin:0 0 var(--a6)}
.inhalt h2{font-family:var(--f-head);font-size:var(--s17);line-height:1.3;margin:var(--a7) 0 var(--a4)}
.inhalt h3{font-family:var(--f-head);font-size:var(--s15);line-height:1.3;margin:var(--a6) 0 var(--a2)}
.inhalt h1+h2,.inhalt :where(h2,h3):first-child{margin-top:0}
/* Links tragen ihre Farbe, keinen Unterstrich: in einer Tabelle mit vier
   Aktionslinks je Zeile ist der Unterstrich das lauteste Element der Seite.
   Im Fliesstext unterstreicht der Mauszeiger auf Verlangen. Ausnahme bleiben
   die Zustands-Sprungmarken weiter unten, dort traegt die Stufenfarbe schon
   den Linkhinweis nicht mehr. */
a{text-decoration:none}
a:hover{text-decoration:underline}
.datum{white-space:nowrap}   /* '2026-08-27' ist EIN Wert, kein Umbruchpunkt */
.vorformatiert{white-space:pre-line;overflow-wrap:anywhere}
.warn-text{color:var(--crit-text)}
.zu-viel{color:var(--crit-text);font-weight:700}
.zu-wenig{color:var(--good-text);font-weight:600}
/* Eine Fehlerzeile ohne Kasten (Bestandsvergleich). Sie hatte bis zum
   20.09.2026 ueberhaupt keine Regel und stand als gewoehnlicher Absatz da,
   obwohl sie role="alert" traegt. */
.fehler{color:var(--crit-text);font-weight:600}

/* Formularelemente ausserhalb eines .feld: Mengenfelder in Tabellenzeilen,
   Auswahlfelder in Werkzeugleisten, Textfelder in Storno-Formularen. Die
   Bibliothek kleidet nur `.feld > input` ein; ohne diese Regel stuenden die
   uebrigen Felder in Browservorgabe mitten zwischen Katalog-Bauteilen. */
.inhalt :where(input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea){
  font-family:inherit;max-width:100%;min-height:var(--zeile-h);
  padding:var(--a2) var(--a4);border:1px solid var(--line);border-radius:var(--rs);
  background:var(--card);color:var(--text);font-size:var(--s15)}
.inhalt :where(textarea){resize:vertical}
@media (max-width:1000px){
  .inhalt :where(input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea){min-height:40px}
}

/* ---------------------------------------------------------------------------
   2. KOPFZEILE UND BEREICHSMENUE (Design-Linie Schritt C, 20.09.2026)
   ----------------------------------------------------------------------------
   Der Kopf traegt jetzt das Muster des Dashboards: Marke mit Zeichen links,
   Nutzerzeile rechts, darunter drei Menuereihen. Die Bauteile kommen aus der
   Bibliothek (.marke samt .zeichen, .reiter, .pille, .plakette); hier steht
   nur, was die WaWi anders BRAUCHT.

   Das Menue bleibt OBEN (Pipo 2B, 20.09.2026): die WaWi laeuft im Rahmen des
   Dashboards neben dessen Seitenleiste, eine zweite Seitenleiste waere dort
   die doppelte Navigation. Darum werden die Reiter der Bibliothek, die fuer
   die senkrechte Leiste als Raster mit Symbolspalte gebaut sind, hier
   waagerecht gestellt.
   ------------------------------------------------------------------------ */
body.wawi .kopf{display:block;background:var(--card);color:var(--text);
  border-bottom:1px solid var(--line);padding:0;border-radius:0}
/* Dieselbe Breite und derselbe Seitenrand wie .inhalt darunter: nur so steht
   die Marke genau ueber der Ueberschrift der Seite. */
.kopf-innen{max-width:60rem;margin:0 auto;display:grid;gap:var(--a3);
  padding:var(--a5) var(--a6)}
/* Erste Zeile. Im Dashboard sitzt der Inhaber am Handy neben der Marke; hier
   tut das die Nutzerzeile auf jeder Breite: sie darf schrumpfen (min-width:0
   an .wer), statt in eine eigene Zeile zu rutschen. */
.kopf-zeile{display:flex;align-items:center;gap:var(--a3) var(--a5)}
body.wawi .marke{display:inline-flex;align-items:center;gap:9px;
  font-family:var(--f-head);font-weight:700;font-size:var(--s17);
  color:var(--text);white-space:nowrap;flex:0 0 auto}
body.wawi .marke:hover{text-decoration:none}
/* Das WK-Zeichen ist eine Bilddatei und kein Symbol aus dem Sprite-Satz des
   Dashboards. Es bekommt die Rundung der Kachel, damit in der weichen Flaeche
   kein hartes Quadrat steht. */
body.wawi .marke .zeichen img{display:block;border-radius:var(--a2)}
/* Die rechte Gruppe der Kopfzeile: Nutzername und die drei festen Knoepfe
   (Truck-Ansicht, Einstellungen, Abmelden; BAUPLAN-vereinfachung Schritt A).
   Das `margin-left:auto` sitzt an der GRUPPE und nicht mehr an `.wer`: zwei
   automatische Aussenabstaende in derselben Flex-Zeile teilen den freien
   Platz unter sich auf, der Name stuende dann in der Mitte statt rechts.
   Im Dashboard-Rahmen faellt der Name weg, die Gruppe bleibt und rutscht
   damit als Ganzes nach rechts. */
.kopf-rechts{margin-left:auto;min-width:0;display:flex;align-items:center;
  flex-wrap:wrap;justify-content:flex-end;gap:var(--a2) var(--a4)}
/* Rechtsbuendig wie die Inhaberzeile des Dashboards. min-width:0 ist die
   ganze Zusage "beide auf einer Zeile": ohne sie ist der Flex-Mindestwert die
   volle Textbreite, und die Zeile bricht bei 360 px um. */
.wer{min-width:0;text-align:right;
  font-size:var(--s13);color:var(--muted);overflow-wrap:anywhere}
.wer a{color:var(--muted)}
.navigation{display:grid;gap:var(--a2);min-width:0}
/* Alle drei Reihen brechen um und bleiben damit innerhalb des Fensters; am
   Handy ist das die Pillenleiste des Dashboards (.desk-leiste). */
.navigation nav{display:flex;flex-wrap:wrap;align-items:center;gap:var(--a2)}
/* Erste Reihe, die Bereiche: waagerechter Reiter. Anzeigeart und Textfarbe
   sind umgestellt, Polsterung, Rundung, Schriftgroesse und der aktive Grund
   kommen aus der Bibliothek. Die faerbt beim Ueberfahren nur `button.reiter`,
   unsere Reiter sind Links. */
body.wawi .bereich-nav a.reiter{display:inline-flex;align-items:center;
  gap:var(--a2);max-width:100%;color:var(--text);text-decoration:none}
body.wawi .bereich-nav a.reiter:hover{background:var(--bg);text-decoration:none}
/* Zweite und dritte Reihe, Orte und Kontextmenue: Pillen. Die WaWi nennt
   `.pille` sonst den Firmenchip (getoenter Grund, kein Rand, siehe die
   Katalog-Bauteile am Dateiende); im Menue gilt die Filterpille der
   Bibliothek, darum hier zurueckgeholt. */
body.wawi :is(.ort-nav,.reiter-leiste) a.pille{display:inline-flex;align-items:center;gap:7px;
  max-width:100%;padding:4px 11px;border:1px solid var(--line);
  border-radius:var(--rp);background:var(--card);color:var(--text);
  font-size:var(--s13);font-weight:400;white-space:normal;text-decoration:none}
body.wawi :is(.ort-nav,.reiter-leiste) a.pille:hover{background:var(--bg);border-color:var(--line-stark)}
body.wawi :is(.ort-nav,.reiter-leiste) a.pille.an{background:var(--accent-bg);
  border-color:var(--accent-bg);color:var(--accent-text);font-weight:600}
/* Reiter INNERHALB einer Seite (22.09.2026, Standplaetze): dieselbe
   Filterpille wie im Untermenue, nur eine Zeile weiter unten. Bewusst kein
   <nav> und damit keine .ort-nav: im Rahmen gibt es genau ein Menue
   (_navigation.html), und die Vorlagenprobe in tests_navigation haelt das
   fest. Deshalb steht hier nur die Zeile selbst, das Aussehen der Pillen
   teilt sie sich mit dem Menue. */
body.wawi .reiter-leiste{display:flex;flex-wrap:wrap;align-items:center;
  gap:var(--a2);margin:0 0 var(--a5)}
/* Dritte Reihe: dieselbe Form, eine Schriftstufe kleiner. */
body.wawi .kontext-nav a.pille{font-size:var(--s12)}
/* Die Zahl der offenen Vorschlaege IST die Plakette der Bibliothek. Hier
   steht nur der Fall, den es dort nicht gibt: auf der aktiven Pille laegen
   sonst Plakettengrund und Pillengrund uebereinander. */
body.wawi :is(.ort-nav,.reiter-leiste) a.pille.an .nav-zahl{background:var(--card)}
/* Im Dashboard-Rahmen (Design-Linie Schritt D, 20.09.2026): die erste
   Kopfzeile ist weg, oben steht nur noch das Bereichsmenue. Das Dashboard hat
   ueber dem Rahmen schon Luft, darum faellt der obere Innenabstand von Kopf
   und Inhalt hier eine Stufe kleiner aus. Mehr nicht: keine Farbe, kein neuer
   Wert, alles aus den vorhandenen Abstandsstufen. */
body.im-rahmen .kopf-innen{padding-top:var(--a3)}
body.im-rahmen .inhalt{padding-top:var(--a5)}
.sprung-inhalt{position:absolute;left:var(--a5);top:-10rem;z-index:100;
  padding:var(--a4) var(--a5);background:var(--card);color:var(--text);
  border:2px solid currentColor;border-radius:var(--rs)}
.sprung-inhalt:focus{top:var(--a2)}
@media (max-width:639px){
  .kopf-innen{padding:var(--a4) var(--a5)}
  /* Am Handy darf die Kopfzeile umbrechen: Marke und die rechte Gruppe mit
     drei Knoepfen passen bei 390 px nicht nebeneinander, und ohne Umbruch
     waere die Seite waagerecht scrollbar. */
  .kopf-zeile{flex-wrap:wrap}
  .wer{font-size:var(--s12)}
  .inhalt{padding:var(--a6) var(--a5)}
  /* Am Handy eine Stufe enger als oben: die Zeile darueber ist hier
     ohnehin schon knapper (.kopf-innen mit a4). Noetig ist die Wiederholung
     nicht - `body.im-rahmen .kopf-innen` sticht die Kurzform schon durch die
     hoehere Spezifitaet -, sie setzt nur den kleineren Wert. */
  body.im-rahmen .kopf-innen{padding-top:var(--a2)}
  body.im-rahmen .inhalt{padding-top:var(--a4)}
}

/* ---------------------------------------------------------------------------
   3. ZUSTANDSSPRACHE (Etappe 7, 28.08.2026, unveraendert in der Bedeutung)
   ----------------------------------------------------------------------------
   Vier Stufen, und jede traegt FARBE UND SYMBOL. Farbe allein ist kein
   Traeger: am Verkaufsfenster steht die Sonne auf dem Bildschirm, und wer Rot
   und Gruen nicht auseinanderhaelt, sieht von einer roten Kante nichts.

     zustand ok       gruen  ✓  passt, hier ist nichts zu tun
     zustand annahme  grau   ⓘ  gerechnet, aber nicht belegt
     zustand luecke   gelb   ▲  etwas fehlt, das ist Arbeit
     zustand fehler   rot    ✖  so geht es nicht

   Die FARBEN stehen seit dem 20.09.2026 in der Bibliothek (`.zustand.<stufe>`),
   die SYMBOLE in der Katalogregie am Dateiende. Je Stufe gibt es damit genau
   eine Stelle, und keine Vorlage kann eine Zustandsfarbe setzen, ohne ihr
   Zeichen mitzunehmen. Die alten Bindestrich-Namen (`zustand-ok` und die
   drei anderen) sind mit Schritt E6 aus Pipos Ansicht verschwunden; nur die
   beiden Druckansichten tragen sie noch, ihre Zeichen stehen in Abschnitt 6.

   Hier bleibt, was im Katalog KEIN Gegenstueck hat: die Quoten-Ampel der
   Kalkulation und der Rueckgang in der Nachlese.
   ------------------------------------------------------------------------ */

/* Wareneinsatzquoten-Ampel (Kalkulation). Eigene Klassennamen behaelt sie
   bewusst: eine Quote von 42 % blockiert nichts, sie alarmiert. Geteilt wird
   nur die Darstellung. Im Katalog ist `.ampel` die Pillenreihe im Kopf, hier
   eine blosse Zahl -- deshalb der Rueckbau auf inline. */
body.wawi .ampel{display:inline;justify-content:normal;flex-wrap:nowrap;
  font-weight:700;font-variant-numeric:tabular-nums}
.ampel-ok{color:var(--good-text)}
.ampel-hoch{color:var(--warn-text)}
.ampel-alarm{color:var(--crit-text)}
/* Warum ✖ und nicht ein Stoppschild: Achteck und Stoppschild (U+26D4,
   U+1F6D1) gibt es in den Zeichensaetzen dieser Maschine NUR als Farb-Emoji.
   Auf dem Aushang, der schwarzweiss gedruckt wird, waere das ein Farbfleck
   oder ein leeres Kaestchen. ✓ ▲ ✖ ▼ sind einfarbige Glyphen.
   Das geschuetzte Leerzeichen ist Absicht: ohne es kann das Symbol am
   Zeilenende allein stehenbleiben, waehrend seine Meldung erst in der
   naechsten Zeile anfaengt. */
.ampel-ok::before{content:"✓\00A0"}
.ampel-hoch::before{content:"▲\00A0"}
.ampel-alarm::before{content:"✖\00A0"}
/* Zaehlungen nachlesen: der Rueckgang gegenueber der vorigen Zaehlung. Farbe
   UND Zeichen, wie bei der Zustandssprache -- und das Zeichen steht auch hier
   im Stylesheet, damit keine Vorlage die Farbe ohne ihr Zeichen setzen kann. */
.mengen-runter{color:var(--warn-text);font-weight:600}
.mengen-runter::before{content:"▼\00A0"}
/* ---------------------------------------------------------------------------
   4. WAWI-EIGENE BAUTEILE (kein Gegenstueck im Katalog)
   ------------------------------------------------------------------------ */

/* Kopf eines Lieferanten-Blocks: Name, Anzahl und Erfassen-Knopf in einer
   Zeile, Trennlinie darueber, damit die Bloecke auf langen Seiten optisch
   auseinanderfallen. Eigener Pfeil statt des Browser-Dreiecks, damit er links
   buendig zum Text steht und in beiden Zustaenden gleich gross ist. */
.blockkopf{display:flex;align-items:baseline;gap:var(--a3);flex-wrap:wrap;
  border-top:2px solid var(--line);padding-top:var(--a4);margin-top:var(--a7);
  cursor:pointer;font-family:var(--f-head);font-weight:600;font-size:var(--s15);list-style:none}
.blockkopf::-webkit-details-marker{display:none}
.blockkopf::before{content:"▸";display:inline-block;color:var(--muted);
  transition:transform .15s;font-weight:400}
details[open] > .blockkopf::before{transform:rotate(90deg)}
.blockkopf:hover{color:var(--accent-text)}
.blockzeile{margin:var(--a2) 0 var(--a3)}
/* Untermenue der Pruef-Seiten: eine Zeile Links unter der Ueberschrift,
   optisch klar leiser als h1 und als das Kopfmenue. */
.untermenue{margin:calc(-1 * var(--a3)) 0 var(--a5);font-size:var(--s13);color:var(--muted)}

/* Der eine Satz unter der Ueberschrift (Seitenmuster der Design-Linie,
   Punkt 1: Kopf, darunter hoechstens ein Satz). Der Katalog kennt ihn nicht,
   das Dashboard hat Karten und keine Seiten mit Erklaertext. Bewusst ein
   eigener Name statt des alten `hinweis`: Schritt E6 raeumt den
   Begleittext-Rueckbau weg, und dieser Satz soll davon nicht getroffen
   werden. */
.inhalt .untertitel{margin:var(--a4) 0;font-size:var(--s13);
  color:var(--muted);line-height:1.4}
/* Direkt unter der Ueberschrift ruecken Satz und h1 zusammen: sie sind EIN
   Kopf, und der Abstand der Ueberschrift nach unten steht schon. */
.inhalt h1+.untertitel{margin-top:calc(-1 * var(--a4))}
.untertitel a{color:var(--accent-text)}

/* Zustandsknoepfe (02.09.2026): der Server malt alle drei Ziele plus den
   Special-Schalter, `data-stand` an der Huelle sagt, welche zu sehen sind. So
   dreht bloecke.js nach dem Umschalten nur das Attribut, ohne HTML zu
   erfinden. Der Schalter zeigt sich nur bei einem Special. */
.zustandsknoepfe{display:inline-flex;flex-wrap:wrap;gap:var(--a1) var(--a2);align-items:center}
.zustandsknoepfe[data-stand="sortiment"] form[data-ziel="sortiment"],
.zustandsknoepfe[data-stand="special"] form[data-ziel="special"],
.zustandsknoepfe[data-stand="referenz"] form[data-ziel="referenz"],
.zustandsknoepfe:not([data-stand="special"]) form[data-schalter]{display:none}

/* Kennzeichnung: Allergene und Zusatzstoffe ankreuzen. Zwei bis drei Spalten
   je nach Platz, am Handy eine. Feste Mindestbreite statt Spaltenzahl, damit
   lange Wortlaute nicht mitten im Wort brechen. */
.kennz-block{border:1px solid var(--line);border-radius:var(--r);padding:var(--a5)}
.kennz-block legend{font-family:var(--f-head);font-weight:600;padding:0 var(--a1)}
.kennz-liste{display:grid;gap:var(--a1) var(--a5);margin:var(--a2) 0 var(--a1);
  grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}
/* Das sind Wortlaute, die spaeter genau so am Truck stehen, keine Feldnamen:
   deshalb normale Schreibweise und normales Gewicht. `label.` bzw. der
   body-Vorsatz sind noetig, weil die Feldregel oben spezifischer ist als eine
   blosse Klasse -- die Zeile blieb sonst als einzige fett. */
body.wawi :is(.kennz-liste label,label.kennz-geprueft,.kennz-leerung){
  font-family:var(--f-body);font-weight:400;font-size:var(--s13);color:inherit;padding-bottom:0}
.kennz-liste label{display:flex;gap:var(--a2);align-items:baseline}
.kennz-geprueft{display:flex;gap:var(--a2);align-items:baseline;margin-top:var(--a3);
  padding-top:var(--a3);border-top:1px solid var(--line)}
.kennz-leerung{display:flex;gap:var(--a2);align-items:baseline;margin-top:var(--a3)}
/* Der Wortlaut, aus dem eine Kennzeichnung gelesen wurde (06.09.2026, Codex
   A-88 Vorschlag C1). Er steht auf der Pruefseite NEBEN den vorgeschlagenen
   Haken: die Frage ist, ob beides zusammenpasst. Feste Hoehe mit eigenem
   Rollbereich, damit eine lange Zutatenliste die Karte nicht auf zwei
   Bildschirme zieht; Umbruch mitten im Wort, weil dort Ketten wie
   "E621/E627" stehen. */
.quelltext{background:var(--bg);border:1px solid var(--line);border-radius:var(--rs);
  padding:var(--a3) var(--a4);margin:var(--a1) 0 0;max-height:12rem;overflow-y:auto;
  white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--s13)}

/* Rollen-Wahl auf /benutzer: zwei gestapelte Grossfelder statt eines
   Auswahlfelds. Es gibt genau zwei Moeglichkeiten, und die Folge ("sieht nur
   den Truck") soll man lesen, nicht aufklappen. Die ganze Zeile ist das Ziel,
   nicht der kleine Kreis. */
.rollen-wahl{border:0;padding:0;margin:var(--a5) 0}
.rollen-wahl legend{font-family:var(--f-head);font-weight:600;padding:0;margin-bottom:var(--a2)}
.rollen-feld{display:flex;gap:var(--a4);align-items:flex-start;border:1px solid var(--line);
  border-radius:var(--rs);background:var(--card);padding:var(--a4);margin-bottom:var(--a3);cursor:pointer}
.rollen-feld:hover{border-color:var(--accent)}
.rollen-feld input{margin-top:var(--a1);width:1.2rem;height:1.2rem;flex:none;min-height:0}
/* Die Folge steht als gedaempfter Beisatz unter dem fetten Wort. Bis zur
   Design-Linie E5 trug sie `hinweis` und bekam ihre Groesse von dort;
   `.mut` faerbt nur, die Groesse gehoert deshalb hierher. */
.rollen-feld .mut{display:block;font-size:var(--s13);margin:0}

/* Die Zaehl-Einstellungen je Zeile im Laufweg-Editor. Eigenes Formular in der
   letzten Spalte, deshalb eine eigene Regel: die Feldregel setzt jedes Feld
   auf volle Breite, und drei Kaestchen untereinander machten aus einer
   Tabellenzeile einen halben Bildschirm. Umbruch statt fester Spalten, damit
   bei 360 px nichts aus der Karte herauslaeuft. */
.zaehlart-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--a2) var(--a4)}
body.wawi .zaehlart-form .feld{margin:0}
body.wawi .zaehlart-form label{display:block;font-size:var(--s11);font-weight:600;
  color:var(--muted);margin:0 0 var(--a1);padding-bottom:0}
body.wawi .zaehlart-form input[type=text]{width:8rem}
body.wawi .zaehlart-form input.zaehlart-zahl{width:6rem}
/* Der Speichern-Knopf ganz nach rechts, egal in welcher Zeile er landet:
   sonst klebt er am Ende der letzten Beschriftung und liest sich, als
   gehoerte er zu diesem einen Kaestchen. */
.zaehlart-form button{margin-left:auto}
/* Die beiden Kaestchen: Beschriftung NEBEN dem Kasten und in normaler
   Schreibweise -- das sind Saetze ("Ampel statt Zahl"), keine Feldnamen. */
.zaehlart-schalter{display:flex;flex-direction:column;gap:var(--a1)}
body.wawi .zaehlart-schalter label{display:flex;gap:var(--a1);align-items:baseline;
  font-size:var(--s13);font-weight:400;color:inherit;margin:0;padding-bottom:0}
.zaehlart-schalter input{width:1.1rem;height:1.1rem;flex:none;min-height:0}

/* Das Lieferformular des Wareneingangs arbeitet mit <label>-Huellen statt mit
   .feld: die Beschriftung steht darin, das Feld darunter. Lange Lieferzeilen
   sollen stapeln statt sich auf Daumenbreite zusammenzudruecken (Bauplan
   Gestaltung, 11.09.2026); die Regel kommt aus cockpit.css. */
body.wawi .lieferung-form label{display:block;margin:0 0 var(--a5);
  font-family:var(--f-head);font-weight:600}
body.wawi .lieferung-form label :where(input,select,textarea){display:block;width:100%}
/* Die Bestellmengen-Knoepfe stehen zu mehreren in einer Zeile und brauchen
   Luft, wenn sie umbrechen. */
body.wawi .bestellmenge-form button{margin:var(--a1) var(--a1) var(--a1) 0}

/* Der Stand von Flos Bereich ueber der Nachlese (/zaehlungen). Eine
   Nachschlage-Karte, kein Warnkasten: sie meldet nichts, sie ist der Einstieg
   in Flos Bereich. */
.truck-stand .truck-wege{display:flex;gap:var(--a4);flex-wrap:wrap;margin:var(--a3) 0 0}

/* Konditionen-Balken: Preisverhaeltnis sehen statt Zahlen vergleichen. */
.balken-liste{display:flex;flex-direction:column;gap:var(--a3)}
.balken-zeile.blass{opacity:.55}
.balken-text{display:flex;align-items:baseline;gap:var(--a2);flex-wrap:wrap;margin-bottom:2px}
.balken-spur{display:flex;align-items:center;gap:var(--a3)}
.balken{height:1.1rem;border-radius:var(--rs);background:var(--neutral);min-width:2px;transition:width .25s}
.balken.jetzt{background:var(--good)}
.balken.moeglich{background:var(--accent)}
.balken.laden{background:var(--line-stark)}
.balken-wert{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}

/* Preisverlaufs-Grafik. Der Farbpunkt in Legende und Sprechblase heisst im
   Quelltext `chip` (chart.js) -- im Katalog ist `.chip` der Firmenchip,
   deshalb hier ausdruecklich im Zusammenhang der Grafik zurueckgebaut. */
.chart{position:relative}
.chart-legende{display:flex;gap:var(--a5);flex-wrap:wrap;margin:0 0 var(--a2);
  font-size:var(--s13);color:var(--muted)}
.legende-eintrag{display:inline-flex;align-items:center;gap:var(--a2)}
.chart-legende .chip,.chart-tooltip .chip{display:inline-block;width:10px;height:10px;
  border-radius:3px;flex:0 0 auto;padding:0;font-size:0;line-height:0}
.chart-tooltip{position:absolute;z-index:5;background:var(--card);border:1px solid var(--line-stark);
  border-radius:var(--rk);box-shadow:0 10px 26px var(--schatten);padding:var(--a3) var(--a4);
  font-size:var(--s12);pointer-events:none;min-width:9rem;color:var(--text)}
.chart-tooltip .tip-kopf{font-weight:700;margin-bottom:var(--a1)}
.chart-tooltip div{display:flex;align-items:center;gap:var(--a2);padding:1px 0}

/* Die Zeitraum-Wahl des Bestandsvergleichs. Ein Filterformular in der
   Werkzeugzeile, dessen vier Felder nebeneinander stehen und am Handy
   umbrechen. Stand bis zur Design-Linie E5 in Abschnitt 5 und arbeitete mit
   blossen <label>-Huellen; seit E5 sind es `.feld`-Bloecke wie in jedem
   anderen Formular. */
.bestand-filter{display:flex;flex-wrap:wrap;gap:var(--a3);align-items:end}
body.wawi .bestand-filter .feld{flex:1 1 9rem;min-width:0;margin:0}
body.wawi .bestand-filter :where(input,select){width:100%;min-width:0}
@media (max-width:600px){
  body.wawi .bestand-filter .feld{flex-basis:100%}
}

/* Die Steuersaetze eines Entnahme-Blocks: mehrere Gruppen in EINER Zeile,
   jede fuer sich nicht umbrechend. Hiess bis zur Design-Linie E5
   `.bh-saetze span`. */
.satzgruppe{display:inline-block;margin-right:var(--a6);white-space:nowrap}

/* Login */
.login-rahmen{max-width:22rem;margin:12vh auto 0}
.login-rahmen h1{text-align:center}

/* ---------------------------------------------------------------------------
   5. SEITENEIGENE ERGAENZUNGEN
   ----------------------------------------------------------------------------
   Bis zum 20.09.2026 standen diese Regeln als <style>-Bloecke in sechs
   Vorlagen. Sie stehen jetzt hier, weil eine Seite mit eigenem Stilblock keine
   gemeinsame Gestaltung hat: was dort drinsteht, sieht niemand mehr, der die
   Stildateien liest, und es veraltet, sobald sich ein Bauteil aendert.

   Die Design-Linie raeumt diesen Abschnitt seitenweise leer: was die
   umgebaute Seite aus dem Katalog bekommt, faellt hier weg. E5 (23.09.2026)
   hat Betriebskosten, Bestandsvergleich, Buchhaltung sowie Diesel und Gas
   gestrichen; die Zeitraum-Wahl und die Steuersatz-Gruppen leben in
   Abschnitt 4 weiter. Uebrig sind nur noch Beleg-Eingang und Kasse.
   ------------------------------------------------------------------------ */

/* Beleg-Eingang */
.beleg-karte{overflow-wrap:anywhere}
body.wawi .beleg-karte select{min-width:0;max-width:100%}
body.wawi .beleg-haken{display:block;margin:var(--a3) 0;font-size:var(--s13);cursor:pointer}
.beleg-haken input{margin-right:var(--a2)}

/* Kasse */
.ks-zahl{font-family:var(--f-head);font-weight:700;font-size:var(--s24);margin:var(--a1) 0}
.ks-summen{margin:var(--a1) 0 var(--a3)}
.ks-summen span{margin-right:var(--a5);white-space:nowrap}
body.wawi .ks-feld input{width:8rem}
.ks-weg{text-decoration:line-through}
body.wawi .ks-storno textarea{width:100%;max-width:26rem}

/* ---------------------------------------------------------------------------
   6. DRUCK UND DRUCKANSICHTEN
   ----------------------------------------------------------------------------
   Aushang, Rezeptbuch und Hinweisschild rendern OHNE basis.html, laden aber
   dieselben zwei Stildateien: eine dritte Datei nur fuers Papier waere wieder
   eine Quelle mehr. Sie tragen `class="wawi aushang-druck"`, damit die Regeln
   mit body-Vorsatz auch dort gelten.
   ------------------------------------------------------------------------ */
.aushang-druck{background:var(--weiss);color:var(--text)}
.aushang-blatt{max-width:210mm;margin:0 auto;padding:var(--a6) var(--a7);
  font-size:var(--s17);line-height:1.45}
.aushang-blatt h1{font-size:var(--s32);margin:var(--a1) 0 var(--a1)}
/* Die Bibliothek nimmt Ueberschriften und Absaetzen jeden Aussenabstand. Auf
   dem Blatt gibt es aber keine `.inhalt`-Flaeche, die ihn zurueckgibt: ohne
   diese Regeln klebten im Rezeptbuch "Selbst gemacht" und "Gerichte"
   aneinander (gesehen 20.09.2026 in der Sichtprobe). */
.aushang-blatt :where(h2,h3){font-family:var(--f-head);margin:var(--a6) 0 var(--a2)}
.aushang-blatt :where(p,ul,ol){margin:var(--a3) 0}
.aushang-blatt :where(ul,ol){padding-left:var(--a7);list-style:disc}
.aushang-blatt li{display:list-item}
.aushang-untertitel{color:var(--muted);margin:0 0 var(--a6);font-size:var(--s15)}
.aushang-gericht{border-top:1px solid var(--line);padding:var(--a3) 0 var(--a2);break-inside:avoid}
.aushang-gericht h2{font-size:var(--s24);margin:0 0 var(--a1)}
.aushang-gericht p{margin:2px 0}
.aushang-gericht ul{margin:var(--a1) 0;padding-left:var(--a7);list-style:disc}
.aushang-gericht li{display:list-item}
.aushang-fehlt{font-weight:700}
.aushang-fuss{border-top:2px solid var(--line-stark);margin-top:var(--a5);padding-top:var(--a3);
  font-size:var(--s13);color:var(--text)}
.aushang-fuss p{margin:var(--a1) 0}
.aushang-hinweisschild{text-align:center;padding-top:var(--a7)}
.aushang-hinweisschild h1{font-size:calc(2 * var(--s32))}
.aushang-gross{font-size:var(--s24);line-height:1.5;margin:var(--a6) 0}
/* Aushang und Rezeptbuch sind die EINZIGEN Traeger der alten
   Bindestrich-Namen, die Schritt E6 stehen laesst: sie rendern ohne
   basis.html, ihre Zeile "Noch keine Zutaten erfasst" ist ein Satz auf Papier
   und keine Zustandsmarke des Katalogs. Deshalb stehen ihre Zeichen hier und
   nicht mehr in der Zustandssprache.
   Druckansichten bleiben schwarzweiss. Dort behaelt die Stufe ihr SYMBOL --
   auf Papier traegt es die ganze Unterscheidung --, gibt aber Farbe, Flaeche
   und Rand ab. Hintergruende druckt ein Browser ohnehin nur auf ausdrueckliche
   Bitte; eine Stufe, die sich allein ueber ihre Flaeche erklaert, waere auf dem
   Ausdruck unsichtbar. */
.aushang-druck .zustand-luecke::before{content:"▲\00A0"}
.aushang-druck .zustand-blockiert::before{content:"✖\00A0"}
.aushang-druck .zustand-luecke{color:inherit;background:none;border:0}
.aushang-druck .zustand-blockiert{color:inherit;background:none;border:0}

@media print{
  .nur-bildschirm{display:none !important}
  /* Die Buchhaltungsseite geht als Blatt in die Akte (20.09.2026,
     BAUPLAN-eigenverzehr). Weg muss alles, was am Papier keinen Sinn hat: die
     Navigation, die Knoepfe und die Formulare. Die TABELLEN bleiben, sie sind
     der Zweck des Ausdrucks. */
  .kopf,.sprung-inhalt,.navigation,form,button,.knopf{display:none !important}
  .inhalt{max-width:none;padding:0}
  body.wawi .karte{border:0;box-shadow:none;padding:0;margin:0 0 var(--a5);break-inside:avoid}
  .aushang-blatt{max-width:none;padding:0;font-size:12pt}
  .aushang-blatt h1{font-size:22pt}
  .aushang-gericht h2{font-size:15pt}
  .aushang-fuss{font-size:9pt}
  .aushang-hinweisschild h1{font-size:34pt}
  .aushang-gross{font-size:20pt}
  @page{margin:14mm}
}

/* ---------------------------------------------------------------------------
   SEITENMUSTER MIT KACHELLISTEN (Design-Linie E1, 21.09.2026)
   Warum: Artikel und Lieferanten sollen wie die Dashboard-Listen aussehen.
   Dieselben Klassen tragen spaeter auch Wareneingang, Belege und Speisekarte;
   nur --spalten am gemeinsamen .listenseite-Elternteil beschreibt die Seite.
   So fluchten alle Gruppen, auch wenn ein Name oder ein Knopf laenger wird.

   .listenseite: Kopf, Werkzeugzeile und Gruppen im gemeinsamen Seitenmuster.
   .werkzeugzeile: Hauptaktion links, .werkzeugfilter mit .werkzeugsuche rechts.
   .kachelliste: Liste mit Abstand --a2, ohne Aufzaehlung und Trennlinien.
   .kachel-zeile[data-zeile]: Objekt mit Raster --spalten, mobil gestapelt.
   .kachel-titel: Name und Zustandszeichen; .kachel-merkmal: data-label plus
   inneres span als Wert. .kachel-zahl.zahlwert: rechtsbuendige Ziffern.
   .kachel-aktionen: Formulare und Links; .kachel-leer: unbesetzte Spalte,
   damit Sondergruppen dieselben Spalten behalten, am Handy ausgeblendet.
   Der Selektor tr, [data-zeile] in bloecke.js traegt beide Darstellungen,
   ohne fremde Tabellen oder die Truck-Vorlagen umzubauen.
   ------------------------------------------------------------------------ */
.listenseite{min-width:0}
.inhalt .listenseite h1{margin-bottom:var(--a2)}
.werkzeugzeile,.werkzeugfilter,.werkzeugsuche{display:flex;flex-wrap:wrap;
  align-items:center;gap:var(--a2);min-width:0}
.werkzeugzeile{margin:var(--a5) 0 var(--a6);gap:var(--a4)}
.werkzeugfilter{margin-left:auto;justify-content:flex-end;flex:1}
.werkzeugsuche{max-width:100%}
.werkzeugsuche input[name=q]{width:calc(7 * var(--a7));min-width:0;flex:1}
body.wawi .werkzeugzeile .knopf{background:var(--card);color:var(--accent-text);
  border-color:var(--line);white-space:normal}
body.wawi .werkzeugzeile .knopf:hover{background:var(--accent-bg)}
body.wawi .werkzeugzeile .knopf.pri{background:var(--accent);color:var(--card);
  border-color:var(--accent)}
body.wawi .werkzeugzeile .knopf.pri:hover{background:var(--accent-dunkel)}
body.wawi .werkzeugfilter .pille{padding:var(--a1) var(--a4);
  background:var(--card);color:var(--text);border:1px solid var(--line);
  font-size:var(--s13);white-space:normal}
body.wawi .werkzeugfilter .pille:hover{background:var(--bg)}
body.wawi .werkzeugfilter .pille.an{background:var(--accent-bg);
  border-color:var(--accent-bg);color:var(--accent-text);font-weight:600}
.listenseite .block{margin-top:var(--a6)}
.listenseite .blockkopf{border:0;margin:0;padding:0;font-size:var(--s15)}
.inhalt .kachelliste{display:grid;grid-template-columns:minmax(0,1fr);
  gap:var(--a2);list-style:none;padding:0;margin:var(--a3) 0 var(--a6)}
.inhalt .kachel-zeile{display:grid;grid-template-columns:var(--spalten);
  align-items:center;gap:var(--a3);min-width:0;padding:var(--a4) var(--a5);
  background:var(--card);border:0;border-radius:var(--rk);font-size:var(--s13)}
.kachel-zeile>*{min-width:0;max-width:100%}
.kachel-titel{font-size:var(--s15);line-height:1.35;overflow-wrap:anywhere}
.kachel-titel strong{font-weight:600}
.kachel-titel .standard-stern{white-space:nowrap}
.kachel-titel .zustandspille{display:inline-flex;flex-wrap:wrap;gap:var(--a1)}
body.wawi .kachel-merkmal{display:grid;gap:var(--a1);font-size:var(--s13);
  white-space:normal;overflow-wrap:anywhere}
.kachel-merkmal::before{content:attr(data-label);font-size:var(--s12);
  text-transform:uppercase;color:var(--muted);font-weight:400}
/* Ein Merkmal, dessen Wert ein ganzer Satz ist, braucht keine Beschriftung:
   „ZWECK" ueber „Rechnungen einer Lieferung zuordnen" erklaert nichts und
   stand am Handy als eigene Zeile darueber (Werkstatt-Kacheln, 22.09.2026).
   Ohne die Klasse bliebe ::before mit leerem attr() eine leere Rasterspalte. */
.kachel-merkmal.ohne-label::before{content:none}
.kachel-merkmal>span{min-width:0}
body.wawi .kachel-zahl{text-align:right;font-variant-numeric:tabular-nums}
body.wawi .kachel-zeile .pille{max-width:100%;white-space:normal}
.kachel-aktionen{display:flex;flex-wrap:wrap;justify-content:flex-end;
  align-items:center;gap:var(--a2);font-size:var(--s13)}
body.wawi .kachel-aktionen .aktionen{width:100%;justify-content:flex-end}
.kachel-aktionen .zustandsknoepfe{display:flex;flex-wrap:nowrap;
  justify-content:flex-end;gap:var(--a2);width:100%;min-width:0}
.kachel-aktionen .inline-form{min-width:0;max-width:100%}
body.wawi .kachel-aktionen .mini-knopf{font-size:var(--s13);
  padding:var(--a1);min-height:var(--zeile-h);max-width:100%;white-space:normal}
.kachel-aktionen .zeilen-melder{white-space:normal}
/* Die Markierung endet auf der weissen Kachel, nicht auf dem Seitengrund. */
.kachel-zeile.eben-bearbeitet{animation-name:kachel-aufblitzen}
@keyframes kachel-aufblitzen{
  from{background:var(--accent-bg)}
  to{background:var(--card)}
}
@media (max-width:999px){
  .inhalt .kachel-zeile{grid-template-columns:minmax(0,1fr);gap:var(--a4)}
  body.wawi .kachel-merkmal{grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    align-items:baseline;gap:var(--a3);text-align:right}
  /* Ohne Beschriftung gibt es nichts zu paaren: eine Spalte, linksbuendig. */
  body.wawi .kachel-merkmal.ohne-label{grid-template-columns:minmax(0,1fr);
    text-align:left}
  .kachel-merkmal::before{text-align:left}
  .kachel-leer{display:none}
  .kachel-aktionen{justify-content:flex-start}
  body.wawi .kachel-aktionen .aktionen{justify-content:flex-start}
  .kachel-aktionen .zustandsknoepfe{justify-content:flex-start}
  body.wawi .kachel-aktionen :is(.mini-knopf,button,a),
  body.wawi .werkzeugzeile :is(button,a.pille){min-height:calc(var(--a7) + var(--a5))}
  .kachel-aktionen a{display:inline-flex;align-items:center}
  .werkzeugfilter{flex-basis:100%;justify-content:flex-start}
}
@media print{
  .werkzeugzeile{display:none !important}
}

/* ---------------------------------------------------------------------------
   KATALOGREGIE DER UMGEBAUTEN SEITEN (Design-Linie E2, 23.09.2026)
   ----------------------------------------------------------------------------
   Der Abschnitt entstand, solange die Uebergangsabbildung (alter Abschnitt 3)
   `.knopf` noch blau und `form.formular` zu einer Karte machte: die umgebauten
   Seiten holten sich die Katalogordnung dort zurueck, wo sie sie aufspannten.
   Seit Schritt E6 (23.09.2026) ist die Abbildung geloescht, die Bibliothek
   gilt unverstellt, und hier bleibt nur noch, was die WaWi ZUSAETZLICH
   braucht: Abstaende, die im Dashboard ein Raster liefert, die Zeichen der
   Zustandsmarken und die Nachmessungen an den Fotos der Bloecke E2 bis E5.
   ------------------------------------------------------------------------ */

/* --- Zeilenumbruch in den Knopfleisten: die FARBEN kommen seit E6 aus der
       Bibliothek (weiss der Normalfall, `.knopf.pri` blau, `.knopf.rot` rot).
       Hier bleibt nur, dass eine lange Beschriftung in der Werkzeugzeile, im
       Formularfuss und in den Kachelaktionen umbrechen darf; sonst schiebt
       `white-space:nowrap` des Katalogknopfs sie aus der Karte. --- */
body.wawi :is(.werkzeugzeile,.formular-fuss,.kachel-aktionen) :is(button,.knopf){
  white-space:normal}

/* --- Das Formular ist das Raster der Bibliothek; hier steht nur der Abstand
       zum Fuss. Im Dashboard sitzt jedes Formular in einem Raster, das den
       Abstand mitbringt, in der WaWi steht der Fuss auch mal allein unter
       einem Absatz. Im Raster macht `gap` ihn ohnehin gleich. --- */
body.wawi .formular-fuss{margin:var(--a5) 0 0}
body.wawi .formular>.formular-fuss{margin:0}
/* Im Raster setzt `gap` die Abstaende, nicht der Aussenabstand des einzelnen
   Teils: zwei Quellen fuer denselben Abstand ergeben ungleiche Luecken,
   sobald ein Erklaersatz zwischen zwei Feldern steht. Der Absatz braucht die
   Zeile, weil Abschnitt 1 ihm fuer den Fliesstext der WaWi einen
   Aussenabstand zurueckgibt. */
body.wawi .formular :where(.feld,p,.zeile,.formular-zeile,.radio-gruppe){margin:0}

/* --- Meldung im Inhalt. Die Bibliothek gibt ihr bewusst keinen Aussenabstand
       (im Dashboard sitzt sie in einem Raster); in einer Textseite braucht sie
       ihn. --- */
body.wawi .inhalt .meldung{margin:var(--a4) 0}
/* Der Link erbt die Stufenfarbe und bleibt trotzdem als Weg erkennbar: ein
   blauer Link auf rotem Grund waere der einzige Punkt der Seite, an dem zwei
   Bedeutungsfarben uebereinanderliegen. */
body.wawi .meldung a{color:inherit;text-decoration:underline}

/* --- Zustandsmarke: Farbe UND Zeichen. Die Bibliothek faerbt nur; in der
       WaWi traegt jede Stufe seit dem 28.08.2026 ihr Symbol, weil am
       Verkaufsfenster die Sonne auf dem Bildschirm steht und Farbe allein
       dann nichts mehr traegt. Dieselben Glyphen wie im Aushang (Abschnitt 6)
       und in der Quoten-Ampel (Abschnitt 3): ein Zeichen je Stufe, an einer
       Stelle. --- */
body.wawi .zustand.ok::before{content:"✓\00A0"}
body.wawi .zustand.annahme::before{content:"ⓘ\00A0"}
body.wawi .zustand.luecke::before{content:"▲\00A0"}
body.wawi .zustand.fehler::before{content:"✖\00A0"}
/* Eine Zustandsmarke, die zugleich ein Weg ist: unterstrichen wie die alten
   Sprungmarken, damit die Stufenfarbe den Linkhinweis nicht verschluckt. */
body.wawi a.zustand{text-decoration:underline}
body.wawi a.zustand.luecke:hover{background:color-mix(in srgb,var(--warn) 18%,white)}
/* Die Zustandsmarke im Fliesstext ist ein Beisatz („(geschaetzt)"), kein
   eigener Absatz: `justify-self:start` aus der Bibliothek gilt nur im Raster,
   inline braucht sie die Grundlinie der Zeile. */
/* Der Beisatz ist ein Satz und muss umbrechen duerfen: die Zustandsmarke des
   Katalogs steht auf `nowrap`, weil sie dort aus einem Wort besteht. */
body.wawi .zustand.inline{padding:0;background:none;font-size:inherit;
  white-space:normal}
body.wawi .zustand.annahme.inline{color:var(--muted-stark)}

/* --- Tabelle: das Katalog-Bauteil sitzt in einer Karte (Seitenmuster,
       Punkt 7). Hier stehen nur die zwei Faelle, die die WaWi zusaetzlich
       braucht. --- */
/* Gestapelte Tabellen gleicher Bauart (ein Block je Lieferant) muessen ihre
   Spalten UNTEREINANDER haben; automatisch tut das keine, der Browser misst
   jede <table> fuer sich. Feste Aufteilung plus <colgroup> im Template ist die
   einzige Loesung, die den aufklappbaren <details>-Block behaelt. */
table.tabelle.spalten-fest{table-layout:fixed}
/* Die Zeile der gerade geoeffneten Ausfuehrung in der Gruppentabelle.
   `tbody` steht bewusst im Selektor, damit die Markierung die Haarlinie der
   Zeile darueber schlaegt und nicht nur halb durchkommt. */
.tabelle tbody tr.eigene-zeile{background:var(--accent-bg)}
@media (max-width:639px){
  /* In der Kartenansicht gibt es keine Spalten mehr; die <col>-Elemente
     erzeugten sonst je nach Browser eine anonyme Tabellenbox. */
  table.tabelle colgroup,table.tabelle col{display:none}
  /* Die Aktionszelle sammelt ihre Links in EINEM .aktionen (siehe die
     Katalog-Bauteile am Dateiende), hier bekommt sie nur die Ausrichtung der
     Kartenansicht. */
  table.tabelle td[data-label=""]{justify-content:flex-end}
}

/* --- Nachmessungen an den Fotos vom 23.09.2026 (Design-Linie E2) --- */
/* Eine Filtergruppe NEBEN einem Filterformular nimmt die Breite ihres
   Inhalts, nicht den Rest der Zeile. Mit `flex:1` (Regel aus E1, wo sie allein
   in der Werkzeugzeile steht) wurde sie auf /preise zur Daumenspalte, und die
   beiden Pillen standen untereinander. */
body.wawi .werkzeugzeile>form{flex:0 1 auto;min-width:0}
body.wawi .werkzeugzeile>form+.werkzeugfilter{flex:0 0 auto}
@media (min-width:640px){
  /* Die Aktionsspalte einer Tabelle traegt Links, keine Saetze: „Korrigieren"
     brach in der neunspaltigen Preisverlaufstabelle mitten im Wort um, weil
     `.tabelle td` grundsaetzlich ueberall umbricht. Dieselbe Regel hatte die
     alte `rtable` schon. */
  body.wawi table.tabelle td[data-label=""] a{white-space:nowrap}
  /* Eine Zahl ist EIN Wert: „13,77 €" darf nicht zwischen Betrag und Zeichen
     brechen. Unter 640 px gilt das nicht, dort ist die Zelle eine Kartenzeile
     mit voller Breite. */
  body.wawi table.tabelle td.zahl,body.wawi table.tabelle th.zahl{white-space:nowrap}
}

/* --- Der rote Knopf im Formularfuss (Design-Linie E3, Loeschdialoge) ---
   Die Katalogregie oben macht JEDEN Knopf in Werkzeugzeile, Formularfuss und
   Kachelaktionen weiss und nur `.pri` blau. Ihr Selektor ist spezifischer als
   das blosse `.knopf.rot` der Bibliothek, das Loeschen sah damit aus wie
   Abbrechen -- auf genau der Seite, auf der die beiden Wege nicht gleich
   aussehen duerfen. */
body.wawi :is(.werkzeugzeile,.formular-fuss,.kachel-aktionen) :is(button,.knopf).rot{
  background:var(--crit-bg);border-color:color-mix(in srgb,var(--crit) 35%,white);
  color:var(--crit-text)}
body.wawi :is(.werkzeugzeile,.formular-fuss,.kachel-aktionen) :is(button,.knopf).rot:hover{
  background:color-mix(in srgb,var(--crit) 18%,white);border-color:var(--crit);
  color:var(--crit-text)}

/* --- Kachel ohne Spalten (Design-Linie E3): Aushang-Vorschau, Rezepte
   pruefen. Dort ist jede Kachel ein Block aus ganzen Saetzen und einem
   Formular, kein Zeilenraster. Die Bibliothek gibt `.kachel` nur Radius und
   eine schmale Polsterung fuer Listenzeilen; als Textkachel braucht sie die
   Polsterung einer Karte und einen ersten Titel ohne Abstand nach oben. */
body.wawi .kachelliste>.kachel:not(.kachel-zeile){padding:var(--a5);
  background:var(--card)}
body.wawi .kachelliste>.kachel:not(.kachel-zeile)>:first-child{margin-top:0}
body.wawi .kachelliste>.kachel:not(.kachel-zeile)>:last-child{margin-bottom:0}

/* --- Das Hinweisschild am Bildschirm (Design-Linie E3, Messung 23.09.2026).
   Die Schriftgroesse des Schildes ist fuers Blatt gemacht (doppeltes --s32 auf
   A4). Am Handy lief „Zusatzstoffe" damit ueber den Rand hinaus: 475 px Inhalt
   in einem 390-px-Fenster, gemessen mit fotos.py. Nur am BILDSCHIRM kleiner,
   der Druck (Abschnitt 6) behaelt seine 34pt; keine neue Groesse, sondern der
   Token, der eine Stufe darunter liegt. */
@media screen and (max-width:639px){
  .aushang-hinweisschild h1{font-size:var(--s32)}
}

/* --- Die Pille als BESCHRIFTUNG bleibt klein (Design-Linie E3, Messung
   23.09.2026). Die Bibliothek gibt jeder `.pille` unter 1000 px 40 px Hoehe:
   dort ist sie ein Filter zum Antippen, und ein Filter braucht Fingerbreite.
   In einer Kachel und in einer Tabellenzelle sagt dieselbe Pille nur, WAS
   etwas ist („Aktiv", „verkaufen wir nicht", „veraltet"). Ein <span> laesst
   sich nicht antippen; am Handy stand das Wort „Aktiv" deshalb in einem
   40 px hohen gruenen Kreis und schob die Statuszeile jeder Kachel auf die
   doppelte Hoehe. Nur das SPAN wird zurueckgesetzt: ein <a class="pille">
   (Filterpille der Werkzeugzeile) behaelt seine Fingerbreite. */
@media (max-width:1000px){
  /* Seit E4 gehoert die Textkachel dazu: auf den Vorschlagsseiten und in
     „Schwund zuordnen" steht die Marke („verworfen", „zugeordnet") in einem
     gewoehnlichen Absatz der Kachel, nicht in einer Merkmalspalte, und stand
     dort am Handy in einem 40 px hohen Kasten. */
  body.wawi :is(.kachel-titel,.kachel-merkmal,table.tabelle td,.kachelliste>.kachel p) :is(span.pille,span.zustand){
    min-height:0}
  /* Eine Marke, deren Text ein ganzer Satz ist („wird beim Zaehlen
     ausgeblendet"), sprengt am Handy die Zelle, wenn sie nicht umbrechen darf
     (Design-Linie E4, Laufweg). Am PC bleibt `nowrap`: dort ist Platz, und
     eine umgebrochene Marke sieht aus wie zwei. */
  body.wawi :is(.kachel-titel,.kachel-merkmal,table.tabelle td,.kachelliste>.kachel p) :is(span.pille,span.zustand){
    white-space:normal}
}

/* --- Ein Kaestchen ist kein Eingabefeld (Design-Linie E4, Messung
   23.09.2026). Die Bibliothek gibt `.feld>input` volle Breite und
   Zeilenhoehe; steht das Ankreuzfeld direkt in einem `label.feld` (Schwund
   zuordnen, Belege, Kennzeichnungsvorschlaege), wurde daraus ein
   handtellergrosses Quadrat neben einem halben Satz. Abschnitt 1 nimmt
   Ankreuz- und Auswahlfelder ausdruecklich aus; in der Bibliothek fehlt
   dieselbe Ausnahme. */
body.wawi .feld>input:is([type=checkbox],[type=radio]){display:inline-block;
  width:auto;min-height:0}

/* --- Das Eingabefeld im Formularfuss (Design-Linie E4, Messung 23.09.2026).
   `.feld-inline` ist auf 9 rem gedeckelt, das ist die Mengenbox einer
   Tabellenzeile. Im Fuss einer Vorschlagskachel steht dort ein Grundfeld, und
   aus „Warum verwerfen? (optional)" wurde „Warum verwerfer". Im Fuss nimmt es
   den freien Platz. */
body.wawi .formular-fuss .feld-inline{max-width:none;flex:1 1 16rem;min-width:0}

/* --- Kopfzeile einer Tabelle IN einer Karte (Design-Linie E4, Messung
   23.09.2026). `body.wawi .karte` setzt `overflow-wrap:anywhere`, damit lange
   Bezeichner die Karte nicht sprengen; geerbt gilt das auch fuer die
   Spaltenkoepfe, und dort wurde aus „Kategorie" ein „KATEG ORIE" und aus
   „Verschieben" ein „VERSCHIEBE N" (Laufweg bei 1920 px). Ein Spaltenkopf ist
   EIN Wort und darf nicht mitten im Wort brechen; die Zellen darunter
   behalten ihren Umbruch. */
body.wawi .karte table.tabelle th{overflow-wrap:normal}

/* --- Eine Katalogtabelle IN einer Textkachel (Design-Linie E4) steht schon
   auf weissem Grund; sie braucht die Karte darum nicht ein zweites Mal, nur
   Luft nach oben. --- */
body.wawi .kachelliste>.kachel table.tabelle{margin:var(--a3) 0 0}

/* --- Die Zelle ohne Wert faellt am Handy WEG (Design-Linie E5, aus der
   gefallenen Regel `.bestand-tabelle td.leer`). Am PC bleibt sie stehen,
   sonst verrutschte die Spalte; in der Kartenansicht waere sie eine
   beschriftete Zeile ohne Auskunft. Nur die Zelle, nicht `.karte.leer`. --- */
@media (max-width:639px){
  body.wawi table.tabelle td.leer{display:none}
}



/* ---------------------------------------------------------------------------
   KATALOG-BAUTEILE MIT WAWI-ZUSCHNITT (Design-Linie E6, 23.09.2026)
   ----------------------------------------------------------------------------
   Hier steht, was von der geloeschten Uebergangsabbildung UEBRIG bleibt: nicht
   mehr alte Namen auf neue Bauteile, sondern die wenigen Stellen, an denen die
   WaWi ein Katalog-Bauteil bewusst anders braucht als das Dashboard. Jede
   Regel nennt ihren Grund; ohne Grund gehoert sie geloescht und nicht hierher.
   ------------------------------------------------------------------------ */

/* --- Karte: die Bibliothekskarte, aber als Block statt als Raster. Die 123
       WaWi-Karten enthalten Fliesstext, Klappbloecke und ganze Tabellen und
       arbeiten mit eigenen Aussenabstaenden; als Raster mit fester Zeilenfolge
       (Kopf, Rumpf) wuerden sie sich gegenseitig stauchen. Aussehen (weiss,
       Haarlinie, Radius, kein Schatten) ist identisch. --- */
body.wawi .karte{display:block;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:var(--a5);margin:var(--a5) 0;min-width:0;
  overflow-wrap:anywhere;grid-template-rows:none;gap:0}
body.wawi .karte>:where(h2,h3):first-child{margin-top:0}
/* Eine Karte, die nur sagt, dass nichts da ist. Sie muss die Karte selbst
   schlagen, deshalb steht sie hier mit beiden Klassen. */
body.wawi .karte.leer{color:var(--muted);padding:var(--a7);text-align:center}

/* --- Knopf: FARBE aus der Bibliothek (weiss der Normalfall, `.pri` der eine
       blaue), GROESSE aus der WaWi. Der Katalogknopf des Dashboards ist rund
       22 px hoch und fuer die Maus gemacht; die WaWi wird am Verkaufsfenster
       und unterwegs am Handy bedient, darum behaelt ihr Knopf die Zeilenhoehe
       und die Ueberschriftenschrift, die Pipo seit dem 20.09.2026 sieht.
       Bewusst NUR Groesse und Schrift: eine Farbe hier wuerde `.knopf.pri`,
       `.knopf.rot` und `.knopf.leise` der Bibliothek schlagen. --- */
body.wawi :is(button,.knopf){font-family:var(--f-head);font-weight:600;
  padding:var(--a2) var(--a5);min-height:var(--zeile-h)}
/* Sicherheitsnetz fuer einen <button> ohne Klasse: die Bibliothek nimmt dem
   blossen Knopf Grund und Rand (`button{background:none;border:0}`), er waere
   also unsichtbar. Heute gibt es in Pipos Ansicht keinen einzigen mehr
   (geprueft am 23.09.2026 im Browser), die naechste Vorlage soll aber nicht
   an einer unsichtbaren Schaltflaeche scheitern. */
body.wawi button:not([class]){display:inline-flex;align-items:center;gap:5px;
  font-size:var(--s13);line-height:1.25;border:1px solid var(--line);
  border-radius:var(--rp);background:var(--card);color:var(--text);
  white-space:nowrap}
/* Die Zeilenknoepfe (Standard, als Special, nur beobachten) sind KEINE
   Hauptknoepfe: als blaue Flaeche mit voller Hoehe passten drei davon nicht
   mehr in eine Tabellenzeile (Pipo, 12.09.2026: "komplett blau, nichts mehr
   lesbar"). Sie sind der kleine Zeilenknopf des Katalogs.
   Pipo, 20.09.2026 abends: sie standen "kreuz und quer" auf drei Zeilen, weil
   sie als Pille mit voller Zeilenhoehe breiter wurden als die feste
   Aktionsspalte. Darum kompakt: Schrift eine Stufe kleiner, Hoehe aus der
   Schrift, eckigere Rundung wie der kleine Katalogknopf. Ein nowrap auf der
   ganzen Zelle war der erste Versuch und schnitt die Knoepfe am Tabellenrand
   ab (table-layout fixed gibt nichts nach), darum nicht.
   Diese Regel steht NACH der Groessenregel oben: beide sind gleich
   spezifisch, es entscheidet die Reihenfolge. */
body.wawi .mini-knopf{background:var(--card);color:var(--accent-text);
  border:1px solid var(--line);border-radius:var(--rs);font-size:var(--s11);font-weight:600;
  padding:1px 7px;min-height:0;line-height:1.35;
  white-space:nowrap}   /* "entfernen" brach in schmalen Spalten mitten im Wort um */
body.wawi .mini-knopf:hover{background:var(--accent-bg);border-color:var(--accent);
  color:var(--accent-text)}
/* Ausnahme fuer die WENIGEN Mini-Knoepfe, deren Beschriftung einen fremden
   Namen enthaelt und damit beliebig lang wird ("⭐ Lechle Metzgerei als
   Standard"). Gemessen am 28.08.2026 bei 360 px und 130 % Systemschrift: 270 px
   Knopf in einer 249 px breiten Karte, und weil die Aktionszelle rechtsbuendig
   ausrichtet, haengt der Ueberschuss LINKS aus der Karte heraus. */
body.wawi .mini-knopf.umbruch{white-space:normal;overflow-wrap:break-word}
/* Am Handy ist jeder Knopf ein Ziel fuer den Daumen. Die Bibliothek gibt das
   nur `.knopf.klein`, weil im Dashboard die Maus fuehrt. */
@media (max-width:1000px){
  body.wawi :is(button,.knopf){min-height:40px}
  body.wawi .mini-knopf{min-height:40px}
}

/* --- Feld und Formularzeile. Das Formular selbst ist seit E6 ueberall das
       Raster der Bibliothek (`.formular`), die Felder ihre `label.feld`. Hier
       steht nur, was die Bibliothek nicht kennt. --- */
/* Ein Freitextfeld der WaWi traegt Notizen und Zutatenlisten, keine Einzeiler;
   die Bibliothek gibt ihm nur Zeilenhoehe. */
body.wawi .feld>textarea{min-height:4rem}
/* Eine Zeile nebeneinanderstehender Felder. Die Katalogform heisst
   `.formular-zeile` und teilt gleich breite Spalten zu; `.zeile` bleibt der
   Umbruch ueber flex-wrap, weil die Felder sehr verschiedene Breiten haben
   (eine Menge neben einem Namen). Im Katalog ist `.zeile` die Listenzeile des
   Dashboards, ein Raster -- deshalb steht der Rueckbau hier. */
body.wawi .zeile{display:flex;gap:var(--a5);flex-wrap:wrap;min-height:0;
  padding-top:0;padding-bottom:0;align-items:flex-start}
body.wawi .zeile>.feld{flex:1 1 12rem;min-width:0}
body.wawi .zeile>.feld.schmal{flex:0 0 7rem;min-width:7rem}
.radio-gruppe{display:flex;gap:var(--a6);padding:var(--a1) 0;flex-wrap:wrap}
body.wawi .radio-gruppe label{font-size:var(--s15);font-weight:400;display:flex;
  align-items:center;gap:var(--a1);color:var(--text);padding-bottom:0}
/* Auswahl-Chips (Standplatz, 19.09.2026): ein Radio je Chip, der Punkt ist
   versteckt, der markierte Chip faerbt sich. Umbruch statt Scrollen, damit es
   am Handy passt. Die Form ist die Pille des Katalogs. */
.chips-gruppe{display:flex;flex-wrap:wrap;gap:var(--a2);padding:var(--a1) 0}
body.wawi .feld label.chip-wahl,body.wawi .chip-wahl{display:inline-flex;font-size:var(--s15);
  font-weight:400;color:var(--text);margin:0;padding-bottom:0;cursor:pointer}
.chip-wahl input{position:absolute;opacity:0;width:0;height:0}
.chip-wahl span{display:inline-block;padding:var(--a2) var(--a5);border:1px solid var(--line);
  border-radius:var(--rp);background:var(--card);line-height:1.25}
.chip-wahl input:checked+span{background:var(--accent);color:var(--weiss);border-color:var(--accent)}
.chip-wahl input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
/* Ein Formular, das in einer Tabellenzeile steht und nicht umbrechen soll. */
.inline-form{display:inline}
/* Einzelnes Eingabefeld in einer Werkzeugzeile (Mengenbox, Suchfeld) */
.feld-inline{max-width:9rem}
/* Freitextfeld in einer Tabellenzeile (Portionshinweis der Speisekarte):
   wie .feld-inline, nur ohne die Deckelung fuer Mengen- und Suchfelder. */
.feld-inline.breit{max-width:none;width:100%}
/* Suchfeld ueber einer Artikel-Auswahl (V8, 27.08.2026). bloecke.js erzeugt es
   zwischen Beschriftung und Auswahlfeld; etwas kleiner und mit Abstand nach
   unten, damit es als Hilfsmittel erkennbar bleibt und nicht wie ein zweites
   Pflichtfeld aussieht. */
.zutat-filter{font-size:var(--s13);margin-bottom:var(--a1)}
/* Rueckmeldung neben einem Zeilen-Formular, das ohne Neuladen speichert
   (bloecke.js, 29.08.2026): "Gespeichert" leise, Fehler in Warnfarbe. */
.zeilen-melder{margin-left:var(--a2);font-size:var(--s12);color:var(--good-text);white-space:nowrap}
.zeilen-melder-rot{color:var(--crit-text);white-space:normal}

/* --- Aktionen einer Tabellenzeile als eine Einheit: in der Mobil-Karte
       sollen sie zusammen umbrechen, nicht Wort fuer Wort. Im Katalog ist
       `.aktionen` eine rechtsbuendige Flexzeile ueber die volle Breite; hier
       steht sie mitten in einer Zelle, also inline. --- */
body.wawi .aktionen{display:inline-flex;flex-wrap:wrap;align-items:center;
  justify-content:flex-start;gap:var(--a1) var(--a2)}

/* --- Kurz hervorheben, was gerade bearbeitet wurde: nach der Weiterleitung
       sucht man sonst in einer langen Liste die Zeile, auf die man eben
       geklickt hat. Die Kachelliste dreht den Namen der Bewegung weiter oben
       auf `kachel-aufblitzen`, damit die Markierung auf der weissen Kachel
       endet und nicht auf dem Seitengrund. --- */
.eben-bearbeitet{animation:aufblitzen 2s ease-out}
@keyframes aufblitzen{
  0%{background:var(--accent-bg)}
  100%{background:transparent}
}

/* --- Pille. Im Katalog gibt es zwei verwandte Formen: der Firmenchip
       (`.chip`, getoenter Grund, dunklere Schrift) und die Filterpille
       (`.pille`, weiss mit Rand). Die WaWi-Pille sagt in 63 Vorlagenstellen,
       was etwas IST (Preisart, Eigenrezept, Special) -- das ist der Chip, und
       weil der Name `pille` auch aus der Datenbankschicht kommt
       (db.PREISART_KLASSEN), wird hier der Chip unter dem Pillennamen gebaut.
       Die Filterpille der Werkzeugzeile und des Menues holt sich ihre Form in
       Abschnitt 2 und im Seitenmuster zurueck, beide spezifischer als hier.
       Die Toene kommen aus den vorhandenen Firmen- und Ampeltokens; eine
       eigene Palette je Preisart waere genau die zweite Farbwelt, die die
       Design-Linie abschafft. --- */
body.wawi .pille{display:inline-block;font-size:var(--s12);line-height:1.35;
  border:0;border-radius:var(--rp);padding:2px 9px;white-space:nowrap;
  background:var(--neutral-bg);color:var(--muted-stark);font-weight:400}
body.wawi a.pille{text-decoration:none}
body.wawi .pille.laden{background:var(--accent-bg);color:var(--accent-text)}
body.wawi :is(.pille.b2b,.pille.staffel,.pille.oem){background:var(--korni-bg);color:var(--korni)}
body.wawi .pille.aktion{background:color-mix(in srgb,var(--warn) 11%,white);color:var(--warn-text)}
body.wawi :is(.pille.rechnung,.pille.eigen){background:var(--collabo-bg);color:var(--collabo)}
body.wawi .pille.eigen a{color:inherit}
body.wawi .pille.special{background:var(--privat-bg);color:var(--privat)}

/* --- Preisbasis als leise Zeile unter dem Preis (Artikelliste, Pipo
       26.09.2026, Makro preisbasis). Die gefuellte Pille darueber bleibt fuer
       Tabellen und Vorschlagsseiten; in der Artikelliste stand sie als gruene
       Blase mit einer zweiten Zeile „ab 20 kg" darunter und machte jede
       Kachel unruhig. Hier ist sie EINE graue Zeile, `display:block`, damit
       sie unter dem Preis steht und nicht daneben. Die Preisart erkennt man
       nur noch am kleinen Punkt davor; seine Toene sind dieselben Tokens wie
       die der Pille, keine zweite Farbwelt. Ohne Preisart-Klasse (der Satz
       „kein gültiger Einkaufspreis") gibt es keinen Punkt. --- */
body.wawi .preisbasis{display:block;font-size:var(--s12);line-height:1.35;
  color:var(--muted);font-weight:400}
/* Der Ton kommt ueber --punkt und nicht ueber eine eigene background-Regel
   je Preisart: die Grundregel traegt den Attributselektor und waere damit
   spezifischer als jede einfache Klassenregel, die Punkte blieben grau
   (Sichtprobe 26.09.2026). */
body.wawi .preisbasis[class*="preisbasis-"]::before{content:"";display:inline-block;
  width:6px;height:6px;border-radius:50%;margin-right:var(--a1);vertical-align:middle;
  background:var(--punkt,var(--line-stark))}
body.wawi .preisbasis-laden{--punkt:var(--accent)}
body.wawi :is(.preisbasis-b2b,.preisbasis-staffel,.preisbasis-oem){--punkt:var(--korni)}
body.wawi .preisbasis-aktion{--punkt:var(--warn)}
body.wawi .preisbasis-rechnung{--punkt:var(--collabo)}

/* --- Kopfzeile einer klappbaren Karte (Makro klappkarte). Bewusst NICHT
       `.blockkopf`: der zieht eine Trennlinie ueber die volle Breite, die
       mitten im Kartenrahmen haengen wuerde. Das Makro setzt seinen
       Kurzhinweis als `.mut`; hier verliert er nur das Gewicht der
       Kopfzeile. --- */
summary.kartenkopf{cursor:pointer;font-family:var(--f-head);font-weight:600;font-size:var(--s15)}
summary.kartenkopf .mut{font-weight:400}

/* --- Die Stueckangabe „(120 g/Stk)" hinter einem Artikelnamen (Makro
       stueckangabe). Sie trug bis E6 den Namen `hinweis` und lief damit ueber
       den Rueckbau des Toasts; jetzt hat sie einen eigenen Namen, den auch
       Flos truck.css kennt. Aussehen wie `.mut`: ein leiser Beisatz. --- */
.stueck{color:var(--muted)}

/* --- Bargeld (BAUPLAN-aufraeumen-bargeld, Schritte H und I). Je offene
       Uebergabe von Flo eine Zeile mit Datum, vorbelegtem Betrag und dem
       Knopf Erhalten, auf der Uebersicht und auf /bargeld gleich. Eine Zeile
       ist ein eigenes Formular (ein Formular kann keine Tabellenzeile
       umschliessen), deshalb Flex mit Umbruch statt Tabelle: am Handy rutscht
       der Knopf unter das Feld, statt die Karte zu sprengen (Regel aus dem
       Tabellen-Standard: flex ohne flex-wrap sprengt die Karte). --- */
.bargeld-summe{margin:var(--a1) 0 var(--a2)}
.bargeld-zeile{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--a2) var(--a3);
  padding:var(--a2) 0;border-top:1px solid var(--line)}
.bargeld-datum{min-width:11rem;align-self:center}
.bargeld-betrag{display:flex;flex-direction:column;gap:2px}
body.wawi .bargeld-betrag input{width:8rem}
.bargeld-kopfzahl{font-family:var(--f-head);font-weight:700;font-size:var(--s24);margin:var(--a1) 0}
body.wawi .bargeld-storno textarea{width:100%;max-width:26rem}
.bargeld-weg{text-decoration:line-through}
