/* AUFTRAG-DICHTE-ZENTRAL-CC.md: der Dichte-Regler. DIES IST DIE EINZIGE STELLE
   FUER DICHTE-ZAHLEN IN DER ANWENDUNG - wer die Dichte verschieben will,
   aendert Zahlen in der Stufentabelle unten und sonst nichts (Leitplanke 6,
   Doc 30 Kap. 2b). Keine Selektoren anfassen, keine Seiten anfassen.

   Eingebunden ALS LETZTES Stylesheet (index.html) - nach MudBlazor.min.css
   und nach allen anderen App-Stylesheets - damit diese Datei ueber
   Quellreihenfolge gewinnt, nicht ueber Spezifitaets-Tricks. Nur an einer
   Stelle ist trotzdem !important noetig (Block "Utility-Familien" unten):
   Bootstrap und MudBlazor tragen ihre eigenen Abstands-Utilities (mt-1..mb-5
   etc.) bereits selbst mit !important, und zwar unter WOERTLICH DEMSELBEN
   Klassennamen in beiden Frameworks - welches der beiden Stylesheets dort
   gerade gewinnt, war vor diesem Auftrag reiner Zufall der Ladereihenfolge
   (siehe Doc/BERICHT-DICHTE-ZENTRAL.md). Alles andere hier gewinnt ueber
   Spezifitaet + Quellreihenfolge, ganz ohne !important.

   Der Befund, der diesen Auftrag ausgeloest hat (drei Ursachen):
   1. Die Dichte-Regeln vom 07.08.2026 hingen an .ep-karte und erreichten
      Seiten ohne diese Klasse (z.B. /salesframe/price-lists) gar nicht -
      MudBlazors eigene, luftigere Werte griffen dort unveraendert.
   2. Die Abstands-Skala --tim-space-* (jetzt hier, vorher in ci.css) wurde
      von ~780 Bootstrap-/Mud-Abstands-Utilities in 96 von 252 Razor-Dateien
      gar nicht gelesen - eigene Festwerte, unabhaengig von der Skala.
   3. Der Seitenrand kam doppelt (.content px-4 UND MudContainer-Gutters),
      die Breitengrenze ebenso (MudContainer MaxWidth UND .ep-karte).
   Alle drei sind unten behoben: die Regeln haengen an .tim-dichte (den
   Inhaltsbereich, MainLayout.razor), nicht mehr an .ep-karte; die
   Utility-Familien sind auf dieselbe Skala umgehaengt; der Seitenrand kommt
   nur noch aus EINEM Token. */

/* ============================================================================
   1. DIE STUFENTABELLE - der Regler. Drei ausgeschriebene Stufen, kein
      Rechenfaktor (ein Faktor erzeugt halbe Pixel und trifft die 40-px-Grenze
      unkontrolliert). weit = die Werte von vor diesem Auftrag, der Rueckweg
      und die Messreferenz (Doc 30 Kap. 2b). mittel = Vorgabe nach diesem
      Auftrag. kompakt = die dichteste Stufe, die die 40-px-Grenze noch haelt
      (Leitplanke 3 - kein Bedienelement je unter 40 px).

      Fehlt das Attribut data-dichte (z.B. ein fremder Druck-Kontext), gelten
      die weit-Werte hier auf :root - der harmloseste Fall. */
