/*
  tabellen.css (T-1.192, E-109): Aussehen aller Tabellen und das Tabellenwerkzeug (tabelle.js,
  E-96) -- Spalten waehlen/verschieben/Breite, Umbruch, Sortieren, Filtern; dazu die besonderen
  Tabellen (Kontoblatt, OP-Liste, Saldenliste, Beleg-Positionen). Nach basis.css, vor app.css.
*/

table.status { width: 100%; border-collapse: collapse; margin-top: 1.5rem; }
table.status th, table.status td {
    text-align: left;
    padding: 0.55rem 0;
    border-bottom: 1px solid var(--linie);
    vertical-align: top;
}
table.status th { width: 16rem; font-weight: 500; color: var(--gedaempft); }
table.liste { width: 100%; border-collapse: collapse; margin-top: 1rem; font-size: 0.92rem; }
table.liste th, table.liste td {
    text-align: left;
    padding: 0.4rem 0.5rem;
    border-bottom: 1px solid var(--linie);
}
table.liste th { color: var(--gedaempft); font-weight: 500; }
table.liste td.zahl, table.liste th.zahl { text-align: right; white-space: nowrap; }
table.liste td.schmal { width: 1%; white-space: nowrap; }
table.liste tr.aktiv { background: var(--ton-akzent); }
table.liste td small { display: block; font-size: 0.78rem; }
/* Belegansicht (T-1.25): Datei links, Felder rechts */
table.felder th { width: 11rem; }
table.felder td { font-variant-numeric: tabular-nums; }
/* Akkordeon in der Belegliste (T-1.25, T-1.26): Zeile anklicken, darunter
   klappt der Beleg auf -- Datei links, Formular rechts. */
