/* ▸§1354 Kaskaden-Schicht: gesamter Bestand in EINER Schicht (Schritt 3a) — Fachschichten folgen blockweise */
@layer werte, grund, bausteine, raster, module, schweben, zustaende;   /* ▸§1356 Reihenfolge: spaeter schlaegt frueher */
@layer werte {


/* ▸N6 */

:root {
  --ts-aw-z:         10900;            /* §4707 hauseigene Auswahlliste über allen Dialogebenen (ovl3 10605, Tooltip 10800) */
  --ts-aw-max-h:     320px;
  /* §3173 Pruefer PHANTOM: Variablen, die nur mit Rueckfallwert benutzt wurden, mit genau diesem Wert deklariert (Optik unveraendert) */
  --fen-sp: 3; --ts-luft-s: 6px; --ts-schrift-klein: 11px; --ts-mono: monospace; --ts-sel-bg: rgba(0,120,212,.12);
  --es-haken-max: 260px;   /* §3170 Hoehe einer Hakenliste in den Einstellungen */
  /* ▸N7 */
  color-scheme: light;   /* §3003 (Joerg 14.10. 10:02): die WaWi ist IMMER hell — auch eingebettete Mails (iframe erbt prefers-color-scheme vom Rahmen), kein Dunkelmodus aus System/Browser */
  --ts-tab-fs: 13px;
  --ts-tab-th-pad: 6px 8px;   /* Kopfzeilen-Padding aller Tabellen */
  --ts-tab-td-pad: 4px 8px;   /* Zellen-Padding aller Tabellen */
  --ts-tab-td-h: 22px;        /* Zeilenhoehe aller Tabellen */
  /* ▸N8 §722 */
  --ts-btn-h:   26px;   /* ▸N9 §1316 */
  --ts-btn-h-klein: 22px; --ts-btn-h-mini: 20px; --ts-btn-h-gross: 32px;   /* §1532 Knopfhoehen-Leiter: klein = in Tabellenzeilen, Standard 26, gross = Anmeldung */
  --ts-btn-w:   180px; --ts-btn-q: 26px;   /* ▸N10 §724 */
  --ts-btn-gap: 4px;
  --ts-feld-h:  28px;   /* ▸N11 §735c */
  --ts-kachel-pad: 9px;   /* ▸N12 §724 K-352 */
  /* ▸N13 §709 */
  --ts-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7'%3E%3Cpath d='M1 1.5 5 5.5 9 1.5' fill='none' stroke='%238a8a86' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  /* ▸N14 §1317 */
  --ts-kalender: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Crect x='1' y='2' width='10' height='9' rx='1.5' fill='none' stroke='%238a8a86' stroke-width='1.2'/%3E%3Cpath d='M1 4.5h10M3.5 1v2M8.5 1v2' stroke='%238a8a86' stroke-width='1.2' stroke-linecap='round'/%3E%3C/svg%3E");
  --ts-chevron-w: 10px; --ts-chevron-h: 7px; --ts-feldsymbol: 12px;   /* §1317 Symbolmasse */
  --ts-lupe:    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Ccircle cx='5' cy='5' r='3.6' fill='none' stroke='%238a8a86' stroke-width='1.5'/%3E%3Cpath d='M7.7 7.7 11 11' stroke='%238a8a86' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
  --ts-tab-th-h: 26px;        /* ▸N15 */
  /* ▸N16 */
  /* ▸N17 */
  --such-w:        var(--dlg-w-voll);   /* §1391 Stufe voll */
  --such-h:         var(--dlg-h-voll);   /* §1391 Stufe voll */
  --such-w-max:      97vw;
  --such-h-max:      94vh;
  --such-col:       var(--ts-opt-w);   /* ▸N18 §723 */
  --such-gap:        10px;   /* Abstand zwischen den Kacheln      */
  --ts-kachel-gap: 10px;   /* ▸N19 §1318 */    /* ▸N20 */
  --such-pad:        var(--ts-kachel-pad);   /* ▸N21 §724 */   /* §723b: = --ds-m, als Zahl aus demselben Grund (Scope) */   /* ▸N22 §723 */   /* Innenabstand des Rasters          */
  --such-btn-h:      var(--ts-btn-h);   /* §722 */   /* Button-Hoehe (= .obtn-Standard)   */
  --such-btn-r:       6px;   /* Radius Buttons/Felder             */
  --such-btn-fs:     12px;   /* Button-Schrift                    */
  --such-btn-fw:      600;
  --such-fld-h:      30px;   /* Suchfeld-Hoehe                    */
  --such-bd:      var(--ts-line);   /* Rahmen Buttons/Felder             */
  --ts-dis-bg:   #ffffff;   /* ▸N23 */
  --ts-dis-fg:   #b3b1aa;   /* der nicht gewaehlten Suchfilter (weiss, heller Rahmen, */
  --ts-dis-bd:   #dddcd6;   /* graue Schrift). Gilt fuer ALLE disabled-Buttons.       */
  /* ▸N24 §687d §687s §687k §611z */
  --ts-pos-teil:      #082D52;   /* teilweise reserviert / uebernommen  */
  --ts-pos-teil-erl:  #2f74b0;
  --ts-pos-alt:       #2A2463;   /* Alternativposition (Anzahl 0)       */
  --ts-pos-alt-erl:   #6A61C4;
  /* ▸N25 §687r §687k §687n */
  /* ▸N26 §687s */
  --ts-pos-dl:        #054031;   /* Dienstleistung, nicht lagergefuehrt */
  --ts-pos-dl-erl:    #238063;
  --ts-pos-nlief:     #452605;   /* Artikel nicht lieferbar             */
  --ts-pos-nlief-erl: #96692A;
  --ts-gedaempft: #6b6b6b;   /* ▸N27 §805 §798 §797 · §1526: #767676 -> #6b6b6b, damit gedaempfter Text auf Beige (#f0efea) 4,63:1 statt 3,95:1 erreicht (Mindestwert 4,5:1 fuer kleine Schrift) */
  --ts-pos-grau: var(--ts-gedaempft);   /* §797: Alias, war #5f5e68 */   /* ▸N28 §611v §611z §687 */
  /* ▸N29 §612 */
  /* ▸N30 §685 §612 §684 */
  --fz-lbl-w:     190px;
  --lf-lbl-w:     130px;   /* §2605 Kontakt-Dialog Lieferant */
  --such-bd-h:    #b9b8b2;   /* Rahmen bei Hover                  */
  --such-bd-box:  #e0e0e0;   /* Rahmen der Kacheln                */
  --such-hover:   var(--ts-flaeche);   /* §804: Alias */
  --such-sel:     var(--ds-auswahl);   /* markierte Zeile                   */
  --such-foot:    #003FFD;   /* Fusszeile / Filterhinweis (Akzent-Blau, 06.08.) */
  --such-muted:   #6b6a65;

  /* ▸N31 */
  --ts-sec-bg:      #18181B;          /* Panel-Kopf: TS-Ink (schwarz) */
  --ts-sec-fg:      #ffffff;          /* Kopf-Schrift weiß */
  --ts-sec-fg-muted: #e3e3de;   /* ▸N32 §1262 */
  --ts-pdf-bg: #525659;         /* ▸N33 §1262 */
  --ts-panel-bg:    #ffffff;          /* Panel-Fläche weiß */
  --ts-opt-w:       200px;   /* ▸N34 §724 */   /* ▸N35 §723b */   /* ▸N36 §723 */
  --es-toc-w:        250px;            /* ▸N37 §428 */
  --hc-sp-name:      220px;            /* §4646 Liste: Name · Angaben (füllt) · Läuft auf · Geändert */
  --hc-sp-lauf:      130px;
  --hc-sp-datum:     130px;
  --hc-toc-w:        290px;            /* §4646 Messung 17:12: längster Bereich „Entra-App-Registrierung“ 224 px + Pille passte nicht in --es-toc-w (Text 224 in 199) */
  --hc-detail-w:     420px;            /* §4645 homeCENTER: Kachel Einzelheiten (Maßvorlage 1920×822: Bereiche 250 · Liste füllt · Einzelheiten 420) */
  --ts-menu-w:      170px;            /* ▸N38 */
 --ts-bar-h:       52px;             /* §4073 Hoehe der oberen Leiste (.app-bar) */
 --ts-griff-w:     18px;             /* §4073 Streifen links fuer den Menue-Griff (Shell D) */
 --ts-shell-rand:  8px;              /* §4073 Rand der Shell D rechts/oben/unten */
  --ts-panel-bd:    #e2e2dc;          /* TS-Rahmen (hell) */
  --ts-field-bg:    #ffffff;          /* Eingabefeld weiß */
  --ts-field-ro:    var(--ts-flaeche);   /* §804: Alias */          /* readonly/disabled: dezentes TS-Beige */
  /* ▸N39 §611s */
  --ts-ro-fg:       var(--ts-gedaempft);   /* §797: Alias, war #666 (Ansichtsmodus-Text) */
  /* ▸N40 §697 §692 */
  --ts-field-focus: #ffffff;
  --ts-edit-bd:     var(--ts-line);          /* ▸N41 */

  /* ▸N42 */
  --ts-ink:          #18181B;          /* TS-Ink (schwarz) */
  --ts-ink-muted:    var(--ts-gedaempft);   /* ▸N43 §797 */
  --ts-ink-hover:    #3D3D3A;              /* ▸N44 §797 */          /* TS-Ink gedämpft (Hover dunkel) */
  /* ▸N45 */
  --ts-akzent:      #003FFD;          /* Akzent (Logo-Blau)   */
  --ts-akzent-dark: #0030C0;          /* Akzent Hover/Border  */
  /* ▸N46 §804 */
  --ts-trenn:        #e4e3de;   /* ▸N47 */
  --ts-line-hover:   #b9b8b2;   /* Rahmen im Hover (Knoepfe, Kacheln) */
  --ts-flaeche:      #f0efea;   /* ▸N48 */
  --ts-hover-bg:     #faf9f6;   /* Zeilen-Hover */
  --ts-meld-warn-bg: #fdf3d6; --ts-meld-warn-fg: #806500; --ts-meld-warn-bd: #ecd9a0;   /* Warnhinweis (gelb) · §1527: fg #8a6d00 -> #806500 (auf der Zeilenmarkierung #EDEBE4 4,12 -> 4,66:1; auf Weiss 5,56, auf Beige 4,83) */
  --ts-red:          #B01020;          /* Warn-/Negativ-Rot (Semantik, NICHT Akzent) */
  --ts-link:         #1d4ed8;          /* ▸N49 */
  --ts-red-dark:     #8A0D18;          /* TS-Rot dunkel (Hover/Rahmen) */

  /* ▸N50 */
  --ts-head-fs:     13px;
  --ts-head-fw:     700;
  --ts-head-pad:    6px 12px;
  --ts-head-ls:     .02em;

  /* ▸N51 §426 */

  /*DS-START*/ /* ▸N74 §661 */
  --ds-xs: 4px;
  --ds-s: 8px;
  --ds-m: 12px;
  --ds-l: 16px;
  --ds-xl: 24px;
  --ds-zeile: 26px;
  --ds-tabellenzeile: 22px;
  --ds-feld: 28px;   /* §1260 (Joerg): 30 -> 28, das Gebaute ist die Regel */
  --ds-radius: 6px;
  --ds-rahmen: 1px;
  --ds-kachel-gap: 10px;   /* §1318 */
  --ds-optionen-breite: 200px;
--chip-sp: 260px;   /* §3734 Mindestbreite einer Chip-Spalte im Ketten-Raster (Baustein kette-z) — gemessen 28.10.: bei 220 (5 Spalten à 226 px) Namen wie „Katharina H…“ 190 px in 126 px gekürzt → 4 Spalten */
  --ds-checkbox: 15px;
  --ds-schatten-dialog: 0 20px 60px rgba(0,0,0,.3);   /* ▸N75 §1259 §661 */
  --ds-fs-kopf: 13px;
  --ds-fw-kopf: 700;
  --ds-fs-text: 12px;
  --ds-fw-text: 400;
  --ds-fs-hinweis: 11px;   /* §1260 (Joerg): 11.5 -> 11 */
  --ds-fw-hinweis: 400;
  --ds-fs-knopf: 12px;
  --ds-fw-knopf: 600;
  --ds-tinte: var(--ts-ink);
  --ds-tinte-gedaempft: var(--ts-ink-muted);
  --ds-akzent: var(--ts-akzent);
  --ds-akzent-dunkel: var(--ts-akzent-dark);
  --ds-rot: var(--ts-red);
  --ds-rot-dunkel: var(--ts-red-dark);
  --ds-flaeche: var(--ts-panel-bg);
  --ds-flaeche-ro: var(--ts-field-ro);
  --ds-feld-bg: #fff;
  --ds-flaeche-fokus: var(--ts-field-focus);
  --ds-rahmen-hover: var(--such-bd-h);
  --ds-trennlinie: var(--such-line);
  --ds-hinweis: var(--ts-pos-grau);
  --ds-inaktiv-bg: var(--ts-dis-bg);
  --ds-inaktiv-fg: var(--ts-dis-fg);
  --ds-inaktiv-bd: var(--ts-dis-bd);
  --ds-auswahl: #EDEBE4;
  --dlg-w-schmal: 480px;
  /* ▸N76 §1307 R-4.14 */
  --dlg-w-mittel: 720px;   /* ▸N77 §1307 */
  --dlg-w-breit: 900px;    /* §1307: Auswahl-/Kurzlisten — vorher --dlg-w-mittel */
  --dlg-w-gross: 1400px;   /* ▸N78 §1307 R-4.13 */
  /* ▸N79 §1308 §1088 */
  --dlg-h-schmal: 300px;
  --dlg-h-mittel: 520px;
  --dlg-h-breit:  620px;
  --dlg-h-gross:  740px;
  --dlg-w-weit:   1150px;   /* §1391 Stufe weit (zwischen breit und gross) */
  --dlg-h-weit:   680px;
  --dlg-w-voll:   1400px;   /* §1391 Stufe voll = Suchfenster */
  --dlg-h-voll:   860px;
  /* ▸N80 §1261 */
  --mw-lgp-scroll: var(--fb-320);    /* Lagerprotokoll-Dialog: Scrollhoehe */
  --mw-datepick: var(--ts-fb-l);      /* Datumswaehler-Feld in Dialogen (TT.MM.JJJJ) */
  --mw-bz-links: var(--fb-320);   /* §1532: war 300px */      /* Bezahlt-Dialog: linke Spalte (08.08. v2) */
  --mw-bz-lbl: var(--fb-120);        /* Bezahlt: Labelspalte */
  --mw-bz-min: var(--fb-140);   /* §1532: war 150px */        /* Bezahlt: Mindestbreite Feldspalte */
  --mw-bz-ro: var(--fb-140);         /* Bezahlt: Anzeigefeld rechts */
  --mw-bz-ec: var(--fb-140);   /* §1532: war 149px */         /* Bezahlt: EC-Tabelle Scrollhoehe (10 Zeilen) */
  --mw-bz-feld: var(--ts-fb-xl);       /* ▸N81 */
  --mw-eco-min: var(--fb-90);        /* ecoDMS-Abgleich: Tabellen-Mindesthoehe */
  --mw-eco-oben: var(--fb-120);      /* ecoDMS-Abgleich: obere Tabelle */
  --mw-eco-geld: var(--fb-120);   /* §1532: war 118px */      /* ecoDMS-Abgleich: Geldspalte */
  --mw-tsmd-ta: var(--fb-140);       /* Memo-Editor: Textfeldhoehe */
  --mw-scroll-300: var(--fb-320);   /* §1532: war 300px */    /* Dialog-Scrollflaeche 300 */
  --mw-scroll-340: var(--fb-320);   /* §1532: war 340px */    /* Dialog-Scrollflaeche 340 */
  --mw-36: var(--fb-36); --mw-50: var(--fb-52);   /* §1532: war 50px */ /* §3994 --mw-90 entfallen (mnw90 ohne Nutzung) */   /* Mindestbreiten-Hilfsklassen mnw36/50 */        /* Zahlungseingang: Labelspalte */   /* Zahlungseingang: Felder */
  --mw-kette-karte: var(--fb-320); --mw-kette-min: var(--fb-270);   /* §1532: war 280px */ --mw-kette-w: var(--fb-140);   /* §1532: war 150px */   /* Einstellungen TSE-Kette */
  --mw-datei: var(--fb-420);         /* Dialogleiste: Dateifeld */
  --mw-uv-kz: var(--fb-64);          /* UStVA: Kennzahlspalte */
  --mw-jt-m: var(--fb-90);   /* §1532: war 84px */   /* ▸N82 §1314 K-165 */ --mw-jt-lbl: var(--fb-170);   /* §2765 gemessen: "Kz 81 BMG 19 %", "Auslandsbelege o. USt" gekuerzt bei 120 — Tabelle 1: 170 + 12x90 = 1250 px passt */   /* §1532: war 130px */ --mw-jt-kto: var(--fb-52);   /* §1532: war 56px */ --mw-jt-kname: var(--fb-140);   /* §1532: war 146px */   /* ▸N83 §1314 */ --mw-jt-sum: var(--fb-110);   /* §1532: war 104px */   /* Jahrestabelle (Summe der Spalten) */
  --mw-bk-alle: var(--fb-420);       /* Bank: Liste alle Konten Scrollhoehe */
  --mw-bk-num: var(--fb-90);         /* Bank: Zahlenspalte */
  --mw-bk-datum: var(--ts-fb-l); --mw-bk-status: var(--fb-220);   /* §1532: Zustand 200 -> 220 · §4851: --mw-bk-konto entfällt (Konto-Auswahlliste durch Kontokarten ersetzt) */ --bk-karte-min: 260px; --bk-karte-h: 74px; --bk-karte-fs: 17px; --bk-karte-lh: 22px;   /* §4851 Kontokarten nach Skizze ks1 v2 */ --mw-bk-richtung: var(--fb-170);
  --mw-bk-zn: var(--fb-18);          /* Bank: Zeilennummern-Kaestchen */
  --mw-pr-txt: var(--fb-320); --mw-pr-vorgang: var(--fb-170);   /* §1532: war 190px */ --mw-pr-detsp: var(--fb-170);   /* Pruefdialog Spalten */
  --mw-bk-abr-txt: var(--fb-320);   /* §1532: war 340px */    /* Kartenabrechnung: Textspalte */
  --dlg-h-max: 94vh;
  --dlg-oben: 3vh;
  --dlg-polster: 16px;
  --dlg-zone: 12px;
  --dlg-gap: 8px;
  --dlg-h-kopf: 40px;
  --dlg-h-leiste: 26px;
  --dlg-h-status: 20px;
  --dlg-h-fuss: 26px;

  /*DS-ENDE*/
  /* §1307/§1308 breit */
  /* ▸N391 */


  /* ▸N413 */
  /* ▸N414 */
  /* §1532 BAUKASTEN — FELDBREITEN-LEITER (Joerg 23.09.2026: alle Einzelwerte auf die Leiter, eine einheitliche Struktur).
     13 Stufen; jede Breite in der WaWi ist eine dieser Stufen. Neue Breiten ausserhalb der Leiter meldet css_pruefen. */
  /* §3634 DIALOG-MASSE: bisher nackte Pixel in Dialogregeln (Pruefer DS) — Werte unveraendert, nur benannt */
  --as-html-h: 440px; --dlg-liste-h: 260px; --dlg-liste-h-gross: 420px; --dlg-zeile-h: 34px; --fz-text-2z: 54px; --fz-text-3z: 72px; --fz-text-pad: 5px; --fz-zeilen-gap: 7px; --pm-feld-max: 160px; --tc-pre-h: 300px; --ts-fs-bcv: 19px; --ts-fs-bcv-qr: 14px; --ts-fs-ico: 18px; --ts-pille-lh: 18px; --ts-pille-r: 14px; --tsmd-body-h: 240px; --tsmd-body-min: 160px; --tsst-blatt-o: 60px; --tsst-buehne-b: 160px; --tsst-buehne-h: 150px; --tsst-ring-d: 44px; --tsst-ring-x: 58px; --tsst-siegel-x: 78px; --tsst-siegel-y: 62px; --tsst-svg-b: 120px; --tsst-svg-h: 90px; --tc-dienst-b: 260px; --nw-einzug: 22px;
  /* §4164/§4165 Reparatur-/Nachtrag-Assistent (Prüfer DS: Dialogmaße benannt) */
  --rp-ass-frage-b: 360px; --rp-ass-fehler-h: 96px; --rp-bericht-min-h: 160px; --rp-bericht-ta-h: 120px; --nt-prev-nr-b: 40px; --nt-prev-sum-b: 100px;
  --fb-18: 18px; --fb-36: 36px; --fb-52: 52px; --fb-64: 64px; --fb-90: 90px; --fb-110: 110px; --fb-120: 120px; --fb-140: 140px; --fb-170: 170px; --fb-220: 220px; --fb-270: 270px; --fb-320: 320px; --fb-420: 420px;
  --ts-fb-s: var(--fb-64); --ts-fb-m: var(--fb-90); --ts-fb-l: var(--fb-110); --ts-fb-xl: var(--fb-120); --ts-fb-2xl: var(--fb-170); --ts-fb-3xl: var(--fb-320);   /* §1532: Kurznamen bleiben, zeigen auf die Leiter */

  --ts-datum-w: var(--ts-fb-2xl);

  /* ▸N512 */
  /* ▸N513 */
  /* ▸N514 R-1.4 */
  /* ▸N515 §630 §276 */
  /* ▸N516 */
  /* ▸N517 §630 §276 *//* ▸N518 */
  /* ▸N519 */
  --wiz-w:min(var(--dlg-w-gross),96vw); --wiz-h:min(var(--dlg-h-gross),92vh); /* §4133 (Jörg 01.11. 13:23): ALLE Assistentenfenster eine Stufe — gross 1400x740 (Artikel-Assistent war weit, RMA-Assistent gross); §1391 */

  /* ▸N534 */
  --pos-num-w:92px;

  /* ▸N663 */
  /* ▸N664 */
  --bs-col-datum:88px; --bs-col-nr:80px; --bs-col-name:300px;
  --bs-col-betrag:90px; --bs-col-skr:76px; --bs-col-zahl:96px; --bs-col-quelle:76px;

  /* ▸N802 K-112 */
  --ts-liste-h: 320px;

  /* ▸N873 */

  /* ▸N904 */
  --such-line: var(--ts-trenn);

  /* ▸N956 */
  --ts-font: system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;

  /* ▸N957 */
  --ts-dim:  var(--ts-gedaempft);   /* §797: Alias, war #8a8578 */
  --ts-text: var(--ts-ink);
  --ts-ok:    #2E7D32;
  --ts-ok-text: #1E6A23;   /* §3772 Textgruen auf Flaechen (gemessen: #2E7D32 auf #EDEBE4 = 4,30:1 < 4,5) */
  /* §3627 Rubrik-Kennzeichen comCENTER (pe-art-*) und ecoDMS-Hinweise — vorher nackte Hexwerte in den Regeln (§667), Werte unveraendert */
  --ts-rub-rechnung-fg: #9a3412; --ts-rub-rechnung-bd: #f0b38a; --ts-rub-rechnung-bg: #fff3ea;
  --ts-rub-auftrag-fg:  #1e4f8a; --ts-rub-auftrag-bd:  #9cbde6; --ts-rub-auftrag-bg:  #eef4fc;
  --ts-rub-versand-fg:  #22663b; --ts-rub-versand-bd:  #9fd3b0; --ts-rub-versand-bg:  #edf8f1;
  --ts-rub-lizenz-fg:   #5b21b6; --ts-rub-lizenz-bd:   #c4b5fd; --ts-rub-lizenz-bg:   #f5f3ff;
  --ts-eco-warn-fg: #9a5a10; --ts-eco-warn-bg: #fbe3c9; --ts-eco-pruef-bg: #f3d9d9;
  --ts-warn:  #B26A00;   /* §1684: Hinweis (z. B. KI-Vorschlag mit Pruefhinweis) — Semantik zwischen --ts-ok und --ts-red */
  --ts-line: #d4d4cf;
  /* §3197 Sendungs-Stufenanzeige (Angekündigt · Versendet · Unterwegs · In Zustellung · Zugestellt) */
  --sd-stufe-b: 18px;
  --sd-stufe-h: 10px;
  --sd-stufe-gap: 2px;
  --sd-stufe-r: 2px;
  --sd-leiste-h: 6px;

  /* ▸N969 R-2.3 */
  /* ▸N970 §152b */
  --ts-sp-pad: 20px;

  /* ▸N973 §218 R-2.11 §235 */
  --ts-sp-txt-breit: 220px; --ts-sp-flag: 24px; --ts-sp-flag-wort: 56px;

  /* ▸N977 */
  /* ▸N978 §772 */
  --ts-sp-kennung: 132px;

  --ts-sp-typ: 104px;

  --ts-sp-anz-klein: 28px;

  --ts-sp-vorschlag: 360px;

  /* ▸N1020 R-2.10 R-2.11 §218 */
  --ts-sp-txt: 140px;
  /* ▸N1021 */
  --ts-sp-bem: 120px;   /* §2270 (Joerg): Bemerkung schmaler — voller Text im Editor/Tooltip; Platz fuer die Produktbezeichnung */

  /* ▸N1025 R-9.5 §235 */
  --ts-sp-kontakt: 170px;

  /* ▸N1027 R-2.9 */
  /* ▸N1028 R-7.10 */
  --ts-sp-tel: 240px;

  /* ▸N1029 K-44 R-2.9 */
  --ts-sp-ruf:   132px;   /* §2766 Rufnummer abgeschnitten (rma: 124 px Text in 121 px) */
  --ts-sp-apart: 170px;   /* ▸N1030 */
  --ts-sp-email: 240px;   /* ▸N1031 */
  --ts-sp-abt:   130px;   /* ▸N1032 */

  /* ▸N1034 §70 R-2.9 */
  --ts-sp-kategorie:  84px;  /* ▸N1035 */
  --ts-sp-geld-lang: 132px;  /* ▸N1036 */
  --ts-sp-anz-kopf:   66px;  /* ▸N1037 */
  --ts-sp-anz-lang:  104px;  /* ▸N1038 */
  --ts-sp-zeitraum:  234px;  /* ▸N1039 */

  /* ▸N1308 §790 R-1.1 */
  --ts-shell-bg: #f4f4f0;
  /* ▸N1309 §667 */
  --ts-meld-err-bg: #fdecea; --ts-meld-err-fg: #c62828; --ts-meld-err-bd: #f5c6cb;
  --ts-meld-ok-bg: #e8f5e9;  --ts-meld-ok-fg: #1b5e20;  --ts-meld-ok-bd: #c8e6c9;
  --ts-meld-info-bg: #eef6ff; --ts-meld-info-fg: #1565c0; --ts-meld-info-bd: #bbdefb;
  --ts-code-bg: #fffbe8; --ts-code-bd: #ecd9a0;
}




/* ▸N511 */
























/* ▸N1024 R-9.5 */


/* ▸N1026 §235 */








} /* Ende @layer werte */
/* ▸§1358 grund: nackte Elementregeln (Wurzel + Element) — liegen UNTER bausteine */
@layer grund {
/* §1872 (Joerg-Freigabe 30.09.): [hidden] verbirgt IMMER und UEBERALL. Vorher nur in .tspro-ui/.ts-dlg — ausserhalb (Assistent #m-wiz,
   am <body> haengende Listen) ueberstimmte jede display-Regel das Attribut: geschlossene Elemente blieben sichtbar (§1864, K-184/K-400).
   Schicht grund + !important: bei wichtigen Deklarationen gewinnt die FRUEHERE Schicht (K-378) — damit schlaegt hidden jede display-Regel
   der Module. Geprueft 30.09.: keine Regel und kein Skript zeigt ein hidden-Element absichtlich. */
[hidden] { display: none !important; }

   /* §698 */
/* ▸N67 §692 §717b K-317 */

/* Rechte Optionen-Spalte */   /* analog obtn.red (Hauptaktion) — 06.08. */

/* Positions-Tabelle (JE: helle Köpfe, dezente Linien) */
/* ▸N68 */
.tspro-ui table, .je-such table, .be-ov table, .ts-ovl table {
  font-size: var(--ts-tab-fs); border-collapse: collapse; }

/* ▸N69 */
.tspro-ui table th, .je-such table th, .be-ov table th, .ts-ovl table th {
  background: var(--ts-flaeche); border-bottom: 1px solid var(--ts-panel-bd);
  padding: var(--ts-tab-th-pad); font-weight: 700; text-align: left; }

.tspro-ui table td, .je-such table td, .be-ov table td, .ts-ovl table td {
  border-bottom: 1px solid var(--ts-trenn); padding: var(--ts-tab-td-pad);
  height: var(--ts-tab-td-h); }

/* ▸N127 */

/* ==== ARTIKEL-MODUL (ausgelagert aus artikel.php) ==== */
/* ▸N128 */

/* Embed: kein Body-Rand, füllt den iframe */
html, body { margin: 0; padding: 0; background: var(--ts-panel-bg);
  /* ▸N129 */
  font-family: var(--ts-font);
  color: var(--ts-ink); }

/* ▸N714 §814 */

.ts-dlg table{ font-size: var(--ts-tab-fs); border-collapse: collapse; width: 100%; }

.ts-dlg table th{ background: var(--ts-flaeche); border-bottom: 1px solid var(--ts-panel-bd);
  padding: var(--ts-tab-th-pad); font-weight: 700; text-align: left;
  position: sticky; top: 0; z-index: 1; }

.ts-dlg table td{ border-bottom: 1px solid var(--ts-trenn); padding: var(--ts-tab-td-pad);
  height: var(--ts-tab-td-h); }

/* ▸N755 */
button::before { margin-right: .45em; }
} /* Ende @layer grund */
@layer bausteine {
/* ▸N1 */
.tspro-ui { font-family: inherit; --ts-kbtn-w: 66px; --wv-unten-cols: 4.2fr 0.8fr; }   /* §1531: Variablen aus drei weiteren .tspro-ui-Bloecken (N639/N641/N643) hierher; 3.2fr 1fr war ueberschrieben */
/* ▸N2 */
.ts-ovl { font-family: var(--ts-font); }

/* ▸N3 */
main.app-main:has(> .tspro-ui),
/* ▸N4 *//* ▸N5 */.tspro-ui         { display: flex; flex-direction: column; flex: 1 1 auto;
                       min-height: 0; box-sizing: border-box; }

/* ▸N52 */

/* Schmale Kopfzeile — minimale Höhe *//* API-Key-Status */
/* Mitarbeiter-Auswahl in der Topbar *//* Mitarbeiter-Popup */
.ts-ovl.ts-ma-overlay      { display: none; position: fixed; inset: 0; z-index: 9999;
                       background: rgba(0,0,0,.4); align-items: flex-start; justify-content: center;
                       /* ▸N53 */
                       font-family: var(--ts-font);
                       color: var(--ts-ink); }
/* ▸N54 */
/* ▸N55 */
.ts-ovl .ass-row {
  padding: 6px 8px;
  cursor: pointer;
  border-bottom: 1px solid var(--ts-panel-bd);
  font-size: 13px;
  line-height: 1.45;
}
.ts-ovl .ass-row:last-child { border-bottom: 0; }   /* §698 */

.ts-ovl .ts-ma-box          { background: var(--ts-panel-bg); border-radius: 12px; width: var(--dlg-w-schmal); max-width: 92vw; height: var(--dlg-h-schmal); /* §1308 */
                       margin-top: var(--dlg-oben); max-height: 70vh; display: flex; flex-direction: column;
                       box-shadow: var(--ds-schatten-dialog); overflow: hidden; }
.ts-ovl .ts-ma-head         { display: flex; align-items: center; justify-content: space-between;
                       background: var(--ts-ink); color: var(--ts-sec-fg); 
                         }
/* ▸N56 §839 §796 */
/* ▸N57 *//* ▸N58 *//* SHELL: Menü links + Inhalt (iframe) rechts */
.tspro-ui .ts-shell           { display: flex; gap: 16px; align-items: stretch;
                       flex: 1 1 auto; min-height: 0; }
.tspro-ui .ts-menu-col        { position: relative; z-index: 1; display: flex;
                       flex-direction: column; align-items: stretch; gap: 4px;
                       width: var(--ts-menu-w); flex: 0 0 var(--ts-menu-w);
                       height: 100%; overflow-y: auto; overflow-x: hidden;
                       padding-right: 6px; }
/* dezente Scrollleiste fürs Menü */
.tspro-ui .ts-menu-col::-webkit-scrollbar       { width: 8px; }
.tspro-ui .ts-menu-col::-webkit-scrollbar-thumb { background: var(--ts-line); border-radius: 4px; }
.tspro-ui .ts-menu-col::-webkit-scrollbar-track { background: transparent; }
.tspro-ui .ts-content         { flex: 1 1 auto; position: relative;
                       height: 100%; min-height: 320px;
                       border: 1px solid var(--ts-panel-bd); border-radius: 10px; background: var(--ts-panel-bg);
                       overflow: hidden; }
.tspro-ui .ts-frame           { width: 100%; height: 100%; border: none; display: block; }

/* ▸N59 */
.tspro-ui .ts-leer            { position: absolute; inset: 0; display: flex; flex-direction: column;
                       align-items: center; justify-content: center; pointer-events: none;
                       user-select: none; text-align: center; }
.tspro-ui .ts-wz-firma        { font-size: 38px; font-weight: 800; letter-spacing: .01em;
                       color: var(--ts-sec-fg-muted); text-shadow: 1px 1px 0 #fff; max-width: 80%; line-height: 1.15; }
.tspro-ui .ts-wz-fil          { font-size: 19px; font-weight: 600; color: var(--ts-sec-fg-muted);
                       margin-top: 8px; letter-spacing: .04em; }.tspro-ui .ts-leer-hint       { margin-top: var(--ds-l); font-size: 14px; font-weight: 600; color: var(--ts-gedaempft); }
/* §4178 Link im Leerhinweis (Modul-Tor „Einstellungen › … öffnen“): .ts-leer ist pointer-events:none (Wasserzeichen) — Links darin klickbar */
.tspro-ui .ts-leer a          { pointer-events: auto; user-select: auto; color: var(--ts-akzent); }
.tspro-ui .ts-leer a:hover    { color: var(--ts-akzent-dark); }

/* ▸N60 */
.tspro-ui .fil-tile.aktiv      { background: var(--ts-akzent); border-color: var(--ts-akzent-dark); color: var(--ts-sec-fg); }
.tspro-ui .fil-tile.aktiv:hover{ background-color: var(--ts-akzent-dark); }   /* ▸N61 */

/* ▸N62 */
.tspro-ui .fil-tile            { display: flex; align-items: center; justify-content: flex-start;
                       box-sizing: border-box;
                       width: 100%; height: var(--ds-feld); padding: 0 8px; text-align: left;   /* 19.07.: 12->8 (schmaleres Menü) */
                       font-family: inherit; font-size: 12px;   /* 19.07.: 13->12 */
                       font-weight: 600; letter-spacing: .01em;
                       color: var(--ts-ink); text-decoration: none; line-height: 1;
                       border: 1px solid var(--ts-line); border-radius: 6px; background: var(--ts-panel-bg);
                       cursor: pointer; user-select: none; white-space: nowrap; overflow: hidden;
                       transition: transform .08s ease, background .12s ease, border-color .12s ease; }

/* Gruppen-Überschrift zwischen den Modulgruppen */
.tspro-ui .ts-gruppe-titel    { font-size: var(--ds-fs-hinweis); font-weight: 700; letter-spacing: .06em;
                       text-transform: uppercase; color: var(--ts-gedaempft);
                       margin: 12px 0 5px; padding-left: 2px; }
.tspro-ui .ts-gruppe-titel:first-child { margin-top: 0; }

/* (Wasserzeichen ist jetzt .ts-wz — siehe oben) */

/* ▸N63 */
/* Auswahl-Kopf (index.php) *//* ▸N64 */

/* ▸N65 */

/* ▸N66 */
.tspro-ui .fil-sec             { border: 1px solid var(--ts-panel-bd); border-radius: 10px;
                       background: var(--ts-panel-bg); margin-bottom: var(--ts-kachel-gap); overflow: hidden; }
.tspro-ui .fil-sec-head        { background: var(--ts-sec-bg); color: var(--ts-sec-fg);
                       font-size: var(--ts-head-fs); font-weight: var(--ts-head-fw);
                       padding: var(--ts-head-pad); letter-spacing: var(--ts-head-ls); }
.tspro-ui .fil-sec-body        { padding: var(--ds-m) var(--ds-l); }

/* 4-Spalten-Feldraster, Labels linksbündig (M5 §3991) */
.tspro-ui .fil-grid            { display: grid; grid-template-columns: max-content 1fr max-content 1fr;
                       gap: 8px 14px; align-items: center; }
.tspro-ui .fil-grid label      { text-align: left; white-space: nowrap; font-size: 13px; color: var(--ts-ink); font-weight: 600; }
.tspro-ui .fil-field           { height: var(--ds-feld); padding: 0 8px; box-sizing: border-box;
                       border: 1px solid var(--ts-panel-bd); border-radius: 6px;
                       background: var(--ts-field-bg); font-family: inherit; font-size: 13px; }
.bel-tbl th.r { text-align: center; }   /* 03.08.: Kopf nicht rechts (Jörg) */
.bel-tbl td.r { text-align: right; }
/* Schwarze Statusleiste unten mit Blätter-Navigation *//* ▸N70 *//* ▸N71 *//* ▸N72 */
/* ▸N73 §657b */
.ts-ovl .ts-setup-form      { padding: var(--ds-l); display: flex;   /* §1259: 14px -> Skala l */ flex-direction: column; overflow: auto; min-height: 0; }

/* ▸N84 §660 K-314 */
/* ▸N85 §661 */
/* ▸N86 §661 */
.dlg-leiste            { display: flex; align-items: center; flex-wrap: wrap; gap: var(--dlg-gap); min-height: var(--dlg-h-leiste); }
.dlg-leiste .dlg-rechts{ margin-left: auto; display: flex; align-items: center; gap: var(--dlg-gap); }   /* §2652 (Joerg: Ueberweisung "Art klebt an Zugang"): Abstand der rechten Leistenteile zentral, gleiche Variable wie .dlg-leiste */
.dlg-leiste .obtn { height: var(--ts-btn-h); }   /* §722 */
.dlg-leiste .ts-datum, .dlg-leiste input[type=text] { height: var(--ds-zeile); }
/* ▸N87 §1338 §1316 */
/* §1799 (Joerg 28.09.: "Statusleiste ueber der Knopfleiste fuer alle"): die Knopfleiste ist IMMER die unterste Zeile — die Statuszeile nimmt die volle
   Breite und steht als eigene Zeile darueber (vorher margin-right:auto = links NEBEN den Knoepfen). Der Fuss bricht ohnehin um (Z. .f flex-wrap). */
:is(.ts-dlg-box .f, .bc-main .fil-sec-body, #m-wiz #wiz-foot) > .dlg-status { display: flex;   /* §4143: auch der Artikel-Assistent (Jörg: §1799 gilt für alle, der Entwurf hatte die Regel nicht berücksichtigt) */ align-items: center; gap: var(--dlg-gap) var(--ds-l); flex: 0 0 100%; margin-right: 0; font-size: var(--ds-fs-text); color: var(--ts-dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
:is(.ts-dlg-box .f, .bc-main .fil-sec-body, #m-wiz #wiz-foot) > .dlg-status { min-height: var(--ds-zeile); }   /* §2723 (Joerg: "die Statusleiste soll nicht dynamisch eingeblendet werden — der Platz ist immer vorgesehen", §1316/§2059): auch LEER eine feste Zeile, das Fenster springt beim ersten Text nicht */
.ts-dlg-box .b > .dlg-status { display: block; width: 100%; font-size: var(--ds-fs-text); color: var(--ts-ink); }   /* im Rumpf: volle Breite, Inhalt bestimmt die Hoehe */
.dlg-status b          { font-weight: 700; }
.dlg-status .dlg-hinweis { margin: 0; }   /* ▸N88 */
.dlg-inhalt            { flex: 1 1 auto; min-height: 0; overflow: auto; margin-top: var(--ds-s); }
.dlg-inhalt:has(> .dlg-tbl-box) { display: flex; flex-direction: column; }   /* §1877: Dialogtabelle fuellt den Inhaltsbereich (Hausregel §1088 Fuellzeilen) — vorher blieb die Box so hoch wie ihr Inhalt */
.dlg-inhalt > .dlg-tbl-box { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.dlg-inhalt > .dlg-tbl-box > .tbl-scroll { flex: 1 1 auto; min-height: 0; overflow: auto; }   /* die Fuellzeilen fuellen bis zum Rand DIESES Rollbereichs (tsproFuellzeilen) */
.dlg-inhalt .rep td, .dlg-inhalt .dlg-tbl td { height: var(--ds-tabellenzeile); }
.dlg-inhalt .rep th, .dlg-inhalt .dlg-tbl th { height: var(--ds-zeile); }
.dlg-fuss              { display: flex; align-items: center; justify-content: flex-end; gap: var(--dlg-gap); flex-wrap: wrap;
                         margin-top: var(--dlg-zone); padding-top: var(--dlg-zone); min-height: var(--dlg-h-fuss); }   /* §1757 (Joerg 28.09.): keine Trennlinie ueber Knopfleisten */
.dlg-fuss .dlg-hinweis { margin-right: auto; }
.dlg-hinweis           { font-size: var(--ds-fs-hinweis); color: var(--ts-pos-grau); margin-top: var(--dlg-zone); }   /* ▸N89 */
.dlg-fuss.dlg-fuss-rand{ padding: 0 16px 16px; margin-top: 0; }
.kd-wrap .dlg-fuss-rand, .be-ov .dlg-fuss-rand { padding: 0 20px 16px; }   /* ▸N90 §660b */
.fz > textarea.v[rows="1"] { height: var(--ts-feld-h); min-height: var(--ts-feld-h); resize: none; overflow: hidden; }   /* §4046 einzeiliges Protokollfeld (Bemerkung intern Angebot/Auftrag/Wartungsvertrag): Hoehe wie ein Eingabefeld, voller Text im Textfenster */
.ts-memo-ov .dlg-fuss .ts-memo-art { margin-right: auto; display: inline-flex; align-items: center; gap: var(--ds-s); }   /* §4046 Auswahl ZB/AB links im Memo-Fuss, Knoepfe bleiben rechts */
.ts-memo-ov .dlg-fuss-rand { padding: 0 var(--ds-m) var(--ds-s); }   /* §660b: Memo-Fuß (war ts-memo-foot) */   /* ▸N91 §660b */   /* ▸N92 */
/* ▸N93 */
/* §4170: .ts-setup-lbl entfernt — letzter Nutzer war das alte RMA-Zuordnungsfenster (§4059), seit §4106 ohne Markup (Aufrufgraph: Waise) */
.ts-ovl .ts-setup-hint      { font-weight: 400; color: var(--ts-ink-muted);
                       font-size: 12px; line-height: 1.5; margin-top: 6px; }   /* 25.07. (Jörg): hatte KEINE Groesse -> erbte 16px */
.ts-ovl .ts-setup-hint code { font-family: monospace; background: var(--ts-flaeche); padding: 0 4px;
                       border-radius: var(--ds-xs); font-size: var(--ds-fs-hinweis); }   /* ▸N94 §611c */   /* ▸N95 */
/* §4170: .ts-setup-input (4 Regeln: Grund, date, #datev-ovl, :focus, §4058 Spaltenkind) entfernt — letzte Nutzer altes RMA-Zuordnungsfenster (§4059) und alte Reparaturmaske, beide seit §4106/§4164 ohne Markup (Aufrufgraph: Waise) */
/* ▸N96 §660 */

/* ▸N97 *//* ▸N98 */

/* ▸N99 */
.tspro-ui input.v:enabled,
.tspro-ui select.v:enabled,
.tspro-ui textarea.v:not([readonly]):not(:disabled),
.tspro-ui textarea:not([readonly]):not(:disabled),   /* ▸N100 */
.tspro-ui .v[contenteditable="true"] {
  background: var(--ts-panel-bg); border: 1px solid var(--ts-edit-bd); border-radius: 4px; outline: none;
}
/* ▸N101 */
.tspro-ui .v[contenteditable="true"] { display: block; height: auto; min-height: var(--ds-feld); box-sizing: border-box; padding: 3px 8px; line-height: 18px; white-space: nowrap; overflow: hidden; }.tspro-ui .obtn { height: var(--ts-btn-h);  padding: 0 var(--ds-s); gap: 6px; border: 1px solid var(--ts-line); border-radius: 6px; background: var(--ts-panel-bg); color: var(--ts-ink);
                     font-family: inherit; font-weight: 600; cursor: pointer; display: inline-flex;
                     align-items: center; justify-content: center; text-align: center; }
/* ▸N107 */
.tspro-ui .opt-col .obtn, .art-wrap .obtn { justify-content: flex-start; text-align: left; }
/* §3721 (Jörg 27.10. 21:36: „Buttons dürfen nicht zweizeilig sein — jedes Mal derselbe Fehler“): Knöpfe der Optionsspalte immer EINZEILIG; zu lange Beschriftung meldet der Prüfer KNOPFZEILE */
.tspro-ui .opt-col .obtn, .art-wrap .opt-col .obtn, .es-wrap .opt-col .obtn, .bib-wrap .opt-col .obtn { white-space: nowrap; }

/* ▸N108 K-42 */
.tspro-ui [hidden] { display: none !important; }
/* ▸N110 §794 */
.tspro-ui .obtn.danger { background: var(--ts-red); color: var(--ts-sec-fg); border-color: var(--ts-red-dark); }
.tspro-ui .obtn.red { color: var(--ts-akzent); }   /* Bearbeiten u. a. Hauptaktionen — 06.08. Akzent */.tspro-ui .obtn .caret { margin-left: auto; font-size: var(--ds-fs-hinweis); opacity: .7; }
/* ▸N111 §648m K-46 */
/* ▸N112 §674 */
:is(.ts-dlg, .bc-main :where(.fen), #ad-ew-pop) .obtn, .be-ov .obtn { height: var(--ts-btn-h); font-size: var(--ds-fs-knopf); padding: 0 12px;
                     border-radius: var(--ds-radius); font-weight: 600; font-family: inherit;
                     display: inline-flex; align-items: center; justify-content: center;
                     background: var(--ts-panel-bg); color: var(--ts-ink); cursor: pointer;
                     border: 1px solid var(--such-bd-box); }
/* ▸N113 */
.ts-dlg-box .f #ovl_close { margin-left: auto; }
/* §1807b Reservierungsdialog (auftrag): Freigeben rechts NEBEN Schliessen — die Trennung sitzt vor Freigeben */
.ts-dlg-box .f #ovl_frei { margin-left: auto; }
.ts-dlg-box .f #ovl_frei + #ovl_close { margin-left: 0; }
/* §1819: "Seriennummer" steht vor "Freigeben" — die Trennung wandert nach vorn, alle drei Knoepfe bleiben rechts zusammen */
.ts-dlg-box .f #ovl_sn { margin-left: auto; }
.ts-dlg-box .f #ovl_sn + #ovl_frei { margin-left: 0; }
/* §1833 Seriennummern-Inventur (Lagermaske), Ansicht In Auftraegen: Zeilen mit Produkt-ID sind anklickbar */
.ts-dlg-box #sni_tab tr[data-pid]:not([data-pid="0"]) { cursor: pointer; }
.es-wrap .opt-col,
.tspro-ui .opt-col { display: flex; flex-direction: column; gap: var(--ts-btn-gap); background: var(--ts-panel-bg);
                        border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); padding: var(--ds-m) var(--ts-kachel-pad); }   /* ▸N118 §661i */
.es-wrap .opt-col .opt-head,
.tspro-ui .opt-col .opt-head { background: var(--ts-sec-bg); color: var(--ts-sec-fg); margin: calc(-1 * var(--ds-m)) calc(-1 * var(--ts-kachel-pad)) var(--ds-s); }.tspro-ui .opt-sep { height: 1px; background: var(--ts-panel-bd); margin: 3px 0; }
/* §1536 AUFKLAPPMENUE in der Optionsspalte (Bauteil dialog.js tsMenueInit): Liste liegt UNTER dem Ausloeser, volle Spaltenbreite. */
.tspro-ui .opt-col .opt-menue-knopf { position: relative; }
.tspro-ui .opt-col .opt-menue-knopf .opt-menue-pfeil { margin-left: auto; opacity: .7; }
.tspro-ui .opt-col .opt-menue-knopf.on { background: var(--ts-flaeche); border-color: var(--ts-line-hover); }
.tspro-ui .opt-col .opt-menue-liste { display: none; }
.tspro-ui .opt-col .opt-menue-liste.on { display: flex; flex-direction: column; gap: var(--ts-btn-gap); position: absolute; left: var(--ts-kachel-pad); right: var(--ts-kachel-pad); z-index: 30;
  background: var(--ts-panel-bg); border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); padding: var(--ds-s); box-shadow: 0 6px 18px rgba(0,0,0,.12); }
.tspro-ui .opt-col .opt-menue-liste .obtn { width: 100%; }

/* ▸N121 */
.tspro-ui .opt-grp, .art-wrap .opt-grp, .be-wrap .opt-grp {
  font-size: var(--ds-fs-hinweis); font-weight: 700; color: var(--such-muted);
  text-transform: uppercase; letter-spacing: .04em; margin: 6px 0 2px;
}/* ▸N122 */
.tspro-ui .ed {
  width: 100%; box-sizing: border-box; height: var(--ds-feld); padding: 0 8px; font: inherit;
  border: 1px solid var(--ts-edit-bd); border-radius: 4px; background: var(--ts-panel-bg); 
}   /* ▸N124 §707 */
/* ▸N125 */
.tspro-ui select,
.ts-ovl .tspro-ui select, .ts-dlg select, .ts-ovl select, .je-such select, .bib-wrap select, #art-ovl select, .be-ov select, .es-wrap select, .art-wrap select, .ts-app select {
  -webkit-appearance: none; -moz-appearance: none; appearance: none;
  background-image: var(--ts-chevron);   /* §709 */
  background-repeat: no-repeat; background-position: right var(--ds-s) center; padding-right: 26px;
  background-color: var(--ts-panel-bg);   /* ▸N126 §708 §692 */
}

/* ▸N130 */
html:has(> body > .tspro-ui) { height: 100%; }

/* ▸N131 */
body:has(> .tspro-ui) { height: 100%; display: flex; flex-direction: column; }
.art-wrap .ta-stack textarea { width: 100%; height: 52px;   /* §1540: Text 320, Langtext 2 Zeilen */ padding: 6px 8px; /* resize:none kommt aus Grundregel (17), §219c */
                     box-sizing: border-box; border: 1px solid var(--ts-panel-bd);
                     border-radius: 6px; font-family: inherit; font-size: 13px; }

/* ▸N147 */
.art-wrap .bestand { margin-top: 8px; display: grid; grid-template-columns: auto auto auto auto; gap: 5px 8px;
           align-items: center; }

/* ▸N151 */
.art-wrap .preis-grp { margin-bottom: 6px; }
.art-wrap .preis-grp .ph { font-size: 12px; font-weight: 700; color: var(--ts-ink); margin: 2px 0 5px; }
.art-wrap .preis-grp .pk { font-size: 12px; font-weight: 600; color: var(--ts-ink); margin: 5px 0 2px; }
.art-wrap .preis-zeile { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 6px; align-items: center; margin-bottom: 7px; }   /* §1540 Raster 35 */   /* ▸N154 §714 §634 */

/* DCI/PUID-Zeile unten — entfernt */

/* Suche-Panel */
.tspro-ui .such-bar { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-bottom: 8px; }
/* ▸N155 */
.tspro-ui .such-bar input.sq { flex: 1; min-width: 90px; height: var(--such-fld-h); padding: 0 10px; box-sizing: border-box;
                     border: 1px solid var(--such-bd); border-radius: var(--such-btn-r); font-size: 13px; }
.tspro-ui .such-bar .obtn {   border: 1px solid var(--such-bd);
                  border-radius: var(--such-btn-r); background: var(--ts-panel-bg); cursor: pointer;
                   font-weight: var(--such-btn-fw); font-family: inherit; }
.tspro-ui .such-bar select.sk { height: var(--such-btn-h); border: 1px solid var(--such-bd); border-radius: var(--such-btn-r);
                      font-size: 13px; padding: 0 6px; }

/* Tabellen-Wrapper mit Scroll */
.art-wrap .tbl-box, .her-wrap .tbl-box { border: 1px solid var(--ts-panel-bd); border-radius: 8px; overflow: hidden;
           display: flex; flex-direction: column; flex: 1; min-height: 220px; height: auto; }
.art-wrap .tbl-scroll, .her-wrap .tbl-scroll { overflow-y: auto; flex: 1; }
/* ▸N157 */
.art-wrap .tbl-box table, .her-wrap .tbl-box table { width: 100%; border-collapse: collapse; font-size: var(--ts-tab-fs); }
.art-wrap .tbl-box thead th, .her-wrap .tbl-box thead th { position: sticky; top: 0; background: var(--ts-flaeche); padding: var(--ts-tab-th-pad);
                    text-align: left; font-weight: 700; border-bottom: 1px solid var(--ts-panel-bd); }
.art-wrap .tbl-box tbody td, .her-wrap .tbl-box tbody td { padding: var(--ts-tab-td-pad); border-bottom: 1px solid var(--ts-trenn); height: var(--ts-tab-td-h); }
/* ▸N158 §696c */
/* ▸N159 §825 */
.art-wrap .tbl-box table.s-tbl, .her-wrap .tbl-box table.s-tbl { table-layout: fixed; }
.art-wrap .tbl-box table.s-tbl td.s-prod, .her-wrap .tbl-box table.s-tbl td.s-prod { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.art-wrap .obtn { height: var(--ts-btn-h); border: 1px solid var(--ts-line); border-radius: 6px; background: var(--ts-panel-bg); color: var(--ts-ink);
        font-family: inherit; font-size: 12px; font-weight: 600; cursor: pointer; display: flex;
        align-items: center; gap: 6px; padding: 0 var(--ds-s); text-align: left; }   /* §1262: Sperr-Tokens statt opacity (S3) */
/* ▸N170 */
.be-ov { position: fixed; inset: 0; background: rgba(24,24,27,.45);
         font-family: var(--ts-font); color: var(--ts-ink);
         display: flex; align-items: center; justify-content: center; z-index: 9000; }
.be-ov .be-box { background: var(--ts-panel-bg); width: min(820px, 94vw); max-height: 86vh; display: flex;
          flex-direction: column; border-radius: 8px; overflow: hidden;
          box-shadow: 0 18px 50px rgba(0,0,0,.35); }
/* ▸N171 */
/* ▸N172 */

/* ▸N173 */
.be-ov .be-head, .je-such .js-head, .km-ov .km-head {   /* 25.07.: km = Alias derselben Kopfregel (eine Wahrheit) */
           background: var(--ts-ink); color: var(--ts-sec-fg); flex: none;
           padding: var(--ts-head-pad); display: flex; align-items: center;
           justify-content: space-between; gap: 12px; }
.be-ov .be-head .t, .je-such .js-head .t, .km-ov .km-head > span {
           font-size: var(--ts-head-fs); font-weight: var(--ts-head-fw);
           letter-spacing: var(--ts-head-ls); }
.be-ov .be-head .t small, .je-such .js-head .t small {
           font-weight: 500; opacity: .7; margin-left: 8px; }
.je-such .js-head .js-summe { margin-left: auto; font-size: var(--ts-head-fs); font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }   /* §2713 Summe der angezeigten Treffer, rechts vor dem Schliessen-Kreuz */
.je-such .js-head .js-summe:empty { display: none; }
/* ▸N174 §796 */
.be-ov .be-body { padding: 0; overflow: auto; font-size: 13px; }   /* ▸N175 */
/* ▸N176 */

/* ▸N177 */
/* ▸N178 §800 */
.be-ov .be-tbl, .je-such .be-tbl, .tspro-ui .be-tbl, .ts-dlg .be-tbl, .bib-wrap .be-tbl, #art-ovl .be-tbl { width: 100%; border-collapse: collapse; font-size: var(--ts-tab-fs); }
.be-ov .be-tbl th, .je-such .be-tbl th, .tspro-ui .be-tbl th, .ts-dlg .be-tbl th, .bib-wrap .be-tbl th, #art-ovl .be-tbl th { position: sticky; top: 0; z-index: 1; background: var(--ts-flaeche); color: var(--ts-ink); text-align: left; font-weight: 700; padding: var(--ts-tab-th-pad); border-bottom: 1px solid var(--ts-panel-bd); white-space: nowrap; }
.be-ov .be-tbl td, .je-such .be-tbl td, .tspro-ui .be-tbl td, .ts-dlg .be-tbl td, .bib-wrap .be-tbl td, #art-ovl .be-tbl td { padding: 0 8px; border-bottom: 1px solid var(--ts-trenn); white-space: nowrap; height: var(--ts-tab-td-h); }
.be-ov .be-tbl td.num, .je-such .be-tbl td.num, .tspro-ui .be-tbl td.num, .ts-dlg .be-tbl td.num, .bib-wrap .be-tbl td.num, #art-ovl .be-tbl td.num { text-align: right; font-variant-numeric: tabular-nums; }
.be-ov .be-tbl th.num, .je-such .be-tbl th.num, .tspro-ui .be-tbl th.num, .ts-dlg .be-tbl th.num, .bib-wrap .be-tbl th.num, #art-ovl .be-tbl th.num { text-align: center; }
.be-ov .be-empty { padding: 22px 14px; color: var(--ts-ro-fg); font-size: 13px; text-align: center; }

/* ▸N180 */
.pd-body { padding: 14px 16px; }
.pd-sec { border: 1px solid var(--ts-panel-bd); border-radius: 6px; margin-bottom: 12px; }
.pd-sec.locked { opacity: .6; }
.pd-h .pd-hint { font-weight: 500; font-size: var(--ds-fs-hinweis); color: var(--ts-meld-warn-fg); }
.pd-rows { display: grid; grid-template-columns: auto 1fr auto 1fr; gap: 8px 10px; align-items: center; padding: 10px; }
.pd-rows label { font-size: 12px; font-weight: 600; color: var(--ts-ink); text-align: left; white-space: nowrap; }   /* ▸N181 §692h */
.pd-rows input { width: 100%; box-sizing: border-box; padding: 4px 6px; font-size: 13px;
                 border: 1px solid var(--ts-line); border-radius: 4px; font-family: inherit; }
/* ▸N182 §660 */
/* ▸N183 §660 */
/* ▸N184 §660 */

/* ▸N185 *//* ▸N186 */
/* ▸N187 §791 */
.be-wrap .ka-kopfinfo { font-weight: 500; opacity: .85; margin-left: 10px; font-size: var(--ds-fs-text); }
.be-wrap .ka-pos { color: var(--ts-ok); }
.be-wrap .ka-neg { color: var(--ts-red); }
.be-wrap .ka-betrag { font-weight: 600; }
/* ▸N188 */
.be-wrap .dlg-status { font-size: 12px; font-weight: 500; padding: 6px var(--ds-m);
                           border-bottom: 1px solid var(--ts-panel-bd); background: var(--ts-panel-bg); color: var(--ts-ro-fg); }   /* §692e */
.be-wrap .bel-filter { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin: 8px 0; }
.be-wrap .bel-suche { width: var(--ts-fb-3xl); height: var(--such-fld-h); }
.be-wrap .bel-art-filter { display: inline-flex; gap: 6px; }
.be-wrap .bel-fbtn { height: var(--such-btn-h); padding: 0 12px; font-size: var(--such-btn-fs);
                     font-weight: var(--such-btn-fw); border-radius: var(--such-btn-r); }
/* ▸N189 */
.be-wrap .fz-ta textarea.v { height: 120px; min-height: 120px; align-items: flex-start; padding: 6px 8px; }   /* §698 */
.bel-tbl { table-layout: fixed; width: 100%; }
/* ▸N192 §262 §253 */

/* ▸N193 */
.bhk-wrap td.bhk-sk-zelle, .be-wrap td.ma-sk-zelle { cursor: pointer; position: relative; }   /* §698 */
.bhk-wrap .bhk-sk-inline, .be-wrap .ma-sk-inline {
  position: absolute; right: 2px; top: 50%; transform: translateY(-50%);
  width: 300px; text-align: left; font: inherit; font-size: var(--ds-fs-text);
  background: var(--ts-panel-bg); z-index: 6;
  border: 1px solid var(--ts-akzent); border-radius: 4px; padding: 2px 6px; box-sizing: border-box; }




.lf-box-560 { width: min(560px, 94vw); max-width: none; }
.lf-ov-oben { align-items: flex-start; padding-top: 12vh; }
.lf-pad { padding: 18px 20px; }
.lf-grid { display: grid; grid-template-columns: var(--lf-lbl-w) 1fr; gap: 10px 12px; }   /* §2605: eigene Labelbreite im 560er-Dialog (190px war zu breit) */
.km-box.lf-box-560 { height: auto; max-height: var(--dlg-h-max); min-width: 0; display: flex; flex-direction: column; }   /* §2605: feste 300px schnitten Feld 5 + Knopfleiste ab */
.km-box.lf-box-560 .lf-pad { overflow: auto; }
/* §2609-Schrittanzeige entfernt (§2613): der Lauf zeigt seine Schritte im Standard-Statusfenster tsproStatus */
/* §2610 Abschnitt "Kontakte hinzufügen" */
.se-wrap .se-kopf   { margin: var(--ds-s) 0; font-weight: 600; }
.se-wrap .se-abt    { width: 100%; box-sizing: border-box; }   /* Hoehe: §2623 Tabellenzeile */
/* §2611 Abschnitt "E-Mail-Adressen im comCENTER zuordnen": lange Listen (Amazon 191) im eigenen Rollbereich */
.se-wrap tr.se-erl td { color: var(--ts-pos-grau); }
/* §2622 (Joerg: weiter zu klein, Abschneidungen, Rollbalken — selbst gemessen sc_anschreiben_lieferanten/Amazon): Fenster Stufe voll; Tabellen mit fester
   Spaltenaufteilung (kein waagerechtes Rollen, lange Werte mit … und title); nur die Adressliste behaelt eigenen Rollbereich, sonst rollt der Dialogrumpf */
.se-wrap .se-tbl { table-layout: fixed; }
.ts-dlg .se-wrap .se-tbl.lgp td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }   /* §2637 (0,4,1) gegen .ts-dlg .dlg-tbl.lgp td (0,3,1, spaeter) */
.se-wrap .se-tbl select.se-wert { width: 100%; max-width: 100%; }
/* §2623 (Joerg: kein dynamisches Verschieben, Scrollbalken nur wo sinnvoll; R-4.14 Kacheln teilen die feste Hoehe, nur Tabellen rollen; K-404 Fuellzeilen):
   se-wrap fuellt den festen Rumpf (Stufe voll), drei Abschnitte mit festem Anteil (Felder 5 · Kontakte 3 · Adressen 4), jeder: Kopfzeile + Tabelle, die allein rollt */
.se-wrap { height: 100%; display: flex; flex-direction: column; gap: var(--ds-s); overflow: hidden; }
.se-wrap .se-blk { display: flex; flex-direction: column; min-height: 0; }
.se-wrap .se-blk-feld { flex: 6 1 0; }   /* §2742: 5 -> 6, seit der Fusszeile mit 2 Zeilen (§2740) scrollten die 11 Stammdatenzeilen */
.se-wrap .se-blk-kont { flex: 3 1 0; }
.se-wrap .se-blk-zuo  { flex: 4 1 0; }
.se-wrap .se-blk > .se-kopf { flex: 0 0 auto; margin: 0 0 var(--ds-xs); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.se-wrap .se-blk > .lgp-scroll { flex: 1 1 0; min-height: 0; max-height: none; overflow-y: auto; overflow-x: hidden; }
.se-wrap .se-tbl td, .se-wrap .se-tbl th { height: var(--ds-tabellenzeile); }
.se-wrap .se-tbl select.se-wert, .se-wrap .se-tbl input.se-abt { height: var(--ds-tabellenzeile); margin-top: 0; padding-top: 0; padding-bottom: 0; }
.se-wrap .se-tbl th.sp-flag-wort, .se-wrap .se-tbl td.sp-flag-wort { width: var(--fb-110); }
.se-wrap .se-tbl th.se-q { width: var(--fb-320); }   /* §2740: "ecoDMS, Impressum/Web, Google-Adressprüfung" braucht 310 px (gemessen) */
.ts-dlg-box:has(.se-wrap) .f > .dlg-status { display: block; white-space: normal; min-height: calc(2 * var(--ds-zeile)); max-height: calc(2 * var(--ds-zeile)); overflow: hidden; }   /* §2740: Belegzeile Vervollstaendigen zweizeilig (2303 px Text in 1368 px), feste Hoehe wie .as-dlg — Volltext im title */
.se-wrap .se-tbl th.se-name { width: var(--fb-220); }
.se-wrap .se-tbl th.se-n { width: var(--fb-90); }
.se-wrap .se-tbl th.se-abt-sp { width: var(--fb-170); }
/* §2625 Umbenennen-Kette (umbenennen.js): Vorschau/Ergebnis Stufe breit, statisch — Kopf, EINE rollende Tabelle, Statuszeile wandert in den Fuss (§1316) */
.umb-wrap { height: 100%; display: flex; flex-direction: column; gap: var(--ds-s); overflow: hidden; }
.umb-wrap > .umb-kopf { flex: 0 0 auto; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* §2632 (Joerg-Bild: Ergebnis 320 px hoch, waagerechter Rollbalken): .ts-dlg .lgp-scroll (0,2,0, spaeter in der Datei) schlug diese Regel — jetzt (0,3,0) */
.ts-dlg .umb-wrap > .lgp-scroll { flex: 1 1 0; min-height: 0; max-height: none; overflow-y: auto; overflow-x: hidden; }
.ts-dlg .umb-wrap .umb-tbl { table-layout: fixed; width: 100%; }
.ts-dlg .umb-wrap .umb-tbl.lgp td, .ts-dlg .umb-wrap .umb-tbl.lgp th { height: var(--ds-tabellenzeile); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; box-sizing: border-box; }   /* §2637 (0,4,1): Z.~1383 .ts-dlg .dlg-tbl.lgp td {overflow:visible; text-overflow:clip} (0,3,1, spaeter) gewann — Zeile 9 lief ueber */   /* §2635 gemessen: Tabelle 956 px in 866 px Rahmen — Zellabstaende kamen zu den festen Breiten hinzu */
/* §2634 (gemessen: Spalten # und Schritt ~16 px, Text ueberlagert): max-width:0 stand auch an den KOPFzellen — bei table-layout fixed geben die Kopfzellen die Spaltenbreite vor.
   Jetzt feste Breiten an den Kopfzellen (0,4,1), kein max-width — "…" kommt bei fester Aufteilung + width 100 % aus overflow/text-overflow */
.ts-dlg .umb-wrap .umb-tbl th.sp-flag { width: var(--fb-36); }
.ts-dlg .umb-wrap .umb-tbl th.sp-txt { width: var(--fb-270); }
.ts-dlg .umb-wrap .umb-tbl th.umb-n { width: var(--fb-64); }
.ts-dlg .umb-wrap .umb-tbl td.umb-n { text-align: right; }
/* §2638 (Messung 09.10.: Zeile 9 Text 657 px in 495-px-Zelle, ohne Ellipse trotz (0,4,1)-Regel): Freitext in einem Block INNERHALB der Zelle — der kuerzt verlaesslich */
.ts-dlg .umb-wrap .umb-z { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.umb-wrap .umb-tbl tr.umb-fehl td { color: var(--ts-red); }
.umb-wrap .umb-tbl tr.umb-hinw td { color: var(--ts-warn); }
.umb-wrap .umb-tbl tr[data-bid] { cursor: pointer; } .umb-wrap .umb-tbl tr[data-bid]:hover td { background: var(--ds-auswahl); }   /* §2836 KI-Hinweis anklicken: klären oder als offenen Vorgang merken (Muster tr[data-id] Z.1016) */
.lf-lbl { text-align: left; white-space: nowrap; font-weight: 600; font-size: 13px; align-self: center; }
.lf-inp { width: 100%; box-sizing: border-box; padding: 7px 9px; border: 1px solid var(--ts-line); border-radius: var(--ds-radius); font-size: 14px; font-family: inherit; }
.kd-wrap .kd-w70 { width: var(--ts-fb-s); }
/* ▸N199 §806 */
.kd-wrap .kd-pad, .be-ov .kd-pad { padding: 18px 20px; }   /* ▸N200 K-46 */
.kd-wrap .kd-text, .be-ov .kd-text { font-size: 13px; line-height: 1.55; }
/* ▸N201 §660 */
.km-ov { position: fixed; inset: 0; background: rgba(0,0,0,.4); z-index: 10000; display: flex; align-items: center; justify-content: center; font-family: var(--ts-font); }
.km-box { background: var(--ts-panel-bg); border-radius: 12px; min-width: var(--dlg-w-schmal); max-width: var(--dlg-w-schmal);   /* §1307: Stufe schmal statt 320/460 */ overflow: hidden; box-shadow: var(--ds-schatten-dialog);  height: var(--dlg-h-schmal); /* §1308 */ }
.km-body { padding: 16px; font-size: 14px; line-height: 1.5; white-space: pre-wrap; }
.km-inp { width: 100%; height: 32px; box-sizing: border-box; margin-top: 10px; padding: 0 8px; border: 1px solid var(--ts-line); border-radius: 6px; font: inherit; }
/* .km-foot → .dlg-fuss (§660) */
.km-breit { max-width: 94vw; min-width: 520px; width: max-content; }   /* 19.07.: breit genug fuer eine Zeile je Vorgang */   /* ▸N202 */   /* 19.07.: kein Zeilenumbruch in den Vorgangszeilen *//* ▸N203 */
.eg-erbe { font-style: normal; font-size: var(--ds-fs-hinweis); font-weight: 700; color: var(--ts-meld-warn-fg); background: var(--ts-meld-warn-bg); border: 1px solid var(--ts-meld-warn-bd); border-radius: 4px; padding: 0 5px; margin-left: 6px; white-space: nowrap; }   /* Auswahl-Hellton zum Akzent (06.08., Setzung) */
/* ▸N216 K-151 */
/* ▸N217 */
/* ▸N218 */
/* ▸N219 */
.be-ov   .js-ftitel,
.je-such .js-ftitel {font-size: var(--ds-fs-hinweis);font-weight:700;color:var(--such-muted);
                       text-transform:uppercase;letter-spacing:.04em;margin:6px 0 2px}
.je-such .lb-sgrp,
.be-ov   .lb-sgrp,
.be-ov   .js-fgrp,
.je-such .js-fgrp     {display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--ts-btn-gap);margin-bottom:var(--ts-btn-gap);width:var(--ts-btn-w)}   /* ▸N220 §722 */
.be-ov   .js-fbtn,
.je-such .js-fbtn {height:var(--such-btn-h);padding:0 6px;border:1px solid var(--such-bd);
                       background:var(--ts-panel-bg);border-radius:var(--such-btn-r);
                       font-size:var(--such-btn-fs);font-weight:var(--such-btn-fw);
                       cursor:pointer;text-align:center;color:var(--ts-ink);
                       display:flex;align-items:center;justify-content:center;font-family:inherit}
/* ▸N221 */
.be-ov   .js-fbtn.on:disabled,
.je-such .js-fbtn.on:disabled {background:var(--ts-ink);color:var(--ts-dis-fg);
  border-color:var(--ts-ink)}   /* ▸N222 §1262 */

/* ▸N223 */
.be-ov   .js-fbtn-w,
.je-such .js-fbtn-w {width:var(--ts-btn-w);margin-bottom:var(--ts-btn-gap)}   /* ▸N224 §722b §722 */
/* ▸N225 §422 */
.je-such.asaus .as-kv {display:flex;justify-content:space-between;gap:10px;padding:1px 0}
.je-such.asaus .as-kv .k {color:var(--ts-gedaempft)}
.je-such.asaus .as-kv .v {font-weight:600}
.je-such.asaus .as-kv3 {display:grid;grid-template-columns:1fr auto auto;gap:8px;padding:1px 0}
.je-such.asaus .as-kv3 span:nth-child(1) {color:var(--ts-gedaempft)}
.je-such.asaus .as-kv3 span:nth-child(2), .je-such.asaus .as-kv3 span:nth-child(3) {text-align:right;font-weight:600}
.je-such.asaus .as-plist {max-height:150px;overflow:auto}   /* ▸N227 §817 */
/* §839: .pec-x -> .ts-x */\n#m-pechart .pec-filters {display:flex;gap:14px;padding:10px 14px;flex-wrap:wrap;border-bottom:1px solid var(--ts-trenn)}
/* ▸N228 §781 §713 */
/* ▸N229 §795 */

/* ▸N230 */

/* ▸N231 */
.tspro-ui input.v:enabled,
.tspro-ui select.v:enabled,
.tspro-ui textarea:not([readonly]):not(:disabled),
.tspro-ui .v[contenteditable="true"],
.tspro-ui .ed,
.art-wrap .ed,
.pd-rows input:enabled {   /* §630: #e_tbody-Arm entfernt (tot seit §276) */
  color: var(--ts-ink);
  -webkit-text-fill-color: var(--ts-ink);
  caret-color: var(--ts-ink);   /* §1890 (Joerg, Firefox: keine Einfuegemarke in den Bearbeiten-Feldern) — caret-color ist vererbt, fuer tippbare Felder ausdruecklich; gesperrte behalten transparent */
}

/* ▸N232 */
.tspro-ui select.ed,
.art-wrap select.ed {
  background-color: var(--ts-panel-bg);
  background-image: var(--ts-chevron);   /* §709 */
  background-repeat: no-repeat; background-position: right var(--ds-s) center; padding-right: 26px;
  cursor: pointer;
}.pd-sec > .pd-h { background: var(--ts-flaeche); padding: 6px 10px; font-weight: 700; font-size: 12.5px;
                  border-bottom: 1px solid var(--ts-panel-bd);  justify-content: space-between; align-items: center; display: none; }

/* ▸N234 */
.tspro-ui .opt-col .opt-head,
.art-wrap .opt-col .opt-head,
.es-wrap .opt-col .opt-head,
.tspro-ui .be-box .h,
.ts-dlg-box .h,
/* ▸N235 */
.ecopdf-kopf,
/* 08.08.: PDF-Betrachter — BARE,
body-appended */
.bzq-kopf,
/* 08.08.: Betrags-Abfrage — BARE,
body-appended */
.be-ov .be-head,
#m-wiz .mh,
#m-pechart .pec-head,
.ts-ovl .ts-ma-head,
.tspro-ui .da-ch,
.es-wrap .es-title {
  font-size: var(--ts-head-fs);
  font-weight: var(--ts-head-fw);
  padding: var(--ts-head-pad);
  letter-spacing: var(--ts-head-ls);
}
.be-ov .be-head .t, .ts-dlg-box .h > :not(.ts-x), .tspro-ui .be-box .h > :not(.ts-x) {   /* ▸N236 §841 */ 
  font-size: var(--ts-head-fs);
  font-weight: var(--ts-head-fw);
}

/* ▸N237 */
.tspro-ui .da-ch .obtn { height: var(--ts-btn-h); font-size: var(--ds-fs-hinweis); padding: 0 7px; gap: 4px; }

/* ▸N238 */
.tspro-ui .da-head { display: none; }

/* ▸N239 */
.tspro-ui .da-btn,
.es-wrap .es-save,
.es-wrap .es-ubtn { height: 26px; font-size: 12px; padding: 0 var(--ds-s); }
/* ▸N242 */
/* ▸N243 */
html:has(> body > .es-wrap) { height: 100%; }   /* ▸N244 */
body:has(> .es-wrap) { height: 100%; display: flex; flex-direction: column; margin: 0; }   /* §724: Kopf bis zum Kachelrand, waagerecht jetzt 9 */
/* ▸N246 */
.tspro-ui .obtn, .es-wrap .obtn, .art-wrap .obtn, .bib-wrap .obtn,
.ts-ovl .obtn, :is(.ts-dlg, .bc-main :where(.fen)) .obtn, .be-ov .obtn, .je-such .obtn,
.ts-memo-ov .obtn, .m-datenabgleich .obtn {
  -webkit-appearance: none; appearance: none;
}   /* ▸N249 */
/* ▸N250 */
/* ▸N251 §692 §717b K-317 */

/* ▸N252 */
.tspro-ui .opt-col .opt-head,
.art-wrap .opt-col .opt-head,
.es-wrap .opt-col .opt-head {
  border-radius: 10px 10px 0 0;
}

/* ▸N253 */
/* ▸N254 */

/* ▸N255 */
.tspro-ui .dv-right { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.tspro-ui .dv-right .opt-col { display: flex; flex-direction: column; gap: var(--ts-btn-gap);
                         background: var(--ts-panel-bg); border: 1px solid var(--ts-panel-bd);
                         border-radius: var(--ds-radius); padding: var(--ds-m) var(--ts-kachel-pad); }
.tspro-ui .dv-right .opt-col .opt-head { background: var(--ts-sec-bg); color: var(--ts-sec-fg);
                         margin: calc(-1 * var(--ds-m)) calc(-1 * var(--ts-kachel-pad)) var(--ds-s); border-radius: 10px 10px 0 0; }
/* ▸N256 */
.tspro-ui .dv-right .obtn { border: 1px solid var(--ts-line); border-radius: 6px; background: var(--ts-panel-bg);
                         color: var(--ts-ink); font-family: inherit; font-weight: 600; cursor: pointer;
                         display: flex; align-items: center; text-align: left; }
/* ▸N257 §682 K-317 */
/* ▸N258 */
.tspro-ui .dv-right .opt-col select,
.tspro-ui .dv-right .opt-col input {
  height: 26px; font-size: 12px; width: 100%; box-sizing: border-box;
  border: 1px solid var(--ts-panel-bd); border-radius: 6px; padding: 0 8px;
  font-family: inherit; background: var(--ts-panel-bg);
}
/* §692: Kopie entfallen — zentrale Regel (Z.3507) */

/* ▸N259 */
html:has(body > .kt-wrap),
body:has(> .kt-wrap) { overflow: hidden; height: 100%; }
.kt-wrap .opt-col   { align-self: start; }

/* ▸N269 */
html:has(body > .bib-wrap),
body:has(> .bib-wrap) { overflow: hidden; height: 100%; }
/* ▸N270 */
.bib-wrap .bib-title { background: var(--ts-sec-bg); color: var(--ts-sec-fg);
            border-radius: 10px; margin: 0 0 10px; flex: 0 0 auto;
            font-size: var(--ts-head-fs); font-weight: var(--ts-head-fw);
            padding: var(--ts-head-pad); letter-spacing: var(--ts-head-ls); }
.bib-wrap .bib-filter { width: 100%; height: var(--ds-feld); padding: 0 8px; box-sizing: border-box;
            border: 1px solid var(--ts-panel-bd); border-radius: 6px; background: var(--ts-panel-bg);
            font: inherit; font-size: 13px; margin-bottom: 6px; }   /* §802: war #b0b0ab (2,18:1) */
.bib-wrap .bib-hinweis { font-size: var(--ds-fs-hinweis); color: var(--ts-gedaempft); margin: 2px 2px 8px; }
.bib-wrap .fz .v { height: var(--ds-feld); padding: 0 8px; box-sizing: border-box; border: 1px solid var(--ts-panel-bd);
            border-radius: 6px; background: var(--ts-panel-bg); font-size: 13px; display: flex; align-items: center; }
/* ▸N277 §692 */
/* ▸N278 */
.bib-wrap .opt-col { display: flex; flex-direction: column; gap: var(--ts-btn-gap); background: var(--ts-panel-bg);
            border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); padding: var(--ds-m) var(--ts-kachel-pad);
            align-self: start; max-height: 100%; }
.bib-wrap .bib-radrow { display: flex; gap: 16px; margin-bottom: 6px; flex: 0 0 auto;
            font-size: 13px; font-weight: 600; }.bib-wrap .obtn {
            display: flex; align-items: center; text-align: left; font-weight: var(--such-btn-fw); border: 1px solid var(--such-bd);
            border-radius: 6px; background: var(--ts-panel-bg); color: var(--ts-ink); font-family: inherit;
            /* ▸N289 §611c */
            cursor: pointer; }
select.bib-filter { cursor: pointer; }

/* ▸N293 */
#art-ovl .fz { display: grid; gap: 8px; align-items: center; margin-bottom: 7px; }
#art-ovl .fz > label { text-align: left; font-size: 13px; font-weight: 600; }
#art-ovl .fz input.v, #art-ovl .fz select.v { display: block; height: var(--ds-feld); font-family: inherit;
            padding: 0 8px; box-sizing: border-box; border: 1px solid var(--ts-panel-bd);
            border-radius: 6px; background: var(--ts-panel-bg); font-size: 13px; }
/* §692: Kopie entfallen — zentrale Regel (Z.3507) */
#art-ovl .obtn { height: var(--such-btn-h); padding: 0 12px; font-size: var(--such-btn-fs); font-weight: var(--such-btn-fw); border: 1px solid var(--such-bd); border-radius: var(--such-btn-r);
            background: var(--ts-panel-bg); color: var(--ts-ink); font-family: inherit; cursor: pointer; }
/* ▸N295 §793 */
#art-ovl .tbl-btns { display: flex; gap: 8px; margin-top: 8px; align-items: center; }
#art-ovl .eig-grid { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 7px 10px; align-items: center;
            max-height: 46vh; overflow: auto; padding: 8px; border: 1px solid var(--ts-panel-bd); border-radius: 8px; }
#art-ovl .eig-grid .lab { text-align: left; font-size: 12.5px; font-weight: 600; }
#art-ovl .eig-grid input { height: var(--ds-feld); box-sizing: border-box; padding: 0 8px;
            border: 1px solid var(--ts-panel-bd); border-radius: 6px; font: inherit; font-size: 12.5px; width: 100%; }
#art-ovl .eig-leer { color: var(--ts-gedaempft); font-size: 12.5px; padding: 12px; text-align: center; }
#art-ovl .art-filter { display: flex; gap: 6px; margin-bottom: 6px; }
#art-ovl .art-filter input { flex: 1; min-width: 0; height: var(--ds-feld); border: 1px solid var(--ts-panel-bd);
            border-radius: 6px; padding: 0 8px; font: inherit; font-size: 12.5px; background: var(--ts-panel-bg); }
#art-ovl .art-tbl-wrap { border: 1px solid var(--ts-panel-bd); border-radius: 8px; overflow: auto; max-height: 240px; }
#art-ovl table.be-tbl tr[data-id] { cursor: pointer; }   /* Auswahl-Hellton zum Akzent (06.08.) */
#art-ovl .num { text-align: right; }
#cmb-pop .cmb-opt { padding: 5px 9px; font-size: 12.5px; cursor: pointer; }
#cmb-pop .cmb-opt:hover, #cmb-pop .cmb-opt.hi { background-color: var(--ts-field-ro); }
#cmb-pop .cmb-empty { padding: 8px 9px; font-size: 12px; color: var(--ts-gedaempft); }

/* ▸N296 */
.bib-wrap select.bib-filter {
  background-color: var(--ts-panel-bg);
  background-image: var(--ts-chevron);   /* §709 */
  background-repeat: no-repeat; background-position: right var(--ds-s) center; padding-right: 26px;
  cursor: pointer;
}

/* ▸N299 */
.bib-wrap input.bib-filter,
.bib-wrap select.bib-filter {
  height: var(--ds-feld); min-height: var(--ds-feld); box-sizing: border-box;
  padding-top: 0; padding-bottom: 0; line-height: 26px;
  border: 1px solid var(--ts-panel-bd); border-radius: 6px;
  font-size: 12.5px;
}
.bib-wrap .bib-hkrow select { height: var(--ds-feld); border: 1px solid var(--ts-panel-bd);
            border-radius: 6px; padding: 0 8px; font: inherit; font-size: 13px; background: var(--ts-panel-bg); }

/* ▸N309 */
#art-ovl .eig-grid .cmb-box { display: flex; flex-wrap: wrap; align-items: center; gap: 4px;
  min-height: var(--ds-feld); box-sizing: border-box; padding: 2px 6px; cursor: text;
  border: 1px solid var(--ts-panel-bd); border-radius: 6px; background: var(--ts-panel-bg); }   /* §698 */
#art-ovl .eig-grid .cmb-box input { flex: 1 1 90px; min-width: 90px; width: auto;
  border: none; outline: none; height: 22px; padding: 0 2px; font: inherit;
  font-size: 12.5px; background: transparent; border-radius: 0; }
#art-ovl .cmb-chip { display: inline-flex; align-items: center; gap: 5px;
  max-width: 100%; padding: 1px 5px 1px 8px; font-size: 12px; font-weight: 600;
  color: var(--ts-ink); background: var(--ts-flaeche); border: 1px solid var(--ts-line); border-radius: 10px;
  white-space: nowrap; overflow: hidden; }
#art-ovl .cmb-chip-x { border: none; background: transparent; cursor: pointer;
  font-size: var(--ds-fs-hinweis); line-height: 1; padding: 2px; color: var(--ts-gedaempft); }
#cmb-pop .cmb-frei { border-top: 1px solid var(--ts-panel-bd); color: var(--ts-ink-muted); }
#cmb-pop .cmb-bib  { color: var(--ts-akzent); font-weight: 600; }

/* ▸N310 */

/* ▸N311 */
.tspro-ui.bhk-wrap { font-family: var(--ts-font); font-size: var(--ds-fs-text); color: var(--ts-ink); }
.bhk-wrap { padding: 12px; }
.bhk-cols { display: flex; gap: 12px; align-items: flex-start; }
/* ▸N312 */
#msg-ovl .ts-ma-box { width: var(--dlg-w-schmal); }
#msg-ovl .ts-ma-head { display: flex; align-items: center; justify-content: space-between;   /* ▸N313 §839 */
  padding: var(--ts-head-pad); font-size: var(--ts-head-fs);
  font-weight: var(--ts-head-fw); letter-spacing: var(--ts-head-ls); }
#msg-ovl .ts-setup-form { padding: var(--ds-m) var(--ds-l); }
/* ▸N314 */
#msg-ovl .msg-text input[type="text"] {
  display: block; width: 100%; box-sizing: border-box; margin-top: 8px;
  height: var(--such-fld-h); padding: 0 8px; font: inherit; font-size: 13px;
  border: 1px solid var(--ts-panel-bd); border-radius: 6px; background: var(--ts-panel-bg);
  color: var(--ts-ink);
}
#msg-ovl .msg-text { font-size: 13px; line-height: 1.45; white-space: pre-line; margin-bottom: 12px; }
/* ▸N315 */

/* ▸N316 */
.tspro-ui .bhk-tblwrap table { table-layout: fixed; width: 100%; }
.tspro-ui .bhk-tblwrap th, .tspro-ui .bhk-tblwrap td {
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* ▸N317 */
/* ▸N318 §237 */
/* ▸N319 §253 */

/* ▸N320 */
/* ▸N321 */
/* ▸N322 §253 */

/* ▸N323 */
.tspro-ui .be-tbl tr.bhk-roh td { color: var(--ts-ink-muted); font-style: italic; }
/* ▸N324 §960 */
.tspro-ui .be-tbl tr.bhk-ohnedok td { color: var(--ts-akzent-dark); }

.bhk-liste { flex: 2 1 0; min-width: 0; margin-bottom: 0; }   /* 2/3 (Jörg, 10.07.) */
.bhk-detail { flex: 1 1 0; min-width: 0; margin-bottom: 0; }
/* ▸N326 */.bhk-suche { width: 100%; margin-bottom: 8px; }
.bhk-tblwrap { max-height: 560px; overflow: auto; border: 1px solid var(--ts-panel-bd); border-radius: 8px; }
.bhk-tblwrap tr[data-id] { cursor: pointer; }   /* Auswahl-Hellton zum Akzent (06.08.) */
.bhk-num { text-align: right; }
/* ▸N327 */
.tspro-ui th.bhk-num { text-align: right; }

/* ▸N328 §253 */
.tspro-ui .bhk-tblwrap tr.js-leerzeile > td { text-align: center; color: var(--ts-gedaempft); padding: 14px; }
.bhk-summe { margin-top: 8px; font-size: var(--ds-fs-text); color: var(--ts-ink); }
.tspro-ui .bhk-grid { grid-template-columns: max-content minmax(0, 1fr); }
.tspro-ui .bhk-grid .fil-field { width: 100%; min-width: 0; box-sizing: border-box; }
.bhk-paar { display: flex; gap: 6px; min-width: 0; }
.bhk-paar .fil-field { flex: 1 1 auto; min-width: 0; width: auto; }
.bhk-paar .bhk-plz { flex: 0 0 var(--ts-fb-m); }
.bhk-paar .bhk-bic { flex: 0 0 var(--ts-fb-xl); }
.bhk-check { display: flex; align-items: center; height: var(--ds-feld); }
/* §1748 Vertragsmaske: die drei Kennzeichen (Aktiv, Archiv-Beleg erwartet, Nur Ablage) in EINER Zeile — beschriftete Kaestchen nebeneinander, Beschriftung normal und links (nicht wie die Feldbeschriftung .fil-grid label) */
.tspro-ui .bhk-check.bhk-kz { gap: var(--ds-m); }   /* 3 Kaestchen in ~287 px Feldspalte (1920x822): 51+109+91+2x12 = 275 */
.tspro-ui .bhk-check.bhk-kz label { display: inline-flex; align-items: center; gap: var(--ds-s); font-weight: 400; text-align: left; white-space: nowrap; }
/* ▸N329 §563 */
/* ▸N330 §1017 */
/* ▸N331 §1020 */
/* ▸N332 §1021 */
.bhk-eco { display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-start;
           min-height: var(--ds-feld); height: auto; max-width: 100%; overflow-wrap: anywhere;
           line-height: 1.45; font-size: var(--ds-fs-text); color: var(--ts-gedaempft); }
/* ▸N333 §1022 */
.bhk-eco > .bhk-ecozeile:first-child { min-height: var(--ds-feld); display: flex; align-items: center; gap: 6px; }
.bhk-grid label:has(+ .bhk-eco) { align-self: start; line-height: var(--ds-feld); }
/* ▸N334 §1020 */
.bhk-ecomehr   { display: contents; }
/* ▸N335 §1018 */
/* ▸N336 §1019 */
.bhk-ecozeile  { display: block; max-width: 100%; overflow-wrap: anywhere; }
.bhk-ecozeile i { font-style: normal; color: var(--ts-ink-muted); }
.bhk-ecolink, .bhk-ecodel { white-space: nowrap; }
/* ▸N337 §1239 §1019 */
.bhk-ecodel    { color: var(--ts-red); text-decoration: none; font-weight: 700; }
.bhk-ecolink { color: var(--ts-akzent); text-decoration: none; font-weight: 600; }
/* ▸N338 §569 */
.eco-doclink { color: var(--ts-akzent); text-decoration: none; font-weight: 600; }
.bhk-paar .bhk-skr { flex: 0 1 200px; }   /* darf in der schmalen Kachel schrumpfen */
/* ▸N339 */
#skr-pop { position: fixed; display: none; z-index: 9600; background: var(--ts-panel-bg);
  border: 1px solid var(--ts-panel-bd); border-radius: 6px; max-height: 260px;
  overflow: auto; box-shadow: 0 8px 24px rgba(0,0,0,.18);
  font-family: var(--ts-font); }
#skr-pop .skr-opt { display: flex; align-items: baseline; gap: 8px;
  padding: 5px 10px; font-size: 12.5px; color: var(--ts-ink); cursor: pointer; white-space: nowrap; }
#skr-pop .skr-opt:hover, #skr-pop .skr-opt.hi { background-color: var(--ts-field-ro); }
#skr-pop .skr-nr { font-family: monospace; font-weight: 700; color: var(--ts-akzent);
  width: 52px; flex: 0 0 52px; text-align: right; }
.pop-leer { padding: 9px 10px; font-size: 12px; color: var(--ts-gedaempft); }   /* ▸N340 §801 */
/* ▸N341 */
#vs-pop, #ad-ew-pop, #ts-aw-pop { position: fixed; display: none; z-index: 9600; background: var(--ts-panel-bg);
  border: 1px solid var(--ts-panel-bd); border-radius: 6px; max-height: 260px;
  overflow-y: auto; box-shadow: 0 8px 24px rgba(0,0,0,.14);
  font-family: var(--ts-font); }
#vs-pop .vs-opt { padding: 5px 10px; font-size: 12.5px; color: var(--ts-ink); cursor: pointer; white-space: nowrap; }
#vs-pop .vs-opt:hover, #vs-pop .vs-opt.hi { background-color: var(--ts-field-ro); }
/* §801 (T6): .vs-leer -> .pop-leer */
/* ▸N342 §670 */
.bhk-skrhint { align-self: center; font-size: var(--ds-fs-hinweis); color: var(--ds-hinweis); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ▸N343 */
/* §3542 Import PDF (belege/vertraege): Fensteraufbau zentral (.ts-dlg/.fen, K-423) — Wertezeilen in zwei Paaren Beschriftung|Feld je Zeile (Muster ko-tel4 §2758), feste Zeilen, nichts dynamisch */
#pdf-ovl .fen-form.pdf-werte { grid-template-columns: repeat(2, max-content minmax(0, 1fr)); }
/* ▸N350 §656 */

/* ▸N351 */
/* ▸N352 */
.tspro-ui .obtn, .be-ov .obtn,
.tspro-ui .such-bar .obtn { height: var(--ts-btn-h); font-size: var(--ds-fs-knopf); padding: 0 var(--ds-s); }.tspro-ui .fbtn { border: 1px solid var(--ts-panel-bd); border-radius: 6px; background: var(--ts-panel-bg);
                     cursor: pointer; font-family: inherit; height: 26px; font-size: 12px; padding: 0 var(--ds-s);
                     overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
                     text-align: center; box-sizing: border-box; }
/* ▸N353 */.tspro-ui .ma-help-btn { margin-left: 8px; height: 22px; padding: 0 var(--ds-s); border: 1px solid var(--ts-line);
                        border-radius: var(--ds-radius); background: var(--ts-panel-bg); color: var(--ts-akzent); font-size: 12px;
                        font-weight: 600; font-family: inherit; cursor: pointer; vertical-align: middle; }

/* ▸N354 */

/* Kopf mit Monatswähler (rechts im Kachelkopf) */

/* ▸N355 */

/* Kennzahlen-Zeile: Label links, Wert rechtsbündig */

/* Abschnitts-Trenner in einer Karte */

/* USt-Satz- + Kategorie-Subtabellen (nutzen ma-row) */

/* Saldo-Leiste unten, volle Breite */

/* ▸N356 */
.tspro-ui .be-layout,
.tspro-ui .kt-layout,
.tspro-ui .kd-layout,
.tspro-ui .lg-layout,
.tspro-ui .lf-layout,
.tspro-ui .ma-layout,
.tspro-ui .wb-layout,
.tspro-ui .art-layout   { grid-template-columns: 1fr var(--ts-opt-w);
                             flex: 1; min-height: 0; align-items: stretch; }
/* ▸N357 §428 */
.tspro-ui .es-layout    { grid-template-columns: var(--es-toc-w) 1fr var(--ts-opt-w);
                             /* ▸N358 */
                             flex: 1; min-height: 0; align-items: stretch; }

/* bibliothek: dreispaltig (Baum | Inhalt | Optionen) */
.tspro-ui .bib-layout   { grid-template-columns: 300px 1fr var(--ts-opt-w); }.tspro-ui .bhk-opt { flex: 0 0 var(--ts-opt-w); width: var(--ts-opt-w); box-sizing: border-box; }

/* ▸N360 */
.tspro-ui .fil-sec-head:has(> span[id$="-status-txt"]) { font-size: 0; }
/* ▸N366 §378 */
@media (max-width: 900px) { .tspro-ui .da-grid { grid-template-columns: 1fr; } }

/* ▸N367 */
.tspro-ui .opt-col  { align-self: stretch; position: relative; }   /* §1536: Bezug fuer die Aufklappliste */

/* ▸N368 */
/* ▸N369 §726 */

/* ▸N370 */
.tspro-ui .opt-col > * { order: 500; }
.tspro-ui .opt-col > .opt-head { order: 0; }
.tspro-ui .opt-col > #o_neu { order: 100; }
.tspro-ui .opt-col > #o_bearbeiten, .tspro-ui .opt-col > #o_bearb,
.es-wrap .opt-col > #es-edit { order: 110; }
.tspro-ui .opt-col > #o_speichern, .tspro-ui .opt-col > #o_speich,
.es-wrap .opt-col > #es-save { order: 120; }
.tspro-ui .opt-col > #o_abbrechen, .tspro-ui .opt-col > #o_abbr { order: 130; }
.tspro-ui .opt-col > #o_suche, .tspro-ui .opt-col > #o_suchen,
.tspro-ui .opt-col > #o_x_suche, .tspro-ui .opt-col > #o_x_suchen,
.tspro-ui .opt-col > #o_x_suchen_nr { order: 200; }
.tspro-ui .opt-col > #o_x_suchen_beleg { order: 205; }
.tspro-ui .opt-col > #o_x_suchen_lieferant { order: 210; }
.tspro-ui .opt-col > #o_zurueck, .tspro-ui .opt-col > #o_prev { order: 300; }
.tspro-ui .opt-col > #o_vor, .tspro-ui .opt-col > #o_next { order: 310; }
.tspro-ui .opt-col > #o_letzte { order: 320; }
.tspro-ui .opt-col > #o_uebernehmen { order: 330; }
.tspro-ui .opt-col > #o_ueb_zurueck { order: 340; }
.tspro-ui .opt-col > #o_ueb_abbrechen { order: 350; }
.tspro-ui .opt-col > #o_drucken { order: 400; }
.tspro-ui .opt-col > #o_loeschen, .tspro-ui .opt-col > #o_loesch { order: 135; }   /* ▸N372 */
.tspro-ui .opt-col > .opt-menue-knopf, .tspro-ui .opt-col > .opt-menue-liste { order: 600; }

/* §1538 BAUKASTEN — FELDBREITE FOLGT DEM INHALT (Joerg 23.09.2026, zuerst nur Artikel; Inventur Kachelfelder 23.09.):
   Typklasse am Feld, Stufe aus der Leiter. Ohne Typklasse bleibt ein Feld fliessend (Text, Langtext). */
.tspro-ui [class*=" fb-"], .tspro-ui [class^="fb-"] { box-sizing: border-box; }
/* §1808 (Joerg: zentral): fb-Feldbreiten gelten in Masken UND Dialogen (.ts-dlg-box liegt ausserhalb von .tspro-ui). Eigener Dialogselektor .ts-dlg-box .b (0,3,0):
   die Dialog-Grundregel .ts-dlg-box .b input:where(…) {width:100%} hat (0,2,1) und schlug (0,2,0). Selektorliste statt :is(), damit die Masken bei (0,2,0) bleiben. */
.tspro-ui .fb-nummer, .ts-dlg-box .b .fb-nummer  { width: var(--fb-120); flex: 0 0 var(--fb-120); justify-self: start; }
.tspro-ui .fb-datum, .ts-dlg-box .b .fb-datum   { width: var(--fb-120); flex: 0 0 var(--fb-120); justify-self: start; }
.tspro-ui .fb-betrag, .ts-dlg-box .b .fb-betrag  { width: var(--fb-140); flex: 0 0 var(--fb-140); justify-self: start; }
.tspro-ui .fb-prozent, .ts-dlg-box .b .fb-prozent { width: var(--fb-64);  flex: 0 0 var(--fb-64);  justify-self: start; }   /* §1543: 90 war zu gross fuer "19 %" */
.tspro-ui .fb-anzahl, .ts-dlg-box .b .fb-anzahl  { width: var(--fb-64);  flex: 0 0 var(--fb-64);  justify-self: start; }
.tspro-ui .fb-auswahl, .ts-dlg-box .b .fb-auswahl { width: var(--fb-220); flex: 0 0 var(--fb-220); justify-self: start; }
.tspro-ui .fb-text, .ts-dlg-box .b .fb-text    { width: var(--fb-320); flex: 0 0 var(--fb-320); justify-self: start; }   /* §1540 (Joerg: feste Stufen statt fliessend) */

.tspro-ui .fb-270, .ts-dlg-box .b .fb-270     { width: var(--fb-270); flex: 0 0 var(--fb-270); justify-self: start; }
.tspro-ui .fb-420, .ts-dlg-box .b .fb-420     { width: var(--fb-420); flex: 0 0 var(--fb-420); justify-self: start; }   /* §3647 Leiterstufe 420 (Mandantenauswahl Acronis: längster Name ~330 px) */   /* §1541: varchar(30) */
   /* §1544: Artikelpreise — hoechster Bestandswert 12.652,08 (9 Zeichen) */
.tspro-ui .fb-170, .ts-dlg-box .b .fb-170     { width: var(--fb-170); flex: 0 0 var(--fb-170); justify-self: start; }   /* §1542: laengster Wert + eine Sicherheitsstufe (Kategorie: 15 Zeichen genutzt von 50) */
.tspro-ui .fb-voll, .ts-dlg-box .b .fb-voll    { width: 100%; justify-self: stretch; }   /* nur Artikelname/Bezeichnungen, die die Kachel fuellen sollen */
   /* §1540 LANGTEXT-LEITER: 2 / 4 / 8 Zeilen */

   /* §1536: Aufklappmenues stehen am Ende der Spalte, in Quelltextreihenfolge (Umwandeln, Springen, Werkzeuge) */

/* ▸N373 */

/* ▸N374 */
.tspro-ui .fil-sec:last-child { margin-bottom: 0; }

/* ▸N375 */
.tspro-ui .be-main  > :last-child,
.tspro-ui .art-main > :last-child,
.tspro-ui .bib-main > :last-child,
.tspro-ui .dv-main  > :last-child,
.tspro-ui .es-main  > :last-child,
.tspro-ui .her-main > :last-child,
.tspro-ui .kt-main  > :last-child,
.tspro-ui .kd-main  > :last-child,
.tspro-ui .lg-main  > :last-child,
.tspro-ui .lf-main  > :last-child,
.tspro-ui .ma-main  > :last-child,
.tspro-ui .wb-main  > :last-child { flex: 1 1 auto; min-height: 0; }

/* ▸N376 */
/* ▸N377 */
.tspro-ui .bhk-cols { align-items: stretch; flex: 1 1 auto; min-height: 0; }
/* ▸N378 */
.tspro-ui .bhk-cols > .fil-sec { display: flex; flex-direction: column; min-height: 0; margin-bottom: 0; }
.tspro-ui .bhk-cols > .fil-sec > .fil-sec-body { flex: 1 1 auto; min-height: 0; }

/* ▸N379 */
.ts-dlg { position: fixed; inset: 0; background: rgba(0,0,0,.4); display: none; align-items: center; justify-content: center; z-index: 50;
           /* ▸N380 */
           font-family: var(--ts-font);
           color: var(--ts-ink); }
/* ▸N381 §579 */
.ts-dlg.ovl2 { z-index: 10600; }
.ts-dlg.ovl3 { z-index: 10605; }   /* §1898: dritte Dialogebene (aus ovl2 heraus, z. B. Seriennummern im Wareneingang aus Rechnung) — Ebenenleiter K-399: 10600 ovl2 < 10605 ovl3 < 10610 tsst < 10650 je-such-vorn < 10700 ecopdf */
.ts-dlg-box { background: var(--ts-panel-bg); border-radius: 12px; min-width: var(--dlg-w-schmal); max-width: var(--dlg-w-schmal); overflow: hidden; box-shadow: var(--ds-schatten-dialog); display: flex; flex-direction: column; height: var(--dlg-h-schmal); max-height: 94vh; }   /* ▸N383 §1308 */
/* ▸N384 */
.ts-dlg-box:has(.ts-dlg-gross), .ts-dlg-box.ts-dlg-gross { max-width: min(var(--dlg-w-gross), 94vw); width: min(var(--dlg-w-gross), 94vw); height: var(--dlg-h-gross); }   /* §1307/§1308 Stufe gross 1400x740 */
/* ▸N385 §1322 */
.ts-ovl .ts-ma-box.ts-dlg-mittel { width: var(--dlg-w-mittel); }   /* §1322: Stufenklasse auch an Overlay-Boxen */
/* ▸N386 §1322 */
.ts-ovl .ts-ma-box > .ts-setup-form { flex: 1 1 auto; min-height: 0; overflow: auto; }
.ts-ovl .ts-ma-box > .ts-setup-form > .dlg-fuss { position: sticky; bottom: 0; background: var(--ts-panel-bg); }   /* ▸N387 §1322 */
/* ▸N388 §483d */
/* ▸N389 §495d §483d §486c */

.ts-dlg-box:has(.ts-dlg-mittel), .ts-dlg-box.ts-dlg-mittel { max-width: min(var(--dlg-w-mittel), 94vw); width: min(var(--dlg-w-mittel), 94vw); height: var(--dlg-h-mittel); }   /* §1390 Joerg: Kunden-/Lieferanteninfo und Telefonliste in Stufe mittel (wie Kontoabruf) — schmal war zu klein */   /* §1307/§1308 Stufe mittel 720x520 */
.ts-dlg-box:has(.ts-dlg-breit), .ts-dlg-box.ts-dlg-breit { max-width: min(var(--dlg-w-breit), 94vw);  width: min(var(--dlg-w-breit), 94vw); height: var(--dlg-h-breit); }    /* §1307/§1308 Stufe breit 900x620 */
.ts-dlg-box:has(.ts-dlg-weit), .ts-dlg-box.ts-dlg-weit { max-width: min(var(--dlg-w-weit), 94vw); width: min(var(--dlg-w-weit), 94vw); height: min(var(--dlg-h-weit), 94vh); }   /* §1391 Stufe weit 1150x680 */
.ts-dlg-box:has(.ts-dlg-voll), .ts-dlg-box.ts-dlg-voll { max-width: min(var(--dlg-w-voll), 96vw); width: min(var(--dlg-w-voll), 96vw); height: min(var(--dlg-h-voll), 92vh); max-height: min(var(--dlg-h-voll), 92vh); }   /* §1391 Stufe weit (war Sonderbreite 1100) */
.ts-dlg-box:has(.ts-dlg-hoch), .ts-dlg-box.ts-dlg-hoch, .ts-ovl .ts-ma-box.ts-dlg-hoch { height: var(--dlg-h-gross); max-height: 94vh; }   /* §3748 HINTER die Stufenregeln gerueckt (Jörg 28.10. 21:28, Tausch-Fenster: Wahlliste unsichtbar): gleiche Spezifitaet wie :has(.ts-dlg-mittel) — stand davor und verlor (§3323 kannte den toten Modifikator nur fuer Bank) */
.ts-dlg-box:has(.dlg-h-inhalt) { height: auto; }   /* §2730 Stufe mit HOEHE AUS DEM FESTEN INHALT (Breite der Stufe bleibt): nur fuer Fenster, deren Inhalt sich nie aendert (§2059 gewahrt) — Messung Manuelle Ueberweisung: feste 520 liessen ein Drittel leer, nichts kann sinnvoll wachsen; §2732 Kommentar war offen und verschluckte die Stufe breit */   /* §2752 hinter alle Stufen verschoben: stand vor breit/weit/voll und verlor bei gleicher Spezifitaet (0,2,0) — Fahrt nachtragen (breit) blieb 620 hoch */
/* §3308/§3309: .sepa_ck (SEPA-Export), .po_ck/.da_ck (Post-/Druckausgang) ausgebaut — die Ausgaenge nutzen die feste Stufe voll mit dlg-tbl-box */
.bcb { font-size: 13px; }
/* .bcb-bar → .dlg-leiste (§660) */
/* ▸N393 */
:is(.ts-dlg, .bc-main :where(.fen)) .obtn {
  height: var(--ts-btn-h); font-size: var(--ds-fs-knopf); padding: 0 12px; width: auto;   /* §722 */
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  border: 1px solid var(--such-bd-box); border-radius: var(--ds-radius);   /* ▸N394 §674 */
  background: var(--ts-panel-bg); color: var(--ts-ink); font-family: inherit; font-weight: 600; cursor: pointer;
}
.bcb-scroll { max-height: 420px; overflow: auto; }
.bcb-it { cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bcb-we  { padding: 6px 8px; font-weight: 700; }
.bcb-pos { padding: var(--ds-xs) var(--ds-s); }
.bcb-pos.aus { cursor: default; color: var(--ts-dis-fg); }
.bcb-lbl { padding: 4px 8px 4px 46px; }
.bcb-tgl, .bcb-tgl-leer { display: inline-block; width: 18px; text-align: center; }
.bcb-tgl { cursor: pointer; font-weight: 700; }
.bcb-kids { display: none; }
.bcb-kids.offen { display: block; }

/* ▸N395 */
.ts-dlg .sn-fehler { color: var(--ts-red); }
.ts-dlg .sn-leer, .ts-dlg .sn-laden { padding: var(--ds-m); color: var(--ts-gedaempft); }
.ts-dlg #ovl_snlist .it { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ts-dlg .snedit { border: 1px solid var(--such-bd-box); border-radius: 6px;
  background: var(--ts-panel-bg); cursor: pointer; padding: 2px 8px; font: inherit; }
/* ▸N398 §313 */

/* ▸N399 §220 */

/* ▸N400 *//* ▸N401 */
/* ▸N402 */
.tspro-ui .be-top { align-items: stretch; }
.tspro-ui .be-top > .fil-sec { display: flex; flex-direction: column; }
.tspro-ui .be-top > .fil-sec > .fil-sec-body { flex: 1; display: flex; flex-direction: column; }

/* ▸N403 */
/* ▸N404 */
.ts-dlg .dlg-tbl.lgp th, .ts-dlg .dlg-tbl.lgp td { white-space: nowrap; overflow: visible; text-overflow: clip; }   /* §313: Modifikator statt Klasse lgp-tbl */
/* ▸N405 §630 */
.ts-dlg .dlg-tbl.lgp td.lgp-umbruch, .ts-dlg .dlg-tbl.lgp td.eco-neu { white-space: normal; }
.ts-dlg .dlg-tbl.lgp th.sp-nr { width: var(--ts-sp-renr); }
/* ▸N406 */
.ts-dlg .dlg-tbl.lgp th.sp-datum { width: calc(var(--ts-sp-datum) + 16px); }.ts-dlg .lgp-scroll { max-height: var(--mw-lgp-scroll); overflow: auto; border: 1px solid var(--ts-panel-bd); border-radius: 6px; }
/* ▸N407 §679h §679g K-318 */
.ts-dlg .zd-such { display: flex; gap: 8px; align-items: center; margin: 0 0 8px; }
.ts-dlg .zd-such label { font-size: 13px; font-weight: 600; white-space: nowrap; }
.ts-dlg-box .b .zd-such input:where(:not([type="checkbox"]):not([type="radio"]):not([type="date"])) {
  width: var(--ts-fb-xl); height: 26px; margin-top: 0; box-sizing: border-box;
  border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); padding: 0 8px;
  font: inherit; font-size: 13px; background: var(--ts-panel-bg); }
.ts-dlg .zd-such .obtn { white-space: nowrap; flex: 0 0 auto; }
.ts-dlg .lgp-klick tbody tr.js-row { cursor: pointer; }
/* ▸N409 */
/* ▸N410 */
.tspro-ui a.tsp-link,
.ts-dlg a.tsp-link,
.je-such a.tsp-link,
.be-ov a.tsp-link,
.bib-wrap a.bib-link,
.bib-wrap .bib-link {
  color: inherit; text-decoration: none; cursor: pointer;   /* §4191 stiller Sprung: keine Linkfarbe, kein Unterstrich — Hinweis erst beim Drüberfahren (Regel unten) */
}
/* ▸N411 */
.ts-dlg .zr-grid { display: grid; grid-template-columns: auto 1fr auto 1fr;
  gap: 6px var(--ds-s); align-items: center; margin-top: var(--ds-m); }
.ts-dlg .zr-grid label { font-weight: 600; }
/* ▸N412 */
.ts-dlg .zr-grid input[type=date], .ts-dlg .zr-grid input.ts-datum { width: var(--ts-datum-w); max-width: 100%; margin-top: 0; }
/* ▸N415 */
/* ▸N416 K-200 */
input[type=date], input.ts-datum { width: var(--ts-datum-w); max-width: 100%; box-sizing: border-box; }
/* ▸N417 §152d */

input[type=date]::-webkit-datetime-edit-text { padding: 0; margin: 0; }
input[type=date]::-webkit-datetime-edit-fields-wrapper { padding: 0; }
input[type=date]::-webkit-datetime-edit { padding: 0; letter-spacing: 0; }
input[type=date]::-webkit-datetime-edit-day-field,
input[type=date]::-webkit-datetime-edit-month-field,
input[type=date]::-webkit-datetime-edit-year-field { padding: 0; }

/* ▸N418 */
.ts-dlg .adr-status { font-weight: 700; padding: 0 0 6px; }
.ts-dlg .adr-warn { color: var(--ts-red); font-size: 12px; padding: 0 0 6px; }
.ts-dlg .eco-alt { color: var(--ts-ro-fg); }
.ts-dlg .adr-diff { font-weight: 700; }
/* ▸N419 */
.ts-dlg-box .h { background: var(--ts-ink); color: var(--ts-sec-fg);
  padding: var(--ts-head-pad); font-size: var(--ts-head-fs); font-weight: var(--ts-head-fw);
  letter-spacing: var(--ts-head-ls);
  display: flex; align-items: center; justify-content: space-between; gap: 12px; }.ts-dlg-box .b { flex: 1 1 auto; min-height: 0; padding: 16px; font-size: 13px; overflow: auto;
             /* ▸N420 */
             white-space: pre-line; }
/* ▸N421 */
/* ▸N422 §679g K-318 */
.ts-dlg-box .b input:where(:not([type="checkbox"]):not([type="radio"]):not([type="date"])) { width: 100%; height: var(--ds-feld); box-sizing: border-box; padding: 0 8px; margin-top: 8px; border: 1px solid var(--ts-panel-bd); border-radius: 6px; font: inherit; }   /* ▸N423 */
/* ▸N424 */
.ts-dlg-box .b input[type="date"] { height: var(--ds-feld); box-sizing: border-box; padding: 0 8px; margin-top: 8px; border: 1px solid var(--ts-panel-bd); border-radius: 6px; font: inherit; }
/* ▸N425 */
/* ▸N426 §679g */
.ts-dlg-box .b input:where(:not([type="checkbox"]):not([type="radio"])) {
  height: var(--such-fld-h); font-size: 13px; }
.ts-dlg-box .f { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; padding: 0 16px 16px; }   /* ▸N427 */
/* ▸N428 */
/* ▸N429 §660b K-46 */
.ts-dlg-box .f button, .km-ov .km-btn, .bzq-box .dlg-fuss button, #m-wiz #wiz-foot > button { min-height: var(--ts-btn-h);   /* §4136: Artikel-Assistent Fußknöpfe = Dialogfuß (wie RMA-Assistent) */ height: var(--ts-btn-h);   /* §1532 */ font-size: 12px; padding: 3px 12px;   /* ▸N430 */ gap: 6px;   /* §3299 Betrags-Abfrage des Bezahlfensters (body-Overlay) gleiche Knoepfe */
             border: 1px solid var(--ts-line); border-radius: 6px; background: var(--ts-panel-bg);
             color: var(--ts-ink); cursor: pointer;
             font-family: inherit; font-weight: 600; }
/* ▸N432 §679e */
.ts-dlg .tspro-ui select, .ts-dlg select, .ts-ovl select, .je-such select, .bib-wrap select, #art-ovl select, .be-ov select, .es-wrap select, .art-wrap select, .ts-app select {
  -webkit-appearance: none; -moz-appearance: none; appearance: none;
  height: var(--ds-zeile); box-sizing: border-box; padding: 0 26px 0 8px;
  font: inherit; font-size: 13px; color: var(--ts-ink);
  background-color: var(--ds-feld-bg); border: 1px solid var(--ts-edit-bd); border-radius: 4px;
  outline: none; cursor: pointer;
  background-image: var(--ts-chevron);   /* §709 */
  background-repeat: no-repeat; background-position: right var(--ds-s) center;
}
.ts-dlg-box .f button.prim, .km-ov .km-btn.prim, .bzq-box .dlg-fuss button.prim, #m-wiz #wiz-foot > button.prim { background: var(--ts-ink); color: var(--ts-sec-fg); border-color: var(--ts-ink); }   /* ▸N433 */   /* §3299 */

/* ▸N434 */
.be-box .ovl-mj { display: flex; gap: 8px; margin-top: 10px; }
.ts-dlg-box .ovl-mj { display: flex; gap: var(--ds-s); margin-top: var(--dlg-zone); }   /* §1419: Monatswahl im Dialog — Abstand wie jede Feldreihe */
.ts-dlg-box .ovl-mj select { height: var(--ts-btn-h); }
/* §1436v: DYMO-Vorschau vor dem Druck — massstaebliches SVG des Etiketts */
.ts-dlg-box .bcv { margin: 0; }
.ts-dlg-box .bcv-box { background: var(--ts-panel-bd); padding: var(--dlg-zone); border-radius: var(--ds-radius); }
.ts-dlg-box .bcv-svg { display: block; width: 100%; height: auto; }
.ts-dlg-box .bcv-etikett { fill: var(--ts-panel-bg); stroke: var(--ts-ink); stroke-width: 1.5; }
.ts-dlg-box .bcv-tot { fill: var(--ts-panel-bd); }
.ts-dlg-box .bcv-rand { fill: none; stroke: var(--ts-ink); stroke-width: 1.5; }   /* §1436w */
.ts-dlg-box .bcv-qr { fill: none; stroke: var(--ts-akzent); stroke-width: 2; stroke-dasharray: 6 4; }
.ts-dlg-box .bcv-qrtxt { fill: var(--ts-akzent); font-size: var(--ts-fs-bcv-qr); text-anchor: middle; dominant-baseline: middle; }
.ts-dlg-box .bcv-txt { fill: var(--ts-ink); font-size: var(--ts-fs-bcv); font-weight: 700; font-family: Helvetica, Arial, sans-serif; }
.ts-dlg-box .bcv figcaption { margin-top: var(--ds-s); font-size: var(--ts-tab-fs); }
.be-box .ovl-mj select { flex: 1 1 auto; height: 32px; box-sizing: border-box; padding: 0 8px;
           border: 1px solid var(--ts-panel-bd); border-radius: 6px;
           font: inherit; background: var(--ts-panel-bg); color: inherit; cursor: pointer; }   /* §698 */

/* ▸N435 */
/* datenabgleich — Status des Sync-Skripts */

/* druckvorlagen — Status der Vorlagen-Pruefung */

/* ▸N436 */

.es-test-result { margin: 6px 2px 0; font-size: 13px; padding: 8px 10px; border-radius: 6px; display: none; }
.es-test-result.err { display:block; background:var(--ts-meld-err-bg); color:var(--ts-red); border:1px solid var(--ts-meld-err-bd); }
.es-test-result .es-test-msg { font-weight:700; }

/* ▸N437 */
.tspro-ui .bhk-betrag-aus      { color: var(--ts-red); font-weight: 700; white-space: nowrap; }
.tspro-ui .bhk-summe           { display: flex; gap: 18px; align-items: baseline; flex-wrap: wrap; }
.tspro-ui .bhk-summe-2         { margin-left: auto; }
.tspro-ui .bhk-summe-2 b       { color: var(--ts-red); }

/* ▸N438 */
.ts-status-txt { font-size: var(--ts-head-fs); font-weight: 500; opacity: .8; margin-left: 10px; }   /* §1380: Zusatz-Status hinter einem Titel — eine Groesse (war 14/17 geerbt) */

/* ▸N440 */

/* ▸N441 */
/* links: 1/3 Suche  ·  2/3 Belege *//* Suchtreffer-Zeilen anklickbar */

/* rechts: Aktionen + Detail *//* ▸N442 *//* ▸N443 */
/* ▸N444 *//* ▸N445 */
.be-ov .lb-bestand { padding: 6px 10px; margin: 0 0 8px; background: var(--ts-panel-bg); color: var(--ts-ro-fg);   /* §692e */
  border: 1px solid var(--ts-panel-bd); border-radius: 6px; font-size: 13.5px; }   /* 25.07.: von 12 auf 13.5px (Jörg: Schrift groesser) */
.je-such .lb-fbtn, .be-ov .lb-fbtn       { display: flex; align-items: center; justify-content: space-between;
                        width: 100%; height: 26px; padding: 0 var(--ds-s); gap: 6px;
                        border: 1px solid var(--ts-line); border-radius: 6px; background: var(--ts-panel-bg);
                        font-size: 12px; cursor: pointer; font-family: inherit;
                        color: var(--ts-ink); }
.be-ov .lb-fbtn b     { font-size: var(--ds-fs-hinweis); opacity: .7; font-weight: 700; }

/* Detail-Kachel *//* Suchleiste sitzt in der oberen linken Kachel */

/* ▸N446 */
/* ▸N447 */

/* ▸N448 */
.je-such.asaus td.as-prod   { max-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Sprung-Links in der Belegliste (waren inline gestylt) */
/* ▸N449 */
.je-tip {
  position: fixed; z-index: 10800; display: none;   /* ▸N450 §1142 */
  max-width: 520px; padding: 7px 10px;
  background: var(--ts-ink-hover); color: var(--ts-sec-fg);
  border-radius: 6px; box-shadow: 0 6px 20px rgba(0,0,0,.28);
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  font-size: 12.5px; line-height: 1.45;
  white-space: normal; word-break: break-word;
  pointer-events: none;               /* darf den Mauszeiger nie abfangen */
}

/* ▸N451 */
.be-ov .js-grid      { flex: 1; display: grid; grid-template-columns: 1fr var(--such-col);
                       gap: var(--such-gap); padding: var(--such-pad);
                       min-height: 0; height: 100%; box-sizing: border-box; }

/* ▸N452 */
.be-ov .js-left      { display: grid; grid-template-rows: 1fr 2fr; gap: var(--such-gap); min-height: 0; }.be-ov .js-teil { display: flex; flex-direction: column; min-height: 0;
                       border: 1px solid var(--such-bd-box); border-radius: 6px; overflow: hidden; }

/* Suchfeld in einem Teil (Standard-Suchleiste) */
.be-ov .js-such      { flex: none; display: flex; align-items: center; gap: 8px;
                       padding: 8px; border-bottom: 1px solid var(--ts-trenn); }
.be-ov .js-such label{ font-size: 12.5px; font-weight: 700; white-space: nowrap;
                       color: var(--ts-ink); }
.be-ov .js-such input{ flex: 1 1 auto; height: var(--such-fld-h); font: inherit; font-size: 13px;
                       padding: 0 10px; border: 1px solid var(--such-bd);
                       border-radius: var(--such-btn-r); background: var(--ts-panel-bg);
                       color: var(--ts-ink); }
.be-ov .js-leer      { padding: 10px; font-size: 12.5px; color: var(--such-muted); }

/* rechts: Kacheln */
.be-ov .js-right     { display: grid; grid-template-rows: auto auto 1fr;
                       gap: var(--such-gap); min-height: 0; }
/* ▸N454 */.be-ov .js-kachel    { border: 1px solid var(--such-bd-box); border-radius: 6px;
                       padding: var(--such-pad); align-self: start;
                       display: flex; flex-direction: column; gap: var(--ts-btn-gap); }   /* §722 */
.be-ov .js-detail    { border: 1px solid var(--such-bd-box); border-radius: 6px;
                       padding: var(--such-pad); overflow: auto; min-height: 0;
                       font-size: 12.5px; line-height: 1.5; color: var(--such-muted); }
/* ▸N455 */
.be-ov .js-kachel .obtn { display: flex; align-items: center; justify-content: center;
                          width: var(--ts-btn-w); height: var(--such-btn-h); font-size: var(--such-btn-fs);   /* §722b: Breite am Ort statt Nachtrag */
                          padding: 0 var(--ds-s); border: 1px solid var(--such-bd);
                          border-radius: var(--such-btn-r); background: var(--ts-panel-bg);
                          color: var(--ts-ink); font-family: inherit;
                          font-weight: var(--such-btn-fw); cursor: pointer; }

/* ▸N456 */
/* ▸N457 */
.be-ov a.js-jump,
.je-such a.js-jump,
/* ▸N458 */
.be-ov a.js-jump:hover,
.je-such a.js-jump:hover { color: var(--ts-akzent); }

/* Trefferzeilen */
.be-ov tr.js-row       { cursor: pointer; }

/* ▸N459 */
/* ▸N460 */
.be-ov .js-teil table { table-layout: fixed; width: 100%; }.be-ov .js-listwrap { flex: 1; overflow: auto; min-height: 0; width: 100%; }
.be-ov td.js-prod       { max-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Detail-Kachel */
.be-ov .js-d-nr      { font-size: 13px; font-weight: 700; color: var(--ts-ink); }
.be-ov .js-d-s       { font-weight: 700; margin: 4px 0 6px; color: var(--ts-ink); }
.be-ov .js-d-z       { font-size: 12px; }

/* ▸N461 */
.je-such { position: fixed; inset: 0; z-index: 9500;
           background: rgba(24,24,27,.5);
           display: flex; align-items: center; justify-content: center;
           font-family: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; }
/* §796 (T4): .js-x -> .ts-x */

/* Raster + Kacheln wie im Popup */
.je-such .js-grid { flex: 1; display: grid; grid-template-columns: 1fr var(--such-col);
                    gap: var(--such-gap); padding: var(--such-pad);
                    min-height: 0; box-sizing: border-box; }
.je-such .js-left      { display: grid; grid-template-rows: 1fr 2fr; gap: var(--such-gap); min-height: 0; }
.je-such .js-left-1    { grid-template-rows: 1fr; }      /* nur EINE Liste */.je-such .js-teil      { display: flex; flex-direction: column; min-height: 0;
                         border: 1px solid var(--such-bd-box); border-radius: 6px; overflow: hidden; }
.je-such .js-listwrap  { flex: 1 1 0; overflow: auto; min-height: 0; max-height: none; width: 100%; }
.je-such .js-leer      { padding: 10px; font-size: 12.5px; color: var(--such-muted); }
/* ▸N463 */
/* ▸N464 */
.tspro-ui .be-storno { color: var(--ts-red); font-size: var(--ds-fs-hinweis); font-weight: 700; margin-left: 4px; }

.je-such tr.js-leerzeile > td,
.be-ov  tr.js-leerzeile > td { padding: 0 8px; font-size: var(--ts-tab-fs); color: var(--such-muted);
                               white-space: nowrap; text-overflow: ellipsis; overflow: hidden; }

.je-such .js-such      { flex: none; display: flex; align-items: center; gap: 8px;
                         padding: 8px; border-bottom: 1px solid var(--ts-trenn); }
.je-such .js-such label{ font-size: 12.5px; font-weight: 700; white-space: nowrap;
                         color: var(--ts-ink); }
.je-such .js-such input{ flex: 1 1 auto; height: var(--such-fld-h); font: inherit; font-size: 13px;
                         padding: 0 10px; border: 1px solid var(--such-bd);
                         border-radius: var(--such-btn-r); background: var(--ts-panel-bg);
                         color: var(--ts-ink); }

.je-such .js-right     { display: grid; grid-template-rows: auto 1fr; gap: var(--such-gap); min-height: 0; }
.je-such .js-kachel    { border: 1px solid var(--such-bd-box); border-radius: 6px;
                         padding: var(--such-pad); align-self: start;
                         display: flex; flex-direction: column; gap: var(--ts-btn-gap); }   /* §722 */
.je-such .js-detail    { border: 1px solid var(--such-bd-box); border-radius: 6px;
                         padding: var(--such-pad); overflow: auto; min-height: 0;
                         font-size: 12.5px; line-height: 1.5; color: var(--such-muted); }

/* ▸N465 */
.je-such .js-kachel .obtn { display: flex; align-items: center; justify-content: center;
                            width: var(--ts-btn-w); height: var(--such-btn-h); font-size: var(--such-btn-fs);   /* §722b: Breite am Ort statt Nachtrag */
                            padding: 0 var(--ds-s); border: 1px solid var(--such-bd);
                            border-radius: var(--such-btn-r); background: var(--ts-panel-bg);
                            color: var(--ts-ink); font-family: inherit;
                            font-weight: var(--such-btn-fw); cursor: pointer; }

/* Listen + Trefferzeilen */
/* ▸N466 */
.je-such .be-tbl       { table-layout: fixed; }
.je-such tr.js-row       { cursor: pointer; }
.je-such td.js-prod    { max-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* ▸N467 */
/* ▸N468 */
/* ▸N469 §223 */
/* ▸N470 §630 */

/* ▸N471 R-1.3 §152d */
/* ▸N472 §827 */
.je-such .js-beleg .lf-be-tbl th.sp-belegnr,
.je-such .js-beleg .lf-be-tbl td.sp-belegnr  { width: calc(var(--ts-sp-belegnr) + var(--ts-sp-pad)); }
.je-such .js-beleg .lf-be-tbl th.sp-datum,
.je-such .js-beleg .lf-be-tbl td.sp-datum    { width: calc(var(--ts-sp-datum) + var(--ts-sp-pad)); }
.je-such .js-beleg .lf-be-tbl th.sp-geld,
.je-such .js-beleg .lf-be-tbl td.sp-geld     { width: calc(var(--ts-sp-geld) + var(--ts-sp-pad)); text-align: right; }
.je-such .js-beleg .lf-be-tbl th.js-prod,
.je-such .js-beleg .lf-be-tbl td.js-prod     { width: auto; min-width: var(--ts-sp-min-produkt); max-width: 0; }
.je-such .js-d-nr      { font-size: 13px; font-weight: 700; color: var(--ts-ink); }
.je-such .js-d-s       { font-weight: 700; margin: 4px 0 6px; color: var(--ts-ink); }
.je-such .js-d-z       { font-size: 12px; }

/* ▸N473 */
.je-such .js-foot.bm-kopfzeile { border-bottom: 1px solid var(--ts-trenn); }
.je-such .bm-letzte            { margin-top: 10px; }
.je-such a.bm-shop             { color: var(--ts-akzent); font-weight: 700; text-decoration: none; }

/* ▸N474 K-47 */.je-such .be-tbl td.num.neg     { color: var(--ts-red); font-weight: 700; }

/* ▸N475 */
.tspro-ui .kalk-neg { color: var(--ts-red); font-weight: 700; }
.tspro-ui .kalk-pos { color: var(--ts-akzent-dark); }

/* ▸N476 K-47 */
/* ▸N477 §660 */
.ts-ovl .obtn, .be-ov .obtn, .ts-memo-ov .obtn { border: 1px solid var(--ts-line); border-radius: var(--ds-radius); background: var(--ts-panel-bg); color: var(--ts-ink);
                          height: var(--ts-btn-h); font-size: var(--ds-fs-knopf); padding: 0 var(--ds-s); gap: 6px;   /* §722 */
                          display: inline-flex; align-items: center; justify-content: center;
                          cursor: pointer; font-family: inherit; font-weight: 600; }
.ts-ovl .obtn.danger, .be-ov .obtn.danger, .ts-memo-ov .obtn.danger { background: var(--ts-red); color: var(--ts-sec-fg); border-color: var(--ts-red); }

.ts-ovl .be-tbl        { width: 100%; border-collapse: collapse; font-size: var(--ts-tab-fs); margin-top: 8px; }
.ts-ovl .be-tbl th     { text-align: left; font-weight: 700; padding: var(--ts-tab-th-pad);
                          border-bottom: 1px solid var(--ts-panel-bd); background: var(--ts-flaeche); }
.ts-ovl .be-tbl td     { padding: 0 8px; height: var(--ts-tab-td-h); border-bottom: 1px solid var(--ts-trenn); }
.ts-ovl .js-leer       { padding: var(--ds-m) 4px; color: var(--ts-gedaempft); font-size: 12px; }

/* ▸N478 */
/* ▸N479 §679t §679o */

/* ▸N480 */
.tspro-ui .ma-usig-zeile { align-items: start; margin-top: 8px; }
.tspro-ui .ma-usig       { display: flex; align-items: flex-start; gap: 10px; }
.tspro-ui .ma-usig-box   { width: 240px; height: 80px; flex: none;
                              border: 1px solid var(--such-bd-box); border-radius: 6px;
                              background: var(--ts-panel-bg); display: flex; align-items: center;
                              justify-content: center; overflow: hidden; }
.tspro-ui .ma-usig-box img  { max-width: 100%; max-height: 100%; object-fit: contain; display: none; }
.tspro-ui .ma-usig-leer     { font-size: var(--ds-fs-hinweis); color: var(--such-muted); }
/* ▸N481 */
.tspro-ui .ma-usig-box.hat-bild img  { display: block; }
.tspro-ui .ma-usig-box.hat-bild .ma-usig-leer { display: none; }
.tspro-ui .ma-usig-btns     { display: flex; flex-direction: column; gap: 5px; }
.tspro-ui .ma-usig-btns .obtn { white-space: nowrap; min-width: 120px; }
/* ▸N485 §630 */
.wb-wrap .tbl-box thead th.flag-num,
.wb-wrap .tbl-box tbody td.flag-num { width: 60px; min-width: 60px; max-width: 60px;
                 text-align: center; padding-left: 6px; padding-right: 6px; }

/* §801 (T6): .wb-leg -> .pos-leg */
.wb-leg-i      { display: inline-flex; align-items: center; gap: 5px;
                 font-size: 12px; color: var(--ts-ink); white-space: nowrap; }
.wb-leg-i b    { display: inline-flex; align-items: center; justify-content: center;
                 min-width: 17px; height: 17px; padding: 0 3px;
                 background: var(--ts-ink); color: var(--ts-sec-fg);
                 border-radius: 3px; font-size: var(--ds-fs-hinweis); font-weight: 700; }

/* ▸N488 §689 §687 */
.pos-leg        { margin-left: auto; display: flex; align-items: center; gap: 12px;
                  flex-wrap: wrap; }
.pos-leg-i { display: inline-flex; align-items: center; gap: 5px;
                  font-size: var(--ds-fs-text); color: var(--ts-ink); white-space: nowrap; }
/* ▸N489 §689c */
.pos-leg-i i    { display: inline-block; width: var(--ds-checkbox);
                  height: var(--ds-checkbox); border-radius: 3px; flex: 0 0 auto;
                  background: var(--ts-pos-grau); }
.pos-leg-i.l-teil  i { background: var(--ts-pos-teil-erl); }
.pos-leg-i.l-alt   i { background: var(--ts-pos-alt-erl); }
.pos-leg-i.l-ohnedok i { background: var(--ts-akzent-dark); }   /* ▸N490 §964 */
.pos-leg-i.l-roh   i { background: var(--ts-ink-muted); }   /* §964: Kassenbeleg roh (.bhk-roh) */
.pos-leg-i.l-dl    i { background: var(--ts-pos-dl-erl); }
.pos-leg-i.l-nlief i { background: var(--ts-pos-nlief-erl); }
/* ▸N491 §689b */

/* ▸N492 */

/* ▸N493 */
.tspro-ui tr.ls-blau td,
tr.ls-blau td{color:var(--ts-link)}
.tspro-ui tr.ls-blau td:first-child,
tr.ls-blau td:first-child{box-shadow:inset 3px 0 0 var(--ts-link)}

/* ▸N494 §687i §687b */

/* ▸N495 */

/* ▸N496 */
.je-such .js-box.js-box-breit{width:var(--such-w-max);max-width:var(--such-w-max)}

/* ▸N497 */
.ts-memo-ov{position:fixed;inset:0;z-index:10602;display:flex;align-items:center;
  justify-content:center;background:rgba(0,0,0,.35)}
.ts-memo-box{width:min(680px,94vw);max-height:80vh;display:flex;flex-direction:column;
  background:var(--ts-panel-bg);border:1px solid var(--ts-panel-bd);border-radius:8px;
  box-shadow:0 10px 34px rgba(0,0,0,.28);font-family:var(--ts-font)}
.ts-memo-head{display:flex;align-items:center;justify-content:space-between;
  padding:var(--ts-head-pad);background:var(--ts-ink);color:var(--ts-sec-fg);
  font-size:var(--ts-head-fs);font-weight:var(--ts-head-fw);
  border-radius:8px 8px 0 0}
.ts-memo-txt{flex:1;min-height:220px;margin:10px;padding:8px;/* resize:none aus Grundregel (17), §219c */   /* ▸N498 K-42 */
  border:1px solid var(--ts-panel-bd);border-radius:6px;
  font:13px/1.45 var(--ts-font)}
/* ▸N501 §660 */
/* ▸N502 §660 */
/* ▸N503 §660 */

/* ▸N504 */
.tspro-ui td input.ts-memofeld{width:100%;box-sizing:border-box;cursor:pointer;
  border:1px solid transparent;border-radius:0;padding:2px 4px;font:inherit;   /* ▸N505 §781 §705 */
  background:transparent;text-overflow:ellipsis}

/* ▸N506 */
/* ▸N520 */
#m-wiz .mw{width:var(--wiz-w);height:var(--wiz-h);
  max-width:none;max-height:none;display:flex;flex-direction:column}

/* ▸N531 §713 §700 */
.tspro-ui, .ts-dlg, .ts-ovl, .be-ov, .je-such {
  cursor: default;
  /* §1531: Spaltenbreiten aus dem Block N958 (vorher eigener Block gleichen Selektors) */
  /* ---- NUMMERN (Stellenzahl aus der DB ausgezaehlt) ---- */
  --ts-sp-artnr:      100px;  /* §4058 Kopf „Artikelnummer" ausgeschrieben (§4020): gemessen 118 px th inkl. 20 px Polster = 98 Text > alter Wert 84 */
  --ts-sp-kdnr:        90px;  /* Kopf „Kunden-Nr." 90.0 > Wert 00956411 76.6       */
  --ts-sp-katnr:      104px;  /* Kopf „Kategorie-Nr." 103.6                        */
  --ts-sp-eignr:      110px;  /* ▸N959 §251 §239 */
  --ts-sp-hernr:      106px;  /* Kopf „Hersteller-Nr." 104.9                       */
  --ts-sp-renr:       114px;  /* Kopf „Rechnungs-Nr." 112.9 > 98-00007187 99.4     */
  --ts-sp-belegnr:    100px;  /* Wert 98-00007187 99.4 > Kopf „Beleg-Nr." 77.5     */
  --ts-sp-pos:         48px;  /* ▸N960 §296 */
  /* ▸N961 §253 */
  --ts-sp-belegpos:    84px;  /* Kopf „Beleg-Nr." 83.5 > Wert 4-stellig 46.1       */
  /* ---- DATUM UND ZEIT ---- */
  --ts-sp-datum:       82px;  /* Wert 31.12.2026 82.0 > Kopf „Datum" 58.5          */
  --ts-sp-datum-lang: 130px;  /* Kopf „Rechnungsdatum" 129.3 — Kopf entscheidet    */
  --ts-sp-zeit:       156px;  /* Wert 03.08.2026 21:02:29 155 bei 13 px (§1379)     */
  /* ▸N962 §253 */
  /* ▸N963 §253 */
  /* ▸N964 */
  /* ▸N965 R-1.3 R-1.2 */
  --ts-sp-geld:  var(--pos-num-w);   /* EK, VK, Summe, Betrag — eine Breite  */
  --ts-sp-ek:    var(--pos-num-w);   /* EK ist eine Preisspalte, keine eigene */
  --ts-sp-anz:         48px;  /* bis 4-stellig (Rechpos.anzahl max 4 Stellen)      */
  --ts-sp-mwst:        54px;  /* Kopf „MwSt" 52.6 > Wert 19,0 41.0                 */
  --ts-sp-proz:        66px;  /* Wert 100,0 % 64.6                                 */
  --ts-sp-kalk:        74px;  /* §4077 Kopf „Kalkulation“ 91 px gemessen (1892x1010) > sp-proz 66+20=86 — Kopf wurde mit … abgeschnitten */
  --ts-sp-stkl:        64px;  /* §4077 Kopf „Stückliste“ 81 px gemessen > sp-pos 48+20=68 — Überhang 13 px = Links-Rechts-Scrollbalken der Positionstabellen */
  --ts-sp-skr04:       62px;  /* Kopf „SKR04" 60.5 > Wert 8400 48.7                */
  --ts-sp-lagerzahl:   56px;  /* AF/AR/AE/AP/AG — Koepfe 33-35, Wert entscheidet. §3061: Minusbestand „-306“ fett (td.r.neg) ≈ 31 px + 16 px Polster > 48 — zeigte „-3“ (Joerg 21:24) */
  /* ---- KENNUNGEN FESTER LAENGE ---- */
  --ts-sp-pid:        156px;  /* ProduktID 18-stellig 155.4                        */
  --ts-sp-plz:         54px;  /* Wert 12345 54.0 > Kopf „PLZ" 41.0                 */
  /* ---- KURZTEXT MIT BEKANNTER OBERGRENZE ---- */
  --ts-sp-res-status: 200px;
  --ts-bv-proz:        84px;  /* §2790 Prozentfeld „100,00 %" neben dem Betrag (Kalkulationskachel) */  /* §2769 „Reserviert ohne Produkt-ID" im Reservierungsfenster */
  --ts-sp-status:      60px;  /* Kopf „Status" 58.2                                */
  --ts-sp-zahlart:    106px;  /* Wert „vierteljaehrlich" 104.6 (Rhythmus-Spalte!)  */
  /* ▸N966 */
  --ts-sp-min-produkt:      68px;   /* Kopf „Produkt" 67.4        */
  --ts-sp-min-kategorie:    80px;   /* Kopf „Kategorie" 78.6      */
  /* ▸N967 §1254 */
  --ts-sp-min-ort:          38px;   /* Kopf „Ort" 37.2            */
  --ts-sp-min-seriennr:    112px;   /* Kopf „Seriennummer" 111.0  */
  --ts-sp-min-apartner:    128px;   /* Kopf „Ansprechpartner" 126.2 */
  /* §1531: aus dem Block N1012 */
  /* ▸N1013 §239 R-4.8 R-2.9 */
  --ts-sp-nr:   100px;
  /* ▸N1014 */
  --ts-sp-mail: 200px;
  /* ▸N1015 */
  --ts-sp-fil:   62px;
}
.tspro-ui input:enabled:not([readonly]):not([type=checkbox]):not([type=radio]):not([type=button]):not([type=submit]),
.ts-dlg   input:enabled:not([readonly]):not([type=checkbox]):not([type=radio]):not([type=button]):not([type=submit]),
.ts-ovl   input:enabled:not([readonly]):not([type=checkbox]):not([type=radio]):not([type=button]):not([type=submit]),
.be-ov    input:enabled:not([readonly]):not([type=checkbox]):not([type=radio]):not([type=button]):not([type=submit]),
.je-such  input:enabled:not([readonly]):not([type=checkbox]):not([type=radio]):not([type=button]):not([type=submit]),
.tspro-ui textarea:enabled:not([readonly]), .ts-dlg textarea:enabled:not([readonly]),
.ts-ovl textarea:enabled:not([readonly]), .be-ov textarea:enabled:not([readonly]), .je-such textarea:enabled:not([readonly]),
.tspro-ui [contenteditable="true"], .ts-dlg [contenteditable="true"], .ts-ovl [contenteditable="true"],
.be-ov [contenteditable="true"], .je-such [contenteditable="true"] { cursor: text; }
.tspro-ui a[href], .ts-dlg a[href], .ts-ovl a[href], .be-ov a[href], .je-such a[href] { cursor: pointer; }

/* ▸N532 */
.eg-cb{position:relative;display:flex;flex:1;min-width:0}
.eg-cb input{width:100%}
.eg-cb-list{position:absolute;top:calc(100% + 2px);left:0;right:0;max-height:220px;overflow:auto;
  background:var(--ts-panel-bg);border:1px solid var(--ts-panel-bd);border-radius:6px;z-index:60;
  box-shadow:0 6px 18px rgba(0,0,0,.12);display:block}
.eg-cb-list.up{top:auto;bottom:calc(100% + 2px);box-shadow:0 -6px 18px rgba(0,0,0,.12)}   /* ▸N533 */
.eg-cb-list .eg-cb-frei{font-style:italic;border-bottom:1px solid var(--ts-trenn);color:var(--ts-ink)}   /* 25.07.: expliziter Freitext-Uebernahme-Eintrag */
.eg-cb-list .eg-cb-it{display:block;padding:5px 9px;font-size:13px;cursor:pointer;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.eg-cb-list .eg-cb-none{color:var(--ts-gedaempft);font-style:italic;border-bottom:1px solid var(--ts-trenn)}   /* ▸N535 */
/* ▸N536 */
/* ▸N537 */
.tspro-ui table.pos-fest{table-layout:fixed;width:100%}
.tspro-ui table.pos-fest thead th{overflow:hidden;text-overflow:ellipsis}
/* ▸N538 */


#w7-eigbox td .eg-inline{width:100%;box-sizing:border-box;padding:0 8px;font-size:13px;
  border:1px solid transparent;border-radius:0;background:var(--ts-panel-bg);font-family:inherit;height:calc(var(--ts-tab-td-h) - 1px)}
/* Artikelsuche + Preisentwicklungs-Chart (Overlays) */.je-such.asaus .as-leer            { color: var(--ts-gedaempft); }
.je-such.asaus .as-tbl th.r        { text-align: center; }   /* 03.08.: Kopf nicht rechts */
.je-such.asaus .as-blk             { border-top: 1px solid var(--ts-trenn); padding-top: 6px; margin-top: 6px; }
.je-such.asaus .as-kv.hd,
.je-such.asaus .as-kv3.hd          { opacity: .6; font-size: var(--ds-fs-hinweis); }

.je-such.asaus .ts-dim.pad2        { padding: 2px 0; }
.je-such.asaus .ts-dim.pad30,
#m-pechart .ts-dim.pad30      { padding: 30px; text-align: center; }
.je-such.asaus .ts-dim.pad34,
#m-pechart .ts-dim.pad34      { padding: 34px; text-align: center; }

/* ▸N549 */
.je-such.asaus .as-tbl tr.as-nlief td { color: var(--ts-gedaempft); }
.je-such.asaus .as-tbl td.r.neg { color: var(--ts-red); font-weight: 700; }

/* ▸N550 */
.kt-pb-liste{
  margin-top:10px; max-height:340px; overflow:auto;
  border:1px solid var(--ts-line); border-radius:6px;
  background:var(--ts-field-bg);
}
.kt-pb-zeile{ display:grid; grid-template-columns: 90px 1fr 1fr; gap:0 12px; align-items:baseline;
  padding:3px 0; border-bottom:1px solid var(--ts-trenn); font-size:12px; }   /* ▸N551 */
.kt-pb-zeile:last-child{ border-bottom:0; }
.kt-pb-nr { font-variant-numeric:tabular-nums; color:var(--ts-dim); }
.kt-pb-alt{ color:var(--ts-dim); }   /* §4438 kein Durchstreichen (Jörg 04.11.) — gedämpft genügt */
.kt-pb-neu{ color:var(--ts-text); font-weight:600; }

/* ▸N552 §1296 */

/* ▸N553 */

/* Spaltenbreiten in den Tabellen */
.kt-w16  { width:16px; height:16px; }
.kt-w40  { width:40px;  }
/* ▸N554 §250 */
.kt-w50  { width:50px;  }  /* ▸N555 §251 */
/* ▸N556 §250 */
.kt-w180 { width:180px; }
.kt-links { text-align:left; }

/* Kachel-/Feld-Bausteine */
.kt-summe   { text-align:right; font-weight:600; font-size:13px; align-self:center; }
.kt-chkspalte { display:flex; flex-direction:column; gap:6px; }
.kt-zeile   { display:flex; align-items:center; gap:7px; }
.kt-zaehl   { font-weight:500; opacity:.8; margin-left:8px; }
.kt-grau    { color:var(--ts-gedaempft); }

/* Zustandsmeldungen in den Popups */
.kt-leer    { padding:24px; text-align:center; color:var(--ts-gedaempft); }
.kt-fehler  { padding:24px; text-align:center; color:var(--ts-red); }
.kt-hinweis { padding:8px 12px; font-size:12px; color:var(--ts-red); }

/* Popup: Artikel-Liste (kt-art) */
.kt-ovl-box   { background:var(--ts-panel-bg); width:var(--dlg-w-breit); max-width:94vw; height:var(--dlg-h-breit); max-height:94vh;   /* §1308 Stufe breit statt 600 fest */
                display:flex; flex-direction:column; border-radius:8px; overflow:hidden;
                box-shadow:0 18px 50px rgba(0,0,0,.35); }
.kt-ovl-kopf  { background:var(--ts-ink); color:var(--ts-sec-fg); padding:10px 14px;
                display:flex; align-items:center; justify-content:space-between; gap:12px; }
/* §796 (T4): .kt-ovl-x -> .ts-x */
.kt-ovl-body  { flex:1; overflow:auto; padding:0; }
.kt-ovl-tab   { width:100%; border-collapse:collapse; font-size:12.5px; }

/* Popup: Feld-Dialog (Eigenschaft / Vorgabe bearbeiten) */
.kt-dlg-box   { background:var(--ts-panel-bg); width:var(--dlg-w-mittel); /* §1307 Stufe mittel statt 560 */ max-width:92vw; border-radius:10px; overflow:hidden;
                box-shadow:0 12px 40px rgba(0,0,0,.3);
                font-family:var(--ts-font);  height: var(--dlg-h-mittel); /* §1308 */ }
.kt-dlg-kopf  { background:var(--ts-ink); color:var(--ts-sec-fg); padding:10px 14px; font-weight:700; }
.kt-dlg-body  { padding:18px 20px; }
.kt-dlg-grid  { display:grid; grid-template-columns:max-content minmax(0,1fr); gap:10px 12px; }
/* .kt-dlg-fuss → .dlg-fuss (§660) */
.kt-dlg-titel { font-size:14px; font-weight:800; }
.kt-dlg-inp   { width:100%; box-sizing:border-box; padding:7px 9px; border:1px solid var(--ts-line);
                border-radius: var(--ds-radius); font-size:14px; font-family:inherit; }

/* ▸N557 */
.kt-ovl-hg { position:fixed; inset:0; background:rgba(24,24,27,.45); z-index:9500;
             display:flex; align-items:center; justify-content:center;
             font-family:var(--ts-font); }

/* ▸N558 */
.kt-ovl-tab th { background:var(--ts-flaeche); border-bottom:1px solid var(--ts-trenn); padding:var(--ts-tab-th-pad);
                 text-align:left; font-weight:700; position:sticky; top:0; }
.kt-ovl-tab td { border-bottom:1px solid var(--ts-trenn); padding:var(--ts-tab-td-pad); height: var(--ts-tab-td-h); }

/* ▸N559 */
.kt-dlg-hg { position:fixed; inset:0; background:rgba(0,0,0,.35); z-index:9999;
             display:flex; align-items:flex-start; justify-content:center; padding-top:12vh; }

/* ▸N560 */

/* ▸N561 */
.is-hidden { display:none !important; }

/* ▸N562 §611w */

/* ▸N563 */
.ts-memofeld { cursor:pointer; }

/* ▸N564 §1265 */

/* ▸N565 */
.be-box.ts-dlg-breit { width: min(var(--dlg-w-breit), 94vw); height: var(--dlg-h-breit); }   /* §1392: nur die be-box (Artikel-Unterdialoge) — als Markerklasse im Dialogrumpf blaehte sie die Marker-Huelle auf 620 px auf */   /* ▸N566 §1307 §1308 */

/* ▸N567 */
.as-tbl th { cursor:pointer; }

/* ▸N568 K-27 */

.es-ich   { color:var(--ts-gedaempft); }
.es-uform { margin-top:12px; border-top:1px solid var(--ts-trenn); padding-top:10px; }.kt-wrap .fz .v { height: var(--ds-feld); padding: 0 8px; box-sizing: border-box; border: 1px solid var(--ts-panel-bd); border-radius: 6px; background: var(--ts-panel-bg); font-size: 13px; }
.kt-wrap table.kt-tbl th { background: var(--ts-flaeche); border-bottom: 1px solid var(--ts-panel-bd); padding: var(--ts-tab-th-pad); font-weight: 700; text-align: left; position: sticky; top: 0; z-index: 1; }
.kt-wrap table.kt-tbl td { border-bottom: 1px solid var(--ts-trenn); padding: var(--ts-tab-td-pad); height: var(--ts-tab-td-h); }
.kt-wrap .num { text-align: right; }
.kt-wrap .kt-filter input,
.kt-wrap .kt-filter select { height: var(--ds-feld); border: 1px solid var(--ts-panel-bd); border-radius: 6px; padding: 0 8px; font: inherit; font-size: 12.5px; background: var(--ts-panel-bg); }   /* ▸N578 §740 */

/* ▸N579 */
.tspro-ui #pos_tbody tr.pos-voll td,
/* ▸N580 §687h */
.tspro-ui #pos_tbody tr.pos-voll td input:disabled { color: var(--ts-pos-grau); }

/* ▸N581 */
.tspro-ui td.ekv{ color: transparent; }
.tspro-ui tr:hover td.ekv{ color: inherit; }
/* ▸N582 */
.tspro-ui.ek-immer td.ekv, .ek-immer .tspro-ui td.ekv{ color: inherit; }
/* ▸N583 */
.tbl-box thead th.r{text-align:left}

/* ▸N584 */
/* ▸N585 */
.tspro-ui input[type="checkbox"], .tspro-ui input[type="radio"],
.je-such input[type="checkbox"], .je-such input[type="radio"],
.be-ov  input[type="checkbox"], .be-ov  input[type="radio"],
.ts-dlg input[type="checkbox"], .ts-dlg input[type="radio"],
.ts-ovl input[type="checkbox"], .ts-ovl input[type="radio"]{
  -webkit-appearance:none; appearance:none; flex:0 0 auto;
  border:var(--ds-rahmen) solid var(--ts-ink); background:var(--ts-panel-bg);
  vertical-align:middle; cursor:pointer;
  /* ▸N586 §816 */
}

/* ▸N589 §687b §687 §687d K-47 K-121 */
.tspro-ui tr.pos-teil td, .tspro-ui tr.pos-teil td input,
.ts-ovl tr.pos-teil td, .je-such tr.pos-teil td,
.ts-dlg tr.pos-teil td, .ts-dlg tr.pos-teil td input {
  color: var(--ts-pos-teil);   /* §688b: ohne Rueckfall — der Wert steht in :root */
}
.tspro-ui tr.pos-teil.pos-erl td, .tspro-ui tr.pos-teil.pos-erl td input,
.ts-ovl tr.pos-teil.pos-erl td, .je-such tr.pos-teil.pos-erl td,
.ts-dlg tr.pos-teil.pos-erl td, .ts-dlg tr.pos-teil.pos-erl td input {
  color: var(--ts-pos-teil-erl);
}
.tspro-ui tr.pos-alt td, .tspro-ui tr.pos-alt td input,
.ts-ovl tr.pos-alt td, .je-such tr.pos-alt td,
.ts-dlg tr.pos-alt td, .ts-dlg tr.pos-alt td input {
  color: var(--ts-pos-alt);
}
.tspro-ui tr.pos-alt.pos-erl td, .tspro-ui tr.pos-alt.pos-erl td input,
.ts-ovl tr.pos-alt.pos-erl td, .je-such tr.pos-alt.pos-erl td,
.ts-dlg tr.pos-alt.pos-erl td, .ts-dlg tr.pos-alt.pos-erl td input {
  color: var(--ts-pos-alt-erl);
}
.tspro-ui tr.pos-dl td, .tspro-ui tr.pos-dl td input,
.ts-ovl tr.pos-dl td, .je-such tr.pos-dl td,
.ts-dlg tr.pos-dl td, .ts-dlg tr.pos-dl td input {
  color: var(--ts-pos-dl);
}
.tspro-ui tr.pos-dl.pos-erl td, .tspro-ui tr.pos-dl.pos-erl td input,
.ts-ovl tr.pos-dl.pos-erl td, .je-such tr.pos-dl.pos-erl td,
.ts-dlg tr.pos-dl.pos-erl td, .ts-dlg tr.pos-dl.pos-erl td input {
  color: var(--ts-pos-dl-erl);
}
.tspro-ui tr.pos-nlief td, .tspro-ui tr.pos-nlief td input,
.ts-ovl tr.pos-nlief td, .je-such tr.pos-nlief td,
.ts-dlg tr.pos-nlief td, .ts-dlg tr.pos-nlief td input {
  color: var(--ts-pos-nlief);
}
.tspro-ui tr.pos-nlief.pos-erl td, .tspro-ui tr.pos-nlief.pos-erl td input,
.ts-ovl tr.pos-nlief.pos-erl td, .je-such tr.pos-nlief.pos-erl td,
.ts-dlg tr.pos-nlief.pos-erl td, .ts-dlg tr.pos-nlief.pos-erl td input {
  color: var(--ts-pos-nlief-erl);
}

/* ▸N590 */
.tspro-ui tr.pos-grau td,
.tspro-ui tr.pos-grau td input,
.ts-ovl tr.pos-grau td{
  color: var(--ts-pos-grau);
}

/* ▸N591 */
.tspro-ui .kbtn{
  -webkit-appearance:none; appearance:none;   /* ▸N592 */
  font:inherit; font-size:12px; font-weight:600; line-height:1;
  height:var(--ts-btn-h); padding:0 8px; white-space:nowrap; border:1px solid var(--ts-line); border-radius:6px;
  background:var(--ts-panel-bg); color:var(--ts-ink); cursor:pointer; flex:0 0 auto;
}

/* ▸N593 */
.tspro-ui input[type="date"]{ font:inherit; }
.tspro-ui input[type="date"]::-webkit-datetime-edit-fields-wrapper{ padding:0; }
.tspro-ui input[type="date"]::-webkit-datetime-edit-text{ padding:0; }   /* ▸N594 */
.tspro-ui input[type="date"]::-webkit-datetime-edit-day-field,
.tspro-ui input[type="date"]::-webkit-datetime-edit-month-field,
.tspro-ui input[type="date"]::-webkit-datetime-edit-year-field{ padding:0; }

/* ▸N595 */
/* ▸N596 */
/* ▸N597 §692c §692 */
.tspro-ui .ang-betr .bv, .tspro-ui .be-betr .bv{
  background: var(--ts-panel-bg); border: 1px solid var(--ts-panel-bd); border-radius: 6px;
  height: 26px; padding: 0 8px; min-width: 90px; box-sizing: border-box;
  font: inherit; font-size: 13px; text-align: right;
  display: flex; align-items: center; justify-content: flex-end;   /* Spans vertikal mittig wie im Artikel */
}
/* §2790 (Jörg 11.10.): Rohertrag Ware/Dienstleistung — Betrag und Prozent als ZWEI Felder in einer Zeile; Prozentfeld feste Breite */
.tspro-ui .ang-betr .bv-paar, .tspro-ui .be-betr .bv-paar { display: grid; grid-template-columns: minmax(0, 1fr) var(--ts-bv-proz); gap: var(--ds-s); }
.tspro-ui .ang-betr .bv-paar > .bv, .tspro-ui .be-betr .bv-paar > .bv { min-width: 0; }
.tspro-ui .ang-betr input.bv, .tspro-ui .be-betr input.bv,
.tspro-ui .ang-betr select.bv, .tspro-ui .be-betr select.bv{
  display: inline-block;   /* Inputs brauchen kein Flex — Höhe/Padding reichen */
}
/* ▸N598 §692c */

/* ▸N599 */
/* ▸N600 */
.tspro-ui .datepick, .ts-dlg .datepick{ position:relative; display:flex; flex:1; min-width:0; }
.tspro-ui .datepick > input.v, .ts-dlg .datepick > input.v{ flex:1; min-width:0; }
.tspro-ui .datepick > input[type="date"], .ts-dlg .datepick > input[type="date"]{
  position:absolute; inset:0; width:100%; height:100%;
  opacity:0; pointer-events:none; border:0; padding:0;
}
/* ▸N601 */
.ts-dlg .datepick{ display:inline-flex; flex:0 0 auto; vertical-align:middle; }
/* ▸N602 §679f §679e */
.ts-dlg .datepick > input.v{ width:var(--mw-datepick); flex:0 0 var(--mw-datepick); height:var(--ds-zeile); margin-top:0;
  box-sizing:border-box; padding:0 8px; }

/* Kundeninfo-Popup als Spalten-Tabelle (15.07.2026) */
/* §1984 Kundeninfo (tsKundeTelefon/tsKundeInfo, dialog.js): Karteikarte aus Beschriftung + schreibgeschuetztem Feld (vorher .ki-tab ohne Rahmen) */
.ts-dlg-box .ki-felder { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: var(--ds-s) var(--ds-m); align-items: center; }
.ts-dlg-box .ki-felder .fz { display: contents; }
.ts-dlg-box .ki-felder .fz > label { font-weight: 600; white-space: nowrap; }
.ts-dlg-box .ki-felder .v.ro { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ts-dlg-box .ki-felder .v.ro.neg { color: var(--ts-red); }

/* ▸N603 */
/* ▸N604 K-46 */
/* ▸N605 */

/* ▸N606 */
.tspro-ui.tspro-ui tbody td, .ts-dlg.ts-dlg tbody td,
.ts-ovl.ts-ovl tbody td, .be-ov.be-ov tbody td, .je-such.je-such tbody td {
  height: var(--ts-tab-td-h);
  line-height: calc(var(--ts-tab-td-h) - 2px);   /* Zeile exakt hoch, ohne Polster oben/unten */
  padding: 0 8px;
  box-sizing: border-box;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
/* ▸N607 */
.tspro-ui.tspro-ui tbody td input:not([type=checkbox]):not([type=radio]),
.tspro-ui.tspro-ui tbody td select,
.je-such.je-such tbody td input:not([type=checkbox]):not([type=radio]) {
  height: calc(var(--ts-tab-td-h) - 1px); line-height: 1; }
tr[data-fuell] td { cursor: default; }

/* ▸N610 R-2.5 §721 §692 §705 K-317 */

/* ▸N611 R-12.5 */

/* ▸N612 */
.tspro-ui.tspro-ui tbody td, .ts-dlg.ts-dlg tbody td,
.ts-ovl.ts-ovl tbody td, .be-ov.be-ov tbody td, .je-such.je-such tbody td,
.tspro-ui.tspro-ui thead th, .ts-dlg.ts-dlg thead th,
.ts-ovl.ts-ovl thead th, .be-ov.be-ov thead th, .je-such.je-such thead th,
#m-wiz tbody td, #m-wiz thead th {   /* §1864: Gitter auch im Artikel-Assistenten (liegt ausserhalb .tspro-ui) */
  border-right: 1px solid var(--ts-trenn);
}
.tspro-ui.tspro-ui tbody td:last-child, .ts-dlg.ts-dlg tbody td:last-child,
.ts-ovl.ts-ovl tbody td:last-child, .be-ov.be-ov tbody td:last-child,
.je-such.je-such tbody td:last-child, .tspro-ui.tspro-ui thead th:last-child,
.ts-dlg.ts-dlg thead th:last-child, .ts-ovl.ts-ovl thead th:last-child,
.be-ov.be-ov thead th:last-child, .je-such.je-such thead th:last-child,
#m-wiz tbody td:last-child, #m-wiz thead th:last-child {   /* §1864 */
  border-right: none;   /* faellt mit dem Kachelrand zusammen */
}
/* ▸N613 */
/* ▸N614 §630 §276 */

/* ▸N615 */
.tspro-ui .fil-sec-body > .tbl-box { flex: 1 1 0; min-height: 0; }
.tspro-ui .tbl-box { display: flex; flex-direction: column; min-height: 0; }
.tspro-ui .tbl-box > .tbl-scroll { flex: 1 1 0; min-height: 0; }
:is(.ts-dlg-box, .bc-main) .fen-block:not(.fuellt) > .tbl-box > .tbl-scroll { flex: 0 0 auto; }   /* §4322 I.3 (DFA technikCENTER, Inventur 03.11.: 15 Tabellen in Kacheln mit Inhaltshöhe auf 0 px — flex-basis 0 ohne füllenden Rahmen, §4201): Rollkasten nimmt in nicht füllenden Kacheln die Inhaltshöhe */

/* (2) TABELLE FOLGT DER KACHEL, nicht dem Inhalt. */
.tspro-ui.tspro-ui table, .ts-dlg.ts-dlg table,
.ts-ovl.ts-ovl table, .be-ov.be-ov table, .je-such.je-such table {
  table-layout: fixed; width: 100%; border-collapse: collapse;
}

/* ▸N616 */
/* ▸N617 §814 */

/* ▸N618 */
.tspro-ui.tspro-ui tbody td:has(> input):not(:has(> input[type=checkbox])):not(:has(> input[type=radio])),
.tspro-ui.tspro-ui tbody td:has(> select),
.je-such.je-such tbody td:has(> input):not(:has(> input[type=checkbox])):not(:has(> input[type=radio])),
.tspro-ui.tspro-ui tbody td:has(> .eg-cb), .ts-dlg.ts-dlg tbody td:has(> .eg-cb) { padding: 0; }   /* ▸N619 §717 K-113 */   /* ▸N620 §705 */
.tspro-ui.tspro-ui tbody td > input:not([type=checkbox]):not([type=radio]),
.tspro-ui.tspro-ui tbody td > select,
.tspro-ui.tspro-ui tbody td > .eg-cb > input:not([type=checkbox]):not([type=radio]), .ts-dlg.ts-dlg tbody td > .eg-cb > input:not([type=checkbox]):not([type=radio]),
.je-such.je-such tbody td > input:not([type=checkbox]):not([type=radio]) {
  width: 100%; height: 100%; min-height: 0; box-sizing: border-box;
  border: none; border-radius: 0; margin: 0; font: inherit; color: inherit;
  padding: 0 8px; box-shadow: none;
  background: var(--ts-panel-bg);   /* ▸N621 §692d §692 */
  -webkit-text-fill-color: currentColor;      /* Safari faerbt disabled sonst eigenmaechtig */
  opacity: 1;
}

/* ▸N625 */
.tspro-ui.tspro-ui tbody td input:not([type=checkbox]):not([type=radio]),
.tspro-ui.tspro-ui tbody td select,
.ts-dlg.ts-dlg tbody td input:not([type=checkbox]):not([type=radio]),
.je-such.je-such tbody td input:not([type=checkbox]):not([type=radio]) {
  width: 100%; min-width: 0; box-sizing: border-box;
}

/* ▸N626 */
.tspro-ui .tbl-scroll,.tspro-ui .js-listwrap,.je-such .js-listwrap,.be-ov .js-listwrap { overflow-y: auto; }

/* ▸N627 */

/* ▸N628 K-173 */
.wb-wrap.wb-wrap .tbl-box table, .be-wrap.be-wrap .tbl-box table,
.art-wrap.art-wrap .tbl-box table { table-layout: fixed; width: 100%; }

.tspro-ui td.p-ell,
.ts-dlg td.p-ell,
.ts-ovl td.p-ell{
  max-width: 46vw;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tspro-ui #f_kunde_name,
.tspro-ui #f_lief_name {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
    /* ▸N632 */
    flex: 1;
    cursor: pointer;
}

/* ▸N633 */
/* ▸N634 */
.tspro-ui .kunde-info { min-width: 0; position: relative; }
.tspro-ui .kunde-info > .kbtn {   /* M5 §3991: Info-Knopf im Feldbereich vor dem Wert */
    position: static;
    margin: 0;
    flex: 0 0 auto;
    width: var(--ts-kbtn-w);
    box-sizing: border-box;
}
/* ▸N635 */
.tspro-ui .fz:has(> .kunde-info > #f_kunde_info) > label,
.tspro-ui .fz:has(> .kunde-info > #f_lief_info) > label {
    color: var(--ts-akzent);
    font-weight: 700;
}

/* ▸N636 */

/* ▸N637 */
.tspro-ui .wv-betr{ display:grid; grid-template-columns:auto 1fr; gap:5px 10px; align-items:center; font-size:13px; }
.tspro-ui .wv-betr .bl{ font-weight:700; }
.tspro-ui .wv-betr .bv{
  background: var(--ts-panel-bg); border: 1px solid var(--ts-panel-bd); border-radius: 6px;   /* §692c */
  height: 26px; padding: 0 8px; min-width: 90px; box-sizing: border-box;
  font: inherit; font-size: 13px; text-align: right;
  display: flex; align-items: center; justify-content: flex-end;
}
.tspro-ui .wv-betr input.bv{ display: inline-block; }
/* ▸N638 §692c */
/* ▸N639 */
/* ▸N640 §692f §692 */

/* ▸N641 */
.tspro-ui .be-main > .wv-unten { grid-template-columns: var(--wv-unten-cols); }

/* ▸N642 *//* ▸N643 */

/* ▸N644 *//* ▸N645 */   /* 03.08.: Kopf nicht rechts *//* ▸N646 *//* ▸N647 */
.ts-dlg .fil-sec      { border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius);
                         background: var(--ts-panel-bg); margin-bottom: var(--ts-kachel-gap); /* §1316: Kachelabstand wie in den Masken */ overflow: hidden; }
.ts-dlg .fil-sec-head { background: var(--ts-sec-bg); color: var(--ts-sec-fg);
                         font-size: var(--ts-head-fs); font-weight: var(--ts-head-fw);
                         padding: var(--ts-head-pad); letter-spacing: var(--ts-head-ls); }
.ts-dlg .fil-sec-body { padding: var(--ds-m) var(--ds-l); }
/* ▸N648 *//* ▸N649 *//* ▸N650 *//* ▸N651 *//* ▸N652 */
/* ▸N653 */
.je-such .js-teil > .js-ta{ flex: 1 1 auto; min-height: 0; width: 100%; box-sizing: border-box;
  border: 1px solid var(--such-bd-box); border-radius: 6px; padding: 10px; /* resize:none aus Grundregel (17), §219c */
  font-family: "DejaVu Sans Mono", "Consolas", monospace; font-size: 12px; line-height: 1.45; white-space: pre; }

/* ▸N654 */
/* ▸N655 */
#wa-ovl .wa-box { width: min(1280px, 94vw); }
#wa-ovl .wa-hint  { font-size: 12px; opacity: .8; margin: 6px 0 8px; }
#wa-ovl .wa-scroll{ max-height: 480px; overflow: auto; border: 1px solid var(--ts-panel-bd); border-radius: 8px; }
#wa-ovl tr.wa-fremd td { opacity: .85; }
/* §2478 K-417 (Bestellung -> Wareneingang, Mengenauswahl): Vorgegebenes grau, Eingabe schwarz ohne eigenes Feld-Aussehen — wie zell-ein */
#wa-ovl tbody td  { color: var(--ts-ro-fg); }
#wa-ovl input.wa-m{ width: var(--ts-fb-s); height: calc(var(--ds-tabellenzeile) - 1px); box-sizing: border-box; padding: 0 var(--ds-s); text-align: right;
                    border: 1px solid transparent; border-radius: 0; background: transparent; font: inherit; color: var(--ts-ink); }
#wa-ovl input.wa-m:focus { outline: none; border-color: var(--ts-panel-bd); background: var(--ts-field-focus); }
#wa-ovl .wa-foot  { display: flex; gap: 8px; justify-content: flex-end; margin-top: 10px; }
/* §1796d Wareneingang aus Rechnung (popup Stufe gross, .re-dlg): Scanleiste ueber der Tabelle, Eingaben in den Zellen — Status im Fuss (§1316) */
.ts-dlg-box:has(.re-dlg) .re-scanleiste { display: flex; align-items: center; gap: var(--dlg-gap); margin-top: var(--ds-s); }
.ts-dlg-box:has(.re-dlg) .re-scanleiste label { font-weight: 600; margin: 0; padding: 0; line-height: var(--ts-btn-h); }
.ts-dlg-box:has(.re-dlg) .re-scanleiste > * { margin-top: 0; margin-bottom: 0; }   /* §3888 Messung 11:50: Feld 4 px tiefer als die Beschriftung (230/234) — fremder Feldrand */   /* §3886 (Joerg 30.10. „Feld steht nicht in einer Linie“): Beschriftung auf Feldhoehe, keine Etikett-Raender */
.ts-dlg-box:has(.re-dlg) #re_scanmsg { flex: 1 1 0; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }   /* §1811: Rueckmeldung einzeilig */
.ts-dlg-box:has(.re-dlg) .re-in { height: var(--ts-btn-h); box-sizing: border-box; padding: 0 6px; border: 1px solid var(--ts-panel-bd); border-radius: 6px; font: inherit; }
.ts-dlg-box:has(.re-dlg) .re-ean  { width: var(--ts-fb-3xl); }
.ts-dlg-box:has(.re-dlg) .re-zahl { width: 100%; text-align: right; }
.ts-dlg-box:has(.re-dlg) td .re-in { height: calc(var(--ts-tab-td-h) - 1px); padding: 0 var(--ds-s); }   /* §3888 Messung: Auswahl 26 px, Zahlenfelder 21 px in derselben Zeile — Zellfelder einheitlich nach Hausregel (Tabellenzeile − 1 px) */
.ts-dlg-box:has(.re-dlg) .re-art  { width: 100%; }   /* §3886: Artikel suchen/neu stehen im Fuss (keine Zeilenknoepfe, §3744) */
.ts-dlg-box:has(.re-dlg) td.re-c-sn > span { display: flex; align-items: center; gap: var(--ds-s); }

.ts-dlg-box:has(.re-dlg) .re-snz  { color: var(--ts-dim); }
.ts-dlg-box:has(.re-dlg) .re-ohne { margin-left: var(--ds-s); color: var(--ts-dim); }
.ts-dlg-box:has(.re-dlg) table { table-layout: fixed; width: 100%; }
.ts-dlg-box:has(.re-dlg) th.re-c-pos   { width: var(--fb-52); }
.ts-dlg-box:has(.re-dlg) th.re-c-menge { width: var(--fb-64); }   /* §3886: Rechnungszeile war bei 1600 px nur 103 px breit — feste Spalten enger, die Rechnungszeile nimmt den Rest */
.ts-dlg-box:has(.re-dlg) th.re-c-ek    { width: var(--fb-90); }
/* §3090 (Joerg 13:52: Mengenregel-Spalte zu schmal, kein Mouseover): Spalte Lager (frei des Artikels) neu, Mengenregel als Auswahl (laengster Eintrag
   „Zeilen zusammenfassen (57)“ ≈ 150 px bei 13 px + Pfeil); Artikel/Prüfung/SN enger, damit die Rechnungszeile bei 1400 px Fensterbreite ≈ 300 px behaelt */
.ts-dlg-box:has(.re-dlg) th.re-c-lager { width: var(--fb-170); }   /* §3094/§3095: Bestand + Haken „ausgleichen“ — Bild 14:18: bei 150 px wurde „ausgleich…“ angeschnitten */
.ts-dlg-box:has(.re-dlg) td.re-c-lager { text-align: left; white-space: nowrap; }
.ts-dlg-box:has(.re-dlg) .re-lager-zahl { display: inline-block; width: var(--fb-52); text-align: right; }   /* §3096: Bestand rechtsbuendig in fester Breite, der Haken „ausgleichen“ dahinter in jeder Zeile an derselben Stelle (Bild 14:18) */
.ts-dlg-box:has(.re-dlg) th.re-c-regel { width: var(--fb-220); }   /* §3095: „Zeilen zusammenfassen (57)“ + Pfeil war bei 170 px angeschnitten */
.ts-dlg-box:has(.re-dlg) td.re-c-regel { white-space: nowrap; overflow: hidden; }
.ts-dlg-box:has(.re-dlg) .re-regel     { width: 100%; }
.ts-dlg-box:has(.re-dlg) th.re-c-art   { width: var(--fb-270); }
.ts-dlg-box:has(.re-dlg) th.re-c-pr    { width: var(--fb-170); }   /* §3888 Bild Joerg 11:47: „offen ☐ ohne S…“ bei 140 px abgeschnitten */
.ts-dlg-box:has(.re-dlg) th.re-c-sn    { width: var(--fb-64); }
.ts-dlg-box:has(.re-dlg) td.re-c-pr    { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }   /* §1848: Pruefspalte einzeilig (Joerg: Zeile brach bei "ohne Scan" um) */
/* Fuss in EINER Zeile: Status nimmt den Rest und kuerzt mit Tooltip (§1316: Status links im Fuss) */
/* §1796e/§1799: Status ueber den Knoepfen gilt jetzt zentral; hier nur noch Block statt Flex, damit die lange Zeile mit "…" gekuerzt wird */
.ts-dlg-box:has(.re-dlg) .f > .dlg-status { display: block; }

/* ▸N656 */
/* ▸N657 §218 */
/* ▸N658 §799 */

/* ▸N659 */
/* ▸N660 §244 */
/* §799 (T5a): .vt-tbl -> .tbl-fest */

/* ▸N661 §249 */
.je-such .zs-za td { white-space: nowrap; }
/* ▸N662 */
.je-such.wvzus { --such-col: 224px; }
/* ▸N665 */
/* §799 (T5a): .bs-tbl -> .tbl-fest *//* ▸N666 */
/* ▸N667 §242 */
/* ▸N668 §829 */
/* §799 (T5a): .ms-tbl -> .tbl-fest */
/* ▸N669 §829 */   /* ▸N670 §799 K-170 */

/* ▸N671 */
.je-such .js-fsel{ gap:4px; }
.je-such .js-kachel select{
  width:100%; height:var(--such-btn-h); box-sizing:border-box;
  padding:0 26px 0 8px; border:1px solid var(--such-bd);   /* §709: 26px wie ueberall */
  border-radius:var(--such-btn-r); background:var(--ts-panel-bg); color:var(--ts-ink);
  font:inherit; font-size:var(--such-btn-fs); font-weight:var(--such-btn-fw);
  cursor:pointer; -webkit-appearance:none; appearance:none;
  background-image:var(--ts-chevron);   /* ▸N672 §709 */
  background-repeat:no-repeat; background-position:right var(--ds-s) center;
}

/* ▸N673 */
/* ▸N674 */
.js-fgrp:not(:has(> .js-fbtn[data-t])){ display:flex; flex-direction:column; align-items:stretch; gap:var(--ts-btn-gap); }
.js-fgrp:not(:has(> .js-fbtn[data-t])) > .js-fbtn{ width:100%; text-align:center;
   overflow:hidden; text-overflow:ellipsis; white-space:nowrap; display:block;
   line-height:var(--such-btn-h); padding:0 8px; }

/* ▸N675 */
/* ▸N676 */
.tspro-ui .obtn.fakbtn.off{ background:var(--ts-red); border-color:var(--ts-red); color:var(--ts-sec-fg); font-weight:700; }

/* ▸N677 */
/* ▸N678 */
/* ▸N679 §1307 §1308 */
.ts-dlg .bz-grid > .bz-links, .ts-dlg .bz-grid > .bz-rechts{ min-width: 0; }
.ts-dlg .bz-grid{ display:grid; grid-template-columns: var(--mw-bz-links) minmax(0,1fr); gap:var(--ts-kachel-gap); align-items:stretch; }   /* ▸N680 */
.ts-dlg .bz-kopf{ grid-column:1 / -1; display:flex; align-items:center; gap:12px;
  padding:8px var(--ds-m); border:1px solid var(--ts-panel-bd); border-radius:8px; background:var(--ts-panel-bg); }
.ts-dlg .bz-lbl{ font-weight:700; font-size:13px; }
.ts-dlg .bz-ro{ min-width:130px; height: var(--ds-feld); line-height: var(--ds-feld); padding:0 8px;
  background:var(--ts-panel-bg); color:var(--ts-ro-fg); border:1px solid var(--ts-panel-bd);   /* §692e */
  border-radius:6px; text-align:right; font-weight:700; box-sizing:border-box; }
/* ▸N681 */
.ts-dlg .bz-links, .ts-dlg .bz-rechts{ display:grid; grid-template-columns:var(--mw-bz-lbl) minmax(var(--mw-bz-min),1fr);
  gap: var(--ds-s); align-content:start; align-items:center;
  border:1px solid var(--ts-panel-bd); border-radius:8px; background:var(--ts-panel-bg);
  padding: 0 var(--ds-m) var(--ds-s) var(--ds-s); overflow:hidden; }
.ts-dlg .bz-links::before, .ts-dlg .bz-rechts::before{
  grid-column:1 / -1; display:block; margin:0 -10px 4px -10px;
  background:var(--ts-ink); color:var(--ts-sec-fg);
  font-size:var(--ts-head-fs); font-weight:var(--ts-head-fw);
  padding:var(--ts-head-pad); }
.ts-dlg .bz-links::before{ content:'Zahlungsarten'; }
.ts-dlg .bz-rechts::before{ content:'Belege & Zahlungstermine'; }
.ts-dlg .bz-lbtn{ height:var(--such-btn-h); padding:0 8px; font-family:inherit;   /* 25.07.: 28->26 Standardmass (vorher '= Feldhoehe') */
  font-size:var(--such-btn-fs); font-weight:var(--such-btn-fw);
  background:var(--ts-panel-bg); color:var(--ts-ink); border:1px solid var(--ts-line); border-radius:var(--such-btn-r);
  cursor:pointer; text-align:center; box-sizing:border-box; }
.ts-dlg .bz-feld{ height: var(--ds-feld); padding:0 8px; font-family:inherit; font-size:13px;
  border:1px solid var(--ts-panel-bd); border-radius:6px; background:var(--ts-panel-bg);
  text-align:right; box-sizing:border-box; width:100%; }   /* §692d */
.ts-dlg .bz-kk{ grid-column:1 / -1; display:flex; align-items:center; gap:6px; font-size:13px; }
.ts-dlg .bz-sep{ grid-column:1 / -1; border-top:1px solid var(--ts-panel-bd); margin:2px 0; }
.ts-dlg .bz-kza{ height: var(--ds-feld); padding:0 6px; font-family:inherit; font-size:13px;
  border:1px solid var(--ts-panel-bd); border-radius:6px; background:var(--ts-panel-bg); }
/* §3299 Kopf des Bezahlfensters: Kundenzahlart (laengster Eintrag „Dauerauftrag“) und Zahlungsart der Rechnung („Rechnung, 14 Tage netto“) — feste Breiten aus
   den Feldstufen, sonst schneidet appearance:none den Text am Chevron ab (Messung: 65 px in 63 px, 154 px in 139 px) */
.ts-dlg #bz_kza.bz-kza{ width: var(--fb-120); }
.ts-dlg #bz_zw.bz-kza{ width: var(--fb-220); }
/* ▸N682 */
.ts-dlg .bz-ttl{ grid-column:1 / -1; font-weight:700; font-size:13px; margin-top:2px; }
.ts-dlg .bz-einliste{ grid-column:1 / -1; }   /* ▸N683 §1244 */
.ts-dlg .bz-ectbl{ grid-column:1 / -1; border-collapse:collapse; width:100%; }
.ts-dlg .bz-rechts .bz-ro{ width:var(--mw-bz-ro); min-width:0; justify-self:start; }   /* v4: Restbetrag im gleichen Zug verschlankt */
/* ▸N684 */
.ts-dlg .bz-ecscroll{ grid-column:1 / -1; height:var(--mw-bz-ec); overflow-y:auto;
  border:1px solid var(--ts-panel-bd); }   /* ▸N685 */
.ts-dlg .bz-ectbl th{ background:var(--ts-field-ro); border:1px solid var(--ts-panel-bd); padding:3px 6px; font-size:var(--ts-tab-fs); text-align:left; }
.ts-dlg .bz-ectbl td{ border:1px solid var(--ts-panel-bd); padding:3px 6px; font-size:var(--ts-tab-fs); }
.ts-dlg .bz-ectbl td.num{ text-align:right; }/* ▸N686 */
#tspro_datum_pick{ position:fixed; width:1px; height:1px; opacity:0;
  border:0; padding:0; pointer-events:none; z-index:10600; }

/* ▸N687 */
.bzq-ovl{ position:fixed; inset:0; background:rgba(0,0,0,.35);
  display:none; align-items:center; justify-content:center; z-index:10550; }
.bzq-box{ background:var(--ts-panel-bg); border-radius:10px; min-width:300px; overflow:hidden;
  box-shadow:0 14px 40px rgba(0,0,0,.3); }
.bzq-kopf{ background:var(--ts-ink); color:var(--ts-sec-fg); }
.bzq-body{ display:flex; align-items:center; gap:10px; padding:14px 16px; }
.bzq-body label{ font-weight:700; font-size:13px; }
.bzq-body input{ width:var(--ts-fb-xl); height: var(--ds-feld); padding:0 8px; font:inherit; font-size:13px;
  text-align:right; border:1px solid var(--ts-panel-bd); border-radius:6px; }
.bzq-body input#bzq_beleg{ text-align:left; }
.bzq-body [hidden]{ display:none; }
.bzq-text{ max-width:340px; font-size:13px; line-height:1.5; white-space:pre-line; }   /* §698 */
/* .bzq-fuss → .dlg-fuss (§660) */
/* ▸N688 §660 */
/* ▸N689 §660 */
/* ▸N690 */
/* ▸N691 §679h */
.ts-dlg-box .b .bz-grid input:where(:not([type="checkbox"]):not([type="radio"])){ margin-top:0; height: var(--ds-feld); }   /* ▸N692 */
/* ▸N693 */
.ts-dlg-box .b .bz-grid input.bz-feld:where(:not([type="date"])){ width:var(--mw-bz-feld); justify-self:start; }   /* §679h: :not in :where(), .bz-feld trägt den Guard */   /* ▸N694 */
/* ▸N695 */
.tspro-ui .be-angaben{ grid-column: 2; font-size: var(--ds-fs-hinweis); color:var(--ts-gedaempft); margin-top:-2px; min-height:0; }
.tspro-ui .be-angaben:empty{ display:none; }

/* ▸N696 *//* ▸N697 */
.fz { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 8px; align-items: center; margin-bottom: 7px; }

/* ▸N698 */
.tspro-ui .be-top > .fil-sec.fz-2sp > .fil-sec-body {
  display: grid; grid-template-columns: max-content minmax(0,1fr) max-content minmax(0,1fr);   /* M5 §3991: je Spalte max-content (§3994 in die Grundregel gezogen — vorher zweite Regel daneben, DOPPELREGEL) */
  column-gap: 16px; row-gap: var(--fz-zeilen-gap); align-content: start;
}
/* ▸N699 §685b §685 */
.tspro-ui .be-top > .fil-sec.fz-2sp > .fil-sec-body > .fz { display: contents; }
.tspro-ui .be-top > .fil-sec.fz-2sp > .fil-sec-body > .fz.fz-voll > label { grid-column: 1; }
.tspro-ui .be-top > .fil-sec.fz-2sp > .fil-sec-body > .fz.fz-voll > :not(label) { grid-column: 2 / -1; min-width: 0; }

.fz > label { text-align: left; white-space: nowrap; font-size: 13px; font-weight: 600; color: var(--ts-ink); }
.fz.ta { align-items: start; }
/* ▸N700 §695 §634 */
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
input[type=number] { -moz-appearance: textfield; appearance: textfield; }

.v { height: var(--ds-feld); padding: 0 8px; box-sizing: border-box; border: 1px solid var(--ts-panel-bd); border-radius: 6px; background: var(--ts-panel-bg); font-size: 13px; display: flex; align-items: center; }
input.v, select.v { font-family: inherit; width: 100%; }
textarea.v { font-family: inherit; width: 100%; height: auto; min-height: 54px; padding: var(--ds-xs) var(--ds-s); display: block; }
/* ▸N703 §692 */   /* ▸N704 */
.tbl-box { border: 1px solid var(--ts-panel-bd); border-radius: 8px; overflow: hidden; display: flex; flex-direction: column; flex: 1; min-height: 0; }
.tbl-scroll { overflow: auto; flex: 1; }
.tbl-box table { width: 100%; border-collapse: collapse; font-size: var(--ts-tab-fs); }
.tbl-box thead th { position: sticky; top: 0; background: var(--ts-flaeche); padding: 5px 6px; text-align: left; font-weight: 700; border-bottom: 1px solid var(--ts-panel-bd); white-space: nowrap; }
/* ▸N705 */
.tbl-box tbody td { padding: 3px 6px; border-bottom: 1px solid var(--ts-trenn); white-space: nowrap; }
.tbl-box tbody td.r { text-align: right; }
.tbl-box tbody td.c { text-align: center; }.tbl-box tbody td input:not([type="checkbox"]):not([type="radio"]) { border: 1px solid transparent; border-radius: 0; box-sizing: border-box; font-size: var(--ts-tab-fs); height: calc(var(--ts-tab-td-h) - 1px); padding: 0 8px; width: 100%; background: var(--ts-panel-bg); }.tbl-box tbody td input.num { width:100%;min-width:0; text-align: right; }
.ts-dlg-box .tbl-box tbody td input:not([type="checkbox"]):not([type="radio"]) { display: block; margin: 0 0 0 auto; }
.ts-dlg-box .tbl-box tbody td:has(> input:not([type="checkbox"]):not([type="radio"])) { padding-top: 0; padding-bottom: 0; }   /* §1392: Eingabefeld fuellt die Zelle — Zeile 22 wie alle Zeilen, Zahl auf Hoehe der Nachbarn (war +8 px, Zeile 30) */
.be-wrap { font-family: var(--ts-font); color: var(--ts-ink); padding: 10px; box-sizing: border-box; height: 100%; display: flex; flex-direction: column; }
/* ▸N710 */
.be-layout { display: grid; grid-template-columns: 1fr var(--ts-opt-w); gap: var(--ts-kachel-gap); align-items: stretch; flex: 1; min-height: 0; }
.be-main { display: flex; flex-direction: column; gap: var(--ts-kachel-gap); min-width: 0; min-height: 0; }
.be-main > .fil-sec { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.be-main > .fil-sec > .fil-sec-body { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.be-sum { display: flex; gap: 26px; align-items: center; font-size: 13px; margin-bottom: 8px; }
.be-sum b { font-weight: 700; }
.be-sum .val { background: var(--ts-panel-bg); color: var(--ts-ro-fg);   /* §692e */ border: 1px solid var(--ts-panel-bd); border-radius: 6px; display: inline-block; min-width: 90px; padding: 3px 8px; text-align: right; }
.be-tbl-btns { display: flex; gap: 8px; margin-top: 8px; }
.be-srch-list { border: 1px solid var(--ts-panel-bd); border-radius: 6px; margin-top: 10px; max-height: 320px; overflow: auto; }
.be-srch-list .it { padding: 6px 10px; border-bottom: 1px solid var(--ts-trenn); cursor: pointer; font-size: 13px; }
.be-srch-list .it .nr { color: var(--ts-akzent); font-weight: 700; margin-right: 8px; }
.be-srch-list .it .meta { color: var(--ts-gedaempft); font-size: var(--ds-fs-hinweis); }
.chk { align-items: center; display: flex; height: var(--ds-feld); }
.kunde-info { align-items:center;display:flex;gap:6px; }
/* ▸N711 */
.kunde-info > .v,
.kunde-info > input { flex: 1; min-width: 0; }.ts-dlg-box:has(.eco-abgleich) { max-height: 94vh; display: flex; flex-direction: column; }   /* §1395: nur Aufbau — Groesse ts-dlg-breit am Aufrufer */
.ts-dlg-box:has(.eco-abgleich) > .h{ font-size: var(--ts-head-fs); font-weight: var(--ts-head-fw);
  padding: var(--ts-head-pad); letter-spacing: var(--ts-head-ls); }
.ts-dlg-box:has(.eco-abgleich) #ovl_b{ flex: 1 1 auto; min-height: 0; overflow: hidden;
  display: flex; flex-direction: column; white-space: normal; }
.ts-dlg .eco-abgleich{ flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }

/* ▸N715 */
/* ▸N716 §648v */
.ts-dlg-box .b .eco-abgleich input[type="checkbox"] { margin: 0; }
/* ▸N717 */
/* ▸N718 */
.ts-dlg .eco-abgleich .eco-sub{ font-size:var(--ds-fs-text); font-weight:700; margin:0 0 4px; }
.ts-dlg .eco-abgleich .tbl-box{ flex:1 1 0; min-height:var(--mw-eco-min); }.ts-dlg .eco-abgleich .tbl-box.eco-oben { margin-bottom:6px; flex:0 0 38%; min-height:var(--mw-eco-oben); }
.ts-dlg .eco-abgleich .eco-2col{ flex:1 1 0; min-height:calc(10 * var(--ds-zeile)); /* ▸N720 §1106 */ display:grid;
  /* ▸N721 */
  grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:8px; }
.ts-dlg .eco-abgleich .eco-col{ display:flex; flex-direction:column; min-height:0; min-width:0; }
.ts-dlg .eco-abgleich table{ table-layout:fixed; }
/* ▸N722 */
.ts-dlg .eco-abgleich td, .ts-dlg .eco-abgleich th{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
/* ▸N723 */
.ts-dlg .eco-abgleich td.eco-ell{ overflow:hidden; text-overflow:ellipsis; }

/* ▸N724 */
.ts-dlg .eco-abgleich .sp-datum{ width: calc(var(--ts-sp-datum) + 16px); }
.ts-dlg .eco-abgleich .sp-geld { width: var(--mw-eco-geld); }
.ts-dlg .eco-abgleich .sp-nr   { width: calc(var(--ts-sp-nr) + 16px); }
.ts-dlg .eco-abgleich .sp-txt  { width: calc(var(--ts-sp-txt) + 16px); }
/* ▸N725 §808 */
/* ▸N726 */

/* ▸N727 */
.ecopdf-ovl{ position:fixed; inset:0; background:rgba(0,0,0,.55);
  display:none; align-items:center; justify-content:center; z-index:10700; }
.ecopdf-box{ width:min(var(--dlg-w-gross),94vw); height:var(--dlg-h-gross);   /* §1308: Stufe gross statt 1100x92vh */ background:var(--ts-panel-bg);
  border-radius:10px; overflow:hidden; display:flex; flex-direction:column;
  box-shadow:0 18px 50px rgba(0,0,0,.35); }
/* ▸N729 */
.ecopdf-kopf{ display:flex; align-items:center; gap:10px;
  background:var(--ts-ink); color:var(--ts-sec-fg); }
/* ▸N730 §564 */
.ecopdf-akt{ display:flex; gap:6px; margin-left:auto; }
.ecopdf-abtn{ padding:3px 10px; font:inherit; font-size:12.5px; font-weight:600;
              background:var(--ts-panel-bg); border:1px solid var(--ts-line); border-radius:6px; cursor:pointer; }
.ecopdf-kopf .ecopdf-akt ~ .ecopdf-x{ margin-left:10px; }
.ecopdf-kopf .ecopdf-x{ margin-left:auto; }   /* §839: Optik aus .ts-x, hier nur die Lage */
.ecopdf-frame{ flex:1 1 auto; width:100%; border:0; background:var(--ts-pdf-bg); }

.ts-dlg .eco-abgleich .eco-col .tbl-box{ flex:1 1 0; min-height:0; }

/* ▸N731 */




/* ▸N732 */
.as-kv .v { height: auto; padding: 0; border: none; border-radius: 0;
  background: transparent; display: inline; font-size: inherit; }

/* ▸N733 */
/* ▸N734 §313 */
/* ▸N737 §1298 R-4.13 K-165 */
/* ▸N738 §1300 */
/* ▸N739 §1309 §1308 */
.ts-dlg-box .b:has(.dlg-tbl-box) { display: flex; flex-direction: column; }
.ts-dlg-box .tbl-box.dlg-tbl-box { flex: 1 1 auto; min-height: 0; overflow: auto; margin-top: var(--ds-s); }
/* ▸N740 §1311 */
.ts-dlg-box .b:has(.tbl-box) { display: flex; flex-direction: column; overflow: hidden; }
.ts-dlg-box .b > .ts-dlg-gross:has(.tbl-box), .ts-dlg-box .b > .ts-dlg-breit:has(.tbl-box), .ts-dlg-box .b > .ts-dlg-mittel:has(.tbl-box), .ts-dlg-box .b > .ts-dlg-weit:has(.tbl-box) { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }   /* §1913: Stufe weit fehlte */
.ts-dlg-box .b .fil-sec { display: flex; flex-direction: column; flex: 1 1 0; min-height: 0; }
.ts-dlg-box .b .fil-sec-body { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
.ts-dlg-box .b .fil-sec-body .tbl-box { flex: 1 1 auto; min-height: 0; overflow: auto; }
.ts-dlg-box .b .fil-sec-body .tbl-scroll { flex: 1 1 auto; min-height: 0; overflow: auto; }
/* ▸N741 §1313 K-165 */
.ts-dlg-box .b .fil-sec.fil-sec-fest { flex: 0 0 auto; }
/* ▸N742 §1315 */
.ts-dlg-box .b .fil-sec-head { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ts-dlg-box .b .fil-sec-reihe { display: grid; grid-template-columns: 46fr 54fr; gap: var(--ts-kachel-gap); flex: 1 1 auto; min-height: 0; }   /* §1316: Kachelabstand */
.ts-dlg-box .b .fil-sec-reihe > .fil-sec { min-height: 0; min-width: 0; }
.ts-dlg-box .b .fil-sec-reihe .rep.tbl-fest td.sp-rest { max-width: 0; }   /* ▸N743 K-165 */
/* ▸N744 §1301 K-165 */
.ts-dlg-box .dlg-tbl-box table { table-layout: fixed; }
/* ▸N745 §1303 */
.ts-dlg-box .dlg-tbl-box tbody tr:last-child td { border-bottom: 0; }
/* ▸N746 §1302 */
.tspro-ui .tbl-box thead th.sp-lagerzahl, .ts-dlg-box .tbl-box thead th.sp-lagerzahl { text-align: center; }
/* ▸N747 §495e §495 §495c §495d */
/* ▸N749 §313 */

/* ▸N750 */
.plzort { display: grid; grid-template-columns: var(--ts-fb-m) 1fr; gap: 6px; }   /* ▸N751 §801 */

/* ▸N752 */
.tspro-ui .ma-tabs, .es-wrap .ma-tabs, .ts-dlg .ma-tabs { display: flex; gap: 6px; margin-bottom: 14px; flex-wrap: wrap; }
.tspro-ui .ma-tab, .es-wrap .ma-tab, .ts-dlg .ma-tab { height: var(--ds-zeile); padding: 0 14px; border: 1px solid var(--ts-panel-bd); border-radius: 6px;
  background: var(--ts-panel-bg); font: inherit; font-size: 13px; cursor: pointer; }

/* ▸N753 */
.es-wrap .opt-progress, .tspro-ui .opt-progress { display: none; height: 4px; border-radius: 2px;
  overflow: hidden; background: var(--ts-trenn); position: relative; margin-top: 4px; }
.es-wrap .opt-progress::before, .tspro-ui .opt-progress::before { content: ''; position: absolute;
  left: -40%; top: 0; bottom: 0; width: 40%; background: var(--ts-akzent); border-radius: 2px;
  animation: ts-prog 1.1s linear infinite; }
@keyframes ts-prog { to { left: 100%; } }

/* ▸N754 */
.tspro-ui .obtn::before, .es-wrap .obtn::before { line-height: 1; }
.tspro-ui .obtn::before, .es-wrap .obtn::before, .art-wrap .obtn::before { margin-right: 0; }

/* ▸N756 */
#o_letzte::before { content: "\01F558"; }   /* 🗂  Kategorie */
#o_zusfassung::before { content: "\01F4CA"; }   /* 📊  Zusammenfassung (wartungsvertraege) */
#b_neg::before { content: "\0026A0"; }   /* ⚠  Negativer Bestand (lager) */
#b_ohne::before { content: "\01F4B6"; }   /* 💶  Bestand ohne Preis (lager) */
#tab_mahnlauf::before { content: "\01F4CB"; }   /* 📋  Mahnlauf (mahnwesen) */
#tab_mahnungen::before { content: "\0025A4"; }   /* ▤  Mahnungen (mahnwesen) */
#dv-a-html::before { content: "\01F5A8"; }   /* 🖨  Druck ohne Briefpapier (druckvorlagen) */
#dv-a-pdf0::before { content: "\01F4C4"; }   /* 📄  PDF ohne Briefpapier */
#dv-a-pdf1::before { content: "\01F4D1"; }   /* 📑  PDF mit Briefpapier */
#lgp_we::before { content: "\0025A4"; }   /* ▤  Lagerprotokoll: dieser Wareneingang */
#lgp_art::before { content: "\0025A4"; }   /* 🧾  monatsabschluss: DATEV */

/* ▸N758 */
/* ✕  Abbrechen / Schliessen */
#ass_ab::before,
#au_tab::before,
#bi_ab::before,
#bm_ab::before,
#dtv_abbr::before,
#dve_zu::before,
#hp_ab::before,
#hs_ab::before,
#kd_ab::before,
#kp_ab::before,
#ks_ab::before,
#lb_zu::before,
#lfb_ab::before,
#ls_ab::before,
#ma_ab::before,
#msg_abbr::before,
#nf_ab::before,
#pdfv_abbr::before,
#pid_close::before,
#rma_ab::before,
#rw_ab::before,
#sn_close::before,
#wa_ab::before,
#wb_ab::before,
#zs_zu::before { content: "\002715"; }
/* ✓  Bestaetigen / OK / Uebernehmen */
#bm_ok::before,
#hp_ok::before,
#hs_ok::before,
#kd_ok::before,
#kp_ok::before,
#lb_ok::before,
#lfb_ok::before,
#ls_ok::before,
#ma_ok::before,
#msg_ok::before,
#nf_ok::before,
#pdfv_ok::before,
#wa_ok::before,
#wb_ok::before { content: "\002713"; }
/* ⊘  Verzicht: kein / keine / ohne ... weiter */
#ass_ohne::before,
#ass_pohne::before,
#hp_kein::before,
#kp_kein::before,
#nf_kein::before,
#rma_wohne::before { content: "\002298"; }
/* 🗑  Entfernen */
#ma_usig_weg::before,
#rw_clear::before { content: "\01F5D1"; }
/* ＋  Hinzufuegen / Zuordnen */
#pid_add::before,
#sn_add::before { content: "\00FF0B"; }
/* 🔍  Filterauswahl (warenbedarf) */
#bi_art::before,
#bi_lief::before,
#bi_zeit::before { content: "\01F50D"; }

/* ▸N759 */
#dtv_go::before { content: "\002B07"; }   /* ⬇  DATEV-Export ausfuehren */
#ma_usig_wahl::before { content: "\01F5BC"; }   /* 🖼  Bild waehlen */
#o_as_vorschau::before { content: "\01F441"; }   /* 👁  Anschreiben-Vorschau (§2482) */
#o_as_ausblenden::before { content: "\01F6AB"; }   /* 🚫  Empfaenger aus-/einblenden (§2482) */
#o_as_senden::before { content: "\002709"; }   /* ✉  Ausgewaehlte senden (§2482) */
#o_as_anlegen::before { content: "\00271A"; }   /* ✚  Stammsatz aus Absender anlegen — Kreis E-Mail-Umstellung (§2520) */
#o_as_erledigt::before { content: "\002713"; }   /* ✓  Anbieter ohne Stammsatz als umgestellt abhaken (§2520) */
#o_as_zuordnen::before { content: "\01F517"; }   /* 🔗 Absender dem vorgeschlagenen Stammsatz zuordnen (§2521) */
#o_as_wahl_kd::before { content: "\01F464"; }   /* 👤 Kunde waehlen (§2522) */
#o_as_wahl_lf::before { content: "\01F3ED"; }   /* 🏭 Lieferant waehlen (§2522) */
#o_as_art::before { content: "\21C4"; }
#o_as_pm::before { content: "\01F511"; }
#o_as_vervollst::before { content: "\2728"; }   /* ✨ Stammsatz vervollstaendigen (§2606, wie Lieferantenmaske) */   /* 🔑 Passwortmanager-Dialog, getrennt von Umgestellt (§2605) */   /* ⇄ Absender auf die andere Seite (Kunden <-> Lieferanten), §2570 */
.ts-dlg.as #as_tab .as-vorschlag { color: var(--ts-akzent); font-style: normal; }   /* §2521 Zuordnungsvorschlag in der Status-Spalte der grauen Zeile */
.ts-dlg.as #as_tab .as-vorschlag.as-unsicher { color: var(--ts-pos-grau); }   /* unter 7 Punkten: grau, Joerg prueft */
/* §2528 Dialog "Stammsatz anlegen" (KI-Vervollstaendigung): Feldzeilen wie die Kundeninfo, Quelle klein rechts neben dem Feld */
.ts-dlg-box .as-anlegen { display: flex; flex-direction: column; gap: 6px; }
/* §2574 (Messbild sc_anschreiben_kunden, Stammsatz anlegen): 11 Zeilen in Stufe mittel (Hoehe 520) — Web/Beschreibung/Quellen nur per Scrollen; Fenster hoch wie Stufe gross,
   Feldabstand ohne den globalen margin-top 8px der Dialogfelder (Raster mit gap genuegt) */
.ts-dlg-box:has(.as-anlegen) { height: auto; }   /* §2574/§2577: Hoehe nach Inhalt (Kunde 8, Lieferant 9 Felder) — kein Leerraum */
.ts-dlg-box .b:has(> .as-anlegen) { display: flex; flex-direction: column; }
.ts-dlg-box .b > .as-anlegen { flex: 1 1 auto; }
.ts-dlg-box .as-anlegen > .klein:last-child { margin-top: auto; padding-top: var(--ds-l); }   /* §2577 (Joerg): Quellen-/Statuszeile unten direkt ueber der Knopfleiste, nicht zwischen den Feldern */
.ts-dlg-box .as-anlegen .fz input.v { margin-top: 0; }
.ts-dlg-box .as-anlegen .fz { display: grid; grid-template-columns: var(--fb-170) minmax(0, 1fr) var(--fb-90); align-items: center; gap: var(--ds-s); }
.ts-dlg-box .as-anlegen .fz label { color: var(--ts-gedaempft); }
.ts-dlg-box .as-anlegen textarea.v { grid-column: 2 / 4; }
/* §2722 FENSTER-BAUSTEINE (K-423) — EINE Gestaltung fuer alle Fenster: Abschnitt mit Linie, Bloecke (Kacheln) nach Bedeutung, Feld mit Beschriftung
   darueber, Haken in Feldhoehe, Raster mit gleich breiten Spalten (--fen-sp). Erstnutzung: Vorgangsregel-Fenster, Umstellungs-Fenster. */
:is(.ts-dlg-box, .bc-main) .fen-bloecke { display: grid; grid-template-columns: repeat(var(--fen-sp, 3), minmax(0, 1fr)); gap: var(--ts-kachel-gap); align-items: stretch; }   /* §2723 K-381(6): Kacheln einer Reihe gleich hoch, Abstand wie Masken */
:is(.ts-dlg-box, .bc-main) .fen-bloecke.sp1 { grid-template-columns: minmax(0, 1fr); } :is(.ts-dlg-box, .bc-main) .fen-bloecke.sp2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } :is(.ts-dlg-box, .bc-main) .fen-bloecke.sp3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } :is(.ts-dlg-box, .bc-main) .fen-bloecke.sp4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } :is(.ts-dlg-box, .bc-main) .fen-bloecke.sp5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }   /* Spaltenzahl per Klasse, kein Inline-Stil */
:is(.ts-dlg-box, .bc-main) .fen { display: flex; flex-direction: column; gap: var(--ts-kachel-gap); height: 100%; min-height: 0; }
:is(.ts-dlg-box, .bc-main) .fen-form { display: grid; grid-template-columns: max-content minmax(0, 1fr); column-gap: 8px; row-gap: var(--fz-zeilen-gap); align-items: center; align-content: start; }
:is(.ts-dlg-box, .bc-main) .b .fen-form input, :is(.ts-dlg-box, .bc-main) .b .fen-form select, :is(.ts-dlg-box, .bc-main) .b .fen-form textarea, :is(.ts-dlg-box, .bc-main) .b .fen-ck input, :is(.ts-dlg-box, .bc-main) .b .fen-ck select { margin-top: 0; }   /* §2771: auch fen-ck-Reihen (Reservierungsfenster: Felder 4 px tiefer als Beschriftung/Knopf gemessen) */   /* §2727 Grundregel .b input margin-top 8 verschob Feld gegen Beschriftung (Messbild Passwortmanager/Vorgangsregeln) */
/* §2733 GEMEINSAME BESCHRIFTUNGSSPALTE fuer untereinander liegende Kacheln (Messung Zahlungsempfaenger: Felder begannen je Kachel an anderer Stelle):
   .fen.gitter-gemeinsam ist EIN Gitter (Beschriftung max-content | Feld | Zusatz); Kacheln, Formulare und Zeilen reichen es per subgrid durch. */
:is(.ts-dlg-box, .bc-main) .fen.gitter-gemeinsam { display: grid; grid-template-columns: max-content minmax(0, 1fr) auto; column-gap: 8px; row-gap: var(--ts-kachel-gap); align-content: start; }
:is(.ts-dlg-box, .bc-main) .fen.gitter-gemeinsam > * { grid-column: 1 / -1; }
:is(.ts-dlg-box, .bc-main) .fen.gitter-gemeinsam > .fen-block { display: grid; grid-template-columns: subgrid; row-gap: var(--ds-s); }
:is(.ts-dlg-box, .bc-main) .fen.gitter-gemeinsam > .fen-block > * { grid-column: 1 / -1; }
:is(.ts-dlg-box, .bc-main) .fen.gitter-gemeinsam > .fen-block > .fen-form.fz-gitter { grid-template-columns: subgrid; }
/* §2728 fz-gitter (Fenster-Inventur, Umbau ohne Eingriff in die Feldlogik): vorhandene .fz-Zeilen (label + Feld [+ Zusatz]) werden Zeilen EINES Gitters —
   Spalten: Beschriftung (max-content, gemessen) | Feld | Zusatz (auto); jede .fz ist subgrid ueber alle drei Spalten. Andere Kinder (Hinweise, Gruppen) volle Breite. */
:is(.ts-dlg-box, .bc-main) .fen-form.fz-gitter { display: grid; grid-template-columns: max-content minmax(0, 1fr) auto; column-gap: 8px; row-gap: var(--fz-zeilen-gap); align-items: center; align-content: start; }
:is(.ts-dlg-box, .bc-main) .fen-form.fz-gitter > .fz { display: grid; grid-column: 1 / -1; grid-template-columns: subgrid; align-items: center; margin: 0; gap: inherit; }
:is(.ts-dlg-box, .bc-main) .fen-form.fz-gitter > :not(.fz) { grid-column: 1 / -1; }
:is(.ts-dlg-box, .bc-main) .fen-form.fz-gitter > .fz > label { text-align: left; color: var(--ts-gedaempft); font-weight: 600; white-space: nowrap; }
:is(.ts-dlg-box, .bc-main) .fen-form.fz-gitter > .fz:has(> textarea) > label, :is(.ts-dlg-box, .bc-main) .fen-form.fz-gitter > .fz:has(> .ta-stack) > label { align-self: start; padding-top: 6px; }
:is(.ts-dlg-box, .bc-main) .fen-form.fz-gitter > .fz > :nth-child(2) { grid-column: 2; min-width: 0; }
:is(.ts-dlg-box, .bc-main) .fen-form.fz-gitter > .fz > :nth-child(n+3) { grid-column: 3; }
:is(.ts-dlg-box, .bc-main) .fen-form.fz-gitter > .fz > input[type=checkbox], :is(.ts-dlg-box, .bc-main) .fen-form.fz-gitter > .fz > button, :is(.ts-dlg-box, .bc-main) .fen-form > button { justify-self: start; width: auto; }   /* §2729 Knoepfe im Gitter in natuerlicher Breite, linksbuendig */
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-liste { flex: 1 1 auto; min-height: 0; overflow: auto; display: flex; flex-direction: column; gap: 2px; }   /* §2728 Auswahlliste in einer Kachel (Radio/Haken je Zeile), fuellt und scrollt in sich */
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-li { display: flex; align-items: flex-start; gap: var(--ds-s); padding: 4px 6px; border-radius: 4px; cursor: pointer; color: var(--ds-tinte); font-weight: 400; }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-li:hover { background: var(--ds-auswahl); }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-li.sel { background: var(--ds-auswahl); box-shadow: inset 0 0 0 1px var(--ts-akzent); }   /* §3023 markierte Zeile im Vorgangs-Assistenten (Zeile markieren, Knopf unten — K-415) */
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-li.sel .as-li-t { font-weight: 700; }
/* §3026 Assistent-Zeile einzeilig: Schritt links (fuellt), Ort/Art rechts in Normaltinte (Lint Kontrast 4.5 bei gedaempfter Tinte auf Auswahlgrund) */
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-li > .as-li-t { flex: 1 1 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-li > .as-li-wo { flex: 0 1 60%; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: right; color: var(--ds-tinte); }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-li:has(.as-li-t) { align-items: center; }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-li > input { margin-top: 2px; flex: none; }
/* ══ §3732 / K-433 BAUSTEINE „VERZEICHNIS, PILLE, CHIP, KETTE, SYMBOL“ (Jörg 28.10. 07:13: „Designklassifizierung, damit wir das überall einheitlich nutzen können“) — Schicht bausteine, Geltung wie fen-*; Module tragen KEINE eigenen Fassungen (K-353) ══
   fen-baum      Inhaltsverzeichnis in einer fen-liste: .kap Kapitel (Versalien, Trennlinie), .e2 zweite Ebene, .e3 dritte Ebene, .alle Kopfzeile ohne Linie; Zähler = .as-li-wo als Pille; Wahl = Akzentbalken links + Fläche; .aus = ausgeblendet
   tc-ampel      Kennzeichen-Pille (Art, Typ, Status) — Regel §3478-Block, Geltung dort um .bc-main erweitert
   chip          klickbarer Verweis „Name · Zusatz“, optional mit Knopf (obtn) darin; .chip-z = Zusatz gedämpft
   kette         Beziehungszeile „BEZIEHUNG → [chip] [chip]“: .kette-b Beschriftung, .kette-p Pfeil, .kette-z Ziele; Sammler .ketten
   qsyms/qsym    Quellen-/Herstellersymbole in gleich großen Kästchen (16 px; .gross 20 px), ohne Bild der Anfangsbuchstabe; .q-on/.q-off Online-Punkt
   fen-block-u   Unterzeile unter dem Kacheltitel (Pillen, Pfad, Symbole) — umbricht, Kachel rollt
   fen-abschnitt Zwischentitel in einer Kachel (Versalien, Linie), .tc-stand rechts
fen-tabs      Reiterzeile IN einer Kachel (ma-tab-Knöpfe, rechts optional ein chip), darunter .fen-tab = Tafel, die die Kachel bis unten füllt und in sich rollt; nur die aktive Tafel sichtbar ([hidden]) — §3734
kw-wert       gerendertes Kennwort (code) in Knopfhöhe statt des 🔑-Knopfs, .ein = Startzustand der Einblendung (Transition), .kw-klein = Chip-Fassung (auch am obtn) — §3734 */
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li { border-radius: 0; padding: 0 var(--ds-s) 0 var(--ds-m); min-height: var(--ds-zeile); box-shadow: inset 3px 0 0 transparent; }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li.sel { background: var(--ts-flaeche); box-shadow: inset 3px 0 0 var(--ts-akzent); }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li.kap { margin-top: var(--ds-s); padding-top: var(--ds-xs); border-top: 1px solid var(--ts-line); }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li.kap > .as-li-t { font-size: var(--ds-fs-hinweis); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--ts-gedaempft); }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li.kap.sel > .as-li-t, :is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li.kap:hover > .as-li-t { color: var(--ts-ink); }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li.alle { margin-top: 0; border-top: 0; }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li.alle > .as-li-t { text-transform: none; letter-spacing: 0; font-size: inherit; color: var(--ts-ink); }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li.e2 { padding-left: calc(var(--ds-m) + var(--nw-einzug) / 2); }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li.e2 > .as-li-t { font-weight: 600; }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li.e3 { padding-left: calc(var(--ds-m) + var(--nw-einzug)); }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li.aus > .as-li-t { color: var(--ts-gedaempft); }   /* §4438 kein Durchstreichen */
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li.e4 { padding-left: calc(var(--ds-m) + var(--nw-einzug) * 1.5); }   /* §4334 vierte Ebene (Postfachordner Haupt › Partner › Jahr › Gruppe) */
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li.neu > .as-li-t { font-style: italic; color: var(--ts-akzent); }   /* §4334 noch nicht vorhandener Ordner (entsteht beim Ablegen) */
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li > .as-li-wo { flex: 0 0 auto; min-width: 26px; padding: 0 7px; border-radius: 10px; background: var(--ts-flaeche); color: var(--ts-gedaempft); font-size: var(--ds-fs-hinweis); font-weight: 600; line-height: 18px; text-align: center; }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-baum > .fen-li.sel > .as-li-wo { background: var(--ts-akzent); color: var(--ts-sec-fg); }
:is(.ts-dlg-box, .bc-main, .m-reparatur .rp-kopf-zeile) .chip { display: inline-flex; align-items: center; gap: 6px; max-width: 260px; height: 24px; padding: 0 8px; border: 1px solid var(--ts-line); border-radius: 12px; background: var(--ts-panel-bg); color: var(--ts-ink); text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; }
:is(.ts-dlg-box, .bc-main, .m-reparatur .rp-kopf-zeile) .chip:hover { border-color: var(--ts-akzent); color: var(--ts-akzent-dark); }
:is(.ts-dlg-box, .bc-main) .chip > .chip-z { color: var(--ts-gedaempft); font-size: var(--ds-fs-hinweis); }
:is(.ts-dlg-box, .bc-main) .chip > .obtn { height: var(--ts-btn-h-mini); line-height: calc(var(--ts-btn-h-mini) - 2px); padding: 0 6px; font-size: var(--ds-fs-hinweis); }   /* §3734 KNOPFMASS §722: Token statt 18 px (Prüfer-Befund 28.10.) */
:is(.ts-dlg-box, .bc-main) .ketten { display: flex; flex-direction: column; gap: var(--ds-xs); padding-top: var(--ds-s); }
:is(.ts-dlg-box, .bc-main) .kette { display: grid; grid-template-columns: 150px 16px minmax(0, 1fr);   /* §3734 gemessen 28.10.: „ANGESCHLOSSEN AN“ (Versalien, 11 px, .04em) wurde bei 120 px gekürzt */ align-items: center; column-gap: var(--ds-xs); min-height: var(--ds-zeile); }
:is(.ts-dlg-box, .bc-main) .kette-b { color: var(--ts-gedaempft); font-weight: 600; font-size: var(--ds-fs-hinweis); text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
:is(.ts-dlg-box, .bc-main) .kette-p { color: var(--ts-gedaempft); text-align: center; }
:is(.ts-dlg-box, .bc-main) .kette-z { display: grid; grid-template-columns: repeat(auto-fill, minmax(var(--chip-sp), 1fr)); gap: var(--ds-xs); min-width: 0; }   /* §3734 Chips sortiert in gleicher Breite (Jörg 28.10.): Raster statt Fließsatz */
:is(.ts-dlg-box, .bc-main) .kette-z > .chip { max-width: none; width: 100%; min-width: 0; box-sizing: border-box; }
:is(.ts-dlg-box, .bc-main) .chip > span:first-child { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
:is(.ts-dlg-box, .bc-main) .chip > .chip-z { flex: 0 0 auto; }
:is(.ts-dlg-box, .bc-main) .qsyms { display: inline-flex; align-items: center; gap: 4px; vertical-align: middle; }
:is(.ts-dlg-box, .bc-main) .qsym { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: 3px; border: 1px solid var(--ts-line); background: var(--ts-panel-bg); overflow: hidden; }
:is(.ts-dlg-box, .bc-main) .qsym > img { width: 100%; height: 100%; object-fit: contain; }
:is(.ts-dlg-box, .bc-main) .qsym > b { font-size: 10px; line-height: 1; color: var(--ts-gedaempft); }
:is(.ts-dlg-box, .bc-main) .qsyms.gross .qsym { width: 20px; height: 20px; } :is(.ts-dlg-box, .bc-main) .qsyms.gross .qsym > b { font-size: 12px; }
:is(.ts-dlg-box, .bc-main) .q-on { color: var(--ts-meld-ok-fg); font-size: 10px; } :is(.ts-dlg-box, .bc-main) .q-off { color: var(--ts-line); font-size: 10px; }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-block-u { display: flex; align-items: center; gap: var(--ds-s); flex-wrap: nowrap; height: var(--ds-zeile); flex: 0 0 auto; color: var(--ts-gedaempft); font-size: var(--ds-fs-hinweis); white-space: nowrap; overflow: hidden; min-width: 0; }   /* §3733 EINZEILIG (K-426): gemessen 28.10. — dreizeilig umgebrochen, Formular lag darüber */
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-block-u > span { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-block-t.einzeilig { display: flex; align-items: baseline; gap: var(--ds-m); min-width: 0; } :is(.ts-dlg-box, .bc-main, .mw.wz) .fen-block-t.einzeilig > span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
:is(.ts-dlg-box, .bc-main) .fen-abschnitt { font-size: var(--ds-fs-hinweis); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ts-gedaempft); padding-top: var(--ds-s); border-bottom: 1px solid var(--ts-line); }
:is(.ts-dlg-box, .bc-main) .fen-abschnitt .tc-stand { float: right; text-transform: none; letter-spacing: 0; font-weight: 400; }
:is(.ts-dlg-box, .bc-main) .fen-leer { color: var(--ts-gedaempft); padding-top: var(--ds-s); }
/* §3734 Reiter in der Kachel + Tafel füllt (Jörg 28.10. 07:37: „nicht nebeneinander, sondern in Tabs … Kinderkacheln bis zum unteren Bereich“) */
:is(.ts-dlg-box, .bc-main) .fen-tabs { display: flex; align-items: center; gap: var(--ds-xs); flex: 0 0 auto; margin: 0; padding-bottom: var(--ds-xs); border-bottom: 1px solid var(--ts-line); }
:is(.ts-dlg-box, .bc-main) .fen-tabs > .ma-tab { display: inline-flex; align-items: center; gap: var(--ds-xs); height: var(--ds-zeile); padding: 0 12px; }
:is(.ts-dlg-box, .bc-main) .fen-tabs > .ma-tab:disabled { opacity: .5; cursor: default; }
:is(.ts-dlg-box, .bc-main) .fen-tabs > .ma-tab > .as-li-wo { min-width: 22px; padding: 0 6px; border-radius: 9px; background: var(--ts-flaeche); color: var(--ts-gedaempft); font-size: var(--ds-fs-hinweis); font-weight: 600; line-height: 16px; text-align: center; }
:is(.ts-dlg-box, .bc-main) .fen-tabs > .ma-tab.active > .as-li-wo { background: var(--ts-sec-fg); color: var(--ts-akzent); }
:is(.ts-dlg-box, .bc-main) .fen-tabs > .chip { margin-left: auto; }
:is(.ts-dlg-box, .bc-main) .fen-tab { flex: 1 1 auto; min-height: 0; overflow: auto; display: flex; flex-direction: column; }
:is(.ts-dlg-box, .bc-main) .fen-tab[hidden] { display: none; }
:is(.ts-dlg-box, .bc-main) .fen-tab > .fen-form.fz-gitter { align-content: start; }
:is(.ts-dlg-box, .bc-main) .fen-tab > .ketten { padding-top: var(--ds-xs); }
/* §3734 Kennwort: Knopf in Knopfhöhe als Feld, Wert blendet an derselben Stelle ein; Chip-Fassung (kw-klein) nur Schlüssel */
:is(.ts-dlg-box, .bc-main) .obtn.kw-laedt { opacity: .55; }
:is(.ts-dlg-box, .bc-main) .kw-wert { display: inline-flex; align-items: center; height: var(--ts-btn-h); padding: 0 10px; border: 1px solid var(--ts-line); border-radius: 6px; background: var(--ts-flaeche); font-family: var(--ts-mono); font-size: 13px; letter-spacing: .04em; color: var(--ts-ink); cursor: copy; white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; justify-self: start; opacity: 1; transform: none; transition: opacity .22s ease, transform .22s ease; }
:is(.ts-dlg-box, .bc-main) .kw-wert.ein { opacity: 0; transform: translateY(-4px); }
:is(.ts-dlg-box, .bc-main) .chip > .obtn.kw-klein { width: var(--ts-btn-h-mini); padding: 0; justify-content: center; margin-left: auto; flex: 0 0 auto; }
:is(.ts-dlg-box, .bc-main) .chip > .kw-wert { height: var(--ts-btn-h-mini); padding: 0 5px; font-size: var(--ds-fs-hinweis); margin-left: auto; flex: 0 0 auto; max-width: 60%; }
:is(.ts-dlg-box, .bc-main) .chip:has(> .kw-wert) > .chip-z { display: none; }   /* gemessen 28.10.: mit Wert UND Art blieb dem Namen „Acr…“ — die Art weicht dem Wert, der Name bleibt lesbar */
:is(.ts-dlg-box, .bc-main) .pflicht { color: var(--ts-meld-err-fg); }
.ts-dlg-box .as-tresor #as_tr_liste { flex: 1 1 auto; max-height: none; min-height: 0; overflow: auto; }   /* §2728 Trefferliste fuellt die Kachel (war max-height 260) */
.ts-dlg-box .as-tresor .fen-form.fz-gitter { grid-template-columns: var(--fb-170) minmax(0, 1fr) auto; }   /* §2733 beide Kacheln eine Flucht (Liste fuellt per Flex — kein gemeinsames Gitter moeglich) */
.ts-dlg-box .as-tresor .as-tr-neu { display: flex; justify-content: flex-start; }
:is(.ts-dlg-box, .bc-main) .fen-form.fz-gitter > .fz > textarea.v { width: 100%; grid-column: 2 / -1; }
:is(.ts-dlg-box, .bc-main) .fen-form > label { text-align: left; color: var(--ts-gedaempft); font-weight: 600; white-space: nowrap; }
:is(.ts-dlg-box, .bc-main) .fen-form > label.oben { align-self: start; padding-top: 6px; }   /* Beschriftung neben mehrzeiligem Feld oben */
:is(.ts-dlg-box, .bc-main) .fen-form > .voll { grid-column: 1 / -1; }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-block.fuellt { flex: 1 1 auto; min-height: 0; }
:is(.ts-dlg-box, .bc-main) .fen-bloecke.fuellt { flex: 1 1 auto; min-height: 0; }   /* §2726 ganze Kachelreihe nimmt die Resthoehe */
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-block > .v.ro.fuellt { flex: 1 1 auto; min-height: var(--fz-text-2z); height: auto; white-space: pre-wrap; overflow: auto; align-items: flex-start; padding-top: var(--fz-text-pad); }   /* §2727 Lesefeld fuellt die Kachel (Notiz) */
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-block > textarea.v.fuellt { flex: 1 1 auto; min-height: var(--fz-text-2z); height: auto; width: 100%; }   /* Textfeld direkt in der Kachel (Titel genuegt als Beschriftung) */   /* §2724 Kachel nimmt die Resthoehe der festen Fensterstufe */
:is(.ts-dlg-box, .bc-main) .fen-form.fuellt { flex: 1 1 auto; min-height: 0; grid-template-rows: minmax(0, 1fr); grid-auto-rows: auto; }   /* erste Zeile waechst, die anderen bleiben */
:is(.ts-dlg-box, .bc-main) .fen-form > textarea.v.fuellt { height: 100%; min-height: var(--fz-text-2z); }
:is(.ts-dlg-box, .bc-main) .fen-form > .v.ro { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
:is(.ts-dlg-box, .bc-main) .fen-form > textarea.v { width: 100%; }
:is(.ts-dlg-box, .bc-main) .fen-form > .fb-nummer, :is(.ts-dlg-box, .bc-main) .fen-form > .fb-auswahl, :is(.ts-dlg-box, .bc-main) .fen-form > .fb-datum { justify-self: start; }
:is(.ts-dlg-box, .bc-main) .fen-form .fen-ck { gap: var(--ds-l); }
:is(.ts-dlg-box, .bc-main) .fen-ck > .v { flex: 0 0 auto; }
:is(.ts-dlg-box, .bc-main) .fen-ck > .v.fuellt { flex: 1 1 auto; min-width: 0; }   /* §3414 Feld fuellt die Reihe neben einem Knopf (Mail-Editor: An + Cc/Bcc-Schalter) */   /* §2752 Felder in einer fen-ck-Reihe behalten ihre Leiterbreite (fb-uhr 62, fb-km 80) — gemessen gezogen */
:is(.ts-dlg-box, .bc-main) .fen-ck > label { display: inline-flex; align-items: center; gap: 6px; color: var(--ds-tinte); font-weight: 400; cursor: pointer; white-space: nowrap; }

:is(.ts-dlg-box, .bc-main, .mw.wz, .m-ecodms) .fen-block { border: var(--ds-rahmen) solid var(--ds-trennlinie); border-radius: var(--ds-radius); padding: var(--ds-s) var(--ds-m) var(--ds-m); display: flex; flex-direction: column; gap: var(--ds-s); background: var(--ds-flaeche); }   /* §4372: auch im Bereich ecoDMS (Klassifizierung) — dieselbe Kachel statt eigener Überschriftenform */
:is(.ts-dlg-box, .bc-main, .mw.wz, .m-ecodms) .fen-block-t { font-weight: 700; padding-bottom: var(--ds-xs); border-bottom: var(--ds-rahmen) solid var(--ds-trennlinie); }
:is(.ts-dlg-box, .bc-main, .mw.wz, .m-ecodms) .fen-block-t > .ts-status-txt { font-weight: 400; margin-left: var(--ds-s); }
:is(.ts-dlg-box, .bc-main) .fen-ck { display: flex; align-items: center; gap: var(--ds-s); height: var(--ds-feld); }
:is(.ts-dlg-box, .bc-main) .fen-raster { display: grid; grid-template-columns: repeat(var(--fen-sp, 3), minmax(0, 1fr)); gap: var(--ds-xs) var(--ds-l); }
:is(.ts-dlg-box, .bc-main) .fen-block-fuss { display: flex; justify-content: flex-end; gap: var(--ts-btn-gap); margin-top: auto; padding-top: var(--ds-s); border-top: var(--ds-rahmen) solid var(--ds-trennlinie); }   /* DFA §4307 (K-435): Knöpfe IM Kachelfuß — iLO-Unterreiter, allgemein für jede fen-block mit Aktionen */
:is(.ts-dlg-box, .bc-main) .fen-block-fuss .obtn { width: auto; }
:is(.ts-dlg-box, .bc-main) .fen-raster.sp2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
:is(.ts-dlg-box, .bc-main) .fen-raster > label { display: flex; align-items: center; gap: var(--ds-s); color: var(--ds-tinte); font-weight: 400; white-space: nowrap; cursor: pointer; min-height: var(--ds-feld); }
/* §2720 Vorgangsregel-Fenster: EIN Raster — Beschriftung 130 px rechtsbuendig | Feld bis zur rechten Kante (keine leere 3. Spalte), Abschnitte als Linie,
   Einstellungen zweispaltig (kurze Werte = kurze Felder) */





.ts-dlg-box .as-anlegen .fz.as-tr { grid-template-columns: 28px minmax(0, 1fr); }   /* §2535 Tresor-Treffer im Umstellen-Dialog: Haken + Eintrag */
.ts-dlg-box .as-anlegen .fz.as-tr label { text-align: center; }
.ts-dlg-box .as-anlegen .fz.as-tr-unter { grid-template-columns: 28px max-content minmax(0, 1fr); }   /* §2729 Unterzeile eines Treffers (Neuer Titel): eingerueckt unter den Eintrag, Beschriftung linksbuendig, Feld bis zur rechten Kante */
.ts-dlg-box .as-anlegen .fz.as-tr-unter > label { text-align: left; color: var(--ts-gedaempft); font-weight: 600; }
.ts-dlg-box .as-anlegen .as-gruppe { font-weight: 700; text-transform: uppercase; letter-spacing: .03em; margin-top: 6px; }   /* §2540 Gruppen Passwortmanager / Lesezeichen */
/* §2691 Umstellungs-Verlauf (Partnerliste, Doppelklick) — eigener Aufbau, Stufe weit; nichts aus .as-anlegen/.fz erben */
.ts-dlg-box .as-vl .as-vl-verlauf { flex: 1 1 auto; min-height: 0; }   /* §2723 Kachel Verlauf fuellt den Rest; .fen liefert Spalte + Kachelabstand */
.ts-dlg-box .as-vl-neu { display: grid; grid-template-columns: var(--fb-120) minmax(0, 1fr) auto auto;   /* §2696 + Anhang-Knopf */ gap: var(--ds-s); align-items: center; }
.ts-dlg-box .as-vl .as-verlauf { flex: 1 1 auto; min-height: 0; }
.ts-dlg-box .as-vl .as-verlauf table { table-layout: fixed; width: 100%; }
.ts-dlg-box .as-vl .as-verlauf td { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ts-dlg-box .as-vl .as-vl-d { width: 100px; }
.ts-dlg-box .as-vl .as-vl-w { width: 130px; }
.ts-dlg-box .as-vl .as-verlauf tbody tr[data-vid] { cursor: pointer; }   /* §2699 Zeile markieren, Knoepfe unten */
.ts-dlg-box .as-vl .as-verlauf tbody tr.sel > td { background: var(--ds-auswahl); }
.ts-dlg-box .as-anlegen #as_tr_liste { max-height: var(--dlg-liste-h); overflow: auto; display: flex; flex-direction: column; gap: 4px; }
.ts-dlg-box .as-anlegen .as-tr-z { display: flex; gap: 6px; align-items: center; min-width: 0; white-space: nowrap; overflow: hidden; }   /* §2541 Treffer-Zeile: Titel · Benutzer · Domain · Ordner, Links rechts */
.ts-dlg-box .as-anlegen .as-tr-links { margin-left: auto; display: flex; gap: 10px; flex: 0 0 auto; }
/* §3469 (Joerg 24.10.): keine helle/kursive Sonderdarstellung für Anbieter ohne Stammsatz und keine graue Schrift für umgestellte — alle Zeilen gleich, der Stand steht in der Spalte Stand */
/* §3465 kein Durchstreichen mehr bei umgestellten Anbietern ohne Stammsatz — Stand zeigt „✓ umgestellt Datum“ wie bei Lieferanten */

.ts-dlg.as #as_tab .as-erledigt { color: var(--ts-ok); font-weight: 600; }
#ls_anderer::before { content: "\01F504"; }   /* 🔄  Anderer Lieferant */
#bi_reset::before { content: "\0021BA"; }   /* ↺  Filter loeschen */
#bi_kompl::before { content: "\0023F3"; }   /* ⏳  nur offene */
#bcb_auf::before { content: "\0025BE"; }   /* ▾  Alle ausklappen */
#bcb_zu::before { content: "\0025B8"; }   /* ▸  Alle einklappen */
/* §4170: .obtn.sn-del / .obtn.pid-del (🗑 vor Seriennummer/ProduktID entfernen) entfernt — Knöpfe der alten RMA-Zuordnung, seit §4106 ohne Markup (Aufrufgraph: Waise) */

/* ▸N760 */
/* ▸N761 */
/* ▸N762 */
/* ▸N763 */
/* ▸N764 */
/* ▸N765 */
/* ▸N766 */
/* ▸N767 */
/* ▸N768 */
#pd_abbr::before,
#eg_abbr::before,
#pb_abbr::before,
#as-cancel::before,
#ts-dlg-cancel::before,
#as_ab::before,
#st_ab::before,
#vs_ab::before,
#ed_cancel::before,
#kte_cancel::before,
#te_cancel::before,
#a_close::before,
#ovl_close::before { content: "\002715"; }
/* 💾  Speichern */
#pd_save::before,
#eg_save::before,
#pb_save::before,
#ed_save::before,
#kte_save::before,
#te_save::before { content: "\01F4BE"; }
/* ✓  Bestaetigen / OK / Uebernehmen / Verstanden */
#as-ok::before,
#ts-dlg-ok::before,
#as_ok::before,
#st_ok::before,
#vs_ok::before,
#zf_ok::before,
#rma_uebernehmen::before { content: "\002713"; }
/* 🔍  Suche ausloesen */
#such_btn::before,
#s_go::before { content: "\01F50D"; }
/* ☑  Alle / Keine auswaehlen (bibliothek Werte-Popup) */
#tv_all::before { content: "\002611"; }
#tv_none::before { content: "\002610"; }
/* 🧪  API- / Mail-Testlaeufe (einstellungen) */
#es-brandfetchtest::before,
#es-ecotest::before,
#es-googletest::before,
#es-kitest::before { content: "\01F9EA"; }
#es-mailtest::before { content: "\002709"; }
/* ℹ  Info- / Auswahl-Knoepfe an Kopffeldern */
#f_kunde_info::before,
#f_lief_info::before,
#f_rma_info::before,
#fs_info::before { content: "\002139"; }
#f_rma_wahl::before { content: "\01F50D"; }
/* ⚙  Werkzeug-Buttons */
#a_namebtn::before,
#eco_datfix::before { content: "\002699"; }   /* ▸N769 §679t §679o */
/* 👁  Vorschau */
#po_vs::before { content: "\01F441"; }   /* ▸N772 */
.tspro-ui .obtn[data-ecdel]::before { content: "\01F5D1"; }
/* ▸N777 */

/* ▸N778 */
.tspro-ui .lg-apply { width: 26px; height: var(--such-btn-h); padding: 0;
  border: 1px solid var(--ts-panel-bd); border-radius: 6px;
  background: var(--ts-panel-bg); color: var(--ts-ink); font-size: 13px; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center; }

/* ▸N779 */
#m-wiz.mbg,.kt-dlg-hg,.ts-memo-ov {
  font-family: var(--ts-font);
  color: var(--ts-ink); }

/* ▸N780 */
/* ▸N781 */
[class*="-ovl"] > [class*="-box"] > [class$="-head"]:not(.fil-sec-head):not(.opt-head):not(.da-head),
[class*="-ov"]  > [class*="-box"] > [class$="-head"]:not(.fil-sec-head):not(.opt-head):not(.da-head),
[class*="-dlg"] > [class*="-box"] > [class$="-head"]:not(.fil-sec-head):not(.opt-head):not(.da-head) {
  background: var(--ts-ink); color: var(--ts-sec-fg);
  padding: var(--ts-head-pad);
  font-size: var(--ts-head-fs); font-weight: var(--ts-head-fw);
  letter-spacing: var(--ts-head-ls);
  display: flex; align-items: center; justify-content: space-between; gap: 12px; }
/* ▸N782 */
[class$="-head"] [class$="-x"], [class$="-head"] button[class*="-x"] {
  background: transparent; border: 0; color: var(--ts-sec-fg); font-size: 20px; line-height: 1;
  cursor: pointer; padding: 0 4px; opacity: .8; width: auto; height: auto; border-radius: 0; }

/* ▸N783 */
.ts-dlg-box.tsmd-box { width: min(var(--dlg-w-breit), 94vw); max-width: min(var(--dlg-w-breit), 94vw); }   /* §1595b (Joerg): Mail-Dialog Stufe breit 900 (vorher schmal 480) — der Dialog IST die Vorschau */
.ts-dlg-box.tsmd-box .tsmd-body { width: 100%; height: var(--tsmd-body-h); border: 1px solid var(--ds-trennlinie); background: var(--ts-panel-bg); display: block; box-sizing: border-box; }   /* §1595c: Nachricht + Signatur als EINE Flaeche */
/* ▸N784 */
.ts-dlg .tsmd-lbl, .ts-dlg-box .tsmd-lbl { display: block; font-size: 12px; font-weight: 700;
  color: var(--ts-ink); margin: var(--ds-m) 0 3px; }
.ts-dlg .tsmd-lbl:first-child, .ts-dlg-box .tsmd-lbl:first-child { margin-top: 0; }
.ts-dlg .tsmd-in, .ts-dlg-box .tsmd-in { display: block; width: 100%; padding: var(--ds-s);
  border: 1px solid var(--ts-panel-bd);
  border-radius: 6px; font-size: 13px; font-family: inherit; box-sizing: border-box; }
   /* resize:none aus Grundregel (17), §219c */   /* ▸N785 */
.ts-dlg .tsmd-fmt { margin: 2px 0 4px; }
.ts-dlg .tsmd-chk { display: inline-flex; align-items: center; gap: 6px; margin-right: var(--ds-l);
  font-size: 13px; cursor: pointer; }
.je-such .be-tbl th { z-index: 1; overflow: hidden; text-overflow: ellipsis; }

/* ▸N794 */
.je-such .as-tbl { table-layout: fixed; width: 100%; }
.je-such .as-tbl th, .je-such .as-tbl td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* ▸N795 R-12.5 */

/* ▸N796 §1297 R-4.13 */

/* ▸N797 */
input[type="date"],
input[type="date"].v,
.tspro-ui input[type="date"].v,
.ts-dlg input[type="date"].v,
.ts-ovl input[type="date"].v {
  width: var(--ts-datum-w);
  max-width: 100%;
  box-sizing: border-box;
  /* ▸N798 */
  display: inline-block;
  align-items: initial;
  font-size: 13px;
  line-height: normal;
}

/* ▸N799 */
input[type="date"]::-webkit-date-and-time-value {
  text-align: left;
  margin: 0;
  font-size: 13px;   /* 29.07.: Segmente in derselben Groesse wie alle Felder */
}
input[type="date"]::-webkit-datetime-edit {
  flex: none;
  padding: 0;
  letter-spacing: 0;
}
input[type="date"]::-webkit-datetime-edit-fields-wrapper {
  flex: none;
  padding: 0;
}
input[type="date"]::-webkit-datetime-edit-day-field,
input[type="date"]::-webkit-datetime-edit-month-field,
input[type="date"]::-webkit-datetime-edit-year-field,
input[type="date"]::-webkit-datetime-edit-text {
  flex: none;
  padding: 0;
  margin: 0;
}

/* ▸N800 */

/* ▸N801 */
.tspro-ui .fil-sec-head span[id$="-status-txt"]{font-weight:500;opacity:.8;margin-left:10px}
.dlg-tbl{width:100%;border-collapse:collapse;font-size:var(--ts-tab-fs)}
.dlg-tbl th{text-align:left;padding:4px 8px}
.dlg-tbl td{padding:3px 8px}
.dlg-tbl.k{font-size:inherit}
.dlg-tbl.k th{padding:3px 6px}
.dlg-tbl.k td{padding:3px 6px}
.dlg-tbl td.r{text-align:right}
.dlg-tbl th.r{text-align:center}   /* 03.08.: Kopf nicht rechts */

/* ▸N803 K-113 */
.tspro-ui .tbl-box tbody td input:not([type=checkbox]):not([type=radio]):not([type=date]){width:100%}   /* ▸N804 §705 K-344 */
.tspro-ui .tbl-box table{width:100%}

/* ▸N805 */
.tspro-ui .tbl-box tbody td input:not([type=checkbox]):not([type=radio]):not([type=date]),
.tspro-ui .tbl-box tbody td select,
.tspro-ui .tbl-box tbody td textarea { font-family: inherit; }   /* §692d: auch der dritte Grauton #555 ist damit weg */

/* ▸N812 */
/* ▸N813 */
.wb-wrap.tspro-ui .tbl-box tbody td input.num { width: 100%; min-width: 0; text-align: right; }

/* ▸N814 */
.dlg-scroll.h300{max-height:var(--mw-scroll-300)}


/* ▸N815 */
.ts-dlg .dlg-tbl{font-size:var(--ts-tab-fs)}
.ts-dlg .dlg-tbl th{padding:4px 8px}
.ts-dlg .dlg-tbl td{padding:3px 8px}
.ts-dlg .dlg-tbl.k{font-size:var(--ts-tab-fs)}   /* ▸N816 */
.ts-dlg .dlg-tbl.k th{padding:3px 6px}
.ts-dlg .dlg-tbl.k td{padding:3px 6px}
.ts-dlg .dlg-tbl td.r{text-align:right}
.ts-dlg .dlg-tbl th.r{text-align:center}   /* 03.08.: Kopf nicht rechts */
.ts-dlg .dlg-tbl .re{text-align:right}   /* ▸N817 §313 */

/* ▸N818 */
.be-ov .datepick{ position:relative; display:flex; min-width:0; }
.be-ov .datepick > input:not([type="date"]){ flex:1; min-width:0; }
.be-ov .datepick > input[type="date"]{
  position:absolute; inset:0; width:100%; height:100%;
  opacity:0; pointer-events:none; border:0; padding:0;
}
/* ▸N819 */
.tspro-ui .datepick > input.bv{ flex:1; min-width:0; }

/* ▸N822 */
/* ▸N823 */
#art-ovl{ position:fixed; inset:0; background:rgba(24,24,27,.5);
  align-items:center; justify-content:center; z-index:9000;
  font-family:var(--ts-font); display:none; }
#art-ovl.on{ display:flex; }   /* ▸§1370: Sichtbarkeit per Klasse statt Inline-Stil (bibliothek.php artOeffnen/artSchliessen) */
#art-ovl .eig-grid > .eig-leer{ grid-column: 1 / -1; }   /* ▸§1370: Hinweis ueber die volle Breite — brach in der 200-px-Spalte um */
#art-ovl .aov-box{ background:var(--ts-panel-bg); width:var(--dlg-w-gross); max-width:96vw;   /* §1307: Stufe gross statt 1400 fest */ height:var(--dlg-h-gross);
  max-height:94vh;   /* §1308 */ display:flex; flex-direction:column; border-radius:12px;
  overflow:hidden; box-shadow:0 24px 70px rgba(0,0,0,.4); }
#art-ovl .aov-head{ background:var(--ts-ink); color:var(--ts-sec-fg); padding:6px 14px;
  display:flex; align-items:center; justify-content:space-between; flex:0 0 auto; }
#art-ovl .aov-titel{ font-size:14px; font-weight:800; }
/* ▸N824 §791 */
  /* ▸N825 */
/* §839: .aov-x -> .ts-x */
#art-body{ flex:1 1 auto; overflow:auto; padding:12px; display:flex;
  flex-direction:column; gap:10px; }
#art-ovl .aov-namelbl{ font-size:12.5px; font-weight:700; white-space:nowrap; }
#art-ovl input.aov-name{ flex:1; min-width:0; height: var(--ds-feld); padding:0 8px;
  box-sizing:border-box; border:1px solid var(--ts-panel-bd); border-radius:6px;
  font:inherit; font-size:13px; }
#art-ovl .aov-editinfo{ font-size:12px; color:var(--ts-red); white-space:nowrap; }   /* ▸N826 */
#cmb-pop{ position:fixed; z-index:9600; background:var(--ts-panel-bg);
  border:1px solid var(--ts-panel-bd); border-radius:6px; max-height:220px;
  overflow:auto; box-shadow:0 8px 24px rgba(0,0,0,.18); }
#oi_int{margin-top:4px}
#axp_such.ovl-in{margin-top:0}
#axp_msg.bib-hinweis{margin:4px 0 0}.bib-wrap .bib-layout { display: grid; grid-template-columns: 300px 1fr var(--ts-opt-w);
            gap: 10px; align-items: stretch; flex: 1 1 auto; min-height: 0; grid-template-rows: auto 1fr; }

/* ▸N833 */
.tspro-ui .dv-vor { box-sizing:border-box; background:transparent; border:0; padding:0; border-radius:0; }
/* ▸N835 */

/* ▸N836 */
.tspro-ui .dv-main{ grid-template-columns: 1fr var(--ts-opt-w); }

/* ▸N837 */
.tspro-ui .dv-right > .opt-col{ flex: 1 1 auto; min-height: 0; }

/* ▸N838 */
.tspro-ui .da-outer{ display:grid; grid-template-columns: 1fr var(--ts-opt-w);
  gap:10px; flex:1 1 auto; min-height:0; align-items:stretch; }.tspro-ui .da-grid { flex: 1 1 auto; min-height: 0; align-items: stretch; grid-template-columns: 1fr 1fr; }   /* ▸N839 */
.tspro-ui .da-outer > .opt-col{ min-height:0; }
/* ▸N840 */
.tspro-ui.da-wrap{ height:100vh; overflow:hidden; display:flex; flex-direction:column; }

/* ▸N841 */
.tspro-ui .mw-layout > .opt-col{ flex:0 0 var(--ts-opt-w); width:var(--ts-opt-w); box-sizing:border-box; }
.tspro-ui .mw-layout{ flex:1 1 auto; min-height:0; align-items:stretch; }

/* ▸N842 */
/* ▸N843 §808 */
.w64{width:var(--ts-fb-s)} .w72{width:var(--ts-fb-s)} .w170{width:var(--ts-fb-2xl)}   /* ▸N844 §808 §819 */
.tspro-ui .mnw36{min-width:var(--mw-36)}.tspro-ui .mnw40{min-width:40px}
.tspro-ui .mnw50{min-width:var(--mw-50)}

/* ▸N845 */
.tspro-ui .w-posnum{width:var(--pos-num-w);min-width:var(--pos-num-w)}

/* ▸N846 K-121 */
/* ▸N847 §808 */
.ts-dlg .mnw36,.je-such .mnw36{min-width:var(--mw-36)}.ts-dlg .mnw40,.je-such .mnw40{min-width:40px}
.ts-dlg .mnw50,.je-such .mnw50{min-width:var(--mw-50)}

/* ▸N848 */
.tspro-ui td.r{ text-align:right; }   /* td-Pendant zur th.r-Regel */
.tspro-ui .tar{ text-align:right }               /* ▸N849 */
.tspro-ui .tal{ text-align:left }

/* ▸N850 R-2.14 */
.tspro-ui td.num{ text-align:right; font-variant-numeric:tabular-nums; }
.preis-zeile .v{ justify-content:flex-end; text-align:right; font-variant-numeric:tabular-nums; }
/* ▸N851 */

/* ▸N852 */
.je-such .js-pos{ border-top:2px solid var(--ts-panel-bd); }   /* ▸N853 §817 */
/* ▸N854 */
.je-such .js-beleg{ border-top:2px solid var(--ts-panel-bd); }   /* ▸N855 §831 */
.je-such .js-beleg table{ table-layout:fixed; width:100% }
.je-such .js-pos table{ table-layout:fixed; width:100% }
/* ▸N856 §630 */
.je-such .js-pos td{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap }

/* ▸N857 */
/* ▸N858 §831 */
/* ▸N859 */
body.vs-offen .je-such             { background:rgba(0,0,0,.25) }
/* ▸N860 §817 */
/* ▸N861 */
.je-such .js-kachel > *      { min-width:0; max-width:100% }
.je-such .js-fgrp            { min-width:0 }
/* ▸N862 */
.je-such .js-fgrp > .js-fbtn.js-krit
                             { min-width:0; max-width:100%; display:flex; gap:8px;
                               align-items:center; justify-content:space-between;
                               text-align:left; padding:0 8px }
.je-such .js-fgrp > .js-fbtn.js-krit > .js-kt
                             { min-width:0; overflow:hidden; text-overflow:ellipsis;
                               white-space:nowrap; flex:1 1 auto; text-align:left }
.je-such .js-fgrp > .js-fbtn.js-krit > .js-kx
                             { flex:0 0 auto; opacity:.75 }

/* ▸N864 R-1.3 */
.je-such .js-kritklapp       { width:100%; margin:2px 0 4px; box-sizing:border-box;
                               border:1px solid var(--such-bd); border-radius: var(--such-btn-r);
                               background:var(--ts-panel-bg); overflow:hidden }
.je-such .js-kk-filter       { width:100%; height: var(--such-btn-h); box-sizing:border-box;
                               border:0; border-bottom:1px solid var(--such-bd);
                               padding:0 8px; font: inherit; font-size: var(--such-btn-fs);
                               background: var(--ts-field-bg) }
.je-such .js-kk-liste        { max-height: 220px; overflow-y:auto }
.je-such .js-kk-it           { padding:0 8px; height: var(--such-btn-h);
                               line-height: var(--such-btn-h); font-size: var(--such-btn-fs);
                               cursor:pointer; white-space:nowrap; overflow:hidden;
                               text-overflow:ellipsis }
.je-such .js-kk-leer         { padding:6px 8px; font-size: var(--such-btn-fs); color: var(--ts-dis-fg) }

body.vs-offen .ts-dlg             { z-index:9600 }   /* Projekt-Eingabe (#ovl) VOR der Vorgangssuche (z 9500) */
.je-such.je-such-vorn { z-index: 10650; }   /* §1854: Suchmaske aus einem Dialog der zweiten Ebene (.ts-dlg.ovl2 = 10600) davor */
.ts-dlg.tsst { z-index: 10610; }   /* §1861: Statusfenster (tsproStatus) immer vorn — ueber Assistent #m-wiz (9999) und gestapelten Dialogen (ovl2 10600); Ebenenleiter K-399 */
.eg-cb-list.eg-cb-vorn { z-index: 10000; }   /* §1862: Eigenschafts-Auswahlliste aus dem Assistenten — ueber #m-wiz (9999), unter gestapelten Dialogen (10600) */
.eg-cb-list[hidden] { display: none !important; }   /* §1864: display:block der Liste ueberstimmte [hidden]; die Gegenregel galt nur in .tspro-ui — im Assistenten blieben geschlossene Listen sichtbar (K-184) */
/* §1862: Assistent Schritt 7 wie die Eigenschaften-Kachel — Tabelle fuellt die Resthoehe (vorher 280-px-Rollkasten + Leerraum); Beschriftung fett wie Kachel im Bearbeiten */
#m-wiz .mb2.w7 { display: flex; flex-direction: column; overflow: hidden; }
/* §4138: .w7-box liegt jetzt in der Schrittkachel — Regel bei ASSISTENTENFENSTER */
#m-wiz #w7-eigbox td.eg-th-eig { font-weight: 700; white-space: nowrap; }
#m-wiz #w7-eigbox .eg-quelle { width: var(--ts-fb-l); color: var(--ts-gedaempft); white-space: nowrap; }   /* §1863: Spalte Datenblatt-Herkunft (Vorgabe/Freitext) im Assistenten Schritt 7 */

/* ▸N865 */
.je-such .js-d-warn{ color: var(--such-foot); font-weight: 700 }

/* ▸N866 K-121 */
.je-such tr.pos-grau td{ color: var(--ts-pos-grau) }

/* ▸N867 */

/* ▸N868 */
.je-such .lb-bestand { padding: 6px 10px;  background: var(--ts-panel-bg); color: var(--ts-ro-fg);   /* §692e */
                         }.je-such .js-box { background: var(--ts-panel-bg);
                    width:  min(var(--such-w), var(--such-w-max));
                    height: min(var(--such-h), var(--such-h-max));
                    border-radius: 8px; box-shadow: 0 16px 60px rgba(0,0,0,.4);
                    display: flex; flex-direction: column; overflow: hidden; font-size: 13px; }

/* ▸N872 */
.je-such.asaus .as-mono { font-family: inherit; font-variant-numeric: tabular-nums; }
.je-such .js-belfilter-t        { font-size: var(--ds-fs-hinweis); font-weight: 700; color: var(--such-muted);
                                  text-transform: uppercase; letter-spacing: .04em;
                                  margin-right: 6px; white-space: nowrap; }

/* ▸N875 */
.je-such td.ekv                                                   { color: transparent; }
.je-such tr:hover td.ekv                                          { color: inherit; }
.je-such.ek-immer td.ekv                                          { color: inherit; }
.be-ov td.ekv, .ts-dlg td.ekv, .ts-ovl td.ekv                   { color: transparent; }
.be-ov tr:hover td.ekv, .ts-dlg tr:hover td.ekv,
.ts-ovl tr:hover td.ekv                                          { color: inherit; }
body:has(.tspro-ui.ek-immer) .be-ov td.ekv,
body:has(.tspro-ui.ek-immer) .ts-dlg td.ekv,
body:has(.tspro-ui.ek-immer) .ts-ovl td.ekv                   { color: inherit; }
/* ▸N876 */
.tspro-ui td.ekv input, .be-ov td.ekv input,
.ts-dlg td.ekv input, .ts-ovl td.ekv input                      { color: transparent; }
.tspro-ui tr:hover td.ekv input, .be-ov tr:hover td.ekv input,
.ts-dlg tr:hover td.ekv input, .ts-ovl tr:hover td.ekv input,
.tspro-ui.ek-immer td.ekv input,
body:has(.tspro-ui.ek-immer) .be-ov td.ekv input,
body:has(.tspro-ui.ek-immer) .ts-dlg td.ekv input,
td.ekv input:focus                                              { color: inherit; }   /* §2778 beim Tippen sichtbar — vorher unsichtbar, sobald die Maus die Zeile verliess (Jörg: "kann kein EK eintragen") */

/* ▸N877 */
.je-such .js-pos tr.vg-offen td { font-weight: 600; }
.je-such .js-pos tr.vg-offen td:first-child { box-shadow: inset 3px 0 0 var(--ts-ink); }

/* ▸N878 */
.ts-dlg tr.pos-grau td,
.ts-dlg tr.pos-grau td input { color: var(--ts-pos-grau); }

/* ▸N879 *//* ▸N880 *//* ▸N881 */
.eg-cb-list .eg-cb-frei-kat{font-style:italic;border-bottom:1px solid var(--ts-trenn);color:var(--ts-ink)}
.eg-inline.eg-ftkat{box-shadow:inset 3px 0 0 var(--ts-ink)}.je-such .js-foot { flex: none; padding: 5px 9px;
                         font-size: var(--ds-fs-hinweis); color: var(--such-foot); min-height: 17px; font-weight: 700; display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }.be-ov  .js-foot { flex: none; padding: 5px 9px;
                       font-size: var(--ds-fs-hinweis); color: var(--such-foot); min-height: 17px; font-weight: 700; display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }

/* ▸N889 */
.je-such .js-belfilter,
.je-such .lb-bestand {
  padding: 6px 10px; margin: 0;
  background: var(--ts-panel-bg); color: var(--ts-ro-fg);   /* §692e */
  border: 0; border-top: 1px solid var(--ts-panel-bd); border-bottom: 1px solid var(--ts-panel-bd);
  border-radius: 0;
}
/* ▸N890 */
.je-such .js-belfilter + .lb-bestand,
.je-such .lb-bestand + .js-belfilter { border-top: 0; }

/* ▸N891 K-160 */
.je-such .lb-fbtn.lb-static {
  pointer-events: none; cursor: default;
  background: transparent; border-color: var(--ts-panel-bd);
}
.je-such .lb-fbtn.lb-static b { opacity: 1; }.je-such .js-belfilter { flex-wrap: wrap;
                                   flex: 0 0 auto; display: grid;
  grid-template-columns: 116px repeat(8, minmax(0, 1fr));
  gap: 4px; align-items: center; }
.je-such .js-belfilter .js-belfilter-t { margin-right: 0; }.je-such .js-belfilter .lb-fbtn { flex: 0 1 auto; width: auto; min-width: 0; }

/* ▸N893 */
.je-such:not(.asaus) .js-belfilter {
  display: flex; flex-wrap: wrap; grid-template-columns: none;
}
.je-such:not(.asaus) .js-belfilter .js-belfilter-t { margin-right: 6px; }
.je-such:not(.asaus) .js-belfilter .lb-fbtn { flex: 0 1 auto; min-width: 104px; }

/* ▸N894 */
.je-such .be-tbl td.num, .je-such .be-tbl th.num,
/* ▸N895 */
.je-such .as-tbl td.r, .je-such .js-pos td.num { text-align: right; font-variant-numeric: tabular-nums; }
.je-such .as-tbl th.r, .je-such .js-pos th.num { text-align: center; font-variant-numeric: tabular-nums; }
.je-such .be-tbl th, .je-such .as-tbl th { white-space: nowrap; }.je-such.asaus .as-tbl td.r { text-align: right; }
.je-such td.num, .je-such td.r {   /* §630: .js-pos-Positionsarme entfernt */
  text-align: right; font-variant-numeric: tabular-nums;
}   /* §804: Alias */
.je-such .be-tbl td,
.je-such .as-tbl tbody td,
.je-such .js-pos td,
.je-such .js-detail > div + div,
.je-such .kd-umsatz               { border-color: var(--such-line); }
.je-such .be-tbl th,
.je-such .as-tbl thead th,
.je-such .js-belfilter,
.je-such .lb-bestand              { border-color: var(--such-line); }

/* ▸N905 */
/* ▸N906 §630 */

/* ▸N907 */
/* ▸N908 §630 */

/* ▸N909 */
.je-such .js-listwrap.js-pos table { width: 100%; max-width: 100%; }
/* ▸N910 §630 */

/* ▸N911 */
/* ▸N912 R-7.6 */
.je-such .js-listwrap.js-pos td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.je-such .js-listwrap.js-pos th { overflow: visible; text-overflow: clip; white-space: nowrap; }
.je-such.asaus #as-we .as-kv3 { display: contents; }
.je-such.asaus #as-we .as-kv3 span:nth-child(2),
.je-such.asaus #as-we .as-kv3 span:nth-child(3) { font-variant-numeric: tabular-nums; }

/* ▸N923 */
.je-such .js-detail > div + div { border-top: 0; margin-top: 0; padding-top: 0; }
.je-such .js-detail > .as-blk + .as-blk,
.je-such .js-detail > * + .kd-umsatz,
.je-such .js-detail > * + .as-blk { margin-top: 10px; padding-top: 8px;
                                    border-top: 1px solid var(--such-line); }

/* ▸N924 */
.je-such .as-blk            { padding-top: 0; margin-top: 0; border-top: 0; }
.je-such .as-blk > b        { display: block; font-weight: 700; margin-bottom: 3px; }
.je-such .as-kv             { display: flex; justify-content: space-between; gap: 10px; padding: 1px 0; }.je-such .kd-umsatz { color: var(--ts-gedaempft); line-height: 1.5; border-top: 0; margin-top: 0; padding-top: 0; }.je-such.asaus #as-we { display: grid; overflow: hidden; max-width: 100%; grid-template-columns: max-content max-content 1fr; gap: 2px 12px; }.je-such.asaus #as-we .as-kv3 > span { overflow: visible; text-overflow: clip; white-space: nowrap; }
.je-such.asaus #as-we .as-kv3 span:nth-child(3) { text-align: right; }   /* ▸N929 §817 */

/* ▸N930 */
.je-such.asaus #as-we .as-kv3.hd span:nth-child(2),
.je-such.asaus #as-we .as-kv3.hd span:nth-child(3) { text-align: center; }

/* ▸N931 */
.je-such.asaus #as-we .as-kv3 span:nth-child(2) { text-align: center; }.je-such .js-detail .js-d-s { font-weight: 400; font-size: 12px; margin: 0; color: inherit; }.je-such .as-kv .k { color: var(--ts-gedaempft); white-space: nowrap; flex: 0 0 auto; }.je-such .as-kv .v { font-weight: 600; text-align: right; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ▸N935 */

/* ▸N936 */

/* ▸N937 */
.je-such .as-kv3            { display: grid; grid-template-columns: max-content max-content 1fr;
                              gap: 2px 12px; padding: 1px 0; }
.je-such .as-kv3 span:nth-child(1) { color: var(--ts-gedaempft); }
.je-such .as-kv3 span:nth-child(2),
.je-such .as-kv3 span:nth-child(3) { text-align: right; font-weight: 600;
                                     font-variant-numeric: tabular-nums; }
/* ▸N938 §814 */
.je-such .as-kv3.hd span:nth-child(2),
.je-such .as-kv3.hd span:nth-child(3) { text-align: center; font-weight: 700; }

/* ▸N939 */
.je-such #kd_umsatz         { display: grid; grid-template-columns: max-content max-content 1fr;
                              gap: 2px 12px; }
.je-such #kd_umsatz .as-kv3 { display: contents; }
.je-such .kd-um-letzte      { grid-column: 1 / -1; margin-top: 4px;
                              color: var(--ts-gedaempft); }   /* ▸N940 §829 */

/* ▸N941 */
.je-such #kd_umsatz .as-kv3.hd span               { font-weight: 700; color: inherit; text-align: center; }
.je-such #kd_umsatz .as-kv3.hd span:nth-child(1)  { text-align: left; }
/* ▸N942 §814 */

/* ▸N943 */
.je-such .as-kv3.hd { font-size: inherit; opacity: .75; }
.je-such #kd_umsatz .as-kv3 span:nth-child(3)    { text-align: right; }
.je-such #kd_umsatz .as-kv3.hd span:nth-child(3) { text-align: center; }

/* ▸N944 */
.je-such ~ .je-such .js-box {
  width:  calc(var(--such-w) - 160px);
  height: calc(var(--such-h) - 120px);
  max-width: 92vw; max-height: 88vh;
}
/* ▸N945 */
.je-such ~ .je-such { background: rgba(24,24,27,.28); }

/* ▸N946 K-165 */
/* ▸N947 §788 K-171 K-165 */

/* ▸N948 K-159 */
.tspro-ui a.js-jump, .ts-dlg a.js-jump, .je-such a.js-jump, .be-ov a.js-jump {
  color: inherit; text-decoration: none; cursor: pointer;   /* §4191 stiller Sprung (Hover/Strg: Regel STILLER SPRUNG am Dateiende) */
}

/* ▸N949 K-165 */
body.vs-offen .je-such .js-box {
  width:  var(--such-w);
  height: var(--such-h);
  max-width: 97vw; max-height: 94vh;
}
body .je-such ~ .je-such .js-box {
  width:  calc(var(--such-w) - 160px);
  height: calc(var(--such-h) - 120px);
  max-width: 92vw; max-height: 88vh;
}

/* ▸N950 §60 */
body:has(.tspro-ui.ek-immer) .je-such td.ekv       { color: inherit; }
body:has(.tspro-ui.ek-immer) .je-such td.ekv input { color: inherit; }

/* ▸N954 §60 */
.je-such .js-detail .js-d-ell,
.be-ov   .js-detail .js-d-ell { overflow: hidden; text-overflow: ellipsis;
                                white-space: nowrap; max-width: 100%; }

/* ▸N955 */
.tspro-ui .tbl-scroll { min-height: 0; }

/* ▸N958 */


/* ▸N968 R-1.5 */
.tspro-ui .w64 { width: var(--ts-sp-artnr); }   /* ▸N971 §807 */

/* ▸N972 */
.sp-nr { width: calc(var(--ts-sp-nr)         + var(--ts-sp-pad)); }   /* ▸N974 §809 */
/* ▸N975 §649 */
.sp-flag-wort { width: calc(var(--ts-sp-flag-wort) + var(--ts-sp-pad)); text-align: center; }
.sp-txt-breit { width: calc(var(--ts-sp-txt-breit)  + var(--ts-sp-pad)); }
/* ▸N976 */
td.sp-txt-breit {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.sp-flag { width: calc(var(--ts-sp-flag)       + var(--ts-sp-pad)); text-align: center; }
.sp-kennung { width: calc(var(--ts-sp-kennung)    + var(--ts-sp-pad)); }
/* ▸N979 §784 */
td.sp-kennung { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sp-typ { width: calc(var(--ts-sp-typ)        + var(--ts-sp-pad)); }/* ▸N980 §223 */
.sp-tel { width: calc(var(--ts-sp-tel)        + var(--ts-sp-pad)); }
.sp-mail { width: calc(var(--ts-sp-mail)       + var(--ts-sp-pad)); }
.sp-abt { width: calc(var(--ts-sp-abt)        + var(--ts-sp-pad)); }
.sp-fil { width: calc(var(--ts-sp-fil)        + var(--ts-sp-pad)); }   /* §2225: Lager-Spalte Filiale entfernt — Klasse aktuell ohne Verwendung */
/* ▸N981 */
td.sp-mail {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

.sp-artnr { width: calc(var(--ts-sp-artnr)      + var(--ts-sp-pad)); }
.sp-kdnr { width: calc(var(--ts-sp-kdnr)       + var(--ts-sp-pad)); }
.sp-katnr { width: calc(var(--ts-sp-katnr)      + var(--ts-sp-pad)); }
.sp-eignr { width: calc(var(--ts-sp-eignr)      + var(--ts-sp-pad)); }
.sp-hernr { width: calc(var(--ts-sp-hernr)      + var(--ts-sp-pad)); }
.sp-renr { width: calc(var(--ts-sp-renr)       + var(--ts-sp-pad)); }
.sp-belegnr { width: calc(var(--ts-sp-belegnr)    + var(--ts-sp-pad)); }
.sp-pos { width: calc(var(--ts-sp-pos)        + var(--ts-sp-pad)); }   /* ▸N982 §810 */
.sp-anz-klein { width: calc(var(--ts-sp-anz-klein) + var(--ts-sp-pad)); }   /* ▸N983 §818 §675 */
.sp-vorschlag { width: calc(var(--ts-sp-vorschlag) + var(--ts-sp-pad)); }
.sp-belegpos { width: calc(var(--ts-sp-belegpos)   + var(--ts-sp-pad)); }
.sp-datum { width: calc(var(--ts-sp-datum)      + var(--ts-sp-pad)); }
.sp-datum-lang { width: calc(var(--ts-sp-datum-lang) + var(--ts-sp-pad)); }
.sp-zeit { width: calc(var(--ts-sp-zeit)       + var(--ts-sp-pad)); }
.sp-geld { width: calc(var(--ts-sp-geld)       + var(--ts-sp-pad)); }
.sp-ek { width: calc(var(--ts-sp-ek)         + var(--ts-sp-pad)); }
.sp-anz { width: calc(var(--ts-sp-anz)        + var(--ts-sp-pad)); }
.sp-mwst { width: calc(var(--ts-sp-mwst)       + var(--ts-sp-pad)); }
.sp-proz { width: calc(var(--ts-sp-proz)       + var(--ts-sp-pad)); }
.sp-kalk { width: calc(var(--ts-sp-kalk)       + var(--ts-sp-pad)); }   /* §4077 Zusatz zu sp-proz: Spalte „Kalkulation“ in den Positionstabellen */
.sp-stkl { width: calc(var(--ts-sp-stkl)       + var(--ts-sp-pad)); }
.tk-u { text-decoration: underline; text-underline-offset: 2px; }   /* §4078 Tastenkürzel Alt+Buchstabe: unterstrichener Buchstabe im Knopftext (tastenkuerzel.js) */   /* §4077 Zusatz zu sp-pos: Spalte „Stückliste“ */
.sp-skr04 { width: calc(var(--ts-sp-skr04)      + var(--ts-sp-pad)); }
.sp-lagerzahl { width: calc(var(--ts-sp-lagerzahl)  + var(--ts-sp-pad)); }
/* ▸N984 §1254 */
.sp-pid { width: calc(var(--ts-sp-pid)        + var(--ts-sp-pad)); }
.sp-plz { width: calc(var(--ts-sp-plz)        + var(--ts-sp-pad)); }
.sp-status { width: calc(var(--ts-sp-status)     + var(--ts-sp-pad)); }
.sp-zahlart { width: calc(var(--ts-sp-zahlart)    + var(--ts-sp-pad)); }

/* ▸N985 */
.sp-text {
  width: auto; min-width: var(--ts-sp-min-produkt);
}
/* ▸N986 §313 §234 */
.sp-produkt { width: 40%; min-width: var(--ts-sp-min-produkt); }
/* ▸N988 §234 */
.sp-ort {
  width: 8%; min-width: var(--ts-sp-min-ort);
  /* ▸N989 */
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.sp-seriennr { width: 10%; min-width: var(--ts-sp-min-seriennr); }   /* §313 8a */
.sp-apartner { width: 12%; min-width: var(--ts-sp-min-apartner); }

/* ▸N990 R-2.1 */
.tspro-ui td.sp-text, .tspro-ui td[class*="sp-"],
.ts-dlg td[class*="sp-"], .je-such td[class*="sp-"] {
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ▸N991 */
.tspro-ui td.sp-geld, .tspro-ui td.sp-ek,
.tspro-ui td.sp-anz,  .tspro-ui td.sp-proz,     .tspro-ui td.sp-mwst,
.tspro-ui td.sp-lagerzahl {
  text-align: right; font-variant-numeric: tabular-nums;
}
/* ▸N992 */
.tspro-ui th.sp-geld, .tspro-ui th.sp-ek,
.tspro-ui th.sp-anz,  .tspro-ui th.sp-proz,     .tspro-ui th.sp-mwst,
.tspro-ui th.sp-lagerzahl,
.tspro-ui th.sp-flag, .tspro-ui th.sp-flag-wort, .ts-dlg th.sp-flag, .ts-dlg th.sp-flag-wort {   /* §2253 Zeichen-/Wortspalten: Kopf mittig wie die Zellen */
  text-align: center;
}
/* ▸N993 §237 §236 */
.tspro-ui td.sp-artnr,   .tspro-ui td.sp-kdnr,   .tspro-ui td.sp-renr,
.tspro-ui td.sp-belegnr, .tspro-ui td.sp-pid,
.ts-dlg     td.sp-artnr,   .ts-dlg     td.sp-kdnr,   .ts-dlg     td.sp-renr,
.ts-dlg     td.sp-belegnr, .ts-dlg     td.sp-pid,
.je-such     td.sp-artnr,   .je-such     td.sp-kdnr,   .je-such     td.sp-renr,
.je-such     td.sp-belegnr, .je-such     td.sp-pid {   /* §1254: td.sp-ean aus allen drei Kontexten entfernt */
  font-variant-numeric: tabular-nums;
}.tspro-ui.tspro-ui thead th,
.ts-dlg.ts-dlg thead th,
.ts-ovl.ts-ovl thead th,
.be-ov.be-ov thead th,
.je-such.je-such thead th { height: var(--ts-tab-th-h);
  line-height: calc(var(--ts-tab-th-h) - 2px);   /* exakt, damit das Gitter darunter passt */
  padding: 0 8px;
  box-sizing: border-box;
  white-space: nowrap; min-width: max-content;
  overflow: visible;
  text-overflow: clip; }.je-such .js-listwrap.js-pos th.js-prod,
.je-such .js-listwrap.js-pos td.js-prod { width: 100%; max-width: 0; min-width: 0;
                                          overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.je-such .js-listwrap.js-pos th.js-prod { overflow: visible; text-overflow: clip; }

/* ▸N1004 R-7.8 */

/* ▸N1005 R-2.9 R-2.10 R-2.14 R-1.2 R-2.13 */
/* ▸N1006 §811 K-166 */
.je-such .as-tbl th[data-sort="nr"]      { width: var(--ts-sp-artnr); }
.je-such .as-tbl th[data-sort="ek"],
.je-such .as-tbl th[data-sort="vk"]      { width: var(--pos-num-w); }
.je-such .as-tbl th[data-sort="la"],
.je-such .as-tbl th[data-sort="ar"],
.je-such .as-tbl th[data-sort="ab"],
.je-such .as-tbl th[data-sort="vf"]      { width: var(--ts-sp-lagerzahl); }
/* ▸N1007 */
.je-such .as-tbl th[data-sort="produkt"],
.je-such .as-tbl td.as-prod              { width: 100%; max-width: 0;
                                           overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.je-such .as-tbl th[data-sort="produkt"] { overflow: visible; text-overflow: clip; }

/* ▸N1008 R-2.10 */
.tspro-ui table.pos-fest th.sp-produkt {
  width: 100%; max-width: 0; overflow: visible; text-overflow: clip; white-space: nowrap;
}
.tspro-ui table.pos-fest td.sp-produkt {   /* ▸N1009 §630 */
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* ▸N1010 R-2.10 */
.tspro-ui th.sp-bem { width: var(--ts-sp-bem); }

/* ▸N1011 */

/* ▸N1012 R-1.3 R-2.9 §239 */
/* ▸N1016 §218 */
/* ▸N1017 §223 */

/* ▸N1018 R-2.10 */
/* ▸N1019 R-2.14 */
.tspro-ui td.sp-bem { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tspro-ui td.sp-bem input.pos-bem-ro { cursor: pointer; }   /* §3636 Anzeigemodus: Klick oeffnet das Textfenster nur zum Lesen (§2355) — Marker ist Prueferanker POSBEM/POSBEMALLE */

/* ▸N1022 §260 */
.je-such th.sp-txt, .ts-dlg th.sp-txt, .ts-ovl th.sp-txt, .tspro-ui th.sp-txt { width: var(--ts-sp-txt); }
.je-such td.sp-txt, .ts-dlg td.sp-txt, .ts-ovl td.sp-txt, .tspro-ui td.sp-txt {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* ▸N1023 */
.je-such th.sp-rest, .ts-dlg th.sp-rest, .ts-ovl th.sp-rest, .tspro-ui th.sp-rest {
  width: 100%; max-width: 0; overflow: visible; text-overflow: clip; white-space: nowrap;
}
.je-such td.sp-rest, .ts-dlg td.sp-rest, .ts-ovl td.sp-rest, .tspro-ui td.sp-rest {
  max-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
th.sp-kontakt { width: var(--ts-sp-kontakt); }   /* §807: ungescoped wie der uebrige Katalog */
.tspro-ui td.sp-kontakt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* ▸N1033 §245 §236 §237 */
th.sp-ruf { width: var(--ts-sp-ruf); }
th.sp-apart { width: var(--ts-sp-apart); }
th.sp-email { width: var(--ts-sp-email); }
.tspro-ui td.sp-ruf, .tspro-ui td.sp-apart, .tspro-ui td.sp-email,
.tspro-ui td.sp-abt,
.ts-dlg     td.sp-ruf, .ts-dlg     td.sp-apart, .ts-dlg     td.sp-email,
.ts-dlg     td.sp-abt,
.je-such     td.sp-ruf, .je-such     td.sp-apart, .je-such     td.sp-email,
.je-such     td.sp-abt {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}.sp-kategorie { min-width: var(--ts-sp-min-kategorie); width: var(--ts-sp-kategorie); }
.sp-geld-lang { width: var(--ts-sp-geld-lang); }
.sp-anz-kopf { width: var(--ts-sp-anz-kopf); }
.sp-anz-lang { width: var(--ts-sp-anz-lang); }
.sp-zeitraum { width: var(--ts-sp-zeitraum); }

/* ▸N1040 R-2.3 */
/* ▸N1041 §261 §260 */
/* §799 (T5a): .co-tbl -> be-tbl tbl-fest */

/* ▸N1042 */

/* ▸N1043 §215 §219 §220 */
.tspro-ui textarea.tv { width: 100%; min-height: 56px; padding: 6px 8px; box-sizing: border-box; border: 1px solid var(--ts-panel-bd); border-radius: 6px; font-family: inherit; font-size: 13px; }
/* ▸N1045 */.ang-da { font-size: 13.5px; }.ang-da .grp { font-weight: 700; margin: 2px 0 4px; }.ang-da label.ck { display:flex; align-items:center; gap:7px; padding:1px 0; }.kpi-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }.kpi { background:var(--ts-flaeche); border:1px solid var(--ts-line); border-radius: var(--ds-radius); padding:8px 10px; }.kpi .kl { font-size:12px; font-weight:600; color:var(--ts-ink); }   /* §692h: Kennzahl-Beschriftung wie .fz > label */.kpi .kv { font-size:18px; font-weight:800; text-align:right; }

@media print {.m-controlling body * { visibility: hidden !important; }.m-controlling .be-top, .m-controlling .be-top * { visibility: visible !important; }.m-controlling .be-top { position: absolute !important; left: 0; top: 0; width: 100%; }/* ▸N1049 §648m */
  .m-controlling #o_refresh, .m-controlling button { display: none !important; }
  /* ▸N1050 §648m */
  
}.dv-main { flex:1; min-height:0; display:grid; grid-template-columns: 1fr 300px; gap:12px; align-items:stretch; }.dv-vor { display:flex; flex-direction:column; min-height:0; }.dv-vor .fil-sec { flex:1; min-height:0; display:flex; flex-direction:column; margin-bottom:0; }.dv-vor .fil-sec-body { flex:1; min-height:0; display:flex; flex-direction:column; padding:0; }.dv-vor iframe { flex:1; min-height:0; width:100%; border:0; background:var(--ts-panel-bg); }
@media (max-width:1100px){.dv-main { grid-template-columns:1fr; } }.inv-kopf { display: grid; grid-template-columns: 1.4fr 1fr; gap: 6px 24px; }.inv-rad { display:flex; flex-direction:column; gap:8px; font-size:14px; }.inv-rad label { display:flex; align-items:center; gap:8px; cursor:pointer; }.inv-rad .tag { display:inline-block; min-width:26px; text-align:center; background:var(--ts-ink); color:var(--ts-sec-fg); font-weight:700; padding:1px 6px; border-radius:3px; font-size:12px; }.inv-rad .tag.ap { background:var(--ts-ok); }.pos-af-on td.c-af, .pos-af-on th.c-af { background:rgba(0,0,0,.05); }.pos-ar-on td.c-ar, .pos-ar-on th.c-ar { background:rgba(0,0,0,.05); }.pos-ae-on td.c-ae, .pos-ae-on th.c-ae { background:rgba(0,0,0,.05); }.pos-ap-on td.c-ap, .pos-ap-on th.c-ap { background:rgba(31,122,51,.12); }.mw-layout { display: flex; gap: var(--ts-kachel-gap); flex: 1; min-height: 0; }.mw-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: var(--ts-kachel-gap); }.mw-main > .fil-sec { display: flex; flex-direction: column; min-height: 0; }.mw-main > .fil-sec:last-child { flex: 1; }.mw-tabs { display: flex; gap: 8px; align-items: center; padding: 4px 2px; }.mw-tabs .obtn { width: auto; }.mw-tab { width: 100%; border-collapse: collapse; font-size: 13px; }.mw-tab th { position: sticky; top: 0; background: var(--ts-flaeche); text-align: left; padding: var(--ds-xs) var(--ds-s); }   /* ▸§1358: border-bottom (--ts-line) entfernt — war toter Code (grund-Tabellenregel staerker), sichtbar war immer --ts-panel-bd */.mw-tab td { padding: 4px 8px; border-bottom: 1px solid var(--ts-trenn); white-space: nowrap; }.mw-tab td.r, .mw-tab th.r { text-align: right; }   /* ▸N1054 §220 *//* §4170: .rep-cks/.rep-cks .ck entfernt — Kennzeichen-Zeile der alten Reparaturmaske, seit §3970 ohne Markup (Aufrufgraph: Waise) */.wr-sub { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 16px; }/* ▸N1057 */
   /* ▸N1058 §648u */.wv-unten > .fil-sec { min-height: 0; display: flex; flex-direction: column; }.wv-unten > .fil-sec > .fil-sec-body { flex: 1; min-height: 0; display: flex; flex-direction: column; }   /* ▸N1059 */
/* ▸N1060 */
/* ▸N1061 */

/* ▸N1062 */
.ts-err { color: var(--ts-red); }
.ts-ok  { color: var(--ts-ok); }   /* ▸N1063 §1253 */
/* ▸N1064 §325 */
.tspro-ui td.ts-err input, .ts-dlg td.ts-err input { color: var(--ts-red); font-weight: 600; }
/* ▸N1065 §329 */
/* ▸N1066 §687c */
/* ▸N1067 §802 */
.ts-b   { font-weight: 700; }
.ts-13  { font-size: 13px; }
/* ▸N1068 */
.ts-h   { font-weight: 700; font-size: 13.5px; margin: 8px 0 4px; }
.ts-h:first-child { margin-top: 0; }
/* ▸N1069 */
/* ▸N1070 R-2 */
/* ▸N1071 */
.dlg-vor  { margin: 0 0 6px; }
/* ▸N1072 */
.dlg-nach { margin: 6px 0 0; }
 /* ▸N1073 */
/* ▸N1074 */
.ang-da .grp ~ .grp { margin-top: 8px; }
/* ▸N1075 */
#ovl_b > input.ts-datum { margin-top: 6px; }
/* Knopfzeile unter einem Kachelinhalt (controlling). */
.btn-zeile { margin-top: 10px; }
/* ▸N1076 */
.fl-rechts { margin-left: auto; font-size: 12px; }
/* ▸N1077 */
.dlg-einzug { margin-left: var(--ds-l); }
/* §3309: .wv-scroll (Mail-Vorschau des Postausgangs, war inline) entfaellt — Vorschau ist der zentrale Mail-Dialog */
.dlg-scroll { max-height: min(var(--mw-scroll-340), 60vh); overflow: auto; }

/* ▸N1079 */
.fz-zeile { display: flex; align-items: center; gap: 8px; }
/* Filterleiste: darf umbrechen und hat Luft nach unten. */
.filterzeile { flex-wrap: wrap; margin-bottom: 8px; }

/* ▸N1080 */
.js-klick { cursor: pointer; }
/* ▸N1081 */
.dv-ph { display: inline-block; margin: 1px 0; }

/* ▸N1082 */

/* ▸N1083 */
.v-schmal { width: auto; }

/* ▸N1084 */
/* ▸N1085 */
.fz-zeile label { font-size: 13px; }
/* ▸N1086 */
.pid-zeile { padding: 2px 0; }
/* §801 (T6): .her-layout -> .be-layout */
.her-main   { display: flex; flex-direction: column; gap: 10px; min-width: 0; min-height: 0; }
/* ▸N1090 */
.her-unten  { display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: 1fr; gap: 10px; flex: 1 1 auto; min-height: 0; align-items: stretch; }   /* ▸N1091 */
/* ▸N1092 K-46 */
.her-unten > .fil-sec { min-height: 0; display: flex; flex-direction: column; margin-bottom: 0; }   /* ▸N1093 */
.her-unten > .fil-sec > .fil-sec-body { flex: 1; min-height: 0; display: flex; flex-direction: column; }

.her-kopf { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.her-kopf .pl   { font-size: 18px; font-weight: 800; letter-spacing: .02em; }
.her-kopf .pnr  { font-size: 15px; font-weight: 700; background: var(--ts-panel-bg); color: var(--ts-ro-fg);   /* §692e */
                  border: 1px solid var(--ts-panel-bd); border-radius: 6px;
                  padding: 4px 10px; min-width: 96px; text-align: center; }
.her-kopf .pbez { flex: 1; font-size: 15px; font-weight: 600; padding: 5px 10px;
                  border: 1px solid var(--ts-panel-bd); border-radius: 6px; background: var(--ts-panel-bg);
                  color: var(--ts-ro-fg); }   /* §692g */
.her-kopf .pbez.editing { border: 1px solid var(--ts-panel-bd); background:var(--ts-panel-bg); color: var(--ts-ink); }   /* §698c: kein blauer Rand */

/* ▸N1096 */
.her-3col { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }   /* 03.08.2026: helle Logofassung sichtbar machen */
.her-unten .fil-sec-body:has(> .logo-box-gross) { display: flex; flex-direction: column; }
/* ▸N1098 */
.her-unten .fil-sec-body:has(> .logo-box-gross) .fz:has(> textarea) { flex: 1; min-height: 0; display: grid; grid-template-columns: max-content minmax(0, 1fr); grid-template-rows: 1fr; align-items: stretch; }   /* ▸N1099 */
.her-unten .fil-sec-body:has(> .logo-box-gross) .fz:has(> textarea) > label { align-self: start; padding-top: 5px; }
.her-unten .fil-sec-body:has(> .logo-box-gross) textarea.v { height: 100%; min-height: 40px; box-sizing: border-box; }   /* resize:none aus Grundregel (17), §219c */
/* ▸N1100 */
.her-unten .fil-sec-body > :last-child { margin-bottom: 0; }.kd-layout { display: grid; grid-template-columns: 1fr var(--ts-opt-w); gap: 10px; align-items: stretch; flex: 1; min-height: 0; }.kd-top { display: grid; grid-template-columns: minmax(0,1fr) 340px; gap: 10px; align-items: stretch; }.kd-sub { font-weight: 700; font-size: 12px; letter-spacing: .03em; text-transform: uppercase; opacity: .65; margin: 12px 0 5px; }.kd-sub:first-child { margin-top: 0; }.kd-main { display: flex; flex-direction: column; gap: 10px; min-width: 0; min-height: 0; }.kd-main > .fil-sec:last-child { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }.kd-main > .fil-sec:last-child > .fil-sec-body { flex: 1; min-height: 0; display: flex; flex-direction: column; }.kd-nameline { display: block; margin-bottom: 14px; }.kd-nameline .knr { font-size: 15px; font-weight: 700; background: var(--ts-panel-bg); color: var(--ts-ro-fg);   /* §692e */
                    border: 1px solid var(--ts-panel-bd); border-radius: 6px;
                    padding: 4px 10px; min-width: 96px; text-align: center; justify-self: start; }.kd-nameline .kname { flex: 1; font-size: 15px; font-weight: 600; padding: 5px 10px;
                      border: 1px solid var(--ts-panel-bd); border-radius: 6px; background: var(--ts-panel-bg);
                      color: var(--ts-ro-fg); }   /* §692g */.kd-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; }.kd-anrede { display: grid; grid-template-columns: minmax(0,1fr) auto minmax(120px,1fr); gap: 8px; align-items: center; }.kd-anrede .tl { text-align: left; font-size: 13px; font-weight: 600; color: var(--ts-ink); }.kd-plzort { display: grid; grid-template-columns: 72px 1fr; gap: 6px; }.kd-zone { display: flex; gap: 14px; align-items: center; height: var(--ds-feld);   /* ▸N1104 §679u */ flex-wrap: wrap; }.kd-zone label { display: flex; align-items: center; gap: 5px; font-size: 13px; }.kd-radios label, .kd-checks label { display: flex; align-items: center; gap: 7px; font-size: 13px;
                                      margin-bottom: 9px; cursor: pointer; }.kd-checks label.b { font-weight: 700; }.kd-radios label:last-child, .kd-checks label:last-child { margin-bottom: 0; }.kd-row { display: flex; align-items: center; justify-content: space-between; gap: 10px;
          margin-bottom: 9px; font-size: 13px; }.kd-row:last-child { margin-bottom: 0; }.kd-row > label { font-weight: 600; }.kd-row > label.b { font-weight: 700; }.kd-row .v { flex: 0 0 auto; width: var(--ts-fb-xl); }/* ▸N1105 §825 */   /* ▸N1106 §824 */   /* §696c */.kd-tbl-btns { display: flex; gap: 8px; margin-top: 8px; }/* ▸N1107 §824 */.kte-grid { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 9px 10px; align-items: center; }.kte-grid label { font-size: 12px; color: var(--ts-ink); }.kte-grid select, .kte-grid input { height: var(--ds-feld); padding: 0 8px; border: 1px solid var(--ts-panel-bd); border-radius: 6px; font-size: 13px; box-sizing: border-box; }.kte-foot { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; }.kte-chk { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--ts-ink); }.kte-grid input[type="checkbox"] { width: var(--ds-checkbox); height: var(--ds-checkbox); flex: 0 0 auto; padding: 0; }.kte-chk.dis { opacity: .45; }.lg-layout { flex: 1; min-height: 0; display: grid; grid-template-columns: 1fr var(--ts-opt-w); gap: 10px; align-items: stretch; }.lg-main { display: flex; flex-direction: column; gap: 10px; min-width: 0; min-height: 0; }.lg-main > .fil-sec:not(.lg-grow) { flex: 0 0 auto; }.lg-main > .fil-sec.lg-grow { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }.lg-main > .fil-sec.lg-grow > .fil-sec-body { flex: 1; min-height: 0; display: flex; flex-direction: column; }.lg-anz { display: grid; grid-template-columns: minmax(360px,1.3fr) auto 1fr; gap: 18px; align-items: start; }.lg-frow { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }.lg-frow > label { text-align: left; white-space: nowrap; font-size: 13px; font-weight: 600; color: var(--ts-ink); }.lg-frow input { height: var(--ds-feld); padding: 0 8px; box-sizing: border-box; border: 1px solid var(--ts-panel-bd);
                 border-radius: 6px; background: var(--ts-panel-bg); font-size: 13px; font-family: inherit; }.lg-frow input.wide { flex: 1; min-width: 0; }.lg-frow input.ek { width: var(--ts-fb-m); }.lg-apply { width: 26px; height: 26px; border: 1px solid var(--ts-akzent-dark); border-radius: var(--ds-radius);
            background: var(--ts-akzent); color: var(--ts-sec-fg); cursor: pointer; font-size: 13px; line-height: 1; }.lg-best { font-size: 13px; }.lg-best .bt { font-weight: 700; margin-bottom: 8px; }.lg-best-grid { display: grid; grid-template-columns: auto auto; gap: 8px 18px; }.lg-best label { display: inline-flex; align-items: center; gap: 6px; }.lg-best .ww { display: flex; align-items: center; gap: 6px; margin-top: 10px; font-weight: 600; }.lg-bcode { display: inline-block; min-width: 24px; text-align: center; background: var(--ts-ink);
            color: var(--ts-sec-fg); font-weight: 700; font-size: var(--ds-fs-hinweis); border-radius: 3px; padding: 1px 5px; }.lg-act { display: flex; flex-direction: column; gap: 7px; align-items: stretch; }.lg-act .obtn { justify-content: center; }
@media print {.m-lager body * { visibility: hidden !important; }.m-lager .tbl-box, .m-lager .tbl-box * { visibility: visible !important; }.m-lager .tbl-box { position: absolute !important; left: 0; top: 0; width: 100%;
             border: none !important; overflow: visible !important; height: auto !important; display: block !important; }.m-lager .tbl-box thead th { position: static !important; background: var(--ts-flaeche) !important;
                      -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  @.m-lager page { margin: 12mm; size: landscape; }
}
/* ▸N1112 */.lg-dot { display: inline-block; width: 10px; height: 10px; border-radius: 2px; background: var(--ts-ok); margin-right: 6px; vertical-align: middle; }.lg-dot.off { background: transparent; }.lg-in { width: 100%; box-sizing: border-box; padding: 2px 4px; font-size: 12.5px; text-align: right;
         border: 1px solid var(--ts-akzent); border-radius: 4px; font-family: inherit;
         -moz-appearance: textfield; }   /* ▸N1113 */
/* ▸N1114 §695 */.lg-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 12px; color: var(--ts-ro-fg); padding: 8px 2px 2px; align-items: center; }   /* §692h */.lg-legend .lg-bcode { font-size: var(--ds-fs-hinweis); }

/* ▸N1115 */.lg-sum { display: flex; justify-content: flex-end; gap: 18px; padding: 6px 2px 0; font-size: 13px; }.lg-sum b { font-weight: 700; }

/* ── datenabgleich.php (migriert 06.08., T2) ── */
.da-wrap { font-family: var(--ts-font); color: var(--ts-ink); padding:10px; box-sizing:border-box; }.da-head { display:flex; align-items:center; gap:10px; margin-bottom:10px; flex-wrap:wrap; }.da-head h1 { font-size:17px; margin:0; }.da-head .fil { color:var(--ts-gedaempft); font-size:13px; }.da-head .sp { flex:1; }.da-grid { display:grid; gap:10px; }   /* Spalten zentral in filialen.css */
@media (max-width:900px){.da-grid { grid-template-columns:1fr; } }.da-card { border:1px solid var(--ts-panel-bd); border-radius:10px; background:var(--ts-panel-bg); overflow:hidden; display:flex; flex-direction:column; min-width:0; }.da-ch { background:var(--ts-sec-bg); color:var(--ts-sec-fg); font-size:13px; font-weight:700; padding:8px 12px; display:flex; align-items:center; gap:8px; }.da-ch .sp { flex:1; }.da-cb { padding:10px 12px; display:flex; flex-direction:column; gap:8px; }   /* ▸N1116 §383 §384 */   /* §220: totes resize:vertical raus (22.08.-Grundregel) */.da-logbox { width:100%; height:330px; /* ▸N1117 */ box-sizing:border-box; border:1px solid var(--ts-panel-bd); border-radius:8px; background:var(--ts-panel-bg);
  padding:8px; font-family:"DejaVu Sans Mono","Consolas",monospace; font-size: var(--ds-fs-hinweis); line-height:1.5; overflow:auto; white-space:pre-wrap; word-break:break-word; }.da-btn { height:32px; padding:0 14px; border:1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); font:inherit; font-weight:700; cursor:pointer; background:var(--ts-panel-bg); }
/* ▸N1119 §259 */
/* ▸N1120 §379 */
/* ▸N1121 §382 */
.da-card > .da-cb { flex:1 1 auto; min-height:0; }
.da-leer { color:var(--ts-gedaempft); font-size:12px; padding:8px 2px; }
/* ▸N1124 */.lf-layout { display: grid; grid-template-columns: 1fr var(--ts-opt-w); gap: 10px; align-items: stretch; flex: 1; min-height: 0; }.lf-main { display: flex; flex-direction: column; gap: 10px; min-width: 0; min-height: 0; }.lf-main > .fil-sec:last-child { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }.lf-main > .fil-sec:last-child > .fil-sec-body { flex: 1; min-height: 0; display: flex; flex-direction: column; }.lf-nameline { display: grid; gap: 6px; margin-bottom: 6px; }.lf-nameline .lnr { font-size: 15px; font-weight: 700; background: var(--ts-panel-bg); color: var(--ts-ro-fg);   /* §692e */
                    border: 1px solid var(--ts-panel-bd); border-radius: 6px;
                    padding: 4px 10px; min-width: 96px; text-align: center; justify-self: start; }.lf-nameline .lname { flex: 1; height: auto; padding: 5px 10px; font-size: 15px; font-weight: 600; }.lf-nameline .fz { align-items: center; }.lf-nrline { display: flex; align-items: center; gap: 8px; }.lf-top { display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: auto auto; gap: 10px; align-items: stretch; }.lf-k-stamm { grid-column: 1; grid-row: 1 / span 2; }.lf-k-besch { grid-column: 2; grid-row: 1; }.lf-k-rma   { grid-column: 2; grid-row: 2; }.lf-k-zahl  { grid-column: 3; grid-row: 1; }.lf-k-kredit { grid-column: 3; grid-row: 2; }.lf-zr { display: contents; }@media (max-width: 1500px) { .lf-top { grid-template-columns: 1fr 1fr; grid-template-rows: auto; } .lf-zr { display: flex; flex-direction: column; gap: 10px; min-width: 0; } .lf-k-stamm, .lf-k-besch, .lf-k-rma, .lf-k-zahl, .lf-k-kredit { grid-column: auto; grid-row: auto; } }.lf-zr .fil-sec { margin-bottom: 0; }.lf-zr .lf-zahlung-grid { grid-template-columns: 1fr; gap: 6px 30px; }.lf-top .fil-sec .lf-grid2 { grid-template-columns: 1fr; }.be-top > .fil-sec, .kd-top > .fil-sec, .lf-top .fil-sec { height: 100%; box-sizing: border-box; }@media (max-width: 1500px) { .lf-zr .lf-zahlung-grid, .lf-top .fil-sec .lf-grid2 { grid-template-columns: 1fr 1fr; } }.lf-stamm-grid { display: grid; grid-template-columns: 1fr; gap: 6px 12px; align-items: start; }.lf-stamm-grid > .fz, .lf-grid2 > .fz, .lf-zahlung-grid > .fz { margin-bottom: 0; }.lf-stamm-grid .fz.ta { grid-column: 1 / -1; }.lf-zone { display: flex; gap: 8px; align-items: center; min-height: var(--ds-feld); flex-wrap: wrap; }.lf-zone label { display: flex; align-items: center; gap: 5px; font-size: 13px; }.lf-check { display: flex; align-items: center; gap: 7px; height: var(--ds-feld); font-size: 13px; }   /* §220: redundantes resize raus */.m-lieferanten #f_bemerkung { -webkit-appearance: none; appearance: none; box-shadow: none;
               border: 1px solid var(--ts-panel-bd); border-radius: 6px; background: var(--ts-panel-bg); }/* ▸N1127 §692 */.m-lieferanten #f_bemerkung:focus { outline: none; border-color: var(--ts-panel-bd); box-shadow: none; }   /* §698 */.lf-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 30px; }.lf-tbl-btns { display: flex; gap: 8px; margin-top: 8px; }
/* ▸N1130 */.es-grid { columns: 2; column-gap: 12px; max-width: 2200px; }
/* ▸N1131 */.es-grid .es-panel { break-inside: avoid; margin-bottom: 12px; }
/* ▸N1132 §439 §260 */
.es-grid #es-userpanel, .es-grid #es-bankpanel,
.es-grid .es-panel[data-esgrp="Bank: FinTS-Grundwerte"],
.es-grid .es-panel[data-esgrp="Bank: Zahlungsaufträge (SEPA)"],
.es-grid .es-panel[data-esgrp="Bank: Übergang Einzelunternehmen"],
.es-grid .es-panel[data-esgrp="Bank: PayPal-Zugang"] { column-span: all; }   /* §3232: alle Bank-Kacheln volle Breite, sonst halbe Kachel ohne Abstand nach unten */
.es-grid #es-kommpanel { column-span: all; }   .es-grid #es-tbpanel { column-span: all; }   /* §2133 gemessen: Textspalte in der halben Breite auf 10 Zeichen gekuerzt, Filterleiste umgebrochen */   /* §1970: E-Mail-Konten volle Breite wie Bank-Zugaenge (Joerg) */   /* ▸N1133 §679a */   /* ▸N1134 §643j */
/* ▸N1135 §643k §643j */
/* ▸N1136 §532 */
.es-grid.es-grid-raster { columns: auto; display: grid;
     grid-template-columns: 1fr 1fr; gap: 12px; }
.es-grid.es-grid-raster .es-panel { margin-bottom: 0; }
/* ▸N1137 §538 §534 §537 */
/* ▸N1138 §536 §531 §532 */
/* ▸N1139 §439 §260 */
/* ▸N1140 §439 §260 */
#es-utblbox table { table-layout: fixed; width: 100%; }
/* ▸N1141 §679a */
#es-zwtblbox table { table-layout: fixed; width: 100%; }
/* ▸N1142 §679b §439 */
#es-zwtblbox th.sp-anz, #es-zwtblbox td.sp-anz { width: 96px; }
#es-zwtblbox th.sp-flag-wort, #es-zwtblbox td.sp-flag-wort { width: 150px; overflow: visible; }
#es-zwtblbox .tbl-box { max-height: 60vh; overflow: auto; }
#es-utblbox th, #es-utblbox td { width: 20%; }
/* ▸N1143 */
.es-panel .es-hinweis { font-size: 13px; line-height: 1.55; color: var(--ts-ink); padding: 8px 6px 10px; }
.es-panel { border: 1px solid var(--ts-panel-bd); border-radius: 10px; padding: 10px;
            background: var(--ts-panel-bg); }.es-panel .es-ph { background: var(--ts-sec-bg); color: var(--ts-sec-fg); font-size: 12px; font-weight: 700;
                   padding: 6px 10px; margin: -10px -10px 10px; border-radius: 10px 10px 0 0; letter-spacing: .02em; }.es-row { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 8px; align-items: center; margin-bottom: 7px; }.es-row label { font-size: 13px; }.es-row input, .es-row textarea, .es-row select { width: 100%; box-sizing: border-box; border: 1px solid var(--ts-panel-bd);
    border-radius: 6px; padding: 0 8px; height: var(--ds-feld); font: inherit; font-size: 13px; background: var(--ts-panel-bg); }.es-row textarea { height: auto; min-height: 54px; padding: 6px 8px; }
/* §3170 Hakenliste in der Einstellungszeile (Typ haken): Kaestchen in Normalgroesse statt Feldbreite/-hoehe, Beschriftung oben buendig */
.es-row:has(> .kd-checks) { align-items: start; }
.es-row .kd-checks input[type="checkbox"] { width: 15px; height: 15px; padding: 0; border: 0; }   /* §3179 EINHEIT: Hausmass 15px (Z.4764) statt auto */
.es-row > .kd-checks { max-height: var(--es-haken-max); overflow-y: auto; }   /* §3170 lange Listen (ecoDMS-Ordner) scrollen in der Kachel */   /* §220: totes resize:vertical raus (22.08.-Grundregel) *//* ▸N1144 §692 */.es-paar { display: flex; gap: 8px; }.es-paar input { flex: 1 1 0; min-width: 0; }.es-paar select { flex: 1 1 0; min-width: 0; } /* ▸N1145 */.es-paar input.es-paar-tag { flex: 0 0 110px; }.es-hint { font-size: 12px; color: var(--ts-gedaempft); margin: 8px 2px 0; }
@media (max-width: 900px){.es-grid { columns: 1; } }.es-save { height: var(--ds-feld); padding: 0 12px; border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius);
           background: var(--ts-akzent); color: var(--ts-sec-fg); font: inherit; font-weight: 600; cursor: pointer; }

/* Benutzerverwaltung */.es-utable { width:100%; border-collapse:collapse; font-size:13px; margin-top:2px; }.es-utable th { text-align:left; background:var(--ts-flaeche); border-bottom:1px solid var(--ts-panel-bd); padding:6px 8px; font-weight:700; }.es-utable td { border-bottom:1px solid var(--ts-trenn); padding: var(--ds-xs) var(--ds-s); }   /* Auswahl-Hellton zum Akzent (06.08., wie Wizard) */.es-badge { font-size: var(--ds-fs-hinweis); font-weight:700; border-radius:4px; padding:1px 6px; }.es-badge.admin { color:var(--ts-akzent-dark); background:var(--ds-auswahl); border:1px solid var(--ds-auswahl); }   /* Rollen-Badge = Brand-Markierung → Akzent (06.08.) */.es-badge.benutzer { color:var(--ts-meld-ok-fg); background:var(--ts-meld-ok-bg); border:1px solid var(--ts-meld-ok-bd); }.es-badge.inaktiv { color:var(--ts-meld-warn-fg); background:var(--ts-meld-warn-bg); border:1px solid var(--ts-meld-warn-bd); }.es-ubtnrow { display:flex; gap:6px; margin-top:8px; flex-wrap:wrap; }.es-ubtn { height: var(--ds-feld); padding:0 12px; border:1px solid var(--ts-panel-bd); border-radius:6px; background:var(--ts-panel-bg); font:inherit; font-size:12.5px; font-weight:600; cursor:pointer; }.es-ubtn.prim { background:var(--ts-akzent); color:var(--ts-sec-fg); border-color:var(--ts-akzent-dark); }.es-ubtn.danger { color:var(--ts-red); }   /* §679bi: zentrales Inaktiv-Grau statt opacity */.es-uhint { font-size:12px; color:var(--ts-gedaempft); margin:6px 2px 0; }
/* ▸N1146 §891 */
.es-panel .es-zwischen { font-size:12px; font-weight:700; margin:14px 2px 4px; color:var(--ts-ink); }.ma-layout { display: grid; grid-template-columns: 1fr var(--ts-opt-w); gap: 10px; align-items: stretch; flex: 1; min-height: 0; }.ma-main { display: flex; flex-direction: column; gap: 10px; min-width: 0; min-height: 0; }.ma-main > .fil-sec { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }.ma-main > .fil-sec > .fil-sec-body { flex: 1; min-height: 0; display: flex; flex-direction: column; }.ma-nameline { display: grid; gap: 6px; margin-bottom: 14px; }.ma-nameline .fz { grid-template-columns: var(--fz-lbl-w) 1fr; align-items: center; }.ma-nameline .mnr { font-size: 15px; font-weight: 700; background: var(--ts-panel-bg); color: var(--ts-ro-fg);   /* §692e */
                    border: 1px solid var(--ts-panel-bd); border-radius: 6px; padding: 4px 10px; min-width: 96px; text-align: center; justify-self: start; }.ma-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; align-items: start; }/* ▸N1147 §692 */   /* §220: redundantes resize raus (22.08.-Grundregel) */.v-dl { position: relative; display: block; }.v-dl > input.v { padding-right: 24px; }.v-dl::after { content: ""; position: absolute; right: 9px; top: 50%; width: 10px; height: 7px; transform: translateY(-50%); pointer-events: none;
    background: var(--ts-chevron) no-repeat center / contain; }   /* ▸N1148 §709 *//* §801 (T6): .ma-plzort -> .plzort */
/* ▸N1149 */.ma-chk-grid { display: grid; grid-template-columns: repeat(5, auto); gap: 4px 12px; }.ma-chk-grid label { font-size: 13px; display: flex; align-items: center; gap: 4px; font-weight: 500; }.ma-chk { display: flex; align-items: center; height: var(--ds-feld); }.ma-chk input { width: 18px; height: 18px; cursor: pointer; }

/* ▸N1151 */

/* ▸N1152 */
/* ▸N1153 */.ka-split { display: flex; flex-direction: column; gap: 10px; flex: 1 1 auto; min-height: 0; align-items: stretch; }.ka-split > .ka-belege { order: 2; flex: 1 1 auto; min-width: 0; min-height: 0; display: flex; flex-direction: column; }.ka-split > .ka-belege > .fil-sec-body { flex: 1; min-height: 0; display: flex; flex-direction: column; }.ka-belege .tbl-box { flex: 1; min-height: 0; }.ka-side { order: 1; flex: 0 0 auto; min-width: 0; display: flex; flex-direction: row; align-items: stretch; gap: 10px; }.ka-side > .fil-sec { flex: 1; min-width: 0; }.wb-layout { display: grid; grid-template-columns: 1fr var(--ts-opt-w); gap: 10px; align-items: stretch; flex: 1; min-height: 0; }.wb-main { display: flex; flex-direction: column; gap: 10px; min-width: 0; min-height: 0; }.wb-main > .fil-sec:last-child { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }.wb-main > .fil-sec:last-child > .fil-sec-body { flex: 1; min-height: 0; display: flex; flex-direction: column; }.wb-kopf { display: grid; grid-template-columns: 1fr 1.3fr; gap: 30px; }   /* §220: totes resize:vertical raus (22.08.-Grundregel) */.wb-ma { display: grid; grid-template-columns: 1fr; gap: 6px; align-items: center; }   /* ▸N1158 */.wb-filter { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; flex-wrap: wrap; }.wb-filter .lbl { font-size: 13px; font-weight: 700; margin-right: 4px; }

/* ▸N1590 §1590: Anschreiben-Fenster (anschreiben.js, Kunden + Lieferanten) — Vorschautext mit Zeilenumbruechen, Liste begrenzt */
/* §1978 (Joerg): Liste fuellt das Fenster bis zur Statuszeile (vorher max-height 40vh, unten leerer Raum); Auswahlfelder zwei Spalten, feste Breiten (K-381) */
#asOvl .ts-dlg-box > .b { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
/* §2482 (Joerg: "zwei Masken, zwei Fenster"): im serviceCENTER ist das Anschreiben die Seite selbst — kein Overlay, kein eigener Kopf, fuellt den Kachelkoerper */
#asOvl.ts-dlg.as-inline { position: static; inset: auto; display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; background: none; padding: 0; z-index: auto; }
#asOvl.as-inline .ts-dlg-box { position: static; width: 100%; max-width: none; height: 100%; max-height: none; flex: 1 1 auto; min-height: 0; box-shadow: none; border: 0; border-radius: 0; background: transparent; }
#asOvl.as-inline .ts-dlg-box > .h { display: none; }
#asOvl.as-inline .ts-dlg-box > .b, #asOvl.as-inline .ts-dlg-box > .f { padding-left: 0; padding-right: 0; }
.m-anschreiben .as-seite { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; overflow: hidden; }   /* §2571 wie .pm-seite: die Seite selbst scrollt nicht */
/* §2571 (Joerg: "die Seite scrollt hinter die Knoepfe, die Statusleiste scrollt mit"): als Seite scrollt NUR die Tabelle — Filter oben, Statuszeile (.f) unten bleiben stehen */
#asOvl.as-inline .ts-dlg-box > .b { display: flex; flex-direction: column; overflow: hidden; min-height: 0; }
#asOvl.as-inline #as_box { flex: 1 1 auto; min-height: 0; overflow: auto; }
#asOvl.as-inline .ts-dlg-box > .f { flex: 0 0 auto; }
#asOvl .as-filter { display: grid; grid-template-columns: auto auto auto 1fr; gap: var(--ds-s) var(--ds-m); align-items: center; margin-bottom: var(--ds-s); }
#asOvl .as-filter .fz { display: contents; }
#asOvl .as-filter .fz label { white-space: nowrap; font-weight: 600; }
#asOvl .as-filter .v { height: var(--ds-feld); }
#asOvl #as_kreis, #asOvl #as_vorlage, #asOvl #as_such { width: var(--fb-320); justify-self: start; }   /* §3511 Suchfeld = Breite der linken Auswahlfelder */
#asOvl #as_monate, #asOvl #as_aus { width: var(--fb-220); justify-self: start; }
.ts-dlg.as #as_box { flex: 1 1 auto; min-height: 0; overflow: auto; }
.ts-dlg.as .as-ausvermerk { font-style: italic; color: var(--ts-gedaempft); }
.ts-dlg.as #as_tab { table-layout: fixed; width: 100%; }
.ts-dlg.as .as-c-nr { width: var(--fb-90); } .ts-dlg.as .as-c-ort { width: var(--fb-220); } .ts-dlg.as .as-c-mail { width: var(--fb-270); } .ts-dlg.as .as-c-mandat { width: var(--fb-270); } .ts-dlg.as .as-c-info { width: var(--fb-320); }   /* §3462 Adressen/Stand schnitten ab (bis 492 px Text in 119 px); Name-Spalte gibt ab */ .ts-dlg.as #as_tab tbody tr[data-i] { cursor: pointer; }   /* §1977: Knopfspalte entfaellt — Zeile markieren, Knoepfe in der Leiste */
.ts-dlg.as #as_tab tbody tr.sel > td { background: var(--ds-auswahl); }
.ts-dlg-box .f > .dlg-status.neg { color: var(--ts-red); }   /* §2751 global (vorher nur .ts-dlg.as): Statuszeile meldet einen Mangel — Rot = Semantik Fehler */
.ts-dlg-box .f > .dlg-status.ok  { color: var(--ts-ok); }    /* §3416: Statuszeile meldet Erfolg (Mail-Dialog „Gesendet ✓“) — vorher Inline-Farbe im Mail-Dialog */
.ts-dlg.as #as_tab td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ts-dlg.as tr.as-aus td { opacity: .55; }   /* §1593: ausgeblendete Empfaenger */
.ts-dlg .as-html { width: 100%; height: var(--as-html-h); border: 1px solid var(--ds-trennlinie); background: var(--ts-panel-bg); display: block; box-sizing: border-box; }   /* §1591: Vorschau = gerenderte Mail inkl. Signatur · §3412 auch im comCENTER-Editor (Vorschau-Fenster Ebene 3), daher ohne .as */
/* ▸N1166 */
/* ▸N1167 */
/* ▸N1168 */
/* ▸N1169 */
/* ▸N1170 §679h */
.zd-ein-hin { font-size: var(--ds-fs-hinweis); color: var(--ts-gedaempft); margin-top: 6px; line-height: 1.4; }
.zd-rest { font-size: var(--ds-fs-hinweis); color: var(--ts-red); }
@keyframes es-hl-blink { 0% { box-shadow: 0 0 0 3px var(--ts-akzent); } 100% { box-shadow: 0 0 0 0 transparent; } }   /* ▸N1177 */
/* ▸N1178 */
/* ▸N1179 §735d K-317 §727 */

/* ▸N1180 */
.es-tse-tab{border-collapse:collapse;margin:2px 0 0;width:100%;max-width:760px}
.es-tse-tab td{padding:3px 0;vertical-align:top;border-bottom:1px solid var(--ts-trenn)}
.es-tse-tab tr:last-child td{border-bottom:0}
.es-tse-l{width:230px;padding-right:12px;font-weight:600;white-space:nowrap}
/* ▸N1181 §526 */
/* ▸N1182 §531 */
.es-sysstatus{padding:2px 0 6px;font-weight:600}
/* ▸N1183 §531 §527 */
[id^="es-syspanel"] .es-tse-tab{margin-top:4px;max-width:none;width:100%}
/* ▸N1184 §528 */
/* ▸N1185 §535 */
.es-syszeile{display:flex;align-items:flex-start;gap:6px}
.es-syscmd{flex:1 1 auto;min-width:0;font-family:ui-monospace,Menlo,Consolas,monospace;
           font-size:12px;line-height:1.45;white-space:pre-wrap;word-break:break-all;
           background:var(--ts-flaeche);border:1px solid var(--ts-line);border-radius:6px;padding:4px 7px}
.es-syscopy{flex:0 0 auto;margin:0;padding:3px 8px;font:inherit;font-size:12px;
            background:var(--ts-panel-bg);border:1px solid var(--ts-line);border-radius: var(--ds-radius);cursor:pointer}
#es-syspanel-bef .es-tse-l{white-space:normal;padding-right:0}
#es-syspanel-bef .es-tse-tab tr{display:block;padding:0 0 7px;
                                 border-bottom:1px solid var(--ts-trenn)}
#es-syspanel-bef .es-tse-tab tr:last-child{border-bottom:0}#es-syspanel-bef .es-tse-tab td { display:block;width:auto;padding:3px 0 0; border-bottom:0; }
/* ▸N1188 §533 §532 */
.es-sysbtns{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:4px 0}
/* ▸N1189 §542 */
.es-pakzeile{display:flex;gap:6px;align-items:center;padding:2px 0 8px}
.es-pakfeld{flex:1 1 auto;min-width:0}
.es-pakleer{color:var(--ts-gedaempft);font-size:12.5px;padding:4px 0}
.es-sysbtns .es-ubtn{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ▸N1190 §539 §533 §538 */
.es-grid-raster #es-syspanel-akt{display:flex;flex-direction:column}
#es-syspanel-akt #es-sysaus{flex:1 1 auto;min-height:180px;display:flex;flex-direction:column}
/* ▸N1191 §545 §539 */
.es-sysaus-txt{flex:1 1 auto;min-height:0;max-height:420px;
               font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;
               line-height:1.45;white-space:pre-wrap;word-break:break-word;
               overflow:auto;margin:6px 0 0;padding:7px 9px;
               background:var(--ts-flaeche);border:1px solid var(--ts-line);border-radius:6px}
/* ▸N1192 §533 */
.es-sysaus-leer{flex:1 1 auto;min-height:0;
                display:flex;align-items:center;justify-content:center;
                margin:6px 0 0;color:var(--ts-pos-grau);font-size:12.5px; /* ▸N1193 §619 §687 §611v */
                background:var(--ts-hover-bg);border:1px dashed var(--ts-line);border-radius:6px}
.es-tse-id{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
           font-size:12.5px;word-break:break-all}

/* ▸N1194 K-46 */
.ts-kal{
  display:none; position:fixed; z-index:10790;   /* §3326 (Joerg 21.10. 15:35 „Datumsfeld oeffnet keinen Kalender“): 9999 lag HINTER jedem gestapelten Fenster (.ts-dlg.ovl2 10600, ovl3 10605, je-such-vorn 10650) — der Kalender war im DOM (gemessen 256x244 unter dem Feld), aber unsichtbar. Ebenenleiter K-399: Aufklapper ueber allen Fenstern, unter dem Tooltip .je-tip 10800. */
  background:var(--ts-panel-bg); color:var(--ts-ink);
  border:1px solid var(--ts-line); border-radius:8px;
  box-shadow:var(--ds-schatten-dialog);   /* §1259 */
  padding:8px; font-size:13px; user-select:none;
}
.ts-ts-kopf{ display:flex; align-items:center; justify-content:space-between; margin-bottom:6px; }
.ts-ts-titel{ font-weight:700; }
.ts-ts-nav{
  width:26px; height:26px; line-height:24px; text-align:center;
  border:1px solid var(--ts-line); border-radius: var(--ds-radius); background:var(--ts-panel-bg);
  cursor:pointer; font-size:16px; color:var(--ts-ink);
}
.ts-ts-tab{ border-collapse:collapse; }
.ts-ts-tab th{
  width:32px; height:22px; font-weight:600; font-size:12px;
  color:var(--ts-gedaempft); text-align:center;
}
.ts-ts-tab th.we{ color:var(--ts-red); }
.ts-ts-tab td{ padding:1px; text-align:center; }
.ts-ts-tab td button{
  width:32px; height: var(--ts-btn-h-klein)   /* §1532 war --ds-feld 28px */; border:1px solid transparent; border-radius: var(--ds-radius);
  background:var(--ts-panel-bg); cursor:pointer; font:inherit; color:var(--ts-ink);
}
.ts-ts-tab td button.we{ color:var(--ts-red); }
/* ▸N1195 */
.ts-ts-tab td button.heute{ border-color:var(--ts-akzent); font-weight:700; }
.ts-ts-tab td button.gewaehlt{
  background:var(--ts-akzent); border-color:var(--ts-akzent); color:var(--ts-sec-fg);
}
/* .ts-ts-fuss → .dlg-fuss (§660) */
.ts-ts-btn{
  flex:1; height:26px; border:1px solid var(--ts-line); border-radius: var(--ds-radius);
  background:var(--ts-panel-bg); cursor:pointer; font:inherit; font-size:12px;
  color:var(--ts-ink);
}
.ts-ts-btn.heute{
  background:var(--ts-akzent); border-color:var(--ts-akzent); color:var(--ts-sec-fg);
}   /* ▸N1198 §660 */
.dk-suche { width: 100%; margin-bottom: 6px; }
/* ▸N1199 */
.dk-tab { width: 100%; }

/* ▸N1200 */
/* ▸N1201 §630 */
/* ▸N1202 §818 */
.dk-tab.dk-aussteller td.dk-zr   { white-space: nowrap; }

/* ▸N1203 */
.dk-tab .dk-zr{
  display:flex; justify-content:space-between; align-items:baseline;
  gap:8px; font-variant-numeric:tabular-nums;
}
.dk-tab .dk-zr .dk-zr-bis{ text-align:right; }

/* ▸N1204 */
.ts-ts-navgrp{ display:flex; gap:4px; }

/* ▸N1205 */
.ts-ts-tab td button.aus,
.ts-ts-tab td button:disabled{
  background:var(--ts-dis-bg);
  color:var(--ts-dis-fg);
  border-color:var(--ts-dis-bd);
  cursor:default;
}

/* ▸N1206 */
.tspro-ui .klein,
.ts-dlg .klein{ font-size: var(--ds-fs-hinweis); line-height:1.45; color:var(--ts-pos-grau); }

/* ▸N1207 K-45 */
.ts-dlg .ka-neg{ color:var(--ts-red); }
/* §795 (T3): .ka-grau -> .ts-dim */

/* ▸N1208 */
.ts-dlg .dk-um{ padding:1px 8px; font-size: var(--ds-fs-hinweis); }

/* ▸N1212 */
.ts-dlg .es-kette-kk{display:flex;gap:12px;flex-wrap:wrap;margin:0 0 12px}
.ts-dlg .es-kette-karte{flex:1 1 var(--mw-kette-karte);min-width:var(--mw-kette-min);border:1px solid var(--ts-line);
  border-radius:var(--ds-radius);background:var(--ts-flaeche);padding: var(--ds-m) var(--ds-l);font:inherit;line-height:1.5}
.ts-dlg .es-kette-karte .kkt{font-weight:700;margin-bottom:6px}
.ts-dlg .es-kette-karte .kkz{display:flex;justify-content:space-between;gap:12px;
  padding:2px 0;border-bottom:1px solid var(--ts-trenn)}
.ts-dlg .es-kette-karte .kkz:last-child{border-bottom:0}
.ts-dlg .es-kette-karte .kkp{font-size:var(--ds-fs-text)}

.ts-dlg .es-kette-tab{border-collapse:collapse;width:100%;margin:4px 0 6px;
  font:inherit;font-size:var(--ds-fs-text)}
.ts-dlg .es-kette-tab th,
.ts-dlg .es-kette-tab td{border:1px solid var(--ts-line);padding: var(--ds-xs) var(--ds-s);text-align:left;
  vertical-align:top;white-space:normal;overflow:visible;text-overflow:clip}
.ts-dlg .es-kette-tab th{background:var(--ts-flaeche);font-weight:600}
.ts-dlg .es-kette-tab tr.sprung td{background:var(--ts-meld-warn-bg);font-weight:600}
.ts-dlg .es-kette-tab tr.fremd td{background:var(--ts-flaeche);color:var(--ts-gedaempft)}
.ts-dlg .es-kette-fazit{margin:8px 0 2px;font-size:var(--ds-fs-text);font-weight:600}
.ts-dlg .es-kette-hinweis{margin-top:4px;font-size:12px;color:var(--ts-meld-warn-fg)}

/* ▸N1213 */
.ts-dlg .es-kette-tsskarte{margin:0 0 var(--ds-m)}
.ts-dlg .es-kette-tsskarte .kkw{padding:2px 0;line-height:1.5;word-break:break-all}
.ts-dlg .es-kette-tsskarte .kkw span{display:inline-block;min-width:var(--mw-kette-w);font-weight:600;word-break:normal}   /* §1391 Stufe voll */
.ts-dlg-box:has(.es-kette-voll) .b{overflow:hidden;display:flex;
  flex-direction:column;min-height:0}
.ts-dlg-box:has(.es-kette-voll) .es-kette-kk,
.ts-dlg-box:has(.es-kette-voll) .es-kette-tsskarte,
.ts-dlg-box:has(.es-kette-voll) .es-kette-fazit,
.ts-dlg-box:has(.es-kette-voll) .es-kette-hinweis{flex:0 0 auto}
.ts-dlg-box:has(.es-kette-voll) .es-kette-scroll{flex:1 1 auto;min-height:0;
  max-height:none}.ts-dlg .es-kette-scroll { max-height:46vh;overflow:auto;border-radius:8px; border:1px solid var(--ts-panel-bd); }.ts-dlg .es-kette-scroll .es-kette-tab { margin:0;border:0; border-collapse:separate;border-spacing:0; font-size:13px; }.ts-dlg .es-kette-scroll .es-kette-tab th { position:sticky;top:0;z-index:1;
  border-right:1px solid var(--ts-line); background:var(--ts-flaeche);font-weight:700;
  padding:6px 8px;border:0;border-bottom:1px solid var(--ts-panel-bd);
  box-shadow:none; }.ts-dlg .es-kette-scroll .es-kette-tab td {
  border-right:1px solid var(--ts-line); border:0;border-bottom:1px solid var(--ts-trenn);
  padding: var(--ds-xs) var(--ds-s); }.ts-dlg .es-kette-scroll .es-kette-tab th:last-child,
.ts-dlg .es-kette-scroll .es-kette-tab td:last-child { border-right:0; }

/* ▸N1218 */
.ts-dlg .es-kette-scroll .es-kette-tab thead th,
.ts-dlg .es-kette-scroll .es-kette-tab tbody td{border-right:1px solid var(--ts-trenn)}
.ts-dlg .es-kette-scroll .es-kette-tab thead th:last-child,
.ts-dlg .es-kette-scroll .es-kette-tab tbody td:last-child{border-right:0}

/* ▸N1219 */
.ts-dlg .es-kette-scroll .es-kette-tab tbody td{height:var(--ts-tab-td-h);
  padding:0 8px;vertical-align:middle;white-space:nowrap;line-height:1.3}
.ts-dlg .es-kette-scroll .es-kette-tab thead th{padding:var(--ts-tab-th-pad);
  white-space:nowrap}
.ts-dlg .es-kette-warn{cursor:help;color:var(--ts-meld-warn-fg);font-size:13px}
.ts-dlg .es-kette-tab tr.fremd .es-kette-warn{color:var(--ts-gedaempft)}

/* ▸N1220 */
.ts-dlg .es-kette-tab td.beleg .es-kette-warn{float:right;margin-left:8px}

/* ▸N1221 R-12.5 */

/* ▸N1222 */
.tspro-ui th.sp-artnr, .tspro-ui td.sp-artnr,
.ts-dlg th.sp-artnr, .ts-ovl th.sp-artnr, .ts-dlg td.sp-artnr, .ts-ovl td.sp-artnr,
.je-such th.sp-artnr, .je-such td.sp-artnr { min-width: var(--ts-sp-artnr); }
/* §4120 (Jörg 01.11. 11:57, gemessen: Spalte SN 27 px in RMA › Offene Positionen): .sp-seriennr (Z.3501, 10 % + min-width) greift in Tabellen mit
   table-layout:fixed nicht — min-width wirkt dort nicht, die Spalte fiel auf Textbreite. Kopfzelle gibt die Breite vor; Fundstellen: inventur, rma, warenruecksendung ×2. */
:is(.ts-dlg-box, .je-such) th.sp-seriennr { width: calc(var(--ts-sp-min-seriennr) + var(--ts-sp-pad)); }

/* ▸N1223 §220 */

/* ▸N1224 */

/* ▸N1225 §220 */

/* ▸N1226 K-45 */
.tspro-ui textarea, .ts-dlg textarea, .ts-ovl textarea,
/* §2718 GRUNDREGEL (Joerg 22.08. "ENDGUELTIG", §220; bei §1383 !important-Abbau verloren gegangen, danach bauten 4 Stellen wieder Ziehgriffe ein):
   KEIN Textfeld im ganzen System ist per Ziehgriff in der Groesse veraenderbar. Eine Regel, !important als belegte Ausnahme — lokale Regeln
   duerfen sie nicht aufheben (Pruefer RESIZE). */
textarea { resize: none !important; }
/* ▸N1227 §220 */

/* ▸N1228 §404 */
.tspro-ui .tse-test-balken { background: var(--ts-red); color: var(--ts-sec-fg); font-weight: 700; font-size: 13px;
  letter-spacing: .04em; text-align: center; padding: 6px 12px; border-radius: 8px; margin: 0 0 var(--ts-kachel-gap); }

/* ▸N1229 §633 §611v */
/* .bk-bar → .dlg-leiste (§660) */
.ts-dlg .dlg-leiste input[type="file"] { font-size: 12px; max-width: var(--mw-datei); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-alle { font-size: var(--ds-fs-text); display: flex; gap: 6px; align-items: center; }   /* ▸N1230 §660 */
/* .bk-tab-wrap → .dlg-inhalt (§661) */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-tab { width: 100%; table-layout: fixed; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-tab th { position: sticky; top: 0; background: var(--ts-panel-bg); z-index: 1; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-tab th.bk-zweck { width: auto; min-width: 200px; }   /* §675: Restspalte, gibt 80px an den Vorschlag ab */   /* §673: Restspalte, jetzt mit Platz statt 142px */   /* ▸N1231 §648 §672d */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-tab td.bk-zweck { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* ▸N1232 §648 */
/* ▸N1233 §672d */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-verteilt { color: var(--ds-hinweis); }
/* ▸N1234 §677 */

.ts-dlg .zl-tab td.sp-txt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }   /* §1379: voller Text im title */
.ts-dlg .zl-mangel { color: var(--ts-red); }

   /* ▸N1235 §679b */

/* ▸N1237 §692 */   /* ▸N1238 §679b */   /* ▸N1239 §679a */   /* ▸N1240 §679a */


   /* ▸N1241 §679t */   /* ▸N1242 §679d */
/* ▸N1243 §679j §673b §679i */
/* ▸N1244 §673 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-tab tbody tr[data-id] { cursor: pointer; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-aktionen { margin-top: var(--dlg-zone); padding-top: var(--dlg-zone); border-top: 1px solid var(--ds-trennlinie); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-gewaehlt { font-size: var(--ds-fs-text); color: var(--ts-ink); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-tab td.num.neg { color: var(--ts-red); }
/* ▸N1569 §1569: Vorschlags-Span fuellt die Zelle (vorher fester Wert 270 px in einer 380-px-Spalte — Text wurde gekuerzt, obwohl Platz war) */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-vs { display: inline-block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-vs.bk-sicher { color: var(--ts-akzent); font-weight: 600; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-alt { font-size: var(--ds-fs-hinweis); color: var(--ts-pos-grau); cursor: help; }

/* ▸N1249 §635 */
/* .uv-bar → .dlg-leiste (§660) */
.ts-dlg .uv-frei { margin-left: auto; display: inline-flex; gap: 6px; align-items: center; font-size: 12px; }
/* ▸N1250 §1067 §1014 K-177 §13b */
.ts-dlg .fil-sec-body > .tbl-box { min-height: 0; }
.ts-dlg .fil-sec-body > .tbl-box > .tbl-scroll { max-height: 38vh; overflow: auto; min-height: 0; }
.ts-dlg .uv-tab thead th { position: sticky; top: 0; z-index: 1; background: var(--ts-flaeche); }.ts-dlg .uv-tab { width: 100%; table-layout: fixed; }
.ts-dlg .uv-tab th.uv-kz, .ts-dlg .uv-tab td.uv-kz { width: var(--mw-uv-kz); font-weight: 700; }
.ts-dlg .uv-tab tr.uv-sum td { border-top: 0.4mm solid var(--ts-ink); font-weight: 700; }
/* ▸N1251 §1310 */
/* .uv-fuss → .dlg-hinweis (§660) */

/* ▸N1252 §636 */
.ts-dlg .dlg-leiste #jt_jahr { font-size: 15px; }   /* §1307/§1308 */
.ts-dlg .jt-tab { width: 100%; table-layout: fixed; font-size: var(--ts-tab-fs); }   /* ▸N1255 §1314 */
.ts-dlg .jt-tab th { position: sticky; top: 0; background: var(--ts-panel-bg); z-index: 1; }
.ts-dlg .jt-tab th.jt-lbl, .ts-dlg .jt-tab td.jt-lbl { width: var(--mw-jt-lbl); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }   /* §668: 168px gemessen + Polster */
.ts-dlg .jt-tab th.jt-kto, .ts-dlg .jt-tab td.jt-kto { width: var(--mw-jt-kto); font-weight: 600; }
.ts-dlg .jt-tab th.jt-kname, .ts-dlg .jt-tab td.jt-kname { width: var(--mw-jt-kname); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }   /* ▸N1256 §668b */
.ts-dlg .jt-tab th.jt-m, .ts-dlg .jt-tab td.jt-m { width: var(--mw-jt-m); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }   /* §1314: 84 px fest statt auto/min 100 */   /* ▸N1257 §668b */
.ts-dlg .jt-tab th.jt-sum, .ts-dlg .jt-tab td.jt-sum { width: var(--mw-jt-sum); font-weight: 700; white-space: nowrap; }
.ts-dlg .jt-tab tr.jt-klaeren td { color: var(--ts-red); }
.ts-dlg .jt-leer { color: var(--ts-pos-grau); font-size: var(--ds-fs-hinweis); }

/* ▸N1258 §637 */
.ts-dlg .sr-hint { margin-bottom: 6px; }

/* ▸N1259 §638 */
.tspro-ui .be-liefbed .be-liefbed-txt { font-size: 12px; white-space: normal; line-height: 1.35; min-height: 26px; }
.tspro-ui .be-liefbed .be-liefbed-txt.neg { color: var(--ts-red); font-weight: 600; }

/* ▸N1260 §643 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-zugaenge { margin-top: var(--dlg-zone); font-size: var(--ds-fs-text); }   /* §661: Zonenabstand aus dem System */
/* .bk-zg: Layout kommt aus .dlg-liste > * (§661) */
/* ▸N1261 §795 */
/* ▸N1262 §675 §650b */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-zg > b { flex: 0 0 200px; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-zg-akt { display: flex; gap: var(--dlg-gap); margin-left: auto; flex: none; }   /* §917: Knoepfe stehen fest rechts */
/* ▸N1263 §917 §846 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-zg-st { flex: 1 1 0; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: flex; align-items: center; gap: 6px; }   /* ▸N1264 §1090 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-zg-st > .obtn { flex: none; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-konto .bk-datei { flex: none; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-rest { color: var(--ts-red); white-space: nowrap; }   /* ▸N1265 §672 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-zg-neu { padding-top: 4px; }
/* ▸N1266 §650b */
/* ▸N1267 §661 */

/* ▸N1268 §645b */
.es-selfrei { display: flex; flex-direction: column; gap: 4px; }

/* ▸N1269 §646c */
#es-bktblbox th.bk-mitte, #es-bktblbox td.bk-mitte { text-align: center; }

/* ▸N1270 §648k */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-dateiname { font-size: var(--ds-fs-text); color: var(--ts-pos-grau); margin: 0 4px; }


/* ▸N1271 §722 K-42 */
.tspro-ui .opt-col > .obtn, .art-wrap .opt-col > .obtn, .es-wrap .opt-col > .obtn,
.bib-wrap .opt-col > .obtn, .tspro-ui .dv-right .opt-col > .obtn { width: var(--ts-btn-w); }
.je-such .js-kachel .obtn::before, .be-ov .js-kachel .obtn::before,
.je-such .js-fbtn::before, .be-ov .js-fbtn::before { display: none; content: none; }


/* ▸N1283 §799 K-170 */
.tbl-fest { table-layout: fixed; width: 100%; }.ts-dlg-box:has(.bk-wrap) { max-height: 94vh; display: flex; flex-direction: column; }   /* §1395: nur Aufbau — Groesse ts-dlg-weit am Aufrufer */
.ts-dlg-box:has(.bk-wrap) > .b { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; overflow: hidden; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-wrap { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-wrap > .dlg-leiste, :is(.ts-dlg, .m-zahlungsverkehr) .bk-wrap > .bk-zugaenge, :is(.ts-dlg, .m-zahlungsverkehr) .bk-wrap > .dlg-status { flex: none; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-wrap > .dlg-leiste + .dlg-leiste { margin-top: var(--dlg-gap); }   /* ▸N1288 §1091 */
/* ▸N1289 §1092 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-wrap > .dlg-leiste + .dlg-leiste + .dlg-leiste { margin-top: var(--ds-l); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-wrap > .dlg-status { margin-top: var(--ds-l); padding-top: var(--ds-s); margin-bottom: var(--ds-s); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-wrap > .bk-tab-wrap { flex: 1 1 auto; min-height: 0; overflow: auto; }
/* ▸N1290 §868 */
.tspro-ui tr.zeile-dim td, .je-such tr.zeile-dim td, .ts-dlg tr.zeile-dim td, .be-ov tr.zeile-dim td { color: var(--ts-gedaempft); }

/* ▸N1291 §903 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-alle-liste { max-height: var(--mw-bk-alle); overflow-y: auto; border: 1px solid var(--ts-panel-bd); border-radius: 6px; padding: 4px 6px; margin-bottom: 6px; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-alle-zeile { display: flex; gap: 8px; align-items: center; padding: 3px 2px; border-bottom: 1px solid var(--ts-trenn); font-size: var(--ds-fs-text); cursor: pointer; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-alle-zeile:last-child { border-bottom: 0; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-alle-zeile .num { min-width: var(--mw-bk-num); text-align: right; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-alle-name { min-width: 200px; color: var(--ts-gedaempft); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-alle-ziel { flex: 1; }

:is(.ts-dlg, .m-zahlungsverkehr) .bk-filter { display: flex; align-items: center; gap: 8px; flex-wrap: nowrap; }   /* §848: eine Linie, kein Umbruch (Joerg) */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-filter select.v, :is(.ts-dlg, .m-zahlungsverkehr) .bk-filter input.v { height: var(--ts-btn-h); width: auto; flex: 0 1 auto; min-width: 0; }   /* ▸N1292 §846 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-filter .datepick input.v { width: var(--mw-bk-datum); }
/* §4851 KONTOKARTEN (Skizze ks1/ks2 v2, Jörg 09.11. 14:12): Reihe zwischen Filterzeile und Tabelle, Abstände = Abstand Filterzeile→Tabelle (--dlg-zone, gemessen 12 px),
   Auswahl = Akzentkante links + Auswahlfläche wie .fen-baum > .fen-li.sel (K-433), Beträge rechtsbündig, negativ rot (M11 §3944). */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-karten { flex: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(var(--bk-karte-min), 1fr)); gap: var(--ds-m); margin: 0 0 var(--ds-m); }   /* Filterzeile trägt margin-bottom --ds-m (Z. .bk-filter.bk-konto) — gleicher Abstand Karten→Tabelle und zwischen Karten */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-karten:empty { display: none; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-karte { height: var(--bk-karte-h); box-sizing: border-box; padding: var(--ts-luft-s) var(--ds-m); border: 1px solid var(--ts-panel-bd); border-radius: 6px; cursor: pointer; overflow: hidden; display: flex; flex-direction: column; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-karte.sel { background: var(--ts-sel-bg); box-shadow: inset 3px 0 0 var(--ts-akzent); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-k-kopf { display: flex; gap: var(--dlg-gap); align-items: baseline; white-space: nowrap; font-size: var(--ds-fs-text); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-k-kopf > span { margin-left: auto; color: var(--ts-gedaempft); font-size: var(--ds-fs-hinweis); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-k-wert { text-align: right; font-weight: 700; font-size: var(--bk-karte-fs); line-height: var(--bk-karte-lh); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-k-wert.neg { color: var(--ts-red); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-leer .bk-k-wert { color: var(--ts-gedaempft); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-k-zeile { text-align: right; font-size: var(--ds-fs-hinweis); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-k-dim { color: var(--ts-gedaempft); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-k-vm { cursor: pointer; text-decoration: underline dotted; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-filter #bk_f_richtung { width: var(--mw-bk-richtung); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-filter #bk_f_status { width: var(--mw-bk-status); }   /* §1532: Leiter statt 200px */   /* ▸N1294 §849 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-tab-wrap { border: 1px solid var(--ts-panel-bd); border-radius: 8px; overflow: hidden; display: flex; flex-direction: column; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-tab-wrap > .tbl-scroll { flex: 1 1 auto; min-height: 0; overflow: auto; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-filter .bk-f-lab { display: inline-flex; align-items: center; gap: 4px; color: var(--ts-gedaempft); font-size: var(--ds-fs-text); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-filter input#bk_f_q { width: auto; min-width: 0; flex: 1 1 auto; margin: 0; }   /* ▸N1295 §1090 §1091 K-361 */   /* §848: breiter (Joerg) */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-filter .datepick { display: inline-flex; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-aktionen .bk-fuss-links { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-aktionen .bk-saldo { font-size: var(--ds-fs-text); color: var(--ts-gedaempft); }/* ▸N1296 §1058 §1057 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-aktionen.bk-fuss3 { display: flex; flex-direction: column; align-items: stretch; gap: 0; }   /* Leerzeile zwischen Status und Legende */
/* ▸N1297 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-fuss3 .bk-reihe-status { display: flex; flex-direction: column; gap: 2px; min-width: 0; }:is(.ts-dlg, .m-zahlungsverkehr) .bk-fuss3 .bk-reihe-legende { margin-top: var(--ds-l); display: flex; flex-wrap: wrap; align-items: center; gap: 2px var(--ds-l); font-size: var(--ds-fs-text); color: var(--ts-gedaempft); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-fuss3 .bk-reihe-legende .bk-lg-t { color: var(--ts-text); font-weight: 600; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-fuss3 .bk-reihe-legende .bk-lg, :is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .bk-reihe-legende .bk-lg { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }   /* §1147: dieselbe Legende im Fenster Abrechnung */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-fuss3 .bk-reihe-legende .bk-lg-f, :is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .bk-reihe-legende .bk-lg-f { color: var(--ts-akzent); font-weight: 600; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-fuss3 .bk-reihe-legende .bk-lg-ki { color: var(--ts-akzent-dark); font-weight: 600; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-zn.bk-ki { color: var(--ts-akzent-dark); }   /* ▸N1298 §1059 */
/* ▸N1299 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-zn { font-weight: 600; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-zn.bk-offen { color: var(--ts-gedaempft); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-zn.bk-warn, :is(.ts-dlg, .m-zahlungsverkehr) .bk-vs.bk-warn { color: var(--ts-meld-warn-fg); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-vs.bk-ki { color: var(--ts-akzent-dark); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-hinweis { color: var(--ts-meld-warn-fg); display: inline-block; max-width: 100%;   /* §1569 wie .bk-vs */ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-tab th.bk-sort { cursor: pointer; user-select: none; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-tab th.bk-sort.sort-auf::after { content: ' \25B2'; font-size: var(--ds-fs-hinweis); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-tab th.bk-sort.sort-ab::after  { content: ' \25BC'; font-size: var(--ds-fs-hinweis); }

/* ▸N1300 §835 §730 */
.je-such .js-such .js-such-info { margin-left: auto; white-space: nowrap; font-size: 12px; color: var(--ts-gedaempft); }

/* ▸N1301 §821 §800 §705 */
/* ▸§1493 (Joerg 22.09.2026: "in allen Masken wird die Zeile nicht komplett markiert"): Die Regel war auf .tspro-ui .be-tbl und .tspro-ui .tbl-box
   gescopt — jede Positionstabelle ausserhalb dieses Rahmens behielt in Bemerkung/Anzahl/EK den Feldhintergrund und blieb hell.
   Jetzt global: in einer markierten oder ueberfahrenen Zeile sind Eingabefelder, Auswahlfelder und Textfelder durchsichtig. */
tbody tr:hover td input:not([type="checkbox"]):not([type="radio"]),
tbody tr:hover td select, tbody tr:hover td textarea,
tbody tr.sel td input:not([type="checkbox"]):not([type="radio"]),
tbody tr.sel td select, tbody tr.sel td textarea { background-color: transparent; }

/* ▸N1304 §794 */
/* ▸N1305 §796 */
.ts-x { background: transparent; border: 0; color: var(--ts-sec-fg); font-size: 20px; line-height: 1; cursor: pointer; padding: 0 4px; opacity: .8; }

.tspro-ui .obtn.dark, .art-wrap .obtn.dark, .es-wrap .obtn.dark, .bib-wrap .obtn.dark,
.ts-ovl .obtn.dark, .be-ov .obtn.dark, .ts-memo-ov .obtn.dark, .je-such .obtn.dark { background: var(--ts-ink); color: var(--ts-sec-fg); border-color: var(--ts-ink); }

/* ▸N1307 §795 */
.ts-dim { color: var(--ts-pos-grau); }

/* App-Leiste (includes/header.php) */
/* ▸N1310 §794 */
body.ts-app *, body.ts-app *::before, body.ts-app *::after,
body.ts-anmeldung *, body.ts-anmeldung *::before, body.ts-anmeldung *::after { box-sizing: border-box; }
.app-bar { position: sticky; top: 0; z-index: 100; display: flex; align-items: center;
           gap: .9rem; height: var(--ts-bar-h); padding: 0 1.2rem; background: var(--ts-ink); color: var(--ts-panel-bg); }   /* §4073: 52px jetzt als Variable (gleicher Wert) */
.app-bar .brand { font-weight: 800; font-size: 14px; letter-spacing: .01em; white-space: nowrap; }

.app-bar .title { font-size: 13px; color: rgba(255,255,255,.65); white-space: nowrap; }
.app-bar .spacer { flex: 1 1 auto; }
/* ▸N1311 §921 */
.app-bar .hd-status { display: flex; align-items: center; gap: 12px; flex: none; }
.app-bar .hd-tse { background: var(--ts-red); color: var(--ts-sec-fg); font-weight: 700; font-size: 12px; letter-spacing: .04em;   white-space: nowrap; }

/* ▸N1312 §1182 §1182c */
.app-bar .hd-assist { color: var(--ts-panel-bg); background: transparent;  border-radius: 6px; font: inherit; font-size: 12px; font-weight: 700;  cursor: pointer;  transition: background .15s; }
.app-bar .logout { color: var(--ts-panel-bg); text-decoration: none; font-size: 12px; font-weight: 700;
                    border-radius: 6px;  transition: background .15s; }
.app-bar .user-menu { position: relative; display: flex; align-items: center; }
.app-bar .user-btn { display: inline-flex; align-items: center;  cursor: pointer; background: transparent;
                     color: rgba(255,255,255,.9);  border-radius: 6px;
                     font: inherit;    transition: background .15s; }
.app-bar .user-btn .caret { font-size: var(--ds-fs-hinweis); opacity: .75; transition: transform .15s; }
/* §3269 (Joerg 20.10. 12:53: „manche Knoepfe einzeilig, manche mehrzeilig — vereinheitlichen, KI-Anzeige auch als Knopf“): EIN Mass fuer alle Elemente der Kopfleiste —
   gleiche Hoehe, gleicher Rahmen, gleiche Schrift, nie Umbruch. Gilt fuer Mail-Index, Druckauftraege, E-Mails, Assistent, KI-Kosten, TSE-Hinweis, Benutzer, Abmelden. */
:root { --hd-knopf-h: 28px; --hd-knopf-rand: rgba(255,255,255,.25); }
.app-bar .hd-druck, .app-bar .hd-assist, .app-bar .logout, .app-bar .user-btn, .app-bar .hd-tse {
  box-sizing: border-box; height: var(--hd-knopf-h); display: inline-flex; align-items: center; gap: 6px; padding: 0 10px; margin-right: 0;
  border: 1px solid var(--hd-knopf-rand); border-radius: 6px; font-size: 12px; font-weight: 700; line-height: 1; white-space: nowrap; flex-shrink: 0; }
.app-bar .hd-tse { border-color: var(--ts-red); }
.app-bar .user-menu { flex-shrink: 0; }

.app-bar .user-btn[aria-expanded="true"] .caret { transform: rotate(180deg); }
.app-bar .user-pop { position: absolute; top: calc(100% + 8px); right: 0; width: 280px; background: var(--ts-panel-bg); color: var(--ts-ink);
                     border: 1px solid var(--ts-line); border-radius: 10px; box-shadow: var(--ds-schatten-dialog); padding: 12px; z-index: 200; }   /* §1259 */
.app-bar .user-pop[hidden] { display: none; }
.app-bar .up-head { font-size: 13px; font-weight: 800; margin: 0 0 10px; color: var(--ts-ink); }
.app-bar .up-row { display: flex; flex-direction: column; gap: 3px; margin-bottom: 8px; }
.app-bar .up-row label { font-size: var(--ds-fs-hinweis); color: var(--ts-ink-muted); font-weight: 600; }
.app-bar .up-row input { height: var(--ds-feld); border: 1px solid var(--ts-line); border-radius: 6px; padding: 0 8px;
                         font: inherit; font-size: 13px; color: var(--ts-ink); background: var(--ts-panel-bg); }   /* §698: Fokusrahmen NICHT in Akzentfarbe */
.app-bar .up-btnrow { margin-top: 2px; }
.app-bar .up-save { width: 100%; height: 32px; border: 0; border-radius: 6px; cursor: pointer; background: var(--ts-akzent);
                    color: var(--ts-panel-bg); font: inherit; font-size: 13px; font-weight: 700; transition: background .15s; }
.app-bar .up-result { font-size: 12px; line-height: 1.4; margin-top: 8px; min-height: 1em; }
.app-bar .up-result.err { color: var(--ts-red); }
.app-main { max-width: 1280px; margin: 0 auto; padding: 1.1rem 1.2rem 2rem; }
.app-fuss { max-width: 1280px; margin: 0 auto; padding: .8rem 1.2rem; color: var(--ts-dim); font-size: var(--ds-fs-hinweis); font-family: var(--ts-font); }   /* ▸N1313 §794 */

/* Anmeldung und 2FA (login.php, 2fa.php) — EINE Form */
body.ts-anmeldung { margin: 0; min-height: 100vh; display: flex; align-items: center; justify-content: center;
                    background: var(--ts-shell-bg); font-family: var(--ts-font); color: var(--ts-ink); }
body.ts-anmeldung .card { width: 360px; max-width: 92vw; background: var(--ts-panel-bg); border: 1px solid var(--ts-line);
                          border-radius: 14px; overflow: hidden; box-shadow: var(--ds-schatten-dialog); }   /* §1259 */
body.ts-anmeldung .card.card-breit { width: 430px; max-width: 94vw; }   /* ▸N1314 */
body.ts-anmeldung .card-head { background: var(--ts-ink); color: var(--ts-panel-bg); padding: 1.1rem 1.4rem; }
body.ts-anmeldung .card-head .app { font-weight: 800; font-size: 15px; letter-spacing: .01em; }
body.ts-anmeldung .card-head .sub { font-size: var(--ds-fs-hinweis); color: rgba(255,255,255,.6); margin-top: 2px; }
body.ts-anmeldung .card-body { padding: 1.3rem 1.4rem; }
body.ts-anmeldung label { display: block; font-size: var(--ds-fs-hinweis); font-weight: 700; text-transform: uppercase;
                          letter-spacing: .07em; color: var(--ts-ink-muted); margin: 0 0 .3rem; }
body.ts-anmeldung input { width: 100%; height: 38px; padding: 0 .7rem; border: 1px solid var(--ts-line);
                          border-radius: 8px; font-size: 14px; outline: none; background: var(--ts-panel-bg); }   /* ▸N1315 §698 */
body.ts-anmeldung input.code { letter-spacing: .3em; text-align: center; font-size: 20px; font-weight: 700; }   /* ▸N1316 */
body.ts-anmeldung .fld { margin-bottom: .8rem; }
body.ts-anmeldung .abstand { margin-bottom: .9rem; }   /* war style="margin-bottom:.9rem" */
body.ts-anmeldung .mitte { text-align: center; }       /* war style="text-align:center" */
body.ts-anmeldung .err  { background: var(--ts-meld-err-bg); color: var(--ts-meld-err-fg); border: 1px solid var(--ts-meld-err-bd); border-radius: 8px; padding: .5rem .8rem; font-size: 13px; margin-bottom: .9rem; }
body.ts-anmeldung .hint { background: var(--ts-meld-info-bg); color: var(--ts-meld-info-fg); border: 1px solid var(--ts-meld-info-bd); border-radius: 8px; padding: .5rem .8rem; font-size: 12.5px; margin-bottom: .9rem; line-height: 1.45; }
body.ts-anmeldung .qr { display: flex; justify-content: center; margin-bottom: .9rem; }
body.ts-anmeldung .qr svg { width: 320px; height: 320px; border: 1px solid var(--ts-line); border-radius: 8px; }
body.ts-anmeldung .wh { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 14px; font-family: ui-monospace, Consolas, monospace;
                        font-size: 15px; letter-spacing: .08em; background: var(--ts-code-bg); border: 1px dashed var(--ts-code-bd); border-radius: 8px; padding: .8rem 1rem; margin-bottom: .9rem; }
body.ts-anmeldung .sec { font-family: ui-monospace, Consolas, monospace; font-size: 16px; letter-spacing: .12em; background: var(--ts-shell-bg);
                         border: 1px dashed var(--ts-line); border-radius: 8px; padding: .6rem .8rem; text-align: center; margin-bottom: .9rem; user-select: all; word-break: break-all; }
body.ts-anmeldung button { width: 100%; height: var(--ts-btn-h-gross)   /* §1532 war 40px */; background: var(--ts-akzent); color: var(--ts-panel-bg); border: none; border-radius: 8px;
                           font-size: 14px; font-weight: 700; cursor: pointer; transition: background .15s; }
body.ts-anmeldung button.neben { background: var(--ts-panel-bg); color: var(--ts-ink); border: 1px solid var(--ts-line); margin-top: .5rem; }
body.ts-anmeldung a.zurueck { display: block; text-align: center; margin-top: .9rem; font-size: 12.5px; color: var(--ts-ink-muted); }

/* ▸N1317 */
html:has(> body.ts-app), body.ts-app { height: 100%; }body.ts-app { background: var(--ts-shell-bg); color: var(--ts-ink); font-family: var(--ts-font); display: flex; flex-direction: column; }
body.ts-app .app-bar { flex: 0 0 auto; }
body.ts-app .app-main { flex: 1 1 auto; min-height: 0; max-width: none; margin: 0; display: flex; flex-direction: column; }
body.ts-app > footer { flex: 0 0 auto; }
body.ts-app .tspro-ui.shell-host { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }

/* ▸N1318 §966 */
/* ▸N1319 §1074 */
/* §3323 (Joerg 21.10. 15:05 „ein Stueck hoeher, nicht die naechste Fenstergroesse“): Kontoabruf gemessen 720x520 — der Hoehenmodifikator .ts-dlg-hoch (Z.1335, 740)
   verlor gegen die Stufenregel .ts-dlg-mittel (Z.1343, gleiche Spezifitaet, spaeter) und war hier wirkungslos. Mit dem PayPal-Konto stiess die Statuszeile
   (y 758,4) an die Knopfleiste (758). Hoehe Stufe breit (620) bei Breite mittel (720): +100 px, Variable statt neuer Zahl. */
#bkaOvl.ts-dlg.bka .ts-dlg-box.ts-dlg-mittel, #bkuOvl.ts-dlg.bka .ts-dlg-box.ts-dlg-mittel, #fbOvl.ts-dlg.bka .ts-dlg-box.ts-dlg-mittel, #fsOvl.ts-dlg.bka .ts-dlg-box.ts-dlg-mittel { height: var(--dlg-h-breit); }   /* §4598 Fahrtenbuch abholen/speichern (fb_fenster.js) auf dieselbe Statusfenster-Hoehe wie Kontoabruf — vorher .ts-dlg-hoch = 740 */   /* §3324: Ueberweisungs-/Lastschriftfenster (bku) derselbe tote Modifikator — gleiche Hoehe wie der Kontoabruf */
/* §3323: Koerper als Flex-Spalte (Hausmuster #asOvl Z.3750 / #esDrEigOvl Z.6405) — die Statuszeile .bka-warten rueckt mit margin-top:auto an die Knopfleiste,
   die Ergebnisliste bleibt darunter; gemessen vorher 84 px Leerraum unter der Statuszeile (Lint „leer“). */
#bkaOvl.ts-dlg.bka .ts-dlg-box > .b, #bkuOvl.ts-dlg.bka .ts-dlg-box > .b, #fbOvl.ts-dlg.bka .ts-dlg-box > .b, #fsOvl.ts-dlg.bka .ts-dlg-box > .b { display: flex; flex-direction: column; }
#bkaOvl.ts-dlg.bka .bka-warten, #bkuOvl.ts-dlg.bka .bka-warten, #fbOvl.ts-dlg.bka .bka-warten, #fsOvl.ts-dlg.bka .bka-warten { margin-top: auto; flex: 0 0 auto; }
#bkaOvl.ts-dlg.bka .bka-ergebnis, #bkuOvl.ts-dlg.bka .bka-ergebnis { flex: 0 0 auto; }
.ts-dlg.bka .bka-kopf      { display: flex; align-items: center; gap: var(--ds-m); margin-bottom: var(--ds-m); padding-bottom: var(--ds-s); border-bottom: 1px solid var(--ds-trennlinie); }
.ts-dlg.bka .bka-logo      { width: 40px; height: 40px; flex: 0 0 40px; color: var(--ts-akzent); }   /* §1087b: Systemmass 40 */
.ts-dlg.bka .bka-ring-bg   { fill: none; stroke: var(--ts-line); stroke-width: 3; }
.ts-dlg.bka .bka-ring      { fill: none; stroke: currentColor; stroke-width: 3; stroke-linecap: round; stroke-dasharray: 44 132; transform-origin: center; transform-box: fill-box; opacity: .9; }
.ts-dlg.bka .bka-haus      { fill: currentColor; }
.ts-dlg.bka .bka-punkt     { fill: var(--ts-ok); opacity: 0; }
.ts-dlg.bka.arbeitet .bka-ring  { animation: bka-dreh 1.6s linear infinite; }
.ts-dlg.bka.arbeitet .bka-punkt { animation: bka-puls 1.2s ease-in-out infinite; }
.ts-dlg.bka .bka-titel     { font-weight: var(--ds-fw-kopf); font-size: var(--ds-fs-kopf); height: 1.4em; line-height: 1.4em; white-space: nowrap; overflow: hidden; }   /* §1085 feste Hoehe */
.ts-dlg.bka .bka-sub       { display: block; height: 1.4em; line-height: 1.4em; white-space: nowrap; overflow: hidden; font-size: var(--ds-fs-hinweis); color: var(--ts-ink-muted); }   /* §1085 */
/* ▸N1320 §1076 §1089 §1077 */
/* ▸N1321 §1077 */
.ts-dlg.bka .bka-liste     { display: grid; gap: var(--ds-s); margin-bottom: var(--ds-m); }
.ts-dlg.bka .bka-zg        { border: 1px solid var(--ts-line); border-radius: var(--ds-radius); overflow: hidden; }
.ts-dlg.bka .bka-zg-kopf   { display: flex; justify-content: space-between; align-items: center; padding: var(--ds-xs) var(--ds-s); background: var(--ts-hover-bg); border-bottom: 1px solid var(--ts-line); }
.ts-dlg.bka .bka-zg-name   { font-weight: var(--ds-fw-kopf); }
.ts-dlg.bka .bka-zg-st     { font-size: var(--ds-fs-hinweis); color: var(--ts-ink-muted); }
.ts-dlg.bka .bka-kz        { display: grid; grid-template-columns: 16px 40px 1fr auto; align-items: center; gap: var(--ds-s); padding: var(--ds-xs) var(--ds-s); cursor: pointer; }
.ts-dlg.bka .bka-kz + .bka-kz { border-top: 1px solid var(--ds-trennlinie); }
.ts-dlg.bka .bka-kz input  { margin: 0; accent-color: var(--ts-akzent); }
.ts-dlg.bka .bka-kz-art    { font-size: var(--ds-fs-hinweis); color: var(--ts-akzent); text-transform: uppercase; letter-spacing: .04em; }
.ts-dlg.bka .bka-kz-bez    { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ts-dlg.bka .bka-erg-zg    { margin-bottom: var(--ds-xs); }
.ts-dlg.bka .bka-erg-zg ul { margin: 2px 0 0; padding-left: 16px; }
.ts-dlg.bka .bka-warten    { display: flex; align-items: center; gap: var(--ds-s); padding: 0 var(--ds-s); height: 40px; box-sizing: border-box; border: 1px solid var(--ts-line); border-radius: var(--ds-radius); background: var(--ts-meld-info-bg); margin-bottom: var(--ds-s); }   /* §1085 */
.ts-dlg.bka .bka-app       { width: 16px; height: 24px; border: 2px solid var(--ts-akzent); border-radius: 4px; position: relative; flex: 0 0 16px; }
.ts-dlg.bka .bka-app::after { content: ''; position: absolute; left: 4px; right: 4px; top: 4px; height: 12px; background: var(--ts-akzent); opacity: .25; }
.ts-dlg.bka .bka-warten.puls .bka-app::after { animation: bka-puls 1.2s ease-in-out infinite; }
:is(.ts-dlg.bka, .ts-dlg-box, .bc-main) .bka-schritte  { list-style: none; margin: 0 0 var(--ds-m); padding: 0; display: grid; gap: var(--ds-xs); }
:is(.ts-dlg.bka, .ts-dlg-box, .bc-main) .bka-step      { display: grid; grid-template-columns: 22px 1fr auto; align-items: center; gap: var(--ds-s); color: var(--ts-ink-muted); }
:is(.ts-dlg.bka, .ts-dlg-box, .bc-main) .bka-step .bka-ico::before { content: '\25CB'; color: var(--ts-ink-muted); }             /* offen: Kreis */
:is(.ts-dlg.bka, .ts-dlg-box, .bc-main) .bka-step.lauf { color: var(--ts-ink); }
:is(.ts-dlg.bka, .ts-dlg-box, .bc-main) .bka-step.lauf .bka-ico::before { content: '\25D4'; color: var(--ts-akzent); animation: bka-dreh 1.2s linear infinite; display: inline-block; }
:is(.ts-dlg.bka, .ts-dlg-box, .bc-main) .bka-step.fehl .bka-ico::before { content: '\2717'; color: var(--ts-red); }
:is(.ts-dlg.bka, .ts-dlg-box, .bc-main) .bka-det       {   /* §3744 Schrittliste als Baustein auch in Fenstern (.ts-dlg-box) und Kacheln (.bc-main): Geraet getauscht */ font-size: var(--ds-fs-hinweis); color: var(--ts-ink-muted); white-space: nowrap; overflow: hidden; max-width: 20em; }   /* §1085 */
.ts-dlg.bka .bka-hinweis   { height: 2.8em; line-height: 1.4em; overflow: hidden; margin-bottom: var(--ds-s); }   /* §1085: genau zwei Zeilen */
.ts-dlg.bka .bka-ergebnis  { border-top: 1px solid var(--ds-trennlinie); padding-top: var(--ds-s); max-height: 10em; overflow: auto; }   /* §1085 */
.ts-dlg.bka .bka-konten    { margin: 0; padding-left: var(--ds-l); font-size: var(--ds-fs-hinweis); color: var(--ts-ink-muted); }
@keyframes bka-dreh { to { transform: rotate(360deg); } }
@keyframes bka-puls { 0%, 100% { opacity: .15; } 50% { opacity: 1; } }.ts-dlg.bka .bka-kz-leer { color: var(--ts-ink-muted); grid-template-columns: 16px 40px 1fr; }
.ts-dlg.bka .bka-kz-leer .bka-kz-bez { white-space: normal; overflow: visible; text-overflow: clip; }
.ts-dlg.bka .bka-kz-nr     { font-variant-numeric: tabular-nums; letter-spacing: .02em; color: var(--ts-ink); white-space: nowrap; }.ts-dlg.bka .bka-kz-bis { font-size: var(--ds-fs-hinweis); color: var(--ts-ink-muted); white-space: nowrap; grid-column: 3 / 5; }.ts-dlg.bka .bka-kopf-txt { display: grid; gap: 2px; min-width: 0; flex: 1 1 auto; }
.ts-dlg.bka .bka-ab        { display: flex; align-items: center; gap: var(--ds-s); margin-left: auto; flex: 0 0 auto; white-space: nowrap; }
.ts-dlg.bka .bka-ab-l      { color: var(--ts-ink-muted); white-space: nowrap; }
.ts-dlg.bka .bka-ab-f      { width: 8em; height: var(--ts-feld-h); line-height: var(--ts-feld-h); box-sizing: border-box; margin: 0;   /* ▸N1327 §1081 */ padding: 0 var(--ds-xs); border: 1px solid var(--ts-line); border-radius: var(--ds-radius); font-family: inherit; font-size: inherit; background: var(--ts-field-bg); text-align: center; }
.ts-dlg.bka .bka-ab-h      { font-size: var(--ds-fs-hinweis); color: var(--ts-ink-muted); padding-top: var(--ds-xs); }
/* ▸N1328 §1082 K-45 §1076 §1078 */
.ts-dlg [hidden]           { display: none !important; }
/* ▸N1329 §1085 */
.ts-dlg.bka .ts-dlg-box .b { min-height: 25em; box-sizing: border-box; }.ts-dlg.bka .bka-warten-txt { font-size: var(--ds-fs-hinweis); color: var(--ts-ink-muted); white-space: nowrap; overflow: hidden; }

/* ▸N1330 §982 */
.tspro-ui .bhk-ecomehr  { color: var(--ts-ink-muted); }
.tspro-ui .bhk-ecodel   { color: var(--ts-red); text-decoration: none; margin-left: 2px; }

/* ▸N1331 §1087 K-353 */
.bk-modern .bk-tab tbody tr:not([data-fuell]) td:first-child, :is(.ts-dlg, .m-zahlungsverkehr) .bk-abr tbody tr:not([data-fuell]) td:first-child, .ts-dlg .pr-dlg tbody tr:not([data-fuell]) td:first-child { box-shadow: inset 3px 0 0 var(--ts-line); }   /* §1147: Fenster Abrechnung traegt dieselben Streifen */   /* ▸N1332 §1089 */
.bk-modern .bk-tab tbody tr.z-sicher td:first-child, :is(.ts-dlg, .m-zahlungsverkehr) .bk-abr tbody tr.z-sicher td:first-child { box-shadow: inset 3px 0 0 var(--ts-akzent); }
.bk-modern .bk-tab tbody tr.z-ki td:first-child, :is(.ts-dlg, .m-zahlungsverkehr) .bk-abr tbody tr.z-ki td:first-child { box-shadow: inset 3px 0 0 var(--ts-akzent-dark); }
.bk-modern .bk-tab tbody tr.z-warn td:first-child, :is(.ts-dlg, .m-zahlungsverkehr) .bk-abr tbody tr.z-warn td:first-child, .ts-dlg .pr-dlg tbody tr.z-warn td:first-child { box-shadow: inset 3px 0 0 var(--ts-meld-warn-fg); }   /* Warn-Ton des Hauses (Z.242) */
.bk-modern .bk-tab tbody tr.bk-zugeordnet td:first-child, :is(.ts-dlg, .m-zahlungsverkehr) .bk-abr tbody tr.bk-zugeordnet td:first-child, .ts-dlg .pr-dlg tbody tr.bk-zugeordnet td:first-child { box-shadow: inset 3px 0 0 var(--ts-ok); }
/* ▸N1333 §1088 §1087 §912 */
.bk-modern .bk-tab .sp-kategorie { width: 112px; min-width: 112px; }
.bk-modern .bk-tab .sp-vorschlag .bk-zn, :is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .sp-txt .bk-zn { display: inline-block; width: var(--mw-bk-zn); text-align: center; }     /* Zeichen feste Breite, Text buendig */
.bk-modern .bk-tab thead th { color: var(--ts-ink); font-weight: var(--ds-fw-kopf); background: var(--ts-flaeche); }   /* ▸N1334 §1092 */
.bk-modern .bk-reihe-status { color: var(--ts-ink-muted); }

/* ▸N1336 §1103 §1107 */
.ts-dlg .eco-dp .dlg-status   { min-height: calc(2 * var(--ds-zeile)); max-height: calc(2 * var(--ds-zeile)); overflow: hidden; margin-top: 0; padding-top: 0; border-top: 0; }   /* feste Hoehe: Vergleichsergebnis verschiebt nichts */
.ts-dlg .eco-dp .dlg-inhalt   { height: calc(12 * var(--ds-zeile)); }   /* 12 Zeilen, scrollt selbst (K-314) */
.ts-dlg .eco-dp .tbl-box      { height: 100%; }
/* ▸N1337 §1139 §1107 */
/* ▸N1338 §1141 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .bk-abr-kopf { display: block; margin: 0 0 var(--ds-s); }
/* §1915: Statuszeile des Fensters Kreditkartenabrechnung ist MEHRZEILIG im Fuss (Ruhetext, Abrechnung, Hinweis, Legende) — dialog.js verschiebt sie aus dem Rumpf; jede Zeile einzeilig mit Ellipse, voller Text im Tooltip */
.ts-dlg-box .f > .dlg-status.bk-abr-fuss { display: block; white-space: normal; }
.ts-dlg-box .f > .dlg-status.bk-abr-fuss > div { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ts-dlg-box .f > .dlg-status.bk-abr-fuss #bk_abr_status { color: var(--ts-ink); }
.ts-dlg-box .f > .dlg-status.bk-abr-fuss .bk-reihe-legende { display: flex; flex-wrap: wrap; gap: var(--ds-m); }
.ts-dlg-box .f > .dlg-status.bk-abr-fuss .bk-lg { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
.ts-dlg-box .f > .dlg-status.bk-abr-fuss .bk-lg-f { color: var(--ts-akzent); font-weight: 600; }   /* §1913: Kopf (Kacheln, Abrechnungszeile, Legende) — war als .dlg-status gebaut und hielt dadurch die echte Statuszeile im Rumpf */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .bk-abr-kz    { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--ds-m); margin-bottom: 0; }   /* ▸N1340 §1219 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .bk-abr-kz > div { background: var(--ts-flaeche); border-radius: var(--ds-radius); padding: 0 var(--ds-l); height: calc(1.5 * var(--ds-zeile)); box-sizing: border-box; display: flex; flex-direction: row; align-items: center; justify-content: space-between; gap: var(--ds-m); }   /* §1144 einzeilig: Beschriftung links, Wert rechts */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .bk-abr-bar    { margin: 0 0 var(--ds-s); }   /* §1145: ueber den Kacheln */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .bk-abr-kzl   { color: var(--ts-ink-muted); font-size: var(--ds-fs-hinweis); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .bk-abr-kzw   { font-size: var(--ds-fs-kopf); font-weight: var(--ds-fw-kopf); }   /* Systemgroessen: Kopfschrift 13 px, kein fremdes Mass */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .bk-abr-offen { background: var(--ts-meld-warn-bg); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .bk-abr-offen .bk-abr-kzl, :is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .bk-abr-offen .bk-abr-kzw { color: var(--ts-meld-warn-fg); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .bk-abr-ok .bk-abr-kzw { color: var(--ts-meld-ok-fg); }   /* §2766 Kontrast 4,45:1 mit --ts-ok (gemessen) — dunkleres Meldungsgruen */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .bk-abr-abr   { color: var(--ts-ink-muted); }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .dlg-inhalt { flex: 1 1 0; min-height: 0; overflow: hidden; }   /* §1913: fuellt statt fester 12 Zeilen (§1088) */
.ts-dlg .pr-dlg .dlg-inhalt { height: calc(12 * var(--ds-zeile)); overflow: hidden; }   /* ▸N1341 §1142 §1161 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .tbl-box, .ts-dlg .pr-dlg .tbl-box { height: 100%; display: flex; flex-direction: column; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .tbl-scroll, .ts-dlg .pr-dlg .tbl-scroll { flex: 1 1 0; min-height: 0; overflow: auto; }
.ts-dlg .pr-dlg .dlg-status   { min-height: calc(2 * var(--ds-zeile)); max-height: calc(2 * var(--ds-zeile)); overflow: hidden; margin-top: 0; padding-top: 0; border-top: 0; }   /* §1161: Ergebniszeile fest, zwei Zeilen */
.ts-dlg .pr-dlg .sp-txt        { width: var(--mw-pr-txt); min-width: var(--mw-pr-txt); }   /* ▸N1342 §1167 */
.ts-dlg .pr-dlg .pr-vorgang     { width: var(--mw-pr-vorgang); min-width: var(--mw-pr-vorgang); white-space: nowrap; }   /* §1187 */
.ts-dlg .pr-dlg td.pr-umbruch   { white-space: normal; overflow: visible; text-overflow: clip; line-height: 1.3; padding-top: 3px; padding-bottom: 3px; }   /* §1187: Befundtext vollstaendig, Zeile wird hoeher */
.ts-dlg .pr-dlg .pr-detsp       { width: var(--mw-pr-detsp); min-width: var(--mw-pr-detsp); text-align: right; white-space: nowrap; }   /* ▸N1343 §1179 */   /* ▸N1344 §1167 */
.ts-dlg .pr-dlg .obtn.pr-det    { margin: 0; padding: 0 var(--ds-s); height: var(--ts-btn-h-klein)   /* §1532 war 20px */; line-height: calc(var(--ds-zeile) - 8px); font-size: var(--ds-fs-knopf); }   /* ▸N1345 §1165 */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .tbl-box      { height: 100%; }
/* §1561: Dokumentwahl im Fenster Abrechnung — nimmt den Platz der (ausgeblendeten) Postenliste */
.ts-dlg .bk-abr-dokwahl { max-height: var(--dlg-liste-h-gross); }   /* §2104 Dokumentwahl im eigenen Fenster (Ebene 3) statt im Kartenabrechnungs-Fenster */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .sp-txt { width: var(--mw-bk-abr-txt); min-width: var(--mw-bk-abr-txt); }   /* ▸N1346 §1150 */   /* ▸N1347 §1140 */
/* ▸N1348 §1181 */
.ts-dlg .as-dlg .dlg-status   { min-height: calc(2 * var(--ds-zeile)); max-height: calc(2 * var(--ds-zeile)); overflow: hidden; margin-top: 0; padding-top: 0; border-top: 0; }
.ts-dlg .as-dlg { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; height: 100%; }   /* §1412: Verlauf fuellt das Fenster, Eingabe unten */
.ts-dlg .as-dlg .dlg-inhalt   { flex: 1 1 auto; min-height: 0; overflow: hidden; }
.ts-dlg .as-dlg .as-verlauf   { height: 100%; overflow: auto; display: flex; flex-direction: column; gap: var(--ds-s); padding-right: var(--ds-s); }
.ts-dlg .as-dlg .as-zeile     { padding: var(--ds-s) var(--ds-m); border-radius: var(--ds-radius); white-space: pre-wrap; max-width: 92%; }
.ts-dlg .as-dlg .as-user      { background: var(--ts-flaeche); align-self: flex-end; }
.ts-dlg .as-dlg .as-assistant { background: var(--ts-panel-bg); border: 1px solid var(--ts-panel-bd); align-self: flex-start; }
.ts-dlg .as-dlg .as-vorschlaege { align-self: stretch; max-width: 100%; border: 1px solid var(--ts-panel-bd); display: flex; flex-direction: column; gap: var(--ds-xs); }
.ts-dlg .as-dlg .as-vs        { display: flex; align-items: center; justify-content: space-between; gap: var(--ds-m); }
.ts-dlg .as-dlg .as-eingabe   { display: flex; align-items: center; gap: var(--ds-s); margin-top: var(--ds-s); }   /* §1185: Feld und Knoepfe auf einer Linie (align-items) */
.ts-dlg .as-dlg .as-eingabe .v {   /* §1413: Eingabefeld ohne Such-Lupe (fil-field ist das Suchfeld) */ flex: 1 1 auto; min-width: 0; height: var(--ts-btn-h); margin: 0; box-sizing: border-box; }
.ts-dlg .as-dlg .as-eingabe .obtn { flex: 0 0 auto; white-space: nowrap; height: var(--ts-btn-h); margin: 0; }   /* ▸N1349 §1184 */

.ts-dlg .eco-mitdok { display: inline-flex; align-items: center; gap: 6px; height: var(--ts-btn-h); margin-right: auto; font-size: var(--ds-fs-knopf); color: var(--ts-ink); white-space: nowrap; cursor: pointer; }   /* §1204 */

/* ▸N1350 §1209 */


   /* §1219: Knopfmass aus der Variable (§722) */

/* ▸N1351 §1105 */
.ts-dlg .eco-abgleich .eco-status { margin-top: var(--ds-l); max-height: 7em; overflow: auto; }   /* ▸N1352 §1106 */

/* ▸N1353 §1317 */
/* ▸N1354 §1317 */
/* ▸N1355 §1319 */
.ts-dlg-box .b .dlg-leiste input:where(:not([type="checkbox"]):not([type="radio"])), .ts-dlg-box .b .dlg-leiste select, .ts-dlg-box .b .dlg-leiste label, .dlg-leiste input, .dlg-leiste select, .dlg-leiste label { height: var(--ts-btn-h); box-sizing: border-box; margin: 0; }
/* §1808: width:auto nur fuer Felder OHNE Typklasse — ein fb-Feld behaelt seine Leiter-Breite (vorher schlug diese Regel (0,3,1) die fb-Regel) */
.ts-dlg-box .b .dlg-leiste input:where(:not([type="checkbox"]):not([type="radio"]):not([class*="fb-"])), .ts-dlg-box .b .dlg-leiste select:where(:not([class*="fb-"])), .ts-dlg-box .b .dlg-leiste label, .dlg-leiste input:where(:not([class*="fb-"])), .dlg-leiste select:where(:not([class*="fb-"])), .dlg-leiste label { width: auto; }
/* ▸N1356 §1319 */
.ts-dlg-box .b .dlg-leiste { margin-bottom: var(--dlg-zone); }
.ts-dlg-box .b .dlg-hinweis:not(.dlg-status .dlg-hinweis) { margin-top: var(--dlg-zone); }
.dlg-leiste label { display: inline-flex; align-items: center; gap: var(--dlg-gap); }

/* ▸N1357 §1325 */
/* ▸N1358 §1317 K-46 */
/* ▸N1359 §1323 */
.tspro-ui.tspro-ui input[placeholder="TT.MM.JJJJ"],  .ts-dlg.ts-dlg input[placeholder="TT.MM.JJJJ"],  .ts-ovl.ts-ovl input[placeholder="TT.MM.JJJJ"],  .je-such.je-such input[placeholder="TT.MM.JJJJ"],  .bib-wrap.bib-wrap input[placeholder="TT.MM.JJJJ"],  #art-ovl#art-ovl input[placeholder="TT.MM.JJJJ"],  .be-ov.be-ov input[placeholder="TT.MM.JJJJ"],  .es-wrap.es-wrap input[placeholder="TT.MM.JJJJ"],  .art-wrap.art-wrap input[placeholder="TT.MM.JJJJ"],  .ts-app.ts-app input[placeholder="TT.MM.JJJJ"], .tspro-ui.tspro-ui input.ts-datum,  .ts-dlg.ts-dlg input.ts-datum,  .ts-ovl.ts-ovl input.ts-datum,  .je-such.je-such input.ts-datum,  .bib-wrap.bib-wrap input.ts-datum,  #art-ovl#art-ovl input.ts-datum,  .be-ov.be-ov input.ts-datum,  .es-wrap.es-wrap input.ts-datum,  .art-wrap.art-wrap input.ts-datum,  .ts-app.ts-app input.ts-datum, .tspro-ui.tspro-ui input[type="date"],  .ts-dlg.ts-dlg input[type="date"],  .ts-ovl.ts-ovl input[type="date"],  .je-such.je-such input[type="date"],  .bib-wrap.bib-wrap input[type="date"],  #art-ovl#art-ovl input[type="date"],  .be-ov.be-ov input[type="date"],  .es-wrap.es-wrap input[type="date"],  .art-wrap.art-wrap input[type="date"],  .ts-app.ts-app input[type="date"] {   /* ▸N1360 §1323 */
  padding-right: var(--ds-xl);   /* ▸N1361 */
  background-image: var(--ts-kalender); background-repeat: no-repeat; background-position: right var(--ds-s) center; background-size: var(--ts-feldsymbol) var(--ts-feldsymbol);
}
.tspro-ui.tspro-ui input[data-rolle="feld"],  .ts-dlg.ts-dlg input[data-rolle="feld"],  .ts-ovl.ts-ovl input[data-rolle="feld"],  .je-such.je-such input[data-rolle="feld"],  .bib-wrap.bib-wrap input[data-rolle="feld"],  #art-ovl#art-ovl input[data-rolle="feld"],  .be-ov.be-ov input[data-rolle="feld"],  .es-wrap.es-wrap input[data-rolle="feld"],  .art-wrap.art-wrap input[data-rolle="feld"],  .ts-app.ts-app input[data-rolle="feld"], .tspro-ui.tspro-ui input[placeholder*="enthält"],  .ts-dlg.ts-dlg input[placeholder*="enthält"],  .ts-ovl.ts-ovl input[placeholder*="enthält"],  .je-such.je-such input[placeholder*="enthält"],  .bib-wrap.bib-wrap input[placeholder*="enthält"],  #art-ovl#art-ovl input[placeholder*="enthält"],  .be-ov.be-ov input[placeholder*="enthält"],  .es-wrap.es-wrap input[placeholder*="enthält"],  .art-wrap.art-wrap input[placeholder*="enthält"],  .ts-app.ts-app input[placeholder*="enthält"], .tspro-ui.tspro-ui input[placeholder*="uchen"],  .ts-dlg.ts-dlg input[placeholder*="uchen"],  .ts-ovl.ts-ovl input[placeholder*="uchen"],  .je-such.je-such input[placeholder*="uchen"],  .bib-wrap.bib-wrap input[placeholder*="uchen"],  #art-ovl#art-ovl input[placeholder*="uchen"],  .be-ov.be-ov input[placeholder*="uchen"],  .es-wrap.es-wrap input[placeholder*="uchen"],  .art-wrap.art-wrap input[placeholder*="uchen"],  .ts-app.ts-app input[placeholder*="uchen"], .tspro-ui.tspro-ui input[placeholder*="Suche"],  .ts-dlg.ts-dlg input[placeholder*="Suche"],  .ts-ovl.ts-ovl input[placeholder*="Suche"],  .je-such.je-such input[placeholder*="Suche"],  .bib-wrap.bib-wrap input[placeholder*="Suche"],  #art-ovl#art-ovl input[placeholder*="Suche"],  .be-ov.be-ov input[placeholder*="Suche"],  .es-wrap.es-wrap input[placeholder*="Suche"],  .art-wrap.art-wrap input[placeholder*="Suche"],  .ts-app.ts-app input[placeholder*="Suche"] {   /* §1323: global */
  padding-right: var(--ds-xl);   /* ▸N1362 */
  background-image: var(--ts-lupe); background-repeat: no-repeat; background-position: right var(--ds-s) center; background-size: var(--ts-feldsymbol) var(--ts-feldsymbol);
}

/* ▸N1363 §1326 §1327 */


.tspro-ui.tspro-ui input[placeholder="TT.MM.JJJJ"], .ts-dlg.ts-dlg input[placeholder="TT.MM.JJJJ"], .ts-ovl.ts-ovl input[placeholder="TT.MM.JJJJ"], .je-such.je-such input[placeholder="TT.MM.JJJJ"], .bib-wrap.bib-wrap input[placeholder="TT.MM.JJJJ"], #art-ovl#art-ovl input[placeholder="TT.MM.JJJJ"], .be-ov.be-ov input[placeholder="TT.MM.JJJJ"], .es-wrap.es-wrap input[placeholder="TT.MM.JJJJ"], .art-wrap.art-wrap input[placeholder="TT.MM.JJJJ"], .ts-app.ts-app input[placeholder="TT.MM.JJJJ"], .tspro-ui.tspro-ui input[placeholder="TT.MM.JJJJ"]:disabled, .ts-dlg.ts-dlg input[placeholder="TT.MM.JJJJ"]:disabled, .ts-ovl.ts-ovl input[placeholder="TT.MM.JJJJ"]:disabled, .je-such.je-such input[placeholder="TT.MM.JJJJ"]:disabled, .bib-wrap.bib-wrap input[placeholder="TT.MM.JJJJ"]:disabled, #art-ovl#art-ovl input[placeholder="TT.MM.JJJJ"]:disabled, .be-ov.be-ov input[placeholder="TT.MM.JJJJ"]:disabled, .es-wrap.es-wrap input[placeholder="TT.MM.JJJJ"]:disabled, .art-wrap.art-wrap input[placeholder="TT.MM.JJJJ"]:disabled, .ts-app.ts-app input[placeholder="TT.MM.JJJJ"]:disabled, .tspro-ui.tspro-ui input[placeholder="TT.MM.JJJJ"][readonly], .ts-dlg.ts-dlg input[placeholder="TT.MM.JJJJ"][readonly], .ts-ovl.ts-ovl input[placeholder="TT.MM.JJJJ"][readonly], .je-such.je-such input[placeholder="TT.MM.JJJJ"][readonly], .bib-wrap.bib-wrap input[placeholder="TT.MM.JJJJ"][readonly], #art-ovl#art-ovl input[placeholder="TT.MM.JJJJ"][readonly], .be-ov.be-ov input[placeholder="TT.MM.JJJJ"][readonly], .es-wrap.es-wrap input[placeholder="TT.MM.JJJJ"][readonly], .art-wrap.art-wrap input[placeholder="TT.MM.JJJJ"][readonly], .ts-app.ts-app input[placeholder="TT.MM.JJJJ"][readonly], .tspro-ui.tspro-ui input.ts-datum, .ts-dlg.ts-dlg input.ts-datum, .ts-ovl.ts-ovl input.ts-datum, .je-such.je-such input.ts-datum, .bib-wrap.bib-wrap input.ts-datum, #art-ovl#art-ovl input.ts-datum, .be-ov.be-ov input.ts-datum, .es-wrap.es-wrap input.ts-datum, .art-wrap.art-wrap input.ts-datum, .ts-app.ts-app input.ts-datum, .tspro-ui.tspro-ui input.ts-datum:disabled, .ts-dlg.ts-dlg input.ts-datum:disabled, .ts-ovl.ts-ovl input.ts-datum:disabled, .je-such.je-such input.ts-datum:disabled, .bib-wrap.bib-wrap input.ts-datum:disabled, #art-ovl#art-ovl input.ts-datum:disabled, .be-ov.be-ov input.ts-datum:disabled, .es-wrap.es-wrap input.ts-datum:disabled, .art-wrap.art-wrap input.ts-datum:disabled, .ts-app.ts-app input.ts-datum:disabled, .tspro-ui.tspro-ui input.ts-datum[readonly], .ts-dlg.ts-dlg input.ts-datum[readonly], .ts-ovl.ts-ovl input.ts-datum[readonly], .je-such.je-such input.ts-datum[readonly], .bib-wrap.bib-wrap input.ts-datum[readonly], #art-ovl#art-ovl input.ts-datum[readonly], .be-ov.be-ov input.ts-datum[readonly], .es-wrap.es-wrap input.ts-datum[readonly], .art-wrap.art-wrap input.ts-datum[readonly], .ts-app.ts-app input.ts-datum[readonly], .tspro-ui.tspro-ui input[type="date"], .ts-dlg.ts-dlg input[type="date"], .ts-ovl.ts-ovl input[type="date"], .je-such.je-such input[type="date"], .bib-wrap.bib-wrap input[type="date"], #art-ovl#art-ovl input[type="date"], .be-ov.be-ov input[type="date"], .es-wrap.es-wrap input[type="date"], .art-wrap.art-wrap input[type="date"], .ts-app.ts-app input[type="date"], .tspro-ui.tspro-ui input[type="date"]:disabled, .ts-dlg.ts-dlg input[type="date"]:disabled, .ts-ovl.ts-ovl input[type="date"]:disabled, .je-such.je-such input[type="date"]:disabled, .bib-wrap.bib-wrap input[type="date"]:disabled, #art-ovl#art-ovl input[type="date"]:disabled, .be-ov.be-ov input[type="date"]:disabled, .es-wrap.es-wrap input[type="date"]:disabled, .art-wrap.art-wrap input[type="date"]:disabled, .ts-app.ts-app input[type="date"]:disabled, .tspro-ui.tspro-ui input[type="date"][readonly], .ts-dlg.ts-dlg input[type="date"][readonly], .ts-ovl.ts-ovl input[type="date"][readonly], .je-such.je-such input[type="date"][readonly], .bib-wrap.bib-wrap input[type="date"][readonly], #art-ovl#art-ovl input[type="date"][readonly], .be-ov.be-ov input[type="date"][readonly], .es-wrap.es-wrap input[type="date"][readonly], .art-wrap.art-wrap input[type="date"][readonly], .ts-app.ts-app input[type="date"][readonly] {
  background-image: var(--ts-kalender); background-repeat: no-repeat; background-position: right var(--ds-s) center; background-size: var(--ts-feldsymbol) var(--ts-feldsymbol);
  padding-right: var(--ds-xl);
}


/* ▸N1364 §1328 §709 §1327 */
.tspro-ui.tspro-ui select, .ts-dlg.ts-dlg select, .ts-ovl.ts-ovl select, .je-such.je-such select, .bib-wrap.bib-wrap select, #art-ovl#art-ovl select, .be-ov.be-ov select, .es-wrap.es-wrap select, .art-wrap.art-wrap select, .ts-app.ts-app select, .tspro-ui.tspro-ui select:disabled, .ts-dlg.ts-dlg select:disabled, .ts-ovl.ts-ovl select:disabled, .je-such.je-such select:disabled, .bib-wrap.bib-wrap select:disabled, #art-ovl#art-ovl select:disabled, .be-ov.be-ov select:disabled, .es-wrap.es-wrap select:disabled, .art-wrap.art-wrap select:disabled, .ts-app.ts-app select:disabled, .tspro-ui.tspro-ui select[disabled], .ts-dlg.ts-dlg select[disabled], .ts-ovl.ts-ovl select[disabled], .je-such.je-such select[disabled], .bib-wrap.bib-wrap select[disabled], #art-ovl#art-ovl select[disabled], .be-ov.be-ov select[disabled], .es-wrap.es-wrap select[disabled], .art-wrap.art-wrap select[disabled], .ts-app.ts-app select[disabled] {
  -webkit-appearance: none; appearance: none;
  background-image: var(--ts-chevron); background-repeat: no-repeat; background-position: right var(--ds-s) center; background-size: var(--ts-chevron-w) var(--ts-chevron-h);
  padding-right: var(--ds-xl);
}

/* ▸N1365 §1328 */
.tspro-ui.tspro-ui input[data-rolle="feld"], .ts-dlg.ts-dlg input[data-rolle="feld"], .ts-ovl.ts-ovl input[data-rolle="feld"], .je-such.je-such input[data-rolle="feld"], .bib-wrap.bib-wrap input[data-rolle="feld"], #art-ovl#art-ovl input[data-rolle="feld"], .be-ov.be-ov input[data-rolle="feld"], .es-wrap.es-wrap input[data-rolle="feld"], .art-wrap.art-wrap input[data-rolle="feld"], .ts-app.ts-app input[data-rolle="feld"], .tspro-ui.tspro-ui input[data-rolle="feld"].ro, .ts-dlg.ts-dlg input[data-rolle="feld"].ro, .ts-ovl.ts-ovl input[data-rolle="feld"].ro, .je-such.je-such input[data-rolle="feld"].ro, .bib-wrap.bib-wrap input[data-rolle="feld"].ro, #art-ovl#art-ovl input[data-rolle="feld"].ro, .be-ov.be-ov input[data-rolle="feld"].ro, .es-wrap.es-wrap input[data-rolle="feld"].ro, .art-wrap.art-wrap input[data-rolle="feld"].ro, .ts-app.ts-app input[data-rolle="feld"].ro, .tspro-ui.tspro-ui input[data-rolle="feld"][readonly], .ts-dlg.ts-dlg input[data-rolle="feld"][readonly], .ts-ovl.ts-ovl input[data-rolle="feld"][readonly], .je-such.je-such input[data-rolle="feld"][readonly], .bib-wrap.bib-wrap input[data-rolle="feld"][readonly], #art-ovl#art-ovl input[data-rolle="feld"][readonly], .be-ov.be-ov input[data-rolle="feld"][readonly], .es-wrap.es-wrap input[data-rolle="feld"][readonly], .art-wrap.art-wrap input[data-rolle="feld"][readonly], .ts-app.ts-app input[data-rolle="feld"][readonly], .tspro-ui.tspro-ui input[data-rolle="feld"]:disabled, .ts-dlg.ts-dlg input[data-rolle="feld"]:disabled, .ts-ovl.ts-ovl input[data-rolle="feld"]:disabled, .je-such.je-such input[data-rolle="feld"]:disabled, .bib-wrap.bib-wrap input[data-rolle="feld"]:disabled, #art-ovl#art-ovl input[data-rolle="feld"]:disabled, .be-ov.be-ov input[data-rolle="feld"]:disabled, .es-wrap.es-wrap input[data-rolle="feld"]:disabled, .art-wrap.art-wrap input[data-rolle="feld"]:disabled, .ts-app.ts-app input[data-rolle="feld"]:disabled, .tspro-ui.tspro-ui input.sinp, .ts-dlg.ts-dlg input.sinp, .ts-ovl.ts-ovl input.sinp, .je-such.je-such input.sinp, .bib-wrap.bib-wrap input.sinp, #art-ovl#art-ovl input.sinp, .be-ov.be-ov input.sinp, .es-wrap.es-wrap input.sinp, .art-wrap.art-wrap input.sinp, .ts-app.ts-app input.sinp, .tspro-ui.tspro-ui input.sinp.ro, .ts-dlg.ts-dlg input.sinp.ro, .ts-ovl.ts-ovl input.sinp.ro, .je-such.je-such input.sinp.ro, .bib-wrap.bib-wrap input.sinp.ro, #art-ovl#art-ovl input.sinp.ro, .be-ov.be-ov input.sinp.ro, .es-wrap.es-wrap input.sinp.ro, .art-wrap.art-wrap input.sinp.ro, .ts-app.ts-app input.sinp.ro, .tspro-ui.tspro-ui input.sinp[readonly], .ts-dlg.ts-dlg input.sinp[readonly], .ts-ovl.ts-ovl input.sinp[readonly], .je-such.je-such input.sinp[readonly], .bib-wrap.bib-wrap input.sinp[readonly], #art-ovl#art-ovl input.sinp[readonly], .be-ov.be-ov input.sinp[readonly], .es-wrap.es-wrap input.sinp[readonly], .art-wrap.art-wrap input.sinp[readonly], .ts-app.ts-app input.sinp[readonly], .tspro-ui.tspro-ui input.sinp:disabled, .ts-dlg.ts-dlg input.sinp:disabled, .ts-ovl.ts-ovl input.sinp:disabled, .je-such.je-such input.sinp:disabled, .bib-wrap.bib-wrap input.sinp:disabled, #art-ovl#art-ovl input.sinp:disabled, .be-ov.be-ov input.sinp:disabled, .es-wrap.es-wrap input.sinp:disabled, .art-wrap.art-wrap input.sinp:disabled, .ts-app.ts-app input.sinp:disabled, .tspro-ui.tspro-ui input.bib-filter, .ts-dlg.ts-dlg input.bib-filter, .ts-ovl.ts-ovl input.bib-filter, .je-such.je-such input.bib-filter, .bib-wrap.bib-wrap input.bib-filter, #art-ovl#art-ovl input.bib-filter, .be-ov.be-ov input.bib-filter, .es-wrap.es-wrap input.bib-filter, .art-wrap.art-wrap input.bib-filter, .ts-app.ts-app input.bib-filter, .tspro-ui.tspro-ui input.bib-filter.ro, .ts-dlg.ts-dlg input.bib-filter.ro, .ts-ovl.ts-ovl input.bib-filter.ro, .je-such.je-such input.bib-filter.ro, .bib-wrap.bib-wrap input.bib-filter.ro, #art-ovl#art-ovl input.bib-filter.ro, .be-ov.be-ov input.bib-filter.ro, .es-wrap.es-wrap input.bib-filter.ro, .art-wrap.art-wrap input.bib-filter.ro, .ts-app.ts-app input.bib-filter.ro, .tspro-ui.tspro-ui input.bib-filter[readonly], .ts-dlg.ts-dlg input.bib-filter[readonly], .ts-ovl.ts-ovl input.bib-filter[readonly], .je-such.je-such input.bib-filter[readonly], .bib-wrap.bib-wrap input.bib-filter[readonly], #art-ovl#art-ovl input.bib-filter[readonly], .be-ov.be-ov input.bib-filter[readonly], .es-wrap.es-wrap input.bib-filter[readonly], .art-wrap.art-wrap input.bib-filter[readonly], .ts-app.ts-app input.bib-filter[readonly], .tspro-ui.tspro-ui input.bib-filter:disabled, .ts-dlg.ts-dlg input.bib-filter:disabled, .ts-ovl.ts-ovl input.bib-filter:disabled, .je-such.je-such input.bib-filter:disabled, .bib-wrap.bib-wrap input.bib-filter:disabled, #art-ovl#art-ovl input.bib-filter:disabled, .be-ov.be-ov input.bib-filter:disabled, .es-wrap.es-wrap input.bib-filter:disabled, .art-wrap.art-wrap input.bib-filter:disabled, .ts-app.ts-app input.bib-filter:disabled, .tspro-ui.tspro-ui input[placeholder*="uchen"], .ts-dlg.ts-dlg input[placeholder*="uchen"], .ts-ovl.ts-ovl input[placeholder*="uchen"], .je-such.je-such input[placeholder*="uchen"], .bib-wrap.bib-wrap input[placeholder*="uchen"], #art-ovl#art-ovl input[placeholder*="uchen"], .be-ov.be-ov input[placeholder*="uchen"], .es-wrap.es-wrap input[placeholder*="uchen"], .art-wrap.art-wrap input[placeholder*="uchen"], .ts-app.ts-app input[placeholder*="uchen"], .tspro-ui.tspro-ui input[placeholder*="uchen"].ro, .ts-dlg.ts-dlg input[placeholder*="uchen"].ro, .ts-ovl.ts-ovl input[placeholder*="uchen"].ro, .je-such.je-such input[placeholder*="uchen"].ro, .bib-wrap.bib-wrap input[placeholder*="uchen"].ro, #art-ovl#art-ovl input[placeholder*="uchen"].ro, .be-ov.be-ov input[placeholder*="uchen"].ro, .es-wrap.es-wrap input[placeholder*="uchen"].ro, .art-wrap.art-wrap input[placeholder*="uchen"].ro, .ts-app.ts-app input[placeholder*="uchen"].ro, .tspro-ui.tspro-ui input[placeholder*="uchen"][readonly], .ts-dlg.ts-dlg input[placeholder*="uchen"][readonly], .ts-ovl.ts-ovl input[placeholder*="uchen"][readonly], .je-such.je-such input[placeholder*="uchen"][readonly], .bib-wrap.bib-wrap input[placeholder*="uchen"][readonly], #art-ovl#art-ovl input[placeholder*="uchen"][readonly], .be-ov.be-ov input[placeholder*="uchen"][readonly], .es-wrap.es-wrap input[placeholder*="uchen"][readonly], .art-wrap.art-wrap input[placeholder*="uchen"][readonly], .ts-app.ts-app input[placeholder*="uchen"][readonly], .tspro-ui.tspro-ui input[placeholder*="uchen"]:disabled, .ts-dlg.ts-dlg input[placeholder*="uchen"]:disabled, .ts-ovl.ts-ovl input[placeholder*="uchen"]:disabled, .je-such.je-such input[placeholder*="uchen"]:disabled, .bib-wrap.bib-wrap input[placeholder*="uchen"]:disabled, #art-ovl#art-ovl input[placeholder*="uchen"]:disabled, .be-ov.be-ov input[placeholder*="uchen"]:disabled, .es-wrap.es-wrap input[placeholder*="uchen"]:disabled, .art-wrap.art-wrap input[placeholder*="uchen"]:disabled, .ts-app.ts-app input[placeholder*="uchen"]:disabled, .tspro-ui.tspro-ui input[placeholder*="enthält"], .ts-dlg.ts-dlg input[placeholder*="enthält"], .ts-ovl.ts-ovl input[placeholder*="enthält"], .je-such.je-such input[placeholder*="enthält"], .bib-wrap.bib-wrap input[placeholder*="enthält"], #art-ovl#art-ovl input[placeholder*="enthält"], .be-ov.be-ov input[placeholder*="enthält"], .es-wrap.es-wrap input[placeholder*="enthält"], .art-wrap.art-wrap input[placeholder*="enthält"], .ts-app.ts-app input[placeholder*="enthält"], .tspro-ui.tspro-ui input[placeholder*="enthält"].ro, .ts-dlg.ts-dlg input[placeholder*="enthält"].ro, .ts-ovl.ts-ovl input[placeholder*="enthält"].ro, .je-such.je-such input[placeholder*="enthält"].ro, .bib-wrap.bib-wrap input[placeholder*="enthält"].ro, #art-ovl#art-ovl input[placeholder*="enthält"].ro, .be-ov.be-ov input[placeholder*="enthält"].ro, .es-wrap.es-wrap input[placeholder*="enthält"].ro, .art-wrap.art-wrap input[placeholder*="enthält"].ro, .ts-app.ts-app input[placeholder*="enthält"].ro, .tspro-ui.tspro-ui input[placeholder*="enthält"][readonly], .ts-dlg.ts-dlg input[placeholder*="enthält"][readonly], .ts-ovl.ts-ovl input[placeholder*="enthält"][readonly], .je-such.je-such input[placeholder*="enthält"][readonly], .bib-wrap.bib-wrap input[placeholder*="enthält"][readonly], #art-ovl#art-ovl input[placeholder*="enthält"][readonly], .be-ov.be-ov input[placeholder*="enthält"][readonly], .es-wrap.es-wrap input[placeholder*="enthält"][readonly], .art-wrap.art-wrap input[placeholder*="enthält"][readonly], .ts-app.ts-app input[placeholder*="enthält"][readonly], .tspro-ui.tspro-ui input[placeholder*="enthält"]:disabled, .ts-dlg.ts-dlg input[placeholder*="enthält"]:disabled, .ts-ovl.ts-ovl input[placeholder*="enthält"]:disabled, .je-such.je-such input[placeholder*="enthält"]:disabled, .bib-wrap.bib-wrap input[placeholder*="enthält"]:disabled, #art-ovl#art-ovl input[placeholder*="enthält"]:disabled, .be-ov.be-ov input[placeholder*="enthält"]:disabled, .es-wrap.es-wrap input[placeholder*="enthält"]:disabled, .art-wrap.art-wrap input[placeholder*="enthält"]:disabled, .ts-app.ts-app input[placeholder*="enthält"]:disabled, .tspro-ui.tspro-ui input[placeholder*="Suche"], .ts-dlg.ts-dlg input[placeholder*="Suche"], .ts-ovl.ts-ovl input[placeholder*="Suche"], .je-such.je-such input[placeholder*="Suche"], .bib-wrap.bib-wrap input[placeholder*="Suche"], #art-ovl#art-ovl input[placeholder*="Suche"], .be-ov.be-ov input[placeholder*="Suche"], .es-wrap.es-wrap input[placeholder*="Suche"], .art-wrap.art-wrap input[placeholder*="Suche"], .ts-app.ts-app input[placeholder*="Suche"], .tspro-ui.tspro-ui input[placeholder*="Suche"].ro, .ts-dlg.ts-dlg input[placeholder*="Suche"].ro, .ts-ovl.ts-ovl input[placeholder*="Suche"].ro, .je-such.je-such input[placeholder*="Suche"].ro, .bib-wrap.bib-wrap input[placeholder*="Suche"].ro, #art-ovl#art-ovl input[placeholder*="Suche"].ro, .be-ov.be-ov input[placeholder*="Suche"].ro, .es-wrap.es-wrap input[placeholder*="Suche"].ro, .art-wrap.art-wrap input[placeholder*="Suche"].ro, .ts-app.ts-app input[placeholder*="Suche"].ro, .tspro-ui.tspro-ui input[placeholder*="Suche"][readonly], .ts-dlg.ts-dlg input[placeholder*="Suche"][readonly], .ts-ovl.ts-ovl input[placeholder*="Suche"][readonly], .je-such.je-such input[placeholder*="Suche"][readonly], .bib-wrap.bib-wrap input[placeholder*="Suche"][readonly], #art-ovl#art-ovl input[placeholder*="Suche"][readonly], .be-ov.be-ov input[placeholder*="Suche"][readonly], .es-wrap.es-wrap input[placeholder*="Suche"][readonly], .art-wrap.art-wrap input[placeholder*="Suche"][readonly], .ts-app.ts-app input[placeholder*="Suche"][readonly], .tspro-ui.tspro-ui input[placeholder*="Suche"]:disabled, .ts-dlg.ts-dlg input[placeholder*="Suche"]:disabled, .ts-ovl.ts-ovl input[placeholder*="Suche"]:disabled, .je-such.je-such input[placeholder*="Suche"]:disabled, .bib-wrap.bib-wrap input[placeholder*="Suche"]:disabled, #art-ovl#art-ovl input[placeholder*="Suche"]:disabled, .be-ov.be-ov input[placeholder*="Suche"]:disabled, .es-wrap.es-wrap input[placeholder*="Suche"]:disabled, .art-wrap.art-wrap input[placeholder*="Suche"]:disabled, .ts-app.ts-app input[placeholder*="Suche"]:disabled, .tspro-ui.tspro-ui input[placeholder*="🔍"], .ts-dlg.ts-dlg input[placeholder*="🔍"], .ts-ovl.ts-ovl input[placeholder*="🔍"], .je-such.je-such input[placeholder*="🔍"], .bib-wrap.bib-wrap input[placeholder*="🔍"], #art-ovl#art-ovl input[placeholder*="🔍"], .be-ov.be-ov input[placeholder*="🔍"], .es-wrap.es-wrap input[placeholder*="🔍"], .art-wrap.art-wrap input[placeholder*="🔍"], .ts-app.ts-app input[placeholder*="🔍"], .tspro-ui.tspro-ui input[placeholder*="🔍"].ro, .ts-dlg.ts-dlg input[placeholder*="🔍"].ro, .ts-ovl.ts-ovl input[placeholder*="🔍"].ro, .je-such.je-such input[placeholder*="🔍"].ro, .bib-wrap.bib-wrap input[placeholder*="🔍"].ro, #art-ovl#art-ovl input[placeholder*="🔍"].ro, .be-ov.be-ov input[placeholder*="🔍"].ro, .es-wrap.es-wrap input[placeholder*="🔍"].ro, .art-wrap.art-wrap input[placeholder*="🔍"].ro, .ts-app.ts-app input[placeholder*="🔍"].ro, .tspro-ui.tspro-ui input[placeholder*="🔍"][readonly], .ts-dlg.ts-dlg input[placeholder*="🔍"][readonly], .ts-ovl.ts-ovl input[placeholder*="🔍"][readonly], .je-such.je-such input[placeholder*="🔍"][readonly], .bib-wrap.bib-wrap input[placeholder*="🔍"][readonly], #art-ovl#art-ovl input[placeholder*="🔍"][readonly], .be-ov.be-ov input[placeholder*="🔍"][readonly], .es-wrap.es-wrap input[placeholder*="🔍"][readonly], .art-wrap.art-wrap input[placeholder*="🔍"][readonly], .ts-app.ts-app input[placeholder*="🔍"][readonly], .tspro-ui.tspro-ui input[placeholder*="🔍"]:disabled, .ts-dlg.ts-dlg input[placeholder*="🔍"]:disabled, .ts-ovl.ts-ovl input[placeholder*="🔍"]:disabled, .je-such.je-such input[placeholder*="🔍"]:disabled, .bib-wrap.bib-wrap input[placeholder*="🔍"]:disabled, #art-ovl#art-ovl input[placeholder*="🔍"]:disabled, .be-ov.be-ov input[placeholder*="🔍"]:disabled, .es-wrap.es-wrap input[placeholder*="🔍"]:disabled, .art-wrap.art-wrap input[placeholder*="🔍"]:disabled, .ts-app.ts-app input[placeholder*="🔍"]:disabled {
  background-image: var(--ts-lupe); background-repeat: no-repeat; background-position: right var(--ds-s) center; background-size: var(--ts-feldsymbol) var(--ts-feldsymbol);
  padding-right: var(--ds-xl);
}
/* ▸N1371 §1351 §1348d */
.tbl-box thead th, .art-wrap .tbl-box thead th, .her-wrap .tbl-box thead th { z-index: 2; }

} /* Ende @layer bausteine */
/* ▸§1359 zustaende: Modus (im-edit) und Meldung (.ok/.warn/.is-) — liegen UEBER bausteine */
/* ▸§1372 Schicht schweben: Hover/Fokus (125 Regeln aus bestand) — ueber bausteine/module, UNTER zustaende: Auswahl, Gesperrt, Modus schlagen Hover unabhaengig von Spezifitaet */
@layer schweben {

.ts-ovl .ass-row:hover      { background-color: var(--ts-field-focus); }

.tspro-ui .fil-tile:hover      { transform: translateX(4px); background-color: var(--ts-flaeche); border-color: var(--ts-line-hover); }

.tspro-ui .fil-tile:active     { transform: translateX(2px) scale(.99); background-color: var(--ds-auswahl); }

.tspro-ui .fil-field:focus     { outline: none; border-color: var(--ts-panel-bd); }
   /* §1259: 7px -> Radius-Token */

.tspro-ui .obtn:hover { background-color: var(--ts-flaeche); border-color: var(--ts-line-hover); }

.tspro-ui .obtn.danger:hover { background-color: var(--ts-red-dark); border-color: var(--ts-red-dark); }

:is(.ts-dlg, .bc-main :where(.fen)) .obtn:hover, .be-ov .obtn:hover { background-color: var(--ts-field-ro); }

.tspro-ui .fbtn:hover { background-color: var(--ts-flaeche); }

.tspro-ui .v.hpick:hover { background-color: var(--ts-field-focus); }

.tspro-ui .such-bar .obtn:hover { background-color: var(--ts-field-ro); border-color: var(--such-bd-h); }

.art-wrap .obtn:hover { background-color: var(--ts-flaeche); border-color: var(--ts-line-hover); }

.art-wrap .obtn.danger:hover { background-color: var(--ts-red-dark); border-color: var(--ts-red-dark); }
   /* 03.08.: Kopf nicht rechts (Jörg) */
.be-ov .be-tbl tr:hover:not(.sel) td, .tspro-ui .be-tbl tr:hover:not(.sel) td, .ts-dlg .be-tbl tr:hover:not(.sel) td, .bib-wrap .be-tbl tr:hover:not(.sel) td, #art-ovl .be-tbl tr:hover:not(.sel) td {   /* ▸N179 §823 */ background-color: var(--ts-hover-bg); }

.be-wrap .fz-ta textarea.v:not(:disabled):hover,
.be-wrap .fz-ta textarea.v:not(:disabled):focus { background-color: var(--ts-field-focus); }

.bhk-wrap td.bhk-sk-zelle:hover, .be-wrap td.ma-sk-zelle:hover { background-color: var(--ts-field-focus); }

#m-wiz .adm-btn:hover {filter:brightness(.97)}

#m-wiz .tbl tr:hover:not(.sel) td {background-color:var(--ts-hover-bg);cursor:pointer}

.be-ov   .js-fbtn:hover:not(:disabled),
.je-such .js-fbtn:hover {background-color:var(--such-hover);border-color:var(--such-bd-h)}


.es-wrap .obtn:hover    { background-color: var(--ts-flaeche); border-color: var(--ts-line-hover); }

.tspro-ui .dv-right .obtn:hover    { background-color: var(--ts-flaeche); border-color: var(--ts-line-hover); }

.kt-wrap .kt-tgl:hover { color: var(--ts-akzent); }

.kt-wrap table.kt-tbl tr.kt-lvl1:hover:not(.sel) td { background-color: var(--ts-hover-bg); }

.kt-wrap .zu-caret:hover { color: var(--ts-akzent); }

.bib-wrap table.be-tbl tr.bib-lvl1:hover:not(.sel) td { background-color: var(--ts-hover-bg); }

.bib-wrap .bib-tgl:hover { color: var(--ts-akzent); }

.bib-wrap .obtn.danger:hover { background-color: var(--ts-red-dark); border-color: var(--ts-red-dark); }

.bib-wrap .mv button:hover { background-color: var(--ts-field-ro); }

.bib-wrap .xbtn:hover { background-color: var(--ts-meld-err-bg); }.bib-wrap .obtn:hover { border-color: var(--ts-line-hover); background-color: var(--ts-field-ro); }

.bib-wrap .bib-tab:not(.on):hover { opacity: 1; }

.bib-wrap .zu-caret:hover { color: var(--ts-akzent); }

/* ▸N292 */
.bib-wrap .bib-link:hover { color: var(--ts-akzent); text-decoration: none; }   /* §4230 */

.bib-wrap .bib-headbtn:hover { opacity: 1; background-color: rgba(255,255,255,.12); }
   /* ▸N294 §611c */
#art-ovl .obtn:hover { background-color: var(--ts-field-ro); }


/* ▸N300 */

/* ▸N301 */
.bib-wrap .bib-filter:focus { outline: none; }

#art-ovl .eig-grid .cmb-box:focus-within { border-color: var(--ts-panel-bd); }

#art-ovl .cmb-chip-x:hover { color: var(--ts-red); }

#msg-ovl .msg-text input[type="text"]:hover,
#msg-ovl .msg-text input[type="text"]:focus {
  outline: none; background-color: var(--ts-field-focus);   /* §698 */
  border-color: var(--such-bd-h);
}

.eco-doclink:hover { text-decoration: none; }   /* §4230 */

.bhk-ecolink:hover { text-decoration: none; }   /* §4230 */

.tspro-ui .ma-help-btn:hover { background-color: var(--ts-flaeche); border-color: var(--ts-line-hover); }

:is(.ts-dlg, .bc-main :where(.fen)) .obtn:hover:not(:disabled) { background-color: var(--such-hover); border-color: var(--such-bd-h); }

.ts-dlg .snedit:hover { background-color: var(--such-hover); border-color: var(--such-bd-h); }
   /* ▸N408 §781 §713 */
.ts-dlg .lgp-klick tbody tr:hover:not(.sel) { background-color: var(--such-hover); }

/* §4191 Hover der Verweise: zentral in der Regel „STILLER SPRUNG“ (Ende der Datei) */

.ts-dlg-box .b input:where(:not([type="checkbox"]):not([type="radio"])):hover,
.ts-dlg-box .b input:where(:not([type="checkbox"]):not([type="radio"])):focus {
  outline: none; background-color: var(--ts-field-focus);   /* §698 */
  border-color: var(--such-bd-h); }

.ts-dlg-box .f button:hover:not(:disabled), .km-ov .km-btn:hover:not(:disabled), .bzq-box .dlg-fuss button:hover:not(:disabled) { background-color: var(--ts-flaeche); border-color: var(--ts-line-hover); }   /* §3299 */

.ts-dlg select:hover:not(:disabled),
.ts-dlg select:focus:not(:disabled) { background-color: var(--ts-field-focus); }

.be-box .ovl-mj select:focus { outline: none; }


/* ▸N439 */
/* §824: Hand an Lagerprotokoll-Zeilen entfernt */
.tspro-ui tr.lg-row:hover  { background-color: var(--ts-hover-bg); }

.je-such .lb-fbtn:hover:not(:disabled), .be-ov .lb-fbtn:hover:not(:disabled) { background-color: var(--ts-flaeche); border-color: var(--ts-line-hover); }

.be-ov .js-such input:focus { outline: none; border-color: var(--such-bd-h); }

.be-ov .js-kachel .obtn:hover:not(:disabled) { background-color: var(--such-hover); border-color: var(--such-bd-h); }

.be-ov tr.js-row:hover { background-color: var(--such-hover); }

.je-such .js-such input:focus { outline: none; border-color: var(--such-bd-h); }

.je-such .js-kachel .obtn:hover:not(:disabled) { background-color: var(--such-hover); border-color: var(--such-bd-h); }

.je-such tr.js-row:hover { background-color: var(--such-hover); }

.je-such a.bm-shop:hover,
.je-such a.bm-shop:focus       { color: var(--ts-akzent-dark); text-decoration: underline; }
   /* 25.07.: 600 fehlte — einziger obtn ohne Hausgewicht */
.ts-ovl .obtn:hover, .be-ov .obtn:hover, .ts-memo-ov .obtn:hover { background-color: var(--ts-flaeche); border-color: var(--ts-line-hover); }

.tspro-ui td input.ts-memofeld:hover{border-color:var(--ts-panel-bd);
  background-color:var(--such-hover)}


/* ▸N507 */
.tspro-ui input:not([type="checkbox"]):not([type="radio"]):not([readonly]):not(:disabled):hover,
.tspro-ui textarea:not([readonly]):not(:disabled):hover,
.tspro-ui select:not(:disabled):hover,
.tspro-ui input:not([type="checkbox"]):not([type="radio"]):not([readonly]):not(:disabled):focus,
.tspro-ui textarea:not([readonly]):not(:disabled):focus,
.tspro-ui select:not(:disabled):focus,
.je-such input:not([type="checkbox"]):not([readonly]):focus,
.je-such textarea:focus,
.je-such select:focus,
.be-ov  input:not([type="checkbox"]):not([readonly]):focus,
.be-ov  textarea:focus,
.be-ov  select:focus,
.ts-ovl input:not([type="checkbox"]):not([readonly]):focus,
.ts-ovl textarea:focus,
.ts-memo-txt:focus{background-color:var(--ts-field-focus); outline:none}
   /* §698 */

/* ▸N508 §698b §698 */
.tspro-ui input:focus, .tspro-ui select:focus, .tspro-ui textarea:focus,
.ts-dlg input:focus, .ts-dlg select:focus, .ts-dlg textarea:focus,
.ts-ovl input:focus, .ts-ovl select:focus, .ts-ovl textarea:focus,
.be-ov input:focus, .be-ov select:focus, .be-ov textarea:focus,
.je-such input:focus, .je-such select:focus, .je-such textarea:focus,
.ts-memo-ov input:focus, .ts-memo-ov textarea:focus,
#msg-ovl input:focus, #pdf-ovl input:focus,
/* ▸N509 §698c §698b */
[contenteditable="true"]:focus { outline: none; }


/* ▸N510 */
.pd-rows input:enabled:hover,   /* §630: #e_tbody-Arme entfernt (tot seit §276) */
.pd-rows input:enabled:focus,
.je-such input:not([type="checkbox"]):not([readonly]):not(:disabled):hover,
.je-such textarea:not(:disabled):hover,
.je-such select:not(:disabled):hover,
.be-ov  input:not([type="checkbox"]):not([readonly]):not(:disabled):hover,
.be-ov  textarea:not(:disabled):hover,
.be-ov  select:not(:disabled):hover,
.ts-ovl input:not([type="checkbox"]):not([readonly]):not(:disabled):hover,
.ts-ovl textarea:not(:disabled):hover { background-color: var(--ts-field-focus); }
   /* ▸N523 §781 §713 */
#m-wiz .wz-lw tbody tr:hover:not(.sel) td{background-color:var(--such-hover)}

.eg-cb-list .eg-cb-it:hover{background-color:var(--ts-flaeche)}

   /* ▸N539 §705 */
#w7-eigbox td .eg-inline:focus{border-color:var(--ts-panel-bd)}
   /* Auswahl-Hellton zum Akzent (06.08.) */
.kt-wrap table.kt-tbl tr:hover:not(.sel) td { background-color: var(--ts-hover-bg); }

.tspro-ui .kbtn:hover:not(:disabled){ background-color:var(--ts-flaeche); }


/* ▸N609 */
.tspro-ui tr[data-fuell]:hover td, .je-such tr[data-fuell]:hover td,
.be-ov tr[data-fuell]:hover td, .ts-dlg tr[data-fuell]:hover td,
.ts-ovl tr[data-fuell]:hover td { background-color: transparent; cursor: default; }

/* ▸N622 §705 §698 */
.tspro-ui.tspro-ui tbody td > input:not([type=checkbox]):not([type=radio]):focus,
.tspro-ui.tspro-ui tbody td > select:focus,
.tspro-ui.tspro-ui tbody td > .eg-cb > input:focus, .ts-dlg.ts-dlg tbody td > .eg-cb > input:focus,
.je-such.je-such tbody td > input:not([type=checkbox]):not([type=radio]):focus { border: 1px solid var(--ts-panel-bd); }

/* ▸N624 §648r */
.tspro-ui.tspro-ui tbody td > input:not([disabled]):not([type=checkbox]):not([type=radio]):hover,
.tspro-ui.tspro-ui tbody td > input:not([disabled]):not([type=checkbox]):not([type=radio]):focus,
.tspro-ui.tspro-ui tbody td > select:not([disabled]):focus {
  background-color: var(--ts-field-focus); outline: none;   /* §698 */
}

.je-such .js-kachel select:hover{ background-color:var(--such-hover); border-color:var(--such-bd-h); }

.je-such .js-kachel select:focus{ outline:none; border-color:var(--such-bd-h); }

.tspro-ui .obtn.fakbtn.off:hover:not(:disabled){ background-color:var(--ts-red); border-color:var(--ts-red); }

.tspro-ui .obtn.fakbtn.on:hover:not(:disabled){ background-color:var(--ts-meld-ok-fg); border-color:var(--ts-meld-ok-fg); }

.ts-dlg .bz-lbtn:hover{ background-color:var(--ts-flaeche); border-color:var(--ts-line-hover); }

.ts-dlg .bz-feld:hover, .ts-dlg .bz-feld:focus{ background-color:var(--ts-field-focus); outline:none; }

.bzq-body input:hover, .bzq-body input:focus{ background-color:var(--ts-field-focus); outline:none; }
   /* ▸N701 */
/* ▸N702 §698 */
input.v:focus, select.v:focus, textarea.v:focus { outline: none; }
   /* ▸N708 §705 §692 */
.tbl-box tbody td input:not([type="checkbox"]):not([type="radio"]):focus { border-color: var(--ts-panel-bd); }

.be-srch-list .it:hover { background-color: var(--ts-flaeche); }

.ts-dlg .eco-abgleich tr.eco-row:hover td{ background-color: var(--ts-hover-bg); }

.ecopdf-abtn:hover{ border-color:var(--ts-akzent); color:var(--ts-akzent); }

.tspro-ui .ma-tab:hover:not(.active), .es-wrap .ma-tab:hover:not(.active), .ts-dlg .ma-tab:hover:not(.active) { background-color: var(--ts-flaeche); }

.tspro-ui .lg-apply:hover { background-color: var(--ts-field-ro); color: var(--ts-ink); }

[class$="-head"] [class$="-x"]:hover { opacity: 1; }

/* ▸N863 */
.je-such .js-fgrp > .js-fbtn.js-krit > .js-kx:hover
                             { opacity:1; color: var(--ts-red) }

.je-such .js-kk-filter:focus { outline:none; background-color: var(--ts-field-focus) }

.je-such .js-kk-it:hover     { background-color: var(--such-hover) }
.lg-apply:hover { background-color: var(--ts-akzent-dark); }
/* §682 */.da-btn:hover:not(:disabled) { filter:brightness(1.06); }

.m-datenabgleich .da-ch .obtn:hover { background-color:rgba(255,255,255,.14); border-color:rgba(255,255,255,.45); }
.es-save:hover { filter: brightness(1.08); }
/* §824: Hand an Benutzerzeilen (einstellungen) entfernt */.es-utable tr[data-u]:hover td { background-color:var(--ts-hover-bg); }
.es-ubtn:hover { background-color:var(--ts-field-ro); }
.es-ubtn.prim:hover { background-color:var(--ts-akzent); }

.m-einstellungen .es-toc-t:hover { background-color: var(--ts-field-focus); }

.m-einstellungen .es-toc-kb:hover { background-color: var(--ts-field-focus); color: var(--ts-ink); }

.es-syscopy:hover{border-color:var(--ts-akzent);color:var(--ts-akzent)}

.ts-ts-nav:hover{ background-color:var(--ts-flaeche); }

.ts-ts-tab td button:hover{ background-color:var(--ts-flaeche); }

.ts-ts-btn:hover{ background-color:var(--ts-flaeche); }

.ts-ts-btn.heute:hover{ background-color:var(--ts-akzent-dark); border-color:var(--ts-akzent-dark); }

.ts-ts-tab td button.aus:hover,
.ts-ts-tab td button:disabled:hover{ background-color:var(--ts-dis-bg); }

.ts-dlg .es-kette-scroll .es-kette-tab tr:hover:not(.sel) td{background-color:var(--ts-hover-bg)}
   /* ▸N1236 §679b §667 */



/* ▸N1303 §825 */
.tspro-ui .tbl-box tbody tr:hover:not(.sel):not([data-fuell]) td { background-color: var(--ts-hover-bg); }

.ts-x:hover { opacity: 1; }

.tspro-ui .obtn.dark:hover, .art-wrap .obtn.dark:hover, .es-wrap .obtn.dark:hover, .bib-wrap .obtn.dark:hover,
.ts-ovl .obtn.dark:hover, .be-ov .obtn.dark:hover, .ts-memo-ov .obtn.dark:hover, .je-such .obtn.dark:hover { background-color: var(--ts-ink-hover); border-color: var(--ts-ink); }

.app-bar .hd-assist:hover { background-color: rgba(255,255,255,.15); }

.app-bar .logout:hover { background-color: rgba(255,255,255,.15); }

.app-bar .user-btn:hover { background-color: rgba(255,255,255,.15); }

.app-bar .up-row input:focus { outline: none; border-color: var(--ts-panel-bd); }

.app-bar .up-save:hover { background-color: var(--ts-akzent-dark); }

body.ts-anmeldung input:focus { border-color: var(--ts-ink-muted); }

body.ts-anmeldung button:hover { background-color: var(--ts-akzent-dark); }

body.ts-anmeldung button.neben:hover { background-color: var(--ts-shell-bg); }
   /* §1262 (S3) */   /* Kachel eines Moduls, das es noch nicht gibt */
body.ts-app .tspro-ui .fil-tile:disabled:hover { transform: none; background-color: var(--ts-panel-bg); border-color: var(--ts-line); }

.ts-dlg.bka .bka-kz:hover  { background-color: var(--ts-hover-bg); }

.bk-modern .bk-tab tbody tr:hover td { background-color: var(--ts-hover-bg); }
   /* ▸N1335 §667 */
.ts-dlg-box:has(.bk-modern) #ovl_f .obtn#bk_a_alle:not(:disabled):hover, .ts-dlg-box:has(.bk-modern) #ovl2_f .obtn#bk_a_alle:not(:disabled):hover
                                                  { background-color: var(--ts-akzent-dark); border-color: var(--ts-akzent-dark); }

/* ▸§1372 Ende schweben */
}

@layer zustaende {
/* ▸§1385 Grundregeln mit Vorrang (vorher !important in bestand, §1383) — gelten ueber module/schweben, unter den Zustaenden */
/* ▸§3769 KOPFZEILEN EINZEILIG (Joerg 29.10. 01:19, K-425 (6)/K-426 (2)): Kachel-, Fenster- und Optionenkoepfe brechen nie um — zu langer Text endet mit „…“, Volltext steht im Tooltip (title setzt das Modul). Lint „kopf“ in layout_messen misst es. */
.tspro-ui .fil-sec-head, .tspro-ui .opt-head, .ts-dlg-box > .h > span:first-child { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
/* ▸§3866 (Jörg 30.10. 00:48: „in ganz vielen Masken überdeckt die Kachel die Kopfzeile“): overflow:hidden (§3769) nimmt einem Flex-Kind die
   Mindesthöhe (min-height:auto → 0) — in Kacheln mit flex-direction:column und vollem Inhalt schrumpfte der Kopf (TeamViewer: 20,5 statt 27 px). Kopf schrumpft nie. */
.fil-sec-head, .opt-head, .ts-dlg-box > .h { flex-shrink: 0; }   /* ohne .tspro-ui: auch Dialogkacheln (.ts-dlg-box .b .fil-sec ist Flex-Spalte, Z. 2570) */
.tspro-ui .fil-sec-head > span[id$="-status-txt"], .tspro-ui .fil-sec-head > .ts-status-txt { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block; max-width: 100%; vertical-align: bottom; }
.tspro-ui .fil-sec-head:has(> span[id$="-status-txt"]) > span[id$="-status-txt"] {
    font-size: var(--ts-head-fs);
    font-weight: var(--ts-head-fw);   /* wie ein Kopf, nicht wie ein Zusatz */
    opacity: 1;
    margin-left: 0;                    /* Einzug entfaellt mit dem Titel */
}
/* ▸N371 */
.tspro-ui .opt-sep, .art-wrap .opt-sep, .bib-wrap .opt-sep,
.es-wrap .opt-sep { display: none; }
/* ▸N588 K-45 */
.tspro-ui input[type="checkbox"], .tspro-ui input[type="radio"],
.je-such input[type="checkbox"], .je-such input[type="radio"],
.be-ov  input[type="checkbox"], .be-ov  input[type="radio"],
.ts-dlg input[type="checkbox"], .ts-dlg input[type="radio"],
.ts-ovl input[type="checkbox"], .ts-ovl input[type="radio"],
#art-ovl input[type="checkbox"],
#wa-ovl input[type="checkbox"], #m-wiz input[type="checkbox"]{
  width:15px; height:15px;
  min-width:0; min-height:0;
  padding:0; margin:0 4px 0 0;
  box-sizing:border-box; border-radius:2px;
}
/* 🗑  rechnung: ecCash-Zeile loeschen (Button ohne id) */

/* ▸N773 */
/* ▸N774 */
.tspro-ui th:not(.r):not(.num), .art-wrap th:not(.r):not(.num),
.bib-wrap th:not(.r):not(.num), .es-wrap th:not(.r):not(.num),
.be-ov th:not(.r):not(.num), .ts-ovl th:not(.r):not(.num),
.ts-dlg th:not(.r):not(.num), .je-such th:not(.r):not(.num),
#m-wiz th:not(.r):not(.num) { text-align: left; }
/* ▸N775 */

/* ▸N776 */
.be-ov th.ctr, .be-ov td.ctr,
.je-such th.ctr, .je-such td.ctr,
.tspro-ui th.ctr, .tspro-ui td.ctr { text-align: center; }
/* ▸N902 */
/* ▸N903 */
.je-such th.num,
.je-such th.r,
.je-such .as-tbl th[data-sort="ek"], .je-such .as-tbl th[data-sort="vk"],
.je-such .as-tbl th[data-sort="la"], .je-such .as-tbl th[data-sort="ar"],
.je-such .as-tbl th[data-sort="ab"], .je-such .as-tbl th[data-sort="vf"] {   /* §630: .js-pos-Positionsarme entfernt (th.num Z.~5886) */
  text-align: center;
}
/* ▸N996 R-7.7 R-1.5 */
.tspro-ui thead th, .art-wrap thead th, .bib-wrap thead th, .es-wrap thead th,
.ts-dlg thead th, .ts-ovl thead th, .be-ov thead th, .je-such thead th,
#m-wiz thead th, #bel_tbl thead th {
  min-width: max-content;
  overflow: visible;
  text-overflow: clip;
}

/* ▸§1364 zustaende: Auswahl (.sel .on .aktiv .active :checked) — ZUERST, damit gesperrt (danach) bei Gleichstand gewinnt: gesperrt ist grau, auch wenn aktiv (§1347) */

.ts-ovl.ts-ma-overlay.on   { display: flex; }

.tspro-ui .fbtn.aktiv { background: var(--ts-ink); color: var(--ts-sec-fg); border-color: var(--ts-ink); }

.tspro-ui .such-bar .obtn.tag.on { background: var(--ts-ink); color: var(--ts-sec-fg); border-color: var(--ts-ink); }

.be-wrap .bel-fbtn.on { background: var(--ts-ink); color: var(--ts-sec-fg); border-color: var(--ts-ink); }

.ma-wrap .ma-pane.on { display: block; }



#m-wiz .tbl tr.sel td {background:var(--ds-auswahl);color:var(--ts-akzent);font-weight:700}

.be-ov   .js-fbtn.on,
.je-such .js-fbtn.on {background:var(--ts-ink);color:var(--ts-sec-fg);border-color:var(--ts-ink)}

#m-pechart .pec-grp button.on {background:var(--ts-ink);color:var(--ts-sec-fg);border-color:var(--ts-ink)}

.kt-wrap table.kt-tbl tr.kt-lvl1.sel td { background: var(--ts-meld-err-bg); }

/* ▸N273 */
/* ▸N274 §781 §713 */
/* §824: Hand an Bibliothekszeilen entfernt */
.bib-wrap table.be-tbl tr.sel td { background: var(--ds-auswahl); }

.bib-wrap table.be-tbl tr.bib-lvl1.sel td { background: var(--ts-meld-err-bg); }

/* ▸N275 §814 */
.bib-wrap .bib-view#v_leer.on { display: flex; flex: 1 1 auto; align-items: center; justify-content: center; }

/* ▸N284 */
/* ▸N285 */
.bib-wrap .bib-view.on { display: flex; flex-direction: column; min-height: 0; }

.bib-wrap .bib-view.on > .fil-sec { flex: 0 0 auto; }

/* ▸N286 §269 */
.bib-wrap .bib-view.on > .fil-sec.bib-sub-sec { flex: 1 1 auto; min-height: 0;
           display: flex; flex-direction: column; margin-bottom: 0;
           max-width: 460px; }

.bib-wrap .bib-tab.on { background: var(--ts-panel-bg); color: var(--ts-ink); opacity: 1;
            border-color: var(--ts-sec-fg); cursor: default; }

#art-ovl table.be-tbl tr.sel, #art-ovl table.be-tbl tr.sel td { background: var(--ds-auswahl); }

.bhk-tblwrap tr.sel td { background: var(--ds-auswahl); }

#vs-pop.on, #ad-ew-pop.on, #ts-aw-pop.on { display: block; }
/* §4707 HAUSEIGENE AUSWAHLLISTE (api.js): ersetzt das aufgeklappte Browser-/macOS-Menü JEDES einzeiligen <select> — Optik wie #vs-pop, über allen Dialogebenen */
#ts-aw-pop { z-index: var(--ts-aw-z); max-height: var(--ts-aw-max-h); }
#vs-pop, #ad-ew-pop { z-index: var(--ts-aw-z); }   /* §4735 (Jörg 08.11. 14:00 Service-Position im Auftrag-Fenster aus dem Assistenten): Vorschlagsliste lag mit 9600 HINTER Dialogen der oberen Ebenen (ovl2/ovl3 bis 10605) — wie die Auswahlliste über allen Ebenen */
#ts-aw-pop .ts-aw-opt { padding: 5px 10px; font-size: 12.5px; color: var(--ts-ink); cursor: pointer; white-space: nowrap; min-height: 1.2em; }
#ts-aw-pop .ts-aw-opt.hi { background-color: var(--ts-field-ro); }
#ts-aw-pop .ts-aw-opt.gew { font-weight: 600; }
#ts-aw-pop .ts-aw-opt.aus { color: var(--ts-ink-muted); cursor: default; }
#ts-aw-pop .ts-aw-gruppe { padding: 6px 10px 2px; font-size: var(--ds-fs-hinweis); font-weight: 700; color: var(--ts-ink-muted); }
/* §4608 Einsatzort-Auswahl im Außendienst (comcenter/seiten/aussendienst.js ewAuf): gleiche Fensteroptik wie #vs-pop, Eintraege zweizeilig */
#ad-ew-pop { max-height: 360px; padding-bottom: 0; }
#ad-ew-pop .ad-ew-kopf { position: sticky; top: 0; padding: 6px 10px; font-size: var(--ds-fs-hinweis); font-weight: 700; color: var(--ts-ink); background: var(--ts-panel-bg); border-bottom: 1px solid var(--ds-trennlinie); }
#ad-ew-pop .ad-ew-kopf span { font-weight: 400; color: var(--ts-ink-muted); }
#ad-ew-pop .ad-ew-opt { display: block; padding: 5px 10px; font-size: 12.5px; color: var(--ts-ink); cursor: pointer; }
#ad-ew-pop .ad-ew-opt + .ad-ew-opt { border-top: 1px solid var(--ds-trennlinie); }
#ad-ew-pop .ad-ew-opt:hover, #ad-ew-pop .ad-ew-opt.hi { background-color: var(--ts-field-ro); }
#ad-ew-pop .ad-ew-opt.gew { font-weight: 600; }
#ad-ew-pop .ad-ew-z1, #ad-ew-pop .ad-ew-z2 { display: flex; justify-content: space-between; gap: var(--ds-m); white-space: nowrap; }
#ad-ew-pop .ad-ew-z1 > span:first-child, #ad-ew-pop .ad-ew-z2 > span:first-child { overflow: hidden; text-overflow: ellipsis; }
#ad-ew-pop .ad-ew-z2 { font-size: var(--ds-fs-hinweis); font-weight: 400; color: var(--ts-ink-muted); }
#ad-ew-pop .ad-ew-grund { flex: 0 0 auto; font-size: var(--ds-fs-hinweis); font-weight: 400; color: var(--ts-ink-muted); }
#ad-ew-pop .ad-ew-rk { flex: 0 0 auto; color: var(--ts-akzent); }
#ad-ew-pop .ad-ew-fuss { position: sticky; bottom: 0; display: flex; justify-content: space-between; gap: var(--ds-s); padding: var(--ds-s) 10px; background: var(--ts-panel-bg); border-top: 1px solid var(--ts-line); }   /* §4705 Standardknöpfe .obtn statt grauer Textflächen */
/* §4704 (Jörg 07.11. 21:14) Assistent „Termin abrechnen“: Einsatzort/Rechnung an als hauseigene Auswahl — Knopf wie in der Terminliste, Fenster #ad-ew-pop */
.ad-ew-knopf.ad-dd { display: flex; align-items: center; gap: var(--ds-xs); width: 100%; height: var(--ds-feld); box-sizing: border-box; text-align: left; cursor: pointer; }
.ad-ew-knopf.ad-dd:disabled { cursor: default; }
.ad-ew-knopf.ad-dd .ad-ew-text { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ad-ew-knopf.ad-dd .ad-ew-pfeil { flex: 0 0 auto; color: var(--ts-ink-muted); }
.m-komm #adTab select.ad-ew-sel { display: none; }
.m-komm .ad-art-auto { font-style: italic; }   /* §4703 Terminart automatisch erkannt (statt „ ·a“), Legende in der Statuszeile */
/* §4606-Regeln (Terminart 104 / Einsatzort min 220) standen hier in der Schicht „zustaende“ und verloren gegen die schichtlose Regel .sp-kennung 142 (gemessen 07.11.) —
   ersetzt durch den Spaltenplan §4613 weiter unten (ohne Schicht) */
.m-komm #adTab .ad-ew-knopf { display: flex; align-items: center; gap: var(--ds-xs); width: 100%; height: calc(var(--ts-tab-td-h) - 1px); min-height: 0; box-sizing: border-box; text-align: left; cursor: pointer; }
.m-komm #adTab .ad-ew-knopf:disabled { cursor: default; }
.m-komm #adTab .ad-ew-text { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-komm #adTab .ad-ew-pfeil { flex: 0 0 auto; color: var(--ts-ink-muted); }

.ts-dlg.on { display: flex; }

.bcb-it.sel { background: var(--such-sel); }

.tspro-ui tr.lg-row.sel    { background: var(--ds-auswahl); box-shadow: inset 3px 0 0 var(--ts-ink); }

.tspro-ui tr.lg-row.sel td { font-weight: 600; }

.je-such .lb-fbtn.on, .be-ov .lb-fbtn.on    { background: var(--ts-ink); color: var(--ts-sec-fg);
                        border-color: var(--ts-ink); font-weight: 600; }

.be-ov .lb-fbtn.on b  { opacity: .8; }

.je-tip.on { display: block; }

.be-ov tr.js-row.sel   { background: var(--such-sel); box-shadow: inset 3px 0 0 var(--ts-ink); }

.je-such tr.js-row.sel   { background: var(--such-sel); box-shadow: inset 3px 0 0 var(--ts-ink); }
/* §4189 Mehrfachauswahl (Artikelauswahl, cfg.mehrfach): markierte Zeilen hellblau mit Akzent-Balken; Cursor auf markierter Zeile = Balken blau + dünner Rahmen */
.je-such tr.js-row.mehr     { background: var(--ts-meld-info-bg); box-shadow: inset 3px 0 0 var(--ts-akzent); }
.je-such tr.js-row.mehr.sel { box-shadow: inset 3px 0 0 var(--ts-akzent), inset 0 0 0 1px var(--ts-ink); }

#m-wiz .wz-lw tbody tr.sel td{background:var(--ds-auswahl)}

.je-such.asaus .as-tbl tr.as-nlief.sel td { color: var(--ts-ink); }

/* ▸N576 §824 */
.kt-wrap table.kt-tbl tr.sel,
.kt-wrap table.kt-tbl tr.sel td { background: var(--ds-auswahl); }

.kt-wrap table.kt-tbl tr.eig-geerbt.sel td { background: var(--ds-auswahl); }

.kt-wrap .flag.on { color: var(--ts-ok); }

.tspro-ui input[type="checkbox"]:checked, .tspro-ui input[type="radio"]:checked,
.je-such input[type="checkbox"]:checked, .je-such input[type="radio"]:checked,
.be-ov  input[type="checkbox"]:checked, .be-ov  input[type="radio"]:checked,
.ts-dlg input[type="checkbox"]:checked, .ts-dlg input[type="radio"]:checked,
.ts-ovl input[type="checkbox"]:checked, .ts-ovl input[type="radio"]:checked{
  background:var(--ts-ink) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M3.5 8.5l3 3 6-6.5" fill="none" stroke="white" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>') center/12px 12px no-repeat;
  border-color:var(--ts-ink);
}

/* §4337 Hausregel (Jörg 03.11. 11:04, DFA §4322 Befund „Radios als Kästchen“): Auswahlknöpfe (eine aus mehreren) GLOBAL rund mit Punkt — Häkchen bleiben eckig mit Haken */
:is(.tspro-ui, .je-such, .be-ov, .ts-dlg, .ts-ovl) input[type="radio"] { border-radius: 50%; }
:is(.tspro-ui, .je-such, .be-ov, .ts-dlg, .ts-ovl) input[type="radio"]:checked { background: var(--ts-ink); box-shadow: inset 0 0 0 3px var(--ts-panel-bg); }
.tspro-ui .obtn.fakbtn.on{ background:var(--ts-ok); border-color:var(--ts-ok); color:var(--ts-sec-fg); font-weight:700; }

.bzq-ovl.on{ display:flex; }

/* ▸N706 §824 */   /* ▸N707 §696c */
.tbl-box tbody tr.sel td { background: var(--ds-auswahl); }
   /* ▸N728 §1107 */
.ecopdf-ovl.on{ display:flex; }

/* ▸N736 §491 */

.tspro-ui .ma-tab.active, .es-wrap .ma-tab.active, .ts-dlg .ma-tab.active { background: var(--ts-akzent); color: var(--ts-sec-fg); border-color: var(--ts-akzent); }

.es-wrap .opt-progress.on, .tspro-ui .opt-progress.on { display: block; }
.mw-tabs .aktiv { background: var(--ts-ink); color: var(--ts-sec-fg); }
/* §824: Hand an Mitarbeiter-Zeilen entfernt *//* §781 (§713): tsSuchTabelle-Zeilen (mahnwesen Z.566) */.mw-tab tbody tr.sel td { color: var(--ts-akzent-dark); font-weight: 600; }

/* ▸N1102 §825 */
.m-hersteller .tbl-box tr.sel td { background: var(--ds-auswahl); }
   
.es-utable tr.sel td { background:var(--ds-auswahl); }


/* ▸N1171 */
.tspro-ui .such-bar .obtn.lfb.on { background: var(--ts-ink); color: var(--ts-sec-fg); border-color: var(--ts-ink); }

.m-einstellungen .es-toc-thema.on .es-toc-k { display: block; }


/* ▸N1196 */
/* .dk-filter → .dlg-leiste (§660) */
/* ▸N1197 §523 */
.dlg-leiste .obtn.on { background: var(--ts-ink); color: var(--ts-sec-fg); border-color: var(--ts-ink); }
.m-vorgang .opt-col .obtn.on { background: var(--ts-ink); color: var(--ts-sec-fg); border-color: var(--ts-ink); }   /* §3350 Offene Vorgaenge: gewaehlte Rubrik/Quelle (vorgaenge.js artMarkieren) */
.m-faelle .opt-col .obtn.on { background: var(--ts-ink); color: var(--ts-sec-fg); border-color: var(--ts-ink); }   /* §3364 Servicefaelle: gewaehlter Filter offen/erledigt/alle */
/* ▸N1245 §673b */
:is(.ts-dlg, .m-zahlungsverkehr) .bk-tab tbody tr.sel > td { background: var(--ds-auswahl); }

.tspro-ui tr.zeile-dim.sel td, .je-such tr.zeile-dim.sel td, .ts-dlg tr.zeile-dim.sel td, .be-ov tr.zeile-dim.sel td { color: var(--ts-ink); }
/* ▸§1365 zustaende: §1347-Grundregeln (gesperrt/readonly -> weiss/grau, .ro -> grau) und Tabellenzellen-Regeln — VOR ihren Ausnahmen */
/* ▸N525 */
/* ▸N526 §692 §687 §679 */
.tspro-ui input[readonly]:not([type=checkbox]):not([type=radio]),
.tspro-ui input:disabled:not([type=checkbox]):not([type=radio]),
.tspro-ui select:disabled,
.tspro-ui textarea[readonly],
.tspro-ui textarea:disabled,
.tspro-ui .fil-field:disabled,
.je-such input[readonly], .je-such input:disabled, .je-such textarea[readonly],
.be-ov input[readonly], .be-ov input:disabled, .be-ov textarea[readonly],
.ts-ovl input[readonly], .ts-ovl input:disabled, .ts-ovl textarea[readonly],
.ts-dlg input[readonly], .ts-dlg input:disabled, .ts-dlg textarea[readonly],
input.v:disabled, select.v:disabled, textarea.v:disabled,
/* ▸N527 §692 */
.v.ro:not([contenteditable="true"])
  { background-color: var(--ts-panel-bg);
    color: var(--ts-ro-fg);
    -webkit-text-fill-color: var(--ts-ro-fg);
    opacity: 1;
    /* ▸N528 §700 */
    caret-color: transparent;
    cursor: default; }

/* ▸§1494 (Joerg 22.09.2026, Sichtprobe Bestellung): Ausgezaehlt — die Positionstabellen heissen `be-tbl` und liegen in einem schlichten <div>,
   nicht in `.tbl-box`; die Masken tragen auch kein `.tspro-ui`. Alle bisherigen Regeln fuer durchsichtige Tabellenfelder waren aber genau darauf
   gescopt (Z. 2293, 3880, 4691). Deshalb behielten Bemerkung/Anz/EK/VK/Kalk/Offen ihren weissen Standardhintergrund — in JEDER Zeile, markiert
   oder nicht. Jetzt ohne Rahmenbedingung: Felder in Tabellenzellen sind durchsichtig, den Feldhintergrund gibt es nur beim Fokus. */
tbody td input:not([type="checkbox"]):not([type="radio"]),
tbody td select, tbody td textarea { background-color: transparent; }
tbody td input:not([type="checkbox"]):not([type="radio"]):focus,
tbody td select:focus, tbody td textarea:focus { background-color: var(--ts-panel-bg); }
.tbl-box tbody td input:disabled { background-color: transparent; border-color: transparent; color: var(--ts-ink); }.lf-wrap.tspro-ui .tbl-box tbody td input:disabled { background-color: transparent; border-color: transparent; color: var(--ts-ink); }


/* ▸N1368 §1347 R-15 §1347b */
.tspro-ui.tspro-ui .ro, .art-wrap.art-wrap .ro, .bib-wrap.bib-wrap .ro, .es-wrap.es-wrap .ro, .ts-dlg.ts-dlg .ro {
  color: var(--ts-ro-fg); -webkit-text-fill-color: var(--ts-ro-fg); opacity: 1;
}
/* ▸§1365 Ausnahmen der §1347-Grundregeln (Auswahlfeld im Bearbeiten schwarz, Artikel-Editierfelder durchsichtig, Reparatur-Bezuege Flaeche) — NACH den Grundregeln */

.tspro-ui .v.hpick,
.tspro-ui .v.ro.hpick {
  cursor: pointer; display: flex; align-items: center; justify-content: space-between;
  min-height: var(--ds-feld); box-sizing: border-box; padding: 0 8px;
  border: 1px solid var(--ts-edit-bd); border-radius: 4px;
  background: var(--ts-panel-bg); color: inherit; -webkit-text-fill-color: initial;
  /* ▸N123 §707 §692 */
  background-image: var(--ts-lupe);   /* §709: Variable */
  background-repeat: no-repeat; background-position: right var(--ds-s) center; padding-right: 26px;
  caret-color: transparent;
}

/* ▸N163 R-2.14 */
/* ▸N164 §630 §276 */
/* E4a: Editierfelder im Edit-Modus */
/* .ed: zentral in filialen.css (2026-07-01) */
/* ▸N165 */
.art-wrap .fz .v:has(.ed) { border:none; padding:0; background:transparent; }
/* ▸§1365 Partner von .v.hpick: Lupenabstand §1317 (24 px) — nach .v.hpick, wie bisher per Spezifitaet */


/* ▸N1367 §1331 §707 */
.tspro-ui .v.hpick-feld, .tspro-ui .v.ro.hpick-feld, .art-wrap .v.hpick-feld, .ts-dlg .v.hpick-feld {
  background-image: var(--ts-lupe); background-repeat: no-repeat; background-position: right var(--ds-s) center; background-size: var(--ts-feldsymbol) var(--ts-feldsymbol);
  padding-right: var(--ds-xl);
}
/* ▸§1362 zustaende: gesperrt/schreibgeschuetzt (2. Anlauf, 46 Regeln) — §1347-Grundregeln und die Tabellenzellen-Regeln bleiben mit ihren Gegenspielern (Ausnahmen, Datumsfeld §1325) vorerst in bestand */

.tspro-ui select.v:enabled { cursor: pointer; }


/* ▸N109 K-39 */

.tspro-ui .obtn:disabled { background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd); filter: grayscale(1) opacity(.75); cursor: default; }
/* §3818 Gatter: Funktion nicht eingerichtet / Modul aus — gleiche Inaktiv-Optik wie :disabled, global für jede Knopfart (obtn, es-save, es-ubtn, fil-tile …); !important, weil die Maske disabled selbst schaltet */
/* §3871 ALTFUNKTIONEN: Elemente mit data-altf="<schluessel>" (Kleinbuchstaben) bleiben ausgeblendet, bis api.js ts-af-<schluessel> an <html> setzt —
   standardmäßig aus (kein Aufblitzen bei Jörg), Vorrang wie das Gatter, damit keine Masken-Regel (display:flex/grid/table-row) sie wieder zeigt. */
html:not(.ts-af-scheck) [data-altf~="scheck"], html:not(.ts-af-nachnahme_finanzierung) [data-altf~="nachnahme_finanzierung"],
html:not(.ts-af-waehrung) [data-altf~="waehrung"], html:not(.ts-af-lieferanschriften) [data-altf~="lieferanschriften"] { display: none !important; }
/* §3876 DM-ALTBELEG: api.js setzt ts-beleg-dm an <html>, solange der geladene Belegkopf DM traegt (kopf.waehrung_kz). Kennzeichen rechts in der
   ERSTEN Kachelkopfzeile der Maske, nur bei Altfunktion Waehrung. Warnfarben wie die Meldungen (--ts-meld-warn-*). */
html.ts-af-waehrung.ts-beleg-dm .tspro-ui .fil-sec:first-of-type > .fil-sec-head::after { content: "Beträge in DM"; float: right; padding: 0 var(--ds-s);
  border-radius: 3px; background: var(--ts-meld-warn-bg); color: var(--ts-meld-warn-fg); }
[data-funktion].ts-gatter-aus { background-color: var(--ts-dis-bg) !important; color: var(--ts-dis-fg) !important; border-color: var(--ts-dis-bd) !important; filter: grayscale(1) opacity(.75); cursor: not-allowed !important; }

/* ▸N114 §682 §679b */
:is(.ts-dlg, .bc-main :where(.fen)) .obtn:disabled, .be-ov .obtn:disabled {
  background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd);
  opacity: 1; filter: grayscale(1) opacity(.75); cursor: default;
}

.art-wrap .ck-row label:has(> input[type=checkbox]:enabled), .art-wrap .ck-row label:has(> input[type=radio]:enabled) { cursor: pointer; }

.tspro-ui .such-bar .obtn.tag:disabled {   /* §682: Inaktiv-Grau statt Deckkraft */
  background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd);
  opacity: 1; filter: grayscale(1) opacity(.75); cursor: not-allowed;
}

.art-wrap .obtn:disabled { background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd); filter: grayscale(1) opacity(.75); cursor: default; }

.art-wrap .obtn.todo:disabled { background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd); }

.pd-rows input:disabled { background-color: var(--ts-flaeche); color: var(--ts-gedaempft); }
   /* resize:none aus Grundregel (17), §219c */
/* §692: Kopie entfallen — zentrale Regel (Z.3507) */
.be-wrap .fz-ta textarea.v:not(:disabled) { background-color: var(--ts-panel-bg); }

.be-ov   .js-fbtn:disabled,
.je-such .js-fbtn:disabled {background-color:var(--ts-dis-bg);color:var(--ts-dis-fg);border-color:var(--ts-dis-bd);cursor:not-allowed;pointer-events:none}

.bib-wrap .bib-radrow label:has(input:enabled) { cursor: pointer; }

.bib-wrap .hk-rad:disabled { cursor: default; }

#art-ovl .obtn:disabled {   /* §682: Inaktiv-Grau statt Deckkraft */
  background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd);
  opacity: 1; filter: grayscale(1) opacity(.75); cursor: default;
}


/* ▸N297 */
.bib-wrap select.bib-filter:disabled,
/* ▸N298 §692 */
.bib-wrap input.bib-filter:disabled { cursor: default; }

/* ▸N308 §679b */
.es-wrap .es-save:disabled, .es-wrap .es-ubtn:disabled {
  background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd);
  opacity: 1; filter: grayscale(1) opacity(.75); cursor: default;
}

/* ▸N431 */
.km-ov .km-btn:disabled,
.ts-dlg-box .f button:disabled,
.bzq-box .dlg-fuss button:disabled,   /* §3299 */
#m-wiz #wiz-foot > button:disabled,   /* §4142: Artikel-Assistent „◀ Zurück“ in Schritt 1 ausgegraut wie im Dialogfuß */
.ts-dlg button:disabled,
.ts-dlg select:disabled{
  background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd);
  filter: grayscale(1) opacity(.75); cursor: default; pointer-events: none;
}
   /* die zwei Grautöne, wie bei jedem Feld */
.ts-dlg-box .f button.prim:disabled{ background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd); }
.ts-dlg-box .f button.rot:not(:disabled) { background-color: var(--ts-red); color: var(--ts-sec-fg); border-color: var(--ts-red); }   /* §4333 F4: Fensterfuß rot NUR Entfernen/Löschen (dialog.js b.rot) — Hover-Partner darunter */
.ts-dlg-box .f button.rot:hover:not(:disabled) { background-color: var(--ts-red-dark); border-color: var(--ts-red-dark); color: var(--ts-sec-fg); }

.je-such .lb-fbtn:disabled, .be-ov .lb-fbtn:disabled {   /* §682: Inaktiv-Grau statt Deckkraft */
  background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd);
  opacity: 1; filter: grayscale(1) opacity(.75); cursor: default;
}

.be-ov .js-kachel .obtn:disabled {   /* §682: Inaktiv-Grau statt Deckkraft */
  background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd);
  opacity: 1; filter: grayscale(1) opacity(.75); cursor: default;
}

.je-such .js-kachel .obtn:disabled{   /* §682: Inaktiv-Grau statt Deckkraft */
  background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd);
  opacity: 1; filter: grayscale(1) opacity(.75); cursor: default;
}

.ts-ovl .obtn:disabled, .be-ov .obtn:disabled, .ts-memo-ov .obtn:disabled {   /* §682 */
  background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd);
  opacity: 1; filter: grayscale(1) opacity(.75); cursor: default;
}


/* ▸N529 §700 */
.tspro-ui label:has(input:disabled), .ts-dlg label:has(input:disabled),
.ts-ovl label:has(input:disabled), .be-ov label:has(input:disabled),
.je-such label:has(input:disabled),
:is(.ts-dlg-box, .bc-main) .fen-ck > label:has(input:disabled), :is(.ts-dlg-box, .bc-main) .fen-raster > label:has(input:disabled) { cursor: default; }   /* §3629 Zustand fuer die Fenster-Haken */

/* ▸N530 §700 */
.tspro-ui .ck-row label:has(input:disabled),
.tspro-ui .kd-radios label:has(input:disabled),
.tspro-ui .kd-checks label:has(input:disabled),
.tspro-ui .inv-rad label:has(input:disabled),
.tspro-ui .ang-da label.ck:has(input:disabled),
.ts-ovl input[type="checkbox"]:disabled, .ts-ovl input[type="radio"]:disabled,
.tspro-ui input[type="checkbox"]:disabled, .tspro-ui input[type="radio"]:disabled { cursor: default; }


/* ▸N569 */
.tspro-ui .obtn.danger:disabled,
.tspro-ui .obtn.red:disabled,
.art-wrap .obtn.danger:disabled,
.art-wrap .obtn.red:disabled,
.bib-wrap .obtn.danger:disabled {
  background-color: var(--ts-dis-bg);
  color: var(--ts-dis-fg);
  border-color: var(--ts-dis-bd);   /* ▸N570 §1262 */
  cursor: default;
}

/* ▸N587 */
.tspro-ui input[type="checkbox"]:disabled, .tspro-ui input[type="radio"]:disabled,
.je-such input[type="checkbox"]:disabled, .je-such input[type="radio"]:disabled,
.be-ov  input[type="checkbox"]:disabled, .be-ov  input[type="radio"]:disabled,
.ts-dlg input[type="checkbox"]:disabled, .ts-dlg input[type="radio"]:disabled,
.ts-ovl input[type="checkbox"]:disabled, .ts-ovl input[type="radio"]:disabled{
  border-color:var(--ts-dis-fg); background-color:var(--ts-flaeche); cursor:default;
}

.tspro-ui input[type="checkbox"]:disabled:checked, .tspro-ui input[type="radio"]:disabled:checked,
.je-such input[type="checkbox"]:disabled:checked, .je-such input[type="radio"]:disabled:checked,
.be-ov  input[type="checkbox"]:disabled:checked, .be-ov  input[type="radio"]:disabled:checked,
.ts-dlg input[type="checkbox"]:disabled:checked, .ts-dlg input[type="radio"]:disabled:checked,
.ts-ovl input[type="checkbox"]:disabled:checked, .ts-ovl input[type="radio"]:disabled:checked{
  background-color:var(--ts-dis-fg); border-color:var(--ts-dis-fg);
}

.tspro-ui .kbtn:disabled{ color:var(--ts-dis-fg); border-color:var(--ts-dis-bd); background-color:var(--ts-dis-bg); cursor:default; }

/* ▸N623 §648r */
.tspro-ui.tspro-ui tbody td > input:disabled:not([type=checkbox]):not([type=radio]),
.tspro-ui.tspro-ui tbody td > select:disabled,
.je-such.je-such tbody td > input:disabled:not([type=checkbox]):not([type=radio]) {
  color: inherit; -webkit-text-fill-color: currentColor; opacity: 1;
  background-color: var(--ts-panel-bg);   /* §692d */
}


/* ▸N630 */
.tspro-ui .obtn.dark:disabled,
.je-such .obtn.dark:disabled, .be-ov .obtn.dark:disabled, .ts-ovl .obtn.dark:disabled{
  background-color:var(--ts-dis-bg); color:var(--ts-dis-fg); border-color:var(--ts-dis-bd); opacity:1; filter:none;
}
   /* §698 */
.ts-dlg .bz-feld[readonly]{ background-color:var(--ts-panel-bg); }


/* ▸N882 */
.es-wrap .obtn:disabled,
.tspro-ui .dv-right .obtn:disabled,
.bib-wrap .obtn:disabled {
  background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd);
  filter: grayscale(1) opacity(.75); opacity: 1; cursor: default;
}
.ang-da label.ck:has(input:enabled) { cursor:pointer; }
/* ▸§3766 DATENÜBERNAHME (Maske nach Hausmuster, Jörg 29.10. 00:39): vier fil-sec-Kacheln 2×2 gleich hoch (K-381 Punkt 6), Formular lbl-auto,
   Tabellen in .tbl-box > .tbl-scroll mit Füllzeilen (K-404); Quellanalyse/Läufe zweispaltig Liste | Detail. Abweichungen = Fenster (K-434). */
.m-datenabgleich .da-main { display:grid; grid-template-columns: 1fr 1fr; grid-template-rows: auto minmax(0, 1fr); gap: var(--ts-kachel-gap); min-width:0; min-height:0; }   /* Jörg 00:47: obere Reihe nur so hoch wie Quelle/Stand, die untere bekommt den Rest */
.m-datenabgleich .da-main > .fil-sec { min-height:0; display:flex; flex-direction:column; margin-bottom:0; }
.m-datenabgleich .da-main > .fil-sec > .fil-sec-body { flex:1 1 auto; min-height:0; display:flex; flex-direction:column; }
.m-datenabgleich .da-main > .fil-sec.lbl-auto > .fil-sec-body { display:grid; }   /* Formularkachel bleibt das lbl-auto-Gitter */
.m-datenabgleich .da-zwei { display:grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--ts-kachel-gap); }
.m-datenabgleich .da-zwei > .tbl-box { min-height:0; }
.tspro-ui .st-ok { color: var(--ts-ok-text); font-weight:700; }   /* §3770 Zustandsworte in Tabellen (ok/fehl), global */
.tspro-ui .st-fehl { color: var(--ts-red); font-weight:700; }
.m-datenabgleich td.sp-flag input[type=checkbox] { margin:0; vertical-align:middle; }
/* ▸§3771/§3773 EINRICHTUNGSASSISTENT (module/einrichtung.php): links Kachel Schritte (Tabelle), rechts der markierte Schritt = Gitter aus Hauskacheln (fil-sec lbl-auto / Tabellen),
   alles in 1920×822; Formularkacheln so hoch wie ihr Inhalt, Tabellenkacheln fuellen die Hoehe (Fuellzeilen K-404). Keine Fenster-Bausteine (fen-block) in Masken. */
.m-einrichtung .er-main { display:grid; grid-template-columns: minmax(0, 560px) minmax(0, 1fr); gap: var(--ts-kachel-gap); min-width:0; min-height:0; }
.m-einrichtung .er-main > .fil-sec { min-height:0; display:flex; flex-direction:column; margin-bottom:0; }
.m-einrichtung .er-main > .fil-sec > .fil-sec-body { flex:1 1 auto; min-height:0; display:flex; flex-direction:column; }
.m-einrichtung .er-schritt { display:grid; gap: var(--ts-kachel-gap); min-width:0; min-height:0; align-content:start; }
.m-einrichtung .er-vier { grid-template-columns: minmax(0,1fr) minmax(0,1fr); }
.m-einrichtung .er-eins { grid-template-columns: minmax(0,1fr); grid-template-rows: minmax(0,1fr); }
.m-einrichtung .er-oben { grid-template-columns: minmax(0,1fr); grid-template-rows: auto minmax(0,1fr); }
.m-einrichtung .er-oben > .fil-sec:first-child > .fil-sec-body, .m-einrichtung .er-oben > .fil-sec:first-child .tbl-box, .m-einrichtung .er-oben > .fil-sec:first-child .tbl-scroll { flex: none; }   /* §3777 obere Tabelle (Steuersaetze) auf Inhaltshoehe — flex:1 im auto-Zeilenraster ergab 0 px */   /* §3774 obere Kachel auf Inhaltshoehe, untere fuellt */
.m-einrichtung .er-form > .fil-sec-body { grid-template-columns: max-content minmax(0, 560px); }   /* §3777 Formular in voller Kachelbreite, Felder hoechstens 560 px (lbl-auto: .fz ist display:contents, max-width griff nicht) */
.m-einrichtung .er-schritt > .fil-sec { min-height:0; margin-bottom:0; display:flex; flex-direction:column; }
.m-einrichtung .er-schritt > .fil-sec:not(.lbl-auto) > .fil-sec-body { flex:1 1 auto; min-height:0; display:flex; flex-direction:column; }
.m-einrichtung td.sp-flag input[type=checkbox] { margin:0; vertical-align:middle; }
.m-einrichtung td input.er-reg { width:100%; text-align:right; }
.m-einrichtung .lbl-auto > .fil-sec-body > .dlg-hinweis { grid-column: 1 / -1; }
.m-einrichtung .er-oben2 { grid-template-rows: auto auto minmax(0,1fr); }   /* §3829 Schritt 3: Kassenabschluss + Steuersaetze auf Inhaltshoehe, Nummernkreise fuellen (vorher fuellte die Steuertabelle, Nummernkreise 0 px) */
.m-einrichtung .er-oben2 > .fil-sec:nth-child(2) > .fil-sec-body, .m-einrichtung .er-oben2 > .fil-sec:nth-child(2) .tbl-box, .m-einrichtung .er-oben2 > .fil-sec:nth-child(2) .tbl-scroll { flex: none; }
.m-einrichtung .er-oben2 > .fil-sec:nth-child(3) > .fil-sec-body, .m-einrichtung .er-oben2 > .fil-sec:nth-child(3) .tbl-box, .m-einrichtung .er-oben2 > .fil-sec:nth-child(3) .tbl-scroll { flex: 1 1 auto; min-height: 0; }   /* §3828 Hinweiszeile im Formularraster ueber beide Spalten */
.ts-dlg-box .dlg-inhalt > .da-logbox { flex:1 1 auto; min-height:0; }   /* Protokollfenster: Logtext füllt das Fenster */
/* ▸N1126 §692g §692 */
.lf-nameline input.lname:disabled { background-color: var(--ts-panel-bg); color: var(--ts-ro-fg); -webkit-text-fill-color: var(--ts-ro-fg); }
.es-ubtn:disabled { background-color:var(--ts-dis-bg); color:var(--ts-dis-fg); border-color:var(--ts-dis-bd); filter:grayscale(1) opacity(.75); cursor:default; }

.tspro-ui .such-bar .obtn.lfb:disabled {   /* §682: wie .obtn.tag:disabled — Inaktiv-Grau */
  background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd);
  opacity: 1; filter: grayscale(1) opacity(.75); cursor: not-allowed;
}


/* ▸N1302 §822 §781 */
.tspro-ui .tbl-box tbody tr:has(input:disabled),
.tspro-ui .tbl-box tbody tr:has(input:disabled) td,
.tspro-ui .tbl-box tbody tr:has(input:disabled) td input { cursor: default; }

body.ts-app .tspro-ui .fil-tile:disabled { background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd); cursor: default; }

.ts-dlg-box:has(.bk-modern) #ovl_f .obtn#bk_abruf:not(:disabled), .ts-dlg-box:has(.bk-modern) #ovl2_f .obtn#bk_abruf:not(:disabled) { border-color: var(--ts-akzent); color: var(--ts-akzent); }
   /* §1090: Abrufen in der Fusszeile */
.ts-dlg-box:has(.bk-modern) #ovl_f .obtn#bk_a_alle:not(:disabled), .ts-dlg-box:has(.bk-modern) #ovl2_f .obtn#bk_a_alle:not(:disabled)
                                                  { background-color: var(--ts-akzent); border-color: var(--ts-akzent); color: var(--ts-panel-bg); }


/* ▸N1366 §1330 */
.tspro-ui.tspro-ui select:enabled, .ts-dlg.ts-dlg select:enabled, .ts-ovl.ts-ovl select:enabled, .je-such.je-such select:enabled, .bib-wrap.bib-wrap select:enabled, #art-ovl#art-ovl select:enabled, .be-ov.be-ov select:enabled, .es-wrap.es-wrap select:enabled, .art-wrap.art-wrap select:enabled, .ts-app.ts-app select:enabled, .tspro-ui.tspro-ui select:not([disabled]), .ts-dlg.ts-dlg select:not([disabled]), .ts-ovl.ts-ovl select:not([disabled]), .je-such.je-such select:not([disabled]), .bib-wrap.bib-wrap select:not([disabled]), #art-ovl#art-ovl select:not([disabled]), .be-ov.be-ov select:not([disabled]), .es-wrap.es-wrap select:not([disabled]), .art-wrap.art-wrap select:not([disabled]), .ts-app.ts-app select:not([disabled]) {
  -webkit-appearance: none; appearance: none;
  background-image: var(--ts-chevron); background-repeat: no-repeat; background-position: right var(--ds-s) center; background-size: var(--ts-chevron-w) var(--ts-chevron-h);
  padding-right: var(--ds-xl);
}

.tspro-ui.tspro-ui input[placeholder="TT.MM.JJJJ"]:enabled, .ts-dlg.ts-dlg input[placeholder="TT.MM.JJJJ"]:enabled, .ts-ovl.ts-ovl input[placeholder="TT.MM.JJJJ"]:enabled, .je-such.je-such input[placeholder="TT.MM.JJJJ"]:enabled, .bib-wrap.bib-wrap input[placeholder="TT.MM.JJJJ"]:enabled, #art-ovl#art-ovl input[placeholder="TT.MM.JJJJ"]:enabled, .be-ov.be-ov input[placeholder="TT.MM.JJJJ"]:enabled, .es-wrap.es-wrap input[placeholder="TT.MM.JJJJ"]:enabled, .art-wrap.art-wrap input[placeholder="TT.MM.JJJJ"]:enabled, .ts-app.ts-app input[placeholder="TT.MM.JJJJ"]:enabled, .tspro-ui.tspro-ui input.ts-datum:enabled, .ts-dlg.ts-dlg input.ts-datum:enabled, .ts-ovl.ts-ovl input.ts-datum:enabled, .je-such.je-such input.ts-datum:enabled, .bib-wrap.bib-wrap input.ts-datum:enabled, #art-ovl#art-ovl input.ts-datum:enabled, .be-ov.be-ov input.ts-datum:enabled, .es-wrap.es-wrap input.ts-datum:enabled, .art-wrap.art-wrap input.ts-datum:enabled, .ts-app.ts-app input.ts-datum:enabled, .tspro-ui.tspro-ui input[type="date"]:enabled, .ts-dlg.ts-dlg input[type="date"]:enabled, .ts-ovl.ts-ovl input[type="date"]:enabled, .je-such.je-such input[type="date"]:enabled, .bib-wrap.bib-wrap input[type="date"]:enabled, #art-ovl#art-ovl input[type="date"]:enabled, .be-ov.be-ov input[type="date"]:enabled, .es-wrap.es-wrap input[type="date"]:enabled, .art-wrap.art-wrap input[type="date"]:enabled, .ts-app.ts-app input[type="date"]:enabled {
  background-image: var(--ts-kalender); background-repeat: no-repeat; background-position: right var(--ds-s) center; background-size: var(--ts-feldsymbol) var(--ts-feldsymbol);
  padding-right: var(--ds-xl);
}

.tspro-ui.tspro-ui input[data-rolle="feld"]:enabled, .ts-dlg.ts-dlg input[data-rolle="feld"]:enabled, .ts-ovl.ts-ovl input[data-rolle="feld"]:enabled, .je-such.je-such input[data-rolle="feld"]:enabled, .bib-wrap.bib-wrap input[data-rolle="feld"]:enabled, #art-ovl#art-ovl input[data-rolle="feld"]:enabled, .be-ov.be-ov input[data-rolle="feld"]:enabled, .es-wrap.es-wrap input[data-rolle="feld"]:enabled, .art-wrap.art-wrap input[data-rolle="feld"]:enabled, .ts-app.ts-app input[data-rolle="feld"]:enabled, .tspro-ui.tspro-ui input.sinp:enabled, .ts-dlg.ts-dlg input.sinp:enabled, .ts-ovl.ts-ovl input.sinp:enabled, .je-such.je-such input.sinp:enabled, .bib-wrap.bib-wrap input.sinp:enabled, #art-ovl#art-ovl input.sinp:enabled, .be-ov.be-ov input.sinp:enabled, .es-wrap.es-wrap input.sinp:enabled, .art-wrap.art-wrap input.sinp:enabled, .ts-app.ts-app input.sinp:enabled, .tspro-ui.tspro-ui input.bib-filter:enabled, .ts-dlg.ts-dlg input.bib-filter:enabled, .ts-ovl.ts-ovl input.bib-filter:enabled, .je-such.je-such input.bib-filter:enabled, .bib-wrap.bib-wrap input.bib-filter:enabled, #art-ovl#art-ovl input.bib-filter:enabled, .be-ov.be-ov input.bib-filter:enabled, .es-wrap.es-wrap input.bib-filter:enabled, .art-wrap.art-wrap input.bib-filter:enabled, .ts-app.ts-app input.bib-filter:enabled, .tspro-ui.tspro-ui input[placeholder*="uchen"]:enabled, .ts-dlg.ts-dlg input[placeholder*="uchen"]:enabled, .ts-ovl.ts-ovl input[placeholder*="uchen"]:enabled, .je-such.je-such input[placeholder*="uchen"]:enabled, .bib-wrap.bib-wrap input[placeholder*="uchen"]:enabled, #art-ovl#art-ovl input[placeholder*="uchen"]:enabled, .be-ov.be-ov input[placeholder*="uchen"]:enabled, .es-wrap.es-wrap input[placeholder*="uchen"]:enabled, .art-wrap.art-wrap input[placeholder*="uchen"]:enabled, .ts-app.ts-app input[placeholder*="uchen"]:enabled, .tspro-ui.tspro-ui input[placeholder*="enthält"]:enabled, .ts-dlg.ts-dlg input[placeholder*="enthält"]:enabled, .ts-ovl.ts-ovl input[placeholder*="enthält"]:enabled, .je-such.je-such input[placeholder*="enthält"]:enabled, .bib-wrap.bib-wrap input[placeholder*="enthält"]:enabled, #art-ovl#art-ovl input[placeholder*="enthält"]:enabled, .be-ov.be-ov input[placeholder*="enthält"]:enabled, .es-wrap.es-wrap input[placeholder*="enthält"]:enabled, .art-wrap.art-wrap input[placeholder*="enthält"]:enabled, .ts-app.ts-app input[placeholder*="enthält"]:enabled,
:is(.tspro-ui, .ts-dlg, .ts-ovl, .je-such, .bib-wrap, #art-ovl, .be-ov, .es-wrap, .art-wrap, .ts-app, .bc-main) input[data-suche]:enabled {   /* §3445 (Joerg 23.10. 20:29): Filter-/Suchfeld ohne „suchen“ im Platzhalter traegt data-suche — Lupe NUR rechts, nie 🔍 im Platzhalter */
  background-image: var(--ts-lupe); background-repeat: no-repeat; background-position: right var(--ds-s) center; background-size: var(--ts-feldsymbol) var(--ts-feldsymbol);
  padding-right: var(--ds-xl);
}

.tspro-ui.tspro-ui input:disabled:not([type="checkbox"]):not([type="radio"]), .tspro-ui.tspro-ui select:disabled, .tspro-ui.tspro-ui textarea:disabled,
.tspro-ui.tspro-ui input[readonly]:not([type="checkbox"]):not([type="radio"]), .tspro-ui.tspro-ui textarea[readonly],
.art-wrap.art-wrap input:disabled:not([type="checkbox"]):not([type="radio"]), .art-wrap.art-wrap select:disabled, .art-wrap.art-wrap textarea:disabled,
.bib-wrap.bib-wrap select:disabled, .bib-wrap.bib-wrap input:disabled:not([type="checkbox"]):not([type="radio"]),
.es-wrap.es-wrap select:disabled, .es-wrap.es-wrap input:disabled:not([type="checkbox"]):not([type="radio"]),
.ts-dlg.ts-dlg input:disabled:not([type="checkbox"]):not([type="radio"]), .ts-dlg.ts-dlg select:disabled, .ts-dlg.ts-dlg textarea:disabled {
  color: var(--ts-ro-fg); -webkit-text-fill-color: var(--ts-ro-fg); opacity: 1;
}
   /* §698 */
/* ▸N190 */
/* ▸N191 */
body.im-edit .bhk-wrap td.bhk-sk-zelle, body.im-edit .be-wrap td.ma-sk-zelle {
  background: var(--ts-panel-bg); box-shadow: inset 0 0 0 1px var(--ts-line); border-radius: 4px; }

body.im-edit .bhk-wrap td.bhk-sk-zelle:hover, body.im-edit .be-wrap td.ma-sk-zelle:hover {
  background: var(--ts-field-focus); }

.es-test-result.ok  { display:block; background:var(--ts-meld-ok-bg); color:var(--ts-ok); border:1px solid var(--ts-meld-ok-bd); }
.es-test-result.warn { display:block; background:var(--ts-meld-warn-bg); color:var(--ts-meld-warn-fg); border:1px solid var(--ts-meld-warn-bd); }
.es-test-result.mehrzeilig { white-space: pre-line; }   /* §4746: ein Befund je Zeile (Datenbank / Dateien) */   /* §4744c: Test bestanden, aber mit Einschränkung (z. B. Datenbank ja, Dateien nein) */

.es-sysstatus.warn{color:var(--ts-red)}

.es-selfrei .es-selfrei-frei.is-hidden { display: none; }

.app-bar .up-result.ok  { color: var(--ts-ok); }

body.ts-anmeldung .ok   { background: var(--ts-meld-ok-bg); color: var(--ts-meld-ok-fg); border: 1px solid var(--ts-meld-ok-bd); border-radius: 8px; padding: .5rem .8rem; font-size: 13px; margin-bottom: .9rem; }

:is(.ts-dlg.bka, .ts-dlg-box, .bc-main) .bka-step.ok   { color: var(--ts-ink); }

:is(.ts-dlg.bka, .ts-dlg-box, .bc-main) .bka-step.ok .bka-ico::before   { content: '\2713'; color: var(--ts-ok); }

/* ▸N1369 §1348 §1348c §1348d */
body:has(#o_bearbeiten, #o_bearb):not(.im-edit) .tspro-ui .tbl-box tbody td, body:has(#o_bearbeiten, #o_bearb):not(.im-edit) .art-wrap .tbl-box tbody td { opacity: .60; }   /* §1407: gedaempft wird nur in Masken MIT Bearbeiten-Modus (Knopf Bearbeiten vorhanden), solange nicht bearbeitet wird */
   /* ▸N1370 §1348e */
/* §3134 (Joerg 22:10 Offene Vorgaenge: Zeilen grau, angeklickt schwarz, nach Aktualisieren wieder grau — die Maske hat gar keinen Bearbeiten-Modus): Lese-Grau nur in Masken MIT Bearbeiten-Knopf, wie die Daempfung §1407 darueber */
body:has(#o_bearbeiten, #o_bearb):not(.im-edit) .tspro-ui .tbl-box tbody tr:not([class]) td, body:has(#o_bearbeiten, #o_bearb):not(.im-edit) .tspro-ui .tbl-box tbody tr[data-fuell] td,
body:has(#o_bearbeiten, #o_bearb):not(.im-edit) .art-wrap .tbl-box tbody tr:not([class]) td { color: var(--ts-ro-fg); }

body.im-edit .tspro-ui .tbl-box tbody td, body.im-edit .art-wrap .tbl-box tbody td { opacity: 1; }
} /* Ende @layer zustaende */
@page { margin: 12mm; }

/* ▸§1373 Schicht module: modulgebundene Regeln (203 aus bestand, Selektoren nur .m- oder #m- am Anfang, ohne !important, ohne @media) — ueber zustaende */
@layer module {
/* ▸§1374 Wrapper-Regeln (234 aus bestand, nur Modul-Wrapper, gemessen einzeln zugelassen) */

.art-wrap { font-family: var(--ts-font); color: var(--ts-ink);
            padding: 10px; box-sizing: border-box; }


/* ▸N132 */
.art-wrap .art-layout { display: grid; grid-template-columns: 1fr var(--ts-opt-w); gap: var(--ts-kachel-gap); align-items: stretch; min-height: 0; }

.art-wrap .art-main > *:not(.art-unten) { flex: 0 0 auto; }.art-wrap .art-main { min-height: 0; display: flex; flex-direction: column; gap: var(--ts-kachel-gap); min-width: 0; }   /* §1537b: 6px -> Kachelabstand 10 */
.art-wrap .art-main > .fil-sec, .art-wrap .art-3col > .fil-sec { margin-bottom: 0; }   /* §1537b: der Abstand kommt aus dem gap, nicht aus dem Kachelrand — sonst 16 statt 10 und ungleiche Hoehen */.art-wrap .art-unten { flex: 1 1 0; min-height: 0; display: grid; grid-template-columns: 1fr 1fr; gap: var(--ts-kachel-gap); }   /* §1545: wieder Suche · Eigenschaften (breit) */


/* Artikel-Panel: Produktzeile + 3 Spaltenblöcke */
.art-wrap .art-prodzeile { display: block; margin-bottom: 0; }   /* §1537b: kein Extrarand unter der Produktzeile */

.art-wrap .art-prodzeile .pnr { font-size: 15px; font-weight: 700; background: var(--ts-panel-bg); color: var(--ts-ro-fg);   /* §692e */
                      border: 1px solid var(--ts-panel-bd); border-radius: 6px;
                      padding: 4px 10px; min-width: 96px; text-align: center; justify-self: start; }

.art-wrap .art-prodzeile .pbez { flex: 1; min-width: 0; font-size: 15px; font-weight: 600; padding: 5px 10px;
                      white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
                      border: 1px solid var(--ts-panel-bd); border-radius: 6px; background: var(--ts-panel-bg);
                      color: var(--ts-ro-fg); }
   /* §692g: gesperrtes Feld = graue Schrift */

/* 3 Spalten im Artikel-Panel */
.art-wrap .art-3col { display: grid; grid-template-columns: 1fr 0.8fr 1.2fr; gap: var(--ts-kachel-gap); align-items: stretch; }   /* §1545: Beschreibung etwas schmaler, Preise+Bestand brauchen 206 + 340 */
.art-wrap .art-pb { display: grid; grid-template-columns: 1fr auto;   /* §1550: Bestand links (Rest), Preise rechts (nach Inhalt) */ gap: var(--ts-kachel-gap); align-items: stretch; min-width: 0; }   /* §1545: Preise (schmal, nach Inhalt) + Bestand (Rest) */
.art-wrap .art-pb > .fil-sec { margin-bottom: 0; min-width: 0; }
.art-wrap .art-pb .preis-zeile { grid-template-columns: max-content auto; }   /* Beschriftungen EK netto / VK brutto / EK Datum / Kalkulation */
.art-wrap .art-pb .preis-zeile.sub label { padding-left: 0; }
.art-wrap .art-pb .bestand-2sp { grid-template-columns: auto var(--fb-52) auto var(--fb-52); }
.art-wrap .art-pb .bestand-2sp .bv { width: var(--fb-52); }   /* Bestandszahlen bis 4 Stellen */
.art-wrap .art-3col > .fil-sec, .art-wrap .art-pb > .fil-sec { display: flex; flex-direction: column; }
.art-wrap .art-3col > .fil-sec > .fil-sec-body { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.art-wrap .art-3col > .fil-sec .ta-stack.ta-hoch textarea { min-height: 40px; }   /* §1543 (Joerg): drei gleiche Drittel, Textfelder fuellen die Kachel; nur Zahlenfelder auf Leiterstufen */   /* §1537: drei Kacheln statt drei Spalten in einer Kachel */


/* Label-Wert-Zeile (Label rechtsbündig, Wert daneben) */
/* ▸N137 §612 §685 */
.art-wrap .fz { display: grid; grid-template-columns: var(--fb-170) 1fr; gap: 8px; align-items: center; margin-bottom: 7px; }

.art-wrap .fz > label { text-align: left; font-size: 13px; font-weight: 600; color: var(--ts-ink); }   /* §1539 (Joerg): Beschriftung LINKSBUENDIG, Spalte 170 aus der Leiter — zuerst Artikel */
/* §1539: Anzeigetafel Preise & Bestand ebenfalls linksbuendig; Spalte 90, weil zwei Bloecke nebeneinander (2x170 passt nicht in die Kachel) */

.art-wrap .fz .v { height: var(--ts-feld-h); padding: 0 8px; box-sizing: border-box; border: 1px solid var(--ts-panel-bd);
         border-radius: 6px; background: var(--ts-panel-bg); font-size: 13px; display: flex; align-items: center; }

/* ▸N138 */
.art-wrap .fz input.v, .art-wrap .fz select.v { font-family: inherit; }


/* Kategorie-Zeile mit MwSt daneben */
.art-wrap .kat-row { display: flex; gap: var(--ts-btn-gap); align-items: center; }
.art-wrap .kat-row > .hpick-feld { flex: 1 1 auto; min-width: 0; }   /* §1543: Kategorie fuellt, MwSt 64 daneben */   /* §1542: Kategorie 170 + MwSt 90 nebeneinander, kein 1fr mehr */


/* Nachfolgeartikel mit →-Button */
.art-wrap .nf-row { display: flex; gap: var(--ts-btn-gap); align-items: center; }
.art-wrap .nf-row > .hpick-feld { flex: 1 1 auto; min-width: 0; }   /* §1543: Nachfolger fuellt, Pfeil daneben */   /* §1541: Pfeil direkt neben dem 120er-Feld statt am Zeilenende */
   /* ▸N139 §735c */   /* ▸N140 §733 */
/* ▸N141 §710 */
.art-wrap .nf-row .obtn { height: var(--ts-btn-h)   /* §1532 war --ts-feld-h */; width: var(--ts-feld-h); padding: 0; font-weight: 700; justify-content: center; }
   /* ▸N142 §735c K-351 §722 */   /* ▸N143 §735b */
.art-wrap #f_nachf_go::before { content: "\002192"; }
   /* ▸N144 §735 K-42 */   /* ▸N145 §733 */   /* ▸N146 §712 */

/* Textareas (Bemerkung/Technik/Garantie) */
.art-wrap .ta-stack .fz { grid-template-columns: var(--fb-170) 1fr; align-items: start; }   /* §1539 */

.art-wrap .bestand .bl { text-align: left; font-size: 12px; font-weight: 600; color: var(--ts-ink); }
   /* ▸N148 §692h */
.art-wrap .bestand .bv { height: 24px; min-width: 54px; padding: 0 6px; box-sizing: border-box;
               border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); background: var(--ts-panel-bg);   /* §692d */
               color: var(--ts-ro-fg); font-size: 12px; display: flex; align-items: center; justify-content: flex-end; }
   /* §1539: 110 — Eigennutzung/Bestellt (offen) brauchen mehr als 90 */


/* ▸N149 */

   /* ▸N150 §692h */
   /* §1540 */
   /* §1540 Raster 35 */
.art-wrap .bestand-2sp { display: grid; grid-template-columns: var(--fb-110) var(--fb-64) var(--fb-110) var(--fb-64); gap: 7px 10px; align-items: center; margin-top: 0; }   /* §1544: 8 Werte in 2 Spalten = 4 Zeilen */
.art-wrap .bestand-2sp .bv { height: var(--ds-feld); }
.art-wrap .bestand-2sp .bl { text-align: left; font-size: 12px; font-weight: 600; color: var(--ts-ink); }
.art-wrap .ta-stack.ta-hoch { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }   /* §1544: Beschreibung — die drei Texte teilen sich die Kachelhoehe */
.art-wrap .ta-stack.ta-hoch .fz { flex: 1 1 0; min-height: 0; grid-template-columns: var(--fb-170) 1fr; align-items: start; }
.art-wrap .ta-stack.ta-hoch textarea { height: 100%; min-height: 52px; }


   /* §1537: 64px -> Leiter 90, EK Datum brach um */
   /* §692h */
.art-wrap .preis-grp .pk:first-child { margin-top: 0; }


.art-wrap .preis-zeile label { text-align: left; font-size: 12px; font-weight: 600; color: var(--ts-ink); }
   /* ▸N152 §692h §692 */
.art-wrap .preis-zeile .v { height: var(--ds-feld); padding: 0 8px;   /* §1540 */ box-sizing: border-box; border: 1px solid var(--ts-panel-bd);
                  border-radius: 6px; background: var(--ts-panel-bg); font-size: 13px; display: flex; align-items: center; }

/* ▸N153 §692 */

/* Checkbox-Zeile */
.art-wrap .ck-row { display: flex; gap: 18px; margin-top: 10px; padding-top: 10px; justify-content: center; }

.art-wrap .ck-row label { display: flex; align-items: center; gap: 6px; font-size: 13px; }.art-wrap .art-unten > .fil-sec { overflow: hidden; margin-bottom: 0; display: flex; flex-direction: column; min-height: 0; }
.art-wrap .ck-row:has(.ck-dok) { position: relative; }
.art-wrap .ck-row .ck-dok { position: absolute; right: 0; top: calc(50% + 5px); transform: translateY(-50%); }   /* §1869: Dokumente-Knopf rechtsbuendig unter dem Nachfolger-Knopf, AUSSERHALB des Flex-Flusses (die Haekchen bleiben zentriert, Zeile/Kachel behalten ihre Hoehe); +5px = halbes padding-top der Zeile -> mittig auf den Haekchen */

.art-wrap .art-unten > .fil-sec > .fil-sec-body { flex: 1; display: flex; flex-direction: column; min-height: 0; padding: 8px; }

/* Eigenschaften: erste Spalte fett (Eigenschaftsname) */
/* ▸N160 §696b §692 */
.art-wrap .eig-box tbody td.eg-th-eig { font-weight: 700; color: var(--ts-ro-fg); }
   /* ▸N161 §630 */
.art-wrap .eig-box.eig-edit tbody td.eg-th-eig { color: var(--ts-ink); }   /* §1889: Marker-Klasse (artikel.php eigEditKlasse) statt tr:has(input) — :has() fehlt in aelteren Browsern, Namen blieben grau */

/* ▸N162 §630 §276 §696 §692 */
.art-wrap .eig-box tbody td.eg-wert { color: var(--ts-ro-fg); }

.art-wrap .eig-box tbody td.eg-wert input,
.art-wrap .eig-box tbody td.eg-wert .eg-cb { color: var(--ts-ink); }


/* ▸N166 */
.art-wrap .opt-col { display: flex; flex-direction: column; gap: var(--ts-btn-gap); background: var(--ts-panel-bg);
           border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); padding: var(--ds-m) var(--ts-kachel-pad); }
   /* ▸N167 §728 */











.art-wrap .opt-col .opt-head { background: var(--ts-sec-bg); color: var(--ts-sec-fg);  
                      margin: calc(-1 * var(--ds-m)) calc(-1 * var(--ts-kachel-pad)) var(--ds-s);  }

.art-wrap .obtn.danger { background: var(--ts-red); color: var(--ts-sec-fg); border-color: var(--ts-red-dark); }

.art-wrap .obtn.red { color: var(--ts-akzent); }

.art-wrap .opt-sep { height: 1px; background: var(--ts-panel-bd); margin: 3px 0; }

.art-wrap .opt-spacer { flex: 1; }


/* Statusleiste entfernt (auf Wunsch) */

/* ▸N168 */
.art-wrap .obtn .caret { margin-left: auto; font-size: var(--ds-fs-hinweis); opacity: .7; }
/* ▸N169 */.art-wrap .obtn.todo { color: var(--ts-link); border-color: var(--ts-link); }

/* ▸N194 */

.ma-wrap .ma-pane { display: none; }

.ma-wrap .ma-mt14 { margin-top: var(--ds-l); }

.ma-wrap .ma-mt8 { margin-top: 8px; }

.ma-wrap .ma-fzta { align-items: start; }

.ma-wrap .ma-fzta > label { margin-top: 6px; }

/* ▸N195 */
/* ▸N196 §791 */

/* ▸N197 */

.lf-wrap .lf-mt8 { margin-top: 8px; }

/* .lf-foot → .dlg-fuss (§660) */
/* ▸N198 */

.kd-wrap .kd-mt6 { margin-top: 6px; }

.kd-wrap .kd-proz { margin-left: 6px; font-size: 13px; font-weight: 600; color: var(--ts-ink); }


/* ▸N240 */
/* ▸N241 */
.es-wrap .es-title { background: var(--ts-sec-bg); color: var(--ts-sec-fg);
                     border-radius: 10px; margin-bottom: 10px; }

/* ▸N245 §428 */
.es-wrap .es-layout { flex: 1; min-height: 0; display: grid; grid-template-columns: var(--es-toc-w) 1fr var(--ts-opt-w); gap: 10px; align-items: stretch; }

.es-wrap .es-toc-col { min-height: 0; overflow-y: auto; }

.es-wrap .opt-col .opt-head { background: var(--ts-sec-bg); color: var(--ts-sec-fg); margin: calc(-1 * var(--ds-m)) calc(-1 * var(--ts-kachel-pad)) var(--ds-s); }

/* ▸N247 */
.es-wrap .obtn { height: var(--ts-btn-h); font-size: 12px; padding: 0 var(--ds-s); gap: 6px;
                 border: 1px solid var(--ts-line); border-radius: 6px; background: var(--ts-panel-bg); color: var(--ts-ink);
                 font-family: inherit; font-weight: 600; cursor: pointer;
                 display: flex; align-items: center; text-align: left; }

/* ▸N248 §682 */
.es-wrap .obtn.red         { color: var(--ts-akzent); }

/* ▸N260 */
.kt-wrap .kt-main > .fil-sec:first-child { flex: 0 0 auto; }

.kt-wrap .kt-kopf > div:first-child { position: relative; min-height: 0; }

.kt-wrap .kt-unten .fil-sec { display: flex; flex-direction: column; min-height: 0; margin-bottom: 0; }

.kt-wrap .kt-unten .fil-sec .fil-sec-body { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }

.kt-wrap .kt-eig-wrap, .kt-wrap .kt-vor-wrap { flex: 1 1 auto; min-height: 0; max-height: none; }


/* ▸N264 */
.kt-wrap .kt-tgl { display: inline-block; width: 16px; flex: 0 0 16px;
                   color: var(--ts-gedaempft); cursor: pointer; user-select: none;
                   font-size: var(--ds-fs-hinweis); text-align: center; }

.kt-wrap .kt-tgl.kt-tgl-leer { cursor: default; }

.kt-wrap table.kt-tbl tr.kt-lvl1 > td.kt-name { padding-left: 8px;  font-weight: 700; }

.kt-wrap table.kt-tbl tr.kt-lvl2 > td.kt-name { padding-left: 24px; }

.kt-wrap table.kt-tbl tr.kt-lvl3 > td.kt-name { padding-left: 44px; }

/* ▸N265 */
.kt-wrap table.kt-tbl tr.kt-lvl4 > td.kt-name { padding-left: 64px; }

.kt-wrap table.kt-tbl tr.kt-lvl1 td { background: var(--ts-flaeche); }

.kt-wrap table.kt-tbl tr.kt-lvl2.kt-ast > td.kt-name { font-weight: 600; }
   /* ▸N266 §630 */

/* ▸N267 */
.kt-wrap .kt-kopf > div:first-child:has(#e_hk) .kt-kat-wrap { top: 68px; }


/* ▸N268 */
.kt-wrap .zu-caret { width: 22px; font-size: 18px; font-weight: 700;
                     color: var(--ts-ink); }

.bib-wrap { font-family: var(--ts-font);
            color: var(--ts-ink); padding: 10px; box-sizing: border-box;
            height: 100vh; overflow: hidden; display: flex; flex-direction: column; }

/* Baum-Kachel: Liste scrollt intern */
.bib-wrap .bib-tree-sec { display: flex; flex-direction: column; min-height: 0; margin-bottom: 0; }

.bib-wrap .bib-tree-body { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }

.bib-wrap .bib-tree-wrap { flex: 1 1 auto; min-height: 0; overflow: auto;
            border: 1px solid var(--ts-panel-bd); border-radius: 8px; }

.bib-wrap table.be-tbl tr.bib-lvl1 td { background: var(--ts-flaeche); font-weight: 700; }

.bib-wrap table.be-tbl tr.bib-lvl2 td { padding-left: 30px; }
.bib-wrap .bib-tgl { display: inline-block; width: 18px; font-size: 13px; font-weight: 700;
            color: var(--ts-ink); cursor: pointer; user-select: none; text-align: center; }

.bib-wrap .bib-tgl.bib-tgl-leer { cursor: default; }

.bib-wrap .bib-zahl { float: right; color: var(--ts-gedaempft); font-weight: 500; font-size: var(--ds-fs-hinweis); }
   /* §802: war #8a8a86 nackt, 3,15:1 auf beige */
/* Inhalt-Spalte + Sichten */
.bib-wrap .bib-main { min-width: 0; min-height: 0; overflow: auto;
            display: flex; flex-direction: column; }

.bib-wrap .bib-view { display: none; }

.bib-wrap .bib-leer { text-align: center; user-select: none; }

.bib-wrap .bib-leer-t { font-size: 34px; font-weight: 800; color: var(--ts-sec-fg-muted); text-shadow: 1px 1px 0 #fff; }

.bib-wrap .bib-leer-s { font-size: 14px; font-weight: 600; color: var(--ts-gedaempft); margin-top: 8px; }
   /* §802: war #cfcfca (1,56:1, unlesbar) */
.bib-wrap .bib-leer-h { font-size: 13px; font-weight: 600; color: var(--ts-gedaempft); margin-top: 16px; }

/* ▸N276 */
.bib-wrap .fz { display: grid; gap: 8px; align-items: center; margin-bottom: 7px; }

.bib-wrap .fz > label { text-align: left; white-space: nowrap; font-size: 13px; font-weight: 600; }
   /* §728: overflow-y:auto entfernt (wie artikel) */
.bib-wrap .opt-col .opt-head { background: var(--ts-sec-bg); color: var(--ts-sec-fg);
            margin: calc(-1 * var(--ds-m)) calc(-1 * var(--ts-kachel-pad)) var(--ds-s); border-radius: 10px 10px 0 0;
            font-size: var(--ts-head-fs); font-weight: var(--ts-head-fw);
            padding: var(--ts-head-pad); letter-spacing: var(--ts-head-ls); }

/* ▸N279 §682 K-317 */
.bib-wrap .obtn.danger       { background: var(--ts-red); color: var(--ts-sec-fg); border-color: var(--ts-red-dark); }

.bib-wrap .opt-sep { height: 1px; background: var(--ts-panel-bd); margin: 3px 0; }

.bib-wrap .opt-spacer { flex: 1; }

/* ▸N280 §726b */

/* ▸N281 */
/* ▸N282 */

/* ▸N283 */
.bib-wrap .badge { font-size: var(--ds-fs-hinweis); font-weight: 700; border-radius: 4px; padding: 0 6px; }

.bib-wrap .badge.haupt { color: var(--ts-meld-ok-fg); background: var(--ts-meld-ok-bg); border: 1px solid var(--ts-meld-ok-bd); }

.bib-wrap .badge.erw   { color: var(--ts-meld-warn-fg); background: var(--ts-meld-warn-bg); border: 1px solid var(--ts-meld-warn-bd); }

.bib-wrap .int-ok  { color: var(--ts-ok); font-weight: 700; }

.bib-wrap .bib-sub-body { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }

.bib-wrap .bib-sub-wrap { flex: 1 1 auto; min-height: 0; overflow: auto;
           border: 1px solid var(--ts-panel-bd); border-radius: 8px; }


/* ▸N287 */
.bib-wrap .bib-2col { display: grid; grid-template-columns: 1.2fr 1fr; gap: 0 20px; }

.bib-wrap .bib-3col { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px;
            flex: 1 1 auto; min-height: 0; align-items: stretch; }

.bib-wrap .bib-3col > .fil-sec { display: flex; flex-direction: column; min-height: 0; margin-bottom: 0; }

.bib-wrap .bib-btnrow { display: flex; gap: 6px; margin-top: 6px; flex: 0 0 auto; }

.bib-wrap .bib-radrow label { display: flex; align-items: center; gap: 6px; }
   /* ▸N288 §781 §713 */
.bib-wrap .mv { display: inline-flex; gap: 2px; }

.bib-wrap .mv button { width: var(--ts-btn-q); height: var(--ts-btn-q); line-height: 1; padding: 0;
            border: 1px solid var(--ts-panel-bd); border-radius: 4px; background: var(--ts-panel-bg);
            cursor: pointer; font-size: var(--ds-fs-hinweis); }

.bib-wrap .xbtn { border: 1px solid var(--ts-panel-bd); border-radius: 4px; background: var(--ts-panel-bg);
            cursor: pointer; width: 20px; height: 20px; line-height: 1; font-size: var(--ds-fs-hinweis);
            color: var(--ts-red); }

/* ▸N290 §682 */
.bib-wrap .hk-rad { width: 16px; height: 16px; cursor: pointer; }


/* ▸N291 */
.bib-wrap .bib-tabs { display: flex; align-items: center; gap: 6px; }

.bib-wrap .bib-tab { background: transparent; border: 1px solid rgba(255,255,255,.35);
            color: var(--ts-sec-fg); opacity: .75; border-radius: 6px; height: var(--ts-btn-h); padding: 0 10px;
            font: inherit; font-size: 12px; font-weight: 700; cursor: pointer; }

.bib-wrap .bib-tabs .ts-status-txt { margin-left: auto; }
   /* §791: war .bib-status */
.bib-wrap table.bib-egtbl { font-size: var(--ts-tab-fs); }

.bib-wrap .bib-filterrow { display: flex; gap: 6px; flex: 0 0 auto; }

.bib-wrap .bib-filterrow .bib-filter { flex: 1 1 auto; min-width: 0; }

.bib-wrap .zu-caret { display: inline-block; width: 22px; font-size: 18px; font-weight: 700;
            color: var(--ts-ink); cursor: pointer; user-select: none; text-align: center; }

.bib-wrap tr.zu-sub td { background: var(--ts-hover-bg); }

.bib-wrap .zu-sub-name { padding-left: 28px; color: var(--ts-ro-fg); }
   /* §692h: ein Grauton */
.bib-wrap .zu-tvbtn { height: 20px; padding: 0 6px; font-size: var(--ds-fs-hinweis); margin-left: 6px; }

.bib-wrap tr.zu-sub.tsel td { background: var(--ts-meld-err-bg); }

.bib-wrap .bib-tvwrap { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }

.bib-wrap .tvk-leer { color: var(--ts-gedaempft); font-size: 12.5px; padding: 14px; text-align: center; }

.bib-wrap .tvk-list { flex: 1 1 auto; min-height: 0; overflow: auto;
            border: 1px solid var(--ts-panel-bd); border-radius: 8px; padding: 6px; }

.bib-wrap .tvk-list label { display: block; font-size: 12.5px; padding: 2px 4px; }

.bib-wrap .bib-headbtn { background: transparent; border: 1px solid rgba(255,255,255,.35);
            color: var(--ts-sec-fg); border-radius: 6px; padding: 1px 8px; margin-left: 10px;
            font: inherit; font-size: var(--ds-fs-hinweis); font-weight: 600; cursor: pointer; opacity: .85; }
   /* §698 */

/* ▸N302 */

/* ▸N303 */

/* ▸N304 */
.bib-wrap .bib-pos { display: flex; align-items: center; gap: 8px; }

.bib-wrap .bib-pos-txt { font-size: 13px; color: var(--ts-ro-fg); }
   /* §692h */

/* ▸N305 */
.bib-wrap #tree_tbl td { display: flex; align-items: center; min-width: 0; }

.bib-wrap #tree_tbl .bib-tname { flex: 1 1 auto; min-width: 0;
            white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.bib-wrap #tree_tbl .bib-zahl { float: none; margin-left: auto; padding-left: 8px; flex: 0 0 auto; }

.bib-wrap #tree_tbl .bib-tgl { flex: 0 0 18px; }


/* ▸N306 */
.bib-wrap .bib-3col.bib-2colk { grid-template-columns: 1fr 1fr; }

.bib-wrap .bib-hkrow { display: flex; align-items: center; gap: 12px; min-width: 0; }

.bib-wrap .bib-hkrow .v.ro, .bib-wrap .bib-hkrow select { flex: 1 1 auto; min-width: 0; }

.bib-wrap .bib-hkart { margin-bottom: 0; flex: 0 0 auto; }


/* ▸N307 */
.es-wrap .es-save, .es-wrap .es-ubtn { border-radius: 6px; }

.es-wrap .es-paar .es-save { flex: 0 0 auto; }

.bib-wrap .obtn { height: var(--ts-btn-h); font-size: var(--ds-fs-knopf); padding: 0 var(--ds-s); }


/* ▸N482 */
/* ▸N483 */
.wb-wrap .tbl-box thead th.flag { background: var(--ts-flaeche); color: var(--ts-ink);
                 text-align: center; width: 30px; padding: 0 6px; }

/* ▸N484 */
.wb-wrap .tbl-box thead th.flag-num { width: 60px; text-align: center; }

/* ▸N486 */

/* ▸N487 */
.wb-wrap .tbl-box thead th.flag b { display: flex; align-items: center;
                 justify-content: center; width: fit-content; margin: 0 auto;
                 min-width: 17px; height: 17px; padding: 0 3px;
                 background: var(--ts-ink); color: var(--ts-sec-fg); border-radius: 4px;
                 font-size: var(--ds-fs-hinweis); font-weight: 700; line-height: 1; }
   /* ▸N540 §630 */
/* ▸N541 §1243 */
.art-wrap span.req, #m-wiz span.req { color: var(--ts-red); font-weight: 700; }   /* §1862: Pflichtstern auch im Assistenten */
   /* ▸N542 §705 */

/* ▸N543 */

/* Maske */
/* ▸N544 §791 */

.art-wrap .eg-th-eig     { width: 44%; }

.art-wrap .art-btn-w     { margin-top: 8px; width: 100%; justify-content: center; }


/* ▸N548 */
.art-wrap .bv.neg { color: var(--ts-red); font-weight: 700; }


/* ▸N571 */
/* ▸N572 */
.kt-wrap html,
.kt-wrap body { margin: 0; padding: 0; background: var(--ts-panel-bg); }.kt-wrap { height: 100vh; overflow: hidden;
           display: flex; flex-direction: column; font-family: var(--ts-font); color: var(--ts-ink); padding: 10px; box-sizing: border-box; }.kt-wrap .kt-layout { flex: 1 1 auto; min-height: 0; display: grid; grid-template-columns: 1fr var(--ts-opt-w); gap: 10px; align-items: stretch; }.kt-wrap .kt-main { min-height: 0; display: flex; flex-direction: column; gap: 6px; min-width: 0; }.kt-wrap .kt-unten { flex: 1 1 0; min-height: 0; display: grid; grid-template-columns: 1.15fr 1fr; gap: 6px; }.kt-wrap .kt-kopf { align-items: stretch; display: grid; grid-template-columns: 1.1fr 1fr; gap: 12px; }

.kt-wrap .fz { display: grid; gap: 8px; align-items: center; margin-bottom: 7px; }

.kt-wrap .fz > label { text-align: left; white-space: nowrap; font-size: 13px; font-weight: 600; color: var(--ts-ink); }

.kt-wrap .fz .v:disabled,
/* ▸N574 §692 */
.kt-wrap .fz textarea.v { height: 54px; padding: var(--ds-xs) var(--ds-s); }
   /* resize:none aus Grundregel (17), §219c */
.kt-wrap .fz .chk { display: flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 600; }

.kt-wrap .fz .chk input { width: 16px; height: 16px; }

.kt-wrap .tbl-wrap { border: 1px solid var(--ts-panel-bd); border-radius: 8px; overflow: auto; }.kt-wrap .kt-kat-wrap { position: absolute; left: 0; right: 0; top: 34px; bottom: 0; max-height: 360px; }

/* ▸N575 */
.kt-wrap table.kt-tbl { width: 100%; border-collapse: collapse; font-size: var(--ts-tab-fs); }
.kt-wrap table.kt-tbl tr.eig-geerbt td { font-style: italic; color: var(--ts-ro-fg); background: var(--ts-hover-bg); }

.kt-wrap .eig-erbe { font-style: normal; font-size: var(--ds-fs-hinweis); font-weight: 700; color: var(--ts-meld-warn-fg); background: var(--ts-meld-warn-bg); border: 1px solid var(--ts-meld-warn-bd); border-radius: 4px; padding: 0 5px; margin-left: 6px; }

.kt-wrap .flag { text-align: center; font-weight: 700; }

.kt-wrap .flag.off { color: var(--ts-pos-grau); }

.kt-wrap .tbl-btns { display: flex; gap: 8px; margin-top: 8px; }

.kt-wrap .kt-filter { display: flex; gap: 6px; margin-bottom: 6px; }

.kt-wrap .kt-filter input { flex: 1; min-width: 0; }

/* ▸N577 §726b */
.es-wrap .es-dim { color: var(--ts-pos-grau); font-size: var(--ds-fs-hinweis); }

/* ▸N629 */
.wb-wrap .tbl-box td.p-ell { max-width: 26vw; }
   /* 🕘  Letzte Aenderung (19 Module) */
.art-wrap #o_preise::before { content: "\01F4B6"; }
   /* 💶  Preise */
.art-wrap #o_belege::before { content: "\0025A6"; }
   /* ▸N757 */
.art-wrap #o_kategorie::before { content: "\01F5C2"; }
   /* ▤  Lagerprotokoll: Artikel, alle Vorgaenge */
.mo-wrap #o_neu::before { content: "\01F4C4"; }
   /* 📄  monatsabschluss: Neu */
.mo-wrap #o_speichern::before { content: "\01F4BE"; }
   /* 💾  monatsabschluss: Speichern */
.mo-wrap #o_abbrechen::before { content: "\002715"; }
   /* ✕  monatsabschluss: Abbrechen */
.mo-wrap #o_loeschen::before { content: "\01F5D1"; }
   /* 🗑  monatsabschluss: Loeschen */
.mo-wrap #o_drucken::before { content: "\01F5A8"; }
   /* 🖨  monatsabschluss: Drucken */
.mo-wrap #o_datev::before { content: "\01F9FE"; }

/* ▸N820 */
.wb-wrap.tspro-ui .tbl-box tbody td .datepick > input.num{ width:100%; min-width:84px; text-align:left; }

/* Spaltenbreiten der bib-Tabellen (waren th-Inline) */
/* ▸N827 §807 */
/* Kompaktfelder + Hinweise + Kleinkram */
.bib-wrap .v.mw90{max-width:var(--ts-fb-m)}

.bib-wrap .bib-hinweis.abst{margin:6px 2px 0}

.bib-wrap .bh-unten{margin:6px 0 0}

.bib-wrap .bib-btnrow.oben{margin:0 0 6px}

.bib-wrap table td.c{text-align:center}

.bib-wrap .lab .bib-dim{color:var(--ts-gedaempft)}

.bib-wrap .bib-layout > .bib-title{ grid-column: 1 / 3; grid-row: 1; margin: 0; }

.bib-wrap .bib-layout > .opt-col{ grid-column: 3; grid-row: 1 / 3; }


/* ▸N829 */
.bib-wrap .bib-outer{ display:grid; grid-template-columns: 1fr var(--ts-opt-w);
  gap:10px; flex:1 1 auto; min-height:0; align-items:stretch; }

.bib-wrap .bib-links > .bib-layout{ flex:1 1 auto; min-height:0;
  grid-template-columns: 300px 1fr;      /* Optionen-Spalte liegt jetzt aussen */
  grid-template-rows: 1fr; }.bib-wrap .bib-layout > .bib-tree-sec { grid-column: 1; grid-row:1; }.bib-wrap .bib-layout > .bib-main { grid-column: 2;  min-height: 0; grid-row:1; }.bib-wrap .bib-links { display:flex; flex-direction:column; min-height:0; background:var(--ts-panel-bg); border:1px solid var(--ts-panel-bd);
  border-radius:10px; padding:10px; box-sizing:border-box; }.bib-wrap .bib-links > .bib-title { flex:0 0 auto; margin:-10px -10px 10px; border-radius:10px 10px 0 0; }.es-wrap .es-main { min-height: 0; overflow: auto; min-width: 0; background:var(--ts-panel-bg); border:1px solid var(--ts-panel-bd);
  border-radius:10px; padding:10px; box-sizing:border-box; }

.es-wrap .es-main > .es-title{ margin:-10px -10px 10px; border-radius:10px 10px 0 0; }
/* §4732 in der Schicht module, weil die es-wrap-Layoutregeln hier liegen (treffer: [bausteine] verlor gegen [module]) */
/* §4732 (Jörg 08.11. 12:02) Einstellungen · Rubrik-Darstellung: der Baum wählt EINE Rubrik, die als einzige Kachel den Rahmen füllt — Tabelle Einstellung · Wert · Vorgabe · Erklärung,
   Füllzeilen (Hintergrundlinien) bis zur Statuszeile, kein Rollen der Seite. Eingeschaltet je Bereich (module/einstellungen.php $ES_RUBRIK_BEREICHE). Maße als Variablen (Skizze ei5_skizze1 1920×822). */
.es-wrap.es-rubrik { --es-rub-c1: 440px; --es-rub-c2: 340px; --es-rub-c3: 180px; --es-rub-zh: 30px; }
.es-wrap.es-rubrik .es-title { display: none; }                                   /* Kopf trägt die Rubrik-Kachel selbst */
.es-wrap.es-rubrik .es-main { display: flex; flex-direction: column; overflow: hidden; padding: 0; border: 0; background: transparent; }
.es-wrap.es-rubrik .es-grid { columns: auto; display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; max-width: none; }
.es-wrap.es-rubrik .es-grid .es-panel.es-rub { display: none; margin: 0; }
.es-wrap.es-rubrik .es-grid .es-panel.es-rub.es-rub-on { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; overflow: hidden; }
.es-wrap.es-rubrik .es-panel.es-rub .es-ph { display: flex; align-items: baseline; gap: 8px; margin-bottom: 0; }
.es-wrap.es-rubrik .es-panel.es-rub .es-ph .es-ph-r { margin-left: auto; font-weight: 400; opacity: .85; white-space: nowrap; }
.es-wrap.es-rubrik .es-rub-such { padding: 10px 0 8px; flex: 0 0 auto; }
.es-wrap.es-rubrik .es-rub-such input { width: 400px; max-width: 100%; height: var(--ds-feld); box-sizing: border-box; border: 1px solid var(--ts-panel-bd); border-radius: 6px; padding: 0 8px; font: inherit; font-size: 13px; }
.es-wrap.es-rubrik .es-rr { display: grid; grid-template-columns: var(--es-rub-c1) var(--es-rub-c2) var(--es-rub-c3) minmax(0, 1fr); gap: 0 10px; align-items: center; margin: 0; min-height: var(--es-rub-zh); padding: 0 6px; box-sizing: border-box; border-bottom: 1px solid var(--ts-panel-bd); }
.es-wrap.es-rubrik .es-rr.es-rh { background: var(--ts-sec-bg); color: var(--ts-sec-fg); font-size: 12px; font-weight: 700; height: 26px; min-height: 26px; border-bottom: 0; }
.es-wrap.es-rubrik .es-rr.es-rh span { opacity: .9; }
.es-wrap.es-rubrik .es-rub-rows { flex: 1 1 auto; min-height: 0; overflow-y: auto; background: repeating-linear-gradient(to bottom, transparent 0 calc(var(--es-rub-zh) - 1px), var(--ts-panel-bd) calc(var(--es-rub-zh) - 1px) var(--es-rub-zh)); }
.es-wrap.es-rubrik .es-rr > label { font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.es-wrap.es-rubrik .es-rr input, .es-wrap.es-rubrik .es-rr select, .es-wrap.es-rubrik .es-rr textarea { height: 26px; font-size: 12px; }
.es-wrap.es-rubrik .es-rr textarea { height: auto; min-height: 26px; max-height: 60px; }
.es-wrap.es-rubrik .es-rr { background: var(--ts-panel-bg); }                     /* deckt die Füllzeilen-Linien ab — sonst scheinen sie durch hohe Zeilen (Haken, Jörg 12:38 Bild) */
.es-wrap.es-rubrik .es-rr > .kd-checks { display: flex; flex-wrap: wrap; gap: 0 14px; max-height: none; grid-column: 2 / 4; padding: 4px 0; }   /* Hakenliste über Wert + Vorgabe, waagerecht umbrechend */
.es-wrap.es-rubrik .es-rr > .kd-checks label { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; font-size: 12px; line-height: 22px; margin: 0; }
.es-wrap.es-rubrik .es-rr:has(> .kd-checks) > .es-vorg { display: none; }
.es-wrap.es-rubrik .es-rr:has(> .kd-checks) { align-items: start; }
.es-wrap.es-rubrik .es-rr:has(> .kd-checks) > label, .es-wrap.es-rubrik .es-rr:has(> .kd-checks) > .es-erkl { line-height: 30px; }
.es-wrap.es-rubrik .es-rr .es-vorg, .es-wrap.es-rubrik .es-rr .es-erkl { font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.es-wrap.es-rubrik .es-rr .es-vorg { color: var(--ts-gedaempft); }
.es-wrap.es-rubrik .es-rr.sel { background: var(--ts-sel-bg); }
.es-wrap.es-rubrik .es-rr.es-rr-ge > label::after { content: ' ✎'; color: var(--ts-meld-warn-fg); }   /* geändert, noch nicht gespeichert */
.es-wrap.es-rubrik .es-rr.es-rr-leer input, .es-wrap.es-rubrik .es-rr.es-rr-leer select { border-color: var(--ts-meld-err-fg); }   /* nicht gesetzt, keine Vorgabe */
.es-wrap.es-rubrik .es-rr.is-hidden { display: none; }
.es-wrap.es-rubrik .es-rub-stat { flex: 0 0 auto; height: 26px; line-height: 26px; padding: 0 8px; margin: 0 -10px -10px; border-top: 1px solid var(--ts-panel-bd); background: var(--ts-hover-bg); color: var(--ts-gedaempft); font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.es-wrap.es-rubrik #es-toc .es-toc-kb.on { font-weight: 700; background: var(--ts-sel-bg); }
.es-wrap.es-rubrik #es-toc .es-toc-kb { display: flex; align-items: center; gap: 6px; }
.es-wrap.es-rubrik #es-toc .es-toc-kb::after { content: attr(data-esn); margin-left: auto; color: var(--ts-gedaempft); font-size: 12px; font-weight: 400; }
.es-wrap.es-rubrik #es-toc .es-toc-kb.es-toc-warn::before { content: '⚠'; color: var(--ts-meld-warn-fg); font-size: 12px; order: 2; }


/* ── druckvorlagen.php (migriert 06.08.) ── */
/* ▸N1051 */.dv-wrap { font-family: var(--ts-font); color: var(--ts-ink);
           padding:12px; box-sizing:border-box; height:100%; display:flex; flex-direction:column; }


/* ── mahnwesen.php (migriert 06.08.) ── */
.mw-wrap { font-family: var(--ts-font); color: var(--ts-ink); padding: 10px; box-sizing: border-box;
             height: 100%; display: flex; flex-direction: column; }

/* Trefferzeile WRS-Bezugssuche (war inline) */
/* ▸N1087 */

/* ▸N1088 */
/* ▸N1089 */
.her-wrap { font-family: var(--ts-font); color: var(--ts-ink);
            padding: 10px; box-sizing: border-box; height: 100%; display: flex; flex-direction: column; }


/* ── kunden.php (migriert 06.08., T2) ── */
/* ▸N1103 */.kd-wrap { font-family: var(--ts-font); color: var(--ts-ink);
           padding: 10px; box-sizing: border-box; height: 100%; display: flex; flex-direction: column; }


/* ▸N1108 */
/* ▸N1109 */

/* ── lager.php (migriert 06.08., T2) ── */
.lg-wrap { font-family: var(--ts-font); color: var(--ts-ink); padding: 10px; box-sizing: border-box;
             height: 100%; display: flex; flex-direction: column; }


/* ── lieferanten.php (migriert 06.08., T2) ── */
/* ▸N1125 */.lf-wrap { font-family: var(--ts-font); color: var(--ts-ink);
           padding: 10px; box-sizing: border-box; height: 100%; display: flex; flex-direction: column; }.es-wrap { flex: 1; min-height: 0; display: flex; flex-direction: column; font-family: var(--ts-font); color: var(--ts-ink); padding: 12px; box-sizing: border-box; }


/* ── mitarbeiter.php (migriert 06.08., T2) ── */
.ma-wrap { font-family: var(--ts-font); color: var(--ts-ink); padding: 10px; box-sizing: border-box; height: 100%; display: flex; flex-direction: column; }.wb-wrap { --wb-sp-lfd: var(--ts-sp-pos, 48px); --wb-sp-zahl: 72px; --wb-sp-flag: 30px; --wb-sp-bestand: 88px; --wb-sp-termin: 124px; font-family: var(--ts-font); color: var(--ts-ink); padding: 10px; box-sizing: border-box; height: 100%; display: flex; flex-direction: column; }.es-wrap .opt-col { display: flex; flex-direction: column; gap: var(--ts-btn-gap); background: var(--ts-panel-bg);
                    border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); padding: var(--ds-m) var(--ts-kachel-pad); min-height: 0; overflow: hidden; }.es-wrap .opt-col > .es-toc { order: 200; flex: 1 1 auto; min-height: 0; overflow-y: auto; }

/* ▸N1246 §648j §648b */
/* ▸N1247 §795 */
/* §795 (T3): .bk-fertig -> .ts-dim */
/* ▸N1248 §634 */


/* ▸§1374 Ende Wrapper */


#m-wiz .dlg-fuss-rand { padding: var(--ds-m) var(--ds-l); flex: 0 0 auto; }   /* §1757: ohne Trennlinie */

/* ▸N204 §630 §276 */
/* ▸N205 §630 §276 */
/* ▸N206 */   /* ▸N207 §219c *//* ▸N208 */
/* .v.hpick: zentral in filialen.css (2026-07-01) */
/* ▸N209 */
/* ▸N210 */
#m-wiz.mbg {position:fixed;inset:0;background:rgba(0,0,0,.45);display:none;align-items:center;justify-content:center;z-index:9999}

#m-wiz.mbg.open {display:flex}

#m-wiz .mw {background:var(--ts-panel-bg);border-radius:8px;box-shadow:0 12px 40px rgba(0,0,0,.3);overflow:hidden;font-family:var(--ts-font);color:var(--ts-ink)}
   /* ▸N211 §816 */
/* ▸N212 §816 */
#m-wiz .mh {display:flex;align-items:center;justify-content:space-between;background:var(--ts-ink);color:var(--ts-sec-fg)}
   /* ▸N213 §817 */
/* ▸N214 §841 */
#m-wiz .mb2 {padding:14px;overflow-y:auto}

/* .mfoot → .dlg-fuss (§660) */
#m-wiz .adm-btn {height:var(--such-btn-h);padding:0 12px;border:1px solid var(--ts-line);border-radius:6px;background:var(--ts-flaeche);cursor:pointer;font-size:12px;font-weight:600}
   /* ▸N215 */
#m-wiz .adm-btn.ghost {background:var(--ts-panel-bg)}

#m-wiz .adm-btn.ghost.red {border-color:var(--ts-red);color:var(--ts-red)}

#m-wiz .adm-btn.ghost.dark {border-color:var(--ts-ink);color:var(--ts-ink)}

#m-wiz .sinp {padding:6px 8px;border:1px solid var(--ts-line);border-radius: var(--ds-radius);font-size:.9rem;box-sizing:border-box}

/* §4136 (Jörg 01.11. 13:31): Schrittliste des Artikel-Assistenten = Baustein fen-baum/fen-li wie im RMA-Assistenten (waagerechte Reiterleiste .wsteps/.ws entfällt) */
#m-wiz .wz-body { display: flex; flex-direction: column; }   /* Rumpf trägt den Assistentenbaustein ass-fen (§4138) in voller Höhe */

#m-wiz .tbl {width:100%;border-collapse:collapse;font-size:var(--ts-tab-fs)}

#m-wiz .tbl th {background:var(--ts-flaeche);color:var(--ts-ink);padding:var(--ts-tab-th-pad);text-align:left;font-weight:700;position:sticky;top:0}

#m-wiz .tbl td {padding:var(--ts-tab-td-pad);height:var(--ts-tab-td-h);border-bottom:1px solid var(--ts-trenn)}

/* ▸N226 */
#m-pechart {position:fixed;inset:0;background:rgba(24,24,27,.5);display:flex;align-items:center;justify-content:center;z-index:9600;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}

#m-pechart .pec-box {background:var(--ts-panel-bg);width:min(640px,94vw);border-radius:10px;overflow:hidden;box-shadow:0 16px 48px rgba(0,0,0,.35)}

#m-pechart .pec-head {background:var(--ts-ink);color:var(--ts-sec-fg);display:flex;justify-content:space-between;align-items:center}

#m-pechart .pec-grp {display:flex;gap:4px}

#m-pechart .pec-grp button {padding:5px 10px;border:1px solid var(--ts-line);background:var(--ts-panel-bg);border-radius: var(--ds-radius);font-size:12px;font-weight:600;cursor:pointer;color:var(--ts-ink)}

#m-pechart .pec-chart {padding:14px}

/* .ts-memo-foot → .dlg-fuss (§660) */
/* ▸N499 */
/* ▸N500 §660b */
.m-datenabgleich .obtn { -webkit-appearance: none; appearance: none; }

/* ▸N521 §660 §770 */
/* ▸N522 */
#m-wiz .wz-lw table.tbl{width:100%;border-collapse:collapse;font-size:13px}

#m-wiz .wz-lw thead th{position:sticky;top:0;background:var(--ts-flaeche);padding:5px 6px;text-align:left;
  font-weight:700;border-bottom:1px solid var(--ts-panel-bd);white-space:nowrap}

#m-wiz .wz-lw tbody td{padding:4px 6px;border-bottom:1px solid var(--ts-trenn)}

#m-wiz .wz-lw tbody tr.js-row{cursor:pointer}

#m-wiz .wz-lw td.wz-mono-nr{color:var(--ts-akzent);white-space:nowrap}

/* ▸N524 */



#m-wiz #w7-eigbox tr td{padding:3px 6px;border-bottom:1px solid var(--ts-trenn)}

#m-wiz #w7-eigbox tr td:has(> .eg-inline), #m-wiz #w7-eigbox tr td:has(> .eg-cb){padding:0}

#m-pechart .as-svg            { display: block; }#m-wiz .wz-body { flex:1 1 auto;overflow:auto; min-height: 200px; }

#m-wiz .wz-hint    { background: var(--ts-meld-warn-bg); border: 1px solid var(--ts-meld-warn-bd); color: var(--ts-meld-warn-fg);
                     padding: 6px 8px; border-radius: 4px; font-size: var(--ds-fs-hinweis); margin-bottom: 8px; }

#m-wiz .wz-err-box { background: var(--ts-meld-err-bg); border: 1px solid var(--ts-meld-err-bd); color: var(--ts-meld-err-fg);
                     padding: 6px 8px; border-radius: 4px; font-size: var(--ds-fs-hinweis); }

#m-wiz .wz-row     { display: flex; gap: 5px; align-items: center; }

#m-wiz .wz-lbl     { font-size: .85rem; font-weight: 600; color: var(--ts-gedaempft); flex-shrink: 0; }

#m-wiz .wz-flex1   { flex: 1; }

#m-wiz .wz-msg     { min-height: 18px; margin-top: 5px; font-size: var(--ds-fs-hinweis); }

#m-wiz .wz-res     { min-height: 50px; margin-top: 5px; }

#m-wiz .wz-sub     { font-size: var(--ds-fs-hinweis); color: var(--ts-gedaempft); margin-bottom: 5px; }

#m-wiz .wz-sub.mt  { margin-bottom: 0; margin-top: 5px; }
/* §4138: Schritt-7-Regeln (.wz-sub/.wz-row in der Kachel) bei ASSISTENTENFENSTER */   /* §1865: Kopfzeile Schritt 7 so gross wie die Tabellenschrift — Schicht module (in bausteine verlor sie gegen #m-wiz .wz-sub) */
   /* §1866: Abstand Knopf/Haekchen bzw. Label/Feld (in bausteine verlor er gegen #m-wiz .wz-row gap 5px) */
   /* §1866: Haekchen 13px, ohne wz-sub-Aussenabstand -> auf der Mittellinie des Knopfs */

#m-wiz .wz-dim     { color: var(--ts-gedaempft); }

#m-wiz .wz-muted   { color: var(--ts-gedaempft); }

#m-wiz .wz-ok      { color: var(--ts-ok); }

#m-wiz .wz-ok.sm   { font-size: var(--ds-fs-hinweis); padding: 4px 0; }

#m-wiz .wz-warn    { color: var(--ts-meld-warn-fg); font-weight: 600; }

#m-wiz .wz-err     { color: var(--ts-red); }

#m-wiz .wz-err.b   { font-weight: 600; }

#m-wiz .wz-mono    { font-family: monospace; }

#m-wiz .wz-mono-nr { font-family: monospace; color: var(--ts-red); }

#m-wiz .wz-mono-64 { font-family: monospace; width: var(--ts-fb-s); }

#m-wiz .wz-w64     { width: var(--ts-fb-s); }

#m-wiz .wz-w70     { width: var(--ts-fb-s); }

#m-wiz .wz-w110    { width: var(--ts-fb-l); }

#m-wiz .wz-w120    { width: 120px; }

#m-wiz .wz-w130    { width: var(--ts-fb-xl); }

#m-wiz .wz-q       { width: 100%; margin-bottom: 6px; }

#m-wiz .wz-lw      { max-height: 160px; overflow-y: auto; border: 1px solid var(--ts-trenn); border-radius: var(--ds-radius); }

#m-wiz .wz-lw.lw200{ max-height: 200px; }

#m-wiz .wz-lw.lw280{ max-height: 280px; }

#m-wiz .wz-lw.lw300{ max-height: 300px; }

#m-wiz .wz-fin     { text-align: center; padding: 24px 16px; }

/* ▸N547 */
#m-wiz .wz-icon    { font-size: 2.4rem; margin-bottom: 14px; }

#m-wiz .wz-icon.sm { font-size: 2rem; margin-bottom: 10px; }

#m-wiz .wz-h       { font-weight: 700; margin: 0; }

#m-wiz .wz-h-ok    { font-size: 1rem; font-weight: 700; color: var(--ts-ok); margin: 0 0 8px; }

#m-wiz .wz-p       { font-size: .85rem; color: var(--ts-gedaempft); margin: 0 0 14px; }

#m-wiz .wz-p.mt    { margin: 16px 0 0; }

#m-wiz .wz-sum     { background: var(--ts-flaeche); border-radius: 6px; padding: 10px 14px; text-align: left;
                     font-size: .85rem; color: var(--ts-ink); display: inline-block; min-width: 300px; }

#m-wiz .wz-sum-h   { color: var(--ts-gedaempft); font-size: .7rem; text-transform: uppercase;
                     letter-spacing: .06em; margin-bottom: 6px; }

/* ▸N770 */
/* ▸N771 §532 */
#m-wiz .adm-btn.ghost[onclick^="cm("]::before { content: "\002715"; }

/* ▸N1044 §692 */

/* ── angebot.php (migriert 06.08.) ── */
.m-angebot .be-top { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: var(--ts-kachel-gap); align-items: stretch; flex: 0 0 auto; }
   /* §781 (§713) */.m-angebot .ang-betr { display: grid; grid-template-columns: auto 1fr; gap: 5px 10px; align-items: center; font-size: 13.5px; }
.m-angebot .ang-betr .bl { font-weight: 700; }
.m-angebot .be-betr { display: grid; grid-template-columns: 1fr auto; gap: 5px 10px; align-items: center; }
.m-angebot .be-betr .bl { font-size: 13px; font-weight: 700; }
.m-angebot .be-betr .bv { background: var(--ts-panel-bg); border: 1px solid var(--ts-panel-bd); border-radius: 6px; padding: 3px 10px; text-align: right; min-width: 90px; }
   /* ▸N1046 §692c */


/* ── auftrag.php (migriert 06.08.) ── */
.m-auftrag .be-top { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: var(--ts-kachel-gap); align-items: stretch; flex: 0 0 auto; }

/* ▸N1047 */.m-auftrag .ang-betr { display: grid; grid-template-columns: auto 1fr; gap: 5px 10px; align-items: center; font-size: 13.5px; }
.m-auftrag .ang-betr .bl { font-weight: 700; }
.m-auftrag .be-tbl-btns { display: flex; gap: 8px; margin-top: 8px; align-items: center; flex-wrap: wrap; }
/* §2769 Reservierungsfenster: jede Stückzeile mit Status; Status-Klartext braucht mehr als die 60-px-Katalogspalte, offene Stücke rot (Semantik offen wie .ad-offen/.bhk-offen) */
.ts-dlg .au-res th.sp-status { width: calc(var(--ts-sp-res-status) + var(--ts-sp-pad)); }
.ts-dlg .au-res tr.au-res-offen td { color: var(--ts-red); font-style: italic; }
.ts-dlg .au-res .fen-block-t.au-res-offen { color: var(--ts-red); }   /* §2770 Bilanz im Kacheltitel rot, solange etwas offen ist */
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-block > .dlg-inhalt { margin-top: 0; }   /* §2770 Tabelle in einer Kachel: Abstand gibt schon die Kachel (gap) */


/* ── bestellung.php (migriert 06.08.) ── */
.m-bestellung .be-top { display: grid; grid-template-columns: 1fr 1.25fr; gap: var(--ts-kachel-gap); align-items: stretch; flex: 0 0 auto; }

/* ▸N1048 */


/* ── controlling.php (migriert 06.08.) ── */
.m-controlling .be-top { display: grid; grid-template-columns: 0.9fr 1.4fr; gap: var(--ts-kachel-gap); align-items: stretch; }
.m-controlling .be-top > .fil-sec { height: 100%; display: flex; flex-direction: column; }
.m-controlling .be-top > .fil-sec > .fil-sec-body { flex: 1 1 auto; }


/* ── inventur.php (migriert 06.08.) ── */
.m-inventur .be-top { display: grid; grid-template-columns: 1fr 0.34fr; gap: var(--ts-kachel-gap); align-items: stretch; flex: 0 0 auto; }
.m-inventur .be-tbl-btns { display: flex; gap: 8px; margin-top: 8px; align-items: center; }
.m-mahnwesen .mw-summe { display: flex; align-items: center; gap: var(--ds-l); flex: 0 0 auto; padding: var(--ds-xs) 0 0; font-size: var(--ts-tab-fs); color: var(--ts-ink); }   /* §1430 (Joerg): keine schwarze Fusszeile mehr — Summenzeile wie in Belege/Vertraege (bhk-summe) */
.m-mahnwesen .fil-sec-body.tbl-scroll { display: flex; flex-direction: column; min-height: 0; overflow: hidden; }   /* §1430: Liste scrollt IN der Kachel, Summenzeile bleibt sichtbar */
.m-mahnwesen #mw_tblbox { flex: 1 1 auto; min-height: 0; overflow: auto; }
   /* ▸N1052 */.m-mahnwesen .mw-summe .sp-rechts { margin-left: auto; display: flex; gap: var(--ds-l); }
.m-mahnwesen .mw-summe b { color: var(--ts-ink); }


/* ── rechnung.php (migriert 06.08.) ── */
/* §3299 (Joerg 20.10. 22:48, Zahlungsart in „Zahlung / Versand“): Kachel 2 breiter (2fr/1fr/1fr -> 1.85/1.15/1, gemessen 675/337/337 -> ~634/394/342 bei 1600 px) und
   Beschriftungsspalte dort 140 statt 190 px („Archiv-Dokument“ bricht bei 120 um) — so passt „Rechnung, 14 Tage netto“ (~195 px mit Chevron) ins Feld (~212 px);
   alle Felder der Kachel werden gleich breiter, Ausrichtung bleibt. Kachel 1 verliert ~40 px, dort ist nur das Mitarbeiter-Feld dehnbar (1fr). */
.m-rechnung .be-top { display: grid; grid-template-columns: 1.85fr 1.15fr 1fr; gap: var(--ts-kachel-gap); align-items: stretch; flex: 0 0 auto; }
.m-rechnung .fil-sec-zv .fz { grid-template-columns: var(--fb-140) 1fr; }

/* ▸N1053 */.m-rechnung .ang-betr { display: grid; grid-template-columns: auto 1fr; gap: 5px 10px; align-items: center; font-size: 13.5px; }
.m-rechnung .ang-betr .bl { font-weight: 700; }


/* ── reparatur.php (migriert 06.08.) ── */
.m-reparatur .be-wrap { font-family: var(--ts-font); color: var(--ts-ink); padding: 10px; box-sizing: border-box; }
.m-reparatur .be-layout { display: grid; grid-template-columns: 1fr var(--ts-opt-w); gap: var(--ts-kachel-gap); align-items: start; }
.m-reparatur .fz-ta { display:grid; gap:6px; align-items:start; margin:3px 0; }
.m-reparatur .fz-ta > label { text-align:left; font-size:13.5px; padding-top:3px; }
.m-reparatur .fz-ta textarea { width:100%; box-sizing:border-box; font-family:inherit; font-size:13.5px; }
.m-reparatur input.v, .m-reparatur select.v, .m-reparatur textarea.v { font-family: inherit; width: 100%; }


/* ── rma.php (migriert 06.08.) ── */
.m-rma .be-wrap { font-family: var(--ts-font); color: var(--ts-ink); padding: 10px; box-sizing: border-box; }
.m-rma .be-layout { display: grid; grid-template-columns: 1fr var(--ts-opt-w); gap: var(--ts-kachel-gap); align-items: start; }
.m-rma .ang-da { font-size: 13.5px; }
/* ▸N1055 §181 */.m-rma .fz-ta { display:grid; gap:6px; align-items:start; margin:3px 0; }
.m-rma .fz-ta > label { text-align:left; font-size:13.5px; padding-top:3px; }
.m-rma .fz-ta textarea { width:100%; box-sizing:border-box; font-family:inherit; font-size:13.5px; }
   /* ▸N1056 §220 */.m-rma input.v, .m-rma select.v, .m-rma textarea.v { font-family: inherit; width: 100%; }


/* ── warenruecksendung.php (migriert 06.08.) ── */
.m-warenruecksendung .be-top { display: grid; grid-template-columns: 0.85fr 1.5fr; gap: var(--ts-kachel-gap); align-items: stretch; flex: 0 0 auto; }


/* ── wareneingang.php (migriert 06.08.) ── */
.m-wareneingang .be-top { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: var(--ts-kachel-gap); align-items: stretch; flex: 0 0 auto; }
.m-wareneingang .be-betr { display: grid; grid-template-columns: 1fr auto; gap: 5px 10px; align-items: center; }
.m-wareneingang .be-betr .bl { font-size: 13px; font-weight: 700; }
.m-wareneingang .be-tbl-btns { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; }


/* ── wartungsvertraege.php (migriert 06.08.) ── */
.m-wartungsvertraege .be-main > .wv-unten { flex: 1 1 auto; min-height: 0; display: grid; grid-template-columns: var(--wv-unten-cols); gap: var(--ts-kachel-gap); }
.m-wartungsvertraege .be-top { display: grid; grid-template-columns: 1.8fr 1.1fr 1.1fr; gap: var(--ts-kachel-gap); align-items: stretch; flex: 0 0 auto; }   /* §3304: war 2fr 1fr 1fr — Zahlungsart-Dropdown (185 px) schnitt „Rechnung, 7 Tage netto“ ab; gemessen */
   /* ▸N1094 §698c */
/* ▸N1095 */
.m-kunden .kname.editing { background:var(--ts-panel-bg); border:1px solid var(--ts-panel-bd); border-radius:6px; box-sizing:border-box; color: var(--ts-ink); }
   /* 24.07.: dritte Spalte in die Logo-Kachel gewandert */.m-hersteller .logo-box { border: 1px solid var(--ts-panel-bd); border-radius: 8px; background: var(--ts-panel-bg);
            height: 72px; display: flex; align-items: center; justify-content: center;
            color: var(--ts-gedaempft); font-size: 12px; margin-bottom: 8px; overflow: hidden; }

/* ▸N1097 */
.m-hersteller .logo-box-gross { height: 160px; flex: 0 0 160px; margin-bottom: 8px; }

.m-hersteller .logo-box.logo-dunkel { background: var(--ts-ink); }

.m-hersteller .logo-box img { max-width: 100%; max-height: 100%; object-fit: contain; }


.m-hersteller .tbl-wrap { flex: 1; min-height: 0; overflow: auto; }

/* ▸N1101 */
.m-hersteller .tbl-box th { position: sticky; top: 0; background: var(--ts-field-ro); }

.m-hersteller .tbl-box td { border-bottom: 1px solid var(--ts-trenn); }


.m-hersteller .kv { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 4px 10px; font-size: 13px; }

.m-hersteller .kv .k { color: var(--ts-ro-fg); }

.m-hersteller .kv .val { color: var(--ts-ink); }


.m-hersteller .opt-spacer { flex: 1; }
.m-kunden .fz input.v, .m-kunden .fz select.v { font-family: inherit; }
.m-kunden .fz.ta textarea { width: 100%; height: 64px; padding: 6px 8px; box-sizing: border-box; /* §220: redundantes resize raus */
                  font-family: inherit; font-size: 13px; }
.m-kunden .fz.ta textarea:disabled, .m-kunden .fz.ta textarea[readonly] { border: 1px solid var(--ts-panel-bd); border-radius: 6px; }
.m-kunden .kd-2col .fz.ta textarea.v { height: 61px; min-height: 61px; }
   /* §824: war #tel_tbody (tot) — Spalte E-Rechnung ✓ */.m-kunden .opt-spacer { flex: 1; }
.m-lager .tbl-box { border: 1px solid var(--ts-panel-bd); border-radius: 8px; overflow: hidden; display: flex; flex-direction: column; flex: 1; min-height: 0; }
/* ▸N1110 §825 */.m-lager .tbl-box .num { text-align: right; font-variant-numeric: tabular-nums;
  /* ▸N1111 */
  width: 84px; min-width: 84px; max-width: 84px; box-sizing: border-box; }
.m-lager .tbl-box th.num { text-align: center; }
.m-lager .tbl-box .neg { font-weight: 700; }
.m-lager .tbl-box .neg:not(.ekv) { color: var(--ts-red); }

/* ▸N1123 §648y */
.m-datenabgleich .da-ch .obtn { height:var(--ts-btn-h); border:1px solid rgba(255,255,255,.45); border-radius:6px; background:transparent; color:var(--ts-sec-fg); font:inherit; font-size:12px; font-weight:700; cursor:pointer; padding:0 10px; }
.m-lieferanten input.v, .m-lieferanten select.v, .m-lieferanten textarea.v { font-family: inherit; width: 100%; }
.m-lieferanten .fz.ta textarea { display: block; height: 54px; padding: 6px 8px; -webkit-appearance: none; appearance: none; }
/* ▸N1128 §824 */.m-lieferanten .opt-spacer { flex: 1; }


/* ▸N1129 *//* §796 (T4): .m-lieferanten .be-x -> .ts-x zentral */.m-lieferanten .be-body { padding: 0; overflow: auto; }
.m-mitarbeiter .fz textarea.v.ta { display: block; height: auto; min-height: 46px; padding: 6px 8px; line-height: 1.3; }
   /* §220: redundantes resize raus */

/* Popup */

/* Such-Tabelle (.tbl-*) + Beleg-/Info-Popup (.be-*) */.m-mitarbeiter .tbl-box { border: 1px solid var(--ts-panel-bd); border-radius: 8px; overflow: hidden;
           display: flex; flex-direction: column; min-height: 180px; max-height: 300px; }

/* ▸N1150 *//* §796 (T4): .m-mitarbeiter .be-x -> .ts-x zentral */.m-mitarbeiter .be-body { padding: 0; overflow: auto; }
.m-monatsabschluss .den-grid { display: flex; flex-direction: column; gap: var(--fz-zeilen-gap); }
.m-monatsabschluss .den-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 16px; }   /* §3937 drei gleiche Spalten innerhalb der Kachel — max-content lief bei schmalerer Kachel rechts hinaus */
.m-monatsabschluss .den { display: flex; align-items: center; gap: 6px; justify-content: flex-end; }
.m-monatsabschluss .den .dl { font-size: var(--ds-fs-text); min-width: 50px; text-align: right; flex: 0 0 auto; }
.m-monatsabschluss .den .dv { width: var(--ts-fb-s); text-align: right; height: var(--ts-feld-h); box-sizing: border-box; border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); padding: 0 8px; font: inherit; font-size: var(--ds-fs-text); flex: 0 1 var(--ts-fb-s); min-width: 36px; }   /* §3937 Schrift und Innenabstand wie alle Felder (12 px), Feld schrumpft statt überzulaufen */
.m-monatsabschluss .best-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px 14px; }
   /* 19.07. (Jörg): 4 Spalten schnitten die Felder ab */.m-monatsabschluss .best-grid .fz { grid-template-columns: minmax(100px, 150px) minmax(0, 1fr); }
/* §3926 Kassen-Beträge rechtsbündig wie überall (Gegenleser 30.10.: „Geldbeträge linksbündig“) — das Datum bleibt linksbündig */
.m-monatsabschluss .best-grid .v:not(#f_einzahlungsdatum):not(#k_einzahlungsdatum) { text-align: right; }
/* §3924 Monatsabschluss „Kasse des Monats“ (nur lesend): zwei Feldpaare je Zeile, Beschriftungen je Spalte bündig (.fz als display:contents wie lbl-auto),
   Zeilenabstand = Hausabstand --fz-zeilen-gap (kein Verteilen über die Höhe) — fünf Zeilen ergeben die Höhe der Kopfkachel */
.m-monatsabschluss .best-grid.ka-kasse2 { grid-template-columns: max-content minmax(0,1fr) max-content minmax(0,1fr); column-gap: 8px; row-gap: var(--fz-zeilen-gap); align-items: center; align-content: start; }
.m-monatsabschluss .best-grid.ka-kasse2 > .fz { display: contents; }
.m-monatsabschluss .best-grid.ka-kasse2 > .fz > label { text-align: left; white-space: nowrap; }
.m-monatsabschluss .best-grid.ka-kasse2 > .fz:nth-child(2n+1) > :last-child:not(label) { margin-right: var(--ka-paar-abstand); }   /* §4047 Paarabstand am Feld statt Einzug der Beschriftung (M5) */
.m-monatsabschluss { --ka-paar-abstand: 10px; }
/* §3923 obere Kachelreihe: gleiche Höhe (gemessen links 221, rechts 231 px — die linke Kachel trug margin-bottom 10 px) und die Kassenkachel
   folgt der Kopfkachel (Jörg 30.10. 21:41) */
.m-monatsabschluss .ka-side > .fil-sec { margin-bottom: 0; display: flex; flex-direction: column; }
.m-monatsabschluss .ka-side > .fil-sec > .fil-sec-body { flex: 1 1 auto; }
/* §3922 Kopfkachel Monatsabschluss: Bemerkung zwei Feldhöhen statt der globalen 120 px (§698) — sonst bestimmt sie die Höhe der oberen Reihe; der volle Text steht im Memo-Fenster (§699) */
.m-monatsabschluss .ka-side .fz-ta textarea.v { height: calc(2 * var(--ts-feld-h)); min-height: calc(2 * var(--ts-feld-h)); }
/* §3920 Kassenabschluss-Kachelreihe (Jörg 20:44, schmaleres Fenster: Zähler lief über, Bestand rausgeschoben): Zähler in seiner natürlichen Breite,
   Kopf und Bestand teilen den Rest mit Mindestbreiten; reicht die Breite nicht, bricht der Bestand in eine eigene Zeile statt zu überlaufen */
.m-monatsabschluss .ka-side { flex-wrap: wrap; }
.m-kassenabschluss #kt_zahlarten:empty { display: none; }   /* §3928 leere Statuszeile zeichnet keine Linie */
/* §3927 Geld zählen (Gegenleser): drei Spalten gleich breit mit gleich breiter Beschriftung, Zählfeld für bis zu 4 Ziffern statt Standardbreite */
/* §3929 (Jörg 30.10. 22:28) Platz der Kachelreihe nach Inhalt verteilt: Kopf schmal (TSE auf drei Zeilen statt einer langen), Zählen breiter,
   alle Felder in Feldhöhe und mit Hauszeilenabstand --fz-zeilen-gap — kein Verteilen über die Höhe, keine Mini-Felder */
/* §3932 gleiche Kachelbreiten in beiden Masken: Bestand ist derselbe Baustein (includes/kassen_bestand.php) und hat überall dieselbe feste Breite */
/* §3933 Kopf in beiden Masken fest schmal (Firma/Kasse, Mitarbeiter — kurze Inhalte), die Mittelkachel (Zählen bzw. Summen) nimmt den Rest */
/* §3934 (Design-Analyse, Jörg 30.10. 23:33) beide Masken gleich: Bestand fest 520, links und Mitte teilen den Rest 6:5 — links etwas breiter (Firmenname), Mitte kompakt */
.m-monatsabschluss .ka-side > .fil-sec { flex: 6 1 0; min-width: 0; }
.m-monatsabschluss .ka-side > .fil-sec:is(.ka-zaehlen, .ka-zahlen) { flex: 5 1 0; }
/* §3935 Farben der Summen/Kennzeichen stehen am Dateiende ohne Schicht (in der Schicht module schlug sie eine spätere Schicht) */
/* §3933 Suche nimmt die freie Breite, Filterknöpfe gleich breit rechts */
.m-monatsabschluss .bel-filter { flex-wrap: nowrap; }
.m-monatsabschluss .bel-suche { flex: 1 1 auto; width: auto; min-width: 0; }
.m-monatsabschluss .bel-art-filter { flex: 0 0 auto; }
.m-monatsabschluss .bel-fbtn { width: 110px; padding: 0; justify-content: center; }
.m-monatsabschluss .ka-side > .fil-sec.ka-bestand { flex: 0 0 520px; }
/* Bestand: Beschriftung je Spalte bündig, Zeilen im Hausabstand, „Vorschlagswerte" in Knopfbreite rechtsbündig unter den Feldern */
/* §3929 Belegkachel endet bündig mit den Optionen (globales .fil-sec margin-bottom 10 px hob die Unterkante an — wie §3923 oben) */
.m-monatsabschluss .ka-split > .ka-belege { margin-bottom: 0; }
/* ▸N1154 §685b */.m-monatsabschluss .fz-ta { display:grid; gap:6px; align-items:start; margin:3px 0 7px; }
.m-monatsabschluss .fz-ta > label { text-align:left; font-size: var(--ds-fs-text); font-weight:600; padding-top:3px; color: var(--ts-ink); }
.m-monatsabschluss .fz-ta textarea { width:100%; box-sizing:border-box; font-family:inherit; font-size: var(--ds-fs-text); padding:6px 8px; }
.m-monatsabschluss .fz-ta textarea:disabled, .m-monatsabschluss .fz-ta textarea[readonly] { border:1px solid var(--ts-panel-bd); border-radius:6px; }
   /* §220: totes resize:vertical raus (22.08.-Grundregel) *//* §692: Kopie entfallen — zentrale Regel (Z.3507) */.m-monatsabschluss .tbl-box { border: 1px solid var(--ts-panel-bd); border-radius: 8px; overflow: hidden; display: flex; flex-direction: column; }


/* ── warenbedarf.php (migriert 06.08., T3) ── */
.m-warenbedarf #wb-status-txt { font-weight:500; opacity:.8; margin-left:10px; }
.m-warenbedarf .fz.ta textarea { width: 100%; min-height: 70px; padding: 6px 8px; box-sizing: border-box; border: 1px solid var(--ts-panel-bd); border-radius: 6px; font-family: inherit; font-size: 13px; }

/* ▸N1159 */
/* ▸N1160 */
/* ▸N1161 *//* ▸N1162 §705 K-56 *//* §801 (T6): .wb-tbl-btns -> .be-tbl-btns */

/* ▸N1163 */

/* ▸N1164 */
/* §3948 Regel für #o_vorschlag im Kachelkopf entfernt — Knopf steht seit §3934 in den Optionen */


/* ▸N1165 */
.m-monatsabschluss .ka-zwarn {
  color: var(--ts-red); border: 1px solid var(--ts-red);
  border-radius: 6px; padding: 5px 9px; margin: 0 0 6px; font-size: var(--ds-fs-text); line-height: 1.45;
}


/* ▸N1172 */
/* ▸N1173 */
/* ▸N1174 §428 */
.m-einstellungen .es-toc { padding: 0 2px; }

.m-einstellungen .es-toc-t { display: block; width: 100%; text-align: left; background: none; border: 0;
  padding: 5px 4px; font-size: var(--ts-tab-fs); font-weight: 700; cursor: pointer; color: var(--ts-ink); }

.m-einstellungen .es-toc-pm { display: inline-block; width: 13px; font-weight: 700; }

.m-einstellungen .es-toc-k { display: none; padding: 0 0 4px 13px; }

.m-einstellungen .es-toc-kb { display: block; width: 100%; text-align: left; background: none; border: 0;
  height: var(--ts-btn-h); padding: 0 4px; font-size: 12px; cursor: pointer; color: var(--ts-ink); }

.m-einstellungen .es-panel.es-hl { animation: es-hl-blink 1.6s ease-out 1; }

.m-einstellungen .es-kette-tab tr.sprung td{background:var(--ts-meld-warn-bg);font-weight:600}.m-einstellungen .es-kette-tab th,
.m-einstellungen .es-kette-tab td { border:1px solid var(--ts-line);padding:2px 7px;text-align:left;white-space:nowrap; white-space:normal; }.m-einstellungen .es-kette-tab { border-collapse:collapse;width:100%;margin:4px 0 6px;font-size:var(--ds-fs-text); margin-top:6px; }.m-einstellungen .es-kette-tab th { background:var(--ts-flaeche);font-weight:600; padding: var(--ds-xs) var(--ds-s); }

.m-einstellungen .es-kette-tab td{padding: var(--ds-xs) var(--ds-s);vertical-align:top}

.m-einstellungen .es-kette-tab tr.fremd td{background:var(--ts-flaeche);color:var(--ts-gedaempft)}.m-einstellungen .es-kette-fazit { margin:2px 0 12px;font-size:var(--ds-fs-text);font-weight:600; margin-top:8px; }

.m-einstellungen .es-kette-hinweis{margin-top:4px;font-size:12px;color:var(--ts-meld-warn-fg)}


/* ▸N1272 §757 */
.m-wissen .such-bar { margin-bottom:var(--ts-btn-gap); }
   /* ▸N1273 §757d */
.m-wissen .wi-reiter { flex-wrap:wrap; }
   /* ▸N1274 §760b */
.m-wissen .wi-reiter .obtn { width:auto; padding:0 10px; }
   /* ▸N1275 K-351 */
/* ▸N1276 §760b */
.m-wissen .wi-liste { flex:1 1 auto; min-height:0; overflow:auto; }

.m-wissen .wi-liste table { width:100%; }

/* ▸N1277 §758 */
/* ▸N1278 §758b */
/* ▸N1279 §758c */
.m-wissen .wi-liste .sp-txt,
.m-wissen .wi-liste .sp-text { width:100%; white-space:normal; }


.m-wissen .wi-detail { min-height:0; overflow:auto; }

.m-wissen .wi-detail pre { margin:0; white-space:pre-wrap; word-break:break-word; font-family:ui-monospace, monospace;
                            font-size: var(--ds-fs-hinweis); line-height:1.45; }
   /* ▸N1280 §757d */
/* ▸N1281 §759b */
.m-wissen .wi-block { margin-bottom:10px; font-size:var(--ts-tab-fs); }

.m-wissen .wi-block h3 { margin:0 0 4px; font-size:1em; color:var(--ts-akzent); }
   /* ▸N1282 §770 */
.m-wissen .wi-block ul { margin:0; padding-left: var(--ds-l); }

.m-wissen .wi-block li { margin-bottom:3px; }

/* ▸N1306 §839 */
#m-wiz .mh .ts-x { color: var(--ts-sec-fg); }
}

/* §1436cb: Vorschaubild des Etikett-Testdrucks (Einstellungen → Etiketten) */
/* ▸§1498 (Joerg: "beim Vorschau-Knopf verschiebt sich das ganze Fenster nach unten"): Der Platz fuer die Vorschau steht von Anfang an fest —
   510 x 190 px sind massstaeblich 51 x 19 mm bei 10 px/mm, plus Rahmen und Masszeile. Dadurch springt beim Klick nichts mehr. */
/* §1499 (Joerg: "jetzt steht das ganze Fenster ueber die Groesse"): Der Platz bleibt reserviert, aber er WAECHST NICHT ueber die Kachel hinaus —
   die Vorschau nimmt die verfuegbare Breite und behaelt das Seitenverhaeltnis 51:19. Feste 514 px sprengten die zweispaltige Kachel. */
.m-einstellungen .es-etikett-bild { margin-top: var(--ts-luft-s, 6px); width: 100%; max-width: 340px; aspect-ratio: 51 / 21; }
.m-einstellungen .es-etikett-kante { width: 100%; max-width: 340px; aspect-ratio: 51 / 19; box-sizing: border-box; display: inline-block; border: 2px solid var(--ts-akzent); background: var(--ts-panel-bg); line-height: 0; border-radius: 18px; overflow: hidden; /* §1457: 11355 hat runde Ecken — 18 px = ca. 1,8 mm bei 10 px/mm (geschaetzt) */ }
.m-einstellungen .es-etikett-kante img { display: block; width: 100%; height: 100%; object-fit: contain; transform: rotate(180deg); }   /* 51 mm bei 10 px/mm; §1453: Vorschau wieder gedreht — beim Testrahmen stimmten so Vorschau UND Druck */
.m-einstellungen .es-etikett-mass { font-size: var(--ts-schrift-klein, 11px); color: var(--ts-gedaempft); margin-top: 2px; }   /* §1496: --ts-text-schwach existiert nicht (Prueferbefund) */

/* ▸§1495 (Joerg 22.09.2026: "im Edit-Modus geht es, im Non-Edit-Modus nicht"): Im Non-Edit-Modus sind die Positionsfelder DEAKTIVIERT. Fuer
   deaktivierte Felder gab es nur eine Regel, und die ist auf `.tbl-box` gescopt (Z. 4691) — die Positionstabellen heissen aber `be-tbl` in einem
   schlichten <div>. Deshalb behielten Bemerkung/Anz/EK/VK/Kalk/Offen den Standardhintergrund und blieben bei der Markierung hell.
   Diese Regeln stehen bewusst OHNE Schicht und am Dateiende: ungeschichtet schlaegt jede Schicht, damit kein spaeteres `@layer` sie wieder aushebelt. */
tbody td input:not([type="checkbox"]):not([type="radio"]),
tbody td select,
tbody td textarea,
tbody td input:disabled,
tbody td select:disabled,
tbody td textarea:disabled { background-color: transparent; border-color: transparent; }
tbody td input:not([type="checkbox"]):not([type="radio"]):focus,
tbody td select:focus,
tbody td textarea:focus { background-color: var(--ts-panel-bg); border-color: var(--ts-panel-bd); }

/* ▸§1497 (Joerg 22.09.2026: "dann hoert das Scrollen von alleine auf"): Die Kachel „Etikettendruck (Dymo)" laeuft jetzt ueber die GANZE Breite
   des Einstellungsbereichs — wie die Kacheln Benutzer, Bank und Verwendungszwecke (Z. 3453–3455). Dadurch stehen die Felder nebeneinander statt
   untereinander, die Kachel wird kurz genug und niemand muss rollen. Der §1496-Versuch mit eigenem Roller je Kachel ist zurueckgenommen. */
.es-grid .es-panel[data-esgrp="Etikettendruck (Dymo)"] { column-span: all; columns: 2; column-gap: 24px; }
/* §1497b: Der Inhalt laeuft in ZWEI Spalten — nur volle Breite haette die Kachel nicht niedriger gemacht. Der Gruppenkopf bleibt einspaltig. */
.es-grid .es-panel[data-esgrp="Etikettendruck (Dymo)"] > .es-ph { column-span: all; }
.es-grid .es-panel[data-esgrp="Etikettendruck (Dymo)"] .fz,
.es-grid .es-panel[data-esgrp="Etikettendruck (Dymo)"] .es-row,
.es-grid .es-panel[data-esgrp="Etikettendruck (Dymo)"] .es-zwischen { break-inside: avoid; }

/* §1547 KACHEL-REGEL BESCHRIFTUNG (Joerg 23.09.2026): die Beschriftungsspalte ist GENAU so breit wie die laengste Beschriftung der
   Kachel (max-content, der Browser misst), danach feste 8 px zum Feld — der Abstand ist damit in jeder Kachel gleich. Keine Leiterstufe
   fuer Beschriftungen (die Leiter gilt den Feldern). Klasse lbl-auto an der Kachel (fil-sec); ohne @layer am Dateiende, damit sie die
   Modulregeln schlaegt (§1495). Vorher §1546: Stufen 110/140 -> Abstand schwankte 8–37 px. */
.tspro-ui .lbl-auto :is(.fil-sec-body, .art-prodzeile) { display: grid; grid-template-columns: max-content 1fr; column-gap: 8px; row-gap: 7px; align-items: center; align-content: start; }
.tspro-ui .lbl-auto .fz, .tspro-ui .lbl-auto .fz-ta, .tspro-ui .lbl-auto .preis-zeile { display: contents; }   /* §1549: auch Preiszeilen */   /* Beschriftung und Feld werden Zellen des Kachelgitters — EINE Spalte fuer alle Zeilen */
.tspro-ui .lbl-auto :is(.fil-sec-body, .art-prodzeile) > :not(.fz):not(.fz-ta):not(.preis-zeile):not(.preis-grp) { grid-column: 1 / -1; }
.tspro-ui .lbl-auto .preis-grp { display: contents; }
.tspro-ui .lbl-auto .preis-zeile label { text-align: left; }
/* §1549 Kachelform-Zusatz felder-rechts: Felder rechtsbuendig in der Kachel (Zahlen-/Datumskacheln) */
.tspro-ui .felder-rechts :is(.fil-sec-body, .art-prodzeile) > :is(.v, input, select) { justify-self: end; }   /* Zeilen ohne Beschriftung (Kennzeichen, Leisten) ueber die volle Breite */

/* §1548 KACHEL-REGEL BESCHRIFTUNG OBEN (Joerg 23.09.2026): Kacheln, die nur Langtexte enthalten (Beschreibung): die Beschriftung steht
   ueber dem Feld, das Feld nimmt die volle Kachelbreite; die Felder teilen sich die Kachelhoehe. Klasse lbl-oben an der Kachel. */
.tspro-ui .lbl-oben .fil-sec-body { display: flex; flex-direction: column; gap: var(--ds-s); min-height: 0; }
.tspro-ui .lbl-oben .ta-stack { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; gap: var(--ds-s); }
.tspro-ui .lbl-oben .fz { display: flex; flex-direction: column; gap: 3px; flex: 1 1 0; min-height: 0; margin: 0; }
.tspro-ui .lbl-oben .fz > label { text-align: left; }
.tspro-ui .lbl-oben .fz > textarea { width: 100%; flex: 1 1 auto; min-height: 40px; height: auto; }

/* §1601 Einstellungen -> Drucker: Spaltenbreiten der Scan-Tabelle, Warteschlangen-Feld */
.m-einstellungen #es-drucker-tab, .m-einstellungen #es-drucker-ws{width:100%;table-layout:fixed}
.m-einstellungen #es-drucker-tab td, .m-einstellungen #es-drucker-ws td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m-einstellungen #es-drucker-tab .es-dr-name{width:100%;box-sizing:border-box}
/* §1601b/§3838 Netze für die Druckersuche: ein CIDR-Feld je Netz, Entfernen, Netz hinzufügen, Hinweis */
.m-einstellungen .es-netze{display:flex;flex-direction:column;gap:var(--ds-xs);width:100%}
.m-einstellungen .es-netz{display:flex;align-items:center;gap:var(--ds-xs)}   /* §3838 ein Feld je Netz + Entfernen */
.m-einstellungen .es-netz .es-netz-feld{width:var(--fb-220)}
.m-einstellungen .es-netz .es-netz-weg{width:auto;flex:0 0 auto}
.m-einstellungen .es-netze .es-netz-neu{align-self:flex-start}
.m-einstellungen .neg-rand{border-color:var(--ts-red) !important}
/* §1602 Zuordnung je Belegart: Warteschlange ▾ · Fach ▾ · Anzahl */
.m-einstellungen .es-zuord{display:flex;gap:var(--ds-xs);width:100%}
.m-einstellungen .es-zuord .es-zu-q{flex:2;min-width:0}
.m-einstellungen .es-zuord .es-zu-f{flex:1.4;min-width:0}
.m-einstellungen .es-zuord .es-zu-n{width:44px;text-align:right}
.m-einstellungen .es-zuord .es-zu-opt{width:auto;padding:0 8px;flex:0 0 auto;white-space:nowrap}   /* §3839 (Jörg: Deckblatt-Knopf sah anders aus): alle Eigenschaften-Knöpfe gleich; gespeicherte Abweichungen nennt der Tooltip */
/* §1603 Drucker: Scan-Fenster, Eigenschaften-Fenster, Aktionsspalte */
.ts-dlg .es-dr-scan-tab{width:100%;table-layout:fixed;border-collapse:collapse}.ts-dlg .es-dr-scan-tab th,.ts-dlg .es-dr-scan-tab td{border:1px solid var(--ts-line);padding:var(--ds-xs) var(--ds-s);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ts-dlg .es-dr-scan-tab th{background:var(--ts-flaeche);font-weight:600}
.ts-dlg .es-dr-scan-tab th.es-dr-c-netz{width:var(--fb-90)}.ts-dlg .es-dr-scan-tab th.es-dr-c-ip{width:var(--fb-110)}.ts-dlg .es-dr-scan-tab th.es-dr-c-weg{width:130px}.ts-dlg .es-dr-scan-tab th.es-dr-c-ws{width:var(--fb-140)}.ts-dlg .es-dr-scan-tab th.es-dr-c-akt{width:var(--fb-90)}.ts-dlg .es-dr-scan-tab .es-dr-name{width:100%;box-sizing:border-box}
.m-einstellungen #es-drucker-ws th.es-dr-c-zust{width:110px}.m-einstellungen #es-drucker-ws th.es-dr-c-akt{width:282px}.m-einstellungen #es-drucker-ws td{vertical-align:middle;height:34px}.m-einstellungen #es-drucker-ws .es-dr-akt{white-space:nowrap}.m-einstellungen #es-drucker-ws .es-dr-akt .obtn{display:inline-block;width:auto;margin-right:4px;vertical-align:middle}
/* §1606/§3838/§3839 Drucker-Eigenschaften: Hausbausteine fen/fen-block/fen-form fz-gitter (K-423) — keine eigenen Regeln mehr */
/* §1620 Bemerkungstext-Wahl (Angebot/Auftrag): Tabelle mit Haekchen + vollem Text, Freifeld */
/* §1627: Standard-Dialogtabelle (.ts-dlg table) — hier nur Abstand, Klickzeile und Spaltenbreiten */
.ts-dlg .bem-kachel{margin-bottom:var(--ds-m)}
.ts-dlg .bem-tab td{vertical-align:top}
.ts-dlg .bem-tab tr{cursor:pointer}.ts-dlg .bem-tab tr:hover td{background:var(--ts-hover-bg)}
.ts-dlg .bem-tab{table-layout:fixed}.ts-dlg .bem-tab .sp-check{width:var(--ts-btn-h-gross);text-align:center}.ts-dlg .bem-tab .bem-nr{width:var(--fb-52);color:var(--ts-gedaempft)}
.ts-dlg .bem-tab .bem-txt{white-space:pre-wrap}
.ts-dlg .bem-frei label{display:block;font-weight:600;margin-bottom:var(--ds-xs)}.ts-dlg .bem-frei .bem-freitext{width:100%;box-sizing:border-box}
/* ═══ §1621 STATUSFENSTER (tsproStatus, api.js) — Motiv + Ring + Laufbalken, Ergebnis Haken/Kreuz ═══ */
.ts-dlg.tsst .tsst-box{height:auto;max-height:none}
.ts-dlg.tsst .b{text-align:center;padding:var(--ds-l) var(--ds-m) var(--ds-m)}
.ts-dlg.tsst .tsst-buehne{position:relative;width:var(--tsst-buehne-b);height:var(--tsst-buehne-h);margin:0 auto var(--ds-xs)}   /* §1622: Motiv oben mittig, Ring/Haken mittig darunter */
.ts-dlg.tsst .tsst-svg{position:absolute;left:20px;top:0;width:var(--tsst-svg-b);height:var(--tsst-svg-h)}
.ts-dlg.tsst .tsst-drucker{fill:var(--ts-flaeche);stroke:var(--ts-ink);stroke-width:2}
.ts-dlg.tsst .tsst-schlitz{fill:var(--ts-ink)}
.ts-dlg.tsst .tsst-ausgabe{fill:var(--ts-line)}
.ts-dlg.tsst .tsst-led{fill:var(--ts-akzent);animation:bka-puls 1s ease-in-out infinite}
.ts-dlg.tsst .tsst-blatt rect{fill:var(--ts-panel-bg);stroke:var(--ts-ink);stroke-width:1.5}
.ts-dlg.tsst .tsst-blatt line{stroke:var(--ts-line);stroke-width:2}
.ts-dlg.tsst .tsst-blatt{animation:tsst-blatt 1.6s ease-in-out infinite;transform-origin:var(--tsst-blatt-o) 6px}
@keyframes tsst-blatt{0%{transform:translateY(-14px);opacity:0}15%{opacity:1}70%{transform:translateY(34px);opacity:1}100%{transform:translateY(34px);opacity:0}}
.ts-dlg.tsst .tsst-brief rect{fill:var(--ts-panel-bg);stroke:var(--ts-ink);stroke-width:2}
.ts-dlg.tsst .tsst-brief polyline{fill:none;stroke:var(--ts-ink);stroke-width:2}
.ts-dlg.tsst .tsst-brief{animation:tsst-brief 1.6s ease-in-out infinite}
@keyframes tsst-brief{0%{transform:translateX(-30px);opacity:0}30%{opacity:1;transform:translateX(0)}70%{transform:translateX(0);opacity:1}100%{transform:translateX(30px);opacity:0}}
.ts-dlg.tsst .tsst-ring{position:absolute;left:var(--tsst-ring-x);bottom:0;width:var(--tsst-ring-d);height:var(--tsst-ring-d);color:var(--ts-akzent)}
.ts-dlg.tsst .tsst-ring-bg{fill:none;stroke:var(--ts-line);stroke-width:3}
.ts-dlg.tsst .tsst-ring-fg{fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-dasharray:44 132;transform-origin:center;transform-box:fill-box;animation:bka-dreh 1.4s linear infinite}
.ts-dlg.tsst .tsst-erg{position:absolute;left:var(--tsst-ring-x);bottom:0;width:var(--tsst-ring-d);height:var(--tsst-ring-d);border-radius:50%;color:var(--ts-sec-fg);font-size:26px;line-height:var(--tsst-ring-d);font-weight:700}
.ts-dlg.tsst.ok .tsst-erg{background:var(--ts-ok)}.ts-dlg.tsst.fehler .tsst-erg{background:var(--ts-red)}
.ts-dlg.tsst.ok .tsst-ring,.ts-dlg.tsst.fehler .tsst-ring{display:none}
.ts-dlg.tsst.ok .tsst-blatt,.ts-dlg.tsst.ok .tsst-brief,.ts-dlg.tsst.fehler .tsst-blatt,.ts-dlg.tsst.fehler .tsst-brief{animation:none;opacity:1;transform:none}
.ts-dlg.tsst.ok .tsst-led{animation:none;fill:var(--ts-ok)}.ts-dlg.tsst.fehler .tsst-led{animation:none;fill:var(--ts-red)}
.ts-dlg.tsst .tsst-text{min-height:calc(4 * var(--ds-zeile));max-height:calc(4 * var(--ds-zeile));overflow-y:auto;font-size:var(--ds-fs-text);color:var(--ts-ink);margin-bottom:var(--ds-s);text-wrap:balance;padding:0 var(--ds-s);white-space:pre-line}   /* §3271 Zeilenumbruch \n im Schritttext (Mail-Index: Erkennung / Indizierung je Zeile) */
.ts-dlg.tsst .tsst-balken{position:relative;height:6px;border-radius:3px;background:var(--ts-line);overflow:hidden}
.ts-dlg.tsst .tsst-balken span{position:absolute;left:-30%;top:0;width:30%;height:100%;border-radius:3px;background:var(--ts-akzent);animation:ts-prog 1.1s linear infinite}
.ts-dlg.tsst.ok .tsst-balken span{left:0;width:100%;animation:none;background:var(--ts-ok)}
.ts-dlg.tsst.fehler .tsst-balken span{left:0;width:100%;animation:none;background:var(--ts-red)}
.ts-dlg.tsst.warn .tsst-erg{background:var(--ts-warn)}.ts-dlg.tsst.warn .tsst-ring{display:none}.ts-dlg.tsst.warn .tsst-balken span{left:0;width:100%;animation:none;background:var(--ts-warn)}   /* tsproStatus().hinweis — gelb „läuft noch im Hintergrund“ (technikCENTER Abholen, Jörg 03.11.) */
/* §1623 Druckwarteschlange in der Kopfleiste */
.app-bar .hd-druck { color: var(--ts-panel-bg); background: transparent; border: 1px solid rgba(255,255,255,.25); border-radius: 6px; font: inherit; font-size: 12px; font-weight: 700; cursor: pointer; }   /* §3269 Mass/Abstand/Umbruch zentral bei --hd-knopf-h (Kopfleiste) */
.app-bar .hd-druck:hover { background-color: rgba(255,255,255,.15); }
.app-bar .hd-druck.on { border-color: var(--ts-akzent); }
.app-bar .hd-druck-n { display: inline-block; min-width: 18px; height: 18px; line-height: 18px; padding: 0 5px; border-radius: 9px; background: var(--ts-akzent); color: var(--ts-sec-fg); font-size: 11px; text-align: center; }
/* §1626/§1627 (Joerg): STATISCH — Koerper in zwei gleiche Haelften (Ueberschrift + Tabelle); die Tabelle ist die STANDARD-Dialogtabelle
   (.ts-dlg table: th/td-Padding, Zeilenhoehe --ts-tab-td-h, Fuellzeilen td.ekv) — hier nur Aufteilung und Spaltenbreiten, keine eigene Tabellenoptik */
.hd-ausg-box .hd-ausg { display: grid; grid-template-rows: auto minmax(0,1fr) auto minmax(0,1fr); white-space: normal; }   /* Abstaende kommen aus .tab-titel/.tab-kachel (§1628) */
.hd-ausg-box .hd-druck-tab { table-layout: fixed; }
.hd-ausg-box .hd-druck-tab td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hd-ausg-box .hd-druck-tab .c-nr { width: 50px; } .hd-ausg-box .hd-druck-tab .c-z { width: 110px; } .hd-ausg-box .hd-druck-tab .c-g { width: 70px; text-align: right; } .hd-ausg-box .hd-druck-tab .c-t { width: 60px; } .hd-ausg-box .hd-druck-tab .c-a { width: 40px; text-align: center; padding-top: 0; padding-bottom: 0; }
.hd-ausg-box .hd-druck-tab .c-a .obtn { width: 26px; height: var(--ts-btn-h-mini); line-height: 18px; padding: 0; }
/* §1624 Reiter Druck / E-Mail im Auftragsfenster */



/* §1625 E-Mail-Ausgang: klickbare Zeilen, Inhaltsfenster */
#hdMailOvl .hd-mail-z{cursor:pointer}#hdMailOvl .hd-mail-z:hover td{background:var(--ts-hover-bg)}
/* §1628 (Joerg): TABELLENKACHEL — jede Tabelle in Dialog/Maske in eigener Kachel (Rahmen, Radius 6, links/rechts geschlossen, scrollt selbst); Titel davor, Abstand zwischen Kacheln */
.tspro-ui .tab-kachel, .ts-dlg .tab-kachel { border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); background: var(--ts-panel-bg); overflow: auto; min-height: 0; }
.tspro-ui .tab-kachel > table, .ts-dlg .tab-kachel > table { width: 100%; }
.tspro-ui .tab-kachel > table th:first-child, .ts-dlg .tab-kachel > table th:first-child { border-top-left-radius: calc(var(--ds-radius) - 1px); }
.tspro-ui .tab-kachel > table th:last-child, .ts-dlg .tab-kachel > table th:last-child { border-top-right-radius: calc(var(--ds-radius) - 1px); }
.tspro-ui .tab-kachel > table tr:last-child td, .ts-dlg .tab-kachel > table tr:last-child td { border-bottom: 0; }
.tspro-ui .tab-titel, .ts-dlg .tab-titel { font-weight: 700; font-size: var(--ds-fs-hinweis); letter-spacing: .06em; text-transform: uppercase; color: var(--ts-gedaempft); margin: var(--ds-s) 0 var(--ds-xs); }
.tspro-ui .tab-kachel + .tab-titel, .ts-dlg .tab-kachel + .tab-titel { margin-top: var(--ds-m); }
/* §1632 weitere Statusfenster-Motive */
.ts-dlg.tsst .tsst-blase{fill:var(--ts-flaeche);stroke:var(--ts-ink);stroke-width:2}
.ts-dlg.tsst .tsst-punkt{fill:var(--ts-akzent);animation:tsst-punkt 1.2s ease-in-out infinite}
.ts-dlg.tsst .tsst-punkt.p2{animation-delay:.2s}.ts-dlg.tsst .tsst-punkt.p3{animation-delay:.4s}
@keyframes tsst-punkt{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-6px)}}
.ts-dlg.tsst .tsst-ordner,.ts-dlg.tsst .tsst-ordner-front{fill:var(--ts-flaeche);stroke:var(--ts-ink);stroke-width:2}
.ts-dlg.tsst .tsst-ordner-front{fill:var(--ts-panel-bg)}
.ts-dlg.tsst .tsst-eblatt rect{fill:var(--ts-panel-bg);stroke:var(--ts-ink);stroke-width:1.5}.ts-dlg.tsst .tsst-eblatt line{stroke:var(--ts-line);stroke-width:2}
.ts-dlg.tsst .tsst-eblatt{animation:tsst-eblatt 1.6s ease-in-out infinite}
@keyframes tsst-eblatt{0%{transform:translateY(-16px);opacity:0}20%{opacity:1}70%{transform:translateY(8px);opacity:1}100%{transform:translateY(8px);opacity:0}}
.ts-dlg.tsst .tsst-karte rect{fill:var(--ts-flaeche);stroke:var(--ts-ink);stroke-width:2}.ts-dlg.tsst .tsst-karte-band{fill:var(--ts-ink);stroke:none}.ts-dlg.tsst .tsst-karte-chip{fill:var(--ts-akzent);stroke:none}
/* §3654 technikCENTER-Motive: schutz (kleines Schild, Scanbalken über einem Käfer; fertig = Käfer weg, grüner Haken) · fernwartung (Datenpakete zwischen zwei Bildschirmen, Zeiger) · sicherung (Pfeil in die Datentonne) · netz (Herzschlag auf dem Monitor) */
.ts-dlg.tsst .tsst-schild{fill:var(--ts-flaeche);stroke:var(--ts-akzent);stroke-width:2.5;stroke-linejoin:round}
.ts-dlg.tsst .tsst-schild-haken{fill:none;stroke:var(--ts-ok);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:36;stroke-dashoffset:36;opacity:0}
.ts-dlg.tsst .tsst-scan{fill:var(--ts-akzent);opacity:.35;animation:tsst-scan 1.4s ease-in-out infinite alternate}
@keyframes tsst-scan{from{transform:translateY(0)}to{transform:translateY(52px)}}
.ts-dlg.tsst .tsst-kaefer ellipse,.ts-dlg.tsst .tsst-kaefer circle{fill:var(--ts-red)}.ts-dlg.tsst .tsst-kaefer line{stroke:var(--ts-red);stroke-width:1.8;stroke-linecap:round}
.ts-dlg.tsst .tsst-kaefer{transform-box:fill-box;transform-origin:center;animation:tsst-kaefer .5s ease-in-out infinite alternate}
@keyframes tsst-kaefer{from{transform:rotate(-6deg)}to{transform:rotate(6deg)}}
.ts-dlg.tsst .tsst-bild rect{fill:var(--ts-flaeche);stroke:var(--ts-ink);stroke-width:2}.ts-dlg.tsst .tsst-bild line{stroke:var(--ts-ink);stroke-width:2;stroke-linecap:round}
.ts-dlg.tsst .tsst-paket{fill:var(--ts-akzent);animation:tsst-paket 1.5s linear infinite}
.ts-dlg.tsst .tsst-paket.q2{animation-delay:.5s}.ts-dlg.tsst .tsst-paket.q3{animation-delay:1s}
@keyframes tsst-paket{0%{transform:translateX(0);opacity:0}10%{opacity:1}90%{opacity:1}100%{transform:translateX(20px);opacity:0}}
.ts-dlg.tsst .tsst-zeiger{fill:var(--ts-ink);animation:tsst-zeiger 2.4s ease-in-out infinite}
@keyframes tsst-zeiger{0%,100%{transform:translate(0,0)}35%{transform:translate(10px,-6px)}70%{transform:translate(4px,6px)}}
.ts-dlg.tsst .tsst-tonne path,.ts-dlg.tsst .tsst-tonne ellipse{fill:var(--ts-flaeche);stroke:var(--ts-ink);stroke-width:2}
.ts-dlg.tsst .tsst-tonne .tsst-tonne-band{fill:none}
.ts-dlg.tsst .tsst-pfeil line,.ts-dlg.tsst .tsst-pfeil polyline{fill:none;stroke:var(--ts-akzent);stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round}
.ts-dlg.tsst .tsst-pfeil{animation:tsst-pfeil 1.4s ease-in infinite}
@keyframes tsst-pfeil{0%{transform:translateY(-8px);opacity:0}25%{opacity:1}75%{transform:translateY(16px);opacity:1}100%{transform:translateY(22px);opacity:0}}
.ts-dlg.tsst .tsst-monitor{fill:var(--ts-flaeche);stroke:var(--ts-ink);stroke-width:2}.ts-dlg.tsst .tsst-monitor-fuss{stroke:var(--ts-ink);stroke-width:2;stroke-linecap:round}
.ts-dlg.tsst .tsst-puls{fill:none;stroke:var(--ts-akzent);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:160;animation:tsst-puls 1.8s linear infinite}
@keyframes tsst-puls{from{stroke-dashoffset:160}to{stroke-dashoffset:-160}}
.ts-dlg.tsst.ok .tsst-puls{animation:none;stroke-dashoffset:0}.ts-dlg.tsst.ok .tsst-schild-haken{opacity:1;stroke-dashoffset:0;transition:stroke-dashoffset .5s ease-out}.ts-dlg.tsst.ok .tsst-kaefer{animation:none;opacity:0;transition:opacity .3s}
.ts-dlg.tsst.ok .tsst-scan,.ts-dlg.tsst.ok .tsst-paket,.ts-dlg.tsst.ok .tsst-pfeil,.ts-dlg.tsst.fehler .tsst-scan,.ts-dlg.tsst.fehler .tsst-paket,.ts-dlg.tsst.fehler .tsst-pfeil{animation:none;opacity:0}
.ts-dlg.tsst.ok .tsst-zeiger,.ts-dlg.tsst.fehler .tsst-zeiger,.ts-dlg.tsst.fehler .tsst-puls{animation:none}
.ts-dlg.tsst.fehler .tsst-schild{stroke:var(--ts-red)}.ts-dlg.tsst.fehler .tsst-kaefer{animation:none}
.ts-dlg.tsst .tsst-muenze{fill:var(--ts-akzent);animation:tsst-muenze 1.4s ease-in-out infinite}
@keyframes tsst-muenze{0%{transform:translateY(0);opacity:0}25%{opacity:1}100%{transform:translateY(34px);opacity:0}}
.ts-dlg.tsst .tsst-siegel circle{fill:var(--ts-akzent);stroke:none;animation:tsst-siegel 1.4s ease-in-out infinite;transform-origin:var(--tsst-siegel-x) var(--tsst-siegel-y)}
.ts-dlg.tsst .tsst-siegel polyline{fill:none;stroke:var(--ts-sec-fg);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
@keyframes tsst-siegel{0%,100%{transform:scale(.85)}50%{transform:scale(1.05)}}
.ts-dlg.tsst .tsst-blatt-still rect{fill:var(--ts-panel-bg);stroke:var(--ts-ink);stroke-width:1.5}.ts-dlg.tsst .tsst-blatt-still line{stroke:var(--ts-line);stroke-width:2}
.ts-dlg.tsst .tsst-lupe circle{fill:none;stroke:var(--ts-akzent);stroke-width:3}.ts-dlg.tsst .tsst-lupe line{stroke:var(--ts-akzent);stroke-width:4;stroke-linecap:round}
.ts-dlg.tsst .tsst-lupe{animation:tsst-lupe 1.6s ease-in-out infinite}
@keyframes tsst-lupe{0%,100%{transform:translate(-14px,-10px)}50%{transform:translate(6px,4px)}}
.ts-dlg.tsst.ok .tsst-punkt,.ts-dlg.tsst.ok .tsst-eblatt,.ts-dlg.tsst.ok .tsst-muenze,.ts-dlg.tsst.ok .tsst-siegel circle,.ts-dlg.tsst.ok .tsst-lupe,.ts-dlg.tsst.fehler .tsst-punkt,.ts-dlg.tsst.fehler .tsst-eblatt,.ts-dlg.tsst.fehler .tsst-muenze,.ts-dlg.tsst.fehler .tsst-siegel circle,.ts-dlg.tsst.fehler .tsst-lupe{animation:none;opacity:1;transform:none}
/* §1633 Statusfenster: bestimmter Fortschritt (Laeufe in Paketen) */
.ts-dlg.tsst.bestimmt .tsst-balken span{left:0;animation:none;transition:width .3s}
.ts-dlg.tsst .f .tsst-abbr{margin-right:auto}
/* §1635 Mail-Dialog: Werkzeugleiste ueber dem Nachrichtenrahmen */
.ts-dlg .tsmd-tools{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;margin:0 0 var(--ds-xs);padding:var(--ds-xs);border:1px solid var(--ts-panel-bd);border-bottom:0;border-radius:var(--ds-radius) var(--ds-radius) 0 0;background:var(--ts-flaeche)}
.ts-dlg .tsmd-tools select{height:var(--ds-zeile);font:inherit;font-size:var(--ds-fs-text);border:1px solid var(--ts-panel-bd);border-radius:var(--ds-radius);background:var(--ts-panel-bg);padding:0 var(--ds-xs)}
.ts-dlg .tsmd-tools select[data-cmd=fontName]{width:130px}.ts-dlg .tsmd-tools select[data-cmd=fontSize]{width:var(--fb-52)}
.ts-dlg .tsmd-tools button{height:var(--ds-zeile);min-width:26px;padding:0 var(--ds-s);font:inherit;font-size:var(--ds-fs-text);border:1px solid var(--ts-panel-bd);border-radius:var(--ds-radius);background:var(--ts-panel-bg);color:var(--ts-ink);cursor:pointer}
.ts-dlg .tsmd-tools button:hover{background:var(--ts-field-focus)}
.ts-dlg .tsmd-tools .tsmd-sep{width:1px;height:var(--fb-18);background:var(--ts-panel-bd);margin:0 var(--ds-xs)}
.ts-dlg .tsmd-tools .tsmd-farbe{display:inline-flex;align-items:center;gap:2px;height:var(--ds-zeile);padding:0 var(--ds-xs);border:1px solid var(--ts-panel-bd);border-radius:var(--ds-radius);background:var(--ts-panel-bg);font-weight:700;cursor:pointer}
.ts-dlg .tsmd-tools .tsmd-farbe input{width:var(--fb-18);height:var(--fb-18);border:0;padding:0;background:none}
.ts-dlg .tsmd-body{border-radius:0 0 var(--ds-radius) var(--ds-radius)}
/* §1637 Belege: Dokument verknuepfen — Kandidatentabelle */
#bhDokOvl .bh-dok-tab{table-layout:fixed}#bhDokOvl .bh-dok-tab .c-nr{width:70px}#bhDokOvl .bh-dok-tab .c-t{width:90px}#bhDokOvl .bh-dok-tab .c-g{width:110px;text-align:right}
#bhDokOvl .bh-dok-tab tr[data-doc]{cursor:pointer}#bhDokOvl .bh-dok-tab tr[data-doc]:hover td{background:var(--ts-hover-bg)}#bhDokOvl .bh-dok-tab tr.sel td{background:var(--ds-auswahl)}
#bhDokOvl .bh-dok-id{margin-top:var(--ds-m)}
/* §1638: Platzhalter in allen Feldern gedaempft (Hinweis, kein Inhalt) — galt bisher nur in den Suchmasken */
.tspro-ui input::placeholder, .tspro-ui textarea::placeholder, .ts-dlg input::placeholder, .ts-dlg textarea::placeholder{color:var(--ts-gedaempft);opacity:1}
/* §1641 Einstellungen: Indexsuche im Inhaltsverzeichnis */
.m-einstellungen .es-such-wrap{position:relative;padding:var(--ds-xs) var(--ds-s) var(--ds-s);order:1;flex:0 0 auto}   /* vor dem Inhaltsverzeichnis (order 200) */
.m-einstellungen .es-such-wrap #es-such{width:100%;box-sizing:border-box;height:var(--ds-zeile)}
.m-einstellungen .es-such-erg{position:absolute;left:var(--ds-s);right:var(--ds-s);top:calc(var(--ds-zeile) + var(--ds-xs) + 2px);z-index:20;background:var(--ts-panel-bg);border:1px solid var(--ts-panel-bd);border-radius:var(--ds-radius);box-shadow:var(--ds-schatten-dialog);max-height:320px;overflow:auto}
.m-einstellungen .es-such-erg[hidden]{display:none}
.m-einstellungen .es-such-t{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--ts-line);background:transparent;padding:var(--ds-xs) var(--ds-s);font:inherit;font-size:var(--ds-fs-text);color:var(--ts-ink);cursor:pointer}
.m-einstellungen .es-such-t:hover{background:var(--ts-field-focus)}.m-einstellungen .es-such-t:last-child{border-bottom:0}
.m-einstellungen .es-such-pfad{display:block;font-size:var(--ds-fs-hinweis);color:var(--ts-gedaempft)}
.m-einstellungen .es-such-leer{padding:var(--ds-xs) var(--ds-s)}
.m-einstellungen .fz.es-hl{animation:es-hl-blink 1.6s ease-out 1;border-radius:var(--ds-radius)}
/* §1646 Unternehmensoberflaeche: Register je Bereich in der Kopfleiste (WaWi | ecoDMS | …) */
.app-bar .hd-bereiche{display:flex;align-items:center;gap:2px;margin-left:var(--ds-m)}
.app-bar .hd-bereiche a{color:var(--ts-panel-bg);opacity:.7;text-decoration:none;font-size:13px;font-weight:700;padding:4px 12px;border-radius:6px;white-space:nowrap}
.app-bar .hd-bereiche a:hover{opacity:1;background:rgba(255,255,255,.1)}
.app-bar .hd-bereiche a.on{opacity:1;background:var(--ts-akzent)}
.app-bar .hd-bereiche a.on:hover{background:var(--ts-akzent-dark)}
/* §1646c Bereich ecoDMS — Inbox als MASKE wie die WaWi-Module (Joerg: Kacheln, Kopfzeile, Optionen wie in der WaWi): Rahmen wie .her-wrap, .be-layout mit
   .opt-col, .fil-sec-Kacheln, Tabelle in .tbl-box (Kopf/Zeilen/Auswahl/Hover erben die globalen .tspro-ui-Regeln). Links die Liste ueber die volle Hoehe,
   rechts oben die Vorschau, darunter die Klassifizierung. */
.eco-wrap{font-family:var(--ts-font);color:var(--ts-ink);padding:10px;box-sizing:border-box;height:100%;display:flex;flex-direction:column}
.m-ecodms .eco-main{display:grid;grid-template-columns:minmax(340px,1fr) 1.5fr;grid-template-rows:1fr auto;gap:var(--ts-kachel-gap);min-height:0;min-width:0}
.m-ecodms .eco-main > .fil-sec{display:flex;flex-direction:column;min-height:0;min-width:0;margin-bottom:0}
.m-ecodms .eco-main > .fil-sec > .fil-sec-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
.m-ecodms .eco-liste{grid-row:1 / 3}
.m-ecodms .eco-liste table{table-layout:fixed}.m-ecodms .eco-liste .c-t{width:120px}.m-ecodms .eco-liste .c-g{width:70px;text-align:right}
.m-ecodms .eco-liste tbody td{overflow:hidden;text-overflow:ellipsis}
.m-ecodms .eco-liste tbody tr[data-id]{cursor:pointer}
.m-ecodms .eco-liste tbody tr.eco-fehlt td{color:var(--ts-gedaempft)}
.m-ecodms .eco-vorschau iframe{flex:1 1 auto;min-height:0;width:100%;border:1px solid var(--ts-panel-bd);border-radius:var(--ds-radius);background:var(--ts-panel-bg)}
.m-ecodms .eco-klass-felder{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--ds-l)}
.m-ecodms .eco-klass-felder .fz{margin-bottom:var(--ds-s)}
.m-ecodms .eco-klass-felder .eco-bem{grid-column:1 / 3}
.m-ecodms .eco-klass-felder select.v,.m-ecodms .eco-klass-felder input.v{width:100%;min-width:0}
/* §1648 ecoDMS › Freigabe: gleicher Rahmen wie die Inbox (.eco-main), Liste mit Ansicht/Suche und Seitenwechsel */
.m-ecodms .eco-fg-ansicht{width:auto;min-width:170px;height:var(--such-fld-h)}
.m-ecodms .eco-liste .c-nr{width:70px}.m-ecodms .eco-liste .c-via{width:70px}
.m-ecodms .eco-liste tbody tr.eco-fehler td{color:var(--ts-red)}
.m-ecodms .eco-fg-seiten{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-s);margin-top:var(--ds-s)}
/* §1651/§1659 ecoDMS › Inventur: links EINE Kachel Bestand (Zweig-Summen mit ihren Hauptordnern), rechts die Stichprobe */
.m-ecodms .eco-main.eco-inv{grid-template-columns:1fr 1.3fr;grid-template-rows:1fr}
.m-ecodms .eco-inv-bestand{grid-column:1;grid-row:1}.m-ecodms .eco-inv-probe{grid-column:2;grid-row:1}
.m-ecodms .eco-inv-summe td{font-weight:700;background:var(--ts-flaeche)}.m-ecodms .eco-inv .eco-inv-ein{padding-left:var(--ds-l)}
.m-ecodms .eco-inv .c-nr{width:80px}.m-ecodms .eco-inv .c-g{width:90px;text-align:right}
.m-ecodms .eco-inv-probe .such-bar .eco-inv-nr{flex:0 0 90px}
/* §1652 ecoDMS › Lieferant / Kunde: rechts Vorschau und Dokumentliste je zur Haelfte */
.m-ecodms .eco-main.eco-pt{grid-template-rows:1fr 1fr}
.m-ecodms .eco-pt-dok table{table-layout:fixed}.m-ecodms .eco-pt-dok .c-nr{width:70px}.m-ecodms .eco-pt-dok .c-t{width:90px}.m-ecodms .eco-pt-dok .c-via{width:70px}
.m-ecodms .eco-pt-dok tbody tr[data-j]{cursor:pointer}
/* §4010 ecoDMS › Partnerkette (Kettenrueckweg): oben die Befundliste ueber die ganze Breite, unten die Einzelheiten des gewaehlten Befunds (Beschriftung | Wert) */
.m-ecodms .eco-main.eco-kt{grid-template-columns:1fr;grid-template-rows:2fr 1fr}
.m-ecodms .eco-kt-liste{grid-column:1;grid-row:1}.m-ecodms .eco-kt-detail{grid-column:1;grid-row:2}
.m-ecodms .eco-kt table{table-layout:fixed}.m-ecodms .eco-kt .c-nr{width:90px}.m-ecodms .eco-kt .c-t{width:195px}.m-ecodms .eco-kt .c-via{width:120px}.m-ecodms .eco-kt .c-g{width:60px;text-align:center}
.m-ecodms .eco-kt tbody tr[data-i]{cursor:pointer}.m-ecodms .eco-kt tbody td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m-ecodms .eco-kt-detail .eco-klass-felder{grid-template-columns:max-content minmax(0,1fr) max-content minmax(0,1fr);column-gap:8px}   /* §4013 M5: Beschriftung max-content, zwei Paare je Zeile — passt in die Kachel */
.m-ecodms .eco-kt-detail .eco-klass-felder select.v,.m-ecodms .eco-kt-detail .eco-klass-felder input.v{width:100%;min-width:0}
.m-ecodms .eco-kt .such-bar .eco-fg-ansicht{min-width:220px}
/* §1655 ecoDMS › Aufraeumen (alte Seite, Logik unveraendert bis zum Umbau mit der Regeltabelle §1650): bisherige Stile aus style.css und dem
   Seitenblock gescopt unter .eco-alt, Farben auf die WaWi-Tokens umgelegt, Knoepfe/Tafeln/Tabellen an .obtn/Kacheln angeglichen. */
.eco-alt{--ink:var(--ts-ink);--paper:var(--ts-shell-bg);--surface:var(--ts-panel-bg);--line:var(--ts-panel-bd);--muted:var(--ts-gedaempft);--primary:var(--ts-akzent);--primary-ink:var(--ts-akzent-dark);--primary-wash:var(--ds-auswahl);--flag:#9a5b00;--flag-bg:#fbf3e3;--flag-line:#e6cf9f;--good:var(--ts-akzent-dark);--good-bg:var(--ds-auswahl);--good-line:var(--ts-panel-bd);--bad:var(--ts-red);--bad-bg:#fbeced;--bad-line:#e7c3c6;--mono:ui-monospace,Menlo,Consolas,monospace;--ui:var(--ts-font)}
.eco-alt *{box-sizing:border-box}
.eco-alt{margin:0;background:var(--paper);color:var(--ink);font-family:var(--ui);
     font-size:var(--ds-fs-text);line-height:1.5;-webkit-font-smoothing:antialiased}
.eco-alt .wrap{max-width:none;margin:0;padding:10px}
.eco-alt a{color:var(--primary-ink)}
.eco-alt code{font-family:var(--mono);font-size:.92em;background:var(--ts-flaeche);padding:1px 5px;border-radius:4px}
.eco-alt header.masthead{display:flex;align-items:flex-end;justify-content:space-between;
  gap:16px;border-bottom:2px solid var(--ink);padding-bottom:14px;margin-bottom:6px;flex-wrap:wrap}
.eco-alt .brand{display:flex;flex-direction:column;gap:2px}
.eco-alt .brand .eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--muted)}
.eco-alt .brand h1{margin:0;font-size:26px;font-weight:680;letter-spacing:-.01em}
.eco-alt .endpoint{font-family:var(--mono);font-size:12px;color:var(--muted);
  background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:6px 10px}
.eco-alt nav.tabs{display:flex;gap:4px;margin:0 0 22px;border-bottom:1px solid var(--line)}
.eco-alt nav.tabs a{text-decoration:none;color:var(--muted);font-weight:600;font-size:14px;
  padding:10px 14px;border-bottom:2px solid transparent;margin-bottom:-1px}
.eco-alt nav.tabs a:hover{color:var(--ink)}
.eco-alt nav.tabs a.active{color:var(--primary-ink);border-bottom-color:var(--primary)}
.eco-alt .btn{display:inline-flex;align-items:center;gap:8px;font:inherit;font-weight:600;
  
  text-decoration:none;cursor:pointer;
  transition:background .12s ease}

.eco-alt .btn.secondary{border-color:var(--line)}
.eco-alt .btn.secondary:hover{background:var(--primary-wash)}
.eco-alt .btn:disabled {opacity:.5;pointer-events:none}
.eco-alt .note{
  padding:16px 18px;margin:18px 0}
.eco-alt .note.warn{background:var(--flag-bg);border-color:var(--flag-line)}
.eco-alt .note.good{background:var(--good-bg);border-color:var(--good-line)}
.eco-alt .note.bad{background:var(--bad-bg);border-color:var(--bad-line)}
.eco-alt .note .k{font-family:var(--mono);font-size:12px;color:var(--muted);
  text-transform:uppercase;letter-spacing:.12em;margin-bottom:4px}
.eco-alt .note.good .k{color:var(--good)}
.eco-alt .note.bad .k{color:var(--bad)}
.eco-alt .stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:22px 0}
.eco-alt .stat{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:14px 16px}
.eco-alt .stat .num{font-family:var(--mono);font-size:28px;font-weight:600;line-height:1}
.eco-alt .stat .lbl{font-size:12.5px;color:var(--muted);margin-top:6px}
.eco-alt section.panel{background:var(--surface);border:1px solid var(--line);border-radius:11px;
  padding:20px 22px;margin:18px 0}
.eco-alt section.panel > h2{margin:0 0 4px;font-size:15px;letter-spacing:.02em}
.eco-alt section.panel > .sub{font-size:12.5px;color:var(--muted);margin:0 0 16px}
.eco-alt .tree{font-family:var(--mono);font-size:13px}
.eco-alt .tree .row{display:flex;align-items:baseline;gap:10px;padding:3px 0}
.eco-alt .tree .indent{border-left:1px solid var(--line)}
.eco-alt .tree .oid{color:var(--primary-ink);min-width:52px}
.eco-alt .tree .nm{color:var(--ink)}
.eco-alt .tree .meta{color:var(--muted);font-size:11.5px}
.eco-alt .dists{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.eco-alt .dist h3{margin:0 0 10px;font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.eco-alt .bar{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;
  font-size:13px;padding:4px 0;border-bottom:1px dotted var(--line)}
.eco-alt .bar .lab{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.eco-alt .bar .cnt{font-family:var(--mono);color:var(--muted)}
.eco-alt .flagrow{display:flex;gap:10px;flex-wrap:wrap;margin:2px 0 16px}
.eco-alt .eco-chip{font-family:var(--mono);font-size:12px;border:1px solid var(--flag-line);
  background:var(--flag-bg);color:var(--flag);border-radius:20px;padding:4px 11px}
.eco-alt .eco-chip.neutral{border-color:var(--line);background:var(--surface);color:var(--muted)}
.eco-alt table.docs{width:100%;border-collapse:collapse;font-size:13px}
.eco-alt table.docs th, .eco-alt table.docs td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line)}
.eco-alt table.docs th{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}
.eco-alt table.docs td.mono{font-family:var(--mono)}
.eco-alt table.docs .tag{font-family:var(--mono);font-size:11px;color:var(--flag)}
.eco-alt form.settings{display:block}
.eco-alt fieldset{border:1px solid var(--line);border-radius:11px;padding:18px 20px 8px;margin:0 0 18px;background:var(--surface)}
.eco-alt fieldset > legend{font-size:13px;font-weight:700;letter-spacing:.02em;padding:0 8px;color:var(--primary-ink)}
.eco-alt .field{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:14px;align-items:start;
  padding:10px 0;border-bottom:1px solid var(--ts-flaeche)}
.eco-alt .field:last-child{border-bottom:0}
.eco-alt .field > label{font-weight:600;font-size:14px;padding-top:8px}
.eco-alt .field .control{display:flex;flex-direction:column;gap:5px}
.eco-alt .field .hint{font-size:12px;color:var(--muted)}
.eco-alt input[type=text], .eco-alt input[type=password], .eco-alt input[type=number], .eco-alt select, .eco-alt textarea{font:inherit;font-size:14px;color:var(--ink);background:var(--ts-panel-bg);
  border:1px solid var(--line);border-radius:7px;padding:9px 11px;width:100%;max-width:460px}
.eco-alt input:focus, .eco-alt select:focus, .eco-alt textarea:focus{outline:2px solid var(--primary-wash);border-color:var(--primary)}
.eco-alt textarea{min-height:64px;font-family:var(--mono);font-size:13px}
.eco-alt .inline{display:flex;gap:10px;align-items:center}
.eco-alt .inline input[type=checkbox]{width:16px;height:16px}
.eco-alt .actions{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0 26px}

.eco-alt .small{font-size:12.5px;color:var(--muted)}
.eco-alt footer{margin-top:34px;font-size:12px;color:var(--muted);
  border-top:1px solid var(--line);padding-top:14px}
@media(max-width:820px){.eco-alt .stats{grid-template-columns:repeat(2,1fr)}
.eco-alt .dists{grid-template-columns:1fr}
.eco-alt .field{grid-template-columns:1fr;gap:6px}
.eco-alt .field > label{padding-top:0}
}
@media(prefers-reduced-motion:reduce){.eco-alt *{transition:none!important}
}
.eco-alt table.docs tr.hit{background:var(--flag-bg)}




.eco-alt .btn{    cursor:pointer;}
.eco-alt .btn.go{background:var(--ts-akzent); color:var(--ts-panel-bg);}
.eco-alt .btn.stop{background:var(--ts-red); color:var(--ts-panel-bg);}
.eco-alt .btn.ghost{ color:var(--ts-ink);}
.eco-alt .btn[disabled]{opacity:.5; cursor:not-allowed;}
.eco-alt .prog{margin:10px 0;}
.eco-alt .prog .bar{height:10px; background:var(--ts-panel-bd); border-radius:6px; overflow:hidden;}
.eco-alt .prog .bar > span{display:block; height:100%; background:var(--ts-akzent); width:0; transition:width .3s;}
.eco-alt .prog .lab{font-size:13px; color:var(--ts-ink); margin-top:5px;}
.eco-alt table.list{width:100%; border-collapse:collapse; font-size:13px; margin-top:10px;}
.eco-alt table.list th, .eco-alt table.list td{text-align:left; padding:7px 8px; border-bottom:1px solid var(--ts-panel-bd); vertical-align:top;}
.eco-alt table.list th{font-size:11px; text-transform:uppercase; letter-spacing:.03em; color:var(--ts-gedaempft);}
.eco-alt .pill{display:inline-block; padding:1px 8px; border-radius:20px; font-size:11px; font-weight:600;}
.eco-alt .pill.ok{background:var(--ds-auswahl); color:var(--ts-akzent);}
.eco-alt .pill.num{background:var(--ds-auswahl); color:var(--ts-akzent-dark);}
.eco-alt .pill.warn{background:var(--ts-eco-warn-bg); color:var(--ts-eco-warn-fg);}
.eco-alt .pill.mute{background:var(--ts-panel-bd); color:var(--ts-gedaempft);}
.eco-alt .pill.pruf{background:var(--ts-eco-pruef-bg); color:var(--ts-red);}
.eco-alt .arrow{color:var(--ts-gedaempft);}
.eco-alt .muted{color:var(--ts-gedaempft);}
.eco-alt .mono{font-family:ui-monospace,Menlo,Consolas,monospace; font-size:12px;}
.eco-alt .hint{color:var(--ts-eco-warn-fg); font-size:12px;}




.eco-alt .speditor{margin-top:14px; padding:12px 14px; background:var(--ts-panel-bg); border:1px solid var(--ts-panel-bd); border-radius:9px;}







.eco-alt .spliste{margin-top:12px;}
.eco-alt .spliste table{border-collapse:collapse; width:100%; font-size:13px;}
.eco-alt .spliste th, .eco-alt .spliste td{text-align:left; padding:5px 8px; border-bottom:1px solid var(--ts-panel-bd); vertical-align:middle;}
.eco-alt .spliste th{font-size:11px; text-transform:uppercase; letter-spacing:.03em; color:var(--ts-gedaempft); position:sticky; top:0; background:var(--ts-hover-bg);}
.eco-alt .spliste .huelle{max-height:420px; overflow:auto; border:1px solid var(--ts-panel-bd); border-radius:8px; background:var(--ts-panel-bg);}
.eco-alt .spliste .fertigmarke{color:var(--ts-akzent); font-weight:700;}
.eco-alt .spliste tr.gewaehlt{background:var(--ds-auswahl);}
.eco-alt .spliste input[type=checkbox]{width:16px; height:16px;}
.eco-alt .spliste input.b_bem, .eco-alt .spliste select.b_art, .eco-alt .spliste input.b_dat{padding:3px 6px; border:1px solid var(--ts-panel-bd); border-radius:5px; font-size:12px;}
.eco-alt .spliste input.b_bem{width:100%; min-width:140px;}
.eco-alt .spliste input.b_dat{width:135px;}
.eco-alt .spliste select.b_art{min-width:140px;}
.eco-alt .listkopf{display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-bottom:6px; font-size:13px;}
.eco-alt .vorschau{margin-top:12px; padding-top:10px; border-top:2px solid var(--ts-panel-bd);}
.eco-alt .belegkopf{margin-top:14px; font-weight:600; font-size:13px;}
.eco-alt .belegkopf .muted{font-weight:400; font-size:12px;}
.eco-alt .belegfuss{margin-top:6px;}
.eco-alt table.belege input, .eco-alt table.belege select{padding:4px 6px; border:1px solid var(--ts-panel-bd); border-radius:5px; font-size:12px;}
.eco-alt table.belege input.b_bem{width:100%; min-width:160px;}
.eco-alt table.belege input.b_dat{width:140px;}
.eco-alt table.belege select.b_art{min-width:150px;}
.eco-alt table.belege input:focus, .eco-alt table.belege select:focus{border-color:var(--ts-panel-bd); outline:none;}   /* §3629 Fokus wie Tabellenfelder (.tbl-box td input:focus), nicht Akzent */
.eco-alt .speditor a.open{font-size:12px; color:var(--ts-akzent-dark); text-decoration:none; white-space:nowrap;}
.eco-alt .spinfo a.open{font-size:12px; color:var(--ts-akzent-dark); text-decoration:none; white-space:nowrap;}




.eco-alt .edbegr{margin-top:10px; font-size:13px; color:var(--ts-ink); font-style:italic;}
.eco-alt .edfehler{margin-top:10px; font-size:13px;}
.eco-alt .edfehler table{border-collapse:collapse; width:100%;}
.eco-alt .edfehler th, .eco-alt .edfehler td{text-align:left; padding:5px 8px; border-bottom:1px solid var(--ts-panel-bd); vertical-align:top;}
.eco-alt .edfehler th{font-size:11px; text-transform:uppercase; color:var(--ts-gedaempft);}
.eco-alt .spinfo{margin-top:12px; font-size:13px;}
.eco-alt .spinfo table{border-collapse:collapse; width:100%; margin-top:8px;}
.eco-alt .spinfo th, .eco-alt .spinfo td{text-align:left; padding:5px 8px; border-bottom:1px solid var(--ts-panel-bd); vertical-align:top;}
.eco-alt .spinfo th{font-size:11px; text-transform:uppercase; letter-spacing:.03em; color:var(--ts-gedaempft);}
.eco-alt .spinfo td.z{text-align:right; font-variant-numeric:tabular-nums; font-weight:600; white-space:nowrap;}
.eco-alt .spinfo .warn{color:var(--ts-eco-warn-fg);}
.eco-alt .spinfo .neu{color:var(--ts-akzent);}



.eco-alt .bgstate{font-size:13px;}
.eco-alt .bgstate.an{color:var(--ts-akzent); font-weight:600;}
.eco-alt table.stand{border-collapse:collapse; margin-top:12px; width:100%;}
.eco-alt table.stand td{padding:6px 14px 6px 0;}
.eco-alt table.stand .z{display:block; font-size:19px; font-weight:700; font-variant-numeric:tabular-nums;}
.eco-alt table.stand .l{display:block; font-size:11px; text-transform:uppercase; letter-spacing:.03em; color:var(--ts-gedaempft);}
/* Uebersetzung auf WaWi-Bedienelemente: Knoepfe wie .obtn, Hinweistafeln wie Kacheln */
.eco-alt .btn{height:var(--ts-btn-h);padding:0 var(--ds-m);border:1px solid var(--ts-panel-bd);border-radius:var(--ds-radius);background:var(--ts-panel-bg);color:var(--ts-ink);font:inherit;font-size:var(--ds-fs-knopf);font-weight:600;cursor:pointer}
.eco-alt .btn:hover{background:var(--ts-field-focus)}
.eco-alt .btn.go{background:var(--ts-akzent);border-color:var(--ts-akzent);color:var(--ts-panel-bg)}.eco-alt .btn.go:hover{background:var(--ts-akzent-dark)}
.eco-alt .btn.stop{background:var(--ts-red);border-color:var(--ts-red);color:var(--ts-panel-bg)}
.eco-alt .btn.ghost,.eco-alt .btn.secondary{background:var(--ts-panel-bg);color:var(--ts-ink)}
.eco-alt .btn.mini{height:auto;padding:2px var(--ds-s)}
.eco-alt .panel,.eco-alt .note{border:1px solid var(--ts-panel-bd);border-radius:10px;background:var(--ts-panel-bg)}
.eco-alt .note .k,.eco-alt .panel h2{font-weight:700}
.eco-alt table{font-size:var(--ts-tab-fs)}
.eco-alt .eco-alt-abst{margin-top:var(--ds-s)}.eco-alt .eco-alt-w34{width:34px}.eco-alt .r{text-align:right}.eco-alt .grow{flex:1 1 auto}
/* §1657 ecoDMS › Aufraeumen als Maske: links Spiegeln (oben) und Laeufer, rechts der Vorschlags-Editor */
.m-ecodms .eco-main.eco-auf{grid-template-columns:1.3fr 1fr;grid-template-rows:1fr 1fr}
.m-ecodms .eco-auf-sp{grid-column:1;grid-row:1}.m-ecodms .eco-auf-ed{grid-column:2;grid-row:1 / 3}.m-ecodms .eco-auf-lauf{grid-column:1;grid-row:2}
.m-ecodms .eco-auf-zeile{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ds-s);margin-bottom:var(--ds-s)}
.m-ecodms .eco-auf-zeile select.v{width:auto;min-width:120px}.m-ecodms .eco-auf-zeile .eco-auf-zweig{flex:1 1 220px}
.m-ecodms .eco-auf-chk{display:inline-flex;align-items:center;gap:4px}
.m-ecodms .eco-auf-liste{flex:1 1 auto;min-height:0;overflow:auto}
.m-ecodms .eco-auf-ziel{display:flex;gap:var(--ds-xs)}.m-ecodms .eco-auf-ziel input{flex:1 1 auto;min-width:0}
.m-ecodms .eco-auf-lauf .prog{margin-bottom:var(--ds-s)}
/* §1658 ecoDMS › Korrektur: Abweichungsliste oben, Protokoll der letzten Korrekturen darunter */
.m-ecodms .eco-ko-prot{margin-top:var(--ds-m);flex:0 0 auto}
/* §2496 (Joerg: "Letzte Korrekturen nicht anzeigefaehig"): die Abweichungsliste nahm die ganze Hoehe (Fuellzeilen), das Protokoll fiel auf 0 px —
   jetzt feste 220 px fuer das Protokoll mit eigenem Rollbalken, die Abweichungsliste bekommt den Rest */
.m-ecodms .eco-liste .fil-sec-body > .tbl-box:not(.eco-ko-prot-box){flex:1 1 auto;min-height:0}
.m-ecodms .eco-ko-prot-box{flex:0 0 220px;height:220px;min-height:220px;overflow:hidden}
.m-ecodms .eco-ko-prot-box .tbl-scroll{height:100%;overflow:auto}
.m-ecodms .eco-ko-prot-box .c-via{width:130px}.m-ecodms .eco-ko-prot-box .c-t{width:120px}
/* §1673 ecoDMS › Ablageregeln: Liste links, rechts Formular und Konsistenzpruefung */
.m-ecodms .eco-main.eco-rg{grid-template-columns:1.2fr 1fr;grid-template-rows:1fr auto}
.m-ecodms .eco-rg .eco-liste{grid-row:1 / 3}.m-ecodms .eco-rg-form{grid-column:2;grid-row:1}.m-ecodms .eco-rg-pruef{grid-column:2;grid-row:2}
.m-ecodms .eco-rg-form .fil-sec-body{overflow:auto}
.m-ecodms .eco-rg-json{margin:0;max-height:220px;overflow:auto;font-size:var(--ts-tab-fs);white-space:pre-wrap;background:var(--ts-flaeche);border:1px solid var(--ts-panel-bd);border-radius:var(--ds-radius);padding:var(--ds-s)}
.m-ecodms .eco-rg-pruef ul{margin:0;padding-left:var(--ds-l)}
/* §4856 ecoDMS › Regeln (Skizze zw1/zw2, Freigabe §4840): Ansicht-Chips 139×26, Filter-Chips 110×26, Ablagezwecke mit festen Spalten (= Innenbreite 866),
   Lücke = roter Balken 4 px, eine Statuszeile unten in der Liste, rechte Kachel in Blöcken, Auswahl als Tabelle am Feld (F01/F02). */
/* Optionen je Ansicht in einem Umschlag: display:contents hält die Knöpfe in der Flex-Spalte der .opt-col (Z. 627); die Breite (Z. 4148 nur direkte Kinder) gilt hier mit */
.m-ecodms .opt-col > .eco-opt-satz{display:contents}
.m-ecodms .opt-col > .eco-opt-satz[hidden]{display:none}
.m-ecodms .opt-col > .eco-opt-satz > .obtn{width:var(--ts-btn-w)}
.m-ecodms .eco-rg-chips{display:flex;gap:6px;margin:0;flex-wrap:nowrap}
.m-ecodms .eco-rg-chips > .ma-tab{flex:0 0 139px;height:26px;padding:0 4px;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m-ecodms .eco-rg-such{display:flex;gap:6px;align-items:center}
.m-ecodms .eco-rg-such > .sq{flex:1 1 auto;min-width:0}
.m-ecodms .eco-rg-filter{display:flex;gap:6px;margin:0;flex:0 0 auto}
.m-ecodms .eco-rg-filter[hidden]{display:none}
.m-ecodms .eco-rg-filter > .ma-tab{flex:0 0 110px;height:26px;padding:0 4px;font-size:13px;font-weight:600;white-space:nowrap}
.m-ecodms .eco-rg-filter > .ma-tab.eco-zw-warn:not(.active){border-color:var(--ts-red);background:color-mix(in srgb, var(--ts-red) 10%, transparent)}
.m-ecodms .eco-rg-chips > .ma-tab:disabled,.m-ecodms .eco-rg-filter > .ma-tab:disabled{opacity:.55;cursor:default}
.m-ecodms .eco-rg-stand{flex:0 0 auto;padding-top:4px;border-top:1px solid var(--ts-panel-bd);color:var(--ts-gedaempft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m-ecodms .eco-rg-stand:empty{display:none}
.m-ecodms .eco-zw-tab .zw-c-partner{width:120px}.m-ecodms .eco-zw-tab .zw-c-anlass{width:220px}.m-ecodms .eco-zw-tab .zw-c-kenn{width:178px}
.m-ecodms .eco-zw-tab .zw-c-haupt{width:112px}.m-ecodms .eco-zw-tab .zw-c-gruppe{width:158px}.m-ecodms .eco-zw-tab .zw-c-regel{width:78px}
.m-ecodms .eco-zw-tab tbody tr[data-z]{cursor:pointer}
.m-ecodms .eco-zw-tab tbody td{white-space:nowrap}
.m-ecodms .eco-zw-tab tbody tr.eco-zw-luecke td{background:color-mix(in srgb, var(--ts-red) 7%, transparent)}
.m-ecodms .eco-zw-tab tbody tr.eco-zw-luecke td:first-child{box-shadow:inset 4px 0 0 var(--ts-red)}
.m-ecodms .eco-zw-tab tbody tr.sel td:first-child{box-shadow:inset 4px 0 0 var(--ts-akzent)}
.m-ecodms .eco-zw-tab.eco-zw-gesperrt tbody{pointer-events:none;opacity:.75}
.m-ecodms .eco-zw-ok{color:var(--ts-ok)}
.m-ecodms .eco-zw-fehlt{color:var(--ts-red);font-weight:600}
.m-ecodms .eco-zw-aus{color:var(--ts-gedaempft)}
.m-ecodms .eco-klass-felder > .eco-zw-detail{grid-column:1 / -1}   /* Messbild 14:33: im 2-Spalten-Raster der Kachel (Z. 6769) nur halbe Breite */
.m-ecodms .eco-zw-detail .fz{margin-bottom:0}
.m-ecodms .eco-zw-detail .fz > label{font-weight:400}
.m-ecodms .eco-rg-pruef li{color:var(--ts-red)}   /* Skizze zw1: Befunde rot (Warnfarbe nur für Fehler/Lücke) */
.m-ecodms .eco-zw-detail{display:flex;flex-direction:column;gap:var(--ts-kachel-gap)}
.m-ecodms .eco-zw-detail > .eco-zw-blk{margin:0}
.m-ecodms .eco-zw-detail > .eco-zw-blk > .fil-sec-body{display:flex;flex-direction:column;gap:6px}
.m-ecodms .eco-zw-detail .fz{display:grid;grid-template-columns:170px minmax(0,1fr);align-items:center;gap:0 10px}
.m-ecodms .eco-zw-detail .fz > .v.ro{min-height:var(--ds-feld);display:flex;align-items:center;padding:0 8px;box-sizing:border-box;background:var(--ts-flaeche);border:1px solid var(--ts-panel-bd);border-radius:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m-ecodms .eco-zw-feld{height:var(--ds-feld);width:100%;text-align:left;padding:0 26px 0 8px;box-sizing:border-box;background:var(--ts-panel-bg);border:1px solid var(--ts-panel-bd);border-radius:6px;cursor:pointer;font:inherit;font-size:13px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m-ecodms .eco-zw-feld::after{content:'▾';position:absolute;right:9px;top:50%;transform:translateY(-50%);color:var(--ts-gedaempft)}
.m-ecodms .eco-zw-feld.eco-zw-leer{border-color:var(--ts-red);color:var(--ts-gedaempft)}
.m-ecodms .eco-zw-feld:disabled{cursor:default;opacity:.6}
.m-ecodms .eco-zw-pfad{font-family:var(--mono);font-size:12px;line-height:1.5;padding:6px 10px;background:var(--ts-flaeche);border:1px solid var(--ts-panel-bd);border-radius:6px;word-break:break-word}
.m-ecodms .eco-zw-hinw{color:var(--ts-gedaempft)}
.m-ecodms .eco-zw-genutzt{margin:0;padding-left:var(--ds-l);font-size:13px;line-height:1.6}
.eco-zw-wahl{position:fixed;z-index:10650;background:var(--ts-panel-bg);border:1px solid var(--ts-panel-bd);border-radius:6px;box-shadow:0 6px 18px rgba(0,0,0,.18);max-height:320px;overflow:auto;font-size:13px}
.eco-zw-wahl-h{position:sticky;top:0;background:var(--ts-sec-bg);color:var(--ts-sec-fg);font-weight:700;padding:5px 10px}
.eco-zw-wahl-h > span{font-weight:400;opacity:.85;margin-left:8px}
.eco-zw-wahl table{width:100%;border-collapse:collapse;table-layout:fixed}
.eco-zw-wahl th{text-align:left;font-weight:700;padding:4px 8px;border-bottom:1px solid var(--ts-panel-bd);background:var(--ts-flaeche)}
.eco-zw-wahl td{padding:3px 8px;border-bottom:1px solid var(--ts-panel-bd);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.eco-zw-wahl tr.hi td{background:var(--ds-auswahl)}
.eco-zw-wahl tr.hi td:first-child{box-shadow:inset 4px 0 0 var(--ts-akzent)}
/* §1675 ecoDMS › Inbox: Ablage-Kachel — Zielvorschau, KI-Hinweis, Rueckfrage */
.m-ecodms .eco-klass .fil-sec-body{overflow:auto}
.m-ecodms .eco-ab-ziel{margin-top:var(--ds-s);padding:var(--ds-s);border:1px solid var(--ts-panel-bd);border-radius:var(--ds-radius);background:var(--ts-flaeche);font-size:var(--ts-tab-fs);line-height:1.4}
.m-ecodms .eco-ab-ki{margin-top:var(--ds-xs)}
.m-ecodms .eco-ab-fehlt{color:var(--ts-red)}
/* §1684 ecoDMS › Inbox: Spalte KI-Vorschlag */
.m-ecodms .eco-liste .c-ki{width:34px;text-align:center;font-weight:700}
.m-ecodms .eco-ki-ok{color:var(--ts-ok)}
.m-ecodms .eco-ki-hinweis{color:var(--ts-warn)}
.m-ecodms .eco-ki-rf{color:var(--ts-red)}
/* §4369 ecoDMS › Inbox: Klassifizierungen (DFA ib1–ib4, ersetzt §4368) — Reiter in der Inbox-Kachel, Spalte „Erkannt“ 160 px, Zeile „Erkannt: …“,
   Bearbeitung als eigene Kachel .eco-kedit über Vorschau + Felder (Raster dann 1 Zeile), alle Knöpfe in den Optionen (.opt-grp-Gruppen, DOM-Reihenfolge) */
.m-ecodms .eco-ib .eco-liste .c-ki{width:130px;text-align:left;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}   /* §4370 (Jörg 04:30 „Spalten nicht optimal“): gemessen Datei 286 px bei Erkannt 160 — jetzt Eingang 100 · Größe 60 · Erkannt 130 → Datei 346 px */
.m-ecodms .eco-ib .eco-liste .c-t{width:100px}.m-ecodms .eco-ib .eco-liste .c-g{width:60px}.m-ecodms .eco-ib .eco-liste .c-ziel{width:230px}
.m-ecodms .eco-kl-erk{color:var(--ts-akzent)}
.m-ecodms .eco-klass .fil-sec-head .eco-erk{font-weight:700;margin-left:var(--ds-m);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}   /* §4373 erkannte Klassifizierung im Kachelkopf (weiß auf dem dunklen Kopf) */
.m-ecodms .eco-liste .fil-sec-body{display:flex;flex-direction:column;gap:var(--ds-s)}
.m-ecodms .eco-liste .tbl-box{flex:1 1 auto;min-height:0}
.m-ecodms .eco-liste .tbl-box[hidden],.m-ecodms .eco-main > .fil-sec[hidden]{display:none}
.m-ecodms .eco-kl-tabs{display:flex;gap:var(--ds-xs);flex:none}
.m-ecodms .eco-kl-tabs .kbtn.on{background:var(--ts-akzent);border-color:var(--ts-akzent);color:var(--ts-sec-fg)}
.m-ecodms .eco-kl-tabs .kbtn.on:hover{background:var(--ts-akzent-dark);border-color:var(--ts-akzent-dark)}
.m-ecodms .eco-kl-suche{width:100%;margin-bottom:var(--ds-xs)}
.m-ecodms .eco-main.eco-ib-kl{grid-template-rows:1fr}
.m-ecodms .eco-ib .eco-kedit{grid-column:2;grid-row:1}
.m-ecodms .eco-ke{overflow:auto;gap:var(--ds-s);font-size:var(--ts-tab-fs)}   /* §4370: gemessen Beschriftungen 19 px hoch (Grundschrift) neben 15-px-Blocktiteln — Schriftgröße wie die Klassifizierungsfelder */
.m-ecodms .eco-ke label{font:inherit;color:inherit}
.m-ecodms .eco-ke-blk{flex:none}   /* §4372: Rahmen, Fläche und Titel kommen von .fen-block/.fen-block-t (Standardkachel) */
.m-ecodms .eco-ke-blk.eco-ke-dok{flex:1 1 auto;min-height:120px;max-height:300px}   /* §4370: nahm 733 px ein — Deckel, der Rest bleibt frei */
.m-ecodms .eco-ke-kopf{color:var(--ts-dim);font-size:var(--ds-fs-hinweis);border-bottom:1px solid var(--ts-panel-bd)}
.m-ecodms .eco-ke-dok .tbl-box{flex:1 1 auto;min-height:0}
.m-ecodms .eco-ke-dok .c-erg{width:150px}
.m-ecodms .eco-ke-g2{display:grid;grid-template-columns:110px minmax(0,1fr);gap:var(--ds-xs) var(--ds-s);align-items:center}
.m-ecodms .eco-ke-z{display:grid;grid-template-columns:20px 150px minmax(0,1fr) 130px 32px;gap:var(--ds-xs);align-items:center;padding:2px 0}
.m-ecodms .eco-ke-za{grid-template-columns:20px 150px minmax(0,1fr) 130px 220px 70px}   /* §4379 + Spalte Pflicht, Probe breiter (gelesen · Eingang) */
.m-ecodms .eco-ke-za .ke-gel{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m-ecodms .eco-ke-za .ke-pfl{display:flex;align-items:center;gap:var(--ds-xs);white-space:nowrap}
.m-ecodms .eco-ke-z input.v,.m-ecodms .eco-ke-z select.v,.m-ecodms .eco-ke-g2 input.v{width:100%;min-width:0}
.m-ecodms .eco-ke-ok.ok,.m-ecodms .eco-ke-za .ke-gel{color:var(--ts-ok)}
.m-ecodms .eco-ke-hinweis{color:var(--ts-dim);margin-top:var(--ds-xs)}
/* §4382 DFA kl3: Klassen-Liste schmal (Ziel als zweite Zeile), Bearbeitung zweispaltig, Feldzeilen 28 px, KI-Zeilen grau, Bilanzzeile unten */
.m-ecodms .eco-main.eco-ib.eco-ib-kl{grid-template-columns:420px minmax(0,1fr)}
.m-ecodms .eco-kl-ziel{color:var(--ts-dim);font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m-ecodms .eco-ke{overflow:hidden}
.m-ecodms .eco-ke-sp{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:var(--ts-kachel-gap);flex:1 1 auto;min-height:0}
.m-ecodms .eco-ke-li,.m-ecodms .eco-ke-re{display:flex;flex-direction:column;gap:var(--ds-s);min-height:0;overflow:auto}
.m-ecodms .eco-ke-felder{flex:1 1 auto}
.m-ecodms .eco-ke-za{min-height:28px;padding:0;grid-template-columns:20px 130px minmax(0,1fr) 110px minmax(0,150px) 64px}
.m-ecodms .eco-ke-za.ke-ki{color:var(--ts-dim)}
.m-ecodms .eco-ke-za.ke-ki input.v,.m-ecodms .eco-ke-za.ke-ki select.v{color:var(--ts-dim);background-color:var(--ts-panel-bg)}
.m-ecodms .eco-ke-bilanz{flex:none;border-top:1px solid var(--ts-panel-bd);padding-top:var(--ds-xs)}
.tspro-ui.m-ecodms .opt-col > #o_loesch{order:500}   /* §4369: Gruppenreihenfolge der Optionen = DOM — hebt die globale Regel #o_loesch{order:135} (▸N372, gleiche Spezifität, später) auf, die Löschen (rot) an die erste Stelle zog */
.ts-dlg-box .eco-nk{display:flex;flex-direction:column;gap:var(--ds-s)}
.ts-dlg-box .eco-nk-wahl{display:grid;grid-template-columns:22px minmax(0,1fr) 120px;gap:var(--ds-s);align-items:center;border:1px solid var(--ts-panel-bd);border-radius:var(--ds-radius);padding:var(--ds-xs) var(--ds-s);cursor:pointer}
.ts-dlg-box .eco-nk-wahl:has(input:checked){border-color:var(--ts-akzent);background:color-mix(in srgb, var(--ts-akzent) 7%, var(--ts-panel-bg))}
.ts-dlg-box .eco-nk-aus{display:flex;gap:var(--ds-xs);align-items:center;flex-wrap:wrap}
.ts-dlg-box .eco-nk-aus input.v{width:220px}
/* §1696 ecoDMS › Inbox (Joerg): oben Inbox links und Vorschau rechts, unten Klassifizierung ueber die volle Breite */
.m-ecodms .eco-main.eco-ib{grid-template-columns:minmax(340px,1fr) 1.5fr;grid-template-rows:1fr auto}
/* §3225 Aufräumregeln: Regeltabelle (10 Spalten) war in der linken Spalte auf ~50 px je Spalte gestaucht — Regeln oben, Probelauf darunter, beide volle Breite */
.m-ecodms .eco-main.eco-ar{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(0,1.4fr)}
.m-ecodms .eco-ib .eco-liste{grid-row:1}
.m-ecodms .eco-ib .eco-klass{grid-column:1 / 3}
.m-ecodms .eco-kl-zahl{text-align:right}
.m-ecodms .eco-klass .eco-ab-ziel{margin-top:var(--ds-s);padding:0 var(--ds-s)}
/* §1698 (K-394): Ziel- und KI-Zeile je GENAU eine Zeile, Platz immer reserviert (auch leer), Ueberlange mit Ellipse, voller Text im Tooltip */
.m-ecodms .eco-klass .eco-ab-ziel, .m-ecodms .eco-klass .eco-ab-ki{box-sizing:border-box;height:var(--ts-feld-h);line-height:var(--ts-feld-h);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:0 0 auto}
.m-ecodms .eco-klass .eco-ab-ki{margin-top:0}
/* §1700 ecoDMS › Inbox: Datei ohne ecoDMS-Inbox-Vorgang (wird hochgeladen) */
.m-ecodms .eco-liste tbody tr.eco-ohne td.c-d{font-style:italic}   /* §1724: Klasse statt nth-child (K-170) */
/* §1702 (K-394) ecoDMS: Kachelkoepfe immer EINE Zeile — Statustext wird gekuerzt statt umzubrechen */
:is(.m-ecodms, .m-wbr) .fil-sec-head{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}   /* §2906 auch serviceCENTER › Browser: Kachelkopf einzeilig */
:is(.m-ecodms, .m-wbr) .fil-sec-head .ts-status-txt{white-space:nowrap}
/* §1708 ecoDMS › Inbox-Klassifizierung: EIN Raster, 5 Spaltenpaare (Beschriftung | Feld), 6 Zeilen; Beschriftung = laengste der Spalte + 8 px (K-381);
   Betreff reicht ueber Spalte 2 und 3 (eco-f2w). Positionen per Klasse (eco-l<Spalte>, eco-f<Spalte>, eco-r<Zeile>) — keine Inline-Styles. */
.m-ecodms .eco-kl{display:grid;grid-template-columns:max-content minmax(0,1.5fr) max-content minmax(0,1.2fr) max-content minmax(0,1fr) max-content minmax(0,.8fr) max-content minmax(0,1.2fr);   /* §3980 5 Spaltenpaare (§3994 hierher gezogen, DOPPELREGEL) */column-gap:8px;row-gap:var(--ds-xs);align-items:center}   /* §1718/§1719: 6 Spaltenpaare; Ablage breiter (Baum/Partner schnitten ab), Betraege schmal */
.m-ecodms .eco-kl > label{font-size:var(--ts-tab-fs);white-space:nowrap}
.m-ecodms .eco-kl > .v, .m-ecodms .eco-kl > .datepick{width:100%;min-width:0}
.m-ecodms .eco-kl > .eco-l2, .m-ecodms .eco-kl > .eco-l3, .m-ecodms .eco-kl > .eco-l4, .m-ecodms .eco-kl > .eco-l5, .m-ecodms .eco-kl > .eco-l6{margin-left:var(--ds-l)}
.m-ecodms .eco-l1{grid-column:1}.m-ecodms .eco-f1{grid-column:2}.m-ecodms .eco-l2{grid-column:3}.m-ecodms .eco-f2{grid-column:4}.m-ecodms .eco-f2w{grid-column:4 / 7}
.m-ecodms .eco-l3{grid-column:5}.m-ecodms .eco-f3{grid-column:6}.m-ecodms .eco-l4{grid-column:7}.m-ecodms .eco-f4{grid-column:8}.m-ecodms .eco-l5{grid-column:9}.m-ecodms .eco-f5{grid-column:10}.m-ecodms .eco-l6{grid-column:11}.m-ecodms .eco-f6{grid-column:12}
.m-ecodms .eco-r1{grid-row:1}.m-ecodms .eco-r2{grid-row:2}.m-ecodms .eco-r3{grid-row:3}.m-ecodms .eco-r4{grid-row:4}.m-ecodms .eco-r5{grid-row:5}.m-ecodms .eco-r6{grid-row:6}
/* §1710 ecoDMS › Inbox-Klassifizierung: Feldqualitaet — gruen Pflicht gefuellt · gelb unsicher (KI) · rot Pflicht fehlt; nur Rahmen/Hintergrund (K-394) */
.m-ecodms .eco-kl .eco-pf-ok, .m-ecodms .eco-kl .eco-pf-ok > .v{background-color:var(--ts-meld-ok-bg);border-color:var(--ts-meld-ok-bd)}
.m-ecodms .eco-kl .eco-pf-unsicher, .m-ecodms .eco-kl .eco-pf-unsicher > .v{background-color:var(--ts-meld-warn-bg);border-color:var(--ts-meld-warn-bd)}
.m-ecodms .eco-kl .eco-pf-fehlt, .m-ecodms .eco-kl .eco-pf-fehlt > .v{background-color:var(--ts-meld-err-bg);border-color:var(--ts-meld-err-bd)}
.m-ecodms .eco-kl .datepick.eco-pf-ok, .m-ecodms .eco-kl .datepick.eco-pf-unsicher, .m-ecodms .eco-kl .datepick.eco-pf-fehlt{background:none}

/* §1950 Monatsabschluss: Kennzeichen im Kachelkopf (✓/– abgeschlossen · Kasse · DSFinV-K · DATEV), Details im Tooltip — keine Zeile, keine Hoehe */
.m-monatsabschluss .ka-stand { white-space: nowrap; }
.m-monatsabschluss .ka-stand.pos { color: var(--ts-ok); }

/* §1970 Einstellungen › E-Mail-Konten (Bereich Kommunikation): Adressfeld in der Knopfzeile — Masse wie .es-ubtn/.es-row input */
.m-einstellungen .es-ko-pfadr{height:var(--ds-feld);flex:0 1 var(--fb-320);min-width:var(--fb-220);box-sizing:border-box;border:1px solid var(--ts-panel-bd);border-radius:6px;padding:0 8px;font:inherit;font-size:13px;background:var(--ts-panel-bg)}

/* §1973 Bereich KOMMUNIKATION — Rahmen wie Bereich ecoDMS (.eco-wrap/.eco-main, §1646c): .be-layout mit .opt-col, .fil-sec-Kacheln, Tabellen in .tbl-box.
   Eigener Namensraum .m-komm. Auswertung E-Mail-Adressen: oben Suche | Index, darunter Vorschlaege ueber die volle Breite bis unten. */
.komm-wrap{font-family:var(--ts-font);color:var(--ts-ink);padding:10px;box-sizing:border-box;height:100%;display:flex;flex-direction:column}
.m-komm .komm-main{display:grid;gap:var(--ts-kachel-gap);min-height:0;min-width:0}
.m-komm .komm-main > .fil-sec{display:flex;flex-direction:column;min-height:0;min-width:0;margin-bottom:0}
.m-komm .komm-main > .fil-sec > .fil-sec-body{flex:1 1 auto;min-height:0}
.m-komm .komm-main > .fil-sec:not(.lbl-auto) > .fil-sec-body{display:flex;flex-direction:column}
.m-komm .lbl-auto .fz > label{text-align:left}   /* K-381 */
.m-komm .komm-main.komm-ad{grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr}
.m-komm .komm-ad-suche{grid-column:1;grid-row:1}.m-komm .komm-ad-index{grid-column:2;grid-row:1}.m-komm .komm-ad-vor{grid-column:1 / 3;grid-row:2}
.m-komm table{table-layout:fixed}
.m-komm tbody td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m-komm .komm-orte{display:flex;flex-direction:column;gap:4px;padding:6px 8px;box-sizing:border-box;border:1px solid var(--ts-panel-bd);border-radius:6px;background:var(--ts-panel-bg)}   /* Suchort: Kaestchen je Postfach, Hoehe nach Inhalt */
.m-komm .komm-orte label.komm-ort{display:flex;align-items:center;gap:6px;width:auto;margin:0;padding:0;text-align:left;font-weight:400;font-size:var(--ds-fs-text);white-space:nowrap}   /* §2100 Zeigerhand nur mit Zustand (unten :has) */   /* die Feldbeschriftungsregeln der Kachel nicht erben */
.m-komm .lbl-auto .fz:has(.komm-orte) > label{align-self:start;padding-top:7px}   /* Beschriftung oben an der Liste */
.m-komm tr.komm-ohne td{color:var(--ts-gedaempft)}
.m-komm .komm-ueb{height:calc(var(--ds-feld) - 6px);padding:0 10px;font-size:12px;width:100%}   /* §1976 Uebernehmen in der Tabellenzeile */

/* §1980 Anschreiben: Adressauswahl in der Zelle (mehrere E-Mails), gemerkte Wahl fett; Vorschau: An/Betreff einzeilig ueber die volle Breite, Rest per Tooltip */
.ts-dlg.as select.as-mail.as-gemerkt { font-weight: 600; }
#asVorOvl .fz { display: grid; grid-template-columns: var(--fb-90) minmax(0, 1fr); gap: var(--ds-s); align-items: center; }
#asVorOvl .fz .v.ro { width: auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* §1982 Hinweise zur Position (tsPosHinweise, dialog.js): ein Hinweis je Punkt statt Fliesstext */
.ts-dlg-box .pos-hinw { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: var(--ds-s); }
.ts-dlg-box .pos-hinw li { padding-left: var(--ds-m); border-left: 3px solid var(--ts-akzent); line-height: 1.45; }

/* §1985 Dialoge mit Kopfleiste + Tabelle + Aktionsleiste (dlg-leiste/dlg-inhalt, z. B. Lastschrift, Ueberweisung): der Tabellenteil fuellt die Hoehe */
.ts-dlg-box .b:has(> .dlg-inhalt > .dlg-tbl-box) > .dlg-inhalt { flex: 1 1 auto; min-height: 0; }
.ts-dlg-box .b:has(> .dlg-inhalt > .dlg-tbl-box) > :not(.dlg-inhalt) { flex: 0 0 auto; }   /* §1986: Leisten/Suchfeld/Status nicht stauchen (DATEV-Konten: Suchfeld war 12 px hoch) */
/* §1985 Eingabefeld in einer Zelle der Dialogtabelle (z. B. Preisplan): fuellt die Zelle, Rahmen = Tabellengitter, Fokus wie Tabellenfelder (§698) */
.ts-dlg-box .dlg-tbl-box td:has(> input.zell-ein), .je-such td:has(> input.zell-ein) { padding: 0; }   /* §2480: auch in Suchmasken-Dialogen (Warenbedarf-Bestellung) */
.ts-dlg-box .dlg-tbl-box td > input.zell-ein, .je-such td > input.zell-ein { width: 100%; height: calc(var(--ds-tabellenzeile) - 1px); box-sizing: border-box; border: 1px solid transparent; background: transparent; padding: 0 var(--ds-s); font: inherit; color: var(--ts-ink); }
.ts-dlg-box .dlg-tbl-box td > input.zell-ein.r, .je-such td > input.zell-ein.r { text-align: right; }
.ts-dlg-box .dlg-tbl-box td > input.zell-ein:focus, .je-such td > input.zell-ein:focus { outline: none; border-color: var(--ts-panel-bd); background: var(--ts-field-focus); }
/* §2478 K-417 in Auswahl-Dialogen (Storno, Austausch, Vertragspreise …): Tabellen mit Zelleneingaben zeigen das Vorgegebene grau, nur die Eingabe schwarz */
.ts-dlg-box .dlg-tbl-box:has(input.zell-ein) tbody td, .je-such table:has(input.zell-ein) tbody td { color: var(--ts-ro-fg); }

/* §1989 (Inventur §1983 Punkt 4, Joerg: global messen und angleichen): Fenster der Familie .ts-ovl.ts-ma-overlay (Assistenten, Teilmenge, SN/PID,
   PDF, Meldung — 14 Stellen) wie .ts-dlg: senkrecht MITTIG statt oben angeheftet (align flex-start + margin-top 3vh, max-height 70vh),
   Hoehe bis 94vh; die Auswahlliste (.dlg-scroll) fuellt die Fensterhoehe statt bei 340 px abzuschneiden und bekommt den Tabellenrahmen. */
.ts-ovl.ts-ma-overlay { align-items: center; }
.ts-ovl .ts-ma-box { margin-top: 0; max-height: 94vh; }
/* §4058 (Jörg 31.10., RMA ProduktIDs: Eingabefeld riesig): Regel .ts-ma-box > .ts-setup-form > .ts-setup-input — §4170 entfernt, Fenster seit §4106 ohne .ts-setup-input (Aufrufgraph: Waise) */
.ts-ovl .ts-ma-box > .ts-setup-form > .dlg-scroll { flex: 1 1 auto; min-height: 0; max-height: none; border: 1px solid var(--ts-panel-bd); border-radius: 6px; }
.ts-ovl .ts-ma-box > .ts-setup-form > .dlg-scroll > table { width: 100%; table-layout: fixed; font-size: 13px; }   /* §1989: Tabellen in diesen Fenstern wie in .ts-dlg (fest, 13 px) — Teilmengendialog lief waagerecht ueber */

/* §1990 Nebenbefund K-404 Vertraege: Liste fuellt die Kachel bis unten (vorher max-height 560 px, Kacheln oben angeheftet, Gitter endete mitten im Bild) */
.tspro-ui.bhk-wrap { height: 100%; box-sizing: border-box; display: flex; flex-direction: column; }
.bhk-cols { flex: 1 1 auto; min-height: 0; align-items: stretch; }
.bhk-liste { display: flex; flex-direction: column; }
.bhk-liste > .fil-sec-body { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.bhk-liste > .fil-sec-body > .bhk-suche, .bhk-liste > .fil-sec-body > .bhk-summe { flex: 0 0 auto; }
.bhk-tblwrap { flex: 1 1 auto; min-height: 0; max-height: none; }


/* §2007 Mail-Dialog: fertig erstellte Anhaenge (gesehen = gesendet) und Anhang-Vorschau */
.tsmd-box .tsmd-anh { display: flex; flex-direction: column; gap: 4px;  }
.tsmd-box .tsmd-anh-zeile { display: flex; align-items: center; gap: var(--ds-m); border: 1px solid var(--ts-panel-bd); border-radius: 6px; padding: 3px 4px 3px 10px; }
.tsmd-box .tsmd-anh-name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tsmd-box .tsmd-anh-gr { color: var(--ts-gedaempft); font-size: 12px; white-space: nowrap; }
/* §2007: Mail-Dialog fuellt die Hoehe — die Nachricht nimmt den Rest, die Anhangliste passt ohne Rollbalken im Fenster */
.ts-dlg-box.tsmd-box > .b { display: flex; flex-direction: column; overflow: hidden; }
.ts-dlg-box.tsmd-box > .b > * { flex: 0 0 auto; }
.ts-dlg-box.tsmd-box > .b > .tsmd-body { flex: 1 1 auto; height: auto; min-height: var(--tsmd-body-min); }
/* §2008: Anhang direkt unter dem Betreff — Formate (nur bei mehreren) in derselben Zeile wie die Beschriftung */
.tsmd-box .tsmd-anh-kopf { display: flex; align-items: center; gap: var(--ds-m); margin: var(--ds-m) 0 3px; }   /* Abstand wie die anderen Beschriftungen (.tsmd-lbl) */
.tsmd-box .tsmd-anh-kopf > .tsmd-lbl { margin: 0; }
.tsmd-box .tsmd-anh-kopf .tsmd-fmt { display: flex; flex-wrap: wrap; gap: var(--ds-m); margin: 0; }
.tsmd-box .tsmd-anh-kopf .tsmd-fmt[hidden] { display: none; }
.tsmd-box .tsmd-anh { margin-top: 2px; }

/* §2012 Rechnung: Rechnungstext (nur-lesend) mit Baustein-Knopf — mehrzeilig bis 2 Feldhoehen, dann rollend */
.m-rechnung .v.rtext { flex: 1 1 auto; min-width: 0; white-space: pre-line; height: auto; min-height: var(--ds-feld); max-height: calc(var(--ds-feld) * 2); overflow-y: auto; box-sizing: border-box; }

/* §2016 (Joerg: "rot steht nicht in der Liste"): Empfaenger OHNE E-Mail im Anschreiben rot — die Zeile hatte class="as-ohne" und die Zelle "neg",
   aber es gab fuer beide keine Regel (Statuszeile versprach "rot" seit §1590). */
/* §2695 (Joerg 09.10.): Empfaenger ohne E-Mail werden NICHT mehr rot dargestellt — die Regeln fuer tr.as-ohne sind entfernt *//* §2520: die Seite "Umstellung je-computer.de" (§2417/§2519) ist aufgeloest — der Kreis lebt in den Anschreiben-Masken (as-fremd-Zeilen oben bei .ts-dlg.as) */


/* §2019 Kommunikation › Außendienst: Auswahl oben (eine Zeile), Terminliste fuellt den Rest; nicht-Aussendienst-Termine gedaempft */
.m-komm .komm-main.komm-ad-main { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
/* §4680 Variante A (DFA §4679, Massvorlage 1920x822 §4431): Auswahl oben, Termin-Liste volle Breite (scrollt, minmax(0,1fr)), Detail-Kachel darunter
   volle Breite mit fester Hoehe --ad-kachel-h — ersetzt §4613 Variante B (Kachel rechts 410 px) */
.m-komm { --ad-kachel-h: 256px; --ad-naechst-b: 200px; }   /* §4698 ohne Phasenzeile: 301 − 45 */
.m-komm .komm-main.komm-ad-main { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr) var(--ad-kachel-h); }
.m-komm .komm-ad-main > .komm-ad-filter { grid-column: 1 / -1; }
.m-komm .komm-ad-termin { min-height: 0; height: var(--ad-kachel-h); display: flex; flex-direction: column; }
.m-komm .komm-ad-termin > .fil-sec-body.fb-rechts { flex: 1 1 auto; border: 0; border-radius: 0; }
/* §4680/§4698 Detail: EINSATZ | TERMIN | FAHRTEN | BELEG (Phasenleiste steht oben in der Auswahl) */
.m-komm .komm-main > .fil-sec.komm-ad-termin:not(.lbl-auto) > .fil-sec-body.ad-detail { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-rows: minmax(0, 1fr); column-gap: var(--ds-l); align-content: stretch; overflow: hidden; }
.m-komm .komm-ad-termin > .ad-detail > .fb-leer { grid-column: 1 / -1; }
.m-komm .komm-ad-termin > .ad-detail > .fb-d-block { min-height: 0; min-width: 0; overflow-x: hidden; overflow-y: auto; justify-content: flex-start; }
.m-komm .komm-ad-termin > .ad-detail > .fb-d-block:first-child { border-top: 0; }
/* Messung 07.11. 20:27: Z7048 (.m-komm .komm-main > .fil-sec:not(.lbl-auto) > .fil-sec-body, 0,6,0, flex column) schlug das Raster oben (0,4,0) — die vier Blöcke standen untereinander;
   Zusatztexte der Phasen (Einsatzort-Name) liefen in die Nachbarphase — gekürzt, voller Text im title */
/* §4698 (Jörg 07.11. 20:49) Statusleiste OBEN in der Auswahl-Kachel: Filter links, Phasen + „Nächster Schritt“ füllen den Rest; immer sichtbar, feste Höhe */
.m-komm .komm-main > .fil-sec.komm-ad-filter > .fil-sec-body { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ds-m) var(--ds-l); }   /* Messung 20:55: neben den Filtern blieben ~1000 px — Stufennamen gekürzt („Einsa…“); daher eigene Zeile über die volle Breite */
.m-komm .komm-ad-filter .ad-phasen { flex: 0 0 100%; min-width: 0; display: flex; align-items: center; gap: var(--ds-l); padding-top: var(--ds-m); border-top: 1px solid var(--ts-line); }
.m-komm .komm-ad-filter .ad-phasen > .ts-phasen { flex: 1 1 auto; min-width: 0; }
.m-komm .komm-ad-filter .ad-phasen > .obtn.prim.ad-naechst { flex: 0 0 var(--ad-naechst-b); width: var(--ad-naechst-b); }   /* Gegenleser 20:59: feste Breite, Knopftext wechselt */
.m-komm .komm-ad-filter .ad-phasen .ts-phase, .m-komm .komm-ad-filter .ad-phasen .ts-phase:last-child { flex: 1 1 0; }   /* gleich breite Stufen: Punkte stehen fest, egal welcher Text */
.m-komm .komm-ad-filter .ad-phasen .ts-phase, .m-komm .komm-ad-filter .ad-phasen .ts-phase-text { min-width: 0; }
.m-komm .komm-ad-filter .ad-phasen .ts-phase-zusatz { overflow: hidden; text-overflow: ellipsis; }
.m-komm .komm-ad-termin .ad-detail .fz > select.v.ad-art { height: var(--ds-feld); }
.m-komm .komm-ad-termin > .fil-sec-head { display: flex; gap: var(--ds-s); min-width: 0; white-space: nowrap; }
.m-komm .komm-ad-termin #adTerminKopf { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }   /* §4625 Messrunde 3: Kopf 474 in 408 px */
/* §4627 Gegenleser: Lesefelder als Text ohne Eingaberahmen, mehrzeilig statt gekuerzt (fuellt die Kachel statt 120–160 px Leerraum);
   „Nächster Schritt“ = gefuellter Akzent-Knopf (Hauptaktion der Kachel); Statuszeile unten in der Termine-Kachel (§4299) */
.m-komm .komm-ad-termin.komm-ad-termin .fb-rechts .fz > div.v.ro:not(.fuellt):not(.hpick) { line-height: 1.35; border: 0; background: none; box-shadow: none; padding: 0; height: auto; min-height: 0; white-space: pre-line; overflow: visible; text-overflow: clip; overflow-wrap: anywhere; }
.m-komm .komm-ad-termin .fz { align-items: start; }
.m-komm .komm-ad-termin .obtn.prim.ad-naechst { width: 100%; justify-content: center; background: var(--ts-akzent); border-color: var(--ts-akzent); color: var(--ts-sec-fg); font-weight: 700; }
.m-komm .komm-ad-termin .obtn.prim.ad-naechst:hover:not(:disabled) { background: var(--ts-akzent-dark); border-color: var(--ts-akzent-dark); }
.m-komm .komm-ad-termin .obtn.prim.ad-naechst:disabled { background: var(--ts-dis-bg); border-color: var(--ts-dis-bd); color: var(--ts-dis-fg); }
.m-komm .komm-ad-liste > .fil-sec-body { display: flex; flex-direction: column; min-height: 0; }
.m-komm .komm-ad-liste > .fil-sec-body > .tbl-box { flex: 1 1 auto; min-height: 0; }   /* §4619 Bild 07.11.: Name der aktuellen Stufe war auf „Tä…“ gekuerzt */
.m-komm .komm-ad-filter > .fil-sec-body { display: flex; flex-wrap: wrap; gap: var(--ds-s) var(--ds-l); align-items: center; }

/* §2020 Kommunikation › Außendienst: Fahrt-Zeilen (ohne Termin) kursiv; Termin-Editor (Doppelklick) — Beschriftung links, Felder rechts */
.m-komm .komm-ad-liste tbody tr.ad-fahrt > td { font-style: italic; color: var(--ts-ink-muted); }
.ts-dlg-box .ad-ed { display: flex; flex-direction: column; gap: var(--ds-s); }
.ts-dlg-box .ad-ed > .fz, .ts-dlg-box .ad-ed > .fz-ta { display: grid; gap: var(--ds-s); align-items: center; }   /* M5 §3991: Beschriftungsspalte max-content ueber das Kachelgitter (vorher feste 120 px §2078) */
.ts-dlg-box .ad-ed > .fz > label, .ts-dlg-box .ad-ed > .fz-ta > label { text-align: left; white-space: nowrap; font-weight: 600; color: var(--ts-ink); }
.ts-dlg-box .ad-ed > .fz-ta > label { padding-top: 6px; }
.ts-dlg-box .ad-ed > .fz-ta { align-items: start; }
.ts-dlg-box .ad-ed .ad-uhr { display: inline-flex; align-items: center; gap: var(--ds-xs); }
.ts-dlg-box .ad-uhr .fb-uhr { width: var(--fb-90); }   /* §2753 Leiterstufe statt 62 px: Lint knapp "08" 15 px in 4 px (Pfeil-Polster im Dialog) */   /* §2752 alle Dialoge (vorher nur .ad-ed) — Fahrt nachtragen (fen) nutzt dieselbe Uhr-Zeile */
.ts-dlg-box .ad-uhr .fb-uhr-dp { color: var(--ts-gedaempft); }
.ts-dlg-box .b .ad-ed input:where(:not([type="checkbox"])), .ts-dlg-box .b .ad-ed select, .ts-dlg-box .b .ad-ed textarea { margin-top: 0; }
.ts-dlg-box .ad-ed .v.ro { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* §2021: zugeordnete Fahrten eingerueckt unter dem Termin */
.m-komm .komm-ad-liste tbody tr.ad-sub > td.sp-txt-breit { padding-left: 18px; }
/* §2022 (Joerg): schmalere Spalten (Datum, Zeit, Vor Ort, AE, Anf., km), Stand gruen = erledigt, rot = offen */


.m-komm .komm-ad-liste #adTab .sp-anz { width: 46px; }


.m-komm .komm-ad-liste #adTab td.ad-gruen { color: var(--ts-ok); font-weight: 600; }
.m-komm .komm-ad-liste #adTab td.ad-offen { color: var(--ts-akzent); font-weight: 600; }   /* §4628 (Joerg 07.11. 15:06, aendert §2022/§2689): „offen“ und „⚠ fehlt“ in Akzent-Blau — Rot nur noch fuer Pruef-Fehler-Zeilen (tr.ad-fehler, ⚠ .ad-pruef-f); kein eigener Hover (Zeilen-Hover gilt) */
/* §2025: Breiten nach Messung (Lint: Datum 90 px Text in 86, Stand 135 in 120; Zeit/Vor Ort abgeschnitten) */
.m-komm .komm-ad-liste #adTab .sp-datum { width: 98px; }
.m-komm .komm-ad-liste #adTab .sp-zeit { width: 112px; }
.m-komm .komm-ad-liste #adTab .sp-kennung { width: 142px; }
/* §2025 Fahrtenbuch-Fenster: Anleitung mit Umbruch (statt der festen Spalten der Konto-Zeilen) */
.ts-dlg.bka .fb-anleitung { border: 1px solid var(--ts-line); border-radius: var(--ds-radius); padding: var(--ds-m) var(--ds-l); line-height: 1.5; }
.ts-dlg.bka .fb-anleitung .fb-anl-kopf { font-weight: 700; margin-bottom: var(--ds-xs); }
.ts-dlg.bka .fb-anleitung ol { margin: 0; padding-left: 20px; }
.ts-dlg.bka .fb-anleitung li + li { margin-top: var(--ds-xs); }
.ts-dlg.bka .fb-anleitung .fb-anl-stand { margin-top: var(--ds-s); color: var(--ts-ink-muted); }
/* §2026: Abstand zwischen Anleitung und Schrittliste (Screenshot Joerg 19:05 — Liste klebte am Kasten) */
.ts-dlg.bka .fb-anleitung + .bka-schritte { margin-top: var(--ds-m); }
/* §2026: feste Zonen im Fahrtenbuch-Fenster — Hinweis eine Zeile hoch reserviert, Ergebnis immer da */
/* §2035 Kommunikation › Fahrtenbuch (§2039: App-Einstellungen jetzt unter Einstellungen › Fahrtenbuch, Panel #es-fbapppanel) */
.m-komm .komm-main.komm-fb-main { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
.m-komm .komm-fb-filter > .fil-sec-body { display: flex; flex-wrap: wrap; gap: var(--ds-s) var(--ds-l); align-items: center; }
.m-komm .komm-fb-liste .fb-geaendert { box-shadow: inset 3px 0 0 var(--ts-akzent); }   /* §2037 (Joerg: "komisch gelb"): geaendert = Akzentstrich links statt gelber Flaeche */
.ts-dlg.bka .fb-hinweis { min-height: 1.5em; }
/* §2036/§2037 Fahrtenbuch › Fahrten wie in der App: links Liste, rechts Einzelfahrt. §2037 (Joerg): Kette nicht als eigene Zeile, sondern die
   betroffenen Fahrten ROT UMRANDET wie in der App; Fahnen statt Punkte; Kategorie in Liste und Einzelfahrt als dieselbe Marke; geaendert = Akzentstrich */
.m-komm .komm-fb-liste > .fil-sec-body { display: flex; flex-direction: column; min-height: 0; }
.m-komm .komm-fb-liste .fb-zwei { display: grid; grid-template-columns: minmax(0, 1fr) 410px;   /* §2063: 470 -> 410 (Joerg: rechte Kachel schmaler) */ gap: var(--ds-m); flex: 1 1 auto; min-height: 0; }
.m-komm .komm-fb-liste .fb-links { min-height: 0; }
.m-komm .komm-fb-filter .datepick.fb-datum, .m-komm .komm-ad-filter .datepick.fb-datum { flex: 0 0 var(--fb-120); width: var(--fb-120); }   /* §2037: .datepick (flex:1, Z. 2061) schlaegt sonst .fb-datum (gleiche Spezifitaet, spaeter) */
.m-komm .komm-fb-filter .fb-ck { display: inline-flex; align-items: center; gap: var(--ds-xs); font-weight: 400; }
/* Spalten: Kategorie | Grund (Rest) | Start | Ziel | km Start | gefahren | km Ende */
/* §2038 (Joerg: "scrollt nach links und rechts"): Start/Ziel in Prozent statt fester 290 px — feste Summe 1.157 px passte nur bei 1920 px Fensterbreite */
.m-komm #fbTab .fb-punkt { width: 25%; }
.m-komm #fbTab .fb-grundsp { overflow: hidden; }   /* §2038: Grund nimmt den Rest — NICHT .sp-rest, das ist anderswo auf width:100% gesetzt und drueckte Start/Ziel auf 136 px */
.m-komm #fbTab .fb-km { width: 80px; text-align: right; }
.m-komm #fbTab .fb-gef { width: 76px; text-align: right; }
.m-komm #fbTab th.fb-km, .m-komm #fbTab th.sp-anz { text-align: right; }
.m-komm #fbTab th.sp-anz { width: 76px; }
.m-komm .komm-fb-liste .fb-links .tbl-scroll { overflow-x: hidden; }
.m-komm #fbTab tbody tr[data-s] { cursor: pointer; }
.m-komm #fbTab tbody tr[data-s] > td { vertical-align: top;   }
.m-komm #fbTab .fb-grund { font-weight: 600; }
.m-komm #fbTab .fb-notizz, .m-komm #fbTab .fb-ortz { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.m-komm #fbTab .fb-ortz { padding-left: 18px; }
.m-komm #fbTab .fb-zt { font-weight: 600; white-space: nowrap; }
.m-komm #fbTab tbody tr.fb-privat > td { color: var(--ts-gedaempft); }
.m-komm #fbTab td.fb-falsch { color: var(--ts-red); font-weight: 600; }
/* Uebergang fehlerhaft: Fahrt rot umrandet (box-shadow statt border — keine Verschiebung der Spalten) */
.m-komm #fbTab tbody tr.fb-bruch > td { box-shadow: inset 0 2px 0 var(--ts-red), inset 0 -2px 0 var(--ts-red); }
.m-komm #fbTab tbody tr.fb-bruch > td:first-child { box-shadow: inset 2px 2px 0 var(--ts-red), inset 0 -2px 0 var(--ts-red); }
.m-komm #fbTab tbody tr.fb-bruch > td:last-child { box-shadow: inset -2px 2px 0 var(--ts-red), inset 0 -2px 0 var(--ts-red); }
.m-komm #fbTab td.fb-geaendert, .m-komm #fbTab div.fb-geaendert { box-shadow: inset 3px 0 0 var(--ts-akzent); padding-left: 6px; }
/* Fahne (SVG): Stange + Wimpel, gruen Start / rot Ziel */
.m-komm .fb-fahne { width: 12px; height: 14px; margin-right: 6px; vertical-align: -2px; flex: 0 0 auto; }
.m-komm .fb-fahne path:first-child { fill: none; stroke: currentColor; }
.m-komm .fb-fahne-start { color: var(--ts-ok); fill: var(--ts-ok); }
.m-komm .fb-fahne-ziel { color: var(--ts-red); fill: var(--ts-red); }
/* Kategorie-Marke — dieselbe Form in der Liste und als Knopf in der Einzelfahrt; gewaehlt = Akzent */
.m-komm .fb-katz { display: inline-flex; align-items: center; justify-content: center; min-width: 78px; height: 22px; padding: 0 10px; box-sizing: border-box;
  border: 1px solid var(--ts-panel-bd); border-radius: 11px; background: var(--ts-flaeche); color: var(--ts-ink); font: inherit; font-size: 12px; line-height: 1; }
.m-komm .fb-katz.fb-k0 { color: var(--ts-gedaempft); }
.m-komm .fb-katz.on { background: var(--ts-akzent); border-color: var(--ts-akzent); color: var(--ts-sec-fg); }
.m-komm button.fb-katz { cursor: pointer; }
.m-komm button.fb-katz:hover:not(.on):not(:disabled) { background-color: var(--ts-hover-bg); }
.m-komm button.fb-katz:disabled { cursor: default; }
/* Einzelfahrt */
.m-komm .fb-rechts { border: 1px solid var(--ts-line); border-radius: var(--ds-radius); padding: var(--ds-s) var(--ds-m); overflow-y: auto; overflow-x: hidden; min-height: 0; }
.m-komm .fb-rechts .fb-leer { color: var(--ts-gedaempft); padding: var(--ds-m) 0; }
.m-komm .fb-rechts .fb-d-titel { display: flex; align-items: center; gap: var(--ds-s); font-weight: 700; padding-bottom: var(--ds-s); }
.m-komm .fb-rechts .fb-d-titel .fb-d-km { margin-left: auto; }
.m-komm .fb-rechts .fb-d-block { border-top: 1px solid var(--ts-line); padding: var(--ds-s) 0; display: flex; flex-direction: column; gap: var(--ds-xs); }
.m-komm .fb-rechts .fb-d-h { font-weight: 700; display: flex; align-items: center; }
.m-komm .fb-rechts .fz { display: grid; grid-template-columns: var(--fb-90) minmax(0, 1fr); gap: var(--ds-s); align-items: center; }
.m-komm .fb-rechts .fz > label { font-weight: 600; }
.m-komm .fb-rechts .fz .v { width: 100%; min-width: 0; margin: 0; box-sizing: border-box; }
.m-komm .fb-rechts .fz.fb-d-zeit { grid-template-columns: var(--fb-90) var(--fb-120) 58px auto 58px auto; justify-content: start; }
.m-komm .fb-rechts .fb-uhr-dp { color: var(--ts-gedaempft); }
.m-komm .fb-rechts .fz.fb-d-zeit .datepick { width: var(--fb-120); flex: none; }
/* §4618 gemessen 07.11. bei 1920x822: Zeitzeile 391/395 px Inhalt in 369 px Kachel (abgeschnitten) — Datum 110, Spaltenabstand xs: 90+110+58+~8+58+~24+5x4 = 368 */
.m-komm .fb-rechts .fz.fb-d-zeit { grid-template-columns: var(--fb-90) var(--fb-110) 58px auto 58px auto; column-gap: var(--ds-xs); }
.m-komm .fb-rechts .fz.fb-d-zeit .datepick { width: var(--fb-110); }
/* §4619 Messrunde 2 (07.11., 1920x822): Zeile km Ende/gefahren 395 px in 369 (abgeschnitten) -> Raeder 90: 90+90+~60+90+3x4 = 342;
   Einzelfahrt mit Kette 23 px hoeher als die Kachel (innerer Scroll) -> Bloecke mit Abstand xs statt s (6 Bloecke x 2 x 4 px = 48 px) */
.m-komm .fb-rechts .fz.fb-d-km2 { grid-template-columns: var(--fb-90) var(--fb-90) auto var(--fb-90); column-gap: var(--ds-xs); }
.m-komm .fb-rechts .fz.fb-d-km2 .fb-rad { width: var(--fb-90); }
.m-komm #fbDetail .fb-d-block { padding: var(--ds-xs) 0; }
.m-komm .fb-rechts .fz.fb-d-zahl { grid-template-columns: var(--fb-90) var(--fb-120) auto; justify-content: start; }
.m-komm .fb-rechts .fb-d-vorf { width: auto; padding: 0 10px; height: var(--ds-zeile); }
.m-komm .fb-rechts .fz.fb-d-km2 { grid-template-columns: var(--fb-90) var(--fb-110) auto var(--fb-110); }   /* §2063 schmalere Kachel */
/* §2038 Scrollrad: Zahlenfeld + ▲▼ (eigene Knoepfe, keine Browser-Pfeile) */
.m-komm .fb-rechts .fb-rad { display: flex; align-items: stretch; width: var(--fb-110); }
.m-komm .fb-rechts .fb-rad > .v { flex: 1 1 auto; text-align: right; border-top-right-radius: 0; border-bottom-right-radius: 0; }
.m-komm .fb-rechts .fb-rad-k { display: flex; flex-direction: column; flex: 0 0 18px; }
.m-komm .fb-rechts .fb-rad-k > button { flex: 1 1 0; padding: 0; border: 1px solid var(--ts-line); border-left: 0; background: var(--ts-flaeche); color: var(--ts-ink); font-size: 8px; line-height: 1; cursor: pointer; }
.m-komm .fb-rechts .fb-rad-k > button:first-child { border-top-right-radius: var(--ds-radius); border-bottom: 0; }
.m-komm .fb-rechts .fb-rad-k > button:last-child { border-bottom-right-radius: var(--ds-radius); }
.m-komm .fb-rechts .fb-rad-k > button:hover:not(:disabled) { background-color: var(--ts-hover-bg); }
.m-komm .fb-rechts .fb-rad-k > button:disabled { cursor: default; color: var(--ts-gedaempft); }
.m-komm .fb-rechts .fb-d-kat { display: flex; gap: 6px; padding: 2px 0; }
.m-komm .fb-rechts .v.fb-geaendert, .m-komm .fb-rechts .fb-d-kat.fb-geaendert { box-shadow: inset 3px 0 0 var(--ts-akzent); }
.m-komm .fb-rechts .fb-d-kat.fb-geaendert { padding-left: 8px; }
.m-komm .fb-rechts .fb-d-fehler { color: var(--ts-red); font-weight: 600; }
/* §2039 Einstellungen › Fahrtenbuch › App-Einstellungen (#es-fbapppanel): Wert-Spalte mit Feld, Bereichswechsel mit Linie, geaendert = Akzentstrich */
#es-fbapppanel .es-fb-wert { width: var(--fb-270); }
#es-fbapppanel .es-fb-wert .v { width: 100%; min-width: 0; margin: 0; box-sizing: border-box; }
#es-fbapppanel tr.es-fb-neu > td { border-top: 2px solid var(--ts-line); }
#es-fbapppanel tr.es-fb-neu > td.sp-txt { font-weight: 600; }
#es-fbapppanel .es-fb-ro { color: var(--ts-gedaempft); }
#es-fbapppanel .es-fb-geaendert { box-shadow: inset 3px 0 0 var(--ts-akzent); }
#es-fbapppanel #es-fb-stand { display: block; margin-top: var(--ds-xs); color: var(--ts-gedaempft); }
/* §2040 Kommunikation › Fahrtenbuch-Orte: gleicher Aufbau wie die Fahrten (fb-zwei, fb-rechts); Spalten Bezeichnung | Strasse | PLZ Ort | Fahrten | zuletzt */
.m-komm #orTab .or-bez { width: 30%; }
.m-komm #orTab .or-str { width: 26%; }
.m-komm #orTab .or-ort { overflow: hidden; }
.m-komm #orTab .or-zahl { width: 76px; text-align: right; }
.m-komm #orTab .or-dat { width: var(--fb-90); }
.m-komm #orTab td.or-bez, .m-komm #orTab td.or-str, .m-komm #orTab td.or-ort { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.m-komm #orTab tbody tr[data-id] { cursor: pointer; }
.m-komm #orTab tbody tr.or-aus > td { color: var(--ts-gedaempft); }
.m-komm #orTab td.fb-geaendert { box-shadow: inset 3px 0 0 var(--ts-akzent); padding-left: 6px; }
.m-komm #orTab .or-marke { font-size: 11px; padding: 0 6px; border: 1px solid var(--ts-panel-bd); border-radius: 9px; background: var(--ts-flaeche); }
.m-komm .fb-rechts .fz.or-d-plz { grid-template-columns: var(--fb-90) var(--fb-64) minmax(0, 1fr); }
.m-komm .fb-rechts .or-fahrten { display: flex; flex-direction: column; gap: 2px; }
.m-komm .fb-rechts .or-fahrt { display: grid; grid-template-columns: 118px minmax(0, 1fr) 56px; gap: var(--ds-s); }
.m-komm .fb-rechts .or-f-weg { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.m-komm .fb-rechts .or-f-km { text-align: right; color: var(--ts-gedaempft); }
.m-komm .fb-rechts .v.ro { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.m-komm .fb-rechts .v.ro[data-zu] { cursor: pointer; }
.m-komm .fb-rechts .v.ro[data-zu]:hover { background-color: var(--ts-hover-bg); }   /* §4613 F6 Kette: Vor-/Folgefahrt anklickbar */
/* §2041 Aussendienst: fest zugeordnete Fahrten nicht kursiv (kursiv = Vorschlag) */
.m-komm .komm-ad-liste tbody tr.ad-sub.ad-fest > td { font-style: normal; color: var(--ts-ink); }
/* §2042 Abschluss-Dialog: Termintext mehrzeilig lesbar */
.ts-dlg-box .ad-ed .v.ro.ad-ab-text { white-space: pre-wrap; overflow: visible; height: auto; min-height: var(--ds-zeile); }
/* §2043 Fahrtenbuch-Nachtrag (Dialog): Termin | Feld | bisher | neu — Werte duerfen umbrechen */
.ts-dlg-box .ad-nt-box { max-height: 60vh; }
.ts-dlg-box table.ad-nt { width: 100%; table-layout: fixed; }
.ts-dlg-box table.ad-nt th, .ts-dlg-box table.ad-nt td { vertical-align: top; white-space: normal; overflow-wrap: anywhere; }
.ts-dlg-box table.ad-nt .sp-check { width: 28px; }
.ts-dlg-box table.ad-nt .ad-nt-wann { width: 200px; }
.ts-dlg-box table.ad-nt .ad-nt-feld { width: var(--fb-140); }
.ts-dlg-box table.ad-nt .ad-nt-ist { color: var(--ts-gedaempft); }
.ts-dlg-box table.ad-nt .ad-nt-soll { font-weight: 600; }
/* §2048/§2049 Aussendienst-Pruefliste: erster Fehler als roter Text in der Spalte Stand (Joerg: kein roter Rahmen), Hinweise grau; alle im Tooltip */
.m-komm .komm-ad-liste .ad-pruef { display: inline; font-weight: 400; color: var(--ts-gedaempft); cursor: help; }   /* §2053 Symbol neben dem Stand, kein Umbruch */
.m-komm .komm-ad-liste td.sp-kennung { white-space: nowrap; }
.m-komm .komm-ad-liste .ad-pruef.ad-pruef-f { color: var(--ts-red); font-weight: 600; }
/* §2049 Markieren im Datum, KI-Vorschlaege (Dialog) */
.ts-dlg-box .ad-ki { display: flex; flex-direction: column; gap: var(--ds-s); max-height: 62vh; overflow-y: auto; }
.ts-dlg-box .ad-ki .ad-ki-t { border: 1px solid var(--ts-line); border-radius: var(--ds-radius); padding: var(--ds-s) var(--ds-m); }
.ts-dlg-box .ad-ki .ad-ki-k { font-weight: 600; margin-bottom: 4px; }
.ts-dlg-box .ad-ki .ad-ki-z { display: block; padding: 2px 0; }
.ts-dlg-box .ad-ki-ok { color: var(--ts-gedaempft); }
.ts-dlg-box .ad-ki-warn { color: var(--ts-red); }
/* §2050 Aussendienst: eigene Spalte zum Markieren vor dem Datum; Termin mit Fehler = ganze Zeile in roter Schrift (Joerg) */
.m-komm #adTab .ad-ck { width: 28px; text-align: center; padding-left: 0; padding-right: 0; }
.m-komm #adTab .ad-ck input { margin: 0; vertical-align: middle; }
.m-komm .komm-ad-liste tbody tr.ad-fehler > td, .m-komm .komm-ad-liste tbody tr.ad-fehler > td .v, .m-komm .komm-ad-liste tbody tr.ad-fehler > td select { color: var(--ts-red); }
/* §2055 Dialog "Kunde anlegen": PLZ schmal + Ort, Hinweise auf vorhandene Kunden, Google-Treffer */
.ts-dlg-box .ad-nk .obtn { width: auto; display: inline-block; padding: 0 10px; height: var(--ts-btn-h); }   /* §2744 Abstand zum Feld aus dem Formulargitter (column-gap) statt margin-left */   /* §2071 Knopfmass-Token (K-351) statt --ds-zeile */
/* §2056 Dialog Kunde suchen/anlegen: Abschnitte, Suchzeile mit Knopf */
/* §2061 (Joerg: "nur die Schrift kleiner, nicht die Tabelle umbauen"): Aufbau wie vorher (App-Vorlage: Grund, Start/Ziel mit Fahne, Zeit,
   Ort darunter), aber kompakt — Text 12 px (--ds-fs-text), Ortszeile 11 px gedaempft (--ds-fs-hinweis), Zeilenhoehe 16 px, Kategorie-Marke
   18 px hoch; Ziel: Zeile rund 36 px statt 49 px (gemessen) */
.m-komm #fbTab tbody tr[data-s] > td { font-size: var(--ds-fs-text); line-height: 16px; padding-top: 2px; padding-bottom: 2px; }
.m-komm #fbTab .fb-ortz, .m-komm #fbTab .fb-notizz { font-size: var(--ds-fs-hinweis); color: var(--ts-gedaempft); }
.m-komm #fbTab .fb-katz { height: 18px; min-width: 70px; font-size: var(--ds-fs-hinweis); }
/* §2062 (Joerg: "Text ueberall auf 12 px — im kompletten Kommunikationscenter dieselbe Groesse"): Seiten des Bereichs Kommunikation (body mit .m-komm,
   auch die Dialoge #ovl derselben Seite) — Grundschrift, Tabellen, Beschriftungen und Felder 12 px (--ds-fs-text). Bewusst kleiner bleiben nur
   Nebenzeilen/Hinweise (--ds-fs-hinweis, eigene Regeln mit hoeherer Spezifitaet); Kachelkoepfe behalten --ts-head-fs. Vorher: body ohne Groesse
   (= 16 px Browser-Vorgabe, z. B. "Letzte Fahrten" in den Orten), Tabellen 13 px, Beschriftungen .fz > label 13 px. */
body:has(.m-komm) { font-size: var(--ds-fs-text); --ts-tab-fs: var(--ds-fs-text); }
body:has(.m-komm) :is(td, th, .fz > label, input, select, textarea, .v) { font-size: var(--ds-fs-text); }
/* §2063 Kategorie als Symbol ganz rechts (App-Vorlage: €-Marke) statt 100-px-Spalte mit Marke "Geschäft" */
.m-komm #fbTab .fb-katsym { width: 30px; text-align: center; padding-left: 0; padding-right: 0; }
.m-komm #fbTab .fb-sym { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 50%; font-size: var(--ds-fs-hinweis); font-weight: 700; border: 1px solid var(--ts-line); background: var(--ts-flaeche); color: var(--ts-ink); }
.m-komm #fbTab .fb-sym.fb-k1 { background: var(--ts-akzent); border-color: var(--ts-akzent); color: var(--ts-sec-fg); }
.m-komm #fbTab .fb-sym.fb-k0 { color: var(--ts-gedaempft); }
/* §2065 (Joerg): Grund in der Fahrtentabelle bricht um — hoechstens 2 Zeilen (die Zeile ist wegen Start/Ziel ohnehin zweizeilig), voller Text im Tooltip;
   mit Notiz bleibt der Grund einzeilig und die Notiz steht darunter */
.m-komm #fbTab .fb-grundsp .fb-grund { white-space: normal; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow-wrap: anywhere; }
.m-komm #fbTab .fb-grundsp .fb-grund.fb-grund-1 { -webkit-line-clamp: 1; }
/* §2068 eigene Spalte Arbeitseinheiten TeamViewer (Kopf "AE TV" braucht mehr als die 46 px von .sp-anz) */
.m-komm .komm-ad-liste #adTab .sp-anz.ad-aetv { width: 58px; }
/* §2069 Termin im Fahrtenbuch abgestimmt: km in Gruen mit Haken (Tooltip) */
.m-komm .komm-ad-liste #adTab td.ad-km.ad-fb-ok { color: var(--ts-ok); font-weight: 600; white-space: nowrap; }
.m-komm .komm-ad-liste #adTab .sp-anz.ad-km { width: 60px; }
/* §4613 SPALTENPLAN schlanke Liste (DFA Fakturierung, Massvorlage 1920x822 §4431): Tabelle innen 1219 px (gemessen), Festspalten
   28+86+92+240+110+46+56+50+96+127 = 931 (§4619: Betreff 240, Fahrten 96 — „○ Vorschlag“ war gekuerzt), Einsatzort (sp-rest) nimmt den Rest (~262 bei 1193). Ohne Schicht, damit nichts ueberstimmt. */
.m-komm { --ad-sp-datum: 86px; --ad-sp-zeit: 92px; --ad-sp-betreff: 240px; --ad-sp-art: 165px; --ad-sp-aetv: 56px; --ad-sp-anf: 50px; --ad-sp-fahrten: 150px; --ad-sp-stand: 127px; }   /* §4680: Terminart 165 („TeamViewer-Wartung“ + Auswahl), Hinfahrt/Rückfahrt je 150 (Zeit · km · Zustand) */
.m-komm .komm-ad-liste #adTab .sp-datum { width: var(--ad-sp-datum); }
.m-komm .komm-ad-liste #adTab .sp-zeit { width: var(--ad-sp-zeit); }
.m-komm .komm-ad-liste #adTab .sp-txt-breit { width: var(--ad-sp-betreff); }
.m-komm .komm-ad-liste #adTab .sp-kennung.ad-art { width: var(--ad-sp-art); }
.m-komm .komm-ad-liste #adTab td.ad-art > select.v.ad-art { width: 100%; min-width: 0; }   /* §4680 F3 Terminart-Auswahl in der Listenzeile (Bearbeiten-Modus), wie der Einsatzort-Knopf zellfuellend */
.m-komm .komm-ad-liste #adTab .sp-anz.ad-aetv { width: var(--ad-sp-aetv); }
.m-komm .komm-ad-liste #adTab .sp-anz.ad-anf { width: var(--ad-sp-anf); }
.m-komm .komm-ad-liste #adTab .sp-anz.ad-km { width: var(--ad-sp-fahrten); text-align: left; white-space: nowrap; }
.m-komm .komm-ad-liste #adTab .sp-kennung:not(.ad-art) { width: var(--ad-sp-stand); }
.m-komm .komm-ad-liste #adTab .sp-rest { width: auto; min-width: 0; }
.m-komm .komm-ad-liste #adTab td.ad-gruen { color: var(--ts-ok-text); }   /* §4625 Lint Kontrast 4.30:1 auf der Auswahlfarbe — Textgruen §3772 */
/* §2070 Kunde anlegen: Google-Treffer als Standard-Dialogtabelle (.ts-dlg table), Zeile klickbar; Tabelle fuellt den Rest der Hoehe */
.ts-dlg-box .ad-nk .ad-nk-box { flex: 1 1 auto; min-height: 0; }   /* §2744 Trefferliste fuellt die Kachel Google-Firmensuche (war max-height 160) */
.ts-dlg-box .ad-nk .ad-nk-box > .tbl-scroll { flex: 1 1 0; min-height: 0; overflow: auto; }
.ts-dlg-box .ad-nk .fen-form.fz-gitter > .fz > label:empty { display: none; }   /* §2748 Suchfeld ohne Beschriftung: an der Kachelkante wie die Tabelle (gemessen 8 px Versatz) */
.ts-dlg-box .ad-nk .fen-form.fz-gitter > .fz:has(> label:empty) > .v { grid-column: 1 / 3; }
.ts-dlg-box .ad-nk .ad-nk-tab tbody tr[data-k] { cursor: pointer; }
/* §2076 Abschluss-Dialog: Arbeitseinheiten + gerundete Zeit in einer Zeile */
/* §2081 Auftrag-Dialog: Zeile "Rechnung an" — Anzeige + Suchknopf */
.ts-dlg-box .ad-ed > .fz.ad-au-rk { grid-template-columns: var(--fb-120) minmax(0, 1fr) auto; }
.ts-dlg-box .ad-ed > .fz.ad-au-rk .obtn { width: auto; height: var(--ts-btn-h); padding: 0 10px; }
/* §2085 Kunden in der Naehe: Standard-Dialogtabelle, Zeile waehlbar */
.ts-dlg-box .ad-uk .ad-uk-box { max-height: var(--dlg-liste-h); }
.ts-dlg-box .ad-uk .ad-uk-tab tbody tr[data-k] { cursor: pointer; }
/* §2095 Kunde anlegen: Vorname | Name und Telefon | E-Mail je in einer Zeile, Beschriftungsspalte wie alle Dialoge */
/* §2100 ZEIGERHAND (Sammellauf): Zeigerhand nur, wenn das Kaestchen bedienbar ist */
.m-komm .komm-orte label.komm-ort:has(input:not(:disabled)) { cursor: pointer; }
/* §2101 (gemessen): Terminzeilen 22 px, aber Zeilen mit BEDIENBAREN Feldern 23 px — die Felder sind gesperrt 21 px, bedienbar 22 px hoch. Feste Feldhoehe = Zeilenhoehe - 1 px Rahmen, unabhaengig vom Zustand */
.m-komm .komm-ad-liste #adTab tbody td > select.v, .m-komm .komm-ad-liste #adTab tbody td > input.v { height: calc(var(--ts-tab-td-h) - 1px); min-height: 0; box-sizing: border-box; }
/* §2108 (Joerg: Bearbeiten zuoberst, Synchronisieren an zweiter Stelle): die globale Reihenfolge der Optionen (o_bearb 110, o_speichern 120, o_abbrechen 130 …) gilt;
   im comCENTER sitzt Synchronisieren/Abholen/Aktualisieren dazwischen an zweiter Stelle */
.tspro-ui.m-komm .opt-col > #o_laden, .tspro-ui.m-komm .opt-col > #o_fb { order: 115; }
.tspro-ui.m-komm .opt-col > .opt-sep { order: 140; }   /* §2108 Trennlinie nach der Modus-Gruppe (Bearbeiten · Synchronisieren · Speichern · Abbrechen) */
/* §2112 Textbausteine-Auswahl (textbausteine.js): Kopfzeile Rubrik + Suche, Tabelle mit Haken · Unterrubrik · Baustein, feste Hoehe mit Gitter bis unten (K-404) */
.ts-dlg-box .tb-wahl { display: flex; flex-direction: column; gap: var(--ds-s); height: 100%; min-height: 0; }   /* Hoehe aus der Stufe breit (--dlg-h-breit) */
.ts-dlg-box .tb-wahl .tb-box { flex: 1 1 0; min-height: 0; }
.ts-dlg-box .tb-wahl .dlg-leiste > label.tb-such { flex: 1 1 auto; }   /* §2124 Suchfeld nimmt den Rest der Leiste */
.ts-dlg-box .tb-wahl .dlg-leiste > label.tb-such > input { flex: 1 1 auto; min-width: 0; }
/* Tabelle: Standard-Dialogtabelle (tsSuchTabelleHtml, Katalogklassen) — keine eigenen Spaltenregeln (§2115) */
/* §2132 Einstellungen › Textbausteine: Filterleiste (zentrale Dialogleiste), Suchfeld nimmt den Rest */
.es-wrap .es-tbfilter { margin-bottom: var(--ds-s); }
.es-wrap .es-tbfilter > label.es-tbsuche { flex: 1 1 auto; }
.es-wrap .es-tbfilter > label.es-tbsuche > input { flex: 1 1 auto; min-width: 0; }
/* §2134 Auftrag-Dialog: Positionsvorschau, Aufteilung auf zwei Auftraege */
.ts-dlg-box .ad-au .ad-au-summe { align-self: center; font-size: 12px; color: var(--ts-gedaempft); }   /* §2746 Rahmen ad-au */
.ts-dlg-box .ad-au .ad-au-summe.neg { color: var(--ts-red); font-weight: 600; }
/* §2746 Auftrag nach K-423 (fen/fz-gitter): Positionen fuellen die Kachel Inhalt (Zeilen untereinander), Taetigkeit hoechstens 4 Zeilen, Lupe Knopfmass */
.ts-dlg-box .ad-au .v.ro.ad-au-pos { display: block; white-space: normal; overflow: auto; text-overflow: clip; height: 100%; min-height: var(--ds-zeile); line-height: 1.35; align-self: stretch; }
.ts-dlg-box .ad-au .v.ro.ad-au-pos > div { display: block; white-space: normal; }
.ts-dlg-box .ad-au .fen-form.fz-gitter.fuellt > .fz:first-child { align-items: stretch; align-self: stretch; }   /* §2748 gemessen: die ZEILE stand mittig (fen-form.fz-gitter align-items center, Z.2712) — align-self an der Zeile */
.ts-dlg-box .ad-au .fen-form.fz-gitter > .fz > textarea.v { grid-column: 2; }   /* §2748 Lint kante 8 px: Textfeld reichte ueber die leere Spalte 3 (Z.2727 2 / -1) */   /* §2747 gemessen: Positionsfeld schwebte mittig in der wachsenden Zeile (fz-gitter align-items center, Z.2713) */
.ts-dlg-box .ad-au .fen-form.fz-gitter.fuellt > .fz:first-child > label { align-self: start; padding-top: 6px; }
.ts-dlg-box .ad-au .v.ro.ad-ab-text { white-space: pre-wrap; overflow: auto; height: auto; min-height: var(--ds-zeile); max-height: calc(4 * var(--ds-zeile)); align-self: start; }
.ts-dlg-box .ad-au .obtn { width: auto; height: var(--ts-btn-h); padding: 0 10px; }
/* §2140 Fahrt nachtragen (Fahrtenbuch): Datum · Abfahrt hh:mm · Ankunft hh:mm in einer Zeile; km mit Hinweis daneben */
/* §2143 K-417 in den Einstellungen: Tabellen der Panels (Benutzer, Konten, Postfaecher, Zwecke, Textbausteine) in der Ansicht gedaempft, im Bearbeiten-Modus schwarz — wie die Masken (Z.5073) */
body:has(#es-edit):not(.im-edit) .es-utable tbody td { color: var(--ts-ro-fg); opacity: .60; }
body.im-edit .es-utable tbody td { opacity: 1; }
/* §2155 Fahrtenbuch-PDF: Zeitraum von · bis in einer Zeile */
/* §2156 PDF-Vorschau (dialog.js tsproPdfVorschau): iframe fuellt das Fenster der Stufe voll */
.ts-dlg-box .pdf-vorschau { height: 100%; min-height: 0; display: flex; }
.ts-dlg-box .pdf-vorschau > iframe { flex: 1 1 auto; width: 100%; min-height: 0; border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); background: var(--ts-panel-bg); }
/* §2175 Belege: unbezahlt (Ueberweisung/Lastschrift offen) rot, Filter "nur offene" neben der Suche */
.tspro-ui .be-tbl tr.bhk-offen td { color: var(--ts-red); }
.pos-leg-i.l-offen i { background: var(--ts-red); }
.m-komm .pos-leg-i.ad-l-fehler i { background: var(--ts-red); }      /* §4640 Außendienst-Legende: rote Zeile = Prüf-Fehler (§4628) */
.m-komm .pos-leg-i.ad-l-offen i  { background: var(--ts-akzent); }   /* §4640 „offen“ in Akzent-Blau (§4628) */
/* §4645 homeCENTER Übersicht: drei Kacheln in einer Reihe — Bereiche (wie Inhaltsverzeichnis der Einstellungen) · Einträge (füllt) · Einzelheiten */
.m-komm .komm-main.bc-main.hc-reihe { grid-template-columns: var(--hc-toc-w) minmax(0, 1fr) var(--hc-detail-w); grid-template-rows: minmax(0, 1fr); }   /* §4646 Messung 17:08: .m-komm .komm-main.bc-main (Z7633, 0,3,0, später) setzte EINE Spalte — Kacheln untereinander, Seite 960 px; jetzt 0,4,0 wie §4428 tc-hb */
.m-komm.m-hc .hc-reihe > .fil-sec { min-height: 0; min-width: 0; }
.m-komm.m-hc #hc_tab { table-layout: fixed; width: 100%; }   /* §4646 Messung 17:13: vier gleich breite Spalten → Angaben 26× abgeschnitten */
.m-komm.m-hc #hc_tab .hc-sp-name  { width: var(--hc-sp-name); }
.m-komm.m-hc #hc_tab .hc-sp-lauf  { width: var(--hc-sp-lauf); }
.m-komm.m-hc #hc_tab .hc-sp-datum { width: var(--hc-sp-datum); }
.m-komm.m-hc #hc_tab td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-komm.m-hc .hc-kap { overflow-y: auto; gap: var(--ds-xs); }
.m-komm.m-hc .hc-kap .fil-tile { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: var(--ds-s); text-align: left; flex: 0 0 auto; }
.m-komm.m-hc .hc-kap .ts-gruppe-titel { flex: 0 0 auto; }
.m-komm.m-hc .hc-detail > .fil-sec-body { overflow-y: auto; }
.m-komm.m-hc .hc-detail .fz { align-items: start; }
.m-komm.m-hc .hc-detail .fz > div.v.ro { height: auto; min-height: 0; white-space: normal; overflow-wrap: anywhere; border: 0; background: none; box-shadow: none; padding: 0; }
.m-komm.m-hc #hc_tab tbody tr { cursor: pointer; }
.m-komm.m-hc tr.hc-warn > td, .ts-dlg-box tr.hc-warn > td { color: var(--ts-red); }   /* Rot nur Semantik: Warnung (Proxy-Ziel ohne Container, Zertifikat läuft ab) */
/* §4716 Gerüst „Ein Dienst = ein Modul“ (seiten/dienst.js): markierte Zeile, Chips in der Suchleiste, Schalter im Formular */
.m-komm.m-hc #hc_tab tbody tr.sel > td { background: var(--ds-auswahl); }
.m-komm.m-hc .such-bar > .tc-chips { display: flex; flex-wrap: wrap; gap: var(--ts-kachel-gap); flex: 1 1 auto; min-width: 0; }
.m-komm.m-hc .such-bar .obtn.tag[data-chip] { width: auto; min-width: 0; }
.m-komm.m-hc .such-bar .obtn.tag.tq-warn:not(.on) { background: var(--ts-meld-warn-bg); color: var(--ts-meld-warn-fg); border-color: var(--ts-meld-warn-bd); }
:is(.m-komm.m-hc .hc-detail, .ts-dlg-box) .hd-sw { display: inline-flex; align-items: center; gap: var(--ds-s); height: var(--ds-feld); font-size: var(--ds-fs-text); }
.m-komm.m-hc .hc-detail .fz-ta textarea.v { height: 96px; min-height: 96px; align-items: flex-start; padding: 6px 8px; white-space: pre; overflow: auto; font-family: var(--ts-mono); font-size: var(--ds-fs-hinweis); }
.m-komm.m-hc .hc-detail .fen-block-t { margin-top: var(--ds-s); }
:is(.m-komm.m-hc .hc-detail, .ts-dlg-box) .hd-tabs { display: flex; flex-wrap: wrap; gap: var(--ts-kachel-gap); padding-bottom: var(--ds-s); margin-bottom: var(--ds-s); border-bottom: 1px solid var(--ts-trenn); }   /* §4718 Dialogreiter wie im Original (Details · SSL · Erweitert …) */
:is(.m-komm.m-hc .hc-detail, .ts-dlg-box) .hd-tabs .obtn.tag { width: auto; min-width: 0; }
:is(.m-komm.m-hc .hc-detail, .ts-dlg-box) .hd-tab[hidden] { display: none; }
/* Messbild Jörg 08.11. 00:26 (Rüge: „nicht wie skizziert“): Aktionsknöpfe standen in einem Wrapper → nicht in Knopfbreite der Optionsspalte; Reiter brachen um; Häkchen statt Schalter */
.m-komm.m-hc .opt-col #hd_aktionen { display: contents; }   /* Knöpfe werden direkte Kinder der Optionsspalte → gleiche Breite wie ＋ Hinzufügen/💾 Speichern */
.m-komm.m-hc .opt-col #hd_aktionen > .obtn { order: 500; }   /* Messbild 00:40: .opt-col > * { order: 500 } greift nicht durch display: contents → Knöpfe standen über der Gruppe; jetzt in DOM-Reihenfolge */
.m-komm.m-hc .komm-main.bc-main.hc-reihe.hd-seite { grid-template-columns: var(--hc-toc-w) minmax(0, 1fr) clamp(380px, 27vw, 520px); }   /* Messbild 01:25 bei 1400 px: feste 520 px ließen der Liste nur 300 px → Formularspalte 27 % der Fensterbreite, 380–520 px */
.m-komm.m-hc .hd-seite #hc_tab { min-width: 640px; }   /* darunter rollt die Liste waagerecht, statt dass Spalten auf 0 fallen */   /* Dienstseiten §4718: fünf Dialogreiter (Details · Benutzerdefinierte Pfade · SSL · Erweitert · Kette) in einer Zeile — Messbild 00:40: in 420 px brach „Kette“ um */
.m-komm.m-hc .hc-detail .fz-ta { display: block; }   /* lange Texte (Nginx-Konfiguration, HTML): Beschriftung oben, Feld volle Breite */
.m-komm.m-hc .hc-detail .fz-ta > label { display: block; margin-bottom: 4px; }
.m-komm.m-hc .hc-detail .fz-ta textarea.v { width: 100%; box-sizing: border-box; height: 320px; min-height: 320px; }
/* Messbild 00:58: Reiter Erweitert ließ die halbe Kachel leer — der sichtbare Reiter füllt die Kachel, lange Felder wachsen bis unten (Vorgabe Jörg: kein Leerraum unten) */
.m-komm.m-hc .hc-detail > .fil-sec-body { display: flex; flex-direction: column; }
.m-komm.m-hc .hc-detail #hd_form { flex: 1 1 auto; display: flex; flex-direction: column; min-height: 0; }
.m-komm.m-hc .hc-detail #hd_form > .hd-tab:not([hidden]) { flex: 1 1 auto; display: flex; flex-direction: column; gap: var(--ds-s); min-height: 0; }
/* Messbild 01:21: das Haus-Raster (Z8673, div:has(> .fz) → grid + subgrid) fiel durch die Flex-Spalte weg → Beschriftungen standen über den Feldern. Feldzeile im Reiter ausdrücklich als Raster: Beschriftung 150 px (Skizze hc4) | Feld */
.m-komm.m-hc .hc-detail #hd_form > .hd-tab > .fz:not(.fz-ta) { display: grid; grid-template-columns: var(--hd-label-w, 186px) minmax(0, 1fr); gap: var(--ds-s); align-items: center; margin: 0; }   /* 186: „Gängige Exploits blockieren“ brach bei 170 noch um (Lint 01:33) */
.m-komm.m-hc .hc-detail #hd_form > .hd-tab > .fz > label { white-space: normal; line-height: 1.25; }
.m-komm.m-hc .hc-detail #hd_form > .hd-tab > .fz > .v { width: 100%; min-width: 0; margin: 0; box-sizing: border-box; }
.m-komm.m-hc .hc-detail #hd_form > .hd-tab > .fz > input.v, .m-komm.m-hc .hc-detail #hd_form > .hd-tab > .fz > select.v { height: var(--ds-feld); }
.m-komm.m-hc .hc-detail #hd_form > .hd-tab > .fz-ta, .m-komm.m-hc .hc-detail #hd_form > .hd-tab > .hd-orte-wrap { display: block; width: 100%; }
.m-komm.m-hc .hc-detail #hd_form > .hd-tab > .fen-block-t { margin: var(--ds-s) 0 0; }
.m-komm.m-hc .hd-seite .fil-sec-body > #hd_stat { height: var(--ds-zeile); min-height: var(--ds-zeile); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }   /* Messung 01:24: .bc-main-Statuszeile ist 3 Zeilen hoch (Z7871) → Liste endete 86 px über dem Rand; hier eine Zeile wie im technikCENTER */
.m-komm.m-hc .hc-detail #hd_form > .hd-tab > .fz-ta:last-child { flex: 1 1 auto; display: flex; flex-direction: column; min-height: 0; }
.m-komm.m-hc .hc-detail #hd_form > .hd-tab > .fz-ta:last-child textarea.v { flex: 1 1 auto; height: auto; min-height: 160px; }
.m-komm.m-hc .hc-detail .hd-ort { border: 1px solid var(--ts-panel-bd); border-radius: 6px; padding: var(--ds-s); margin-bottom: var(--ds-s); }   /* Benutzerdefinierte Pfade: je Pfad ein Block wie im Original-Dialog */
.m-komm.m-hc .hc-detail .hd-ort .fz-ta textarea.v { height: 90px; min-height: 90px; }
:is(.m-komm.m-hc .hc-detail, .ts-dlg-box) .hd-tabs .obtn.tag { height: 26px; padding: 0 8px; font-size: var(--ds-fs-hinweis); flex: 0 0 auto; }
:is(.m-komm.m-hc .hc-detail, .ts-dlg-box) .hd-tabs .obtn.tag.on { background: var(--ts-ink); color: var(--ts-sec-fg); border-color: var(--ts-ink); }   /* Messbild 00:55: .on ohne sichtbare Wirkung — Regel war auf .such-bar beschränkt */
.m-komm.m-hc .hc-detail .fz:has(> .hd-sw) { align-items: center; }   /* Messbild 00:55: Beschriftung und Schalter 7 px versetzt */
.m-komm.m-hc #hc_tab .hd-sp-80 { width: 80px; } .m-komm.m-hc #hc_tab .hd-sp-100 { width: 100px; } .m-komm.m-hc #hc_tab .hd-sp-160 { width: 160px; } .m-komm.m-hc #hc_tab .hd-sp-200 { width: 200px; }
.ts-dlg-box .dlg-status.hd-frage { white-space: normal; overflow: visible; text-overflow: clip; line-height: 1.35; }   /* Messbild 01:00: Rückfrage (1197 px) in 688 px abgeschnitten → umbrechen */
.ts-dlg-box .hd-tab .fz > input.v, .ts-dlg-box .hd-tab .fz > select.v { height: var(--ds-feld); box-sizing: border-box; }   /* Messbild 01:00: Felder im Fenster 30 statt 28 px */   /* Dienstseiten: kurze Spalten (Status, Zugriff, HTTP Code) schmal, damit Ziel/SSL in 822 px Platz haben */
:is(.m-komm.m-hc .hc-detail, .ts-dlg-box) .hd-sw input[type="checkbox"] { font-family: inherit; appearance: none; -webkit-appearance: none; width: 30px; height: 16px; margin: 0; border-radius: 8px; border: 0; background: var(--ts-line-hover); position: relative; cursor: pointer; flex: 0 0 auto; }
:is(.m-komm.m-hc .hc-detail, .ts-dlg-box) .hd-sw input[type="checkbox"]::after { content: ''; position: absolute; top: 2px; left: 2px; width: 12px; height: 12px; border-radius: 6px; background: #fff; transition: left .12s; }
:is(.m-komm.m-hc .hc-detail, .ts-dlg-box) .hd-sw input[type="checkbox"]:checked { background: var(--ts-akzent); }
:is(.m-komm.m-hc .hc-detail, .ts-dlg-box) .hd-sw input[type="checkbox"]:checked::after { left: 16px; }
:is(.m-komm.m-hc .hc-detail, .ts-dlg-box) .hd-sw input[type="checkbox"]:disabled { opacity: .5; cursor: default; }
:is(.ts-dlg-box, .m-komm.m-hc .hc-detail) pre.hc-datei { margin: 0; overflow: auto; white-space: pre; font-family: var(--ts-mono); font-size: var(--ds-fs-text); }   /* Höhe begrenzt die Fensterstufe (ts-dlg-breit), Rumpf scrollt */
.m-komm .fil-sec-body > .dlg-status { flex: 0 0 auto; min-height: var(--ds-zeile); margin-top: var(--ds-s); }   /* §4720 comCENTER-Seitenkacheln (kein .bc-main, §2723 griff nicht): Statuszeile mit fester Zeile und Abstand zur Tabelle — vorher 15 px hoch, 0 px Abstand (gemessen) */
.m-komm .komm-ad-liste > .fil-sec-body > .dlg-status { display: flex; align-items: center; gap: var(--ds-m); }   /* §4640 Messung: Statustext links, Legende rechts in EINER Zeile (vorher Umbruch, Statuszeile 29 px) */
.m-komm .komm-ad-liste .pos-leg-i { min-height: var(--ds-checkbox); }   /* §4640 „ⓘ Hinweis“ ohne Farbfeld gleich hoch wie die anderen (14 vs 15 px) */
.bhk-filter { display: flex; gap: var(--ds-m); }   /* align-items steht unten (§3950 flex-start) — doppelter Wert entfernt (§4252 DOPPELREGEL) */
.bhk-filter .bhk-suche { flex: 1 1 auto; min-width: 0; }
.bhk-filter .bhk-offen-f { display: inline-flex; align-items: center; gap: var(--ds-xs); white-space: nowrap; font-weight: 600; }
/* §2176 Einstellungen › Textbausteine: die TABELLE scrollt, nicht die Kachel — feste Hoehe, Knopfzeile direkt darunter sichtbar */
#es-tbpanel #es-tbtblbox { height: 520px; overflow: auto; }
#es-tbpanel #es-tbtblbox thead th { position: sticky; top: 0; z-index: 1; }
/* §2177 Ueberweisung Belege: Zeilen mit fehlender Angabe gedaempft und nicht waehlbar */
.ts-dlg .zl-tab tr.bu-mangel td { color: var(--ts-ink-muted); }
/* §2184: Zahlungsempfaenger-Karten (#es-zweckpanel .zw-*) entfernt — Adressbuch im Zahlungsverkehr (.zf-*) */
/* §2184/§2185 FORMULAR-MASKE IM FENSTER (.zf-*) — New-Design-Gruppen wie die Drucker-Einstellungen bis §3838: Rahmen 10 px Radius, Flaeche beige,
   Kopf mit Symbol, Zeilen Beschriftung | Wert mit Trennlinie. Benutzt vom Zahlungsempfaenger-Adressbuch und der Ueberweisungs-Bestaetigung. Nur Klassen. */
.ts-dlg .zf-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--ds-m); align-items: stretch; }   /* §2190 REGEL: Gruppen einer Reihe gleich hoch */
.ts-dlg .zf-grid.zf-eins { grid-template-columns: 1fr; }
.ts-dlg .zf-grp { border: 1px solid var(--ts-panel-bd); border-radius: 10px; padding: 0 var(--ds-m) var(--ds-s); background: var(--ts-flaeche); }
.ts-dlg .zf-grp-h { font-weight: 600; font-size: var(--ds-fs-kopf); display: flex; align-items: center; gap: var(--ds-s); padding: var(--ds-xs) 0; border-bottom: 1px solid var(--ts-line); margin-bottom: 2px; }
.ts-dlg .zf-grp-r { margin-left: auto; font-variant-numeric: tabular-nums; }
.ts-dlg .zf-ico { font-size: var(--ts-fs-ico); width: 26px; text-align: center; }
.ts-dlg .zf-row { display: grid; grid-template-columns: var(--fb-140) 1fr; gap: var(--ds-s); align-items: center; min-height: var(--dlg-zeile-h); padding: 1px 0; }
.ts-dlg .zf-row + .zf-row { border-top: 1px solid var(--ts-line); }
.ts-dlg .zf-lbl { font-size: var(--ds-fs-text); color: var(--ts-text); }
.ts-dlg .zf-text { font-size: var(--ds-fs-text); color: var(--ts-ink); }
.ts-dlg .zf-betrag { font-weight: 700; }
.ts-dlg .zf-w { border: 1px solid var(--ts-panel-bd); background: var(--ts-panel-bg); border-radius: 6px; padding: 3px 10px; font-size: var(--ds-fs-text); cursor: pointer; }
.ts-dlg .zf-w.on { background: var(--ts-ink); color: var(--ts-panel-bg); border-color: var(--ts-ink); }
/* §3325 (Joerg 21.10. 15:24): Zahllauf-Reiter „Lastschrift“ / „Überweisung“ gleich breit (gemessen vorher 69 und 115 px), zentriert; die Datums-
   beschriftung wechselt je Reiter („Lastschrift am“ / „Ausführungsdatum“) und hat eine feste Breite, damit Feld, Art und Zugang nicht springen. */
.ts-dlg .dlg-leiste .zf-w[role="tab"] { width: var(--ts-fb-xl); box-sizing: border-box; text-align: center; }
.ts-dlg .dlg-leiste #bu_datum_lbl { display: inline-flex; align-items: center; width: var(--fb-140); height: var(--ds-zeile); margin: 0; white-space: nowrap; }   /* „Ausführungsdatum“ gemessen 124 px > 120; §3326 gleiche Zeilenhoehe wie das Datumsfeld, damit der Text auf Reiterhoehe steht (gemessen vorher y 237 vs 243) */
.ts-dlg .zf-hinweis { border: 1px solid var(--ts-panel-bd); border-left: 3px solid var(--ts-warn); border-radius: 6px; padding: var(--ds-s) var(--ds-m); font-size: var(--ds-fs-text); background: var(--ts-panel-bg); }
/* §2187 Ueberweisungs-Statusfenster: Rueckmeldungen der Bank einzeilig, Festbreitenschrift */
/* §2189 Ueberweisung: Bankfenster ueber den Dialogen (Ebenenleiter: ovl2 10600 < ovl3 10605 < bku 10608 < tsst 10610); Bestaetigung kompakt;
   Dialog mit zwei festen Haelften (Offen / Beauftragt) statt dynamischer Zusatztabelle */
.ts-dlg.bka.bku { z-index: 10608; }
.ts-dlg .zf-kompakt { gap: var(--ds-s); }
.ts-dlg .zf-kompakt .zf-row { min-height: 26px; padding: 0; }
.ts-dlg .zf-kompakt .zf-grp-h { padding: 2px 0; }
.ts-dlg .zf-kompakt .zf-grp { padding-bottom: 4px; }
.ts-dlg .zf-kompakt .zf-hinweis { padding: 6px var(--ds-m); }
.ts-dlg .bu-zwei { display: grid; grid-template-rows: 1fr 1fr; gap: var(--ds-m); flex: 1 1 auto; min-height: 0; }   /* §2190 (Joerg: volle Hoehe nutzen): fuellt den Rest des Fensters statt fester 560 px */
.ts-dlg .bu-teil { display: flex; flex-direction: column; min-height: 0; }
.ts-dlg .bu-teil-h { font-weight: 600; font-size: var(--ds-fs-text); padding: 0 0 4px; }
.ts-dlg .bu-teil .tbl-box { flex: 1 1 auto; min-height: 0; }
/* §2193 gemessen (Stufe breit): Inhalt endet 56 px ueber der Fusszeile — die untere, volle Gruppe fuellt den Rest (Regel: volle Fensterhoehe nutzen) */
.ts-dlg .b > .zf-grid:not(.zf-eins) { grid-template-rows: auto 1fr; min-height: 100%; box-sizing: border-box; }
/* §2196 comCENTER Posteingang live: drei Kacheln nebeneinander, volle Hoehe — Ordner | Mailliste | Lesebereich */
.m-komm .komm-main.pe-main { grid-template-columns: 290px 400px minmax(0, 1fr); flex: 1 1 auto; height: 100%; }   /* §2199 gemessen: Postfachadressen in 250 px gekuerzt */
.m-komm .pe-main .fil-sec-body { display: flex; flex-direction: column; gap: var(--ds-s); overflow: hidden; }
.m-komm .pe-baum { flex: 1 1 auto; overflow: auto; }
.m-komm .pe-o { display: flex; justify-content: space-between; gap: var(--ds-s); padding: 5px 8px; border-radius: 6px; cursor: pointer; font-size: 13px; }
.m-komm .pe-o-unter { padding-left: 22px; }
.m-komm .pe-o-e2 { padding-left: 38px; }   /* §2274 Ebenen unter dem Posteingang (z. B. Eset / Lizenzen) */
.m-komm .pe-o-e3 { padding-left: 54px; }
.m-komm .pe-o-e4 { padding-left: 70px; }
.m-komm .pe-o:hover { background: var(--ts-flaeche); }
.m-komm .pe-o.on { background: var(--ts-ink); color: var(--ts-panel-bg); }
.m-komm .pe-o-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-komm .pe-o-zahl { font-weight: 700; }
.m-komm .pe-o-zahl.pe-o-ges { font-weight: 400; opacity: .6; }   /* §2279 Archiv: Gesamtzahl, nicht ungelesen */
.m-komm .pe-mails { flex: 1 1 auto; overflow: auto; border-top: 1px solid var(--ts-panel-bd); }
.m-komm .pe-m { padding: 6px 8px; border-bottom: 1px solid var(--ts-line); cursor: pointer; }
.m-komm .pe-m:hover { background: var(--ts-flaeche); }
.m-komm .pe-m.on { background: var(--ts-flaeche); box-shadow: inset 3px 0 0 var(--ts-ink); }
.m-komm .pe-m.neu .pe-m-von, .m-komm .pe-m.neu .pe-m-betreff { font-weight: 700; }
.m-komm .pe-m-z1 { display: flex; justify-content: space-between; gap: var(--ds-s); font-size: 13px; }
.m-komm .pe-m-von { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-komm .pe-m-zeit { flex: 0 0 auto; color: var(--ts-gedaempft); font-size: 12px; }
.m-komm .pe-m-betreff { font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-komm .pe-m-vorschau { font-size: 12px; color: var(--ts-gedaempft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-komm .pe-mehr { margin: var(--ds-s); }
.m-komm .pe-fehler { color: var(--ts-red); font-size: 13px; padding: 6px; }
/* §3158 ZENTRALE MAILANSICHT .ts-mail (Joerg 16.10.: eine Mailanzeige im ganzen System, Vorlage Lexikon-Fenster): Fenster tsproMail() (WAWI/mailfenster.js) UND Lesebereich des comCENTER-Posteingangs.
   Global (nicht unter .m-komm), weil das Fenster am body haengt. Kopf Von/An/Cc/Datum/Ordner, Anhaenge als Kacheln, Mailtext im iframe (immer hell, §3003). */
:root { --ts-mail-kopf-l: 60px; --ts-mail-z: 99999; }
.ts-dlg.ovl2.ts-mail-ovl { z-index: var(--ts-mail-z); }
body:has(.ts-mail-ovl.on) .ecopdf-ovl { z-index: calc(var(--ts-mail-z) + 1); }   /* Anhang aus dem Mailfenster: Dokumentbetrachter davor */   /* Mailfenster vor dem E-Mail-Ausgang der Kopfleiste (z 99998); Dokumentbetrachter fuer Anhaenge liegt darueber (100000, §2011) */
.ts-mail { display: flex; flex-direction: column; gap: var(--ds-s); height: 100%; min-height: 0; }
.ts-mail-oben { font-size: 13px; }
.ts-mail-kopf { display: flex; flex-direction: column; gap: 2px; font-size: 13px; }
.ts-mail-k { display: grid; grid-template-columns: var(--ts-mail-kopf-l) 1fr; gap: var(--ds-s); }
.ts-mail-k-l { color: var(--ts-gedaempft); }
.ts-mail-anh { display: flex; flex-wrap: wrap; gap: 6px; }
.ts-mail-a { border: 1px solid var(--ts-panel-bd); border-radius: 6px; padding: 3px 8px; font-size: 12px; color: var(--ts-ink); text-decoration: none; background: var(--ts-flaeche); }
.ts-mail-a-g { color: var(--ts-gedaempft); }
.ts-mail-text { flex: 1 1 auto; width: 100%; border: 1px solid var(--ts-panel-bd); border-radius: 6px; background: var(--ts-panel-bg); min-height: 0; color-scheme: light; }
.ts-mail-fehler { color: var(--ts-red); font-size: 13px; padding: 6px; }
.m-komm .pe-leer { color: var(--ts-gedaempft); padding: 10px; font-size: 13px; }
/* §3155/§3157 Lexikon (comCENTER › Auswertungen › Lexikon): Klick waehlt, Doppelklick oeffnet die Mail im zentralen Mailfenster tsproMail (§3158) */
.m-komm .lx-z { cursor: pointer; }
.m-komm .lx-z:hover > td, .m-komm .lx-z.sel > td { background: var(--ds-auswahl); }
/* §2197 Posteingang: Postfaecher untereinander wie im Outlook-Explorer */
.m-komm .pe-pf + .pe-pf { margin-top: var(--ds-m); }
.m-komm .pe-pf-h { font-weight: 700; font-size: 13px; padding: 4px 8px; border-bottom: 1px solid var(--ts-panel-bd); margin-bottom: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* §2198 Posteingang: Suchfeld feste Hoehe (gemessen: wuchs auf 230 px), Plus/Minus wie Outlook */
.m-komm .pe-main .pe-such { flex: 0 0 auto; height: 28px; width: 100%; box-sizing: border-box; }   /* §2199 gemessen: nur halbe Breite */
.m-komm .pe-pf-h { display: flex; align-items: center; gap: 6px; cursor: pointer; }
.m-komm .pe-pm { display: inline-block; width: 14px; text-align: center; font-weight: 700; color: var(--ts-gedaempft); flex: 0 0 14px; }
.m-komm .pe-pm-leer { display: inline-block; width: 14px; flex: 0 0 14px; }
.m-komm .pe-o { align-items: center; }
.m-komm .pe-o .pe-o-name { flex: 1 1 auto; }
/* §2200 comCENTER Kalender live: Kalenderliste | Wochenraster (Mo–So, 07–20 Uhr); Termine absolut positioniert ueber --oben/--hoch (Prozent der Tageshoehe) */
.m-komm .komm-main.kal-main { grid-template-columns: 260px minmax(0, 1fr); flex: 1 1 auto; height: 100%; }
.m-komm .kal-main .fil-sec-body { display: flex; flex-direction: column; overflow: hidden; }
.m-komm .kal-k { display: flex; align-items: center; gap: 8px; padding: 5px 4px; font-size: 13px; cursor: pointer; }
.m-komm .kal-k-n { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-komm .kal-farbe { width: 12px; height: 12px; border-radius: 3px; flex: 0 0 12px; background: var(--kal-farbe); }
.m-komm .kal-f0 { --kal-farbe: #2f6fb3; } .m-komm .kal-f1 { --kal-farbe: #2e8b57; } .m-komm .kal-f2 { --kal-farbe: #b5651d; }
.m-komm .kal-f3 { --kal-farbe: #7a4fb0; } .m-komm .kal-f4 { --kal-farbe: #b03a48; } .m-komm .kal-f5 { --kal-farbe: #4a6670; }
.m-komm .kal-raster { flex: 1 1 auto; display: flex; flex-direction: column; min-height: 0; }
.m-komm .kal-kopf { display: grid; grid-template-columns: 52px repeat(7, minmax(0, 1fr)); border-bottom: 1px solid var(--ts-panel-bd); }
.m-komm .kal-tagkopf { padding: 4px 6px; font-weight: 600; font-size: 13px; text-align: center; }
.m-komm .kal-tagkopf.heute { color: var(--ts-red); }
.m-komm .kal-koerper { flex: 1 1 auto; display: grid; grid-template-columns: 52px repeat(7, minmax(0, 1fr)); min-height: 0; }
.m-komm .kal-zeiten, .m-komm .kal-spalte { display: grid; grid-template-rows: repeat(13, minmax(0, 1fr)); position: relative; min-height: 0; }
.m-komm .kal-std { font-size: 11px; color: var(--ts-gedaempft); text-align: right; padding: 1px 6px 0 0; border-top: 1px solid var(--ts-line); }
.m-komm .kal-spalte { border-left: 1px solid var(--ts-line); }
.m-komm .kal-spalte.heute { background: var(--ts-flaeche); }
.m-komm .kal-zelle { border-top: 1px solid var(--ts-line); }
.m-komm .kal-zelle:hover { background: rgba(0,0,0,.03); }
.m-komm .kal-t { position: absolute; left: calc(var(--links) + 2px); width: calc(var(--breite) - 4px); top: var(--oben); height: var(--hoch); min-height: 18px; overflow: hidden; box-sizing: border-box;
  border-left: 3px solid var(--kal-farbe); background: color-mix(in srgb, var(--kal-farbe) 12%, var(--ts-panel-bg)); border-radius: 4px; padding: 2px 5px; font-size: 12px; cursor: pointer;
  box-shadow: 0 1px 2px rgba(0,0,0,.12); display: flex; flex-direction: column; }   /* §2201: Spuren nebeneinander (--links/--breite), Flaeche leicht in Kalenderfarbe (deckend) */
.m-komm .kal-t.on { outline: 2px solid var(--ts-ink); }
.m-komm .kal-t.erledigt { opacity: .7; }
.m-komm .kal-t-z { color: var(--ts-gedaempft); font-size: 11px; }
.m-komm .kal-t-b { font-weight: 600; overflow: hidden; text-overflow: ellipsis; }
.m-komm .kal-t-k { font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* §2203 gemeinsamer Termin-Editor: bisheriges Aussendienst-Markup (.ad-ed); nur der Suchknopf neben dem Kunden */
.ts-dlg-box .kt-ed .kt-such { width: auto; height: var(--ts-btn-h); padding: 0 10px; }   /* §2755 Termin-Editor nach K-423 (Rahmen kt-ed statt ad-ed) */
.ts-dlg-box .kt-ed .fen-form.fz-gitter.fuellt > .fz:first-child { align-items: stretch; align-self: stretch; }   /* §2755 Taetigkeit fuellt die wachsende Zeile (Muster §2748) */
.ts-dlg-box .kt-ed .fen-form.fz-gitter.fuellt > .fz:first-child > label { align-self: start; padding-top: 6px; }
.ts-dlg-box .kt-ed .fen-form.fz-gitter > .fz > textarea.v.fuellt { height: 100%; min-height: var(--fz-text-3z); grid-column: 2; }
.ts-dlg-box .kt-ed .fen-form.fz-gitter { grid-template-columns: var(--fb-90) minmax(0, 1fr) auto; }   /* §2756 gemessen Lint flucht 17 px (Kalender): jede Kachel mass ihre Beschriftung selbst (Kunde 42, Kalender 61, Terminart/Rueckfahrt ~65 — daher 90 statt 64) — eine Spalte fuer alle Kacheln, Muster as-tresor §2733 */
/* §2204 Einordnung aus dem Mail-Index als kleines Etikett vor dem Betreff */
.m-komm .pe-art { display: inline-block; font-size: 10px; font-weight: 700; padding: 0 5px; margin-right: 5px; border-radius: 3px; border: 1px solid var(--ts-panel-bd); vertical-align: 1px; }
.m-komm .pe-art-rechnung { color: var(--ts-rub-rechnung-fg); border-color: var(--ts-rub-rechnung-bd); background: var(--ts-rub-rechnung-bg); }
.m-komm .pe-art-auftrag { color: var(--ts-rub-auftrag-fg); border-color: var(--ts-rub-auftrag-bd); background: var(--ts-rub-auftrag-bg); }
.m-komm .pe-art-versand { color: var(--ts-rub-versand-fg); border-color: var(--ts-rub-versand-bd); background: var(--ts-rub-versand-bg); }
.m-komm .pe-art-lizenz { color: var(--ts-rub-lizenz-fg); border-color: var(--ts-rub-lizenz-bd); background: var(--ts-rub-lizenz-bg); }   /* §2271 Lizenz-Mails */
/* §2210 comCENTER Kontakte: Liste | Angaben, volle Hoehe */
.m-komm .komm-main.ko-main { grid-template-columns: minmax(0, 1fr) 420px; flex: 1 1 auto; height: 100%; }
.m-komm .ko-main .fil-sec-body { display: flex; flex-direction: column; gap: var(--ds-s); overflow: hidden; }
.m-komm .ko-main .ko-such { flex: 0 0 auto; height: 28px; width: 100%; box-sizing: border-box; }
.m-komm .ko-main .tbl-box { flex: 1 1 auto; min-height: 0; }
.m-komm .ko-felder { display: flex; flex-direction: column; overflow: auto; }
.m-komm .ko-z { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: var(--ds-s); padding: 6px 0; border-bottom: 1px solid var(--ts-line); font-size: 13px; }
.m-komm .ko-l { color: var(--ts-gedaempft); }
.m-komm .ko-w { word-break: break-word; }
.m-komm .ko-w a { color: var(--ts-ink); }
/* §2525 Kontakte abgleichen (comCENTER): eine Tabelle ueber die ganze Breite, Filterzeile wie die Anschreiben-Maske, Kandidat farbig nach Sicherheit */
.m-komm .komm-main.ka-main { display: flex; flex: 1 1 auto; height: 100%; }
.m-komm .ka-liste { flex: 1 1 auto; min-width: 0; }
.m-komm .ka-main .fil-sec-body { display: flex; flex-direction: column; gap: var(--ds-s); overflow: hidden; }
.m-komm .ka-main .tbl-box { flex: 1 1 auto; min-height: 0; }
.m-komm #ka_tab { table-layout: fixed; width: 100%; }
.m-komm .ka-c-name { width: 240px; } .m-komm .ka-c-firma { width: 260px; } .m-komm .ka-c-kand { width: 300px; } .m-komm .ka-c-grund { width: 220px; }
.m-komm #ka_tab td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: top; }
.m-komm #ka_tab td:last-child { white-space: normal; }
.m-komm #ka_tab tbody tr.sel > td { background: var(--ds-auswahl); }
.m-komm #ka_tab .ka-sicher { color: var(--ts-akzent); }
.m-komm #ka_tab .ka-unsicher { color: var(--ts-pos-grau); }
.m-komm #ka_tab .ka-zu { color: var(--ts-ok); font-weight: 600; }
/* §2532 serviceCENTER › Passwortmanager (Bitwarden-Metadaten): Tabelle ueber die ganze Breite, Dialog-Formular wie .as-anlegen */
.m-passwortmanager .pm-seite { display: flex; flex-direction: column; gap: var(--ds-s); overflow: hidden; flex: 1 1 auto; min-height: 0; }
.m-passwortmanager .pm-seite .tbl-box { flex: 1 1 auto; min-height: 0; overflow: auto; }
.m-passwortmanager .pm-seite .such-bar { flex: 0 0 auto; margin-bottom: 0; } .m-passwortmanager .pm-seite .such-bar select.sk { width: var(--fb-320); }   /* §3484 Suchleiste wie Kundenlizenzen: Ordner fest, Suche fuellt */
.m-passwortmanager .fil-sec-head #pm_status.neg { color: var(--ts-red); }   /* §2604 Joerg: Tabelle liess sich nicht scrollen — Kasten schnitt ab (overflow hidden) */
.m-passwortmanager #pm_tab { table-layout: fixed; width: 100%; }
.m-passwortmanager .pm-c-name { width: 300px; } .m-passwortmanager .pm-c-benutzer { width: 240px; } .m-passwortmanager .pm-c-ordner { width: 220px; } .m-passwortmanager .pm-c-zu { width: 220px; } /* §3480 Zuordnung */ .m-passwortmanager .pm-c-dat { width: 130px; } .m-passwortmanager .pm-c-st { width: 130px; }
.m-passwortmanager #pm_tab td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-passwortmanager #pm_tab tbody tr.sel > td { background: var(--ds-auswahl); }
.ts-dlg-box .pm-form .pm-pw { display: grid; grid-template-columns: minmax(0, 1fr) var(--ts-btn-h-gross) var(--ts-btn-h-gross); gap: 4px; align-items: center; }   /* §2533 Passwortfeld + Auge + Generator/Kopieren */

.ts-dlg-box .pm-form .fen-form > .pm-notiz, .ts-dlg-box .pm-form .fen-form > .pm-urls { white-space: pre-wrap; text-overflow: clip; height: auto; min-height: var(--ds-feld); max-height: var(--pm-feld-max); overflow: auto; align-items: flex-start; padding-top: var(--fz-text-pad); padding-bottom: var(--fz-text-pad); }   /* §2726 mehrzeilige Lesefelder */
/* §2538 serviceCENTER › Lesezeichen (Firefox) — Tabelle wie Passwortmanager */
.m-lesezeichen .lz-seite { display: flex; flex-direction: column; gap: var(--ds-s); overflow: hidden; flex: 1 1 auto; min-height: 0; }
.m-lesezeichen .lz-seite .tbl-box { flex: 1 1 auto; min-height: 0; overflow: auto; }   /* §2604 Joerg: Tabelle liess sich nicht scrollen — Kasten schnitt ab (overflow hidden) */
.m-lesezeichen #lz_tab { table-layout: fixed; width: 100%; }
.m-lesezeichen .lz-c-titel { width: 380px; } .m-lesezeichen .lz-c-ordner { width: 300px; } .m-lesezeichen .lz-c-dat { width: 110px; } .m-lesezeichen .lz-c-st { width: 40px; }
.m-lesezeichen #lz_tab td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-lesezeichen #lz_tab tbody tr.sel > td { background: var(--ds-auswahl); }
/* §2211 Kontakte: Gruppenkoepfe in den Angaben (Maske seit §2757 nach K-423: Kacheln, Regeln ko-name/ko-adr/ko-tel/ko-ed2 entfallen) */
.ts-dlg-box .ko-ed .fen-form.ko-tel4 { grid-template-columns: repeat(4, max-content minmax(0, 1fr)); }   /* §2758 Rufnummern: 4 Paare Beschriftung|Feld je Zeile, eine Flucht je Paar-Spalte */
.m-komm .ko-g { font-weight: 700; font-size: 12px; text-transform: uppercase; letter-spacing: .03em; color: var(--ts-gedaempft); padding: 10px 0 2px; border-bottom: 1px solid var(--ts-panel-bd); }
/* §2219 Kunde anlegen (Aussendienst): Schalterzeile */
/* §2244 Mail-Editor im Posteingang: Textfeld fuellt die Maske */
/* §2244 Mail-Editor: Von ist Information, nicht gesperrt — normale Schriftfarbe statt grau */
.ts-dlg-box .pe-ed .v.ro { color: var(--ts-ink); }   /* §2762 Rahmen pe-ed (fen), Von ist Information */
.ts-dlg-box .pe-ed .fen-form.fz-gitter { grid-template-columns: var(--fb-90) minmax(0, 1fr) auto; }   /* §2762 eine Beschriftungsspalte fuer Kopf und Anhaenge (Muster kt-ed §2756) */
/* §2251 Lizenz-Schluessel an der Auftragsposition */
/* §2253 NACHWEIS-SYMBOLE (Designklassifizierung, Joerg): Spalte "Nachweis" (sp-flag-wort), Symbol je Art nur hier — neue Art = neue Klasse */
.nw { cursor: pointer; font-size: 12px; }
.nw + .nw { margin-left: 2px; }
.nw-lizenz::before { content: "\1F511"; }
.nw-garantie::before { content: "\1F6E1\FE0F"; }
.nw-sonstig::before { content: "\1F4C4"; }

/* §2281 comCENTER Regeln: Abgleich-Zeile ueber der Tabelle */
.m-komm .rg-abgleich { margin: 0 0 8px; }
.m-komm tr.rg-loeschen td { color: var(--ts-gedaempft); opacity: .55; }   /* §4438 kein Durchstreichen */   /* §2283 vorgemerkt zum Loeschen */
.m-komm tr.rg-bestaetigen td { font-weight: 600; }   /* §2283 vorgemerkt zum Bestaetigen */
.m-komm tr.rg-haupt td { font-weight: 600; }   /* §2292 Hauptordner-Zeile ueber ihren Gruppen */

/* §2301 ecoDMS Aufraeumregeln */
.m-ecodms .ar-hinweis { margin: 0 0 8px; }

/* §2310 Bereiche service-/lizenz-/garantie-/productCENTER: eine Kachel fuellt die Flaeche, Tabelle scrollt in sich (wie comCENTER .ko-main) */
.m-komm .komm-main.bc-main { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); flex: 1 1 auto; height: 100%; }

.m-komm .bc-main .tbl-box { flex: 1 1 auto; min-height: 0; }

/* §2310 gemessen (Bild 1600 px): gleich breite Spalten schnitten Kunde/Produkt/Code ab, Vorgangsregeln-Texte liefen bis 3600 px ueber — Spaltenbreiten je Inhalt, Regeltexte umbrechen */
.m-vorgang .vr-tab { table-layout: fixed; width: 100%; }   /* §2716 Vorgangsregeln als Liste (war .m-komm — Seite seit §2308 im serviceCENTER, Regeln griffen nicht mehr) */
.m-vorgang .vr-tab td { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.m-vorgang .vr-tab tbody tr[data-s] { cursor: pointer; }
.m-vorgang .vr-tab tbody tr.sel > td { background: var(--ds-auswahl); }
.m-vorgang .vr-tab .vr-c1 { width: 26%; } .m-vorgang .vr-tab .vr-c2 { width: 40%; } .m-vorgang .vr-tab .vr-c3 { width: 28%; } .m-vorgang .vr-tab .vr-c5 { width: 6%; }
.m-vorgang .vr-tab .vr-akt { text-align: center; }
.m-komm .kl-tab .w-kunde, .m-komm .ga-tab .w-kunde { width: 18%; }  .m-komm .kl-tab .w-ort { width: 10%; }
.m-komm .kl-tab .w-hst, .m-komm .ga-tab .w-hst { width: 6%; } .m-komm .kl-tab .w-zahl, .m-komm .ga-tab .w-zahl { width: 6%; } .m-komm .kl-tab .w-dat, .m-komm .ga-tab .w-dat { width: 8%; }
.m-komm .kl-tab .w-beleg, .m-komm .ga-tab .w-beleg { width: 9%; }  


   .m-komm .ga-tab .w-st { width: 7%; }
/* §2310 zweite Messung Garantien: PIN/Code/Hersteller-Nr./Status/verarbeitet noch gekappt — Breiten neu verteilt (Summe 100 %) */
.m-komm .ga-tab .w-dat { width: 7%; } .m-komm .ga-tab .w-hst { width: 5%; } .m-komm .ga-tab .w-beschr { width: 13%; }


.m-komm .ga-tab .w-code { width: 15%; } .m-komm .ga-tab .w-pin { width: 6%; }

 .m-komm .ga-tab .w-st { width: 7%; } .m-komm .ga-tab .w-kunde { width: 13%; } .m-komm .ga-tab .w-beleg { width: 7%; }

/* §2314b vorgemerkte Umsaetze in der Umsatztabelle: hell hinterlegt, kursiv, gedaempfte Schrift, Streifen in Warn-Ton — erkennbar "noch nicht gebucht" */
.bk-modern .bk-tab tbody tr.bk-vorgemerkt td { background: var(--ts-flaeche); color: var(--ts-ro-fg); font-style: italic; }
.bk-modern .bk-tab tbody tr.bk-vorgemerkt td:first-child { box-shadow: inset 3px 0 0 var(--ts-meld-warn-fg); }
/* §2318 fruehere Laufzeit einer Lizenz (Verlauf) */
.m-komm .kl-tab tbody tr.kl-verlauf td { color: var(--ts-ro-fg); font-style: italic; }
/* §2327 Kundenlizenzen: Ablauf <= 30 Tage (und abgelaufen) rot, <= 90 Tage gelb — Zeile eingefaerbt, auch in der gedaempften Ansicht erkennbar */
.m-komm .kl-tab tbody tr.kl-rot td { background: var(--ts-meld-err-bg); color: var(--ts-meld-err-fg); opacity: 1; }
.m-komm .kl-tab tbody tr.kl-gelb td { background: var(--ts-meld-warn-bg); color: var(--ts-meld-warn-fg); opacity: 1; }
/* §2331 Kundenlizenzen: Spalte Benutzername (EAV) statt Hersteller — breiter */

/* §2332 Kundenlizenzen ohne Ort: Breiten neu (Summe 100 %), Spruenge in die WaWi und ecoDMS als Links */
 
.m-komm .kl-tab a.kl-sprung, .m-komm .kl-tab a.kl-dok { color: inherit; text-decoration: none; }   /* §4230 stiller Sprung: Hover/Strg zentral (STILLER SPRUNG) */
/* §2341 Bundle-Bestandteile als eingerueckte Unterzeilen */
.m-komm .kl-tab tbody tr.kl-teil td { color: var(--ts-ro-fg); font-size: 0.95em; border-top: 0; }
/* §2342 Kundenlizenzen mit Lizenz-ID und Lizenzschluessel: Breiten neu (Summe 100 %) */
.m-komm .kl-tab .w-kunde { width: 18%; } .m-komm .kl-tab .w-hst { width: 10%; } .m-komm .kl-tab .w-pid { width: 7%; } .m-komm .kl-tab .w-key { width: 15%; } .m-komm .kl-tab .w-prod { width: 17%; }
.m-komm .kl-tab .w-zahl { width: 4%; } .m-komm .kl-tab .w-dat { width: 7%; } .m-komm .kl-tab .w-beleg { width: 10%; } .m-komm .kl-tab .w-firma { width: 4%; } .m-komm .kl-tab .w-doc { width: 4%; }
.m-komm .kl-tab td.kl-key { font-family: var(--ts-mono, monospace); font-size: 0.92em; }
/* §2345 seit > 2 Jahren abgelaufen = nicht mehr verlaengerbar (ESET KB570): grau statt rot */
.m-komm .kl-tab tbody tr.kl-alt td { color: var(--ts-ro-fg); opacity: .75; }   /* §4438 abgelaufene Lizenz: gedämpft statt durchgestrichen */
/* §2347 (Ruege Joerg, Regeln §1950/§2059: Kacheln wachsen nie mit dem Inhalt): untere Kachel bei bc-zwei FESTE Hoehe 210 px, Inhalt scrollt darin */
.m-komm .komm-main.bc-main.bc-zwei { grid-template-rows: minmax(0, 1fr) 210px; }
.m-komm .komm-main.bc-main.bc-zwei > .fil-sec:last-child > .fil-sec-body:not(:has(> .fen)) { overflow-y: auto; min-height: 0; display: block; }   /* §2881 Kachel mit Fensterinhalt (.fen) regelt sich selbst */
/* §3033 Vorgaenge: Suchfeld UEBER der Tabelle (Joerg 16:52) — Kachelrumpf als Spalte, Filterzeile fest, Tabelle fuellt den Rest (wie .pm-seite §7287) */
:is(.m-vorgang, .m-sendung) .vg-seite { display: flex; flex-direction: column; gap: var(--ds-s); overflow: hidden; flex: 1 1 auto; min-height: 0; }   /* §3203 Sendungen wie Offene Vorgaenge */
:is(.m-vorgang, .m-sendung) .vg-seite .tbl-box { flex: 1 1 auto; min-height: 0; overflow: auto; }
:is(.m-vorgang, .m-sendung) .vg-filter { display: flex; align-items: center; gap: var(--ds-m); flex: 0 0 auto; }
:is(.m-vorgang, .m-sendung) .vg-filter .fz { margin-bottom: 0; grid-template-columns: auto var(--fb-320); }
/* §2354 (Joerg: Modell im Artikel, Lieferadresse/Bedingungen im Bestellwesen brachen um) GLOBAL: Anzeigefelder (div.v in .fz) sind EINZEILIG —
   zu langer Text wird mit … gekuerzt, der volle Text steht im Mouseover (dialog.js setzt title, wenn gekuerzt). Ausnahmen mit Absicht mehrzeilig
   bleiben ueber spezifischere Regeln (z. B. .ad-ab-text, .ad-au-pos im Aussendienst). */
.tspro-ui .fz > div.v, .ts-dlg .fz > div.v, .art-wrap .fz > div.v { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.tspro-ui .be-liefbed .be-liefbed-txt { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 26px; }
/* §2356 gemessen 05.10. (Bestellung 1398): Lieferadresse lief unter die Lupe (Feld-Padding .v.ro ueberschrieb padding-right), Bedingungen ohne … (Flex-Element) */
.tspro-ui .fz > div.v.hpick-feld, .tspro-ui .fz > div.v.ro.hpick-feld { padding-right: calc(var(--ts-feldsymbol) + 2 * var(--ds-s)); }
.tspro-ui .be-liefbed .be-liefbed-txt { display: block; }
/* §2357 gemessen nach Sync: Lieferadresse lief trotz padding-right unter die Lupe — das Feld ist ein Flex-Container; Flex-Inhalt wird erst am Padding-Rand
   abgeschnitten und bekommt kein …. Einzeilige Anzeigefelder mit Symbol daher als Block mit Zeilenhoehe = Feldhoehe (28 px gemessen, 1 px Rahmen oben/unten). */
.tspro-ui .fz > div.v.hpick-feld, .tspro-ui .fz > div.v.ro.hpick-feld, .tspro-ui .fz > .kunde-info > div.v.hpick-feld, :is(.tspro-ui, .ts-dlg-box) .fen-form > div.v.hpick-feld { display: block; line-height: 26px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; padding-right: calc(var(--ts-feldsymbol) + 2 * var(--ds-s)); }   /* §4110 (Jörg 01.11. 05:36, Neu-Assistent Schritt 2: Artikelname 3 Zeilen aus dem Feld, danach unter der Lupe): Fenstergerüst .fen-form wie .fz — einzeilig mit „…“, Text endet vor der Lupe (§2356) */
/* §3367 GLOBAL (Joerg 22.10. 19:34 „hast du das global umgesetzt? Die Fehler haben wir in allen Masken, nicht nur im WaWi“): JEDES einzeilige Lesefeld div.v.ro — ueberall (WaWi, Dialoge, Bereiche)
   — ist ein Block mit Zeilenhoehe = Feldhoehe und endet mit „…“ VOR dem rechten Innenabstand (bisher nur hpick-feld §2357 und je Modul eigene nowrap-Regeln: ki-felder, ad-ed, fb-rechts, asVorOvl, gr-tk).
   .v ist flex (Z. 2475): Flex-Inhalt wird erst am Rand abgeschnitten und bekommt kein „…“. Ausnahmen behalten ihre eigene Regel: mehrzeilige Lesefelder .fuellt (§2727), .ad-ab-text, .ad-au-pos, Auswahlfelder .hpick (eigene Flex-Regel Z. 5016 gewinnt). */
:is(.tspro-ui, .ts-dlg, .ts-dlg-box, .ts-ovl, .art-wrap, .be-ov, .bib-wrap) div.v.ro:not(.fuellt):not(.ad-ab-text):not(.ad-au-pos):not(.hpick) { display: block; line-height: calc(var(--ds-feld) - 2px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
/* §2360 Ruecksprung-Leiste aus dem serviceCENTER (fest oben rechts, verdeckt keine Kacheln) */
.vg-rueck-bar { position: fixed; top: 6px; right: 12px; z-index: 9000; display: flex; align-items: center; gap: 8px; padding: 4px 6px 4px 12px; background: var(--ts-panel-bg); border: 1px solid var(--ts-akzent); border-radius: 8px; box-shadow: 0 4px 14px rgba(0,0,0,.18); font-size: 12px; }
/* §3128 (Joerg 21:39 „serviceCENTER-Knopf immer ganz unten in der Optionskachel — mal letzter, mal vorletzter“): in jeder Optionskachel (flex column) zuletzt und an den unteren Rand */
.opt-col > .vg-rueck-knopf { order: 999; margin-top: auto; }
/* §2426/§2427 garantieCENTER: Code/PIN getrennt, ecoDMS-Spalte; .ga-1hst = Hersteller-Seite ohne Hersteller-Spalte (je Summe 100 %) */
.m-komm .ga-kd .w-kunde { width: 15%; } .m-komm .ga-kd .w-hst { width: 5%; } .m-komm .ga-kd .w-ger { width: 16%; } .m-komm .ga-kd .w-sn { width: 8%; } .m-komm .ga-kd .w-gar { width: 13%; }
.m-komm .ga-kd .w-dat { width: 6%; } .m-komm .ga-kd .w-dat2 { width: 6%; } .m-komm .ga-kd .w-st { width: 7%; } .m-komm .ga-kd .w-beleg { width: 9%; } .m-komm .ga-kd .w-code { width: 8%; } .m-komm .ga-kd .w-pin { width: 3%; } .m-komm .ga-kd .w-doc { width: 4%; }
.m-komm .ga-kd.ga-1hst .w-kunde { width: 16%; } .m-komm .ga-kd.ga-1hst .w-ger { width: 18%; } .m-komm .ga-kd.ga-1hst .w-gar { width: 14%; } .m-komm .ga-kd.ga-1hst .w-pin { width: 4%; }
/* §3368 HIER (ausserhalb @layer zustaende Z. 4770–5287!) — gemessen 19:50: die Breiten standen in der Schicht und verloren gegen jede ungeschichtete .ga-tab-Regel, egal welche Spezifitaet */
/* §3366 Servicefaelle gemessen (pruefe bild ga_faelle 19:27): Liste — Geraet lief ueber, Status (Stufen + Text) auf 7 % abgeschnitten; Mail-Fenster — <col class=sp-check> ohne Regel, alle Spalten gleich breit.
   Spaltenbreiten der Fall-Liste (eigene Tabelle fa-tab) und des Mail-Fensters (fa-mails, Breiten an den Kopfzellen wie im Haus, table-layout fixed) */
.m-komm .ga-tab.fa-tab { table-layout: fixed; width: 100%; }   /* gemessen 19:42: Breiten griffen nicht — .m-komm .ga-tab .w-st (Z. 7419) und .ga-kd.ga-1hst .w-ger (Z. 7480) stehen SPAETER bei gleicher/hoeherer Spezifitaet; darum hier .ga-tab.fa-tab (0,4,0) und Tabelle ohne ga-kd/ga-1hst */
.m-komm .ga-tab.fa-tab tbody tr.ga-ab td { color: var(--ts-ro-fg); }   /* §4438 abgeschlossener Fall: gedämpft statt durchgestrichen */
.m-komm .ga-tab.fa-tab .w-kunde { width: 13%; } .m-komm .ga-tab.fa-tab .w-hst { width: 6%; } .m-komm .ga-tab.fa-tab .w-ger { width: 17%; } .m-komm .ga-tab.fa-tab .w-sn { width: 8%; } .m-komm .ga-tab.fa-tab .w-code { width: 8%; } .m-komm .ga-tab.fa-tab .w-st { width: 13%; }
.m-komm .ga-tab.fa-tab .w-dat { width: 7%; } .m-komm .ga-tab.fa-tab .w-dat2 { width: 8%; } .m-komm .ga-tab.fa-tab .w-beschr { width: auto; } .m-komm .ga-tab.fa-tab .w-beleg { width: 9%; }
.m-komm .ga-tab.fa-tab td .sd-stufen { margin-right: var(--ds-xs); }
.ts-dlg-box table.fa-mails { table-layout: fixed; width: 100%; }
.ts-dlg-box table.fa-mails th.sp-check { width: 28px; } .ts-dlg-box table.fa-mails td.sp-check { text-align: center; }
.ts-dlg-box table.fa-mails th.sp-zeit { width: var(--fb-140); }   /* gemessen 19:40: „22.10.2026 16:28“ = 123 px in 117 */ .ts-dlg-box table.fa-mails th.sp-von { width: 22%; } .ts-dlg-box table.fa-mails th.sp-ordner { width: 30%; }
.ts-dlg-box table.fa-mails td { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ts-dlg-box table.fa-verlauf { table-layout: fixed; width: 100%; } .ts-dlg-box table.fa-verlauf th.sp-zeit { width: 130px; } .ts-dlg-box table.fa-verlauf th.sp-wer { width: var(--fb-110); } .ts-dlg-box table.fa-verlauf th.sp-schritt { width: var(--fb-110); }   /* gemessen 19:30: vier gleich breite Spalten, Text abgeschnitten — Text ist die flexible Spalte */
.ts-dlg-box table.fa-verlauf td { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ts-dlg-box .gr-tk .fen-form.fz-gitter > .fz > :nth-child(2):last-child { grid-column: 2 / -1; }   /* §3366 K-423(3) EINE rechte Kante: Zeilen ohne Knopf (Anzahl, Zuerst anrufen) reichen bis zur Kante der Knopfzeile (gemessen: select 79 px) */


.m-komm .ga-kd tbody tr.ga-ab td { color: var(--ts-ro-fg); }   /* §4438 kein Durchstreichen */
.m-komm .ga-kd tbody tr.ga-offen td { font-style: italic; }
.m-komm .ga-kd tbody tr.ga-fehlt td { color: var(--ts-meld-warn-fg); font-weight: 600; }   /* §2417 verkauft, bei Lenovo nicht registriert */
.m-komm .pe-art-garantie { color: var(--ts-meld-ok-fg); border-color: var(--ts-panel-bd); background: var(--ts-meld-ok-bg); }   /* §2454 Lenovo-Garantie-Mails */
.m-komm .pe-art-support { color: var(--ts-meld-warn-fg); border-color: var(--ts-panel-bd); background: var(--ts-meld-warn-bg); }   /* §2454 Hersteller-Servicefaelle */
.m-komm .pe-art-news { color: var(--ts-meld-info-fg); border-color: var(--ts-meld-info-bd); background: var(--ts-meld-info-bg); }   /* §2921 Newsletter/Rewards/Bewertungsbitten eines Lieferanten */
.m-komm .pe-art-konto { color: var(--ts-meld-info-fg); border-color: var(--ts-panel-bd); background: var(--ts-panel-bg); }   /* §2921 Konto/Portal (ID, Kennwort) eines Lieferanten */
.m-komm .pe-art-status { color: var(--ts-meld-ok-fg); border-color: var(--ts-panel-bd); background: var(--ts-meld-ok-bg); }   /* §4769 Technik-Postfach: Sicherung/Aufgabe erfolgreich */
.m-komm .pe-art-warnung { color: var(--ts-meld-warn-fg); border-color: var(--ts-panel-bd); background: var(--ts-meld-warn-bg); }   /* §4769 Warnung */
.m-komm .pe-art-fehler { color: var(--ts-meld-err-fg); border-color: var(--ts-meld-err-bd); background: var(--ts-meld-err-bg); }   /* §4769 Fehler (Rot = Semantik Fehler) */
.m-komm .pe-art-schriftverkehr { color: var(--ts-akzent-dark); border-color: var(--ts-panel-bd); background: var(--ts-panel-bg); }   /* §2922 persoenlicher Schriftwechsel mit einem Lieferanten */
.m-komm .pe-art-beleg { color: var(--ts-rub-rechnung-fg); border-color: var(--ts-rub-rechnung-bd); background: var(--ts-panel-bg); }   /* §3009 Beleg/Quittung eines Ausstellers (BEL) — Farbe wie Rechnung, heller Grund */
.m-komm .pe-art-vertrag { color: var(--ts-rub-auftrag-fg); border-color: var(--ts-rub-auftrag-bd); background: var(--ts-panel-bg); }   /* §3009 Vertragspartner (VER) — Farbe wie Auftrag, heller Grund */
.ts-dlg-box .dk-tab:not(.dk-aussteller) .dk-c5 { display: none; }   /* §2765 DATEV-Konten: fuenfte Spalte nur im Aussteller-Reiter (Knopf umbenennen) — sonst leere Restspalte (K-423 Punkt 3) */

/* ═══ §2766 Runde Fenster-Inventur 11.10. (gesammelte Regeln der Bauschritte) ═══ */
:is(.ts-dlg-box, .bc-main) .fen-form > .ts-datum { justify-self: start; }   /* §2766 Datumsfeld aus popup(text+bodyHtml) behaelt seine Breite in der Formularzeile */
.ts-dlg-box .b > div:has(> .dlg-inhalt > .dlg-tbl-box) { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }   /* §2766 Lagerprotokoll in Modul-Huelle (#lgp_inh): Tabelle fuellt bis unten */
.ts-dlg-box .dlg-inhalt > .tbl-box.dlg-tbl-box { margin-top: 0; overflow: hidden; }   /* §2766 gerollt wird in .tbl-scroll */
.ts-dlg-box .b .dlg-vor:empty { display: none; }   /* §2766 leerer Vorspann aus tsAnsichtDialogHtml('') gab ~20 px Streifen ueber der Tabelle (Telefonlisten) — :has() erkennt die Stufe weiterhin */
.ts-dlg-box .dlg-vor:empty + .dlg-tbl-box { margin-top: 0; }
.ts-dlg-box .b:has(> div > #zl_inhalt), .ts-dlg-box .b:has(#jt_konten) { display: flex; flex-direction: column; }   /* §2774b: .b ist nur mit .tbl-box flex (Z.2553) — ohne Tabellen (nichts vorhanden) wirkte flex:1 der Huelle nicht (226 px gemessen) */
   /* §2774b: fil-sec flex 1 1 0 (Z.2555) liess den ersten Block ohne Tabelle auf 2 px zusammenfallen (gemessen) */
.ts-dlg-box .b > div:has(> #zl_inhalt) { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }   /* §2774 Zahllauf: Huelle nimmt die Fensterhoehe, Aktionsleiste unten statt mitten im Inhalt (246 px Leerraum gemessen) */
.ts-dlg #zl_inhalt { display: flex; flex-direction: column; }
/* §2776 Jahresuebersicht: Sachkonten-Kachel lief unten aus dem Fenster (Zeilen halb sichtbar, Statuszeile drueber) — Huelle fuellt das Fenster,
   die Sachkonten-Kachel nimmt die Resthoehe und rollt in ihrer .tbl-scroll */
.ts-dlg-box .b > div:has(#jt_konten) { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.ts-dlg-box .fil-sec:has(#jt_konten) { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.ts-dlg-box .fil-sec:has(#jt_konten) > .fil-sec-body, .ts-dlg-box .fil-sec:has(#jt_konten) .tbl-box { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.ts-dlg-box .fil-sec:has(#jt_konten) .tbl-scroll { flex: 1 1 auto; min-height: 0; overflow: auto; }   /* §2766 Zahllauf: letzter Block fuellt (180 px Leerraum gemessen) */




.ts-dlg-box .b:has(> .bk-abr) { display: flex; flex-direction: column; overflow: hidden; }   /* §2766 Kartenabrechnung: Tabelle scrollt im dlg-tbl-box, Rumpf nicht */
.ts-dlg .bk-abr { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
:is(.ts-dlg, .m-zahlungsverkehr) .bk-abr .sp-rest .bk-zn { display: inline-block; width: var(--mw-bk-zn); text-align: center; }   /* §2766 Vorschlag jetzt sp-rest: Zeichen-Raster mitziehen */
.ts-dlg-box .b:has(> .bcb) { display: flex; flex-direction: column; }   /* §2766 Barcodes-Auswahl: Baum fuellt statt max-height 420 (357 px Leerraum) */
.ts-dlg-box .b > .bcb { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.ts-dlg-box .b > .bcb > .bcb-scroll { flex: 1 1 auto; min-height: 0; max-height: none; }
.ts-dlg-box .b:has(> .sn-fen) { display: flex; flex-direction: column; }   /* §2766 Seriennummern-Fenster WE: Liste fuellt statt max-height 320 */
.ts-dlg-box .b > .sn-fen { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.ts-dlg-box .sn-fen > .be-srch-list { flex: 1 1 auto; min-height: 0; max-height: none; }
/* §2872 garantieCENTER › Registrieren (Lenovo-Registrierungshelfer): Liste + feste Wertekachel (bc-zwei); Spaltenbreiten Summe 100 %; gewaehlte Zeile wie Vorgaenge */
.m-komm .gr-tab { table-layout: fixed; width: 100%; }
.m-komm .gr-tab .w-kunde { width: 22%; } .m-komm .gr-tab .w-ger { width: 28%; } .m-komm .gr-tab .w-sn { width: 10%; } .m-komm .gr-tab .w-beleg { width: 11%; }   /* §2877 gemessen 1600 px: Datum 85 px brauchte > 73 px */
.m-komm .gr-tab .w-dat { width: 10%; } .m-komm .gr-tab .w-dat2 { width: 10%; } .m-komm .gr-tab .w-st { width: 9%; }   /* Summe 22+28+10+11+10+10+9 = 100 */
.m-komm .gr-tab tbody tr:hover { cursor: pointer; } .m-komm .gr-tab tbody tr.sel td { background: var(--ts-sel-bg, rgba(0,120,212,.12)); }




/* §2876 WaWi-Browser (garantieCENTER › Registrieren): Bild des Server-Chromium, bedienbar per Klick/Mausrad/Tastatur.
   Seitenverhaeltnis 1280:900 bleibt (Koordinaten werden daraus zurueckgerechnet), Fokusrahmen zeigt, dass Tastatureingaben ankommen. */
/* Immer nebeneinander (Joerg 22:54): links Geraeteliste bzw. WaWi-Browser (volle Hoehe), rechts Werte (feste Spalte); Bild = gemessene Flaeche, 1:1 */
.m-greg .komm-main.bc-main.bc-zwei { grid-template-columns: minmax(0, 1fr) var(--gr-werte-breite); grid-template-rows: minmax(0, 1fr); }
.m-greg .bc-main > .fil-sec[hidden] { display: none; }
.m-greg { --gr-werte-breite: 380px; }
/* §2878 BAUSTEIN fz-sym: Symbolknopf neben einem Feld im Formulargitter (⎘ kopieren, 👁 anzeigen, → einfuegen) — Fenster und Bereichsseiten; vorher nur Passwortmanager (pm-mini) */
/* §2881 Seitenkachel wie Fenster: Inhalt (.fen) fuellt, Statuszeile (dlg-status) fest unten wie der Fensterfuss — kein Scrollen der Kachel */
.bc-main .fil-sec-body:has(> .fen) { display: flex; flex-direction: column; overflow: hidden; min-height: 0; }
.bc-main .fil-sec-body > .fen { flex: 1 1 auto; height: auto; min-height: 0; overflow-y: auto; }
/* §2882 Statuszeile einer Seitenkachel: keine Knopfleiste darunter -> mehrzeilig mit FEST reservierter Hoehe (3 Zeilen), nichts springt, nichts abgeschnitten */
.bc-main .fil-sec-body > .dlg-status { flex: 0 0 auto; height: calc(var(--ds-zeile) * 3); align-items: flex-start; white-space: normal; overflow: hidden; }
:is(.ts-dlg-box, .bc-main) .obtn.fz-sym { padding: 0; height: var(--ts-feld-h); width: var(--ts-btn-h-gross); min-width: var(--ts-btn-h-gross); text-align: center; justify-content: center; }
.m-greg .gr-fb-body { overflow: hidden; display: block; min-height: 0; height: 100%; padding: 0; }
.m-greg .gr-fb-bild { display: block; width: 100%; height: 100%; object-fit: fill; cursor: default; outline: none; }   /* §2883 ohne Rahmen; Seite rendert genau in Flaechengroesse */

/* §2969/§2976 Lenovo automatisch registrieren (garantieCENTER): Bild des WaWi-Browsers auf die Fensterhoehe skaliert — kein Scrollen (Joerg 22:06);
   Rumpf als Spalte, Bild fuellt den Rest, Seitenverhaeltnis bleibt (contain). Statuszeile steht im Fuss ueber der Knopfleiste (dialog.js §1316). */
/* §2977 (Joerg 22:33 "rechts super viel Platz — pass das Fenster an das Browserfenster an"): AUSNAHME von der festen Stufe — Bildhoehe fest (Stufe gross minus Kopf/Fuss),
   Breite ergibt sich aus dem Seitenverhaeltnis des WaWi-Browsers, das Fenster nimmt die Breite des Bildes an (min-content) */
.ts-dlg-box:has(> .b > .fb-vorschau) { --fb-bild-h: calc(min(var(--dlg-h-gross), 92vh) - var(--fb-170)); width: min-content; min-width: var(--dlg-w-schmal); max-width: 96vw; height: auto; }
.ts-dlg-box .b:has(> .fb-vorschau) { display: flex; flex-direction: column; align-items: center; overflow: hidden; }
.ts-dlg-box:has(> .b > .fb-vorschau) .f > .dlg-status { contain: inline-size; }   /* lange Statuszeile (nowrap) darf das Fenster nicht verbreitern — Breite bestimmt das Bild */
.ts-dlg-box .b > .fb-vorschau { display: block; flex: none; height: var(--fb-bild-h); width: auto; max-width: calc(96vw - var(--fb-52)); border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); }
/* §4777 (Jörg 09.11. 01:37 „Fenster so bauen, dass ich es selber groß und klein machen kann“): AUSNAHME von §220/§1307 NUR für das WaWi-Browser-Fenster (Bild .fb-vorschau) — Ziehgriff unten rechts
   setzt --fb-bild-h (Breite folgt dem Seitenverhältnis, Klickpunkte bleiben richtig, lenovo_lauf.js fbZiehbar); Größe wird je Arbeitsplatz gemerkt */
.ts-dlg-box:has(> .b > .fb-vorschau) { position: relative; }
.ts-dlg-box > .fb-zieh { position: absolute; right: 3px; bottom: 3px; width: 14px; height: 14px;   /* innerhalb der Rundung (12px), kleiner als der Fussabstand der Knoepfe */ cursor: nwse-resize; z-index: 2; touch-action: none;
  background: linear-gradient(135deg, transparent 0 50%, var(--ts-panel-bd) 50% 58%, transparent 58% 70%, var(--ts-panel-bd) 70% 78%, transparent 78%); }
.ts-dlg-box.fb-zieht, .ts-dlg-box.fb-zieht * { user-select: none; cursor: nwse-resize !important; }
/* §2976 Registrierfenster: eine Beschriftungsspalte fuer alle vier Kacheln (Muster kt-ed §2756), Felder fuellen die Kachel */
.ts-dlg-box .gr-reg .fen-form.fz-gitter { grid-template-columns: var(--fb-140) minmax(0, 1fr); }
.ts-dlg-box .gr-reg .fen-form.fz-gitter > .fz > input.v { width: 100%; }
/* §3358 Serviceanfrage-Fenster (lenovo_lauf.js ticket): Stufe breit, obere Kachelreihe fuellt, Beschreibung waechst in der Stoerungs-Kachel (Muster kt-ed §2755);
   Vor-Ort-Kontakte als Auswahlliste fen-liste in fester Kachelhoehe (Reihe 2 = Hoehe der Kontakt-Kachel), Zusatzkontakt-Gitter darunter bleibt stehen */
.ts-dlg-box .gr-tk .fen-form.fz-gitter { grid-template-columns: var(--fb-140) minmax(0, 1fr) auto; }   /* Beschriftung | Feld | Knopf (Kontakte ▾ Auswählen) */
/* §3370 GLOBAL (gemessen 20:27, Offene Lizenzen): in Dialog-Formularen war input 30 px (--such-fld-h, Z. 1452) neben select 26 px (--ds-zeile, Z. 1462) — zwei Hoehen in EINER Zeile.
   Fensterbaustein fen-form (K-423): Eingabe- und Auswahlfelder EINE Hoehe = --ds-feld, in allen Dialogen. Spezifitaet (0,4,1) ueber den Bausteinregeln; ausserhalb jeder @layer. */
:is(.ts-dlg-box .b, .bc-main) .fen-form > input.v:where(:not([type="checkbox"]):not([type="radio"])), :is(.ts-dlg-box .b, .bc-main) .fen-form > select.v, :is(.ts-dlg-box .b, .bc-main) .fen-form.fz-gitter > .fz > input.v:where(:not([type="checkbox"]):not([type="radio"])), :is(.ts-dlg-box .b, .bc-main) .fen-form.fz-gitter > .fz > select.v, :is(.ts-dlg-box .b, .bc-main) .fen-form > .fen-ck > input.v:where(:not([type="checkbox"]):not([type="radio"])), :is(.ts-dlg-box .b, .bc-main) .fen-ck > select.v { height: var(--ds-feld); margin-top: 0; box-sizing: border-box; }   /* §4110: auch Felder in einer fen-ck-Reihe des Gitters (RMA-Assistent Anzahl + Seriennummer: gemessen 30 statt 28) */
.ts-dlg-box .gr-tk .fen-form.fz-gitter > .fz > input.v, .ts-dlg-box .gr-tk .fen-form.fz-gitter > .fz > select.v { width: 100%; height: var(--ds-feld); margin: 0; box-sizing: border-box; }   /* K-361: Feldhoehe = Lesefeld (gemessen §3358: input 30 vs .v.ro 28 — Zeilenprobe) */
.ts-dlg-box .gr-tk .fen-form.fz-gitter > .fz > .v.ro { width: 100%; min-height: var(--ds-feld); box-sizing: border-box; }   /* Block + Ellipse jetzt global (§3367) */
.ts-dlg-box .gr-tk .fen-form.fz-gitter.fuellt > .fz:first-child { align-items: stretch; align-self: stretch; }
.ts-dlg-box .gr-tk .fen-form.fz-gitter.fuellt > .fz:first-child > label { align-self: start; padding-top: 6px; }
.ts-dlg-box .gr-tk .fen-form.fz-gitter > .fz > textarea.v.fuellt { height: 100%; min-height: var(--fz-text-3z); grid-column: 2; }
.ts-dlg-box .gr-tk .fen-liste { min-height: 0; max-height: none; }
/* §4345 Vorgangs-Assistent nach DFA §4344 (Skizzen s1/s2, Jörg 03.11. 11:51 „wirklich nach Skizze bauen“): Stufe gross, zwei Spalten — links 540 px (Kachel „Plan der KI“ fest + Kachel „Mail“ füllt),
   rechts „Schritte“ über die ganze Höhe. Ersetzt §3372 (as-info Fließtext, as-frage-Kachel). */
.ts-dlg-box .as-fen > .fen-bloecke.as-sp { grid-template-columns: 540px minmax(0, 1fr); }
.ts-dlg-box .as-fen .as-sp > .fen.as-links { min-height: 0; height: auto; }
.ts-dlg-box .as-fen .as-plan .fz > .v.as-ziel { font-weight: 700; white-space: normal; height: auto; min-height: var(--ts-btn-h); line-height: 1.4; display: flex; align-items: center; }   /* Ablage-/Sprungziel: voller Pfad, umbricht statt abzuschneiden */
.ts-dlg-box .as-fen .as-plan .fz > .v.as-ziel > .pf { color: var(--ts-gedaempft); font-weight: 400; margin-right: 4px; }
.ts-dlg-box .as-fen .as-plan .fz > .v.as-text { white-space: normal; height: auto; min-height: var(--ts-btn-h); line-height: 1.4; display: flex; align-items: center; }
.ts-dlg-box .as-fen .as-kette { display: flex; flex-wrap: wrap; gap: 4px 6px; align-items: center; }
.ts-dlg-box .as-fen .as-kette > .pf { color: var(--ts-gedaempft); }
:is(.ts-dlg-box .as-fen, .m-komm.m-hc .hc-kap) .as-pille { display: inline-flex; align-items: center; height: 20px; padding: 0 8px; border-radius: 10px; background: var(--ts-flaeche); color: var(--ts-gedaempft); font-size: var(--ds-fs-hinweis); font-weight: 600; white-space: nowrap; margin: 0 4px; }
.ts-dlg-box .as-fen .as-links > .fen-block.fuellt > .as-inhalt { flex: 1 1 auto; min-height: 0; overflow: auto; white-space: normal; line-height: 1.45; padding-top: var(--ds-xs); }
/* Schrittliste: Zweizeiler — Haken · Name (fett) + Ziel darunter · rechts Typ; Zustände erl (✓ grau), ueb (übersprungen, durchgestrichen), sel (Akzentbalken) */
.ts-dlg-box .as-fen #as_liste > .fen-li { display: grid; grid-template-columns: 22px minmax(0, 1fr) auto; column-gap: 10px; align-items: start; padding: 6px 8px; border-left: 3px solid transparent; border-radius: 6px; }
.ts-dlg-box .as-fen #as_liste > .fen-li.sel { background: var(--ts-flaeche); border-left-color: var(--ts-akzent); box-shadow: none; }
.ts-dlg-box .as-fen #as_liste > .fen-li > input { margin: 3px 0 0; }
.ts-dlg-box .as-fen #as_liste > .fen-li > .as-li-m { min-width: 0; }
.ts-dlg-box .as-fen #as_liste > .fen-li .as-li-t { font-weight: 600; white-space: normal; }
.ts-dlg-box .as-fen #as_liste > .fen-li .as-li-z { color: var(--ts-gedaempft); white-space: normal; margin-top: 2px; }
.ts-dlg-box .as-fen #as_liste > .fen-li .as-li-z > .as-pfeil { display: inline-block; width: 16px; }
.ts-dlg-box .as-fen #as_liste > .fen-li > .as-li-wo { flex: none; width: auto; font-size: var(--ds-fs-hinweis); color: var(--ts-gedaempft); white-space: nowrap; margin-top: 3px; text-align: right; }
.ts-dlg-box .as-fen #as_liste > .fen-li > .as-li-wo.sofort, .ts-dlg-box .as-fen #as_liste > .fen-li.erl > .as-li-wo { color: var(--ts-ok-text); }
.ts-dlg-box .as-fen #as_liste > .fen-li.erl .as-li-t { color: var(--ts-gedaempft); }
.ts-dlg-box .as-fen #as_liste > .fen-li.erl .as-li-t::before { content: '✓ '; color: var(--ts-ok-text); }
.ts-dlg-box .as-fen #as_liste > .fen-li.ueb .as-li-t { color: var(--ts-gedaempft); }   /* §4438 kein Durchstreichen */
.ts-dlg-box .as-fen #as_liste > .fen-li.as-plus { grid-template-columns: 22px minmax(0, 1fr); color: var(--ts-akzent); font-weight: 600; cursor: pointer; margin-top: var(--ds-xs); }
.ts-dlg-box .as-fen #as_liste > .as-kat { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 16px; padding: 4px 8px 4px 40px; }
.ts-dlg-box .as-fen #as_liste > .as-kat > label { display: flex; align-items: center; gap: 8px; height: 24px; cursor: pointer; }
.ts-dlg-box .as-fen #as_liste > .as-kat > label > input { margin: 0; }
/* §3392 Auftrag › Löschprotokoll zuweisen (K-415: Zeile markieren, Knopf unten): Status rechts in natuerlicher Breite, der Name (SN + Modell) bekommt den Rest — mit 60 %-Basis (.as-li-wo) war das Modell abgeschnitten (Bild 00:21) */
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-liste.dl-wahl > .fen-li > .as-li-wo { flex: 0 0 auto; }
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-liste.dl-wahl > .fen-li > input:disabled + .as-li-t { color: var(--ts-gedaempft); }   /* nicht --ts-dis-fg: Lint Kontrast 2.15:1 auf Weiss (Messung 00:22) */

/* §3172 E serviceCENTER › Lernstand der KI: Auswertungstabellen, Zahlen rechtsbuendig, Kennzahl in der Optionen-Spalte */
.m-vorgang .ls-tab { width: 100%; border-collapse: collapse; }
.m-vorgang .ls-tab th.zahl, .m-vorgang .ls-tab td.zahl { text-align: right; white-space: nowrap; }
/* §3203 Lernstand: drei Kacheln teilen die Hoehe (komm-main.bc-main hatte EINE Zeile minmax(0,1fr) — Kachel 2 und 3 waren einzeilig); .ls-kz entfiel (Kennzahl jetzt Statuszeile) */
/* §4522 Lernstand der KI nach DFA (Skizze ls_skizze_ruhe/lauf): Kopfkachel .tc-hb-kopf (Statusbanner .tc-hb-ban + acht Zählkacheln .tc-hb-zahl, 1fr fest statt max-content), darunter 2×2-Raster .ls-unten,
   feste Spaltenbreiten als Variablen (Langtext im title), EINE einzeilige Statuszeile je Kachel (§4299, wie Z. 7795); ersetzt §3203/§3215/§3812 (fünf Kacheln repeat(5,1fr) untereinander, Tabellen mit 2–6 Zeilen) */
.m-lernstand .ls-main { --ls-c-tag: 92px; --ls-c-anz: 100px; --ls-c-usd: 86px; --ls-c-anteil: 150px; --ls-c-quote: 72px; --ls-c-quelle: 160px; --ls-c-angen: 110px; --ls-c-stand: 172px; --ls-c-zeit: 110px; --ls-c-aufgabe: 100px; --ls-c-nr: 70px; --ls-c-aktion: 96px;
  /* gemessen 05.11. 20:40 (pruefe bild 1892×1010, Messwert = Textbreite + linker Zellenrand 6, Spalte braucht Messwert + 6 + Reserve): anz 76 → 100 („beurteilbar“ 84, „Vorschläge“ 83), stand 128 → 172 („↶ zurückgenommen“ 153), quelle 128 → 160 („Regel (mitgerechnet)“ 143),
     zeit 120 → 110 (Zeile jetzt „03.11. 11:56“ ≈ 92, Jahr im title), aktion 70 → 96 („abschalten“ 82), angen 104 → 110 („angenommen“, Zusatz „(auch Takt)“ im title), aufgabe 150 → 100 (längste Regelart „Vorgangsregel“ ≈ 80); Rest je Tabelle an die Spalte ohne Klasse (Posten/Aufgabe/Art/Grund, Ellipse + title) */
  --ls-balken-w: 100px; --ls-bar-w: 320px; --ls-ziel-bd: 2px; }
.m-lernstand .tc-hb-kopf > .fil-sec-body { display: flex; flex-direction: column; gap: var(--ds-s); }   /* Banner über der Kennzahlenleiste; Flex-Spalte kommt ohnehin aus Z. 7020 (0,5,0), hier nur der Abstand — Z. 8889 display:block (0,2,0) greift so wenig wie dort */
.m-lernstand .tc-hb-ban.n { background: var(--ts-flaeche); border-color: var(--ts-line); } .m-lernstand .tc-hb-ban.n .ic { background: var(--hb-n); }   /* DFA F: Zustand „noch nie gelaufen“ grau (im Backup-Baustein ist n blau) */
.m-lernstand .tc-hb-zahlreihe { grid-auto-columns: minmax(0, 1fr); }   /* DFA G: minmax(max-content,1fr) gab der längsten Kachel 6 px mehr — hier alle acht gleich breit, Details im title */
.m-lernstand .tc-hb-ban .ls-bar { width: var(--ls-bar-w); }   /* Fortschrittsbalken im Laufzustand „Paket n von ca. m“ */
.m-lernstand .ls-unten { flex: 1 1 auto; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) minmax(0, 1fr); gap: var(--hb-gap); }
.m-lernstand .ls-unten > .fil-sec { display: flex; flex-direction: column; min-height: 0; min-width: 0; margin-bottom: 0; }
.m-lernstand .ls-unten > .fil-sec.ls-ziel { box-shadow: inset 0 0 0 var(--ls-ziel-bd) var(--ts-akzent); }   /* kurzes Aufleuchten nach Klick auf eine Zählkachel (Sprungziel) */
.m-lernstand .ls-unten > .fil-sec > .fil-sec-body { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: var(--ds-s); overflow: hidden; }
.m-lernstand .ls-unten .fil-sec-body > .tbl-box { flex: 1 1 auto; min-height: 0; }
.m-lernstand .ls-unten .fil-sec-body > .tc-hb-liste { min-height: 0; } .m-lernstand .ls-unten .fil-sec-body > .tc-hb-liste > * { flex: 0 0 auto; }   /* gemessen 05.11. 20:40: Richtig-Quote + Vorschläge scrollten als ZWEI Bereiche in einer Kachel — jetzt EIN Rollbereich (.tc-hb-liste, Z. 8929): beide Tabellen und der Zwischentitel in Inhaltshöhe, die Liste rollt, Statuszeile bleibt unten */
.m-lernstand .ls-unten .fil-sec-body > .tc-hb-liste > .tbl-box { overflow: clip; }   /* clip statt hidden: Ecken bleiben beschnitten, aber kein eigener Rollkontext — die sticky-Köpfe (Z. 2476) haften so am Rollbereich .tc-hb-liste */
.m-lernstand .ls-unten .fil-sec-body > .tc-hb-liste > .tbl-box > .tbl-scroll { flex: 0 0 auto; overflow: visible; }   /* wie Z. 2171 (§4322 I.3): Tabelle in Inhaltshöhe statt 0 px, innen kein zweiter Rollbereich */
.m-lernstand .ls-unten .fil-sec-body > .dlg-status { flex: 0 0 auto; height: var(--ds-zeile); align-items: center; white-space: nowrap; text-overflow: ellipsis; }   /* einzeilig wie Z. 7795 — Z. 7706 reserviert sonst 3 Zeilen (78 px, DFA I.4) */
.m-lernstand .ls-tab { table-layout: fixed; }
.m-lernstand .ls-tab td { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }   /* DFA I.3: Posten/Grund liefen bis 2.912 px in 972 px — jetzt Ellipse, Volltext im title */
.m-lernstand .ls-tab .ls-c-tag { width: var(--ls-c-tag); } .m-lernstand .ls-tab .ls-c-anz { width: var(--ls-c-anz); } .m-lernstand .ls-tab .ls-c-usd { width: var(--ls-c-usd); } .m-lernstand .ls-tab .ls-c-anteil { width: var(--ls-c-anteil); }
.m-lernstand .ls-tab .ls-c-quote { width: var(--ls-c-quote); } .m-lernstand .ls-tab .ls-c-quelle { width: var(--ls-c-quelle); } .m-lernstand .ls-tab .ls-c-angen { width: var(--ls-c-angen); } .m-lernstand .ls-tab .ls-c-stand { width: var(--ls-c-stand); }
.m-lernstand .ls-tab .ls-c-zeit { width: var(--ls-c-zeit); } .m-lernstand .ls-tab .ls-c-aufgabe { width: var(--ls-c-aufgabe); } .m-lernstand .ls-tab .ls-c-nr { width: var(--ls-c-nr); } .m-lernstand .ls-tab .ls-c-aktion { width: var(--ls-c-aktion); }
.m-lernstand .ls-tab td > .tc-hb-bar { width: var(--ls-balken-w); margin: 0; }   /* Kostenbalken je Tag relativ zum Tagesmaximum */
.m-lernstand .ls-tab tr.ts-dim td { color: var(--ts-pos-grau); }   /* DFA I.10: feste Code-Regel (regel_pruefung) gedämpft neben den KI-Zeilen */
:is(.m-vorgang, .m-sendung) .opt-col .vg-wahl { display: flex; flex-direction: column; gap: var(--ts-btn-gap); }   /* §3177 Filter Beleg/Partner · §3203 Sendungen Status/Versender */
:is(.m-vorgang, .m-sendung) .opt-col .vg-wahl label { font-size: var(--ts-schrift-klein); font-weight: 600; }
:is(.m-vorgang, .m-sendung) .opt-col .vg-wahl select { height: var(--ts-btn-h); border: 1px solid var(--ts-panel-bd); border-radius: 6px; padding: 0 var(--ds-s); font: inherit; background: var(--ts-flaeche); }
.m-vorgang .ls-tab tr.ls-klick { cursor: pointer; }   /* §3174 Kundenuebersicht: Zeile springt in die WaWi */
.m-vorgang .ls-tab tr.ls-klick:hover td { background: var(--ts-hover-bg); }
/* §3444 serviceCENTER › Kundenübersicht: Suche in der Kachel (oben, feste Höhe), Tabelle füllt und rollt in sich; Spaltenbreiten fest, Name bekommt den Rest */
.m-vorgang .fil-sec-body:has(> .such-bar) { display: flex; flex-direction: column; gap: var(--ds-s); min-height: 0; overflow: hidden; }
.m-vorgang .fil-sec-body:has(> .such-bar) > .such-bar { flex: 0 0 auto; }
.m-vorgang .fil-sec-body:has(> .such-bar) > .tbl-box { flex: 1 1 auto; min-height: 0; overflow: auto; }
/* §3454 serviceCENTER › Login zuordnen: Treffer als Tabelle mit 12 festen Zeilen (kein Rollen), Zeilenklick waehlt */
.ts-dlg-box .lz-tab { flex: 1 1 auto; min-height: 0; overflow: hidden; }   /* §3482 gemessen 24.10. (Joergs Fensterhoehe): 12 feste Zeilen liefen unter die Kachel Ergebnis — Tabelle schrumpft jetzt mit der Kachel, Zeilen werden abgeschnitten statt durchzulaufen */
:is(.ts-dlg-box, .bc-main, .mw.wz) .fen-block.fuellt:has(> .lz-tab) { overflow: hidden; }   /* §2877: Fensterbaustein gilt auch auf Bereichsseiten */
.ts-dlg-box .lz-such { display: grid; grid-template-columns: minmax(0, 1fr) var(--ts-btn-h-gross); gap: 4px; align-items: center; }   /* §3482 Partnerfeld + Lupenknopf (Auswahlmaske), wie .pm-pw */
.ts-dlg-box .lz-tab table { width: 100%; table-layout: fixed; border-collapse: collapse; }
.ts-dlg-box .lz-tab td { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; height: 22px; }   /* Tabellenzeile 22 px wie alle Listen (§1318) */
.ts-dlg-box .lz-tab th.zahl, .ts-dlg-box .lz-tab td.zahl { text-align: right; }
.ts-dlg-box .lz-tab .lz-c-art { width: var(--fb-110); } /* §3482 */ .ts-dlg-box .lz-tab .lz-c-nr { width: var(--fb-90); } .ts-dlg-box .lz-tab .lz-c-kat { width: 200px; } .ts-dlg-box .lz-tab .lz-c-fa { width: var(--fb-140); }
.ts-dlg-box .lz-tab tbody tr[data-i] { cursor: pointer; }
.ts-dlg-box .lz-tab tbody tr[data-i]:hover td { background: var(--ts-hover-bg); }
.ts-dlg-box .lz-tab tbody tr.sel td { background: var(--ds-auswahl); font-weight: 700; }
/* §4062 technikCENTER: Statuszeile der Seite IMMER einzeilig am Kachelfuß — vorher nur mit Suchleiste (Quellen, TeamViewer bekamen die 3-Zeilen-Reserve aus Z.7655 = 78 px, Tabelle kürzer, Statuszeile höher; Designprüfung 31.10.) */
.m-technik .fil-sec-body > .dlg-status, .m-vorgang .fil-sec-body:has(> .such-bar) > .dlg-status { flex: 0 0 auto; height: var(--ds-zeile); align-items: center; white-space: nowrap; text-overflow: ellipsis; }   /* §3446b: §2882 (Z.7545) reserviert 3 Zeilen fuer mehrzeilige Kachel-Status — die Kennzahlenzeile ist einzeilig (Volltext im Tooltip) */   /* §3446 (Joerg 20:35 „unten so viel Platz“): Z.532 setzt flex 0 0 100% (fuer Reihen) — in der Spalte wurde daraus 78 px Hoehe; gemessen */
.m-vorgang .kd-tab { table-layout: fixed; }
.m-vorgang .kd-tab td { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.m-vorgang .kd-tab .kd-nr { width: 84px; } .m-vorgang .kd-tab .kd-ort { width: 170px; } .m-vorgang .kd-tab .kd-z { width: 88px; }
.m-vorgang .kd-tab .kd-eur { width: 110px; } .m-vorgang .kd-tab .kd-dat { width: 100px; }

/* §3197 SENDUNGEN — Stufenanzeige wie beim Paketdienst: kompakt in Listen (.sd-stufen, 5 Felder), gross im Fenster (.sd-leiste mit Beschriftung).
   fertig = erreichte Stufe, jetzt = aktuelle Stufe; Problem (Zustellversuch/Verzoegerung) und Ruecksendung faerben die aktuelle Stufe. */
:is(.tspro-ui, .ts-dlg-box) .sd-stufen { display: inline-flex; gap: var(--sd-stufe-gap); vertical-align: middle; margin-right: var(--ds-s); }
:is(.tspro-ui, .ts-dlg-box) .sd-stufen > i { display: inline-block; width: var(--sd-stufe-b); height: var(--sd-stufe-h); border-radius: var(--sd-stufe-r); background: var(--ts-line); }
:is(.tspro-ui, .ts-dlg-box) .sd-stufen > i.fertig { background: var(--ts-ok); }
:is(.tspro-ui, .ts-dlg-box) .sd-stufen > i.jetzt { background: var(--ts-akzent); }
:is(.tspro-ui, .ts-dlg-box) .sd-stufen.sd-problem > i.jetzt { background: var(--ts-warn); }
:is(.tspro-ui, .ts-dlg-box) .sd-stufen.sd-ruecksendung > i.jetzt { background: var(--ts-red); }
:is(.tspro-ui, .ts-dlg-box) .sd-leiste { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--sd-stufe-gap); margin: var(--ds-s) 0; }
:is(.tspro-ui, .ts-dlg-box) .sd-leiste > div { border-top: var(--sd-leiste-h) solid var(--ts-line); padding-top: var(--ds-s); text-align: center; color: var(--ts-dim); }
:is(.tspro-ui, .ts-dlg-box) .sd-leiste > div.fertig { border-top-color: var(--ts-ok); color: var(--ts-ink); }
:is(.tspro-ui, .ts-dlg-box) .sd-leiste > div.jetzt { border-top-color: var(--ts-akzent); color: var(--ts-ink); font-weight: 700; }
:is(.tspro-ui, .ts-dlg-box) .sd-leiste.sd-problem > div.jetzt { border-top-color: var(--ts-warn); }
:is(.tspro-ui, .ts-dlg-box) .sd-leiste.sd-ruecksendung > div.jetzt { border-top-color: var(--ts-red); }
/* §3200/§3203 Legende der Sendungs-Stufen als STATUSZEILE unten in der Kachel (Fensterfuss-Regel §2723: duenn, fest, einzeilig) */
.m-sendung .vg-seite > .dlg-status { flex: 0 0 auto; display: flex; align-items: center; gap: var(--ds-m); min-height: var(--ds-zeile); white-space: nowrap; overflow: hidden; font-size: var(--ds-fs-text); color: var(--ts-dim); border-top: 1px solid var(--ts-panel-bd); padding-top: var(--ds-xs); }
.m-sendung .sd-legende > span { display: inline-flex; align-items: center; }
.m-sendung .sd-legende .sd-stufen { margin-right: var(--ds-xs); }
.m-sendung .sd-legende .sd-legende-t { color: var(--ts-ink); font-weight: 600; }
.m-sendung .sd-legende .sd-legende-stufen { margin-left: auto; }

/* ══ §3478 technikCENTER (Joerg 24.10.): Status aller Kunden — Kundenzeile + Geraetezeilen, je Geraet N-able/Pruefungen/Acronis/TeamViewer in EINER Zeile; Abholung je Quelle ══ */
.m-komm .tc-tab { table-layout: fixed; width: 100%; }
/* §4304 (DFA §4303, Skizze freigegeben 03.11. 05:03): 11 FESTE px-Spalten, Summe = Tabelle 1181 px innen (gemessen) — vorher 13 Prozentspalten 59–142 px, Köpfe/IPs/OS abgeschnitten */
.m-technik .tc-alle { --tca-typ: 90px; --tca-ip: 130px; --tca-os: 120px; --tca-nab: 110px; --tca-pruef: 90px; --tca-sich: 110px; --tca-tv: 110px; --tca-eset: 80px; --tca-nas: 90px; --tca-ilo: 116px; --tca-zahl: 60px; --tca-zahl2: 60px; --tca-zahl3: 64px; }   /* gemessen 11:10: Köpfe #Ger. 53 · #offl. 52 · #Stör. 57 px passten nicht in 52/44/50 (Skizze) */   /* §4333 Skizze s1_42 (1920: 170·90·130·140·110·90·110·110·80·90·116 = 1236): feste px wie Skizze, iLO 116 („○ kein Zugang“ ganz); Gerät nimmt den Rest (1892: 135 statt 170, Betriebssystem 120 statt 140 — Fenster ist 28 px schmaler als die Skizze); Kunden: #Ger. 52 · #offl. 44 · #Stör. 50 */   /* Summe 1181. Gemessen 05:16 gegen die Skizze: Köpfe mit Herstellersymbol brauchen Prüfungen 87, TeamViewer 118 (Skizze 78/92 ohne Symbol), IP-Inhalt 119 (Skizze 118) → Platz aus Gerät/Betriebssystem/Sicherung/ESET/NAS; Kundentabelle innen 369 (Skizze 400), Zahlenköpfe brauchen 43–47 → 237 + 3×44 */
.m-komm .tc-tab .w-typ { width: var(--tca-typ); } .m-komm .tc-tab .w-ip { width: var(--tca-ip); } .m-komm .tc-tab .w-os { width: var(--tca-os); }
.m-komm .tc-tab .w-nab { width: var(--tca-nab); } .m-komm .tc-tab .w-pruef { width: var(--tca-pruef); } .m-komm .tc-tab .w-sich { width: var(--tca-sich); } .m-komm .tc-tab .w-tv { width: var(--tca-tv); } .m-komm .tc-tab .w-eset { width: var(--tca-eset); } .m-komm .tc-tab .w-nas { width: var(--tca-nas); } .m-komm .tc-tab .w-ilo { width: var(--tca-ilo); }
.m-technik .tc-alle #tc_ktab col.tca-zahl { width: var(--tca-zahl); } .m-technik .tc-alle #tc_ktab col.tca-zahl2 { width: var(--tca-zahl2); } .m-technik .tc-alle #tc_ktab col.tca-zahl3 { width: var(--tca-zahl3); }   /* §4333 Kunde nimmt den Rest (Skizze 250 bei 1920) — vorher feste 233 */
.m-technik .tc-alle .tc-tab td, .m-technik .tc-alle #tc_ktab td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tspro-ui.m-komm.m-technik .opt-col > :is(#o_laden, #o_fb, #o_neu, #o_bearbeiten, #o_bearb, #o_speichern, #o_speich, #o_abbrechen, #o_abbr, #o_suche, #o_suchen, #o_x_suche, #o_x_suchen, #o_x_suchen_nr, #o_x_suchen_beleg, #o_x_suchen_lieferant, #o_zurueck, #o_prev, #o_vor, #o_next, #o_letzte, #o_uebernehmen, #o_ueb_zurueck, #o_ueb_abbrechen, #o_drucken, #o_loeschen, #o_loesch, .opt-menue-knopf, .opt-menue-liste) { order: 500; }   /* §4326 Etappe 1: Optionsgruppen des technikCENTER folgen der DOM-Reihenfolge (Skizzen §4322 F4) — die globalen Reihenfolge-Regeln Z. 1248–1269 (Neu/Bearbeiten/Speichern/… nach Kennung) und comCENTER Z. 7256 gelten hier nicht; (1,4,0) hinter ihnen gewinnt */   /* = Grundwert aller Kinder (Z. 1248) → DOM-Reihenfolge; 0 wäre wieder ganz oben (gemessen 05:16) */   /* §4304 comCENTER-Regel order:115 (Z. 7253) zog 🔄 Aktualisieren nach oben, Gruppe ALLGEMEIN blieb leer */
.m-komm .tc-tab a.tc-tv { text-decoration: none; }
.m-komm .tc-tab tbody tr.tc-stoer td:first-child { box-shadow: inset 3px 0 0 var(--ts-meld-err-fg); }
:is(.m-technik, .m-web, .ts-dlg-box, .bc-main) .tc-ampel { display: inline-block; padding: 0 6px; border-radius: 4px; font-size: var(--ds-fs-hinweis); font-weight: 600; white-space: nowrap; line-height: 1.6; }
:is(.m-technik, .m-web, .ts-dlg-box, .bc-main) .tc-ampel.tc-ok { background: var(--ts-meld-ok-bg); color: var(--ts-meld-ok-fg); border: 1px solid var(--ts-meld-ok-bd); }
:is(.m-technik, .m-web, .ts-dlg-box, .bc-main) .tc-ampel.tc-warn { background: var(--ts-meld-warn-bg); color: var(--ts-meld-warn-fg); border: 1px solid var(--ts-meld-warn-bd); }
:is(.m-technik, .m-web, .ts-dlg-box, .bc-main) .tc-ampel.tc-rot { background: var(--ts-meld-err-bg); color: var(--ts-meld-err-fg); border: 1px solid var(--ts-meld-err-bd); }
:is(.m-technik, .m-web, .ts-dlg-box, .bc-main) .tc-ampel.tc-dim { background: var(--ts-flaeche); color: var(--ts-dim); border: 1px solid var(--ts-line); }
/* §4063 REGEL (Jörg 31.10. 21:09 „in eine Spaltenzeile macht man keine Form — entweder die Spalte komplett mit Hintergrundfarbe oder nichts“):
   Status in einer TABELLENZELLE färbt die GANZE Zelle; die Plakette (Rand, Rundung, Polster) gibt es dort nicht. Außerhalb von Tabellen (Kacheln, Kopfzeilen) bleibt sie. */
:is(.m-technik, .m-web, .ts-dlg-box, .bc-main, .tspro-ui) tbody tr td:has(.tc-ampel.tc-ok)   { background: var(--ts-meld-ok-bg);   color: var(--ts-meld-ok-fg); }
:is(.m-technik, .m-web, .ts-dlg-box, .bc-main, .tspro-ui) tbody tr td:has(.tc-ampel.tc-warn) { background: var(--ts-meld-warn-bg); color: var(--ts-meld-warn-fg); }
:is(.m-technik, .m-web, .ts-dlg-box, .bc-main, .tspro-ui) tbody tr td:has(.tc-ampel.tc-rot)  { background: var(--ts-meld-err-bg);  color: var(--ts-meld-err-fg); }
:is(.m-technik, .m-web, .ts-dlg-box, .bc-main, .tspro-ui) /* §4063 dieselbe Regel für die übrigen Plaketten-Bausteine, wenn sie in einer Tabellenzelle stehen (Bestand 31.10.: .badge Bibliothek, .pill ecoDMS-Altdaten, .or-marke comCENTER, .chip): keine Form, nur Text (Farbe des Textes bleibt) */
:is(.bib-wrap, .eco-alt, .m-komm, .ts-dlg-box, .bc-main, .tspro-ui) tbody tr td :is(.badge, .pill, .or-marke, .chip)[class], .m-komm #orTab tbody tr td .or-marke[class] { display: inline; padding: 0; border: 0; border-radius: 0; background: transparent; height: auto; max-width: none; }
tbody tr td .tc-ampel[class] { display: inline; min-width: 0; padding: 0; border: 0; border-radius: 0; background: transparent; color: inherit; font-size: inherit; font-weight: 600; }
.m-technik .tc-rot { color: var(--ts-meld-err-fg); } .m-technik .tc-warn { color: var(--ts-meld-warn-fg); }
.m-technik .opt-col .obtn.on { background: var(--ts-ink); color: var(--ts-sec-fg); border-color: var(--ts-ink); }   /* gewaehlter Filter, wie §3350/§3364 */
/* §4284: alte Abholung-Tabelle .tq-tab (w-q/w-tres/w-zug/w-dat/w-erg/w-kd) entfernt — Abholung nutzt seit §4281 nd-tab mit colgroup */
.m-technik .fil-sec-body > .dlg-status { flex: 0 0 auto; }
/* §3551 TeamViewer-Konsole wie die TeamViewer-Management-Console: Gruppen | Geräte | Detail (drei Kacheln nebeneinander, volle Höhe) */
/* §4269: TeamViewer-Konsole .tv-konsole (Gruppen | Geräte, --tv-gruppen-breite) entfallen — TeamViewer nutzt den Quellen-Grundaufbau (.tq-quelle) */
.m-technik #tvv_tab tbody tr.sel td, .m-technik #tc_hbusb tbody tr.sel td { background: var(--ds-auswahl); }   /* §4207 Externe Platten (Geräteseite › Sicherung) */
.m-technik #tvv_tab tbody tr.tc-ger:hover { cursor: pointer; }   /* §3552 Verwaltung: Zeile waehlbar und sichtbar gewaehlt */
/* §4219 Synology-Systemsteuerung nach Skizze §4218 (freigegeben 02.11.): Modulliste links (fen-baum, Gruppen als .kap) | Modul rechts (fen-tabs, Gruppen-Kacheln, Fuß mit Statuszeile links) — Gerüst wie .tv-konsole */
.m-technik { --sy-nav-breite: 300px; --sy-kurve-h: 70px; }
.m-technik .fen.sy-steuer { display: grid; grid-template-columns: var(--sy-nav-breite) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); gap: var(--ts-kachel-gap); }
.m-technik .sy-steuer > .fen-block { min-height: 0; overflow: hidden; }
.m-technik .sy-steuer > .fen-block > .fen-baum, .m-technik .sy-steuer .sy-korpus { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
/* §4326: .sy-fuss-Regeln in den Kachelfuß-Baustein .k-fuss/.sy-fuss gewandert (Z. ~7935) */
.m-technik .sy-steuer .sy-an { color: var(--ts-ok); font-weight: 700; }
.m-technik .sy-steuer .sy-aus { color: var(--ts-gedaempft); font-weight: 700; }
.m-technik .sy-steuer .fen-li > .as-li-wo.sy-warn { background: transparent; color: var(--ts-red); }
/* §4733 Speicher je Freigabe (Jörg 08.11. 15:29): Statusleiste des Laufs OBEN (Phasenleiste §4072, immer da, §4698-Regel: keine Dynamik), darunter Bilanz-Zeile, darunter die Freigabentabelle; Details auf eigenem Punkt */
.m-technik .sy-steuer .tc-sp-leiste { display: flex; align-items: center; gap: var(--ds-l); padding: var(--ds-s) 0 var(--ds-m); border-bottom: 1px solid var(--ts-line); margin-bottom: var(--ds-m); }
.m-technik .sy-steuer .tc-sp-leiste > .ts-phasen { flex: 1 1 auto; min-width: 0; }
.m-technik .sy-steuer .tc-sp-leiste > .tc-sp-lauf { flex: 0 0 var(--tc-sp-lauf-b); width: var(--tc-sp-lauf-b); text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.m-technik { --tc-sp-lauf-b: 460px; }   /* Messung 15:52: „Stand … · Freigeben läuft: ACRONIS, BACKUP, docker, sensor“ brauchte mehr als 360 px */
.m-technik .sy-steuer .tc-sp-bilanz { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--ds-m); margin-bottom: var(--ds-m); }
.m-technik .sy-steuer .tc-sp-bilanz > .tc-sp-wert { display: flex; flex-direction: column; gap: 2px; padding: var(--ds-s) var(--ds-m); border: 1px solid var(--ts-line); border-radius: var(--ds-radius); min-width: 0; }
.m-technik .sy-steuer .tc-sp-bilanz > .tc-sp-wert > small { color: var(--ts-ink-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.m-technik .sy-steuer .tc-sp-bilanz > .tc-sp-wert > b { font-size: var(--ds-l); white-space: nowrap; }   /* wie .sy-gross */
.m-technik .sy-steuer .tc-sp-bilanz > .tc-sp-wert.warn { border-color: var(--ts-meld-warn-bd); background: var(--ts-meld-warn-bg); }   /* Messung 15:52: --ts-warn als Textfarbe nur 4,24:1 Kontrast → Rahmen/Hintergrund statt Schrift */
.m-technik .sy-steuer .tc-sp-bilanz > .tc-sp-wert.warn > b::before { content: '⚠ '; }
.m-technik .sy-steuer .sy-text { white-space: pre-line; }
/* §4233 Skizzen 7–10: Karten (Laufwerk/Platte), große Zustandszeile, Filterknöpfe Protokoll */
.m-technik .sy-steuer .sy-karten { display: grid; gap: var(--ds-s); }
.m-technik .sy-steuer .sy-karte { display: flex; align-items: center; gap: var(--ds-m); border: 1px solid var(--ts-line); border-radius: var(--ds-radius); padding: var(--ds-s) var(--ds-m); }
.m-technik .sy-steuer .sy-karte-sym { font-size: var(--ds-xl); }
.m-technik .sy-steuer .sy-karte-t { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.m-technik .sy-steuer .sy-karte-t > span { color: var(--ts-gedaempft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-technik .sy-steuer .sy-karte-w { min-width: var(--ds-xl); text-align: right; }
.m-technik .sy-steuer .sy-gross { font-size: var(--ds-l); font-weight: 700; margin-bottom: var(--ds-xs); }
.sy-bearb .fen-form { grid-template-columns: minmax(var(--fb-170), 40%) minmax(0, 1fr); }   /* §4250 Bearbeiten-Fenster (Skizze 18) — popup() liegt außerhalb .m-technik (bereich_maske_fuss: #ovl nach dem Rahmen), daher ohne Modul-Präfix */
.sy-bearb .fz.sy-geaendert > .v > input.v, .sy-bearb .fz.sy-geaendert > .v > .fen-ck { border-color: var(--ts-akzent); background: var(--ts-sel-bg); }
.sy-bearb > .dlg-status { margin-top: var(--ds-s); color: var(--ts-gedaempft); }
.m-technik .sy-steuer .sy-kurve { display: block; width: 100%; height: var(--sy-kurve-h); margin-top: var(--ds-s); }   /* §4247 Skizze 11 Live-Kurven */
.m-technik .sy-steuer .sy-kurve polyline { fill: none; stroke: var(--ts-akzent); stroke-width: 2; vector-effect: non-scaling-stroke; }
.m-technik .sy-steuer .sy-chips { display: flex; gap: var(--ts-btn-gap); margin-bottom: var(--ds-s); }
.m-technik .sy-steuer .fen-li.sy-e2 { padding-left: var(--ds-xl); }   /* §4227 Reiter NAS: Bereiche der offenen App eingerückt (Skizze 5/6) */
.m-technik .sy-steuer .fen-li.sy-offen > .as-li-t { font-weight: 700; }
.m-technik .fen > .fen.sy-steuer { flex: 1 1 auto; min-height: 0; }   /* §4226 Hyper-Backup-Ansicht im Reiter Sicherung füllt den Reiterbereich */
.m-technik .sy-steuer .hb-kopf { display: flex; align-items: center; gap: var(--ds-s); margin-bottom: var(--ds-s); }
.m-technik .sy-steuer .hb-lauf { border: 1px solid var(--ts-line); border-radius: var(--ds-radius); padding: var(--ds-s); margin-bottom: var(--ds-s); display: grid; gap: var(--ds-xs); }
.m-technik .sy-steuer .hb-lauf-t { font-weight: 700; }
.m-technik .sy-steuer .hb-balken { width: 100%; height: var(--ds-s); accent-color: var(--ts-akzent); }
.m-technik .sy-steuer .fen-form { grid-template-columns: minmax(var(--fb-170), 40%) minmax(0, 1fr); }   /* §4219c Messbild 12:39: max-content liess lange DSM-Beschriftungen die Spalte aufdrücken (Wert 677 px vor dem Rand) — Beschriftung bricht um, Wert füllt */
/* ── §3532 technikCENTER Maximalausbau: Herstellersymbole (Brandfetch) in Spaltenkoepfen und Geraetekopf, Geraeteseite (Kopf · Reiter · Inhalt), Detailtabellen, Balkenreihen ── */
.m-technik .tc-sym { height: var(--ds-l); width: auto; max-width: 48px; vertical-align: middle; border-radius: 3px; }
.m-technik .fil-sec-head .tc-sym { background: var(--ts-panel-bg); padding: 2px; }   /* §3648 Jörg 26.10.: dunkles Herstellersymbol (Acronis) auf dunklem Kachelkopf unsichtbar — heller Untergrund für alle Symbole im Kopf */
.m-technik .tc-sym-gross { height: 28px; max-width: 120px; }
.m-technik .tc-sym-txt { font-weight: 600; color: var(--ts-gedaempft); }



 

.m-technik .tc-quelle { display: inline-flex; align-items: center; gap: var(--ds-xs); }
.m-technik a.tc-verweis { display: inline-flex; align-items: center; gap: var(--ds-xs); margin-left: var(--ds-s); padding: 0 var(--ds-s); border: 1px solid var(--ts-akzent); border-radius: var(--ds-radius); color: var(--ts-akzent); text-decoration: none; font-weight: 600; }   /* §4257 Skizze 23: Sprung Netz / Doku-Eintrag im Kopf */
.m-technik a.tc-verweis:hover { background: var(--ts-akzent); color: var(--ds-flaeche); }
.m-technik .tc-quellen { display: inline-flex; align-items: center; gap: var(--ds-m); margin-left: var(--ds-m); vertical-align: middle; }   /* §3665 Geräteseite Kopf: Abstand zwischen den Quellen (Symbol+Ampel je Quelle), vorher klebten A ok N offline TV offline aneinander */
/* §3665 Acronis-Dienste als Schalter-Kacheln (Jörg 09:03) */
.m-technik .tc-dienste { display: grid; grid-template-columns: repeat(auto-fill, minmax(var(--tc-dienst-b), 1fr)); gap: var(--ds-s); padding-top: var(--ds-s); }
.m-technik .tc-dienst { display: flex; align-items: center; gap: var(--ds-s); min-height: var(--ds-zeile); padding: 0 var(--ds-s); border: 1px solid var(--ts-line); border-radius: 6px; background: var(--ts-panel-bg); cursor: pointer; }
.m-technik .tc-dienst:hover { border-color: var(--ts-akzent); }
.m-technik .tc-dienst.an { border-color: var(--ts-akzent); background: var(--ts-flaeche); }
.m-technik .tc-dienst input { flex: 0 0 auto; width: 15px; height: 15px; margin: 0; }
.m-technik .tc-dienst-n { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; color: var(--ts-ink); }



   

   





 








.m-technik .tc-stand { margin-left: auto; font-size: var(--ds-fs-hinweis); font-weight: 400; }
.m-technik .fen-block-t .tc-stand { float: right; }
   






.m-technik .tc-notizen { display: flex; flex-direction: column; gap: var(--ds-s); } .m-technik .tc-notiz { border: 1px solid var(--ts-line); border-radius: var(--ds-radius); padding: var(--ds-s); background: var(--ts-flaeche); }
.ts-dlg-box .tc-pre { white-space: pre-wrap; max-height: var(--tc-pre-h); overflow: auto; font-size: var(--ds-fs-hinweis); margin: 0; }
.ts-dlg-box .tc-bild { display: block; max-width: 100%; border: var(--ds-rahmen) solid var(--ts-panel-bd); margin-bottom: var(--ds-s); }   /* §3636 Bildschirmfotos einer TeamViewer-Sitzung */
.m-technik .tc-tage { display: flex; flex-wrap: wrap; gap: 2px; margin-top: var(--ds-xs); }
.m-technik .tc-tag { display: inline-block; width: 10px; height: 14px; border-radius: 2px; background: var(--ts-flaeche); }
.m-technik .tc-tag-ok { background: var(--ts-meld-ok-fg); } .m-technik .tc-tag-rot { background: var(--ts-meld-err-fg); } .m-technik .tc-tag-warn { background: var(--ts-meld-warn-fg); } .m-technik .tc-tag-dim { background: var(--ts-line); }
.m-technik .tc-bars { display: flex; align-items: flex-end; gap: 1px; height: 64px; margin-top: var(--ds-xs); }
.m-technik .tc-bar { flex: 1 1 0; min-width: 2px; height: 100%; background: var(--ts-flaeche); display: flex; align-items: flex-end; }
.m-technik .tc-bar-f { width: 100%; background: var(--ts-akzent); border-radius: 1px 1px 0 0; }   /* Hoehe = Messwert (JS, Wert kein Design) */
.m-technik .tc-bars-achse { display: flex; justify-content: space-between; font-size: var(--ds-fs-hinweis); }
.m-technik .tc-lw { margin-top: var(--ds-s); } .m-technik .tc-lw-t { display: flex; gap: var(--ds-s); align-items: baseline; }
.m-technik .tc-eset-akt, .m-technik .tc-patch-akt, .m-technik .tc-mav-akt, .m-technik .tc-mq-akt { gap: 4px; }
/* §3533 Quell-Seiten (N-able · Acronis · TeamViewer · ESET allein): Spalten je Quelle, deshalb automatische Breiten; Kunden-/Gruppenzeile wie die Kundenliste */
.m-komm .tc-qtab { table-layout: auto; width: 100%; }
.m-komm .tc-qtab tbody td.p-ell { max-width: 210px;   /* §3649 gemessen: Acronis-Liste +224 px, N-able +195 px breiter als die Kachel (H-Scroll) bei 280 px */ overflow: hidden; text-overflow: ellipsis; }
.m-komm .tc-qtab tbody td.tc-num { text-align: right; white-space: nowrap; }
.m-komm .tc-qtab tbody tr.tc-kunde td { background: var(--ts-flaeche); font-weight: 700; color: var(--ts-ink); }
.m-komm .tc-qtab tbody tr.tc-kunde.tc-offen td { background: var(--ts-meld-warn-bg); font-weight: 600; }
.m-komm .tc-qtab tbody tr.tc-kunde td.tc-kunde-zahlen { text-align: right; font-weight: 400; color: var(--ts-dim); white-space: nowrap; }
.m-komm .tc-qtab tbody tr.tc-ger:hover td { cursor: pointer; }
.m-komm .tc-qtab tbody tr.tc-stoer td:first-child { box-shadow: inset 3px 0 0 var(--ts-meld-err-fg); }
.m-komm .tc-qtab a.tc-sprung { color: inherit; text-decoration: none; }   /* §4230 */
.m-komm .tc-qtab a.tc-tv { text-decoration: none; }
/* ── §3724 technikCENTER › Dokumentation: Katalogsicht — links Inhaltsverzeichnis (Rubrik → Unterrubrik, nur gefüllte), rechts Liste + Eintrag (feste Eintragshöhe, rollt in sich) ── */
.m-technik { --nd-baum-breite: var(--fb-420); --nd-eintrag-b: 560px; }   /* §4422 (Jörg 04.11. 14:25 „mach mal überall 420, Debitorbezeichnungen sind knapp“): linke Kachel auf ALLEN technikCENTER-Seiten 420 (vorher 340; Alle Kunden 420) */   /* §4270 --nd-eintrag-h entfallen (nur .nd-rechts, Werkzeuge jetzt dreispaltig) */   /* §4251 Debitor-Auswahl = Standardleiter select.sk fb-420 (Rahmenregel R4) */   /* §4225 Eintragsbreite rechts (Skizze 560 px, Liste ≈ 792 px bei 1892) · Debitor-Feld */   /* §3728/§3733 gemessen 28.10.: längstes Kapitel „SPEICHER & DATENSICHERUNG“ 222 px (Versalien) in 211 px bei 320 px → 340 px */
/* Optik des Inhaltsverzeichnisses, der Chips, Ketten, Symbole: Bausteine fen-baum/chip/kette/qsym (Schicht bausteine, §3732/K-433) — hier NUR Layout des Moduls */
/* ── §4225 Dokumentation nach Skizze (Jörg 14:35 „Skizze sieht deutlich besser aus — Kachelköpfe, dritte Kachel fehlt“): vier echte Kacheln mit Kopf — Kopf (Debitor · Suche · Hinweise)
   über drei Spalten Inhalt · Liste · Eintrag, jede volle Höhe; Eintrag immer sichtbar (leer mit Hinweis). Nur netzdoku (Klasse nd-doku), Werkzeuge/Verwaltung unberührt. ── */
.m-technik .bc-main.nd-doku { display: flex; flex-direction: column; gap: var(--ts-kachel-gap); min-height: 0; }
.m-technik .nd-doku > .fil-sec { margin-bottom: 0; flex: 0 0 auto; }
.m-technik .nd-doku > .nd-konsole { display: grid; grid-template-columns: var(--nd-baum-breite) minmax(0, 1fr) var(--nd-eintrag-b); grid-template-rows: minmax(0, 1fr); gap: var(--ts-kachel-gap); flex: 1 1 auto; min-height: 0; }
.m-technik .nd-doku > .nd-konsole > .fil-sec { display: flex; flex-direction: column; min-height: 0; min-width: 0; margin-bottom: 0; }
.m-technik .nd-doku > .nd-konsole > .fil-sec > .fil-sec-body { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; overflow: hidden; }
.m-technik .nd-doku .fil-sec-body > .fen-liste { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
.m-technik .nd-doku .such-bar > label { color: var(--ts-gedaempft); font-weight: 600; }
.m-technik .nd-doku .such-bar:last-child { margin-bottom: 0; }
.m-technik .nd-doku .fil-sec-body > .fen { min-height: 0; overflow: auto; }
.m-technik .nd-doku .fil-sec-body > .fen { flex: 1 1 auto; display: flex; flex-direction: column; }
.m-technik .nd-doku .fil-sec-body > .fen > .tbl-box { flex: 1 1 auto; min-height: 0; }
.m-technik .nd-doku .tc-qtab td.nd-art { color: var(--ts-gedaempft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-technik .nd-doku table.nd-tab { table-layout: fixed; }   /* §3728 feste Spaltenbreiten (colgroup aus netzdoku.js): Chrome ignoriert max-width an td bei table-layout auto — Tabelle lief sonst horizontal */
.m-technik .nd-doku table.nd-tab td, .m-technik .nd-doku table.nd-tab th { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-technik .nd-tab col.c-rub { width: 14%; } .m-technik .nd-tab col.c-name { width: 20%; } .m-technik .nd-tab col.c-art { width: 18%; } .m-technik .nd-tab col.c-adr { width: 16%; } .m-technik .nd-tab col.c-ben { width: 11%; }   /* §3733 gemessen 28.10. 07:3x bei 1 000 px Tabelle: Knopf „🔑 anzeigen“ 127 px, Art bis 175 px; Rubrik nur bei Suche; Summe 65 % (+14 % Rubrik) + 280 px fest */ .m-technik .nd-tab col.c-kw { width: 40px; }   /* §4225 nur noch Symbol 🔑/🔐 statt Knopf „🔑 anzeigen“ (127 px) */ .m-technik .nd-tab col.c-n { width: 48px; }
.m-technik .nd-doku .tc-qtab tr.sel td.nd-art { color: var(--ts-ink); }   /* §3728 Lint Kontrast 4.47:1 auf der Auswahlfarbe */
/* §3727/§3731 Quellen: Spalte c-q (Symbole = Baustein qsym), Kacheln des Eintrags rollen in sich, Quellen-Tabellen (Hardware/Software) begrenzt */
/* §3737 Abweichungen (Aufgabenliste): Eintrag · Art · Befund · Feld · Dokumentation · Quelle · Herkunft · Auflösen (zwei Knöpfe) — Prozent auf die Restbreite, Knöpfe fest */
.m-technik .nd-tab col.c-an { width: 15%; } .m-technik .nd-tab col.c-aa { width: 9%; } .m-technik .nd-tab col.c-bef { width: 17%; } .m-technik .nd-tab col.c-feld { width: 9%; } .m-technik .nd-tab col.c-wert { width: 16%; } .m-technik .nd-tab col.c-herk { width: 18%; }   /* §3904 Befund ausgeschrieben („Fehlt in den Quellen“) statt „nicht in de…“ */   /* §3744 Knopfspalte entfallen (§2164: Zeile markieren, Knöpfe in der Optionsleiste); 7 Spalten = 100 %, Werte proportional aus der Messung 28.10. 11:1x */

.m-technik .nd-tab col.c-q { width: 96px; }
.m-technik .nd-doku .nd-tab col.c-name { width: 21%; } .m-technik .nd-doku .nd-tab col.c-art { width: 25%; } .m-technik .nd-doku .nd-tab col.c-ben { width: 11%; }   /* nachgemessen 20:3x: Art 164 px bei 23 % < 175 px Inhalt → 25 % ≈ 178 px */   /* §4249 Liste 770 px (Skizze §4225): Art bis 175 px Inhalt („Verschlüsselungskennwort“) — gemessen 02.11. 19:5x: 128 px sichtbar, 12 Zellen abgeschnitten */
/* §3741 Fenster „Ohne Debitor“: Datei · Einträge · Kennwörter · eingelesen · Zuordnen — feste Spalten auch im Dialog */
.m-technik .ts-dlg-box table.nd-tab { table-layout: fixed; width: 100%; } .m-technik .ts-dlg-box table.nd-tab td, .m-technik .ts-dlg-box table.nd-tab th { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-technik .nd-tab col.c-dat { width: 140px; } .m-technik .nd-doku .tc-qtab td.nd-q-sp { padding-top: 0; padding-bottom: 0; vertical-align: middle; }
.m-technik .nd-doku .fil-sec-body > .fen .fen-bloecke > .fen-block { min-height: 0; overflow: auto; }
.m-technik .nd-doku .fil-sec-body > .fen .fen-bloecke.sp1 { grid-template-rows: minmax(0, 1fr); }   /* §3734 Eintragskachel mit Reitern: Kachel fest, die Reitertafel (fen-tab) rollt */
.m-technik .nd-doku .fil-sec-body > .fen .fen-bloecke > .fen-block.nd-eintrag { overflow: hidden; }
.m-technik .nd-q { display: flex; flex-direction: column; gap: var(--ds-xs); }
.m-technik .nd-q .tbl-box { max-height: none; overflow: visible; }   /* §3734 die Reitertafel rollt als Ganzes — kein Rollkasten im Rollkasten (war 220 px) */
/* §3729 Katalog-Pflege (dokukatalog), §4270 Etappe 4: drei Kacheln Struktur 340 · Felder der Art füllt · Werteliste 460 (Gerüst .nd-doku); ausgeblendete Zeilen gedämpft */
.m-technik { --dk-werte-b: 460px; }
.m-technik .dk-seite > .nd-konsole { grid-template-columns: var(--nd-baum-breite) minmax(0, 1fr) var(--dk-werte-b); }
.m-technik .dk-seite tr.aus td { color: var(--ts-gedaempft); }   /* §4438 kein Durchstreichen */
.m-technik .dk-seite #dk_werte .tc-qtab { table-layout: fixed; width: 100%; }   /* §4282 gemessen 03.11.: Wertelisten 586/409 px, Kachel rollte waagerecht */
.m-technik .dk-seite #dk_werte .tc-qtab :is(th, td) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-technik .dk-seite #dk_werte .tc-qtab th.dk-typ { width: var(--dk-typ-b); } .m-technik .dk-seite #dk_werte .tc-qtab th.dk-zahl { width: var(--dk-zahl-b); }   /* §4286 K-170: über Klassen statt nth-child */
.m-technik .dk-seite { --dk-typ-b: 96px; --dk-zahl-b: 72px; }   /* §4284 gemessen: Kopf „benutzt“ 68/64 */
/* ── §4269/§4270 QUELLEN-GRUNDAUFBAU B (tc_nable, tc_acronis, tc_eset, tc_teamviewer; Rahmen lib/quelle_rahmen.php): Gerüst = .nd-doku/.nd-konsole/.nd-tab der Referenz tc_netzdoku
   (Kunden 340 · Geräte füllt · Gerät 560); hier nur, was die Quellenseiten zusätzlich brauchen: Stand rechts in der Chipzeile, Warnchips, online/offline, feste Spaltenanteile, Beschriftungsspalte 160. ── */
.m-technik { --tq-zahl-b: var(--fb-64); --tq-beschr-b: 160px; }
.m-technik .such-bar .obtn.tag[data-chip] { width: var(--fb-170); justify-content: center; text-align: center; }   /* §4299 (Jörg 03.11. 04:33) Filter-/Statusknöpfe im technikCENTER alle gleich breit (Alle Kunden, Netzwerk, Quellen, Werkzeuge, Dokukatalog) */
/* Jörg 03.11. 04:37 (Bild Zahlungsverkehr): Filterchips über die volle Kopfbreite verteilt, alle gleich breit, MIT Abstand (vorher 170 px fest im span ohne gap = aneinander klebend); Kopffelder kantengleich mit den Kacheln darunter */
.m-technik .such-bar > :is(#tq_chips, #tc_chips, .tc-chips) { flex: 1 1 100%; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: var(--ts-kachel-gap); }   /* §4326 Etappe 1 (DFA §4322 F4, Befund I.5): Chipzeile .tc-chips auf ALLEN technikCENTER-Seiten gleich breit — vorher nur #tq_chips/#tc_chips in .tq-quelle (Netzwerk, Werkzeuge, Dokukatalog blieben 170 px fest) */
.m-technik .such-bar > :is(#tq_chips, #tc_chips, .tc-chips) > .obtn.tag[data-chip] { width: auto; min-width: 0; }
.m-technik .such-bar .obtn.tag.tq-warn:not(.on) { background: var(--ts-meld-warn-bg); color: var(--ts-meld-warn-fg); border-color: var(--ts-meld-warn-bd); }   /* §4326 Warnchip (gelb nur Alarm, F4) auf allen Seiten — vorher nur .tq-quelle */
/* §4326 Etappe 1 KACHELFUSS-BAUSTEIN .k-fuss (DFA §4322 F2/F4, Skizzen .kf): Statuszeile links (12 px grau, einzeilig, Rest im title) · Knöpfe rechts (kbtn 26 px; .prim = Logo-Blau; gesperrt mit Grund im title). Gilt in Kacheln der Seiten UND in Fenstern. .sy-fuss (§4219) ist derselbe Baustein unter altem Namen. */
:is(.m-technik, .ts-dlg-box) :is(.k-fuss, .sy-fuss) { display: flex; align-items: center; gap: var(--ts-btn-gap); flex: 0 0 auto; border-top: 1px solid var(--ts-line); padding-top: var(--ds-s); min-height: calc(var(--ts-btn-h) + var(--ds-s)); }
:is(.m-technik, .ts-dlg-box) :is(.k-fuss, .sy-fuss) > .dlg-status { flex: 1 1 auto; min-width: 0; height: auto; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: var(--ds-fs-text); color: var(--ts-gedaempft); }
:is(.m-technik, .ts-dlg-box) :is(.k-fuss, .sy-fuss) > .dlg-status.neg { color: var(--ts-red); }
.ts-dlg-box .tc-zu-wahl { display: flex; gap: var(--ts-btn-gap); align-items: center; min-width: 0; }   /* §4333 F02 Kunde zuordnen (Skizze s1_26): Feld + Knopf „🔍 Kunde wählen“ NEBEN dem Feld (F3.3 Knopf neben Feld) */
.ts-dlg-box .tc-zu-wahl > .v { flex: 1 1 auto; min-width: 0; }
.ts-dlg-box :is(.k-fuss, .tc-zu-wahl) .kbtn { -webkit-appearance: none; appearance: none; font: inherit; font-size: 12px; font-weight: 600; line-height: 1; height: var(--ts-btn-h); padding: 0 8px; white-space: nowrap; border: 1px solid var(--ts-line); border-radius: 6px; background: var(--ts-panel-bg); color: var(--ts-ink); cursor: pointer; flex: 0 0 auto; }   /* popup() liegt außerhalb .tspro-ui (bereich_maske_fuss) — Z. 2067 gilt dort nicht */
.ts-dlg-box :is(.k-fuss, .tc-zu-wahl) .kbtn:hover:not(:disabled) { background-color: var(--ts-flaeche); }
.ts-dlg-box :is(.k-fuss, .tc-zu-wahl) .kbtn:disabled { color: var(--ts-dis-fg); border-color: var(--ts-dis-bd); background-color: var(--ts-dis-bg); cursor: default; }
:is(.tspro-ui, .ts-dlg-box) .kbtn.prim:not(:disabled) { background: var(--ts-akzent); border-color: var(--ts-akzent); color: var(--ts-sec-fg); }   /* primärer Kachelfußknopf = Akzent (F4); Hover-Partner darunter */
:is(.tspro-ui, .ts-dlg-box) .kbtn.prim:hover:not(:disabled) { background-color: var(--ts-akzent-dark); border-color: var(--ts-akzent-dark); }
:is(.tspro-ui, .ts-dlg-box) .kbtn.danger:not(:disabled) { background: var(--ts-red); border-color: var(--ts-red-dark); color: var(--ts-sec-fg); }   /* §4354 Kachelfußknopf mit Rot-Semantik (Verwerfen/Entfernen) wie .obtn.danger; Hover-Partner darunter */
:is(.tspro-ui, .ts-dlg-box) .kbtn.danger:hover:not(:disabled) { background-color: var(--ts-red-dark); border-color: var(--ts-red-dark); }
/* §4326 Etappe 1 ZUSTANDSZELLE .tc-zust (DFA §4322 F2, §4303): Zeichen + Wort, Freitext/Datum nur im title; Farbe am Text, KEINE Plakette und keine Zellfärbung (§4063 gilt für .tc-ampel) — tcVw.zustand() */
:is(.m-technik, .ts-dlg-box) .tc-zust { white-space: nowrap; font-weight: 600; }
:is(.m-technik, .ts-dlg-box) .tc-zust.tc-z-ok, :is(.m-technik, .ts-dlg-box) .tc-zust.tc-z-gut { color: var(--ts-meld-ok-fg); }
:is(.m-technik, .ts-dlg-box) .tc-zust.tc-z-warn { color: var(--ts-meld-warn-fg); }
:is(.m-technik, .ts-dlg-box) .tc-zust.tc-z-fehler { color: var(--ts-meld-err-fg); }
:is(.m-technik, .ts-dlg-box) .tc-zust.tc-z-aus, :is(.m-technik, .ts-dlg-box) .tc-zust.tc-z-keins { color: var(--ts-gedaempft); font-weight: 400; }
:is(.m-technik, .ts-dlg-box) tbody tr.sel .tc-zust { color: var(--ts-ink); }   /* Kontrast auf der Auswahlfarbe wie §3728 */
.m-technik .nd-doku .such-bar.tq-kopf { display: grid; grid-template-columns: calc(var(--nd-baum-breite) - var(--ds-l)) minmax(0, 1fr) calc(var(--nd-eintrag-b) - var(--ds-l)); column-gap: var(--ts-kachel-gap); }   /* §4418 Kopfgitter für ALLE technikCENTER-Seiten (.nd-doku: Quellen, Netzwerk, Dokumentation, Verwaltungen) — vorher nur .tq-quelle */
.m-technik .nd-doku .tq-feld { display: flex; align-items: center; gap: 6px; min-width: 0; }
.m-technik .nd-doku .tq-feld > :is(.hpick-feld, input) { flex: 1 1 auto; width: auto; min-width: 0; }
.m-technik .nd-doku .such-bar.tq-kopf.tq-kopf1 { grid-template-columns: calc(var(--nd-baum-breite) - var(--ds-l)) minmax(0, 1fr); }   /* §4422 Kopf EINE Zeile: Suche über der Debitorkachel (am Anfang), Chips über Liste + Detail */
:is(.m-technik, .ts-dlg-box) .nd-tab col.tq-zahl { width: var(--tq-zahl-b); }   /* §4422 Zahlenspalten der Debitorkacheln (Ger. · Stör. · onl. · NAS) auf allen Seiten */
.m-technik .tc-alle .such-bar:has(> #tc_chips) { display: grid; grid-template-columns: calc(var(--tc-kunden-b) - var(--ds-l)) minmax(0, 1fr); column-gap: var(--ts-kachel-gap); }   /* Alle Kunden: Suche über Kunden, Chips über Geräte — kantengleich */
.m-technik .tc-alle #tc_suche { width: 100%; min-width: 0; }   /* §4304 füllt die Grid-Spalte (408 px) — width:auto ergab 186 px (gemessen) */
.m-technik .tq-quelle .tq-on { color: var(--ts-meld-ok-fg); }
.m-technik .tq-quelle .tq-aus { color: var(--ts-gedaempft); }
.m-technik .tq-quelle tbody tr.sel .tq-aus { color: var(--ts-ink); }   /* Kontrast auf der Auswahlfarbe wie §3728 */
.m-technik .tq-quelle .tc-qtab th.tc-num { text-align: right; }
.m-technik .tq-quelle tbody tr:is([data-z], [data-k]) td { cursor: pointer; }
.m-technik .tq-quelle tbody tr.tq-offen td:first-child { color: var(--ts-meld-warn-fg); }
.m-technik .tq-quelle .fil-sec-body > .dlg-status.neg { color: var(--ts-red); }
.m-technik .tq-quelle .fen-tab > .fen-form.fz-gitter { grid-template-columns: var(--tq-beschr-b) minmax(0, 1fr) auto; }
.m-technik .tq-quelle .nd-tab col.tq-zahl { width: var(--tq-zahl-b); }
/* §4333 Etappe 2 (Skizzen s1, K-441 Spaltenregel): FESTE px-Spalten der Geräte- und Blocktabellen als Leiter .tq-px-<px> an <col>; die eine Textspalte ohne Klasse nimmt den Rest (Skizze 746 px bei 1920, schmaler bei 1892) */
:is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-66 { width: 66px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-70 { width: 70px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-76 { width: 76px; }
:is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-80 { width: 80px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-86 { width: 86px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-90 { width: 90px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-96 { width: 96px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-100 { width: 100px; }
:is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-106 { width: 106px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-110 { width: 110px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-116 { width: 116px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-120 { width: 120px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-130 { width: 130px; }
:is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-134 { width: 134px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-137 { width: 137px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-150 { width: 150px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-160 { width: 160px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-166 { width: 166px; }
:is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-170 { width: 170px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-178 { width: 178px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-200 { width: 200px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-214 { width: 214px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-230 { width: 230px; }   /* nur benutzte Stufen (Waisenregister §3633) — neue Stufe nur mit Verwendung anlegen */
:is(.m-technik .tq-quelle, .ts-dlg-box) .tq-blk > .fen-block-t { display: flex; align-items: center; gap: var(--ds-l); }   /* Block in Gerätekachel und Fenster: Titel links, Untertitel (Zweck) rechts wie der Kachelkopf (K-441) */
:is(.m-technik .tq-quelle, .ts-dlg-box) .tq-blk > .fen-block-t > .ts-status-txt { margin-left: auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 400; color: var(--ts-gedaempft); }
.ts-dlg-box .fen > .tq-blk.fuellt > .tbl-box > .tbl-scroll { flex: 1 1 auto; }   /* Listenfenster (F3.5): Tabelle füllt den Block bis zur Statuszeile */
.m-technik .tq-quelle .fen-tab:not([hidden]) { display: flex; flex-direction: column; min-height: 0; flex: 1 1 auto; gap: var(--ds-s); }   /* Reitertafel: Formular oben (Inhaltshöhe), Block .fuellt bis zum Kachelboden (Skizze: Störungen füllt) */
.m-technik .tq-quelle .fen-tab > .tq-blk.fuellt { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.m-technik .tq-quelle .fen-tab > .tq-blk.fuellt > .tbl-box { flex: 1 1 auto; min-height: 0; }
.m-technik .tq-quelle .fen-tab > .tq-blk.fuellt > .tbl-box > .tbl-scroll { flex: 1 1 auto; }   /* Gegenstück zu §4322 I.3 (Z. ~2171: nicht-füllende Blöcke auto) */
.m-technik .tq-quelle .fen-tab > .fen-form.fz-gitter { flex: 0 0 auto; }
.m-technik .tq-quelle #tq_fuss { margin-top: var(--ds-s); }
.m-technik .tq-quelle .nd-tab col.tq-w10 { width: 10%; } .m-technik .tq-quelle .nd-tab col.tq-w12 { width: 12%; } .m-technik .tq-quelle .nd-tab col.tq-w13 { width: 13%; } .m-technik .tq-quelle .nd-tab col.tq-w15 { width: 15%; }
.m-technik .tq-quelle .nd-tab col.tq-w16 { width: 16%; } .m-technik .tq-quelle .nd-tab col.tq-w17 { width: 17%; } .m-technik .tq-quelle .nd-tab col.tq-w18 { width: 18%; } .m-technik .tq-quelle .nd-tab col.tq-w20 { width: 20%; }
.m-technik .tq-quelle .nd-tab col.tq-w21 { width: 21%; } .m-technik .tq-quelle .nd-tab col.tq-w22 { width: 22%; } .m-technik .tq-quelle .nd-tab col.tq-w25 { width: 25%; } .m-technik .tq-quelle .nd-tab col.tq-w30 { width: 30%; }
.m-technik .tq-quelle .nd-tab col.tq-w40 { width: 40%; } .m-technik .tq-quelle .nd-tab col.tq-w50 { width: 50%; } .m-technik .tq-quelle .nd-tab col.tq-w60 { width: 60%; } .m-technik .tq-quelle .nd-tab col.tq-w100 { width: 100%; }   /* Anteile der Skizzen §4270 (scrollWidth = clientWidth) */
/* ── §4341 Etappe 3 GERÄTESEITE tc_geraet (DFA §4322 F1c/F2, Skizzen Heft 3 s3_01–36, freigegeben §4325): Kopfkachel „Gerät“ (Titelzeile Gerät · Art · Kunde · Ort · Ampeln rechts + Reiterleiste),
   darunter Kachelreihen .tc-sp (ah = Inhaltshöhe, sonst füllend) aus .fil-sec.tc-k (Kachelkopf K-441, Fuß .k-fuss), EINE Seitenstatuszeile .tc-seitest unten; Tabellen = .nd-tab mit px-Leiter, Rest-Spalte ohne Klasse ── */
.m-technik .bc-main.tc-g { display: flex; flex-direction: column; gap: var(--ts-kachel-gap); min-height: 0; }
.m-technik .tc-g > .fil-sec.tc-kopfg { flex: 0 0 auto; margin-bottom: 0; }
.m-technik .tc-g > .fil-sec.tc-kopfg > .fil-sec-body { display: flex; flex-direction: column; gap: var(--ds-s); }
.m-technik .tc-g .tc-titel { display: flex; align-items: center; gap: var(--ds-m); min-height: var(--ds-feld); white-space: nowrap; min-width: 0; }
.m-technik .tc-g .tc-titel > b { font-size: 15px; }   /* Skizze .titel b 15 px — eine Stufe über --ds-fs-kopf (Gerätename ist der Seitentitel) */
.m-technik .tc-g .tc-titel > .tc-sep { color: var(--ts-gedaempft); }
.m-technik .tc-g .tc-titel > .tc-kd { overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.m-technik .tc-g .tc-titel > .tc-amp { margin-left: auto; display: flex; gap: var(--ds-l); font-size: var(--ds-fs-text); flex: 0 0 auto; }
.m-technik .tc-g .tc-titel a.tc-sprung { color: inherit; }
.m-technik .tc-g > #tc_inhalt { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: var(--ts-kachel-gap); overflow: hidden; }
.m-technik .tc-g > #tc_inhalt > .tc-leer { padding: var(--ds-s) 0; }
.m-technik .tc-g .tc-sp { display: grid; gap: var(--ts-kachel-gap); min-height: 0; flex: 1 1 auto; grid-template-rows: minmax(0, 1fr); grid-auto-rows: minmax(0, 1fr); }
.m-technik .tc-g .tc-sp.ah { flex: 0 0 auto; grid-template-rows: auto; grid-auto-rows: auto; }   /* Reihe mit Inhaltshöhe (Beschriftung|Wert-Kacheln über einer füllenden Liste) */
.m-technik .tc-g .tc-sp.s11 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.m-technik .tc-g .tc-sp.s111 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.m-technik .tc-g .tc-sp.s2r { grid-template-columns: minmax(0, 1fr) var(--nd-eintrag-b); }   /* füllt | 560 (Skizze R560) */
.m-technik .tc-g .tc-sp.s340 { grid-template-columns: var(--nd-baum-breite) minmax(0, 1fr); }   /* 340 | füllt */
.m-technik .tc-g .tc-stapel { display: flex; flex-direction: column; gap: var(--ts-kachel-gap); min-height: 0; min-width: 0; }
.m-technik .tc-g .tc-stapel > .tc-sp { flex: 1 1 auto; }
.m-technik .tc-g .fil-sec.tc-k { display: flex; flex-direction: column; min-height: 0; min-width: 0; margin-bottom: 0; }
.m-technik .tc-g .tc-stapel > .fil-sec.tc-k:not(.fuellt), .m-technik .tc-g .tc-sp:not(.ah) > .fil-sec.tc-k:not(.fuellt) { flex: 0 0 auto; }
.m-technik .tc-g .tc-stapel > .fil-sec.tc-k.fuellt { flex: 1 1 auto; }
.m-technik .tc-g .fil-sec.tc-k > .fil-sec-body { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: var(--ds-s); overflow: hidden; }
.m-technik .tc-g .fil-sec.tc-k > .fil-sec-body > .fen-form.fz-gitter { flex: 0 0 auto; grid-template-columns: var(--tq-beschr-b) minmax(0, 1fr); }
.m-technik .tc-g .fil-sec.tc-k.fuellt > .fil-sec-body > .tbl-box { flex: 1 1 auto; min-height: 0; }
.m-technik .tc-g .fil-sec.tc-k.fuellt > .fil-sec-body > .tbl-box > .tbl-scroll { flex: 1 1 auto; }
.m-technik .tc-g .fil-sec.tc-k:not(.fuellt) > .fil-sec-body > .tbl-box, .m-technik .tc-g .fil-sec.tc-k:not(.fuellt) > .fil-sec-body > .tbl-box > .tbl-scroll { flex: 0 0 auto; }   /* Inhaltshöhe (§4322 I.9: sonst 0 px) */
.m-technik .tc-g table.nd-tab { table-layout: fixed; width: 100%; }
.m-technik .tc-g table.nd-tab :is(td, th) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-technik .tc-g table.nd-tab th.r, .m-technik .tc-g table.nd-tab td.r { text-align: right; }
.m-technik .tc-g tbody tr[data-i] td { cursor: pointer; }
.m-technik .tc-g .tc-seitest { flex: 0 0 auto; display: flex; align-items: center; min-height: var(--ds-zeile); font-size: var(--ds-fs-text); color: var(--ts-gedaempft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding: 0 var(--ds-xs); }
.m-technik .tc-g .tc-seitest.neg { color: var(--ts-red); }
.m-technik .tc-g .tc-chips { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: var(--ts-kachel-gap); flex: 0 0 auto; }   /* Chipzeile über einer Kachel (Patches, Laufwerke) — gleich breit wie der Kopfkachel-Baustein */
.m-technik .tc-g .tc-chips > .obtn.tag { width: auto; min-width: 0; justify-content: center; }
.m-technik .tc-g .tc-such { flex: 0 0 auto; }
.m-technik .tc-g .tc-such > .sq { width: 100%; min-width: 0; }
/* Balken mit Füllung und Wert daneben (Skizze .bw/.bar: Leistung, Laufwerke, Volume, Lüfter) — Füllbreite = Messwert (JS setzt data-w als width, Wert kein Design wie .tc-bar-f) */
:is(.m-technik, .ts-dlg-box) .tc-bw { display: flex; align-items: center; gap: var(--ds-s); min-height: var(--ds-zeile); }
:is(.m-technik, .ts-dlg-box) .tc-bw > .tc-bal { flex: 1 1 auto; height: 14px; border: 1px solid var(--ts-line); border-radius: 3px; background: var(--ds-feld-bg); position: relative; min-width: 60px; }
:is(.m-technik, .ts-dlg-box) .tc-bw > .tc-bal > i { position: absolute; left: 0; top: 0; bottom: 0; background: var(--ts-akzent); border-radius: 2px; }
:is(.m-technik, .ts-dlg-box) .tc-bw > .tc-bz { flex: 0 0 auto; min-width: 64px; text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
/* px-Leiter, Stufen der Skizzen Heft 3 (nur benutzte, Waisenregister §3633) */
:is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-104 { width: 104px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-140 { width: 140px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-144 { width: 144px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-174 { width: 174px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-180 { width: 180px; }
:is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-204 { width: 204px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-220 { width: 220px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-250 { width: 250px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-260 { width: 260px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-300 { width: 300px; }
:is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-304 { width: 304px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-320 { width: 320px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-324 { width: 324px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-330 { width: 330px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-360 { width: 360px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.tq-px-400 { width: 400px; }
.ts-dlg-box .fen > .tc-pre-blk { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; } .ts-dlg-box .fen > .tc-pre-blk > .tc-pre { flex: 1 1 auto; max-height: none; }   /* F03 Prüfung-Details: Ausgabe-Block füllt das Fenster, kein innerer Rollbalken im Fenster (Befund 28) */
/* ── §4270 Etappe 2 VERWALTUNGEN (tc_nable_verwaltung, tc_acronis_verwaltung, tc_eset_verwaltung, tc_tv_verwaltung; Rahmen lib/verwaltung_rahmen.php): Kopfkachel (Felder als hpick + Reiter)
   über EINER füllenden Kachel des aktiven Reiters — Gerüst .nd-doku der Referenz tc_netzdoku wie die Quellenseiten (.tq-quelle); Kachelkopf mit Untertitel rechts (K-441, .ts-status-txt) */
.m-technik .fil-sec-head:has(> .ts-status-txt) { display: flex; align-items: center; gap: var(--ds-l); }   /* §4326 Etappe 1 KACHELKOPF-BAUSTEIN (K-441, Referenz .m-reparatur Z. ~8549): Titel links, Zähler daneben, Untertitel = Zweck RECHTS (.ts-status-txt) — auf ALLEN technikCENTER-Seiten, vorher nur .tq-verw */
.m-technik .fil-sec-head > .ts-status-txt { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.m-technik .fil-sec-head > .ts-status-txt:last-child { margin-left: auto; }   /* der LETZTE Zusatz = Untertitel rechts; Zähler davor bleibt beim Titel (Skizze: Titel · Zähler … Untertitel) */
.m-technik .nd-doku > .fil-sec.tq-voll { flex: 1 1 auto; display: flex; flex-direction: column; min-height: 0; }
.m-technik .tq-verw > .fil-sec.tq-voll > .fil-sec-body { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; overflow: hidden; }
.m-technik .tq-verw .tq-vfeld { display: contents; }
.m-technik .tq-verw .such-bar.tq-kopf1 > .tq-vrest { display: flex; align-items: center; gap: var(--ds-l); min-width: 0; }   /* §4422 Verwaltungs-Kopf EINE Zeile: Felder + Chips neben der Suche */
.m-technik .tq-verw .tq-vrest .hpick-feld { width: var(--fb-220); flex: 0 1 var(--fb-220); min-width: 0; }   /* Kopffelder in der Zeile schmaler als die Leiterstufe 420 (eine Zeile, Höhe gewinnen) */
.m-technik .tq-verw .tq-vrest > .tc-chips { flex: 1 1 auto; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: var(--ts-kachel-gap); min-width: 0; }
.m-technik .tq-verw .tq-vfeld.tq-vfeld-aus > * { opacity: .45; pointer-events: none; }   /* §4422 Feld gilt im Reiter nicht: gesperrt statt ausgeblendet (K-394) */
.m-technik #syv_inhalt table { table-layout: fixed; width: 100%; }   /* §4422 Synology-Liste feste Spalten, kein waagerechtes Rollen: NAS · Adressen · Seriennummer · Standard · Debitor · Dokumentation · Benutzer · Zugang */
.m-technik #syv_inhalt :is(th, td) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-technik #syv_inhalt th:nth-child(1) { width: 14%; } .m-technik #syv_inhalt th:nth-child(2) { width: 15%; } .m-technik #syv_inhalt th:nth-child(3) { width: 11%; } .m-technik #syv_inhalt th:nth-child(4) { width: 12%; }
.m-technik #syv_inhalt th:nth-child(5) { width: 17%; } .m-technik #syv_inhalt th:nth-child(6) { width: 14%; } .m-technik #syv_inhalt th:nth-child(7) { width: 8%; } .m-technik #syv_inhalt th:nth-child(8) { width: 9%; }   /* Beschriftung + Feld bleiben Kinder der such-bar; [hidden] blendet beide aus (Feld gilt nicht im Reiter) */
.m-technik .tq-verw tbody tr:is([data-i], [data-k]) td { cursor: pointer; }
.m-technik .tq-verw .fil-sec-body > .dlg-status.neg { color: var(--ts-red); }
.m-technik .nd-doku > .nd-konsole.tq-vw-links { grid-template-columns: var(--nd-baum-breite) minmax(0, 1fr); }   /* §4418/§4422 Verwaltung mit linker Kachel (Synology, N-able, Acronis): 420 wie Quellen/Netzwerk | Liste füllt */
/* ── §4270 Etappe 3: Alle Kunden (tc_status, ZWEI Spalten Kunden 420 | Geräte füllt, Ausnahme §4269) und Netzwerk (tc_netzwerk, drei Spalten Debitor › Netze | Geräte | Gerät) — Gerüst .nd-doku/.tq-quelle ── */
.m-technik { --tc-kunden-b: var(--nd-baum-breite); }   /* §4422 eine Breite für alle linken Kacheln */
.m-technik .tc-alle > .nd-konsole { grid-template-columns: var(--tc-kunden-b) minmax(0, 1fr); }
.m-technik .tc-alle .such-bar > .sq { flex: 0 0 var(--fb-420); }
.m-technik .tc-alle tbody tr.tc-gkopf td { background: var(--ts-flaeche); font-weight: 700; color: var(--ts-ink); }
.m-technik .tc-alle tbody tr.tc-gkopf[data-k] td { cursor: pointer; }   /* §4284 Zustand per data-k (§696c) — der Klick-Handler greift ebenfalls nur tr.tc-gkopf[data-k] */   /* Kundenkopf in der Sicht „Alle Kunden“ — Klick wählt den Kunden */
.m-technik .tq-quelle tbody tr:is([data-i], [data-n]) td { cursor: pointer; }
.m-technik .nw-baum tbody tr.nw-deb td { background: var(--ts-flaeche); font-weight: 700; color: var(--ts-ink); }
.m-technik .nw-baum tbody tr.nw-knoten td:first-child { padding-left: var(--nw-einzug); }
.m-technik .nw-baum tbody tr.sel td { background: var(--ds-auswahl); }
.ts-dlg-box .hpick-feld.nw-aus { cursor: default; color: var(--ts-gedaempft); }   /* Debitorfeld Netzgerät: Debitor kommt über das Netz (popup liegt außerhalb .m-technik) */
/* ── §4270 Etappe 4: Werkzeuge, Abholung, Dokumentation-Verwaltung — Kachelkopf Titel · Untertitel links, Zähler rechts (.tc-kopf-rechts); Abholung: Quellen in Inhaltshöhe, Protokoll füllt ── */
.m-technik .nd-doku .fil-sec-head:has(> .tc-kopf-rechts) { display: flex; align-items: center; gap: var(--ds-s); }
.m-technik .nd-doku .fil-sec-head > .tc-kopf-rechts { margin-left: auto; flex: 0 1 auto; min-width: 0; }
.m-technik .tq-abh > .fil-sec.tq-voll > .fil-sec-body { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; overflow: hidden; }
.m-technik .tq-abh > .fil-sec:not(.tq-voll) > .fil-sec-body > .tbl-box, .m-technik .tq-abh > .fil-sec:not(.tq-voll) > .fil-sec-body > .tbl-box > .tbl-scroll { flex: 0 0 auto; height: auto; max-height: none; }   /* §4333 L. nach dem Bau (gemessen 11:12, Befund I.9): Quellentabelle in INHALTSHÖHE — .tbl-scroll flex 0 lief in der nicht füllenden Kachel auf 0 px (Statuszeile lag auf dem Tabellenkopf) */
.m-technik .tq-abh tbody tr[data-q] td { cursor: pointer; }
.m-technik .tq-abh .tq-on { font-weight: 600; } .m-technik .tq-abh .tc-rot { font-weight: 600; }
.m-technik .dk-seite .dk-haken { text-align: center; }
/* ── technikCENTER › Werkzeuge (31.10.2026; §4270 Etappe 4: drei Spalten Inhalt · Liste · Eintrag wie Dokumentation, Gerüst .nd-doku): EINE Eintragskachel mit Reitern (Jörg 31.10. 18:20, wie §3734),
   Einsätze und Versionen als Reiter (Tabelle füllt die Reitertafel) ── */
.m-technik .nd-doku .fil-sec-body > .fen.wz-detail { overflow: hidden; }
.m-technik .wz-tab > .fen { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.m-technik .wz-tab > .fen > .tbl-box { flex: 1 1 auto; min-height: 0; }
.m-technik .wz-detail .nd-eintrag { display: flex; flex-direction: column; min-height: 0; }
.m-technik .wz-detail .fen-tab.wz-tab:not([hidden]) { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; overflow-y: auto; }
/* §4053 „Wofür und wie“ bleibt im Feldraster (fz-gitter, Spalte Label | Feld) — vorher display:flex auf .wz-texte/.fz: Felder schmal und mittig. Nur die Zeilenhöhen: Zweck auto, Beschreibung füllt, Ausführung fest */
.m-technik .wz-tab > .fen-form.fz-gitter.wz-texte { flex: 1 1 auto; min-height: 0; grid-template-rows: auto minmax(0, 1fr) 140px; align-content: stretch; }
.m-technik .wz-texte > .fz.wz-lang, .m-technik .wz-texte > .fz.wz-mittel { align-items: stretch; min-height: 0; }
.m-technik .wz-texte > .fz > textarea.v { height: 100%; min-height: 0; resize: none; }
.m-technik .wz-tab.wz-inhalt:not([hidden]) { overflow: hidden; }
.m-technik .wz-inhalt > textarea.wz-code, .ts-dlg-box .wz-inhalt > textarea.wz-code { flex: 1 1 auto; min-height: 0; resize: none; font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 12px; line-height: 1.45; white-space: pre; overflow: auto; tab-size: 4; }
.ts-dlg-box .wz-inhalt { display: flex; flex-direction: column; min-height: 0; }
:is(.m-technik, .ts-dlg-box) .nd-tab col.c-wz-titel { width: 44%; } :is(.m-technik, .ts-dlg-box) .nd-tab col.c-wz-deb { width: 26%; } :is(.m-technik, .ts-dlg-box) .nd-tab col.c-wz-ber { width: 16%; } :is(.m-technik, .ts-dlg-box) .nd-tab col.c-wz-ver { width: 72px; } :is(.m-technik, .ts-dlg-box) .nd-tab col.c-wz-st { width: 128px; }
/* §4053 Fenster Versionen/Einsätze liegen außerhalb .m-technik — Spaltenbreiten galten dort nicht (alle gleich breit, „Änderung“ abgeschnitten) */
.ts-dlg-box .nd-tab col.c-dat { width: 140px; }

/* ══ §3498 webCENTER (Joerg 24.10.): Websites-Liste (Stammsatz + Bestand + Erreichbarkeit) und Website-Seite (Stammdaten · Bestand · Seitenliste) ══ */
.m-komm .wc-tab, .m-komm .ws-tab { table-layout: fixed; width: 100%; }
/* Breiten gemessen 24.10. 15:17 (1920 px, Tabelle 1655 px): Erreichbar „200 · 189 ms Admin“ 238 px, Sicherung „24.10.2026 13:15“ 150 px, Aenderung 123 px, Kalender „31 Dateien“ 109 px */
.m-komm .wc-tab .w-name { width: 11%; } .m-komm .wc-tab .w-dom { width: 9%; } .m-komm .wc-tab .w-host { width: 9%; } .m-komm .wc-tab .w-kd { width: 8%; } .m-komm .wc-tab .w-erb { width: 16%; }
.m-komm .wc-tab .w-n { width: 4%; } .m-komm .wc-tab .w-zw { width: 13%; } .m-komm .wc-tab .w-aus { width: 6%; } .m-komm .wc-tab .w-sich { width: 10%; } .m-komm .wc-tab .w-aend { width: 7%; } .m-komm .wc-tab .w-kal { width: 7%; }   /* §3498b Zweige + Ausstattung statt Admin/Module; Summe 100; Aenderung als TT.MM.JJ HH:MM */
.m-web .wc-aus { display: flex; flex-direction: column; gap: 3px; min-height: 0; overflow: auto; font-size: var(--ds-fs-hinweis); }
.m-web .wc-aus-g { font-weight: 700; color: var(--ts-ink); margin-top: 6px; } .m-web .wc-aus-g:first-child { margin-top: 0; }
.m-web .wc-aus-z { display: flex; gap: 6px; align-items: baseline; min-width: 0; } .m-web .wc-aus-z .tc-ampel { flex: 0 0 auto; min-width: 38px; text-align: center; } .m-web .wc-aus-n { font-weight: 600; }
.m-komm .wc-tab tbody tr[data-k] td { cursor: pointer; }   /* Doppelklick oeffnet die Website (§696c: Zeiger nur mit data-Zustand) */
.m-komm .ws-tab .w-datei { width: 22%; } .m-komm .ws-tab .w-titel { width: 54%; } .m-komm .ws-tab .w-kb { width: 10%; } .m-komm .ws-tab .w-dat { width: 14%; }
.m-komm .ws-tab td.r { text-align: right; }
/* Ampeln: dieselben Klassen tc-ampel/tc-ok/tc-warn/tc-rot/tc-dim wie technikCENTER — Regel oben im §3478-Block um .m-web erweitert (K-353: Vorhandenes benutzen) */
.m-web .tc-sprung { color: inherit; text-decoration: none; cursor: pointer; }   /* §4230 */
.m-web .fil-sec-body > .dlg-status, .m-web .fen > .dlg-status { flex: 0 0 auto; }
.m-web .wc-kunde { display: flex; gap: 8px; align-items: center; min-width: 0; } .m-web .wc-kunde input { width: 110px; flex: 0 0 auto; border: 0; background: transparent; padding: 0; font: inherit; color: inherit; outline: none; box-shadow: none; } /* §4135 kein Feld im Feld: der Rahmen kommt vom äußeren .v wie bei den anderen Zeilen */ .m-web .wc-kunde span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-web .fen-form .v.ro { min-width: 0; overflow-wrap: anywhere; white-space: normal; height: auto; min-height: var(--ts-btn-h); line-height: 1.5; }   /* Bestand-Werte duerfen umbrechen (gemessen 24.10.: .htaccess-Ampeln hinter „…“ abgeschnitten) */
.m-web .fen-block.fuellt > .tbl-box { flex: 1 1 auto; min-height: 0; }
/* Gestalten 29.10. (Website übernehmen › Gestalten): Analyse in drei Kästen, Variantenkarten nebeneinander mit skalierter iframe-Vorschau (1440 px Seite → Kartenbreite), Vorschlagsliste = fen-liste */
.ts-dlg-box .wc-ge { --wc-ge-skala: .25; --wc-ge-seite: 400%; --wc-ge-muster: 18px; overflow: auto; }
.ts-dlg-box .wc-ge-inhalt { display: flex; flex-direction: column; gap: var(--ds-s); min-height: 0; }
/* §4082 Website-Assistent mit Reitern (Übernahme · Analyse · Varianten · Vorschläge · Bilder): der aktive Reiter füllt die feste Fensterhöhe, nur er scrollt bei Bedarf */
.ts-dlg-box .ue-fen { display: flex; flex-direction: column; gap: var(--ts-kachel-gap); min-height: 0; height: 100%; }
.ts-dlg-box .ue-fen > .ue-tab:not([hidden]) { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: var(--ts-kachel-gap); overflow: auto; }
.ts-dlg-box .ue-fen > .ue-tab[data-t="u"] > .fen-block.fuellt { flex: 1 1 auto; min-height: 0; }
.ts-dlg-box .wc-ge-analyse { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--ds-s); }
.ts-dlg-box .wc-ge-kasten { border: var(--ds-rahmen) solid var(--ts-line); border-radius: var(--ds-radius); padding: var(--ds-xs) var(--ds-s); min-width: 0; font-size: var(--ds-fs-hinweis); }
.ts-dlg-box .wc-ge-t { font-weight: 700; color: var(--ts-ink); margin: 4px 0 2px; display: flex; gap: 6px; align-items: center; }
.ts-dlg-box .wc-ge-dl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 2px 8px; margin: 0; } .ts-dlg-box .wc-ge-dl dt { color: var(--ts-dim); } .ts-dlg-box .wc-ge-dl dd { margin: 0; overflow-wrap: anywhere; }
.ts-dlg-box .wc-ge-ul { margin: 0; padding-left: 16px; }
/* §4084 Vorschau-Helligkeit (Reiter Varianten): Beschriftung + feste Auswahl links, Kopf der Reiterfläche */
.ts-dlg-box .wc-ge-leiste { --wc-ge-leiste-feld: 160px; display: flex; gap: var(--ds-s); align-items: center; flex: 0 0 auto; }
.ts-dlg-box .wc-ge-leiste .v { width: var(--wc-ge-leiste-feld); flex: 0 0 var(--wc-ge-leiste-feld); }
.ts-dlg-box .wc-ge-farben { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.ts-dlg-box .wc-ge-muster { display: inline-flex; gap: 4px; align-items: center; } .ts-dlg-box .wc-ge-muster svg { width: var(--wc-ge-muster); height: var(--wc-ge-muster); border: var(--ds-rahmen) solid var(--ts-line); border-radius: 4px; }
.ts-dlg-box .wc-ge-varianten { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: var(--ds-s); }
.ts-dlg-box .wc-ge-karte { border: var(--ds-rahmen) solid var(--ts-line); border-radius: var(--ds-radius); padding: var(--ds-xs); display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.ts-dlg-box .wc-ge-karte.sel { box-shadow: inset 0 0 0 2px var(--ts-akzent); border-color: var(--ts-akzent); }
.ts-dlg-box .wc-ge-kopf { display: flex; gap: 6px; align-items: center; cursor: pointer; min-width: 0; } .ts-dlg-box .wc-ge-rolle { margin-left: auto; color: var(--ts-akzent-dark); font-weight: 700; font-size: var(--ds-fs-hinweis); }
.ts-dlg-box .wc-ge-rahmen { position: relative; aspect-ratio: 4 / 3; overflow: hidden; border: var(--ds-rahmen) solid var(--ts-line); border-radius: 4px; background: var(--ts-flaeche); }
.ts-dlg-box .wc-ge-rahmen iframe { position: absolute; left: 0; top: 0; width: var(--wc-ge-seite); height: var(--wc-ge-seite); border: 0; transform: scale(var(--wc-ge-skala)); transform-origin: 0 0; pointer-events: none; background: var(--ts-panel-bg); }
.ts-dlg-box .wc-ge-text { margin: 0; font-size: var(--ds-fs-hinweis); color: var(--ts-dim); }
.ts-dlg-box .wc-ge-fuss { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; font-size: var(--ds-fs-hinweis); }
.ts-dlg-box .wc-ge .tc-sprung { color: inherit; text-decoration: none; cursor: pointer; }   /* §4230 */
.ts-dlg-box .wc-ge-vorschlaege { flex: 0 0 auto; max-height: none; }
/* Gestalten 30.10.: Bildvorschläge je Abschnitt (Motiv, Suchbegriffe DE/EN, Adobe-Stock-Vorschauen mit Wasserzeichen) */
.ts-dlg-box .wc-ge-bilder { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: var(--ds-s); }
.ts-dlg-box .wc-ge-bild { border: var(--ds-rahmen) solid var(--ts-line); border-radius: var(--ds-radius); padding: var(--ds-xs) var(--ds-s); font-size: var(--ds-fs-hinweis); min-width: 0; }
.ts-dlg-box .wc-ge-bild code { font-size: var(--ds-fs-hinweis); }
/* §3890 (Jörg 30.10.): Bildvorschlag-Kacheln mit festem Aufbau — Kopf 1 Zeile, Motiv 3 Zeilen, Suchlinks in einer umbrechenden Reihe; Höhe hängt nicht mehr vom Text ab */
.ts-dlg-box .wc-ge-bild { display: flex; flex-direction: column; gap: 4px; }
.ts-dlg-box .wc-ge-bkopf { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ts-dlg-box .wc-ge-motiv { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: var(--wc-ge-motiv-zeilen); line-clamp: var(--wc-ge-motiv-zeilen); overflow: hidden; min-height: calc(var(--wc-ge-motiv-zeilen) * 1.4em); line-height: 1.4; }
.ts-dlg-box .wc-ge-such { display: flex; flex-wrap: wrap; gap: 2px 10px; margin-top: auto; }
.ts-dlg-box .wc-ge { --wc-ge-motiv-zeilen: 3; --wc-ge-mini: 120px; }
.ts-dlg-box .wc-ge-galerie { display: flex; flex-wrap: wrap; gap: var(--ds-s); }
.ts-dlg-box .wc-ge-galerie figure { position: relative; margin: 0; width: var(--wc-ge-mini); }
.ts-dlg-box .wc-ge-galerie img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 4px; display: block; border: var(--ds-rahmen) solid var(--ts-line); }
.ts-dlg-box .wc-ge-galerie .obtn { position: absolute; top: 4px; right: 4px; width: var(--ts-btn-h-mini); height: var(--ts-btn-h-mini); padding: 0; justify-content: center; }
/* Schritt Bilder (29.10.2026, wc_bilder.js): Ablagefläche + Zuordnungsliste — Adobe Stock nur als Such-Link, keine Vorschaubilder von Adobe */
.ts-dlg-box .wc-ge-ablage { border: 2px dashed var(--ts-line); border-radius: var(--ds-radius); padding: var(--ds-s); text-align: center; color: var(--ts-dim); font-size: var(--ds-fs-hinweis); display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; align-items: center; min-height: var(--wc-ge-ablage-h); flex: 0 0 auto; }
/* §3889/§3892 (Jörg 30.10.): Rumpf als Spalte; darin drei Unterkacheln (.wc-ge-teil: Bildvorschläge · Bilder · Zuordnung), die sich die Höhe teilen
   und je einen eigenen Scrollbereich (.wc-ge-scroll) haben — viele Vorschläge/Bilder vergrößern das Fenster nicht. Im Assistenten (lange Spalte) gilt die Mindesthöhe. */
.ts-dlg-box .wc-ge { --wc-ge-ablage-h: 96px; --wc-ge-teil-min: 260px; display: flex; flex-direction: column; } .ts-dlg-box .wc-ge > .wc-ge-inhalt { flex: 1 1 auto; }
.ts-dlg-box .wc-ge-teil { display: flex; flex-direction: column; gap: var(--ds-xs); flex: 1 1 0; min-height: var(--wc-ge-teil-min); border: var(--ds-rahmen) solid var(--ts-line); border-radius: var(--ds-radius); padding: var(--ds-xs) var(--ds-s); }
.ts-dlg-box .wc-ge-teil > .wc-ge-t { flex: 0 0 auto; margin: 0; }
.ts-dlg-box .wc-ge-scroll { flex: 1 1 auto; min-height: 0; overflow: auto; }
/* §3893: Ablage-Kachel nimmt den freien Platz (Fläche füllt sie ganz), Voransicht-Kachel so hoch wie ihr Inhalt, höchstens --wc-ge-galerie-h, darüber scrollt sie */
.ts-dlg-box .wc-ge-teil-ablage { padding: 0; border: 0; } .ts-dlg-box .wc-ge-teil-ablage > .wc-ge-ablage { flex: 1 1 auto; }
.ts-dlg-box .wc-ge-teil-galerie { flex: 0 0 auto; min-height: 0; max-height: var(--wc-ge-galerie-h); }
.ts-dlg-box .wc-ge { --wc-ge-galerie-h: 260px; }
/* §3894 (Jörg 30.10.): Fenster „Bilder einsetzen“ (.wc-ge-fest) — die Hauptkachel scrollt NIE, nur die Kinderkacheln bei Bedarf:
   Bildvorschläge bis 2 Reihen ohne Scrollen (Kachelhöhe fest --wc-ge-bild-h), Voransicht 1 Reihe ohne Scrollen, Ablage bekommt den Rest. */
.ts-dlg-box .wc-ge-fest { --wc-ge-bild-h: 136px; overflow: hidden; }
.ts-dlg-box .wc-ge-fest .wc-ge-inhalt { flex: 1 1 auto; min-height: 0; overflow: hidden; }
.ts-dlg-box .wc-ge-fest .wc-ge-teil { min-height: 0; flex: 0 1 auto; }
.ts-dlg-box .wc-ge-fest .wc-ge-bild { height: var(--wc-ge-bild-h); overflow: hidden; }
.ts-dlg-box .wc-ge-fest .wc-ge-teil:first-child { flex: 0 0 auto; }   /* darf nicht schrumpfen — 2 Reihen immer ganz sichtbar (Jörg 30.10. 11:10) */
.ts-dlg-box .wc-ge-fest .wc-ge-teil:first-child .wc-ge-scroll { max-height: calc(2 * var(--wc-ge-bild-h) + var(--ds-s)); overflow-x: hidden; }
.ts-dlg-box .wc-ge-fest .wc-ge-bild { box-sizing: border-box; }   /* gemessen 30.10.: ohne border-box war die Karte 176 statt 168 px — 2. Reihe angeschnitten */
.ts-dlg-box .wc-ge-fest .wc-ge-teil-ablage { flex: 1 1 0; min-height: var(--wc-ge-ablage-h); }
.ts-dlg-box .wc-ge-fest .wc-ge-teil-galerie { flex: 0 0 auto; max-height: none; }
.ts-dlg-box .wc-ge-fest .wc-ge-teil-galerie .wc-ge-scroll { max-height: calc(var(--wc-ge-mini) * 3 / 4 + 2 * var(--ds-rahmen)); }
.ts-dlg-box .wc-ge-ablage.aktiv { border-color: var(--ts-akzent); background: var(--ts-flaeche); color: var(--ts-ink); }
.ts-dlg-box .wc-ge-ablage:focus-visible { border-color: var(--ts-ink); background: var(--ts-flaeche); color: var(--ts-ink); }   /* §698 Fokus nie in Akzentfarbe — die Akzentfarbe bleibt der gewählten Ablage (.aktiv) (§4252) */
.ts-dlg-box .wc-ge-zuordnung { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: var(--ds-s); }
.ts-dlg-box .wc-ge-zeile { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: var(--ds-s); border: var(--ds-rahmen) solid var(--ts-line); border-radius: var(--ds-radius); padding: var(--ds-xs); font-size: var(--ds-fs-hinweis); }
.ts-dlg-box .wc-ge-zeile img { width: 120px; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 4px; display: block; }
.ts-dlg-box .wc-ge-zinfo { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.ts-dlg-box .wc-ge-art { color: var(--ts-akzent-dark); font-weight: 700; }

/* §3720 Kopier-Hilfsfeld (Zwischenablage ohne Clipboard-API): außerhalb des Bildes, aber auswählbar — display:none ließe sich nicht kopieren */
.ts-unsichtbar { position: fixed; left: -10000px; top: 0; width: 1px; height: 1px; opacity: 0; }

/* ▸§3773 VERSIONEN (module/versionen.php): Filterkachel auf Inhaltshoehe, Versionsliste und Einzelheiten teilen den Rest (2:1), Fuellzeilen; Versionsnummer im Seitenkopf */
.m-versionen .ve-main { display:grid; grid-template-columns: minmax(0,1fr); grid-template-rows: auto minmax(0,2fr) minmax(0,1fr); gap: var(--ts-kachel-gap); min-width:0; min-height:0; }
.m-versionen .ve-main > .fil-sec { min-height:0; margin-bottom:0; display:flex; flex-direction:column; }
.m-versionen .ve-main > .fil-sec:not(.lbl-auto) > .fil-sec-body { flex:1 1 auto; min-height:0; display:flex; flex-direction:column; }
.m-versionen .ve-main > .fil-sec.lbl-auto .fz { max-width: 480px; }
/* §3916 Einzelheiten = Kurzbetreff + ausführliche Beschreibung (Absätze wie geschrieben); Liste und Einzelheiten gleich hoch */
.m-versionen .ve-main { grid-template-rows: auto minmax(0,1fr) minmax(0,1fr); }
.m-versionen .ve-text { padding: var(--ts-kachel-pad); white-space: pre-wrap; word-break: break-word; font-size: var(--ds-fs-text); line-height: 1.5; color: var(--ts-text); }
.m-versionen .ve-text .ve-kurz { font-weight: 600; color: var(--ts-akzent); margin-bottom: var(--ts-kachel-pad); }
.hd-version { margin-left: 8px; font-size: var(--ds-fs-hinweis); font-weight: 500; opacity: .8; text-decoration: none; color: inherit; }
.hd-version:hover { opacity: 1; text-decoration: underline; }
/* §3935 (Jörg 30.10. 23:39: Farbe fehlte — die Regel lag in @layer module und verlor gegen eine spätere Schicht) Einnahmen grün, Ausgaben rot,
   Saldo fett grün/rot (§3936: Kennzeichen links bleiben neutral wie im Kassenabschluss); ohne Schicht, damit sie gewinnt */
.m-monatsabschluss .ka-zahlen div.v.ro.ka-pos { color: var(--ts-ok); -webkit-text-fill-color: var(--ts-ok); }
.m-monatsabschluss .ka-zahlen div.v.ro.ka-neg { color: var(--ts-red); -webkit-text-fill-color: var(--ts-red); }
.m-monatsabschluss .ka-zahlen #bel_saldo { font-weight: 700; }
/* §3938 Summen: Beträge links brauchen mehr Breite als die Anzahlen rechts (11.297,86 / -22.721,59 wurden abgeschnitten, Messung 1690 px) */
.m-monatsabschluss .ka-zahlen .best-grid.ka-kasse2 { grid-template-columns: max-content minmax(0, 2fr) max-content minmax(0, 1fr); }   /* §4047 Saldo -22.721,59 brauchte 95 px (1.6fr gab 92) */
/* §3939 Zahlungsverkehr (Platzanalyse Jörg 31.10.): eine Filterzeile, Auswahlfelder in Inhaltsbreite (Zustand wurde abgeschnitten), Suche nimmt den Rest */
.m-zahlungsverkehr .bk-filter select.v { width: auto; flex: 0 0 auto; }
/* Auftraggeber breiter (Namen wurden abgeschnitten) */
.m-zahlungsverkehr .bk-tab th.sp-kontakt { width: var(--ts-sp-txt-breit); }
/* Beträge wie im Monatsabschluss: + grün, − rot */
.m-zahlungsverkehr .bk-tab td.sp-geld.pos { color: var(--ts-ok); }
/* Gruppenüberschriften nur in der Maske, nicht in der Dialog-Fusszeile des Monatsabschlusses */
.ts-dlg .bk-nur-maske { display: none; }
/* §3942/§3943 Zahlungsverkehr (Jörg 31.10. 00:42/00:46): keine Trennlinien; Statusbereich unter der Tabelle mittig — Zeile 1 markierte Zeile · Zählung · Summen,
   Zeile 2 die Zeichen MIT Text (nur Symbole waren nicht verständlich); Abstand zwischen Filterzeile und Tabelle wie in den anderen Masken */
.m-zahlungsverkehr .dlg-status, .m-zahlungsverkehr .bk-fuss3 { border-top: 0; border-bottom: 0; background: transparent; }
.m-zahlungsverkehr .bk-filter.bk-konto { margin-bottom: var(--ds-m); }
.m-zahlungsverkehr .bk-fuss3 { display: flex; flex-direction: column; align-items: center; gap: 4px; padding-top: var(--ds-s); }
.m-zahlungsverkehr .bk-fuss3 .bk-reihe-status { flex-direction: row; flex-wrap: wrap; justify-content: center; align-items: baseline; column-gap: var(--ds-l); }
.m-zahlungsverkehr .bk-fuss3 .bk-reihe-status .dlg-status { padding: 0; }
.m-zahlungsverkehr .bk-fuss3 #bk_gewaehlt { font-weight: 600; }
.m-zahlungsverkehr .bk-fuss3 #bk_konto_st { display: none; }   /* Abrufstand steht im Tooltip von „Konten abrufen“ */
.m-zahlungsverkehr .bk-fuss3 .bk-reihe-legende { margin-top: 0; display: flex; flex-wrap: wrap; justify-content: center; column-gap: 14px; }
/* §3945 Belege nach Maskenregeln §3944 (M10): Status unter der Liste mittig — Summe in Zeile 1, Farblegende in Zeile 2 (beide mittig) */
/* §3947 Belege UND Verträge (beide .bhk-liste): EINE mittige Zeile, bricht bei Bedarf mittig um; alle Teile gleiche Schrift (13 px, keine Sonderfarbe) */
.tspro-ui .bhk-liste .bhk-summe { flex-direction: row; flex-wrap: wrap; justify-content: center; align-items: center; column-gap: var(--ds-l); row-gap: 4px; }
.tspro-ui .bhk-liste .bhk-summe .pos-leg, .tspro-ui .bhk-liste .bhk-summe-2 { margin-left: 0; }
.tspro-ui .bhk-liste .bhk-summe-2 b { color: inherit; }
/* PLZ / Ort / Land in einer Zeile, Land kurz */
.bhk-paar .bhk-land { flex: 0 0 var(--ts-fb-s); }
/* §3949 (Bild Jörg 01:24): Summe stand tiefer als die Legende (Grundlinie vs. Farbkästchen) — mittig ausgerichtet; Kästchen „nur offene“ ohne Fremdabstände auf Höhe des Suchfelds */
/* §3950 gemessen: Zeile 36 px hoch, Suchfeld oben (y 52, 28 px), Kästchen mittig in 36 px → 4 px tiefer. Kästchen jetzt so hoch wie das Suchfeld und oben bündig */
.bhk-filter { align-items: flex-start; }
.bhk-filter .bhk-offen-f { margin: 0; height: var(--ts-feld-h); }
.bhk-filter .bhk-offen-f > input { margin: 0; }
/* §3951 Warenbedarf (Jörg 31.10.): Filterknöpfe gleich breit; Spalten Anz.opt/Anz.min 72 px (Kopf wurde abgeschnitten), Termin 112 px (Datum + Kalender) */
.wb-wrap .fbtn { width: 120px; justify-content: center; text-align: center; }
/* §3951 Beschaffung: Summen der Positionen im Kachelkopf (wie „Gezählt“ im Kassenabschluss) — normale Kopfschrift, Werte fett, keine Feldkästen */
.tspro-ui .fil-sec-head .be-sum.be-sum-kopf { display: inline-flex; align-items: baseline; gap: var(--ds-l); margin: 0 0 0 var(--ds-l); padding: 0; background: transparent; border: 0; font-size: var(--ds-fs-text); font-weight: 400; color: inherit; }
.tspro-ui .fil-sec-head .be-sum.be-sum-kopf b { font-weight: 400; }
.tspro-ui .fil-sec-head .be-sum.be-sum-kopf .val { background: transparent; border: 0; padding: 0; min-width: 0; color: inherit; font-weight: 700; display: inline; }
/* Wareneingang Beträge: Beschriftung rechtsbündig an den Feldern, Zahlenfelder höchstens 140 px (wie alle Feldkacheln) */
.m-wareneingang .be-betr { grid-template-columns: max-content minmax(0, 1fr) max-content minmax(0, 1fr); column-gap: 8px; row-gap: var(--fz-zeilen-gap); align-items: center; }   /* §3953 zwei Spalten */
.m-wareneingang .be-betr .bv { height: var(--ts-feld-h); box-sizing: border-box; min-width: 0; }
.m-wareneingang .be-betr .bl { text-align: left; white-space: nowrap; }   /* M5 §3991 */
/* §3951 Warenrücksendung Austausch: Zeilenabstand wie alle Feldkacheln (war ~41 px Raster durch Feld-Ränder + 6 px) */
.wr-sub { row-gap: var(--fz-zeilen-gap); }
.wr-sub > .fz { margin: 0; }
/* §3952 Warenrücksendung obere Reihe: drei Kacheln gleicher Höhe (je 5 Zeilen), Rücksendung und Versand gleich breit, Austausch (zwei Feldspalten) breiter */
.m-warenruecksendung .be-top { display: flex; gap: var(--ts-kachel-gap); align-items: stretch; }
.m-warenruecksendung .be-top > .fil-sec { flex: 1 1 0; min-width: 0; margin: 0; }
.m-warenruecksendung .be-top > .fil-sec.wr-aus { flex: 1.6 1 0; }
.m-warenruecksendung .wr-vers textarea.tv { height: calc(3 * var(--ts-feld-h) + 2 * var(--fz-zeilen-gap)); min-height: 0; }
.m-warenruecksendung .wr-sub { grid-template-columns: max-content minmax(0,1fr) max-content minmax(0,1fr); column-gap: 8px; row-gap: var(--fz-zeilen-gap); align-items: center; align-content: start; }
.m-warenruecksendung .wr-sub > .fz { display: contents; }
.m-warenruecksendung .wr-sub > .fz > label { text-align: left; white-space: nowrap; }
.m-warenruecksendung .wr-sub > .fz:nth-child(2n+1) > :last-child:not(label) { margin-right: 10px; }   /* §4047 Paarabstand am Feld statt Einzug der Beschriftung (M5) */
/* §3953 Wareneingang obere Reihe: drei Kacheln gleicher Höhe (7 Zeilen), Beträge zweispaltig breiter */
.m-wareneingang .be-top { display: flex; gap: var(--ts-kachel-gap); align-items: stretch; }
.m-wareneingang .be-top > .fil-sec { flex: 1 1 0; min-width: 0; margin: 0; }
.m-wareneingang .be-top > .fil-sec.we-betr { flex: 1.4 1 0; }
/* §3953 Bestellwesen obere Reihe: drei Kacheln gleicher Höhe (5 Zeilen) */
.m-bestellung .be-top { display: flex; gap: var(--ts-kachel-gap); align-items: stretch; }
.m-bestellung .be-top > .fil-sec { flex: 1 1 0; min-width: 0; margin: 0; }
/* §3954 Wareneingang Beträge: Kästchen MwSt.-frei in normaler Kästchengröße links im Feldplatz (vorher als 28 px hoher Balken gestreckt);
   Archiv-Dokument linksbündig in normaler Schriftstärke (Verweis bleibt Akzentfarbe wie jeder Verweis) */
.m-wareneingang .be-betr input[type="checkbox"].bv { width: var(--ds-checkbox); height: var(--ds-checkbox); justify-self: start; padding: 0; margin: 0; }
.m-wareneingang .be-betr #f_ecodoc { text-align: left; }
/* §3956 Angebot obere Reihe (M12): vier Kacheln gleicher Höhe, höchstens sieben Zeilen — Kopf · Konditionen · Druck/Ausgang · Beträge */
.m-angebot .be-top { display: flex; gap: var(--ts-kachel-gap); align-items: stretch; }
.m-angebot .be-top > .fil-sec { min-width: 0; margin: 0; }
.m-angebot .be-top > .an-kopf { flex: 1 1 0; }
.m-angebot .be-top > .an-kond { flex: 0 0 auto; }\n   /* §3961 Konditionen und Beträge so breit wie ihr Inhalt, der Kopf nimmt den Rest */
/* Druck/Ausgang zweispaltig: links Druckoptionen, rechts Ausgang — Zeilen in Feldhöhe */
/* Kästchen in Konditionen: normale Kästchengröße, links im Feldplatz (M17) */
.m-angebot .bv-ck { display: flex; align-items: center; height: var(--ts-feld-h); }
/* §3964 entfernt: eigene Kästchenregel — es gilt das Hausmuster .ang-da label.ck */
/* §3956 Schrift und Raster wie alle Feldkacheln (§3948): 12 px statt 13,5 px, Zeilenabstand 7 px, Felder 28 px */
.m-angebot :is(.ang-da, .ang-betr) { font-size: var(--ds-fs-text); }
.m-angebot .ang-betr { row-gap: var(--fz-zeilen-gap); column-gap: 8px; }
.m-angebot .ang-betr .bv { height: var(--ts-feld-h); box-sizing: border-box; }
/* §3957 Auftrag/Rechnung (M12): Kopf sieben Zeilen; Beträge und Druck in Hausschrift 12 px, Zeilenabstand 7 px, Felder 28 px (wie §3956 Angebot) */
:is(.m-auftrag, .m-rechnung) .ang-betr { font-size: var(--ds-fs-text); row-gap: var(--fz-zeilen-gap); column-gap: 8px; }
:is(.m-auftrag, .m-rechnung) .ang-betr .bv { height: var(--ts-feld-h); box-sizing: border-box; }
.m-auftrag .ts-h { display: none; }
/* Rechnung: Kennzeichen Storno + Nettorechnung nebeneinander, normale Kästchen (M17) */
.m-rechnung .ck-paar { display: flex; align-items: center; gap: var(--ds-l); height: var(--ts-feld-h); }
/* §3964 entfernt: eigene Kästchenregel — es gilt das Hausmuster .ang-da label.ck */
/* §3964 entfernt: eigene Kästchenregel — es gilt das Hausmuster .ang-da label.ck */
/* Wartungsverträge (Jörg 31.10.): Unterkanten der Kacheln Positionen und Geräte bündig */
.m-wartungsvertraege .wv-unten > .fil-sec { margin-bottom: 0; }
/* §3958 (Jörg 31.10. 02:10) Verkauf wie die Artikelmaske (K-381): Beschriftung LINKSBÜNDIG in einer gemessenen Spalte (max-content), Felder nutzen die volle Restbreite —
   vorher feste 150/190-px-Beschriftungsspalte rechtsbündig, links blieb Leerraum. Gilt für alle oberen Kacheln von Angebot, Auftrag, Rechnung, Wartungsverträgen. */
:is(.m-angebot, .m-auftrag, .m-rechnung, .m-wartungsvertraege) .be-top > .fil-sec > .fil-sec-body:has(> .fz) { display: grid; grid-template-columns: max-content minmax(0, 1fr); column-gap: 8px; row-gap: var(--fz-zeilen-gap); align-content: start; }
:is(.m-angebot, .m-auftrag, .m-rechnung, .m-wartungsvertraege) .be-top > .fil-sec.fz-2sp > .fil-sec-body { grid-template-columns: max-content minmax(0, 1fr) max-content minmax(0, 1fr); column-gap: 8px; }
:is(.m-angebot, .m-auftrag, .m-rechnung, .m-wartungsvertraege) .be-top > .fil-sec > .fil-sec-body > .fz { display: contents; }
:is(.m-angebot, .m-auftrag, .m-rechnung, .m-wartungsvertraege) .be-top > .fil-sec > .fil-sec-body > .fz > label { text-align: left; }
:is(.m-angebot, .m-auftrag, .m-rechnung, .m-wartungsvertraege) .be-top > .fil-sec.fz-2sp > .fil-sec-body > .fz:nth-child(2n+1 of .fz:not(.fz-voll)) > :last-child:not(label) { margin-right: 8px; }   /* §4047 Paarabstand am Feld statt Einzug (M5) */
:is(.m-angebot, .m-auftrag, .m-rechnung, .m-wartungsvertraege) .be-top > .fil-sec.fz-2sp > .fil-sec-body > .fz.fz-voll > :last-child { grid-column: 2 / -1; }
:is(.m-angebot, .m-auftrag, .m-rechnung, .m-wartungsvertraege) .be-top > .fil-sec > .fil-sec-body:has(> .fz) > :not(.fz):not(textarea[hidden]) { grid-column: 1 / -1; }
:is(.m-angebot, .m-auftrag, .m-rechnung) .ang-betr .bl { text-align: left; }
/* §3959 Beschriftungen mittig auf Feldhöhe (das Gitter aus §3958 setzte sie oben) */
:is(.m-angebot, .m-auftrag, .m-rechnung, .m-wartungsvertraege) .be-top > .fil-sec > .fil-sec-body:has(> .fz) { align-items: center; }
/* Angebot: Druckoptionen als eine Zeile Kästchen in den Konditionen */
.m-angebot .an-druckopt { display: grid; grid-template-columns: repeat(2, max-content); align-items: center; column-gap: 14px; row-gap: 4px; height: auto; min-height: var(--ts-feld-h); }   /* §3960 2×2 statt umbrechender Reihe */
/* §3964 entfernt: eigene Kästchenregel — es gilt das Hausmuster .ang-da label.ck */
/* §3964 entfernt: eigene Kästchenregel — es gilt das Hausmuster .ang-da label.ck */
.m-angebot .ang-betr { align-items: center; }
/* §3960 Auswahlfelder in den Beträge-/Konditionen-Kacheln linksbündig (Text stand rechts wie eine Zahl) */
:is(.m-angebot, .m-auftrag, .m-rechnung) .ang-betr select.bv { text-align: left; }
/* §3960 Wartungsverträge: mehrzeilige Felder (.fz-ta) gehören ins selbe Raster — vorher stand die Beschriftung über dem Feld */
:is(.m-angebot, .m-auftrag, .m-rechnung, .m-wartungsvertraege) .be-top > .fil-sec > .fil-sec-body > .fz-ta { display: contents; }
:is(.m-angebot, .m-auftrag, .m-rechnung, .m-wartungsvertraege) .be-top > .fil-sec > .fil-sec-body > .fz-ta > label { text-align: left; align-self: start; padding-top: 6px; }
:is(.m-angebot, .m-auftrag, .m-rechnung, .m-wartungsvertraege) .be-top > .fil-sec > .fil-sec-body:has(> .fz) > :is(.fz-ta) { grid-column: auto; }
/* §3960 Kästchen mit Beschriftung in Filterleisten (z. B. Mahnwesen „nur überfällige“, „auch bezahlte“): nie umbrechen, Kästchen und Text auf einer Höhe */
label.ts-13:has(> input[type="checkbox"]) { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; font-size: var(--ds-fs-text); }
:is(.m-angebot, .m-auftrag, .m-rechnung, .m-wartungsvertraege) .be-top > .fil-sec.fz-2sp > .fil-sec-body > .fz-ta > :last-child { grid-column: 2 / -1; }
/* §3961 (Jörg 31.10. 02:22) FELDBREITE NACH INHALT (K-381 Punkt 4) in den Verkaufskacheln — statt alles über die volle Kachelbreite:
   Beträge/Prozente/Daten feste Leiterbreite, Auswahlfelder 220 px, Freitext fliesst; Beschriftungen brechen nie um */

:is(.m-angebot, .m-auftrag, .m-rechnung) .ang-betr .bl { white-space: nowrap; }
.m-angebot .an-kond .ang-betr > .bv:not(select) { width: var(--fb-120); }




:is(.m-angebot, .m-auftrag, .m-rechnung) .be-top > .fil-sec > .fil-sec-body > .fz > label { white-space: nowrap; }
/* §3961 Auftrag/Rechnung: Beträge-Kachel so breit wie ihr Inhalt, Kopf und mittlere Kachel teilen den Rest */
:is(.m-auftrag, .m-rechnung) .be-top { display: flex; gap: var(--ts-kachel-gap); align-items: stretch; }
:is(.m-auftrag, .m-rechnung) .be-top > .fil-sec { min-width: 0; margin: 0; flex: 1 1 0; }
:is(.m-auftrag, .m-rechnung) .be-top > .fil-sec.fz-2sp { flex: 1.7 1 0; }
/* §3962 Angebot Konditionen: Druck-Kästchen rechts neben Skonto/Rabatt/Preis gültig bis/Angenommen (Zeilen 1–4), Zahlungsart und Ausgang darunter über die Breite */



/* §3962 EIN Aussehen für jeden Verweis (Inventur: tsp-link = --ts-link unterstrichen in Tabellen; eco-doclink/bhk-ecolink = Akzent fett, in Lesefeldern grau überschrieben):
   alle Verweise auf Belege und Archivdokumente wie tsp-link — Linkfarbe, unterstrichen, normale Schrift, überall erkennbar anklickbar */
a.eco-doclink, a.bhk-ecolink { color: inherit; -webkit-text-fill-color: currentColor; text-decoration: none; font-weight: 400; cursor: pointer; }   /* §4191 stiller Sprung statt Linkfarbe */
/* §3963 Angebot: Beträge-Kachel feste Teilung wie vor §3961 (Felder im Blocksatz, Paare wie gehabt); Konditionen = Inhaltsbreite aus zwei Blöcken */
.m-angebot .be-top > .an-betr { flex: 0.75 1 0; }
.m-angebot .an-kond .kd-oben { display: flex; gap: var(--ds-l); align-items: start; margin-bottom: var(--fz-zeilen-gap); }
.m-angebot .an-kond .ang-betr { grid-template-columns: max-content minmax(0, 1fr); }
.m-angebot .an-kond .kd-felder .bv { width: var(--fb-120); }
.m-angebot .an-kond .kd-auswahl select.bv { width: 100%; }
.m-angebot .an-kond .an-druckopt { display: grid; grid-template-columns: max-content; grid-auto-rows: var(--ts-feld-h); row-gap: var(--fz-zeilen-gap); align-items: center; }
/* §3964 (Jörg 31.10. 02:32: Kästchen nicht aus dem Hausmuster) — Druckoptionen, Angenommen und Rechnung-Kennzeichen nutzen jetzt das vorhandene Muster .ang-da label.ck
   (§1045, Zustände §700); hier nur noch die Anordnung und die Hausschrift */
:is(.m-angebot, .m-rechnung) .ang-da { font-size: var(--ds-fs-text); }
.m-rechnung .ang-da.ck-paar { display: flex; align-items: center; gap: var(--ds-l); height: var(--ts-feld-h); }
/* §3965 Wartungsverträge obere Reihe (M12): Kopf 6, Zahlung/SEPA 5, Abrechnung 5 Zeilen (vorher 8/8/10) */
.m-wartungsvertraege .be-top { display: flex; gap: var(--ts-kachel-gap); align-items: stretch; }
.m-wartungsvertraege .be-top > .fil-sec { min-width: 0; margin: 0; flex: 1 1 0; }
.m-wartungsvertraege .be-top > .fil-sec.fz-2sp:not(.wv-zahl) { flex: 1.35 1 0; }
.m-wartungsvertraege .be-top > .fil-sec.wv-zahl { flex: 1.25 1 0; }
.m-wartungsvertraege .be-top > .fil-sec:has(.wv-betr2) { flex: 1.1 1 0; }   /* §3966 Mindestbreiten: lange Auswahlfelder über die volle Zeile, Paare nur für kurze Werte */
.m-wartungsvertraege .wv-betr.wv-betr2 { display: grid; grid-template-columns: max-content minmax(0, 1fr) max-content minmax(0, 1fr); column-gap: 8px; row-gap: var(--fz-zeilen-gap); align-items: center; font-size: var(--ds-fs-text); }
.m-wartungsvertraege .wv-betr.wv-betr2 .bl { white-space: nowrap; text-align: left; }
.m-wartungsvertraege .wv-betr.wv-betr2 .bv { height: var(--ts-feld-h); box-sizing: border-box; min-width: 0; }
.m-wartungsvertraege .wv-betr.wv-betr2 .datepick { min-width: 0; }
/* §3967 Wartungsverträge Abrechnung: Nächste/Letzte Rechnung über die volle Zeile */
.m-wartungsvertraege .wv-betr2 .wv-voll { grid-column: 2 / -1; }

/* ═══ §3970 Reparatur: drei Kacheln oben (Annahme · Gerät · Bearbeitung), Feldpaare, darunter Fehler/Bemerkungen bis unten ═══ */
.m-reparatur .be-main { display: flex; flex-direction: column; gap: var(--ts-kachel-gap); min-height: 0; }
.m-reparatur .be-main > .fil-sec { margin: 0; }
.m-reparatur .be-layout { align-items: stretch; }   /* alte Modulregel align-items:start liess die Spalte nicht bis unten laufen */
:is(.m-reparatur, .m-rma) .rp-paar { display: grid; grid-template-columns: max-content minmax(0,1fr) max-content minmax(0,1fr); column-gap: 8px; row-gap: var(--fz-zeilen-gap); align-items: center; align-content: start; }
:is(.m-reparatur, .m-rma) .rp-paar > .fz { display: contents; }
:is(.m-reparatur, .m-rma) .rp-paar > .fz > label { text-align: left; white-space: nowrap; }
:is(.m-reparatur, .m-rma) .rp-paar > .fz.rp-voll > :not(label) { grid-column: 2 / -1; min-width: 0; }
:is(.m-reparatur, .m-rma) .ang-da.ck-paar { display: flex; align-items: center; flex-wrap: wrap; column-gap: var(--ds-l); min-height: var(--ts-feld-h); font-size: var(--ds-fs-text); }
:is(.m-reparatur, .m-rma) .rp-unten { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
:is(.m-reparatur, .m-rma) .rp-unten > .fil-sec-body.rp-texte { flex: 1 1 auto; min-height: 0; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: var(--fz-zeilen-gap) var(--ts-kachel-gap); }
:is(.m-reparatur, .m-rma) .rp-texte > .fz-ta { display: flex; flex-direction: column; gap: 3px; margin: 0; min-height: 0; }
:is(.m-reparatur, .m-rma) .rp-texte > .fz-ta > label { text-align: left; padding: 0; }
/* §4018 FELDKNOPF (Jörg 31.10.: die Beschriftung IST der Knopf und heißt wie das Feld): Knopf steckt im <label> — bleibt so in jeder Raster-/Vollzeile in der Beschriftungsspalte,
   alle Feldknöpfe einer Spalte sind so breit wie die Spalte. Gesperrt = Ansichtsmodus (grau). Textfelder (fz-ta): einheitliche Mindestbreite. */
.tspro-ui :is(.fz, .fz-ta) > label > .kbtn { width: 100%; }
.tspro-ui .fz-ta > label:has(> .kbtn) { align-self: flex-start; min-width: var(--ts-feldknopf-ta-w); }
.tspro-ui { --ts-feldknopf-ta-w: 150px; }   /* §4018 Breite für „Fehlerbeschreibung“ (längste Beschriftung) — geschätzt, per pruefe layout zu belegen */
.tspro-ui .kunde-info > .v + .kbtn { width: auto; }   /* §4018 Knopf HINTER dem Wert (Übernehmen) in natürlicher Breite */
.m-rma .rp-paar .v.ro { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }   /* §4011 kein Umbruch im Wert, Volltext im title */   /* §4010 Textbaustein-Knopf als Feldbeschriftung, natürliche Breite */
:is(.m-reparatur, .m-rma) .rp-texte > .fz-ta > textarea { flex: 1 1 auto; min-height: 0; height: auto; resize: none; }
/* §3970 RMA: drei Spalten in Feldpaaren (rp-paar wie Reparatur), Fehler/Bemerkung bis unten */
.m-rma .be-layout { align-items: stretch; }
.m-rma .be-main { display: flex; flex-direction: column; gap: var(--ts-kachel-gap); min-height: 0; }
/* §3990: Reihen gleicher Höhe (M2): links ein Drittel; Artikel/Austausch über die rechten zwei Drittel; unten Kunde | Versand | Gutschrift (schmal) */
.m-rma .rma-cols { display: grid; gap: var(--ts-kachel-gap); align-items: stretch; }
.m-rma .rma-cols > .fil-sec { margin: 0; min-width: 0; }
.m-rma .rma-cols > .rma-breit { grid-column: 2 / -1; }
.m-rma .rp-paar.rp-eins { grid-template-columns: max-content minmax(0,1fr); }   /* §3991: Beschriftungsspalte = längste Beschriftung (max-content), kein fester Leerraum */
.m-rma .rma-cols { grid-template-columns: 1.15fr 1.25fr 0.6fr; }
.m-rma .rp-paar > .fz.rp-rest > label { display: none; }   /* §3990: Häkchen über Beschriftungs- und Feldspalte rechts */
.m-rma .rp-paar > .fz.rp-rest > :not(label) { grid-column: 3 / -1; min-width: 0; }
.m-rma .rp-unten { margin: 0; }
.m-rma .rp-unten > .fil-sec-body.rp-texte.rp-drei { grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 1fr; }   /* Spezifitaet ueber der gemeinsamen Zweierregel */
/* §3975 Reparatur: Geräteliste (je Stück SN + ProduktID); §4163: fünf Zeilen hoch (K-436 (2): kurze Tabelle nie füllend), Knöpfe in den Optionen (§3989) */
.m-reparatur .rp-geraete { display: flex; gap: var(--ds-l); align-items: flex-start; min-width: 0; flex: 0 0 auto; }
.m-reparatur .rp-geraete > .tbl-box { flex: 1 1 auto; min-width: 0; height: calc(var(--ts-tab-th-h) + 5 * var(--ts-tab-td-h) + 2px); overflow: auto; }
.m-reparatur #rp_geraete tbody tr.sel > td { background: var(--ds-auswahl); }
/* §3978 (Jörg 31.10.: Inbox ohne Auswahl-/Kalendersymbole) — die Prüffarben .eco-pf-* setzten `background:` (Kurzform) und
   löschten damit das Chevron der Auswahlfelder und das Kalendersymbol der Datumsfelder. Jetzt nur background-color (oben). */

/* §3980 ecoDMS › Inbox-Klassifizierung: 5 Spaltenpaare × 7 Zeilen (vorher 6 × 6) — breitere Felder, die 7. Zeile geht der oberen Hälfte (Liste/Vorschau) ab */
.m-ecodms .eco-r7{grid-row:7}

/* §3986 RMA: RMA-Lieferant wie Lieferant/Kunde — blaue Stammbezug-Beschriftung mit Info-Knopf; Beleg-Zeile mit 📎 */
.tspro-ui .fz:has(> .kunde-info > #f_rma_info) > label { color: var(--ts-akzent); font-weight: 700; }

/* ═══ M5 §3991 (Jörg 31.10. 12:42): Feldkacheln — Beschriftung LINKSBÜNDIG, Beschriftungsspalte = max-content der längsten Beschriftung
   DIESER Kachel (nie feste Pixelbreite). Der Eltern-Block einer Feldzeilenfolge wird EIN Gitter (Beschriftung | Feld), jede Zeile reicht es
   per subgrid durch — so fluchten die Felder und beginnen direkt nach dem Spaltenabstand. :where() = Spezifität 0: Module mit eigenem
   Gitter/eigenen Spalten (lbl-auto, rp-paar, wr-sub, fz-2sp, fen-form …) behalten ihres; .rp-texte (Textfelder nebeneinander) ausgenommen. Ohne @layer: geschichtete Flex-Regeln (z. B. .her-unten) ließen sonst .fz als subgrid ohne Gittereltern untereinander fallen. ═══ */
/* §4047 (Jörg 31.10. 19:21: Kassen-/Monatsabschluss-Bestand fiel von 4 auf 2 Spalten, Beschriftungen eingerückt): ungeschichtet schlug diese Vorgabe JEDES
   eigene Raster in @layer module/schweben/zustaende (Spezifität zählt erst innerhalb derselben Schicht). Jetzt eigene Schicht „raster“ zwischen bausteine und
   module: sie schlägt weiter die Flex-Bausteine (.her-unten), unterliegt aber jedem Modulraster (.best-grid.ka-kasse2, .er-form …). Prüfer: Lint „raster“. */
@layer raster {
:where(div:not(.rp-texte):has(> :is(.fz, .fz-ta, .es-row)), form:has(> :is(.fz, .fz-ta, .es-row))) { display: grid; grid-template-columns: max-content minmax(0, 1fr); column-gap: var(--ds-s); align-content: start; }
:where(div:not(.rp-texte):has(> :is(.fz, .fz-ta, .es-row)), form:has(> :is(.fz, .fz-ta, .es-row))) > :where(*) { grid-column: 1 / -1; min-width: 0; }
:where(div:not(.rp-texte):has(> :is(.fz, .fz-ta, .es-row)), form:has(> :is(.fz, .fz-ta, .es-row))) > :is(.fz, .fz-ta, .es-row) { grid-template-columns: subgrid; }
} /* Ende @layer raster */
/* M5: Hersteller-Kachel Herstellerinformation — Logo fest, Logo-Pfad, Text wächst bis unten (vorher flex:1 an der .fz) */
.her-unten .fil-sec-body:has(> .logo-box-gross) { display: grid; grid-template-rows: auto auto minmax(0, 1fr); }

/* §4055 Kundenmaske › Kachel Rufnummern/EMail gruppiert (Firmennummern oben, je Ansprechpartner Kopfzeile + eingerückte Nummern) und Ansprechpartner-Fenster (K-435). Fenster hängt am body → ohne .m-kunden-Scope, Präfix kd-ap-. */
#tel_tblbox tr.kd-ap-kopf td, #tel_tblbox tr.kd-ap-rueck td { font-weight: 600; color: var(--ts-akzent-dark); background: var(--ts-panel-bg); }
#tel_tblbox tr.kd-ap-rueck td { font-weight: 400; font-style: italic; }
#tel_tblbox tr.kd-ap-nr td.sp-kontakt { padding-left: var(--kd-ap-einzug); }
:root { --kd-ap-einzug: 22px; --kd-ap-links: 480px; --kd-ap-nr-h: 150px; }   /* links 480: Name (Rest) neben Funktion sp-typ + Debitor sp-kdnr ohne Abschnitt (Bildprüfung 31.10.) */
.kd-ap-fenster { display: flex; flex-direction: column; gap: 10px; min-height: 0; }
.kd-ap-split { display: grid; grid-template-columns: var(--kd-ap-links) minmax(0, 1fr); gap: 10px; flex: 1 1 auto; min-height: 0; align-items: stretch; }
.kd-ap-split > .fil-sec { display: flex; flex-direction: column; min-height: 0; }
.kd-ap-split > .fil-sec > .fil-sec-body { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.kd-ap-split > .fil-sec .tbl-box { flex: 1 1 auto; min-height: 0; }
.kd-ap-rechts { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.kd-ap-split td.sp-typ, .kd-ap-split td.sp-kdnr { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kd-ap-deb { display: flex; gap: 8px; align-items: center; min-width: 0; }
.kd-ap-deb input { flex: 1 1 auto; min-width: 0; }
#ap_nummern td input, #ap_nummern td select { width: 100%; height: var(--ds-feld); padding: 0 6px; box-sizing: border-box; font-size: 13px; }   /* §705 Zellenfeld ohne eigenen Rahmen/Radius — Rahmen kommt von der Zellregel (§4252) */
.kd-ap-hinweis { font-size: var(--ds-fs-hinweis); color: var(--ts-gedaempft); text-align: left; }
.kd-ap-fenster .opt-spacer { flex: 1; }
.kd-ap-fenster .dlg-fuss { justify-content: flex-start; }
.kd-ap-rechts .tbl-box { flex: 0 0 auto; height: var(--kd-ap-nr-h); }

/* §4059 (Jörg 31.10. 20:39) ZUORDNUNGSFENSTER Seriennummern/ProduktIDs (RMA) — Aufbau: Stand, Scanzeile, Vorschläge, Karten; Fenster so hoch wie der Inhalt,
   gescrollt wird nur die Kartenliste. §4061 (Jörg 20:52 „muss zum CSS der WaWi passen“): KEINE eigene Optik — Feld = Maskenfeld (input.v, --ds-feld,
   Schrift wie die Maske), Knöpfe = .obtn in Standardhöhe, Vorschläge = .obtn, Leerzustand = .js-leer, Karten nur Rahmen/Abstand aus den Panel-Variablen. */
.ts-ovl .ts-ma-box.pz-box { height: var(--dlg-h-mittel); max-height: 94vh; }   /* §4108 (Jörg 01.11.: „überhaupt keine dynamischen Fenster“): feste Stufe mittel 720×520 — nur die Kartenliste rollt (hebt §4059 „Größe zum Inhalt“ auf, erledigt Stand 1139) */
.ts-ovl .ts-ma-box > .ts-setup-form.pz-form { gap: var(--ds-m); }
.pz-form .pz-kopf { display: flex; justify-content: space-between; align-items: baseline; gap: var(--ds-l); font-size: 12px; color: var(--ts-gedaempft); min-width: 0; }
.pz-form .pz-artikel { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.pz-form .pz-stand { font-weight: 700; color: var(--ts-ink); white-space: nowrap; }
.pz-form .pz-stand.voll { color: var(--ts-akzent); }
.pz-form .pz-scan { display: flex; gap: var(--ds-s); align-items: center; }
.pz-form .pz-scan.pz-aktion { flex-wrap: wrap; }
.pz-form .pz-scan > input.v { flex: 1 1 auto; width: auto; min-width: 0; height: var(--ds-feld); box-sizing: border-box; }
.pz-form .pz-hinweis { font-size: 12px; color: var(--ts-gedaempft); }
.pz-form .pz-hinweis { flex: 1 1 auto; }
.pz-form .pz-abschn { font-size: 12px; font-weight: 700; color: var(--ts-ink); margin-top: var(--ds-s); }
.pz-form .pz-scroll { overflow-y: auto; min-height: 0; flex: 1 1 auto; }   /* §4108: Liste füllt das feste Fenster und rollt darin */
.pz-form > .dlg-fuss { flex: 0 0 auto; margin-top: 0; flex-wrap: nowrap; }   /* §4110 F11–F14: Fuß unter der Liste, Statuszeile (.dlg-hinweis, margin-right:auto Z. 559) links, Schließen rechts */
.pz-form .pz-liste { display: flex; flex-direction: column; gap: var(--ds-s); }
.pz-form .pz-karte { display: flex; align-items: center; gap: var(--ds-m); padding: var(--ds-s) var(--ds-m); border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); background: var(--ts-panel-bg); }
.pz-form .pz-text { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.pz-form .pz-nr { font-weight: 700; color: var(--ts-ink); }
.pz-form .pz-sub { font-size: 12px; color: var(--ts-gedaempft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ═══ §4072 PHASENLEISTE (Baustein, global unter .tspro-ui): waagerechte Stufen eines Vorgangs — Punkt mit Nummer, erledigt = Haken in Tinte,
   aktuell = Akzent mit Ring, Verbindungsstrich zwischen den Stufen. Markup: <ol class="ts-phasen"><li class="ts-phase [ok|jetzt]"><i class="ts-phase-punkt"></i>
   <span class="ts-phase-text"><b>Name</b><small class="ts-phase-zusatz">Datum · seit N Tagen</small></span></li>… + <div class="ts-phase-naechst">Nächster Schritt …</div>.
   Erster Einsatz RMA (module/rma.php, Stufen = RMA_Status); für Reparatur, Bestellung, Auftrag vorgesehen. ═══ */
.tspro-ui { --ts-phase-punkt: 24px; --ts-phase-strich: 2px; --ts-phase-ring: 3px; }
.tspro-ui .ts-phasen { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; flex: 1 1 auto; min-width: 0; counter-reset: phase; }
.tspro-ui .ts-phase { counter-increment: phase; display: flex; align-items: center; gap: var(--ds-s); flex: 1 1 0; min-width: 0; color: var(--ts-ink-muted); font-size: var(--ds-fs-text); font-weight: 600; }
.tspro-ui .ts-phase:last-child { flex: 0 0 auto; }
.tspro-ui .ts-phase:not(:last-child)::after { content: ''; flex: 1 1 auto; min-width: var(--ds-l); height: var(--ts-phase-strich); background: var(--ts-line); margin: 0 var(--ds-m); }
.tspro-ui .ts-phase.ok:not(:last-child)::after { background: var(--ts-sec-bg); }
.tspro-ui .ts-phase-punkt { flex: 0 0 var(--ts-phase-punkt); width: var(--ts-phase-punkt); height: var(--ts-phase-punkt); border-radius: 50%; box-sizing: border-box;
  border: var(--ts-phase-strich) solid var(--ts-line); background: var(--ts-panel-bg); color: var(--ts-ink-muted); font-style: normal; font-size: var(--ds-fs-hinweis); font-weight: 700;
  display: flex; align-items: center; justify-content: center; }
.tspro-ui .ts-phase-punkt::before { content: counter(phase); }
.tspro-ui .ts-phase.ok { color: var(--ts-ink); }
.tspro-ui .ts-phase.ok .ts-phase-punkt { background: var(--ts-sec-bg); border-color: var(--ts-sec-bg); color: var(--ts-sec-fg); }
.tspro-ui .ts-phase.ok .ts-phase-punkt::before { content: '\2713'; }
.tspro-ui .ts-phase.jetzt { color: var(--ts-akzent); }
.tspro-ui .ts-phase.jetzt .ts-phase-punkt { background: var(--ts-akzent); border-color: var(--ts-akzent); color: var(--ts-sec-fg); box-shadow: 0 0 0 var(--ts-phase-ring) var(--ts-meld-info-bd); }
.tspro-ui .ts-phase-text { display: flex; flex-direction: column; line-height: 1.2; min-width: 0; }
.tspro-ui .ts-phase-text > b { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tspro-ui .ts-phase-zusatz { font-weight: 400; font-size: var(--ds-fs-hinweis); color: var(--ts-ink-muted); white-space: nowrap; min-height: 1.2em; }
.tspro-ui .ts-phase-naechst:not([hidden]) { display: flex; align-items: center; flex: 0 0 auto; height: var(--ds-feld); box-sizing: border-box; padding: 0 var(--ds-m); border-radius: var(--ds-radius);
  background: var(--ts-meld-info-bg); color: var(--ts-meld-info-fg); border: 1px solid var(--ts-meld-info-bd); font-size: var(--ds-fs-text); font-weight: 700; white-space: nowrap; }

/* ═══ §4072 RMA „WaWi verfeinert“ (Jörg 31.10. 22:33) — ZUSCHALTBAR: Einstellung Design.RMA_Neu = 0 → alte Maske; fehlt/1 → .rma-neu (module/rma.php, else-Zweig).
   Kopf: Phasenleiste + Fakten über die ganze Breite; darunter links „Gerät und Fehler“ (Felder + drei Textfelder bis unten), rechts drei Kacheln
   (Weg zum Lieferanten · Ergebnis · Kunde). Feldraster bleibt rp-paar, Zwischentitel = Hausklasse ts-gruppe-titel. ═══ */
/* §4099 (Fable §4090 F, Jörg 01.11.): DREI Spalten gleicher Breite — Gerät und Fehler (links, volle Höhe) | Weg zum Lieferanten | Ergebnis,
   darunter Kunde über Spalte 2–3 (nur bei Kundenware, sonst gedimmt). Das Status-Feld im Kopf ist entfallen (Leiste = Wahrheit).
   Ziel: alles im Rahmen 1892×1010 (§4076), kein Seitenscroll — die be-layout füllt die Höhe, nur die Textfelder links wachsen. */
.m-rma.rma-neu { --rma-lbl-w: 142px; --rma-neu-cols: 1fr 1fr; --rma-ta-gross: 1.6; --rma-ta-klein: .5; --rma-fakt-w: var(--fb-110); --rma-fakt-datum-w: var(--fb-120); --rma-fakt-wahl-w: var(--fb-170); }
.m-rma.rma-neu .be-layout { flex: 1 1 auto; min-height: 0; }
.m-rma.rma-neu .be-main { min-height: 0; }
.m-rma.rma-neu .be-main > .fil-sec, .m-rma.rma-neu .rma-neu-cols > .fil-sec { margin-bottom: 0; }
/* Kopf */
.m-rma.rma-neu .rma-kopf { flex: 0 0 auto; }
.m-rma.rma-neu :is(.rma-kopf, .rma-geraet, .rma-weg, .rma-ergebnis, .rma-kunde) > .fil-sec-head { display: flex; align-items: center; gap: var(--ds-l); }   /* K-441 Kopfregel: jeder Kachelkopf mit Untertitel (Baustein .ts-status-txt §1380) */
.m-rma.rma-neu .fil-sec-head > .ts-status-txt { margin-left: auto; flex: 0 1 auto; min-width: 0; }   /* rechtsbündig; eigene Klasse rma-kopf-rechts entfallen (K-353) */
:is(.m-reparatur, .m-rma) .rp-hinweis { font-size: var(--ds-fs-hinweis); color: var(--ts-gedaempft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }   /* K-441 Feldhinweis (wer füllt, welcher Beleg) — in beiden Vorgangsmasken */
.m-rma.rma-neu .rma-kopf-body { display: flex; flex-direction: column; gap: var(--ds-m); }
.m-rma.rma-neu .rma-kopf-zeile { display: flex; align-items: center; gap: var(--ds-l); }
.m-rma.rma-neu .rma-fakten { display: flex; gap: var(--ds-m); align-items: flex-end; border-top: 1px solid var(--ts-panel-bd); padding-top: var(--ds-s); }
.m-rma.rma-neu .rma-fakten > .fz { display: flex; flex-direction: column; gap: 2px; margin: 0; flex: 0 0 var(--rma-fakt-w); width: var(--rma-fakt-w); min-width: 0; }
.m-rma.rma-neu .rma-fakten > .fz:has(> .datepick) { flex-basis: var(--rma-fakt-datum-w); width: var(--rma-fakt-datum-w); }
.m-rma.rma-neu .rma-fakten > .fz.rma-fakt-wahl { flex-basis: var(--rma-fakt-wahl-w); width: var(--rma-fakt-wahl-w); }
.m-rma.rma-neu .rma-fakten > .fz > label { font-size: var(--ds-fs-hinweis); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--ts-gedaempft); }
.m-rma.rma-neu .rma-fakten > .fz > .v, .m-rma.rma-neu .rma-fakten > .fz > .datepick, .m-rma.rma-neu .rma-fakten > .fz > select { width: 100%; min-width: 0; }
/* Spalten */
.m-rma.rma-neu .rma-neu-cols { display: grid; grid-template-columns: var(--rma-neu-cols); gap: var(--ts-kachel-gap); flex: 1 1 auto; min-height: 0; }   /* §4109: zurück zu zwei Spalten (Jörg) */
.m-rma.rma-neu .rma-geraet { display: flex; flex-direction: column; min-height: 0; }
.m-rma.rma-neu .rma-rechts { display: flex; flex-direction: column; gap: var(--ts-kachel-gap); min-height: 0; }
.m-rma.rma-neu .rma-rechts > .fil-sec { flex: 0 0 auto; margin-bottom: 0; }
.m-rma.rma-neu .rma-rechts > .rma-ergebnis { flex: 1 1 auto; min-height: 0; }
.m-rma.rma-neu .rma-kunde.ts-dim .fil-sec-body { opacity: .55; }
/* §4110 NEU-ASSISTENT (module/rma.php vorgangNeu, Skizze §4090 F, Jörg 01.11. 05:40): zentraler Dialog popup() Stufe mittel — Schrittliste = Baustein fen-baum/fen-li
   (Marke as-li-wo, sel = aktueller Schritt), Schrittkachel = fen-block, Statuszeile dlg-status im Fuß. Das frühere eigene Overlay (§4099/§4106, .rma-ass-box) ist weg:
   es lag außerhalb jeder Fensterregel (Leiste 124 px, 16-px-Schrift, Artikelauswahl dahinter — Bilder Jörg 05:22–05:37). Nur das, was der Dialog nicht von selbst hat: */
.je-such.vsuch-rma { --ts-sp-typ: 130px; }   /* §4110: Status-Spalte der RMA-Suche — „Beim Lieferanten“ misst 128 px, Grundwert 104 schnitt ab (Lint 01.11.) */
.ts-dlg-box :is(.rma-ass, .rep-ass, .ms-ass, .ad-ass) .fen-form { grid-template-columns: var(--fb-170) minmax(0, 1fr); }   /* §4163: Reparatur-Assistent rep-ass teilt die Regeln des RMA-Assistenten; §4298: ms-ass = Assistent „Microsoft-Mandant hinzufügen“ (technikCENTER), gleiche Bausteine */   /* §4122 (Messbild 01.11.): Beschriftungsspalte fest — bei max-content sprang die Feldkante je Schritt (Schritt 2: 639 px ohne / 594 px mit Artikel) */
.ts-dlg-box :is(.rma-ass, .rep-ass, .ms-ass) .fen-form > span { min-height: var(--ds-feld); display: block; line-height: var(--ds-feld); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }   /* Zusammenfassung: Wert einzeilig mit „…“ (Bild Jörg 05:37: Artikel über 4 Zeilen) */
.ts-dlg-box :is(.rma-ass, .rep-ass, .ms-ass) .dlg-fuss { justify-content: flex-start; position: static; }   /* Wareneingang-Wahl: Knöpfe links unter den Feldern */
.ts-dlg-box :is(.rma-ass, .rep-ass, .ms-ass) .dlg-scroll { min-height: 0; flex: 1 1 auto; overflow: auto; max-height: none; }   /* max-height: Grundregel Z. 3666 (340 px) deckelte das Gerät-Fenster F08 — die Tabelle füllt die Stufe (Bild 01.11.) */
.ts-dlg-box :is(.rma-ass, .rep-ass, .ms-ass) .dlg-scroll:has(> .tbl-box) { display: flex; flex-direction: column; overflow: hidden; }   /* §4127: ProduktID-Tabelle in Schritt 2 füllt den Rest des Fensters, nur die Tabelle rollt */
.ts-dlg-box :is(.rma-ass, .rep-ass, .ms-ass) .dlg-scroll > .tbl-box { flex: 1 1 auto; min-height: 0; }   /* Trefferliste füllt den Rest des festen Fensters */
.ts-dlg-box :is(.rma-ass, .rep-ass, .ms-ass) .fen-ck > label[for] { color: var(--ts-gedaempft); font-weight: 600; }   /* „Seriennummer“ neben Anzahl ist eine Feldbeschriftung, kein Haken-Text (Skizze: fett) */
/* §4163 Reparatur-Assistent: Fragenliste (Schritt 3) mit Eingabefeldern in den Zellen, Fehlerbeschreibung 96 px, Geräte-Tabelle (Schritt 2) mit Eingabefeldern */
.ts-dlg-box .rep-ass .ass-fragen { flex: 1 1 auto; min-height: 0; }   /* Bild 01.11.: 55 % ließ unten Leerraum und oben einen Scrollbalken — die Fragen füllen jetzt den Rest der Stufe, Zustand/Fehler darunter fest */
.ts-dlg-box .rep-ass .ass-fragen td, .ts-dlg-box .rep-ass #ass_gl td { padding-top: 2px; padding-bottom: 2px; height: auto; }
.ts-dlg-box .rep-ass .ass-fragen th.ass-q-frage, .ts-dlg-box .rep-ass .ass-fragen td.ass-q-frage { width: var(--rp-ass-frage-b); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ts-dlg-box .rep-ass .ass-fragen td > input.v { height: calc(var(--ds-feld) - 4px); width: 100%; min-width: 0; }   /* Geräte-Tabelle (#ass_gl) nutzt seit 01.11. zell-ein (K-417) */
.ts-dlg-box .rep-ass .ass-fragen .fen-ck { gap: var(--ds-m); flex-wrap: wrap; height: auto; min-height: calc(var(--ds-feld) - 4px); }   /* height:auto: Z. 2838 setzt feste Feldhöhe, die zweite Zeile („keine“ bei Beschädigungen) war unsichtbar */
.ts-dlg-box .rep-ass .ass-fragen .fen-ck > input.v { flex: 1 1 var(--fb-120); }
.ts-dlg-box .rep-ass .fen-form > textarea.ass-fehler { height: var(--rp-ass-fehler-h); resize: none; }
.ts-dlg-box .rep-ass .fen-form > textarea.ass-zustand { height: var(--fb-52); min-height: var(--fb-52); resize: none; font: inherit; }   /* §4046 Protokollfeld (Kopfzeile + Text) braucht zwei Zeilen — vorher einzeiliges input */
.ts-dlg-box .rep-ass .fen-form > .fen-ck > .v.fuellt { flex: 1 1 auto; min-width: 0; }
.ts-dlg-box .rep-ass .fen-form > label > .obtn { width: auto; align-self: start; }   /* Feldknopf in der Beschriftungsspalte (im Dialog gilt .ts-dlg .obtn, nicht .tspro-ui .kbtn) */
:is(.ts-dlg-box, .bc-main) .fen-ck > label > input[type=checkbox] { font: inherit; }   /* Lint „Schrift Arial“ an Haken in Dialogen (rma/rep-Assistent) */
.ts-dlg-box .rep-ass input[type=radio], .ts-dlg-box .rep-ass input[type=checkbox] { font: inherit; margin: 0 2px 0 0; }
.ts-dlg-box .rep-ass .ass-fragen .fen-ck > label { white-space: nowrap; }
/* §4138 ASSISTENTENFENSTER (Jörg 01.11. 13:45, Entwurf entwurf_assistenten.png 1:1): EIN Baustein für alle mehrschrittigen Assistenten (RMA-Neu, Artikel-Neu).
   Schrittliste als LINKE SPALTE 360 px mit Trennlinie, Inhalt rechts als Kachel (fen-block mit Titel = Schrittname), Fuß: Status links, Knöpfe rechts.
   Zeile zweizeilig: Name fett 14 px, darunter Hinweis bzw. Ergebnis grau 12 px. Marke = Kreis 26 px wie die Phasenleiste (aktuell Akzent, erledigt grün mit Haken, offen grau umrandet).
   Fenster fest Stufe gross (§4133). Spezifität über den Bausteinregeln fen-baum/fen-li (Z.2739–2771, (0,2,0)–(0,4,0)). */
:is(.ts-dlg-box, .mw.wz) .ass-fen { display: grid; grid-template-columns: 360px minmax(0, 1fr); gap: 16px; height: 100%; min-height: 0; align-items: stretch; }
:is(.ts-dlg-box, .mw.wz) .ass-fen > .fen-baum { display: flex; flex-direction: column; gap: 4px; padding: 4px 16px 0 0; border-right: 1px solid var(--ts-line); min-height: 0; overflow: auto; }
:is(.ts-dlg-box, .mw.wz) .ass-fen > .fen-baum > .fen-li { display: flex; align-items: flex-start; gap: 12px; padding: 10px; min-height: 0; border-radius: 6px; box-shadow: none; cursor: default; }
:is(.ts-dlg-box, .mw.wz) .ass-fen > .fen-baum > .fen-li.sel { background: var(--ts-flaeche); box-shadow: inset 3px 0 0 var(--ts-akzent); }
:is(.ts-dlg-box, .mw.wz) .ass-fen > .fen-baum > .fen-li:hover { background: transparent; }
:is(.ts-dlg-box, .mw.wz) .ass-fen > .fen-baum > .fen-li.sel:hover { background: var(--ts-flaeche); }
:is(.ts-dlg-box, .mw.wz) .ass-fen > .fen-baum > .fen-li > .as-li-wo { flex: 0 0 26px; width: 26px; height: 26px; min-width: 0; padding: 0; border-radius: 50%; border: 2px solid var(--ts-line); box-sizing: border-box; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; color: var(--ts-gedaempft); background: var(--ts-panel-bg); text-align: center; }
:is(.ts-dlg-box, .mw.wz) .ass-fen > .fen-baum > .fen-li.sel > .as-li-wo { background: var(--ts-akzent); border-color: var(--ts-akzent); color: var(--ts-sec-fg); }
:is(.ts-dlg-box, .mw.wz) .ass-fen > .fen-baum > .fen-li.ok > .as-li-wo { background: var(--ts-meld-ok-bg); border-color: var(--ts-ok); color: var(--ts-ok); }
:is(.ts-dlg-box, .mw.wz) .ass-fen > .fen-baum > .fen-li > .as-li-t { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; white-space: normal; overflow: visible; font-weight: 400; }
:is(.ts-dlg-box, .mw.wz) .ass-fen > .fen-baum > .fen-li > .as-li-t > b { font-size: 14px; font-weight: 700; color: var(--ts-ink); }
:is(.ts-dlg-box, .mw.wz) .ass-fen > .fen-baum > .fen-li > .as-li-t > span { font-size: 12px; color: var(--ts-gedaempft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
:is(.ts-dlg-box, .mw.wz) .ass-fen > .fen-baum > .fen-li.sel > .as-li-t > span { color: var(--ts-ink); }
:is(.ts-dlg-box, .mw.wz) .ass-fen > .fen-block { min-height: 0; min-width: 0; }
:is(.ts-dlg-box, .mw.wz) .ass-fen > .fen-block > .fen-block-t { font-size: 14px; }
.ts-dlg-box :is(.rma-ass, .rep-ass, .ms-ass, .hb-ass, .ad-ass).ass-fen > .dlg-status { grid-column: 1 / -1; }   /* §4323 .hb-ass Hyper-Backup-Assistent */   /* RMA: Statuszeile liegt im Rumpf, bis popup() sie in den Fuß nimmt — nie in der Spalte */
#m-wiz .mb2.w7 .fen-block > .w7-box { flex: 1 1 0; min-height: 0; margin: var(--ds-s) 0; }   /* Schritt 7 (vorher .mb2.w7 > .w7-box): Eigenschaftstabelle füllt die Kachel */
#m-wiz .mb2.w7 .fen-block > .wz-sub { font-size: var(--ts-tab-fs); }
#m-wiz .mb2.w7 .fen-block > .wz-row { gap: var(--ds-m); }
#m-wiz .mb2.w7 .fen-block > .wz-row > label.wz-sub { font-size: var(--ts-tab-fs); margin: 0; display: inline-flex; align-items: center; gap: var(--ds-xs); }
#m-wiz .mb2.w7 .fen-block { overflow: hidden; }
/* §4139: Artikel-Assistent — Feldzeilen in der Kachel wie im Entwurf (ASSISTENTENFENSTER): Beschriftungsspalte wie .rma-ass .fen-form, Feld 28 px, dünner Rand */
#m-wiz .ass-fen .fen-block > .wz-row:has(> label.wz-lbl) { display: grid; grid-template-columns: var(--fb-170) minmax(0, 1fr); gap: var(--ds-s); align-items: center; }
#m-wiz .ass-fen .fen-block > .wz-row > label.wz-lbl { font-size: var(--ts-tab-fs); }
#m-wiz .ass-fen .fen-block .sinp { height: var(--ds-feld); padding: 0 8px; border-color: var(--ts-edit-bd); font: inherit; }   /* §4144: alle Felder der Kachel (auch Filter kw-q/hw-q, Modell mw-q), nicht nur die in .wz-row */
#m-wiz .ass-fen .fen-block .sinp:focus { outline: none; border-color: var(--ts-panel-bd); }   /* §4142: Fokus wie in Dialogen (§698) statt Browser-Umriss */
#m-wiz .ass-fen .fen-block > .wz-q { margin-bottom: var(--ds-s); }
#m-wiz .ass-fen .fen-block > .wz-lw { flex: 1 1 0; max-height: none; min-height: 0; }   /* §4144: Kategorie-/Herstellerliste füllt die Kachel (wie S7 und RMA S2) statt 300 px */
#m-wiz .ass-fen > .fen-block { overflow: auto; }   /* Trefferlisten der Schritte 1–3 (wz-res) rollen in der Kachel; S7 bleibt hidden (Regel oben) */
   /* §4099: Eigenware — keine Kundendaten, Kachel bleibt sichtbar, aber gedimmt */
.m-rma.rma-neu .rma-geraet-body { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: var(--ds-s); }
.m-rma.rma-neu .rma-texte { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: var(--ds-s); }
.m-rma.rma-neu .rma-texte > .fz-ta { flex: 1 1 0; min-height: 0; display: flex; flex-direction: column; gap: 3px; margin: 0; }
.m-rma.rma-neu .rma-texte > .fz-ta.rma-ta-gross { flex-grow: var(--rma-ta-gross); }
.m-rma.rma-neu .rma-texte > .fz-ta.rma-ta-klein { flex-grow: var(--rma-ta-klein); }
.m-rma.rma-neu .rma-texte > .fz-ta > label { text-align: left; padding: 0; }
.m-rma.rma-neu .rma-texte > .fz-ta > textarea { flex: 1 1 auto; min-height: 0; height: auto; resize: none; }
.m-rma.rma-neu .rp-paar { grid-template-columns: minmax(var(--rma-lbl-w), max-content) minmax(0,1fr) minmax(var(--rma-lbl-w), max-content) minmax(0,1fr); }   /* §4075 gleiche Mindestbreite aller Beschriftungsspalten → alle Label-Knöpfe gleich breit */
.m-rma.rma-neu .rp-paar.rp-eins { grid-template-columns: minmax(var(--rma-lbl-w), max-content) minmax(0,1fr); }
.m-rma.rma-neu .rp-paar > .rma-zwischen { grid-column: 1 / -1; margin: var(--ds-s) 0 var(--ds-xs); }
.m-rma.rma-neu .rp-paar > .rma-zwischen:first-child { margin-top: 0; }
/* §4110 (Jörg 01.11. 10:33): Gutschrift in EINER Zeile — drei Feldpaare, erste Beschriftungsspalte = --rma-lbl-w wie das Kachelgitter (bündig) */
.m-rma.rma-neu .rp-paar > .rma-gs-zeile { grid-column: 1 / -1; display: grid; grid-template-columns: var(--rma-lbl-w) minmax(0,1fr) max-content minmax(0,1fr) max-content minmax(0,1fr); column-gap: 8px; align-items: center; }
.m-rma.rma-neu .rma-gs-zeile > .fz { display: contents; }
.m-rma.rma-neu .rma-gs-zeile > .fz > label { text-align: left; white-space: nowrap; }
/* §4110 (Jörg 01.11.): Gutschrift-Fall — Gutschrift-Zeile nach oben, Austausch-Zeilen gedämpft (Muster .pd-sec.locked) */
.m-rma.rma-neu .rma-ergebnis.rma-ist-gs .rp-paar > .rma-gs-zeile { order: -1; }
.m-rma.rma-neu .rma-ergebnis.rma-ist-gs .rp-paar > .fz:is(:has(#f_produkt_austausch), :has(#f_artikelnr_austausch), :has(#f_anzahl_austausch), :has(#f_seriennr_austausch), :has(#f_pid_austausch)) { opacity: .6; }
.m-rma.rma-neu .rma-fakten > .fz.rma-fakt-mahn { margin-left: var(--ds-xl); }
.m-rma.rma-neu .rma-fakten > .fz.rma-fakt-naechst { flex: 1 1 auto; width: auto; min-width: 0; margin-left: var(--ds-xl); }   /* §4125: Nächster Schritt füllt den Rest der Faktenzeile, Phasenleiste bleibt fest · min-width 0 wie Reparatur (Kettentest 01.11.) */
.m-rma.rma-neu .rma-fakten > .fz.rma-fakt-naechst > .ts-phase-naechst:not([hidden]) { flex: 0 1 auto; max-width: 100%; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; display: block; line-height: calc(var(--ds-feld) - 2px); }
.m-rma.rma-neu .rma-fakten > .fz.rma-fakt-naechst:has(> .ts-phase-naechst[hidden]) > label { visibility: hidden; }   /* §4110: Mahnstand mit Abstand von den Vorgangsdaten abgesetzt */

/* §4073 SHELL D (Joerg 31.10.): Menue links wird EINGEBLENDET (Griff am linken Rand, Klick oeffnet, Klick auf Eintrag/Rest/Esc schliesst); Fusszeile entfaellt
   (Firmenzeile steht als Tooltip am Logo); Modul bekommt die volle Breite und Hoehe. Nur die WaWi-Shell (body.ts-shell-d, Einstellung Design.Shell_Neu, '0' = alte Ansicht). */
body.ts-shell-d > footer.app-fuss { display: none; }
body.ts-shell-d .app-main { padding: var(--ts-shell-rand) var(--ts-shell-rand) var(--ts-shell-rand) var(--ts-griff-w); }
body.ts-shell-d .tspro-ui .ts-shell { gap: 0; }
body.ts-shell-d .tspro-ui .ts-menu-col { position: fixed; top: var(--ts-bar-h); bottom: 0; left: 0; z-index: 50; height: auto;
                       width: calc(var(--ts-menu-w) + 20px); flex: none; padding: 10px; overflow-y: auto;
                       background: var(--ts-shell-bg); border-right: 1px solid var(--ts-panel-bd); box-shadow: var(--ds-schatten-dialog);
                       transform: translateX(-100%); visibility: hidden; transition: transform .15s, visibility .15s; }
body.ts-shell-d .tspro-ui .ts-shell.menue-offen .ts-menu-col { transform: none; visibility: visible; }
body.ts-shell-d .ts-menu-griff { position: fixed; left: 0; top: 50%; transform: translateY(-50%); z-index: 45; width: var(--ts-griff-w); height: 110px; padding: 0;
                       border: 0; border-radius: 0 6px 6px 0; background: var(--ts-akzent); color: var(--ts-sec-fg); cursor: pointer;
                       writing-mode: vertical-rl; font: inherit; font-size: 11px; font-weight: 700; letter-spacing: .08em; }
body.ts-shell-d .ts-menu-griff:hover { background: var(--ts-akzent-dark); }
body.ts-shell-d .ts-menu-schleier { position: fixed; top: var(--ts-bar-h); right: 0; bottom: 0; left: 0; z-index: 40; background: transparent; }
body.ts-shell-d .ts-shell:not(.menue-offen) .ts-menu-schleier { display: none; }
/* §4182 Griff/Schleier stehen jetzt in JEDER Shell im Markup — ohne Einklappen (fest links) unsichtbar */
body:not(.ts-shell-d) .ts-menu-griff, body:not(.ts-shell-d) .ts-menu-schleier { display: none; }
/* §4182 Menüfuß: Menüverhalten je Bereich für den Benutzer bzw. nur diesen Rechner — unten im Menü */
.tspro-ui .ts-menu-fuss       { margin-top: auto; padding-top: var(--ds-l); display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--ts-gedaempft); }
.tspro-ui .ts-menu-fuss select { width: 100%; font-size: 12px; }
.tspro-ui .ts-menu-fuss-r     { display: flex; align-items: center; gap: 6px; cursor: pointer; }

/* §4080 Zugriffsrechte (Einstellungen › Benutzer): Auswahlfelder in den Rechte-Tabellen — Höhe/Schrift wie die übrigen Einstellungsfelder, kein Eigenleben */
.m-einstellungen .es-utable select { height: calc(var(--ds-feld) - 4px); font: inherit; font-size: 12.5px; border: 1px solid var(--ts-panel-bd); border-radius: 6px; background: var(--ts-panel-bg); padding: 0 var(--ds-s); }
.m-einstellungen .es-utable select:disabled { background-color: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd); }

/* ═══ §4163 REPARATURANNAHME nach Skizze (DFA §4155, Entscheidungen §4156–§4161, Referenz rma §4072/§4125 — K-440): Kopf mit Zeitleiste + Fakten,
   darunter DREI Spalten 1 : 1 : 1,3 — links Kunde und Gerät (füllt) über Weg und Ergebnis (feste Zeile), Mitte Annahme (füllt) über Zwischenberichte (feste Zeile),
   rechts Fehler und Arbeit. Alles im Rahmen 1892×1010 (§4076), nur Antworten-, Berichte-Liste und Fehlerbehebung wachsen. ═══ */
.m-reparatur { --rp-lbl-w: 142px; --rp-unten-h: 284px; --rp-cols: 1.3fr 1fr 1fr;   /* K-441: Arbeit (Fehler und Arbeit) links und am breitesten */ --rp-ta-fehler: 200px; --rp-ta-klein: 72px; --rp-fakt-w: var(--fb-110); --rp-fakt-datum-w: var(--fb-120); --rp-fakt-wahl-w: var(--fb-170); }
.m-reparatur .be-layout { flex: 1 1 auto; min-height: 0; }
.m-reparatur .be-main { min-height: 0; }
/* Kopf */
.m-reparatur .rp-kopf { flex: 0 0 auto; }
.m-reparatur .rp-kopf > .fil-sec-head, .m-reparatur .rp-annahme > .fil-sec-head, .m-reparatur .rp-berichte > .fil-sec-head, .m-reparatur .rp-fehler > .fil-sec-head, .m-reparatur .rp-kunde > .fil-sec-head, .m-reparatur .rp-weg > .fil-sec-head { display: flex; align-items: center; gap: var(--ds-l); }   /* K-441 Kopfregel: jeder Kachelkopf mit Untertitel */
.m-reparatur .fil-sec-head > .ts-status-txt { margin-left: auto; flex: 0 1 auto; min-width: 0; }   /* K-441/K-353: Untertitel = vorhandener Baustein .ts-status-txt (§1380, Z. 1508/4834), rechtsbündig im Flex-Kopf; eigene Klasse rp-kopf-rechts entfallen */
.m-reparatur .rp-kopf-body { display: flex; flex-direction: column; gap: var(--ds-m); }
.m-reparatur .rp-kopf-zeile { display: flex; align-items: flex-start; gap: var(--ds-l); min-height: calc(var(--ts-phase-punkt) + 2 * var(--ds-fs-text)); }
.m-reparatur .rp-fakten { display: flex; gap: var(--ds-m); align-items: flex-end; border-top: 1px solid var(--ts-panel-bd); padding-top: var(--ds-s); }
.m-reparatur .rp-fakten > .fz { display: flex; flex-direction: column; gap: 2px; margin: 0; flex: 0 0 var(--rp-fakt-w); width: var(--rp-fakt-w); min-width: 0; }
.m-reparatur .rp-fakten > .fz:has(> .datepick) { flex-basis: var(--rp-fakt-datum-w); width: var(--rp-fakt-datum-w); }
.m-reparatur .rp-fakten > .fz.rp-fakt-wahl { flex-basis: var(--rp-fakt-wahl-w); width: var(--rp-fakt-wahl-w); }
.m-reparatur .rp-fakten > .fz > label { font-size: var(--ds-fs-hinweis); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--ts-gedaempft); }
.m-reparatur .rp-fakten > .fz > .v, .m-reparatur .rp-fakten > .fz > .datepick, .m-reparatur .rp-fakten > .fz > select { width: 100%; min-width: 0; }
.m-reparatur .rp-fakten > .fz.rp-fakt-naechst { flex: 1 1 auto; width: auto; min-width: 0; margin-left: var(--ds-xl); }   /* min-width 0: der Satz darf nicht die Faktenzeile aufweiten (Kettentest 01.11.: 995 px Text, Kopf abgeschnitten) */
.m-reparatur .rp-fakten > .fz.rp-fakt-naechst > .ts-phase-naechst:not([hidden]) { flex: 0 1 auto; max-width: 100%; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; display: block; line-height: calc(var(--ds-feld) - 2px); }
.m-reparatur .rp-fakten > .fz.rp-fakt-naechst:has(> .ts-phase-naechst[hidden]) > label { visibility: hidden; }
/* §4158 Zeitleiste: Baustein ts-phasen (§4072) + Ereignis-Modifikator .ev — kleiner Punkt mit Zeichen (data-zeichen am Punkt) statt Nummer, gestrichelter Rand;
   feste Punkte tragen die laufende Nummer weiter nur über die festen Stufen (Ereignisse zählen nicht mit). Zweizeiliger Text, Leiste ausgerichtet oben. */
/* §4188 Verschiebbare Zeitleiste (Baustein, nicht nur Reparatur): Rahmen ‹ Bahn › — die Punkte behalten ihre volle Breite statt sich zu überlappen;
   Bahn scrollt waagerecht ohne sichtbare Scrollbar (Pfeile, Ziehen, Mausrad); Pfeile nur bei Überlauf (.ueberlauf), Randverlauf je Seite (.mehr-l/.mehr-r). */
.tspro-ui { --ts-phasen-verlauf: var(--ds-xl); }
.tspro-ui .ts-phasen-rahmen { display: flex; align-items: flex-start; gap: var(--ds-s); flex: 1 1 auto; min-width: 0; --ts-phasen-rand-l: 0px; --ts-phasen-rand-r: 0px; }
.tspro-ui .ts-phasen-rahmen.mehr-l { --ts-phasen-rand-l: var(--ts-phasen-verlauf); }
.tspro-ui .ts-phasen-rahmen.mehr-r { --ts-phasen-rand-r: var(--ts-phasen-verlauf); }
.tspro-ui .ts-phasen-bahn { position: relative; flex: 1 1 auto; min-width: 0; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; scroll-behavior: smooth; cursor: grab; touch-action: pan-x;
  -webkit-mask-image: linear-gradient(to right, transparent 0, currentColor var(--ts-phasen-rand-l), currentColor calc(100% - var(--ts-phasen-rand-r)), transparent 100%);
          mask-image: linear-gradient(to right, transparent 0, currentColor var(--ts-phasen-rand-l), currentColor calc(100% - var(--ts-phasen-rand-r)), transparent 100%); }
.tspro-ui .ts-phasen-bahn::-webkit-scrollbar { display: none; }
.tspro-ui .ts-phasen-bahn.zieht { cursor: grabbing; scroll-behavior: auto; user-select: none; }
.tspro-ui .ts-phasen-bahn > .ts-phasen { width: max-content; min-width: 100%; }
.tspro-ui .ts-phasen-bahn > .ts-phasen > .ts-phase { flex: 1 0 auto; }
.tspro-ui .ts-phasen-bahn .ts-phase-text > b { overflow: visible; }
.tspro-ui .ts-phasen-pfeil { flex: 0 0 var(--ts-phase-punkt); width: var(--ts-phase-punkt); height: var(--ts-phase-punkt); padding: 0; box-sizing: border-box; border-radius: 50%;
  border: var(--ts-phase-strich) solid var(--ts-line); background: var(--ts-panel-bg); color: var(--ts-ink); font-size: var(--ds-fs-text); font-weight: 700; line-height: 1; cursor: pointer; }
.tspro-ui .ts-phasen-pfeil:hover:not(:disabled) { border-color: var(--ts-akzent); color: var(--ts-akzent); }
.tspro-ui .ts-phasen-pfeil:disabled { background: var(--ts-dis-bg); color: var(--ts-dis-fg); border-color: var(--ts-dis-bd); cursor: default; }
.tspro-ui .ts-phasen-rahmen:not(.ueberlauf) > .ts-phasen-pfeil { display: none; }
.m-reparatur .rp-zeitleiste { align-items: flex-start; }
/* §4250 Zeitleiste nur Hauptstationen: gleich breite Punkte, Beschriftung kürzt mit … (Langtext im Tooltip), Zähler „In Bearbeitung“ als stiller Link (Verlaufsfenster);
   Standort-Schild (chip, Baustein §3732) rechts neben der Leiste in Warnfarbe — parallel zur Bearbeitung, nicht blau */
.m-reparatur .ts-phasen-bahn > .rp-zeitleiste { width: 100%; }
.m-reparatur .ts-phasen-bahn > .rp-zeitleiste > .ts-phase { flex: 1 1 0; min-width: 0; }
.m-reparatur .ts-phasen-bahn > .rp-zeitleiste > .ts-phase:last-child { flex: 0 1 auto; }
.m-reparatur .rp-zeitleiste .ts-phase-text { overflow: hidden; }
.m-reparatur .ts-phasen-bahn .rp-zeitleiste .ts-phase-text > b, .m-reparatur .rp-zeitleiste .ts-phase-zusatz { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-reparatur .rp-kopf-zeile > .chip.rp-standort { flex: 0 0 auto; align-self: center; background: var(--ts-meld-warn-bg); color: var(--ts-meld-warn-fg); border-color: var(--ts-meld-warn-bd); }
.m-reparatur .rp-kopf-zeile > .chip.rp-standort[hidden] { display: none; }
.m-reparatur .rp-zeitleiste > .ts-phase { align-items: flex-start; }
.m-reparatur .rp-zeitleiste > .ts-phase:not(:last-child)::after { margin-top: calc(var(--ts-phase-punkt) / 2 - var(--ts-phase-strich) / 2); }
.m-reparatur .rp-zeitleiste > .ts-phase.ev { counter-increment: none; }
.m-reparatur .rp-zeitleiste > .ts-phase.ev > .ts-phase-punkt { flex-basis: 20px; width: 20px; height: 20px; margin: 2px 0 0 0; border-style: dashed; font-size: 11px; }
.m-reparatur .rp-zeitleiste > .ts-phase.ev > .ts-phase-punkt::before { content: attr(data-zeichen); }
.m-reparatur .rp-zeitleiste > .ts-phase.ev.ok > .ts-phase-punkt { background: var(--ts-flaeche); border-color: var(--ts-gedaempft); color: var(--ts-ink); border-style: solid; }
.m-reparatur .rp-zeitleiste > .ts-phase.ev > .ts-phase-text > b { font-weight: 600; }
.m-reparatur .rp-zeitleiste > .ts-phase.ev:not(:last-child)::after { margin-top: 11px; }
/* Spalten */
.m-reparatur .rp-cols3 { display: grid; grid-template-columns: var(--rp-cols); grid-template-rows: minmax(0, 1fr); gap: var(--ts-kachel-gap); flex: 1 1 auto; min-height: 0; }   /* Messbild 01.11. 16:4x: Zeile „auto“ wuchs mit dem Inhalt über 1010 hinaus — die eine Zeile ist der Rest des Rahmens */
.m-reparatur .rp-cols3 > .fil-sec { margin: 0; min-width: 0; min-height: 0; display: flex; flex-direction: column; }
.m-reparatur .rp-stack { display: grid; grid-template-rows: minmax(0, 1fr) var(--rp-unten-h); gap: var(--ts-kachel-gap); min-height: 0; min-width: 0; }
.m-reparatur .rp-stack > .fil-sec { margin: 0; min-height: 0; min-width: 0; display: flex; flex-direction: column; }
.m-reparatur .rp-stack > .fil-sec > .fil-sec-body, .m-reparatur .rp-fehler > .fil-sec-body { flex: 1 1 auto; min-height: 0; }
/* Feldraster: Beschriftungsspalte fest (bündig über alle Kacheln), Zweier-Zeilen (rp-zwei) mit vier Spalten */
.m-reparatur .rp-paar { grid-template-columns: minmax(var(--rp-lbl-w), max-content) minmax(0,1fr) minmax(var(--rp-lbl-w), max-content) minmax(0,1fr); }
.m-reparatur .rp-paar.rp-eins { grid-template-columns: var(--rp-lbl-w) minmax(0,1fr); }
.m-reparatur .rp-paar > .fz.rp-zwei { display: grid; grid-column: 1 / -1; grid-template-columns: var(--rp-lbl-w) minmax(0,1fr) max-content minmax(0,1fr); column-gap: 8px; align-items: center; min-width: 0; }
.m-reparatur .rp-paar > .fz.rp-zwei > label { text-align: left; white-space: nowrap; }
.m-reparatur .rp-paar > .fz.rp-zwei > :not(label) { min-width: 0; }
.m-reparatur .rp-paar .v.ro { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.m-reparatur .rp-paar > .fz > .kunde-info { display: flex; gap: var(--ds-s); align-items: center; min-width: 0; }
.m-reparatur .rp-paar > .fz > .kunde-info > .v { flex: 1 1 auto; min-width: 0; }
/* Kunde und Gerät: Felder, Gerätetabelle (5 Zeilen), Zubehör/Leihgerät, Kennzeichen — Kachel füllt, der Rest bleibt Luft unten (K-436 (2)) */
.m-reparatur .rp-kunde-body { display: flex; flex-direction: column; gap: var(--ds-s); }
.m-reparatur .rp-kunde-body > .rp-paar { flex: 0 0 auto; }
.m-reparatur .rp-kennz { flex-wrap: wrap; row-gap: 2px; }
/* Annahme: Zustand fest, Angaben-Tabelle füllt */
.m-reparatur .rp-annahme-body { display: flex; flex-direction: column; gap: var(--ds-s); }
.m-reparatur .rp-annahme-body > .fz-ta, .m-reparatur .rp-texte > .fz-ta, .m-reparatur .rp-bems > .fz-ta { display: flex; flex-direction: column; gap: 3px; margin: 0; min-height: 0; }
.m-reparatur .fz-ta > label { display: flex; align-items: center; gap: var(--ds-s); padding: 0; min-width: 0; }
.m-reparatur .fz-ta > label > .kbtn { width: auto; flex: 0 0 auto; }
/* .rp-hinweis: Regel jetzt gemeinsam für .m-reparatur und .m-rma (K-441), Z. 8324 */
.m-reparatur .fz-ta > textarea { resize: none; height: auto; min-height: 0; }
.m-reparatur .rp-ta-zustand > textarea { flex: 0 0 var(--rp-ta-klein); }
.m-reparatur .rp-antworten, .m-reparatur .rp-berichte-liste { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.m-reparatur .rp-antworten > .tbl-box, .m-reparatur .rp-berichte-liste > .tbl-box { flex: 1 1 auto; min-height: 0; overflow: auto; }
body.im-edit .m-reparatur #rp_antworten tbody tr.js-row { cursor: pointer; }   /* js-row setzt die Maske nur im Bearbeiten (klick:state.edit) — Zeigerhand mit Zustand */
.m-reparatur #rp_antworten td.rp-sp-frage { width: 46%; font-weight: 600; color: var(--ts-ink); }
/* Zwischenberichte: Text darf umbrechen (K-435: der Inhalt ist der Zweck), Art farbig nur als Verstärkung (Rückfrage rot = wartet, Antwort grün) */
.m-reparatur .rp-berichte-body { display: flex; flex-direction: column; }
.m-reparatur #rp_berichte td { white-space: normal; height: auto; vertical-align: top; line-height: 1.3; padding-top: 3px; padding-bottom: 3px; }
.m-reparatur #rp_berichte :is(th, td).rp-sp-zeit { width: var(--fb-140); white-space: nowrap; }   /* Jörg 01.11. 18:21: „01.11.2026 18:21“ war bei 118 px abgeschnitten */
.m-reparatur #rp_berichte :is(th, td).rp-sp-wer { width: 48px; white-space: nowrap; }
.m-reparatur #rp_berichte :is(th, td).rp-sp-art { width: var(--fb-110); white-space: nowrap; }   /* Kettentest 01.11.: „Rückfrage“ fett = 91 px, 86 schnitt ab */
.m-reparatur .rp-texte > .rp-paar.rp-eins { grid-template-columns: max-content minmax(0,1fr); }   /* „Erstmalig aufgetreten“ ist länger als die Beschriftungsspalte der anderen Kacheln */
.m-reparatur #rp_berichte .rp-art-Rueckfrage { color: var(--ts-red); }
.m-reparatur #rp_berichte .rp-art-Antwort { color: var(--ts-ok); }
/* Fehler und Arbeit: Fehlerbeschreibung fest, Erstmalig eine Zeile, Fehlerbehebung füllt, Bemerkungen klein nebeneinander */
.m-reparatur .rp-fehler .rp-texte { display: flex; flex-direction: column; gap: var(--ds-s); min-height: 0; }
.m-reparatur .rp-texte > .rp-ta-fehler > textarea { flex: 0 0 var(--rp-ta-fehler); }
.m-reparatur .rp-texte > .rp-ta-behebung { flex: 1 1 auto; }
.m-reparatur .rp-texte > .rp-ta-behebung > textarea { flex: 1 1 auto; }
.m-reparatur .rp-texte > .rp-paar { flex: 0 0 auto; }
.m-reparatur .rp-bems { display: grid; grid-template-columns: 1fr 1fr; gap: var(--ts-kachel-gap); flex: 0 0 auto; }
.m-reparatur .rp-bems > .fz-ta > textarea { flex: 0 0 var(--rp-ta-klein); }
/* Zwischenbericht-Fenster (berichtNeu): Textfeld füllt die Stufe schmal */
.ts-dlg-box .rp-bericht > .fen-block { display: flex; flex-direction: column; min-height: var(--rp-bericht-min-h); }
.ts-dlg-box .rp-bericht > .fen-block > textarea.fuellt { flex: 1 1 auto; min-height: var(--rp-bericht-ta-h); resize: none; font: inherit; }
/* ── §4156/§4163 Nachtrag-Assistent (angebot.php nachtragUebernehmen, Skizzen skizze2_angebot_nachtrag_schritt1/2): Baustein .rep-ass/.ass-fen wie reparatur.php ── */
.ts-dlg-box .rep-ass .fen-baum-fuss { margin-top: auto; padding: var(--ds-m) var(--ds-s) 0; color: var(--ts-gedaempft); font-size: var(--ds-fs-hinweis); line-height: 1.4; }
.ts-dlg-box .rep-ass .nt-sum-zeilen { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: var(--ds-xs) var(--ds-l); margin-top: var(--ds-s); flex: 0 0 auto; }
.ts-dlg-box .rep-ass .nt-sum-zeilen > b { color: var(--ts-ink); }
.ts-dlg-box .rep-ass .fen-ck > input#nt_am { flex: 0 0 var(--fb-120); width: var(--fb-120); }   /* Bild 01.11.: Datum feste Breite, Mitarbeiter-Auswahl ragte 171 px über die Kachel */
.ts-dlg-box .rep-ass .fen-ck > select#nt_durch { flex: 0 0 var(--fb-220); width: var(--fb-220); }
.ts-dlg-box .rep-ass textarea.nt-verm { height: var(--fb-64); min-height: var(--fb-64); resize: none; font: inherit; }
.ts-dlg-box .rep-ass .nt-prev { border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); padding: var(--ds-m) var(--ds-l); background: var(--ts-panel-bg); flex: 1 1 auto; min-height: 0; overflow: auto; font-size: var(--ds-fs-hinweis); line-height: 1.5; }
.ts-dlg-box .rep-ass .nt-prev h4 { margin: 0 0 var(--ds-xs); font-size: var(--ds-fs-text); }
.ts-dlg-box .rep-ass .nt-prev .nt-pl { display: grid; grid-template-columns: var(--nt-prev-nr-b) minmax(0, 1fr) var(--nt-prev-sum-b); gap: var(--ds-xs) var(--ds-m); }
.ts-dlg-box .rep-ass .nt-prev .nt-pl > .r { text-align: right; }
.ts-dlg-box .rep-ass .nt-prev .nt-blk { margin-top: var(--ds-m); padding-top: var(--ds-s); border-top: 1px dashed var(--ts-panel-bd); }
.ts-dlg-box .rep-ass .nt-prev .nt-sum { display: flex; justify-content: space-between; }
.ts-dlg-box .rep-ass #nt_tl :is(th, td).sp-geld, .ts-dlg-box .rep-ass #nt_tl :is(th, td).sp-anz { text-align: right; }

/* §4191 STILLER SPRUNG (Jörg 01.11. 22:50): Verweise auf Belege sehen aus wie normaler Text. Beim Drüberfahren: Hand und Akzentfarbe (§4230 Jörg 02.11.: KEIN Unterstrich, KEIN ↗);
   mit gehaltener Strg/⌘-Taste (:root.ts-strg, api.js) leuchten ALLE Sprungziele der Maske auf. Gilt für .ts-sprung (tsproSprung) und die bisherigen Linkklassen. */
.ts-sprung { cursor: pointer; }
/* §4236 Garantie-/Lizenzcenter: Sprung-Links ohne eigene Regel standen in Browser-Linkoptik (blau, unterstrichen) */
:is(a.kl-sprung, a.kl-dok, a.fa-sprung, a.ga-sprung, a.ga-dok) { color: inherit; text-decoration: none; cursor: pointer; }
body.im-edit .ts-sprung, .ts-sprung.ts-sprung-strg, input.ts-sprung, textarea.ts-sprung, .ts-dlg-box .ts-sprung { cursor: auto; }
:root body:not(.im-edit) .ts-sprung:not(.ts-sprung-strg):not(input):not(textarea):not(.ts-dlg-box *):hover,   /* §4236 in Fenstern (Auswahl-/Assistentenlisten) kein Hover — dort nur Strg/⌘ */
:root :is(a.tsp-link, a.js-jump, a.eco-doclink, a.bhk-ecolink, .bib-wrap .bib-link, a.kl-sprung, a.kl-dok, .tc-sprung, a.fa-sprung, a.ga-sprung, a.ga-dok):hover { color: var(--ts-akzent); -webkit-text-fill-color: var(--ts-akzent); text-decoration: none; }
:root.ts-strg :is(.ts-sprung, a.tsp-link, a.js-jump, a.eco-doclink, a.bhk-ecolink, .bib-wrap .bib-link, a.kl-sprung, a.kl-dok, .tc-sprung, a.fa-sprung, a.ga-sprung, a.ga-dok) { cursor: pointer; background-color: var(--ts-meld-info-bg); box-shadow: inset 0 0 0 1px var(--ts-akzent); border-radius: var(--ds-radius); }

/* §4296/§4308 Standard je NAS (technikCENTER Synology-Verwaltung, DFA §4306): Fenster F01/F02/F03 aus den Fensterbausteinen (fen/fen-block/fz-gitter/tbl-box/bka-schritte);
   hier nur Stand-Farben (Semantik: ok/warn/rot), Untertitel in Kachelköpfen, abweichende NAS-Werte (Akzentrand), Haken-Schrift */
.std-stand{font-size:var(--ts-schrift-klein);color:var(--ts-gedaempft)}
.std-tab td.std-passt{color:var(--ts-ok)}
.std-tab td.std-abweichung{color:var(--ts-warn)}
.std-tab td.std-fehler{color:var(--ts-red)}
.std-tab td.std-offline, .std-tab td.std-aus{color:var(--ts-gedaempft)}
.std-tab td:first-child, .std-tab th:first-child{width:28px;text-align:center}
.std-tab input[type=checkbox]{font:inherit}
.std-felder input.std-eigen{border-color:var(--ts-akzent)}
#std_werte[hidden]{display:none}
/* §4331 Messung F01 live (03.11. 10:30): Punkte-Tabelle fiel auf 0 px (fuellt, Werte-Block darunter zu hoch), Soll-Text 1185 px in 340 px abgeschnitten.
   Tabelle behält eine Mindesthöhe (Kopf + 2 Zeilen), Werte-Felder in zwei Spalten, Soll-Werte dürfen umbrechen. */
:root { --std-tab-min: 120px; }   /* Nachmessung 10:41: Kachel 180 px hoch, Werte-Block 25 px zu knapp → Kopf 30 + Tabellenkopf 28 + 2 Punkte à 22 + Ränder ≈ 120 */
.ts-dlg-box .fen-block.fuellt:has(.std-tab) { min-height: var(--std-tab-min); flex: 0 1 auto; }   /* §4331 Nachmessung: wächst nicht mehr (leere Zeilen), Werte-Block unten bekommt den Platz */
.ts-dlg-box .fen-form.fz-gitter.std-felder { grid-template-columns: max-content minmax(0, 1fr) max-content minmax(0, 1fr); column-gap: var(--ts-kachel-gap); }
.ts-dlg-box .fen-form.fz-gitter.std-felder > .fz { grid-column: span 2; column-gap: 8px; }
.ts-dlg .ts-dlg-box .fen-form.fz-gitter.std-soll > .fz > div.v.ro { white-space: normal; overflow-wrap: anywhere; height: auto; line-height: 1.35; padding-block: 4px; }   /* schlägt Z.7566 (div.v.ro einzeilig) */
/* §4323 Hyper Backup — Assistent „Neue Sicherung“ (.hb-ass, Baustein ass-fen §4138, Stufe gross) und Fenster „Aufgabe bearbeiten“ (.hb-ed, Stufe weit 1150×680) · DFA §4321, Skizzen dfa2/hb_neu_schritt2.png, hb_neu_schritt4.png, hb_bearbeiten.png (Freigabe Jörg 03.11. 09:08).
   Maße aus den Skizzen als Variablen: Beschriftungsspalte 170 (Assistent) / 150 (Bearbeiten), Wochentag-Haken 52 je Tag, linke Spalte Bearbeiten 500. Feldbreiten über die Leiterklassen fb-420 / fb-nummer (K-353). */
.ts-dlg-box .hb-ass, .ts-dlg-box .hb-ed { --hb-tag-w: 52px; --hb-ed-links: 500px; --hb-ed-lbl: 170px; }
.ts-dlg-box .hb-ass .fen-form { grid-template-columns: var(--fb-170) minmax(0, 1fr); }
.ts-dlg-box .hb-ed .fen-form { grid-template-columns: var(--hb-ed-lbl) minmax(0, 1fr); }
.ts-dlg-box :is(.hb-ass, .hb-ed) .fen-form > .fen-ck.hb-tage { gap: 0; }
.ts-dlg-box :is(.hb-ass, .hb-ed) .fen-form > .fen-ck.hb-tage > label { width: var(--hb-tag-w); flex: 0 0 var(--hb-tag-w); }   /* Jörg 03.11. 05:33: Haken in einer Flucht */
.ts-dlg-box :is(.hb-ass, .hb-ed) .fen-form > .fen-ck > .ts-dim { margin-left: var(--ds-m); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.ts-dlg-box :is(.hb-ass, .hb-ed) .hb-apps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--ds-xs) var(--ds-s); }
.ts-dlg-box :is(.hb-ass, .hb-ed) .hb-apps > .fen-ck { min-width: 0; }
.ts-dlg-box :is(.hb-ass, .hb-ed) .hb-apps > .fen-ck > label { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.ts-dlg-box :is(.hb-ass, .hb-ed) .fen-block-t + table, .ts-dlg-box :is(.hb-ass, .hb-ed) .fen-block-t + .tbl-box { margin-top: var(--ds-xs); }
.ts-dlg-box .hb-ass.ass-fen > .fen-block { overflow: auto; }
/* §4680 Assistent „Termin abrechnen“ (comCENTER › Außendienst, .ad-ass, Baustein ass-fen wie Reparatur): Feldraster wie rep-ass; Fahrt-Auswahl (fahrtWahl liefert .fz) reiht sich ins Raster;
   Lesewerte mehrzeilig (Fahrten zweizeilig); Tätigkeit füllt die Kachel */
.ts-dlg-box .ad-ass { --ad-ass-taet-h: 160px; }
.ts-dlg-box .ad-ass.ass-fen > .fen-block { overflow: auto; }
.ts-dlg-box .ad-ass .fen-form > .fz { display: contents; }
.ts-dlg-box .ad-ass .fen-form > div.v.ro { white-space: pre-line; height: auto; min-height: var(--ds-feld); line-height: 1.35; overflow: visible; text-overflow: clip; overflow-wrap: anywhere; }
.ts-dlg-box .ad-ass .fen-form > textarea.v { height: var(--ad-ass-taet-h); min-height: var(--ad-ass-taet-h); resize: none; font: inherit; }
.ts-dlg-box .ad-ass .fen-block-t > .ts-status-txt { font-weight: 400; }   /* Ordner-/Plattentabelle rollt in der Kachel, wie Artikel-Assistent §4139 */
.ts-dlg-box .hb-ass tr.hb-zplatte { cursor: pointer; }
.ts-dlg-box .hb-ass tr.hb-zplatte.sel td { background: var(--ds-auswahl); }
.ts-dlg-box .hb-ed { display: grid; grid-template-columns: var(--hb-ed-links) minmax(0, 1fr); gap: var(--ds-m); height: 100%; min-height: 0; align-items: stretch; }
.ts-dlg-box .hb-ed > .hb-ed-sp { display: flex; flex-direction: column; gap: var(--ds-m); min-height: 0; min-width: 0; }
.ts-dlg-box .hb-ed > .hb-ed-sp > .fen-block { flex: 0 0 auto; min-width: 0; }
.ts-dlg-box .hb-ed > .hb-ed-sp > .fen-block.fuellt { flex: 1 1 auto; min-height: 0; overflow: auto; }
.ts-dlg-box .hb-ed > .dlg-status { grid-column: 1 / -1; }

/* §4358 technikCENTER › Hyper Backup (seiten/hyperbackup.php/.js) nach Skizze §4357 hb_skizze_1.png — Werte als Variablen am Rahmen .tc-hb */
.tc-hb { --hb-links: 420px; --hb-wann: 86px; --hb-gap: var(--ds-kachel-gap); --hb-r: var(--ts-red); --hb-y: var(--ts-warn); --hb-g: var(--ts-ok); --hb-b: var(--ts-akzent); --hb-n: #c8c8c8; --hb-leer: #e4e4e4;
  --hb-rot-bg: #fbeff1; --hb-rot-bd: #e9c3c9; --hb-blau-bg: #eef2ff; --hb-blau-bd: #c6d3ff; --hb-gelb-bg: var(--ts-meld-warn-bg); --hb-gelb-bd: var(--ts-meld-warn-bd); --hb-gruen-bg: #e9f4ec; --hb-gruen-bd: #bfdec8;
  display: flex; flex-direction: column; gap: var(--hb-gap); min-height: 0; }
.tc-hb .fil-sec-body { min-height: 0; }
.tc-hb-kopf { flex: none; }   /* gemessen 04.11. 03:05: ohne flex:none schrumpfte der Kopf auf 2 px */
.m-komm .komm-main.bc-main.tc-hb { display: flex; }   /* §4428 gemessen 04.11. 16:10: .m-komm .komm-main.bc-main (Z7551, 0,3,0) machte daraus ein Raster mit EINER Zeile minmax(0,1fr) — der Kopf bekam 2 px, die Kacheln darunter lagen über ihm („Kachel nicht bis oben“) */
.tc-hb-kopf .fil-sec-body { display: block; }   /* §4437 (Jörg 04.11. 18:40): als Flex schrumpfte die Kopfzeile bei wenigen Kacheln auf ihren Inhalt und stand mittig (Hyper Backup: Suche ab x 82 statt 27) */
.tc-hb-kar > .tc-hb-chips { display: block; }
.tc-hb-zahlen { display: flex; gap: var(--ds-s); flex-wrap: wrap; }
.tc-hb-zahl { display: flex; align-items: center; gap: var(--ds-s); min-width: 140px; padding: 5px 12px; border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); background: var(--ts-panel-bg); font: inherit; cursor: pointer; color: var(--ts-ink); }
.tc-hb-zahl b { font-size: 20px; }
.tc-hb-zahl small { color: var(--ts-gedaempft); font-size: var(--ds-fs-hinweis); margin-left: 2px; }
.tc-hb-zahl:hover { border-color: var(--ts-line-hover); }
.tc-hb-zahl.sel { border-color: var(--ts-akzent); box-shadow: inset 0 0 0 1px var(--ts-akzent); }
/* §4436 Kopf EINE Zeile (Jörg 04.11. 18:32): Standard-Suchfeld (such-bar/sq) bündig über der linken Kachel, alle Status-/Kontokacheln gleich breit über den Rest, gleiche Höhe */
.tc-hb { --hb-kopf-h: 34px; }
.tc-hb-kopf .such-bar.tc-hb-kopfzeile { display: grid; grid-template-columns: calc(var(--hb-links) - var(--ds-l)) minmax(0, 1fr); column-gap: var(--hb-gap); align-items: center; margin: 0; width: 100%; box-sizing: border-box; min-width: 0; }
.tc-hb .tq-feld { display: flex; align-items: center; gap: 6px; min-width: 0; }
.tc-hb .tq-feld > input.sq { flex: 1 1 auto; width: auto; min-width: 0; height: var(--hb-kopf-h); }
.tc-hb-zahlreihe { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(max-content, 1fr); gap: var(--ds-s); min-width: 0; }   /* §4437: jede Kachel mindestens so breit wie ihr Text — Zusatz (n Geräte/NAS) steht im Tooltip */
.tc-hb-zahlreihe > .tc-hb-zahlen { display: contents; }
.tc-hb-zahlreihe .tc-hb-zahl { min-width: 0; height: var(--hb-kopf-h); box-sizing: border-box; padding: 0 8px; gap: 6px; overflow: hidden; white-space: nowrap; }
.tc-hb-zahlreihe .tc-hb-zahl b { font-size: 18px; }
.tc-hb-dot { width: 11px; height: 11px; border-radius: 50%; display: inline-block; flex: none; background: var(--hb-n); }
.tc-hb-dot.r { background: var(--hb-r); } .tc-hb-dot.y { background: var(--hb-y); } .tc-hb-dot.g { background: var(--hb-g); } .tc-hb-dot.b { background: var(--hb-b); }
.tc-hb-unten { flex: 1; min-height: 0; display: grid; grid-template-columns: var(--hb-links) 1fr; gap: var(--hb-gap); }
.tc-hb-links, .tc-hb-rechts { display: flex; flex-direction: column; min-height: 0; margin: 0; }
.tc-hb-links > .fil-sec-body, .tc-hb-rechts > .fil-sec-body { flex: 1; display: flex; flex-direction: column; min-height: 0; }
.tc-hb-liste { flex: 1; overflow-y: auto; display: flex; flex-direction: column; gap: var(--ds-s); }
.tc-hb-kd { border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); padding: 6px 10px; }
.tc-hb-kdk { display: flex; justify-content: space-between; gap: var(--ds-s); font-size: var(--ds-fs-hinweis); font-weight: 600; color: var(--ts-gedaempft); margin-bottom: 3px; }
.tc-hb-kdk > span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tc-hb-kdk > span:last-child { white-space: nowrap; flex: none; }
.tc-hb-ag { display: grid; grid-template-columns: 14px minmax(0, 1fr) var(--hb-wann); grid-template-areas: "d n w" ". s s"; gap: 2px var(--ds-s); align-items: center; padding: 3px 6px; border-radius: 5px; cursor: pointer; }   /* §4433 linke Kachel 420 px (Jörg 04.11. 14:25): zweizeilig — Zeile 1 Punkt · Aufgabe · Wann, Zeile 2 Verlauf 14 Tage über die volle Breite */
.tc-hb-ag > .tc-hb-dot { grid-area: d; } .tc-hb-ag > .nm { grid-area: n; } .tc-hb-ag > .wann { grid-area: w; } .tc-hb-ag > .tc-hb-strip { grid-area: s; }
.tc-hb-ag:hover { background: var(--ts-hover-bg); }
.tc-hb-ag.sel { background: var(--hb-blau-bg); outline: 1px solid var(--ts-akzent); }
.tc-hb-ag .nm { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tc-hb-ag .wann { font-size: var(--ds-fs-hinweis); color: var(--ts-gedaempft); text-align: right; white-space: nowrap; }
.tc-hb-strip { display: flex; gap: 2px; min-width: 0; }
.tc-hb-strip i { flex: 1 1 0; min-width: 4px; max-width: 22px; height: 14px; border-radius: 2px; background: var(--hb-leer); }   /* §4433 Kästchen teilen sich die Spaltenbreite — kein waagerechtes Rollen */
.tc-hb-strip i.p { background: var(--ts-panel-bg); box-shadow: inset 0 0 0 1px var(--hb-n); }
.tc-hb-strip i.g { background: var(--hb-g); } .tc-hb-strip i.y { background: var(--hb-y); } .tc-hb-strip i.r { background: var(--hb-r); } .tc-hb-strip i.b { background: var(--hb-b); }
.tc-hb-strip i.x { background: repeating-linear-gradient(45deg, var(--hb-leer) 0 2px, var(--ts-panel-bg) 2px 4px); }
.tc-hb-det { flex: 1; min-height: 0; display: flex; flex-direction: column; gap: var(--hb-gap); overflow: hidden; }
.tc-hb-ban { display: flex; gap: 14px; align-items: center; border-radius: var(--ds-radius); padding: 10px 14px; border: 1px solid var(--hb-rot-bd); background: var(--hb-rot-bg); }
.tc-hb-ban.y { background: var(--hb-gelb-bg); border-color: var(--hb-gelb-bd); } .tc-hb-ban.b, .tc-hb-ban.n { background: var(--hb-blau-bg); border-color: var(--hb-blau-bd); } .tc-hb-ban.g { background: var(--hb-gruen-bg); border-color: var(--hb-gruen-bd); }
.tc-hb-ban > div:last-child { flex: 1; min-width: 0; }
.tc-hb-ban .ic { width: 42px; height: 42px; border-radius: 50%; color: var(--ts-sec-fg); font-size: 22px; display: flex; align-items: center; justify-content: center; flex: none; background: var(--hb-r); }
.tc-hb-ban.y .ic { background: var(--hb-y); } .tc-hb-ban.b .ic, .tc-hb-ban.n .ic { background: var(--hb-b); } .tc-hb-ban.g .ic { background: var(--hb-g); }
.tc-hb-ban b { font-size: 14px; }
.tc-hb-ban .nx { margin-top: 3px; }
.tc-hb-ban .nx em { font-style: normal; font-weight: 700; color: var(--ts-akzent); } .tc-hb-ban .nx em.rot { color: var(--ts-red); }
.tc-hb .sub { color: var(--ts-gedaempft); font-size: var(--ds-fs-hinweis); }
.tc-hb-bar { height: 8px; border-radius: 4px; background: var(--hb-leer); overflow: hidden; margin: 4px 0; }
.tc-hb-bar i { display: block; height: 100%; background: var(--ts-akzent); }
.tc-hb-bar.voll i { background: var(--ts-red); }
.tc-hb-drei { display: grid; grid-template-columns: 1.25fr 1fr 1fr; gap: var(--hb-gap); }
.tc-hb-zwei { flex: 1; min-height: 0; display: grid; grid-template-columns: 1fr 1fr; gap: var(--hb-gap); }
.tc-hb-kar { border: 1px solid var(--ts-panel-bd); border-radius: var(--ds-radius); padding: 8px 12px; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.tc-hb-kar.fuellt { min-height: 0; }
.tc-hb-kar h3 { margin: 0; font-size: var(--ds-fs-hinweis); text-transform: uppercase; letter-spacing: .05em; color: var(--ts-gedaempft); }
.tc-hb-kk { display: flex; justify-content: space-between; gap: var(--ds-s); align-items: baseline; }
.tc-hb-disk { display: flex; gap: 12px; align-items: center; }
.tc-hb-disk .rest { flex: 1; min-width: 0; }
.tc-hb-disk .bild { width: 50px; height: 64px; border-radius: 7px; border: 2px solid var(--ts-ink-hover); background: var(--ts-flaeche); position: relative; flex: none; }
.tc-hb-disk .bild::after { content: ""; position: absolute; left: 9px; right: 9px; bottom: 8px; height: 5px; border-radius: 3px; background: var(--ts-ink-hover); }
.tc-hb-disk .bild.aus { opacity: .35; border-style: dashed; }
.tc-hb-disk .bild.netz { border-radius: 50%; width: 54px; height: 54px; }
.tc-hb-disk .bild.netz::after { display: none; }
.tc-hb-steckt { font-size: var(--ds-fs-hinweis); padding: 1px 6px; border-radius: 9px; background: var(--hb-gruen-bg); color: var(--ts-ok-text); font-weight: 600; }
.tc-hb-steckt.nein { background: var(--hb-rot-bg); color: var(--ts-red); }
.tc-hb-bel { display: flex; justify-content: space-between; font-size: var(--ds-fs-text); margin-top: 4px; }
.tc-hb-kn { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 12px; }   /* Jörg 05.11.: Knöpfe klebten am Plattensymbol — Abstand wie gap der Plattenzeile */
.tc-hb-wt { display: flex; gap: 5px; }
.tc-hb-wt span { width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--ts-panel-bd); display: flex; align-items: center; justify-content: center; font-weight: 600; color: var(--ts-gedaempft); }
.tc-hb-wt span.an { background: var(--ts-akzent); border-color: var(--ts-akzent); color: var(--ts-sec-fg); }
.tc-hb-pill { display: inline-block; padding: 2px 9px; border-radius: 12px; background: var(--ts-flaeche); border: 1px solid var(--ts-panel-bd); font-size: var(--ds-fs-text); margin: 0 4px 4px 0; }
.tc-hb-pill.ok { background: var(--hb-gruen-bg); border-color: var(--hb-gruen-bd); color: var(--ts-ok-text); }
/* §4468 Auto-Pause-Block in der Kachel Einstellungen: Haken in eigener Zeile, darunter beide Uhrzeiten nebeneinander in Inhaltsbreite */
.tc-hb-pause { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--ts-panel-bd); font-size: var(--ds-fs-text); }
.tc-hb-pause > label { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; cursor: pointer; }
.tc-hb-pause > .sub { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.tc-hb-pause input[type="time"] { width: auto; flex: 0 0 auto; margin: 0; }
.tc-hb-achse { position: relative; height: 58px; }
.tc-hb-achse .l { position: absolute; left: 0; right: 0; top: 24px; height: 2px; background: var(--ts-panel-bd); }
.tc-hb-achse .p { position: absolute; top: 18px; width: 2px; height: 14px; margin-left: -1px; background: var(--ts-akzent); opacity: .4; }
.tc-hb-achse .v { position: absolute; top: 17px; width: 16px; height: 16px; margin-left: -8px; border-radius: 50%; border: 2px solid var(--ts-panel-bg); box-shadow: 0 0 0 1px var(--ts-line-hover); background: var(--hb-n); }
.tc-hb-achse .v.g { background: var(--hb-g); } .tc-hb-achse .v.y { background: var(--hb-y); } .tc-hb-achse .v.r { background: var(--hb-r); } .tc-hb-achse .v.b { background: var(--hb-b); }
.tc-hb-achse .t { position: absolute; top: 40px; font-size: var(--ds-fs-hinweis); color: var(--ts-gedaempft); transform: translateX(-50%); white-space: nowrap; }
.tc-hb-achse .ohne { position: absolute; left: 0; top: 10px; height: 30px; background: repeating-linear-gradient(45deg, transparent 0 4px, var(--hb-leer) 4px 6px); }
.tc-hb-leg { display: flex; gap: 12px; font-size: var(--ds-fs-hinweis); color: var(--ts-gedaempft); flex-wrap: wrap; }
.tc-hb-leg span { display: flex; align-items: center; gap: 4px; }
.tc-hb-plan { width: 2px; height: 12px; background: var(--ts-akzent); opacity: .4; display: inline-block; }
.tc-hb-rolle { flex: 1; min-height: 0; overflow-y: auto; }
.tc-hb-zl { display: grid; grid-template-columns: 14px 104px 1fr; gap: var(--ds-s); align-items: center; padding: 4px 0; border-bottom: 1px solid var(--ts-trenn); font-size: var(--ds-fs-text); }
.tc-hb-zl span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tc-hb-fuss { display: flex; align-items: center; gap: 6px; border-top: 1px solid var(--ts-trenn); padding-top: var(--ds-s); margin-top: var(--ds-s); }
.tc-hb-fuss { flex-wrap: wrap; }
.tc-hb-fuss > .kbtn { flex: 1 1 0; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }   /* §4433 Knopfleiste immer EINE Zeile (K-432) — Knöpfe teilen sich die Breite, Langtext im title */
.tc-hb-fuss .dlg-status { flex: 0 0 100%; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }   /* §4428 Statuszeile eigene Zeile über den Knöpfen (Jörg: Statuszeile über der Knopfleiste) — vorher 69 px sichtbar bei 507 px Text */
.tc-hb .kbtn { white-space: nowrap; }
/* §4430 technikCENTER › Acronis Backup (seiten/acronis_backup.php/.js) — gemeinsamer Baustein mit Hyper Backup: Rahmen .tc-hb + Zusatz .tc-acb (Jörg 04.11. 16:32); linke Kachel 420 px (Vorgabe 04.11. 14:25) */
.tc-acb { --hb-links: 420px; --acb-name: 100px; --acb-wann: 64px; }
.tc-acb .tc-acb-konto { min-width: 0; }
.tc-acb .tc-hb-ag.tc-acb-ag { grid-template-columns: 14px var(--acb-name) minmax(0, 1fr) var(--acb-wann); grid-template-areas: none; row-gap: 1px; }   /* §4433 minmax(0,…) statt 1fr: Liste lief 14 px über */
.tc-acb .tc-acb-ag > * { grid-area: auto; }
.tc-acb .tc-acb-ag .z2 { grid-column: 2 / -1; font-size: var(--ds-fs-hinweis); color: var(--ts-gedaempft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tc-acb .tc-acb-nfr { font-size: var(--ds-fs-hinweis); padding: 0 5px; border-radius: 8px; background: var(--hb-blau-bg); color: var(--ts-akzent); }
.tc-acb .tc-hb-zwei.tc-acb-drei { grid-template-columns: 1fr 1fr 1fr; }
.tc-acb .tc-acb-alarm { cursor: pointer; } .tc-acb .tc-acb-alarm.sel { background: var(--hb-blau-bg); }
.tc-acb .tc-hb-links > .fil-sec-body > .dlg-status { flex: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ══ §4611 ENTWICKLUNG (Kopfleiste 🛠, entwicklung.js) — Fenster nach Entwurf §4610 (ent_skizze_1892x1010), Jörg 07.11. 13:30 freigegeben ══ */
.app-bar .hd-version .hd-fahne, .ent-ovl .hd-fahne{display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 8px; background: var(--ts-red); color: var(--ts-sec-fg); font-size: 11px; font-weight: 700; line-height: 16px; cursor: pointer;}
.ent-ovl{z-index: 99997;}
/* §4646 Kachel-Auslöser (Entwicklermodus): 🛠 rechts im Kachel-/Fensterkopf, Farbe des Kopfes, ohne die Kopfzeile zu verschieben */
.fil-sec-head.ent-hat, .es-wrap .es-title.ent-hat, .es-wrap .es-ph.ent-hat{position: relative; padding-right: 26px;}   /* §4735: auch Einstellungsköpfe (Seitenkopf, Kachel-/Rubrikkopf) */
.ent-kachel{position: absolute; right: var(--ds-xs); top: 50%; transform: translateY(-50%); background: var(--ts-panel-bg); border: 0; border-radius: 3px; cursor: pointer; font-size: 12px; line-height: 1; padding: 2px 4px; opacity: .85;}   /* Jörg 17:45 „viel zu dunkel“: graues Emoji auf dunklem Kopf unsichtbar — heller Untergrund wie §3648 (.tc-sym) */
.ts-dlg-box > .h.ent-hat{--ent-x-abstand: 130px; position: relative;}   /* ✕ bleibt in der Ecke (Jörg 20:01: Polsterung hatte das ✕ nach links geschoben) — 🛠 liegt absolut 130 px links davon */   /* Jörg 07.11. 19:41: 🛠 nicht neben dem ✕ (Fehlklick) — rund 3–4 cm links davon, nicht ganz links (dort steht der Titel) */
.ts-dlg-box > .h > .ent-kachel{right: var(--ent-x-abstand);}
.ent-kachel:hover, .ent-kachel:focus-visible{opacity: 1; outline: 2px solid var(--ts-red);}
/* §4622 Größe nur über die Stufe ts-dlg-gross (R-4.14: vier Breiten, keine festen Pixel) — vorher 1500 px, durch max-width der Grundstufe (480 px) gedeckelt */
.ent-ovl .ent-b{display: flex; flex-direction: column; min-height: 0; overflow: hidden; white-space: normal;}
.ent-ovl .ent-reiter{flex: 0 0 auto; padding-bottom: var(--ds-m); border-bottom: 1px solid var(--ts-trenn);}
.ent-ovl .ent-seite{flex: 1 1 auto; min-height: 0; padding-top: var(--ds-m);}
.ent-ovl .ent-seite[hidden]{display: none;}
.ent-ovl .ent-neu{display: grid; grid-template-columns: 1fr 1fr; gap: var(--ds-l);}
.ent-ovl .ent-neu > .fil-sec, .ent-ovl .ent-version > .fil-sec{margin: 0; min-height: 0;}
.ent-ovl .ent-form{flex: 1 1 auto; min-height: 0; grid-template-rows: auto auto auto 1fr auto auto;}
.ent-ovl .ent-form > .ent-text, .ent-ovl .ent-form > .ent-text > textarea{align-self: stretch;}   /* §4622 Beschreibung füllt die 1fr-Zeile (Bild Jörg 14:33: Feld stand mittig mit Leerraum darüber) */
.ent-ovl .ent-form > .ent-text > textarea{height: auto; min-height: 160px; resize: none;}
.ent-ovl .ent-bild{flex: 1 1 auto; min-height: 120px; border: 2px dashed var(--ts-line); border-radius: var(--ds-radius); display: flex; align-items: center; justify-content: center; overflow: hidden; background: var(--ts-flaeche);}
.ent-ovl .ent-bild:focus{outline: none; border-color: var(--ts-akzent);}
.ent-ovl .ent-bild img{max-width: 100%; max-height: 100%; object-fit: contain;}
.ent-ovl .ent-bild-hinweis{color: var(--ts-dim); font-size: 13px; text-align: center; line-height: 1.6; padding: 0 var(--ds-l);}
.ent-ovl .ent-bild-knoepfe{display: flex; flex-wrap: wrap; gap: 8px; margin-top: var(--ds-m);}
.ent-ovl .ent-thumbs{display: flex; gap: 8px; margin-top: var(--ds-m); min-height: 76px; flex: 0 0 auto;}
.ent-ovl .ent-bild-knoepfe{flex: 0 0 auto;}   /* DFA-Bau: Miniaturen wurden in 1400×740 unten abgeschnitten */
.ent-ovl .ent-thumb{width: 120px; height: 76px; padding: 0; border: 1px solid var(--ts-line); border-radius: 6px; background: var(--ts-panel-bg); cursor: pointer; overflow: hidden; display: flex; flex-direction: column;}
.ent-ovl .ent-thumb.on{border: 2px solid var(--ts-akzent);}
.ent-ovl .ent-thumb img{flex: 1 1 auto; min-height: 0; width: 100%; object-fit: cover;}
.ent-ovl .ent-thumb span{font-size: 11px; color: var(--ts-dim); padding: 1px 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
/* §4656 Skizze dfa_neu: rechts Bildschirmfoto füllt + eigene Kachel „Wird automatisch mitgeschickt“ (5 Zeilen fest); Auswahlfelder so hoch wie Textfelder */
.ent-ovl .ent-rechts{display: grid; grid-template-rows: minmax(0, 1fr) auto; gap: var(--ds-l); min-height: 0;}
.ent-ovl .ent-mitg > .fil-sec-body{padding-top: 0; padding-bottom: 0;}
.ent-ovl select.sel{height: var(--ts-feld-h);}
.ent-ovl .ent-einsp-z > label{flex: 0 0 120px; color: var(--ts-gedaempft); font-weight: 600;}
.ent-ovl .ent-auto-tab{table-layout: fixed;}
.ent-ovl .ent-auto-tab td{font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
.ent-ovl .ent-auto-tab td:first-child{width: 170px; color: var(--ts-dim);}
/* §4656 Skizze dfa_liste (freigegeben 18:00): Liste fest 330 px, Eintrag füllt; Kacheln als Spalte, damit Tabelle/Formular die Höhe bekommen (vorher Zeilen ohne Höhe) */
.ent-ovl .ent-liste{display: grid; grid-template-rows: 250px minmax(0, 1fr); gap: var(--ds-l);}
.ent-ovl .ent-liste > .fil-sec, .ent-ovl .ent-rechts > .fil-sec, .ent-ovl .ent-neu > .fil-sec{display: flex; flex-direction: column;}
.ent-ovl .ent-liste > .fil-sec > .fil-sec-body:not(.ent-d), .ent-ovl .ent-rechts > .fil-sec > .fil-sec-body{flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column;}
.ent-ovl .ent-lk .tbl-box{flex: 1 1 auto; min-height: 0;} .ent-ovl .ent-lk .tbl-scroll{flex: 1 1 auto; min-height: 0; overflow: auto;}
.ent-ovl .ent-tab thead th{position: sticky; top: 0; z-index: 1;}
.ent-ovl .ent-detail > .fil-sec-body.ent-d{display: grid; grid-template-columns: 1fr 1fr; gap: var(--ds-l);}   /* schlägt .ts-dlg-box .b .fil-sec-body (flex, Z. ~2577) */
.ent-ovl .ent-d > .fen-form.ent-dl, .ent-ovl .ent-d > .fen-form.ent-dr{height: 100%; grid-template-rows: var(--ts-feld-h) var(--ts-feld-h) minmax(0, 1fr); align-content: stretch;}
.ent-ovl .ent-d > .fen-form.ent-dr{grid-template-rows: var(--ts-feld-h) minmax(0, 1fr) var(--ts-feld-h);}
.ent-ovl .ent-d > .fen-form > .fz.ent-text{align-self: stretch; align-items: stretch; grid-template-rows: minmax(0, 1fr);}
.ent-ovl .ent-d > .fen-form > .fz.ent-text > label{align-self: start; padding-top: 6px;}
.ent-ovl .ent-d > .fen-form > .fz.ent-text > .v{align-self: stretch; height: auto; overflow: auto; resize: none;}
.ent-ovl .ent-dk{display: flex; gap: var(--ds-s); align-items: center; flex-wrap: nowrap;}
.ent-mark .ent-bilder-b{height: 520px; overflow: auto; display: flex; flex-wrap: wrap; gap: var(--ds-m); align-content: flex-start;}
.ent-mark .ent-bilder-b img{max-width: 100%; border: 1px solid var(--ts-line); border-radius: 6px;}
.ent-ovl .ent-liste > .fil-sec{margin: 0; min-height: 0;}
.ent-ovl .ent-tab{table-layout: fixed;}
.ent-ovl .ent-tab td{white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
.ent-ovl .ent-tab tbody tr{cursor: pointer;}
.ent-ovl .ent-tab tbody tr.sel td{background: var(--ts-field-focus);}
.ent-ovl .ent-tab col.c-nr{width: 80px;} .ent-ovl .ent-tab col.c-dt{width: 140px;} .ent-ovl .ent-tab col.c-art{width: 80px;} .ent-ovl .ent-tab col.c-wo{width: 240px;}
.ent-ovl .ent-tab col.c-ben{width: 170px;} .ent-ovl .ent-tab col.c-st{width: 120px;} .ent-ovl .ent-tab col.c-v{width: 100px;}
.ent-ovl .ent-tab .st-neu, .ent-ovl .ent-tab .st-wieder_offen, .ent-ovl .ent-tab .st-rueckfrage{color: var(--ts-red); font-weight: 700;}
.ent-ovl .ent-tab .st-geloest, .ent-ovl .ent-tab .st-bestaetigt{color: var(--ts-ok); font-weight: 700;}
.ent-ovl .ent-d{overflow: auto;}
.ent-ovl .ent-dtext{white-space: pre-wrap; height: auto; min-height: var(--ds-feld); line-height: 1.45;}
.ent-mark{z-index: 99999;}
html body .ts-dlg.ent-vorn{z-index: 99999;}   /* §4665 Anleitungs-PDF aus dem Entwicklungsfenster: Vorschaufenster vor .ent-ovl (99997) */
/* §4650 Übergabe-Kachel (Reiter „Was ist neu“, nur Verwaltung): feste Höhe (zwei Zeilen), Status einzeilig mit Ellipse; darunter füllt „Was ist neu“ den Rest (K-394) */
.ent-ovl .ent-version{display: grid; grid-template-rows: minmax(0, 1fr); gap: var(--ds-l);}
.ent-ovl .ent-version:has(> .ent-einsp){grid-template-rows: auto minmax(0, 1fr);}
.ent-ovl .ent-einsp .fil-sec-body{display: grid; grid-template-rows: var(--ds-feld) var(--ds-feld); gap: var(--ds-m); align-items: center;}
.ent-ovl .ent-einsp-z{display: flex; align-items: center; gap: var(--ds-m); min-width: 0;}
.ent-ovl .ent-einsp-st{flex: 1 1 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--ts-dim);}
.ent-mark .ts-dlg-box .b:has(> pre.ent-log-b){display: flex; flex-direction: column; overflow: hidden;}   /* §4745 (Jörg 18:13 „Kachel scrollt und Kinderkachel scrollt nochmal“): NUR der <pre> rollt — der Rumpf nicht; feste 420 px waren groesser als der Rumpf der Stufe mittel */
.ent-mark pre.ent-log-b{flex: 1 1 auto; min-height: 0; height: auto; margin: 0; padding: var(--ds-s); overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; font-family: monospace; font-size: 12px; line-height: 1.4; border: 1px solid var(--ts-line); border-radius: var(--ds-radius); background: var(--ts-panel-bg);}   /* §4735: vorher div.v.ro — dessen nowrap/Ellipse gewann (Jörg 16:29: eine Zeile mit …) · §4743 (Jörg 17:24 „Zeilenbrüche rein“): Präfix .tspro-ui entfernt — die Klasse sitzt auf demselben Element wie .ent-mark, die Regel traf nie, der <pre> blieb bei white-space:pre */
.ent-mark .ent-mark-b{display: flex; align-items: center; justify-content: center; overflow: hidden; background: var(--ts-flaeche);}
.ent-mark .ent-mark-c{max-width: 100%; max-height: 100%; cursor: crosshair;}
.ent-ovl .ent-erl{margin: 6px 0 0; padding-left: 18px;}
.ent-ovl .ent-erl li{margin-bottom: 2px;}
.ent-ovl .ent-erl-ok{color: var(--ts-ok); font-weight: 700;}

/* §4662 Neuigkeiten-Fenster bei der Anmeldung (nur andere Installationen) — Skizze dfa_news_1400x740 freigegeben (Jörg 07.11. 18:28).
   Stufe gross 1400×740; links Versionen 330 px, rechts Beschreibung 88 px · Anleitung · Bild füllt · Miniaturen 72 px — alles fest (K-394). */
.ent-news .hd-fahne{display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 8px; background: var(--ts-red); color: var(--ts-sec-fg); font-size: 11px; font-weight: 700; line-height: 1.4;}
.ent-news .ent-erl{margin: 6px 0 0; padding-left: 18px;}
.ent-news .ent-erl li{margin-bottom: 2px;}
.ent-news .ent-erl-ok{color: var(--ts-ok); font-weight: 700;}
.ent-news .ts-dlg-box > .b{display: flex; flex-direction: column; min-height: 0;}
.ent-news .ent-news-g{display: grid; grid-template-columns: 330px minmax(0, 1fr); gap: var(--ds-l); flex: 1 1 auto; min-height: 0;}
.ent-news .ent-news-g > .fil-sec{display: flex; flex-direction: column; min-height: 0; margin: 0;}
.ent-news .ent-news-g > .fil-sec > .fil-sec-head{white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
.ent-news .ent-news-u{font-weight: 400; opacity: .8; margin-left: 8px;}
.ent-news .ent-news-g > .fil-sec > .fil-sec-body.ent-news-vl{flex: 1 1 auto; min-height: 0; overflow: auto; padding: 0; display: block;}
.ent-news .ent-news-ver{padding: 8px 12px; border-bottom: 1px solid var(--ts-line); cursor: pointer;}
.ent-news .ent-news-ver.on{background: var(--ts-flaeche); box-shadow: inset 3px 0 0 var(--ts-akzent);}
.ent-news .ent-news-ver.alt{color: var(--ts-dim);}
.ent-news .ent-news-z{font-size: 12px; color: var(--ts-dim);}
.ent-news .ent-news-b{display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;}
.ent-news .ent-news-g > .fil-sec > .fil-sec-body.ent-news-d{flex: 1 1 auto; min-height: 0; display: grid; grid-template-rows: 88px auto minmax(0, 1fr) 72px; gap: var(--ds-m);}
.ent-news .ent-news-text{overflow: auto; font-size: 13px; line-height: 1.5;}
.ent-news .ent-news-text p{margin: 0 0 4px;}
.ent-news .ent-news-anl{display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 2px solid var(--ts-akzent); border-radius: var(--ds-radius); background: color-mix(in srgb, var(--ts-akzent) 8%, transparent);}
.ent-news .ent-news-anl.aus{border-color: var(--ts-line); background: transparent; color: var(--ts-dim);}
.ent-news .ent-news-ah{font-size: 12px; color: var(--ts-dim);}
.ent-news .ent-news-bild{position: relative; min-height: 0; border: 1px solid var(--ts-line); border-radius: var(--ds-radius); background: var(--ts-flaeche); display: flex; align-items: center; justify-content: center; overflow: hidden;}
.ent-news .ent-news-bild img{max-width: 100%; max-height: 100%; object-fit: contain;}
.ent-news .ent-news-bz{position: absolute; left: 10px; bottom: 6px; font-size: 12px; color: var(--ts-dim); background: var(--ts-panel-bg); padding: 1px 6px; border-radius: 4px;}
.ent-news .ent-news-mini{display: flex; gap: 8px; overflow-x: auto; overflow-y: hidden;}
.ent-news .ent-news-m{width: 110px; height: 68px; flex: 0 0 auto; border: 1px solid var(--ts-line); border-radius: 4px; background: var(--ts-flaeche); padding: 0; position: relative; overflow: hidden; cursor: pointer;}
.ent-news .ent-news-m.on{border: 2px solid var(--ts-akzent);}
.ent-news .ent-news-m img{width: 100%; height: 100%; object-fit: cover;}
.ent-news .ent-news-m span{position: absolute; left: 0; right: 0; bottom: 0; font-size: 11px; background: var(--ts-panel-bg); opacity: .9; padding: 1px 4px; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
/* §4667 Reiter „Was ist neu“ im gleichen Aufbau wie das Neuigkeiten-Fenster: .ent-vneu füllt die 1fr-Zeile unter der Übergabe-Kachel */
.ent-ovl .ent-version > .ent-vneu{display: flex; flex-direction: column; min-height: 0;}
.ent-news .ent-news-pdf{font-size: 12px; margin-left: 4px;}
/* §4676 Ohne Bilder keine leere Miniaturenzeile — die Bildfläche bekommt die 72 px (Jörg: Bildfläche im Reiter „Was ist neu“ zu klein) */
.ent-news .ent-news-g > .fil-sec > .fil-sec-body.ent-news-d:has(> .ent-news-mini:empty){grid-template-rows: 88px auto minmax(0, 1fr);}
.ent-news .ent-news-mini:empty{display: none;}

/* ══ §4853 ARTIKELMASKE — obere Kacheln flach (Jörg 09.11.2026 13:56, Skizze §4849 Fassung 2) ═════════════════════════
   Ziel: Kopf 1 Zeile, obere Reihe 4 Zeilen (Kachelhöhe = 48 + 35·n) → untere Reihe (Suche, Eigenschaften) ~145 px höher.
   Breiten Stammdaten : Beschreibung : Bestand+Preise = 695 : 315 : 650 (bei 1920 px Fenster). */
.art-wrap .art-3col { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) max-content; }   /* Jörg 09.11. 14:28: Bestand+Preise nur so breit wie ihr Inhalt, der Rest geht 2:1 an Stammdaten und Beschreibung */
.art-wrap .art-3col > .art-pb { grid-template-columns: max-content max-content; }
/* Kopf: Artikelnummer und Artikelname in EINER Zeile */
.tspro-ui.art-wrap .lbl-auto .art-prodzeile { grid-template-columns: max-content auto max-content minmax(0, 1fr); }
/* Stammdaten: Paare in 4 Spalten, Kategorie über die volle Breite, Kennzeichen neben dem Nachfolger */
.tspro-ui.art-wrap .art-stamm.lbl-auto > .fil-sec-body { grid-template-columns: var(--fb-140) minmax(0, 1fr) var(--fb-140) minmax(0, 1fr); }   /* beide Beschriftungsspalten gleich breit (längste: Herstellernummer/Nachfolgeartikel ≈ 134 px gemessen) */
.art-wrap .art-stamm .kat-row { grid-column: 2 / -1; }
.art-wrap .art-stamm > .fil-sec-body > .fz > .v, .art-wrap .art-stamm .nf-row, .art-wrap .art-stamm .kat-row { width: auto; max-width: none; min-width: 0; justify-self: stretch; }
.tspro-ui.art-wrap .art-stamm.lbl-auto.fil-sec > .fil-sec-body > .ck-row.ck-row { grid-column: 3 / -1; margin-top: 0; padding-top: 0; justify-content: flex-start; align-items: center; gap: 14px; }
.art-wrap .art-stamm .ck-row .ck-dok { position: static; transform: none; margin-left: auto; white-space: nowrap; flex: 0 0 auto; }   /* Lint 14:42: brach bei 683 px Kachelbreite zweizeilig um */
.tspro-ui.art-wrap .art-stamm.lbl-auto.fil-sec > .fil-sec-body > .ck-row.ck-row { gap: 10px; }
/* Beschreibung: Reiter, EIN Textfeld sichtbar */
.art-wrap .art-besch .art-reiter { display: flex; gap: 6px; align-items: center; flex: 0 0 auto; margin-bottom: var(--fz-zeilen-gap); }
.art-wrap .art-besch .art-reiter-k { height: var(--ts-btn-h); padding: 0 10px; border: 1px solid var(--ts-panel-bd); border-radius: 12px; background: var(--ts-field-bg); color: var(--ts-ink); font-size: 12px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.art-wrap .art-besch .art-reiter-k.an { background: var(--ts-ink); border-color: var(--ts-ink); color: var(--ts-sec-fg); }
.art-wrap .art-besch .art-reiter-k.voll::after { content: ' •'; }
.art-wrap .art-besch .art-reiter-tb { margin-left: auto; display: flex; }
.art-wrap .art-besch .art-reiter-tb > .kbtn { display: none; }
.art-wrap .art-besch .art-reiter-tb > .kbtn.an { display: inline-flex; }
.art-wrap .art-besch .art-reiter-inhalt > .fz:not(.an) { display: none; }
.art-wrap .art-besch .art-reiter-inhalt > .fz.an { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
.art-wrap .art-besch .art-reiter-inhalt > .fz.an > textarea { flex: 1 1 auto; height: 100%; min-height: 52px; }
/* Preise: netto | brutto nebeneinander (EK, VK), EK-Datum und Kalkulation über beide Spalten */
.tspro-ui.art-wrap .art-preise.lbl-auto > .fil-sec-body { grid-template-columns: max-content auto auto; }
.art-wrap .art-preise .pr-wert { width: var(--fb-90); justify-content: flex-end; text-align: right; font-variant-numeric: tabular-nums; }
.art-wrap .art-preise .preis-zeile > .fb-datum { grid-column: 2 / -1; width: auto; justify-self: stretch; }

/* §4870 Artikelmaske S5 — Eigenschaften aus dem neuen System (Skizze §4849): Gerätetyp fehlt = rote Zeile, frühere Kategorie grau, Herkunft schmal */
.art-wrap #e_tblbox tr.eg-fehlt > td { background: var(--ts-field-bg); box-shadow: inset 3px 0 0 var(--ts-red); }
.art-wrap #e_tblbox tr.eg-frueher > td { color: var(--ts-ro-fg); }
.art-wrap #e_tblbox .eg-herkunft { width: var(--fb-110); color: var(--ts-ro-fg); font-size: 12px; }
.art-wrap #e_tblbox .eg-stern { color: var(--ts-warn); }

/* §4867 wawi-signer (Signierdienst, eigener Container, laedt diese Datei ueber /filialen.css) — nur .m-signer */
.m-signer { margin: 0; padding: var(--ds-m); background: var(--ts-panel-bg); font-size: var(--ds-fs-text); }
.m-signer .sig-seite { max-width: 1200px; margin: 0 auto; }
.m-signer .sig-kopf { display: flex; align-items: center; gap: var(--ds-m); margin-bottom: var(--ds-m); }
.m-signer .sig-kopf .btn { height: var(--ts-btn-h); padding: 0 12px; border: 1px solid var(--ts-akzent); border-radius: var(--ds-radius); background: var(--ts-akzent); color: var(--ts-sec-fg); cursor: pointer; }
.m-signer .sig-kopf .btn:hover { background: var(--ts-akzent-dark); }
.m-signer .sig-meldung { min-height: 1.4em; margin-bottom: var(--ds-m); }
.m-signer .sig-meldung.fehler { color: var(--ts-red); }
.m-signer .tab-kachel td .btn { height: var(--ts-btn-h); padding: 0 10px; border: 1px solid var(--ts-line); border-radius: var(--ds-radius); background: var(--ts-flaeche); cursor: pointer; }
.m-signer .tab-kachel tr.aktiv td { background: var(--ts-sel-bg); }
.m-signer .sig-skript { margin: 0; padding: var(--ds-m); max-height: 50vh; overflow: auto; white-space: pre; font-family: var(--ts-mono); }