:root {
    --tim-space-1: 4px;
    --tim-space-2: 8px;
    --tim-space-3: 12px;
    --tim-space-4: 16px;
    --tim-space-5: 24px;
    --tim-space-6: 32px;

    /* Innenabstand oben/unten eines Outlined-Eingabefelds. 18,5px ist Muds
       eigener Wert (56 px Feldhoehe); 10,5px waere Muds Margin.Dense-Wert
       (exakt 40 px, die Beruehrungsgrenze) - kompakt liegt bewusst DARAUF,
       nicht darueber: das ist der Boden, kein Zwischenwert (Leitplanke 3). */
    --tim-feld-polster: 18.5px;
    --tim-feld-aussen-oben: 8px;
    --tim-feld-aussen-unten: 4px;

    --tim-karte-polster: 16px;
    --tim-karte-abstand: 24px;
    --tim-rinne: 12px;
    --tim-zeile-polster: 6px;

    /* Rand des Inhaltsbereichs je Seite - ersetzt den bisherigen DOPPELTEN
       Rand (.content px-4 = 24px PLUS MudContainer-Gutters = 16/24px, macht
       heute effektiv bis zu 48px). weit haelt exakt diese Summe, damit sich
       am heutigen Bild nichts aendert. */
    --tim-seitenrand: 48px;
    --tim-kopf-polster: 8px;
    --tim-abschnitt: 24px;

    /* Breitengrenze der Formularspalte (.ep-karte, Seitenkopf, MudTabs-Deckel
       darueber - event-editor.css Punkt 9). */
    --tim-inhalt-breite: 1200px;

    /* Bleibt in JEDER Stufe 1 (Leitplanke 2) - der Schriftgrad ist der
       NAECHSTE Hebel (Doc 07 F-140), nicht dieser. Token existiert schon,
       damit F-140 keine neue Variable braucht, nur neue Werte hier. */
    --tim-schrift-faktor: 1;
}

:root[data-dichte="mittel"] {
    --tim-space-1: 4px;
    --tim-space-2: 6px;
    --tim-space-3: 10px;
    --tim-space-4: 12px;
    --tim-space-5: 18px;
    --tim-space-6: 24px;

    --tim-feld-polster: 14.5px;
    --tim-feld-aussen-oben: 4px;
    --tim-feld-aussen-unten: 4px;

    --tim-karte-polster: 12px;
    --tim-karte-abstand: 12px;
    --tim-rinne: 8px;
    --tim-zeile-polster: 4px;

    --tim-seitenrand: 16px;
    --tim-kopf-polster: 6px;
    --tim-abschnitt: 16px;

    --tim-inhalt-breite: 1200px;
    --tim-schrift-faktor: 1;
}

:root[data-dichte="kompakt"] {
    --tim-space-1: 2px;
    --tim-space-2: 4px;
    --tim-space-3: 8px;
    --tim-space-4: 10px;
    --tim-space-5: 14px;
    --tim-space-6: 18px;

    /* 10,5px Innenabstand = exakt 40px Feldhoehe - der Boden aus
       Leitplanke 3, keinen Pixel darunter. */
    --tim-feld-polster: 10.5px;
    --tim-feld-aussen-oben: 2px;
    --tim-feld-aussen-unten: 2px;

    --tim-karte-polster: 8px;
    --tim-karte-abstand: 8px;
    --tim-rinne: 6px;
    --tim-zeile-polster: 3px;

    --tim-seitenrand: 8px;
    --tim-kopf-polster: 4px;
    --tim-abschnitt: 12px;

    /* Steigt bewusst in dieser Stufe: der Sinn von "kompakt" ist "mehr
       gleichzeitig sehen" - auf einem breiten Schirm hilft Breite genauso wie
       Dichte. Auf schmalen Fenstern greift die Grenze ohnehin nicht. */
    --tim-inhalt-breite: 1400px;
    --tim-schrift-faktor: 1;
}

/* ============================================================================
   2. EINGABEFELDER - vorher event-editor.css:53-68, dort an .ep-karte
      gebunden (Ursache 1) und deshalb auf Seiten ohne diese Klasse (z.B.
      /salesframe/price-lists, reine MudPaper/MudGrid-Listenseiten) wirkungslos.
      Jetzt an .tim-dichte gebunden - das setzt MainLayout auf JEDEN
      Inhaltsbereich (A.6), unabhaengig von der Formsprache der einzelnen
      Seite. Die Begruendungstexte der urspruenglichen Werte (48px als
      Punkt zwischen Muds 56px und dessen eigenem Margin.Dense bei 40px)
      gelten unveraendert - nur die Zahl kommt jetzt aus der Stufe. */
.tim-dichte .mud-input > input.mud-input-root-outlined,
.tim-dichte .mud-input > div.mud-input-slot.mud-input-root-outlined,
.tim-dichte .mud-input > textarea.mud-input-root-outlined {
    padding-top: var(--tim-feld-polster);
    padding-bottom: var(--tim-feld-polster);
}

.tim-dichte .mud-input-control.mud-input-outlined-with-label,
.tim-dichte .mud-input-control {
    margin-top: var(--tim-feld-aussen-oben);
    margin-bottom: var(--tim-feld-aussen-unten);
}