tr.zeile { cursor: pointer; }
tr.zeile:hover td { background: var(--grund); }
tr.zeile.aktiv td { background: var(--ton-akzent); }
tr.detail td { padding: 1rem 0.5rem 1.5rem; background: var(--grund); cursor: default; }
table.positionen input { width: 100%; margin: 0; padding: 0.3rem 0.45rem; font-size: 0.88rem; }
table.positionen td.zahl input { text-align: right; width: 6.5rem; }
table.positionen td { padding: 0.25rem 0.3rem; }
tr.sortierbar th { cursor: ns-resize; user-select: none; }
tr.sortierbar th.aktiv { color: var(--text); font-weight: 600; }
table.liste input[type="checkbox"] { width: auto; margin: 0; }
/* Spalten verschieben (T-1.42): die Ueberschrift ist ziehbar, das Ziel zeigt eine Kante. */
tr.sortierbar th[draggable] { cursor: grab; }
tr.sortierbar th.ziel-links { box-shadow: inset 3px 0 0 var(--akzent, #2f5bd6); }
tr.sortierbar th.ziel-rechts { box-shadow: inset -3px 0 0 var(--akzent, #2f5bd6); }
/*
  Das "+"-Menue der Spaltenwahl (Sitzung 13): schwebt als eigenes Fenster
  ueber der Tabelle, statt die Kopfzeile aufzublaehen.
*/
th.spaltenwahl { position: relative; }
th.spaltenwahl details { margin: 0; }
th.spaltenwahl summary { font-size: 1.1rem; font-weight: 600; padding: 0 0.3rem; list-style: none; }
th.spaltenwahl summary::-webkit-details-marker { display: none; }
th.spaltenwahl details[open] summary { color: var(--text); }
th.spaltenwahl details > form {
    position: absolute; right: 0; top: 100%; z-index: 20;
    min-width: 14rem; padding: 0.75rem 1rem; margin-top: 0.25rem;
    background: var(--flaeche); border: 1px solid var(--linie); border-radius: 8px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.12);
    text-align: left; font-weight: 400; color: var(--text); white-space: nowrap;
}
th.spaltenwahl details > form label.wahl { padding: 0.15rem 0; }
th.spaltenwahl details > form button { margin-top: 0.6rem; width: 100%; }
.zweispaltig aside table.uebersicht { width: 100%; margin-bottom: 0.9rem; border-collapse: collapse; font-size: 0.92rem; }
.zweispaltig aside table.uebersicht th { text-align: left; font-weight: 500; color: var(--gedaempft); white-space: nowrap; padding: 0.3rem 0; border-bottom: 1px solid var(--linie); }
.zweispaltig aside table.uebersicht td { text-align: right; font-variant-numeric: tabular-nums; padding: 0.3rem 0; border-bottom: 1px solid var(--linie); }
.zweispaltig aside table.uebersicht tr:last-child th, .zweispaltig aside table.uebersicht tr:last-child td { border-bottom: 0; }
/* Lieferantentabelle (T-1.52): Sortieren per Klick, Filterzeile unter den Ueberschriften */
tr.sortierbar-klick th a { color: inherit; text-decoration: none; }
tr.sortierbar-klick th a:hover { color: var(--akzent); }
tr.sortierbar-klick th.aktiv { color: var(--text); font-weight: 600; }
tr.filterzeile th { padding: 0.2rem 0.5rem 0.5rem; }
tr.filterzeile input, tr.filterzeile select { width: 100%; min-width: 5rem; margin: 0; padding: 0.3rem 0.45rem; font-size: 0.85rem; }
table.liste tr.gedaempft td { color: var(--gedaempft); }
td.ueberfaellig { color: var(--fehler); font-weight: 600; }
.baum table.konten { margin: 0.2rem 0 0.4rem 1.5rem; width: calc(100% - 1.5rem); }
tr.ziehbar { cursor: grab; }
tr.ziehbar.wird-gezogen { opacity: 0.4; }
.zweispaltig aside table.uebersicht th a { color: inherit; text-decoration: none; border-bottom: 1px dotted var(--gedaempft); }
.zweispaltig aside table.uebersicht th a:hover { color: var(--akzent); border-bottom-color: var(--akzent); }
/* Belegliste (T-1.76): Lieferant als Link, Konten ohne Umbruch, je Konto eine Zeile. */
tr.zeile a.zeilen-link { color: var(--akzent); text-decoration: none; border-bottom: 1px dotted var(--akzent); }
tr.zeile a.zeilen-link:hover { border-bottom-style: solid; }
/* Belegliste mit vielen Spalten (Sitzung 16): die Tabelle scrollt in ihrem Rahmen, die Karte
   bleibt stehen; Ueberschriften, Daten und Stati brechen nicht um. */
.tabelle-scroll { overflow-x: auto; margin: 0 -0.75rem; padding: 0 0.75rem; }
.tabelle-scroll table.liste { min-width: 100%; width: max-content; max-width: none; }
/* Feste Spalten (das Skript setzt table-layout: fixed): Ueberschriften brechen um, Zellen
   schneiden ab, was nicht mehr passt; ein Griff am rechten Rand zieht die Breite. */
.tabelle-scroll table.liste th { white-space: normal; overflow-wrap: anywhere; position: relative; vertical-align: bottom; }
.tabelle-scroll table.liste td { overflow: hidden; text-overflow: ellipsis; overflow-wrap: anywhere; }
.tabelle-scroll table.liste td.knapp { white-space: nowrap; }
.tabelle-scroll table.liste th .griff { position: absolute; top: 0; right: -3px; width: 7px; height: 100%; cursor: col-resize; z-index: 2; }
.tabelle-scroll table.liste th .griff:hover { background: var(--akzent); opacity: 0.4; }
.tabelle-scroll table.liste td .konto-kurz { overflow: hidden; text-overflow: ellipsis; }
.tabelle-scroll tr.detail > td { padding: 0; max-width: none; }
.tabelle-scroll .detail-rahmen { position: sticky; left: 0; box-sizing: border-box; padding: 1rem 0.5rem 1.5rem; }
/* Buchung in der Belegzeile (T-1.17, Sitzung 16): Positionen mit Kaestchen, Konto als Link, Kontowahl darunter. */
table.positionen-tabelle a.konto-link { color: var(--akzent); text-decoration: none; border-bottom: 1px dotted var(--akzent); }
table.positionen-tabelle input { width: 100%; margin: 0; padding: 0.25rem 0.4rem; font-size: 0.88rem; }
table.positionen-tabelle td.zahl input { text-align: right; width: 5.5rem; }
table.positionen-tabelle small { display: block; font-size: 0.75rem; }
/* Kompakte Listen mit Klappgruppen (Sitzung 18): Kontenplan und Gliederung. Weniger Hoehe je
   Zeile, eine Kopfzeile je Kontenklasse, Klick klappt ihre Zeilen ein ("zu"). */
table.liste.kompakt th, table.liste.kompakt td { padding: 0.15rem 0.5rem; font-size: 0.88rem; line-height: 1.3; }
table.liste.kompakt td form.inline button.schlicht { padding: 0; font-size: 0.82rem; }
table.liste.klappbar tr.klasse th { background: var(--grund); color: var(--text); font-weight: 600; cursor: pointer; padding: 0.35rem 0.5rem; user-select: none; }
table.liste.klappbar tr.klasse th small { margin-left: 0.5rem; font-weight: 400; }
table.liste.klappbar tr.klasse .pfeil { display: inline-block; width: 1em; transition: transform 0.15s; }
table.liste.klappbar tr.klasse.offen .pfeil { transform: rotate(90deg); }
table.liste.klappbar tr.zu { display: none; }
.baum.klappbar .posten.zu, .baum.klappbar table.konten.zu { display: none; }
.baum.klappbar table.konten { margin: 0.1rem 0 0.2rem 1.5rem; }
.baum.klappbar table.konten td { padding: 0.1rem 0.5rem; font-size: 0.88rem; }
table.positionen-tabelle input.buchungstext { display: block; font-size: 0.78rem; margin-top: 0.15rem; padding: 0.15rem 0.35rem; color: var(--gedaempft); }
table.positionen-tabelle input.buchungstext:focus { color: var(--text); }
.baum table.konten input.konto-wahl, .liste input.konto-wahl { width: auto; margin: 0 0 0 0.2rem; vertical-align: middle; }
table.positionen-tabelle th, table.positionen-tabelle td { padding: 0.25rem 0.4rem; }
table.positionen-tabelle td.zahl input { width: 4.8rem; }
table.daten { width: 100%; border-collapse: collapse; margin: 0.25rem 0 0.75rem; font-size: 0.9rem; }
table.daten th { text-align: left; font-weight: 500; color: var(--gedaempft); width: 11rem; padding: 0.15rem 0.5rem 0.15rem 0; vertical-align: middle; white-space: nowrap; }
table.daten td { padding: 0.15rem 0; vertical-align: middle; }
table.daten td input[type="text"], table.daten td input[type="date"], table.daten td input[type="number"], table.daten td select { width: 100%; margin: 0; padding: 0.3rem 0.5rem; font-size: 0.9rem; box-sizing: border-box; }
table.daten td textarea.betreff { width: 100%; margin: 0; box-sizing: border-box; border: 1px solid var(--linie); border-radius: 6px; font: inherit; resize: vertical; }
table.daten td .feldzeile { display: flex; gap: 0.4rem; align-items: center; }
table.daten td .feldzeile input.kurz { width: 7rem; }
table.daten td .feldzeile.kennzeichen { flex-wrap: wrap; gap: 0.3rem 1rem; }
table.daten td .feldzeile label.wahl { margin: 0; font-size: 0.88rem; }
table.daten td .kontowahl { flex: 1; }
table.daten td a.konto-link.schmal { border: none; font-size: 1rem; }
table.daten td.summen { font-size: 0.9rem; }
table.daten td.summen small { margin-left: 0.4rem; }
table.daten.buchung { border-top: 1px solid var(--linie); padding-top: 0.25rem; }
table.daten.buchung th.buchung-nr { color: var(--text); font-weight: 600; }
.hervorgehoben, tr.hervorgehoben td, .posten.hervorgehoben > .posten-kopf { background: var(--ton-warnung) !important; transition: background 1.5s; }
table.daten th { width: 9.5rem; }
table.daten th, table.daten td { vertical-align: middle; }
table.daten th small { font-weight: 400; }
table.daten th .marke { display: inline-block; min-width: 1.1rem; margin-left: 0.3rem; padding: 0 0.3rem; border-radius: 4px; background: var(--ton-warnung); color: var(--warnung); font-size: 0.8rem; text-align: center; }
table.daten th .marke.ok { background: var(--ton-erfolg); color: var(--erfolg); }
table.daten td input.datum, table.daten td input[type="date"] { width: 9.2rem !important; flex: 0 0 auto; }
table.daten td input.betrag, table.daten td input[type="number"] { text-align: right; padding-right: 0.5rem; }
table.daten td input.betrag { width: 9rem !important; flex: 0 0 auto; }
table.daten td input.kurz { width: 6rem !important; flex: 0 0 auto; }
table.daten td input.ganzkurz { width: 3.5rem !important; flex: 0 0 auto; }
table.daten td .feldzeile.nowrap { flex-wrap: nowrap; white-space: nowrap; }
table.daten td .feldzeile a.konto-link.schmal { order: -1; }
table.daten td.wert { text-align: right; padding-right: 0.5rem; font-variant-numeric: tabular-nums; }
table.daten td select { width: auto; max-width: 100%; }
details.lieferant-akkordeon table.daten.stamm th { width: 9rem; }
table.positionen-tabelle th.bezeichnung, table.positionen-tabelle td.bezeichnung { width: 45%; }
table.positionen-tabelle td.zahl input { width: 5.2rem; text-align: right; padding-right: 0.5rem; }
/* Nachbesserung Belegzeile (Durchsicht 2, Sitzung 18): feste Spaltenteilung, damit nichts ueber den
   Rand laeuft; Bezeichnungen einzeilig und vertikal mittig; niedrigere Felder und Wertzeilen. */
table.daten { table-layout: fixed; }
table.daten th { width: 10.5rem !important; white-space: nowrap; overflow: visible; vertical-align: middle !important; padding: 0.05rem 0.5rem 0.05rem 0; line-height: 1.6; }
table.daten td { vertical-align: middle !important; padding: 0.1rem 0; min-width: 0; }
table.daten td .feldzeile { min-width: 0; }
table.daten td .feldzeile > * { min-width: 0; }
table.daten td input[type="text"], table.daten td input[type="date"], table.daten td input[type="number"], table.daten td select, table.daten td textarea { padding: 0.15rem 0.45rem; font-size: 0.88rem; line-height: 1.35; }
table.daten td .kontowahl input[type="text"] { padding: 0.15rem 0.45rem; font-size: 0.88rem; }
table.daten td.wert { padding: 0 0.5rem 0 0; line-height: 1.5; }
table.daten td.wert small { margin-left: 0.3rem; }
table.daten th.buchung-nr { line-height: 1.8; }
/* Ebene gewaehlt (Sitzung 18): Konten bleiben verborgen, bis jemand einen Posten anklickt oder alles ausklappt. */
.baum.klappbar.ohne-konten table.konten { display: none; }
/* Durchsicht 3 (Sitzung 19): Die Belegzeile liegt in der Belegliste (.tabelle-scroll table.liste), deren
   Regeln auf die verschachtelten Tabellen durchschlagen (th umbrechend, td small als Block, td overflow
   hidden, Tabellen max-content) -- hier fuer die Zeile zurueckgenommen. */
.tabelle-scroll tr.detail > td { overflow: visible; }
.tabelle-scroll .detail-rahmen table.daten { width: 100%; min-width: 0; max-width: none; table-layout: fixed; }
.tabelle-scroll .detail-rahmen table.daten th { white-space: nowrap; overflow-wrap: normal; vertical-align: middle; position: static; }
.tabelle-scroll .detail-rahmen table.daten td { overflow: visible; text-overflow: clip; overflow-wrap: normal; }
.tabelle-scroll .detail-rahmen table.daten td small, .tabelle-scroll .detail-rahmen table.daten th small { display: inline; font-size: 0.78rem; }
.tabelle-scroll .detail-rahmen table.liste { width: 100%; min-width: 0; max-width: none; }
.tabelle-scroll .detail-rahmen table.liste th { white-space: nowrap; vertical-align: middle; }
.tabelle-scroll .detail-rahmen table.liste td { overflow: visible; }
/* Buchung dreispaltig: Bezeichnung | Zusatz oder Betrag | Feld; je Steuersatz ein Paar Betrag | Satz */
table.daten.buchung col.bez { width: 10.5rem; }
table.daten.buchung col.wert { width: 7rem; }
table.daten.buchung col.satz { width: 3.6rem; }
table.daten.buchung td.zusatz { padding-right: 0.4rem; white-space: nowrap; text-align: left; }
table.daten.buchung td.satz { padding-left: 0.3rem; white-space: nowrap; text-align: left; }
table.daten.buchung td.zusatz small, table.daten.buchung td.satz small { font-size: 0.78rem; margin: 0; }
table.daten.buchung td.wert { text-align: right; padding-right: 0.3rem; white-space: nowrap; }
table.daten.buchung button.textlink { margin: 0; }
table.daten.buchung input.hervorgehoben, table.positionen-tabelle input.hervorgehoben { background: var(--ton-warnung); }
/* Durchsicht Sitzung 20 (Melissa): "(Stamm)" und "Vom Standard" direkt an der Bezeichnung, das
   Feld ab Spalte 2; Steuercode nur so breit wie Betrag + Satz; rechts mehr Platz fuer die
   Positionen -- die Bezeichnung nimmt den Rest, die Zahlenfelder bleiben fest. */
table.daten.buchung col.bez { width: 12.5rem; }
table.daten.buchung th .zusatz { margin-left: 0.35rem; font-weight: 400; }
table.daten.buchung th button.textlink.zusatz { padding: 0; font-size: 0.8rem; vertical-align: baseline; }
table.daten.buchung td.steuercode select { width: 100%; }
table.positionen-tabelle th.bezeichnung, table.positionen-tabelle td.bezeichnung { width: auto; }
table.positionen-tabelle td.zahl { width: 5.2rem; white-space: nowrap; }
/* Reiter Fixkonten (E-95): schmale Nummernfelder je Zeile, rot wenn das Konto im Kontenplan fehlt */
table.fixkonten td.konto, table.steuerkonten td.konto, table.fixkonten th.konto, table.steuerkonten th.konto { width: 5.5rem; white-space: nowrap; }
table.fixkonten input.kontonummer, table.steuerkonten input.kontonummer { width: 5rem; margin: 0; padding: 0.25rem 0.4rem; font-size: 0.88rem; text-align: right; }
table.fixkonten td.fehlt { color: var(--fehler); }
table.fixkonten td form.inline { display: inline; }
/* Kurstabellen (E-93): Zeile mit Import-Formular, Kurse darunter in einem scrollbaren Kasten */
table.kurstabellen tr.aktiv td { background: var(--ton-akzent); }
table.kurstabellen form.import-form input[type="file"] { width: auto; margin: 0 0.3rem 0 0; font-size: 0.85rem; }
table.kurstabellen tr.detail > td { padding: 0.5rem 0.75rem 1rem; background: var(--grund); }
table.kurstabellen .fehler-text { color: var(--fehler); }
.kurse-liste table.kurse { margin: 0; }
table.daten.buchung td.steuersatz select { width: 5.5rem; margin: 0; padding: 0.3rem 0.4rem; font-size: 0.9rem; }
.tabelle-scroll .detail-rahmen table.daten td .eur-wert, table.daten td .eur-wert { display: block; margin: 0; text-align: right; }
table.kontoblatt td.kumuliert { font-weight: 600; }
table.saldenliste tr.fehlt td { color: var(--fehler); }
table.posten td.nummer { width: 5rem; white-space: nowrap; color: var(--gedaempft); }
table.posten tr.stufe1 td { font-weight: 600; }
table.posten tr.stufe2 td:nth-child(2) { padding-left: 1rem; }
table.posten tr.stufe3 td:nth-child(2) { padding-left: 2rem; }
table.posten tr.stufe4 td:nth-child(2) { padding-left: 3rem; }
table.posten tr.konto td:nth-child(2) { padding-left: 3.5rem; font-size: 0.85rem; }
table.posten tr.summe td { font-style: italic; }
table.posten tr.ergebnis td { font-weight: 600; border-top: 2px solid var(--linie); }
.auswertung-baum table.konten td.zahl { width: 7rem; font-variant-numeric: tabular-nums; }
.auswertung-baum tr.ergebnis td { font-weight: 600; border-top: 2px solid var(--linie); }
table.saldenliste tr.klasse th { background: var(--grund); font-weight: 600; color: var(--text); }
table.saldenliste tr.zwischensumme td { font-weight: 600; border-bottom: 2px solid var(--linie); }
/* Tabellenwerkzeug (E-96, tabelle.js): Leiste, Spaltenmenue, Griff, Sortierpfeile, Filterzeile, Umbruch */
.tabellen-leiste { display: flex; gap: 0.4rem; align-items: center; flex-wrap: wrap; margin: 0.5rem 0 0; font-size: 0.85rem; position: relative; }
.tabellen-leiste button.schlicht { padding: 0.2rem 0.5rem; font-size: 0.82rem; }
/* Filter als Knopf in der Leiste (T-1.205), der Pfeil zeigt offen/zu; der Bereich klappt darunter auf */
.tabellen-leiste button.filter-knopf { border: 1px solid var(--linie); border-radius: 6px; background: var(--grund); color: var(--text); }
.tabellen-leiste button.filter-knopf::before { content: "\25B8\00a0"; color: var(--gedaempft); }
.tabellen-leiste button.filter-knopf[aria-expanded="true"]::before { content: "\25BE\00a0"; }
.filter-klapp-inhalt { margin: 0.4rem 0 0; }
.filter-klapp-inhalt[hidden] { display: none; }
/* Ueberschrift und Tabellenleiste in einer Zeile (T-1.205, Positionen) */
.kopf-zeile { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.3rem 1rem; }
.kopf-zeile > h3 { margin-bottom: 0.3rem; }
.kopf-zeile > .tabellen-leiste { margin: 0; }
.spalten-menue { position: absolute; top: 100%; left: 0; z-index: 5; display: flex; flex-direction: column; gap: 0.2rem; padding: 0.5rem 0.75rem; background: var(--flaeche); border: 1px solid var(--linie); border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
.spalten-menue[hidden] { display: none; }
   /* display:flex wuerde sonst das hidden-Attribut schlagen (Sitzung 22) */
.spalten-menue label { display: flex; align-items: center; gap: 0.35rem; margin: 0; font-size: 0.85rem; white-space: nowrap; }
.spalten-menue label input { width: auto; margin: 0; }
table.werkzeug { width: 100%; }
table.werkzeug td.text { max-width: 22rem; }
/* Ueberschriften brechen um, wenn die Spalte zu schmal wird (Sitzung 24) -- nicht abschneiden */
table.werkzeug th { position: relative; cursor: pointer; user-select: none; white-space: normal; overflow-wrap: break-word; hyphens: auto; vertical-align: bottom; padding-right: 1.2rem; }
table.werkzeug th .griff { position: absolute; top: 0; right: 0; width: 7px; height: 100%; cursor: col-resize; }
table.werkzeug th .griff:hover { background: var(--akzent); opacity: 0.4; }
table.werkzeug th.sortiert-auf::after { content: " \25B2"; font-size: 0.7em; }
table.werkzeug th.sortiert-ab::after { content: " \25BC"; font-size: 0.7em; }
table.werkzeug th.wird-gezogen { opacity: 0.5; }
table.werkzeug th.ziel { box-shadow: inset 3px 0 0 var(--akzent); }
table.werkzeug th .umbruch-knopf { margin: 0 0 0 0.3rem; padding: 0 0.25rem; border: 1px solid var(--linie); background: var(--flaeche); color: var(--gedaempft); font-size: 0.75rem; border-radius: 3px; cursor: pointer; }
table.werkzeug th.umbruch-an .umbruch-knopf { color: var(--akzent); border-color: var(--akzent); }
table.werkzeug td { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
table.werkzeug td.umbruch { white-space: normal; overflow-wrap: anywhere; }
table.werkzeug tr.filter-zeile th { padding: 0.2rem 0.3rem; cursor: default; }
table.werkzeug tr.filter-zeile input { width: 100%; margin: 0; padding: 0.2rem 0.4rem; font-size: 0.8rem; }
/* Werkzeug im Scroll-Rahmen: die Belegliste-Regeln (Umbruch im Kopf, max-content) gelten dort nicht */
.tabelle-scroll table.werkzeug { width: max-content; min-width: 100%; }
.tabelle-scroll table.werkzeug thead th, table.werkzeug thead th.zahl { white-space: normal; overflow-wrap: break-word; }
.tabelle-scroll table.werkzeug td { overflow-wrap: normal; }
.tabelle-scroll table.werkzeug td.umbruch { white-space: normal; overflow-wrap: anywhere; }
table.op-liste tr.ueberfaellig td { color: var(--fehler); }
table.op-liste tr.klasse th { background: var(--grund); font-weight: 600; color: var(--text); }
table.op-liste tr.zwischensumme td { font-weight: 600; border-bottom: 2px solid var(--linie); }
/* Durchsicht Sitzung 23 (Melissa): Werte lt. Beleg im Buchungsblock, Wert-Kontrollen aufklappbar in kleiner
   Schrift, Summenzeile ueber den Positionen mit Haekchen, "x" vorne und USt % schmal, E-Mail und Betreff so
   niedrig wie der Buchungstext. */
table.daten.buchung td.wert input.beleg-wert { width: 100% !important; text-align: right; }
table.daten.buchung td.satz .whrg { font-size: 0.88rem; }
table.daten.buchung tr.kontrollen th { vertical-align: top !important; }
table.daten.buchung button.textlink.klapp { margin: 0; text-decoration: none; color: var(--gedaempft); font-size: 0.88rem; }
table.daten.buchung button.textlink.klapp .pfeil { display: inline-block; width: 0.9rem; }
table.positionen-tabelle tr.summen th { text-align: left; font-weight: 500; font-size: 0.82rem; white-space: nowrap; }
table.positionen-tabelle tr.summen th small { font-weight: 400; }
table.positionen-tabelle tr.summen td { font-size: 0.85rem; font-variant-numeric: tabular-nums; border-bottom: 1px solid var(--linie); }
table.positionen-tabelle tr.summen td .differenz { display: inline; color: var(--fehler); font-size: 0.75rem; }
table.positionen-tabelle td.schmal button.schlicht { padding: 0 0.3rem; line-height: 1.2; }
table.daten td input[type="email"] { width: 100%; margin: 0; padding: 0.15rem 0.45rem; font-size: 0.88rem; line-height: 1.35; box-sizing: border-box; }
table.daten td textarea.betreff { padding: 0.15rem 0.45rem; font-size: 0.88rem; line-height: 1.35; min-height: 1.9rem; field-sizing: content; }
/* T-1.165: Konto und Buchungstext im Lieferanten-Kontoblatt ungekuerzt -- die Zelle schneidet mit "…" ab,
   der Umbruch-Knopf (↵) bricht um, die Spaltenbreite (Griff) gibt den Platz vor; wie beim Aufwandskonto. */
table.werkzeug td .konto-kurz { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
table.werkzeug td.umbruch .konto-kurz { white-space: normal; overflow-wrap: anywhere; }
table.daten td input[inputmode="decimal"] { width: 100%; margin: 0; padding: 0.15rem 0.45rem; font-size: 0.88rem; line-height: 1.35; box-sizing: border-box; }
table.daten td input[inputmode="decimal"].betrag { width: 9rem !important; flex: 0 0 auto; }
table.daten td input[inputmode="decimal"].kurz { width: 6rem !important; flex: 0 0 auto; }
/* T-1.166: Menge und Einheit je Position (schmal), Zeile "Menge uebergeben" im Buchungsblock */
table.daten.buchung .menge-zeile label.wahl { margin: 0 0.4rem 0 0; font-size: 0.88rem; white-space: nowrap; }
table.daten.buchung .menge-zeile label.wahl input { width: auto; margin: 0 0.25rem 0 0; }
main.karte > p, main.karte > .hinweis, main.karte > .meldung, main.karte > form.beleg-form,
main.karte > table.status, main.karte > table.daten { max-width: 58rem; }
/* Positionen (Melissa, Sitzung 23, T-1.179/T-1.181): mit Menge und Einheit lief die Tabelle rechts aus
   dem Bild. Jetzt haengt sie am Tabellenwerkzeug (E-96): Spalten waehlen, verschieben, breiter ziehen,
   Bezeichnung umbrechen. table-layout: fixed teilt die Breite auf; die Angaben hier sind die
   Anfangsbreiten, das Werkzeug ueberschreibt sie mit dem, was der Benutzer gezogen hat. */
table.positionen-tabelle { table-layout: fixed; width: 100%; font-size: 0.82rem; }
table.positionen-tabelle th, table.positionen-tabelle td { padding: 0.15rem 0.25rem; overflow: visible; }
table.positionen-tabelle th.bezeichnung, table.positionen-tabelle td.bezeichnung { width: auto; min-width: 12rem; }
table.positionen-tabelle th.schmal, table.positionen-tabelle td.schmal { width: 1.7rem; padding: 0.15rem 0.1rem; }
table.positionen-tabelle th.menge, table.positionen-tabelle td.menge,
table.positionen-tabelle th.einheit, table.positionen-tabelle td.einheit,
table.positionen-tabelle th.satz, table.positionen-tabelle td.satz { width: 2.9rem; }
table.positionen-tabelle th.zahl, table.positionen-tabelle td.zahl { width: 5.6rem; }
table.positionen-tabelle td input, table.positionen-tabelle td textarea {
    width: 100%; min-width: 0; margin: 0; padding: 0.2rem 0.35rem; font: inherit; box-sizing: border-box;
    border: 1px solid var(--linie); border-radius: 6px; background: var(--flaeche); color: var(--text);
}
table.positionen-tabelle td input:focus, table.positionen-tabelle td textarea:focus { border-color: var(--akzent); outline: none; }
table.positionen-tabelle td.zahl input, table.positionen-tabelle td.menge input, table.positionen-tabelle td.satz input { text-align: right; padding-right: 0.3rem; }
/* Die Bezeichnung ist einzeilig wie am Fibu-Konto und laeuft waagrecht; "↵" in der Ueberschrift
   bricht sie um, dann waechst die Zeile mit dem Text. */
table.positionen-tabelle td.bezeichnung textarea { white-space: nowrap; overflow: hidden; resize: none; height: 1.8rem; line-height: 1.35; }
table.positionen-tabelle td.bezeichnung.umbruch textarea { white-space: pre-wrap; overflow: hidden; resize: vertical; height: auto; field-sizing: content; }
table.positionen-tabelle td.schmal input[type="checkbox"] { width: auto; border: 0; padding: 0; background: none; }
table.positionen-tabelle td.schmal button.schlicht { padding: 0 0.2rem; line-height: 1.2; }
/* Das Werkzeug schneidet Zellen sonst mit "…" ab -- hier stehen Felder drin, die sollen sichtbar bleiben */
table.positionen-tabelle td, table.positionen-tabelle th { white-space: normal; }
table.positionen-tabelle .tabellen-leiste { margin-bottom: 0.2rem; }
/* Bei vielen Spalten schiebt sich die Positionstabelle waagrecht statt abzuschneiden */
.kontierung .tabelle-quer { overflow-x: auto; }
/* T-1.191, E-109: der Scrollrahmen der Positionen reicht links bis unter die PDF (--unter-pdf misst
   beleg-zeile.js); die PDF-Spalte liegt eine Ebene hoeher, die Spalten verschwinden beim waagrechten
   Scrollen darunter. Mindestbreite, damit auf kleinen Schirmen gescrollt statt gequetscht wird. */
.unter-pdf { overflow-x: auto; margin-left: calc(-1 * var(--unter-pdf, 0px)); padding-left: var(--unter-pdf, 0px); }
.unter-pdf:focus-visible { outline: 2px solid var(--akzent); outline-offset: 2px; }
/* natuerliche Breite wie beim Kontoblatt statt auf die Spalte gequetscht -- sonst gibt es nichts zu scrollen */
/* (staerker als ".tabelle-scroll .detail-rahmen table.liste { width: 100% }" weiter oben) */
.beleg-detail .unter-pdf table.liste.positionen-tabelle { table-layout: auto; width: max-content; min-width: 100%; }
.beleg-detail .unter-pdf table.liste.positionen-tabelle td.bezeichnung,
.beleg-detail .unter-pdf table.liste.positionen-tabelle th.bezeichnung { min-width: 16rem; }
.beleg-detail .unter-pdf table.liste.positionen-tabelle td.zahl input { width: 6rem; }
/* Auswertungen (T-1.149, T-1.150, Melissa): Luft unter jeder Zwischensumme, damit die Gruppen
   auseinanderfallen; der Buchungstext bleibt einzeilig und wird abgeschnitten -- ein Klick klappt
   ihn auf. Spaltenbreiten sind am Schirm ziehbar (Tabellenwerkzeug) und im Druck anteilig. */
table.op-liste tr.zwischensumme td { padding-bottom: 0.45rem; }
table.op-liste tr.zwischensumme + tr.klasse th, table.saldenliste tr.zwischensumme + tr.klasse th { padding-top: 0.9rem; }
table.op-liste tr.zwischensumme::after { content: ""; display: block; height: 0.5rem; }
table.op-liste td.text, table.op-liste th.text { max-width: 22rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
table.op-liste td.text[data-ganzer-text] { cursor: pointer; }
table.op-liste td.text.offen { white-space: normal; overflow: visible; max-width: none; }
table.saldenliste tr.summe td, table.saldenliste tr.summe th { padding-bottom: 0.45rem; }
/* Die OP-Liste der Auswertungen hängt am Tabellenwerkzeug (T-1.149): Breiten kommen vom Griff,
   der Gruppenkopf und die Summenzeilen laufen über die ganze Breite und werden davon nicht erfasst. */
table.op-liste.werkzeug { table-layout: auto; }
table.op-liste tr.klasse th, table.op-liste tr.zwischensumme td, table.op-liste tfoot th { white-space: nowrap; }
/* Summenzeilen haben je Spalte eine Zelle (kein colspan); der Text laeuft in die leeren Nachbarzellen */
.tabelle-scroll table.op-liste .summen-text { overflow: visible; text-overflow: clip; }

/* Belegübersicht wie jede Werkzeug-Tabelle (T-1.197): "+ Spalten" in der Leiste ueber der Tabelle, Text
   einzeilig mit "…", "↵" in der Ueberschrift schaltet den Umbruch je Spalte */
details.spalten-klapp { position: relative; margin: 0; }
details.spalten-klapp > summary { list-style: none; cursor: pointer; padding: 0.2rem 0.5rem; color: var(--akzent); font-size: 0.82rem; }
details.spalten-klapp > summary::-webkit-details-marker { display: none; }
details.spalten-klapp[open] > summary { color: var(--text); }
details.spalten-klapp > .spalten-menue button { margin-top: 0.5rem; padding: 0.3rem 0.8rem; font-size: 0.85rem; }
.tabelle-scroll table.belegliste td { white-space: nowrap; }
.tabelle-scroll table.belegliste td.umbruch { white-space: normal; overflow-wrap: anywhere; }
.tabelle-scroll table.belegliste td.umbruch .konto-kurz { white-space: normal; }
table.belegliste th .umbruch-knopf { margin: 0 0 0 0.3rem; padding: 0 0.25rem; border: 1px solid var(--linie); background: var(--flaeche); color: var(--gedaempft); font-size: 0.75rem; border-radius: 3px; cursor: pointer; }
table.belegliste th.umbruch-an .umbruch-knopf { color: var(--akzent); border-color: var(--akzent); }

/* Filter des Tabellenwerkzeugs (T-1.205): Raster aus Kaestchen, passt sich der Breite an; je Kaestchen
   oben der Spaltenname (mit "nicht"), darunter die Eingabe; von-bis nebeneinander in einem Kaestchen */
.tabellen-filter .filter-felder { display: grid; grid-template-columns: repeat(auto-fill, minmax(10.5rem, 1fr)); gap: 0.5rem 0.75rem; align-items: end; }
.tabellen-filter .filter-feld { display: flex; flex-direction: column; gap: 0.15rem; min-width: 0; font-size: 0.8rem; }
.tabellen-filter .filter-feld.zweifach { grid-column: span 2; }
.tabellen-filter .filter-feld .feldkopf { color: var(--gedaempft); }
.tabellen-filter .filter-feld input, .tabellen-filter .filter-feld select { width: 100%; min-width: 0; margin: 0; box-sizing: border-box; }
.tabellen-filter .von-bis { display: flex; align-items: center; gap: 0.3rem; }
.tabellen-filter .von-bis input { flex: 1 1 0; }
@media (max-width: 30rem) { .tabellen-filter .filter-feld.zweifach { grid-column: auto; } }