/* 3. RASTER - vorher event-editor.css:76-85, ebenfalls an .ep-karte gebunden.
   Wildcard statt einer festen Spacing-Stufe (mud-grid-spacing-xs-*): das
   MudGrid auf /salesframe/price-lists laeuft ohne explizites Spacing auf
   Muds eigenem Default und war deshalb von der alten, auf Spacing="3"
   zugeschnittenen Regel gar nicht erreichbar. */
.tim-dichte .mud-grid[class*="mud-grid-spacing-xs-"] {
    width: calc(100% + var(--tim-rinne));
    margin-left: calc(-1 * var(--tim-rinne));
    margin-top: calc(-1 * var(--tim-rinne));
}

.tim-dichte .mud-grid[class*="mud-grid-spacing-xs-"] > .mud-grid-item {
    padding-left: var(--tim-rinne);
    padding-top: var(--tim-rinne);
}

/* ============================================================================
   4. DIE UTILITY-FAMILIEN (Ursache 2) - Bootstrap-4- und MudBlazor-eigene
      Abstands-Utilities auf dieselbe Skala umgehaengt, damit die ~780
      bestehenden mt-3/mb-4/pa-4/... im Client mitziehen, OHNE 96 Dateien
      anzufassen. Hier UND NUR HIER ist !important erlaubt (Leitplanke 4):
      Bootstrap und Mud tragen es an derselben Stelle selbst.

      WICHTIGER BEFUND (siehe BERICHT): Bootstrap und MudBlazor definieren
      mt-1..mb-5 etc. unter WOERTLICH DEMSELBEN Klassennamen, beide mit
      !important, beide Selektoren gleich spezifisch (eine Klasse). Welche
      der beiden Dateien fuer ein Element mit z.B. class="mb-3" bislang
      gewann, entschied allein die Ladereihenfolge in index.html (MudBlazor
      laedt nach Bootstrap und gewinnt daher bei gleicher Spezifitaet) - nicht
      eine bewusste Entscheidung. Die Regeln unten sind ZWEIFACH spezifischer
      (.tim-dichte + Klasse) und gewinnen daher IMMER, unabhaengig von dieser
      Zufaelligkeit, ohne dass Bootstrap oder MudBlazor angefasst werden.

      Zuordnung 1-5 nach Auftrag (Bootstrap-Festwerte 4/8/16/24/48 px treffen
      die Skala bis auf die letzte Stufe genau): 1->space-1, 2->space-2,
      3->space-4, 4->space-5, 5->space-6. Die Stufen 6 und 8 kommen nur aus
      MudBlazors eigener Skala (kein Bootstrap-Gegenstueck, N*4px) und werden
      auf der luftigsten Stufe gedeckelt - space-6 ist das Ende der Skala.
      Alle Stufen unten sind im Bestand gezaehlt (grep), nicht geraten. */
.tim-dichte .m-0, .tim-dichte .ma-0 { margin: 0px !important; }
.tim-dichte .p-0, .tim-dichte .pa-0 { padding: 0px !important; }
.tim-dichte .mt-0 { margin-top: 0px !important; }
.tim-dichte .mb-0 { margin-bottom: 0px !important; }
.tim-dichte .ml-0 { margin-left: 0px !important; }
.tim-dichte .mr-0 { margin-right: 0px !important; }
.tim-dichte .pt-0 { padding-top: 0px !important; }
.tim-dichte .pb-0 { padding-bottom: 0px !important; }
.tim-dichte .pl-0 { padding-left: 0px !important; }
.tim-dichte .pr-0 { padding-right: 0px !important; }
.tim-dichte .mx-0 { margin-left: 0px !important; margin-right: 0px !important; }
.tim-dichte .my-0 { margin-top: 0px !important; margin-bottom: 0px !important; }
.tim-dichte .px-0 { padding-left: 0px !important; padding-right: 0px !important; }
.tim-dichte .py-0 { padding-top: 0px !important; padding-bottom: 0px !important; }

.tim-dichte .m-1, .tim-dichte .ma-1 { margin: var(--tim-space-1) !important; }
.tim-dichte .p-1, .tim-dichte .pa-1 { padding: var(--tim-space-1) !important; }
.tim-dichte .mt-1 { margin-top: var(--tim-space-1) !important; }
.tim-dichte .mb-1 { margin-bottom: var(--tim-space-1) !important; }
.tim-dichte .ml-1 { margin-left: var(--tim-space-1) !important; }
.tim-dichte .mr-1 { margin-right: var(--tim-space-1) !important; }
.tim-dichte .pt-1 { padding-top: var(--tim-space-1) !important; }
.tim-dichte .pb-1 { padding-bottom: var(--tim-space-1) !important; }
.tim-dichte .pl-1 { padding-left: var(--tim-space-1) !important; }
.tim-dichte .pr-1 { padding-right: var(--tim-space-1) !important; }
.tim-dichte .mx-1 { margin-left: var(--tim-space-1) !important; margin-right: var(--tim-space-1) !important; }
.tim-dichte .my-1 { margin-top: var(--tim-space-1) !important; margin-bottom: var(--tim-space-1) !important; }
.tim-dichte .px-1 { padding-left: var(--tim-space-1) !important; padding-right: var(--tim-space-1) !important; }
.tim-dichte .py-1 { padding-top: var(--tim-space-1) !important; padding-bottom: var(--tim-space-1) !important; }

.tim-dichte .m-2, .tim-dichte .ma-2 { margin: var(--tim-space-2) !important; }
.tim-dichte .p-2, .tim-dichte .pa-2 { padding: var(--tim-space-2) !important; }
.tim-dichte .mt-2 { margin-top: var(--tim-space-2) !important; }
.tim-dichte .mb-2 { margin-bottom: var(--tim-space-2) !important; }
.tim-dichte .ml-2 { margin-left: var(--tim-space-2) !important; }
.tim-dichte .mr-2 { margin-right: var(--tim-space-2) !important; }
.tim-dichte .pt-2 { padding-top: var(--tim-space-2) !important; }
.tim-dichte .pb-2 { padding-bottom: var(--tim-space-2) !important; }
.tim-dichte .pl-2 { padding-left: var(--tim-space-2) !important; }
.tim-dichte .pr-2 { padding-right: var(--tim-space-2) !important; }
.tim-dichte .mx-2 { margin-left: var(--tim-space-2) !important; margin-right: var(--tim-space-2) !important; }
.tim-dichte .my-2 { margin-top: var(--tim-space-2) !important; margin-bottom: var(--tim-space-2) !important; }
.tim-dichte .px-2 { padding-left: var(--tim-space-2) !important; padding-right: var(--tim-space-2) !important; }
.tim-dichte .py-2 { padding-top: var(--tim-space-2) !important; padding-bottom: var(--tim-space-2) !important; }

.tim-dichte .m-3, .tim-dichte .ma-3 { margin: var(--tim-space-4) !important; }
.tim-dichte .p-3, .tim-dichte .pa-3 { padding: var(--tim-space-4) !important; }
.tim-dichte .mt-3 { margin-top: var(--tim-space-4) !important; }
.tim-dichte .mb-3 { margin-bottom: var(--tim-space-4) !important; }
.tim-dichte .ml-3 { margin-left: var(--tim-space-4) !important; }
.tim-dichte .mr-3 { margin-right: var(--tim-space-4) !important; }
.tim-dichte .pt-3 { padding-top: var(--tim-space-4) !important; }
.tim-dichte .pb-3 { padding-bottom: var(--tim-space-4) !important; }
.tim-dichte .pl-3 { padding-left: var(--tim-space-4) !important; }
.tim-dichte .pr-3 { padding-right: var(--tim-space-4) !important; }
.tim-dichte .mx-3 { margin-left: var(--tim-space-4) !important; margin-right: var(--tim-space-4) !important; }
.tim-dichte .my-3 { margin-top: var(--tim-space-4) !important; margin-bottom: var(--tim-space-4) !important; }
.tim-dichte .px-3 { padding-left: var(--tim-space-4) !important; padding-right: var(--tim-space-4) !important; }
.tim-dichte .py-3 { padding-top: var(--tim-space-4) !important; padding-bottom: var(--tim-space-4) !important; }

.tim-dichte .m-4, .tim-dichte .ma-4 { margin: var(--tim-space-5) !important; }
.tim-dichte .p-4, .tim-dichte .pa-4 { padding: var(--tim-space-5) !important; }
.tim-dichte .mt-4 { margin-top: var(--tim-space-5) !important; }
.tim-dichte .mb-4 { margin-bottom: var(--tim-space-5) !important; }
.tim-dichte .ml-4 { margin-left: var(--tim-space-5) !important; }
.tim-dichte .mr-4 { margin-right: var(--tim-space-5) !important; }
.tim-dichte .pt-4 { padding-top: var(--tim-space-5) !important; }
.tim-dichte .pb-4 { padding-bottom: var(--tim-space-5) !important; }
.tim-dichte .pl-4 { padding-left: var(--tim-space-5) !important; }
.tim-dichte .pr-4 { padding-right: var(--tim-space-5) !important; }
.tim-dichte .mx-4 { margin-left: var(--tim-space-5) !important; margin-right: var(--tim-space-5) !important; }
.tim-dichte .my-4 { margin-top: var(--tim-space-5) !important; margin-bottom: var(--tim-space-5) !important; }
.tim-dichte .px-4 { padding-left: var(--tim-space-5) !important; padding-right: var(--tim-space-5) !important; }
.tim-dichte .py-4 { padding-top: var(--tim-space-5) !important; padding-bottom: var(--tim-space-5) !important; }

.tim-dichte .m-5, .tim-dichte .ma-5 { margin: var(--tim-space-6) !important; }
.tim-dichte .p-5, .tim-dichte .pa-5 { padding: var(--tim-space-6) !important; }
.tim-dichte .mt-5 { margin-top: var(--tim-space-6) !important; }
.tim-dichte .mb-5 { margin-bottom: var(--tim-space-6) !important; }
.tim-dichte .ml-5 { margin-left: var(--tim-space-6) !important; }
.tim-dichte .mr-5 { margin-right: var(--tim-space-6) !important; }
.tim-dichte .pt-5 { padding-top: var(--tim-space-6) !important; }
.tim-dichte .pb-5 { padding-bottom: var(--tim-space-6) !important; }
.tim-dichte .pl-5 { padding-left: var(--tim-space-6) !important; }
.tim-dichte .pr-5 { padding-right: var(--tim-space-6) !important; }
.tim-dichte .mx-5 { margin-left: var(--tim-space-6) !important; margin-right: var(--tim-space-6) !important; }
.tim-dichte .my-5 { margin-top: var(--tim-space-6) !important; margin-bottom: var(--tim-space-6) !important; }
.tim-dichte .px-5 { padding-left: var(--tim-space-6) !important; padding-right: var(--tim-space-6) !important; }
.tim-dichte .py-5 { padding-top: var(--tim-space-6) !important; padding-bottom: var(--tim-space-6) !important; }

.tim-dichte .m-6, .tim-dichte .ma-6 { margin: var(--tim-space-6) !important; }
.tim-dichte .p-6, .tim-dichte .pa-6 { padding: var(--tim-space-6) !important; }
.tim-dichte .mt-6 { margin-top: var(--tim-space-6) !important; }
.tim-dichte .mb-6 { margin-bottom: var(--tim-space-6) !important; }
.tim-dichte .ml-6 { margin-left: var(--tim-space-6) !important; }
.tim-dichte .mr-6 { margin-right: var(--tim-space-6) !important; }
.tim-dichte .pt-6 { padding-top: var(--tim-space-6) !important; }
.tim-dichte .pb-6 { padding-bottom: var(--tim-space-6) !important; }
.tim-dichte .pl-6 { padding-left: var(--tim-space-6) !important; }
.tim-dichte .pr-6 { padding-right: var(--tim-space-6) !important; }
.tim-dichte .mx-6 { margin-left: var(--tim-space-6) !important; margin-right: var(--tim-space-6) !important; }
.tim-dichte .my-6 { margin-top: var(--tim-space-6) !important; margin-bottom: var(--tim-space-6) !important; }
.tim-dichte .px-6 { padding-left: var(--tim-space-6) !important; padding-right: var(--tim-space-6) !important; }
.tim-dichte .py-6 { padding-top: var(--tim-space-6) !important; padding-bottom: var(--tim-space-6) !important; }

.tim-dichte .m-8, .tim-dichte .ma-8 { margin: var(--tim-space-6) !important; }
.tim-dichte .p-8, .tim-dichte .pa-8 { padding: var(--tim-space-6) !important; }
.tim-dichte .mt-8 { margin-top: var(--tim-space-6) !important; }
.tim-dichte .mb-8 { margin-bottom: var(--tim-space-6) !important; }
.tim-dichte .ml-8 { margin-left: var(--tim-space-6) !important; }
.tim-dichte .mr-8 { margin-right: var(--tim-space-6) !important; }
.tim-dichte .pt-8 { padding-top: var(--tim-space-6) !important; }
.tim-dichte .pb-8 { padding-bottom: var(--tim-space-6) !important; }
.tim-dichte .pl-8 { padding-left: var(--tim-space-6) !important; }
.tim-dichte .pr-8 { padding-right: var(--tim-space-6) !important; }
.tim-dichte .mx-8 { margin-left: var(--tim-space-6) !important; margin-right: var(--tim-space-6) !important; }
.tim-dichte .my-8 { margin-top: var(--tim-space-6) !important; margin-bottom: var(--tim-space-6) !important; }
.tim-dichte .px-8 { padding-left: var(--tim-space-6) !important; padding-right: var(--tim-space-6) !important; }
.tim-dichte .py-8 { padding-top: var(--tim-space-6) !important; padding-bottom: var(--tim-space-6) !important; }

/* ============================================================================
   5. DER SEITENRAND (Ursache 3) - MainLayout.razor traegt bisher
      class="content px-4" (24px Bootstrap-Utility). Das faellt weg (A.6);
      der Rand kommt jetzt NUR aus --tim-seitenrand. Die Gutters des
      MudContainer (zweite Quelle desselben Rands, 16/24px) werden innerhalb
      .tim-dichte auf 0 gesetzt, damit er nicht mehr doppelt kommt. */
.tim-dichte {
    padding-left: var(--tim-seitenrand);
    padding-right: var(--tim-seitenrand);
}

.tim-dichte .mud-container--gutters {
    padding-left: 0;
    padding-right: 0;
}

/* 6. DER SEITENKOPF - .tim-pageheader liest jetzt --tim-kopf-polster und
   --tim-abschnitt statt der allgemeinen Skala (event-editor.css). */

/* 7. TABELLEN - Mud setzt im Dense-Modus 6px oben/unten fest
   (.mud-table-dense .mud-table-cell{padding:6px 16px} UND die spezifischere
   .mud-table-row .mud-table-cell-Variante mit 6px 24px 6px 16px) - beide
   Selektoren muessen ueberschrieben werden, sonst gewinnt Mud bei der
   spezifischeren Variante weiter. Nur die Hoehe (oben/unten) aendert sich,
   die Spaltenbreiten (links/rechts) bleiben Muds Sache. */
.tim-dichte .mud-table-dense .mud-table-cell,
.tim-dichte .mud-table-dense .mud-table-row .mud-table-cell {
    padding-top: var(--tim-zeile-polster);
    padding-bottom: var(--tim-zeile-polster);
}

/* 8. MUD-TYPOGRAFIE - GEPRUEFT gegen die tatsaechliche Paketversion
   (MudBlazor 9.7.0, staticwebassets/MudBlazor.min.css): .mud-typography-body1/
   -body2/-caption/-subtitle1/-subtitle2 tragen dort KEIN eigenes
   margin-bottom. Der Abstand zwischen MudText-Absaetzen im Client kommt
   ausschliesslich aus expliziten mb-* / mt-*-Klassen im Markup - die sind
   bereits durch Block 4 abgedeckt. Kein zusaetzlicher Eingriff noetig. */

/* 9. BREITENGRENZE - siehe event-editor.css Punkt 9 (.ep-karte,
   .content:has(.ep-karte) .tim-pageheader, .mud-tabs:has(.ep-karte)): liest
   jetzt var(--tim-inhalt-breite) statt der festen 1200px. */

/* ============================================================================
   A.5 - DIE AUSNAHMELISTE (Leitplanke 5, Doc 30 Kap. 1): Werkzeug-Bildschirme
   werden nicht angeglichen. Weil ALLES hier tokengetrieben ist, genuegt eine
   einzige Ruecksetz-Regel: innerhalb dieser Wurzeln stehen die Tokens wieder
   auf ihren weit-Werten, dann greifen auch die umgehaengten Utilities (Block
   4) dort unveraendert - ohne dass irgendeine Regel oben eine Ausnahme fuer
   sie kennen muesste.

   IM BESTAND GEPRUEFT (nicht abgeschrieben - drei der urspruenglich
   vermuteten Klassennamen stimmten nicht):
   - Kasse (PosVisitDetail.razor), Kueche (PosKitchen.razor), Raumplan-Editor
     (PlanEditorPage.razor) und Reservierungs-Timeline (ResTimeline.razor)
     tragen alle .pos-shell als Wurzel und haengen strukturell unter
     PosLayout.razor - das rendert NIE einen .content-Container (siehe
     PosLayout.razor-Kopf). .tim-dichte liegt ausschliesslich auf
     MainLayout.razor. Diese vier Wurzeln koennen die Dichte-Regeln also gar
     nicht erben; der Eintrag hier ist ein Sicherheitsnetz gegen kuenftige
     Layout-Aenderungen, keine tragende Regel.
   - Der Ablauf-Outliner (EventPlanGraphEditor.razor, Route
     /events/plan/{PlanId}) hat KEIN eigenes @layout und laeuft damit unter
     MainLayout/.content - das GILT also wirklich und ist tragend. Wurzel ist
     .eo-shell, eingebettet (in EventPlanForm/EventProjEditor/
     EventSeatingForm) zusaetzlich .eo-embedded. .plan-panel und
     .event-bestuhlung sind dieselbe Familie (siehe ci-bridge.css:246-287:
     "Editor-Seiten leben" ausdruecklich in .content).
   - Rechnungs-A4 (InvoiceA4.razor, Route /invoices/{Id}) hat ebenfalls kein
     eigenes @layout, laeuft also auch unter MainLayout/.content. Wurzel ist
     .inv-shell - NICHT .inv-a4, wie zuerst vermutet.
   - Der Bon (PosBon.razor, Wurzel .pos-bon) wird ueber MudDialogProvider
     angezeigt, der in MainLayout.razor AUSSERHALB von .content deklariert
     ist - strukturell also ebenfalls nicht erreichbar. Auch hier: Eintrag
     als Sicherheitsnetz. */
.tim-dichte :is(.pos-shell,
                .eo-shell,
                .eo-embedded,
                .plan-panel,
                .event-bestuhlung,
                .inv-shell,
                .pos-bon) {
    --tim-space-1: 4px;
    --tim-space-2: 8px;
    --tim-space-3: 12px;
    --tim-space-4: 16px;
    --tim-space-5: 24px;
    --tim-space-6: 32px;
    --tim-feld-polster: 18.5px;
    --tim-feld-aussen-oben: 8px;
    --tim-feld-aussen-unten: 4px;
    --tim-karte-polster: 16px;
    --tim-karte-abstand: 24px;
    --tim-rinne: 12px;
    --tim-zeile-polster: 6px;
    --tim-seitenrand: 48px;
    --tim-kopf-polster: 8px;
    --tim-abschnitt: 24px;
    --tim-inhalt-breite: 1200px;
    --tim-schrift-faktor: 1;
}

/* Der Druck ist zusaetzlich festgenagelt: ein Beleg darf sich nicht aendern,
   weil jemand am Bildschirm-Regler gedreht hat. Haerter als die Ausnahmeliste
   oben (die nur Nachfahren von .tim-dichte erfasst) - @media print gilt
   unabhaengig von der DOM-Position. */
@media print {
    :root {
        --tim-space-1: 4px;
        --tim-space-2: 8px;
        --tim-space-3: 12px;
        --tim-space-4: 16px;
        --tim-space-5: 24px;
        --tim-space-6: 32px;
        --tim-feld-polster: 18.5px;
        --tim-feld-aussen-oben: 8px;
        --tim-feld-aussen-unten: 4px;
        --tim-karte-polster: 16px;
        --tim-karte-abstand: 24px;
        --tim-rinne: 12px;
        --tim-zeile-polster: 6px;
        --tim-seitenrand: 48px;
        --tim-kopf-polster: 8px;
        --tim-abschnitt: 24px;
        --tim-inhalt-breite: 1200px;
        --tim-schrift-faktor: 1;
    }
}
