/* ═══════════════════════════════════════════════════════════════════════════
   NestSuite — Seitenmenü. EINE Quelle für alle acht Seiten.
   ═══════════════════════════════════════════════════════════════════════════

   Gehört nach shared/, weil das Menü layout-neutral ist: es ist Rahmenwerk,
   keine Komponente einer App. Genau die Trennung, die ARCHITEKTUR.md festhält
   ("geteilt wird, was layout-neutral ist"). Die alten .side-menu-Regeln in den
   vier styles.css sind entfallen — sie waren viermal fast dasselbe.

   WAS DAS NEUE AUSSEHEN AUSMACHT (26.07.2026, nach einer Vorlage von MWM).
   Nicht die Symbole. Drei andere Dinge:

   1. FESTE TEXTSPALTE. Die Symbole besetzen eine Spalte fester Breite, alle
      Beschriftungen beginnen an derselben Kante — auch die ohne Symbol. Vorher
      begann jeder Text am Containerrand, die Abschnittslabels ebenso; es gab
      keine Linie, an der das Auge sich festhalten konnte.
   2. GEFÜLLTE PILLE für den aktiven Eintrag statt bloß anderer Textfarbe. Eine
      Farbänderung allein trägt eine Auswahl nicht, besonders nicht bei einer
      entsättigten Akzentfarbe.
   3. EINSTELLUNGEN ALS REGULÄRER ABSCHNITT, gleiche Form wie Module und
      Inhalt. Vorher war das Zahnrad angeklebt, weil es nachträglich hinein-
      injiziert wurde.

   Zurücknehmen: siehe tools/menuversuch/zuruecksetzen.md
   ═══════════════════════════════════════════════════════════════════════════ */

:root {
  /* 272 → 208 px (25.08.2026). Die Leiste trug fuenf Schriftgroessen und
     war 76 px breiter als noetig; sie wirkte dadurch schwerer als der
     Inhalt, den sie erschliesst. Zum Vergleich gemessen: das Vorbild in
     Lovable kommt mit 196 px und drei Groessen aus. 208 statt 196, weil
     unsere Leiste mehr Gruppen hat (Profil, Module, Inhalt,
     Einstellungen) und laengere Beschriftungen traegt. */
  --sm-breite:      208px;
  --sm-breite-zu:    64px;   /* eingeklappt: nur die Symbolspalte */
  --sm-icon-spalte:  30px;   /* Symbol + Abstand = die Textkante */
}

/* ─── Grundgestalt ───────────────────────────────────────────────────────── */
.side-menu {
  position: fixed; top: 0; left: 0; height: 100%;
  width: var(--sm-breite);
  background:var(--sidebar-flaeche);
  border-right: 1px solid var(--sidebar-marke-linie);
  padding: var(--sp-4) var(--sp-3);   /* Shell.tsx: py-4 px-3 */
  /* scrollbar-width erbt NICHT (25.08.2026, MWM: "so fein wie rechts").
     In shared/global.css steht die Regel am html-Element; jede eigene
     Scrollflaeche braucht sie nochmal, sonst zeichnet der Browser hier
     seinen Standardbalken -- rund doppelt so breit wie unsere 6 px. */
  overflow-y: auto; overflow-x: hidden;
  scrollbar-width: thin;
  scrollbar-color: var(--scrollbar-daumen-leiste) transparent;
  box-sizing: border-box;
  z-index: calc(var(--z-leiste) - 1);
  display: flex; flex-direction: column; gap: var(--sp-1);
}

/* Schlanker Scrollbalken (Wunsch MWM 28.07.2026) — der Browser-Standard wirkte
   grob neben der sonst zurückhaltenden Menü-Optik. Farbe an --line/--muted
   angelehnt, nicht am Akzent: der Balken soll sich einordnen, nicht auffallen.
   Die Pfeile (Scrollbar-Buttons) sind AUSGEBLENDET statt nur verkleinert:
   WebKit kennt dafür keine schlanke Variante, nur volle Breite oder gar keine
   — ein 6px schmaler Balken mit Pfeilklötzen in Originalgröße wäre kein
   Gewinn gewesen. Firefox bekommt dieselbe Optik über scrollbar-width/-color,
   dort gibt es ohnehin keine Pfeile serienmäßig. */
/* Die Regel steht seit 23.08.2026 in shared/global.css und gilt fuer die
   ganze Suite -- hier stand sie vorher allein, und jede andere scrollbare
   Flaeche bekam den groben Browser-Standard. Nicht dupliziert, sondern
   umgezogen: zwei identische Regeln an zwei Orten sind der Anfang von zwei
   verschiedenen. */

/* ─── Kopf: Einklappen ───────────────────────────────────────────────────────
   Der Knopf steht AUSSERHALB des Flusses (25.08.2026, MWM). Vorher war er
   eine eigene Zeile mit 10 px Polster darunter — der Profil-Abschnitt begann
   also erst rund 42 px unter der Oberkante, und die Kapitellinie von "PROFIL"
   lief weit unterhalb des Kreises ins Leere.

   Jetzt liegt der Kreis absolut oben rechts und der erste Abschnitt rueckt
   ganz nach oben. Die Linie laeuft auf der Mittelhoehe des Kreises durch und
   endet unter ihm: der Knopf traegt eine eigene Flaeche (--paper) und deckt
   sie ab. Dadurch wirkt er als Punkt AUF der Linie statt als Element darueber.

   position: absolute bezieht sich auf .side-menu (position: fixed). */
.sm-kopf {
  position: absolute; z-index: var(--z-inhalt);
  top: var(--sp-4); right: var(--sp-3);
  display: flex; align-items: center;
  padding: 0;
}
/* Der erste Abschnitt rueckt so weit herunter, dass seine Kapitellinie auf
   der Mittelhoehe des Kreises sitzt:
     Kreis oben  16 px (--sp-4), hoch 32 px  ->  Mitte bei 32 px
     Label-Linie liegt auf halber Zeilenhoehe, rund 6,5 px unter der Oberkante
     32 − 16 − 6,5 ≈ 10 px
   Die Rechnung steht hier, damit sie beim naechsten Aendern nicht neu
   erraten werden muss. */
.side-menu > .sm-block:first-of-type { padding-top: var(--sp-zelle); }
.sm-zu {
  flex-shrink: 0;
  width: 32px; height: 32px;
  display: grid; place-items: center;
  border:1px solid var(--karten-linie);
  border-radius: var(--r-pill, 999px);   /* alles Anfassbare ist rund */
  background:var(--paper);
  color: var(--muted);
  cursor: pointer; padding: 0;
  transition: color .15s, border-color .15s, background .15s;
}
.sm-zu svg { width: 15px; height: 15px; }
.sm-zu:hover { color: var(--ink); border-color:var(--ink); }

/* ─── Abschnitt: Label + Zeilen ──────────────────────────────────────────── */
/* Abschnitte deutlicher getrennt (Wunsch MWM 26.07.2026): mehr Luft zwischen
   den Blöcken und zwischen Label und erstem Eintrag. 18 → 30 px unten,
   8 → 14 px unter dem Label. Bei acht bis zwölf Zeilen im Menü ist Abstand
   das einzige Mittel, das gliedert, ohne Striche zwischen jede Zeile zu
   setzen — die hatten wir schon und sie machten aus der Liste ein Formular. */
.sm-block { display: flex; flex-direction: column; gap: 1px; margin-bottom: 30px; }
.sm-block:last-child { margin-bottom: 0; }

/* Das Label mit einer Linie, die den Rest der Breite füllt — wie in der
   Vorlage. Sie sitzt auf der Mittelhöhe des Textes und macht aus der
   Beschriftung eine KAPITELMARKE statt einer weiteren Zeile.
   Über ein ::after im Flex statt einer border-bottom am Container: die Linie
   soll NEBEN dem Wort laufen, nicht darunter. */
.sm-label {
  display: flex; align-items: center; gap: 9px;
  font-size: var(--fs-pille); font-weight: var(--fw-fett);
  text-transform: uppercase; letter-spacing: var(--ls-versal);
  /* Dieselbe Textfarbe wie die Menüzeilen (Wunsch MWM 26.07.2026). Die Marke
     bleibt trotzdem zurückhaltend: kleiner Grad, Großbuchstaben und Sperrung
     tragen die Unterordnung — dafür braucht es kein zweites Grau. */
  color: var(--ink);
  padding: 0 var(--sp-innen) var(--sp-4) calc(6px + var(--sm-icon-spalte));
  white-space: nowrap;
}
.sm-label::after {
  content: ""; flex: 1; height: 1px;
  /* Grau statt beige (01.09.2026) — eigener Token, Begruendung in
     shared/tokens.css bei --sidebar-marke-linie. */
  background:var(--sidebar-marke-linie);
  /* Die Linie steht optisch etwas höher als die Schriftmitte, weil
     Großbuchstaben keine Unterlängen haben — 1 px zurück gleicht das aus. */
  transform: translateY(-1px);
}

/* ─── Aufklappbarer Abschnitt (27.08.2026, MWM) ────────────────────────────
   "Behandel den Bereich Einstellungen wie einen Toggle, so dass ich die
    Punkte darunter auf- und zuklappen kann."

   Die Ueberschrift SELBST ist der Knopf -- kein zusaetzliches Element
   daneben. Man trifft sie mit demselben Blick, mit dem man den Abschnitt
   sucht, und sie ist bereits die volle Breite der Leiste.

   Als <button> gebaut und nicht als <div> mit Klick-Handler: nur ein Knopf
   ist mit der Tastatur erreichbar, meldet sich dem Screenreader als
   bedienbar und traegt aria-expanded. Ein div mit onclick sieht gleich aus
   und ist fuer die Haelfte der Bedienwege nicht vorhanden. */
.sm-label-klapp {
  width: 100%;
  border: 0;
  background: transparent;
  /* font-FAMILY, nicht die Kurzform `font` (Korrektur 27.08.2026, MWM:
     "das Wort ist jetzt groesser und ohne Strich dahinter"). `font: inherit`
     setzt AUCH font-size, font-weight und letter-spacing zurueck -- damit
     fiel die Ueberschrift aus --fs-pille auf die Grundschrift, wurde
     groesser, fraas die Zeile auf und liess fuer die Trennlinie (die sich
     mit flex:1 den Rest teilt) nichts uebrig. Genau derselbe Fehler steht
     ein paar Zeilen weiter unten schon einmal beschrieben, fuer die
     Daten-Zeilen, am 01.08.2026. Zweimal dieselbe Kurzform, zweimal
     dieselbe Wirkung. */
  font-family: inherit;
  cursor: pointer;
  text-align: left;
  /* Dieselben Werte wie .sm-label -- ein Knopf bringt eigene Vorgaben mit,
     die hier alle zurueckgenommen werden muessen. */
  color: var(--ink);
  gap: var(--sp-innen);
}
.sm-label-klapp:hover { color: var(--ink); }
.sm-label-klapp:hover .sm-klapp-pfeil { opacity: 1; }

/* Der Pfeil steht VOR dem Wort (27.08.2026, MWM). Zugeklappt zeigt er nach
   rechts -- dieselbe Drehung wie ein Ordner-Dreieck, die man nicht erklaeren
   muss, und die vor der Beschriftung auch als solche gelesen wird. Rechts
   neben dem Wort war sie eine Verzierung.

   GROESSE IN em, NICHT IN px: der Pfeil ist ein Schriftzeichen dieser Zeile,
   kein Symbol. Bei --fs-pille sind das rund 11,5 px -- er wird mit der
   Schrift kleiner und groesser, ohne dass hier ein zweiter Wert gepflegt
   werden muss.

   NEGATIVER EINZUG: die Ueberschrift ist um --sm-icon-spalte eingerueckt,
   damit ihr Text auf der Textkante der Menuezeilen sitzt. Steht der Pfeil im
   normalen Fluss davor, schiebt er das Wort um seine Breite nach rechts --
   "EINSTELLUNGEN" stuende dann als einzige Abschnittsueberschrift versetzt.
   Der negative Rand legt ihn stattdessen in die Symbolspalte, wo auch die
   Symbole der Zeilen darunter stehen. Das Wort bleibt, wo es war. */
.sm-klapp-pfeil {
  width: 1em; height: 1em;
  margin-left: calc(-1em - 6px);
  flex-shrink: 0;
  opacity: .5;
  transition: transform .18s ease, opacity var(--transition);
}
.ist-zu .sm-klapp-pfeil { transform: rotate(-90deg); }

/* hidden allein reicht nicht: display:flex in .sm-row schlaegt das
   hidden-Attribut, weil beide dieselbe Eigenschaft setzen und die Regel
   spaeter kommt. Der Raum bekommt deshalb display:none explizit. */
/* [hidden] gilt seit 17.09.2026 fuer alle Elemente, siehe shared/global.css. */

/* Zugeklappt braucht die Ueberschrift keinen Abstand nach unten -- der
   Abstand gehoerte zum Inhalt, den es gerade nicht gibt. */
.einstellungen.ist-zu .sm-label-klapp { padding-bottom: var(--sp-1); }

/* Der Daten-Abschnitt nutzt BUTTONS als Menüzeilen (Export/Import sind
   Aktionen, keine Ziele — ein <a> ohne href wäre eine Lüge an die Tastatur-
   navigation). Browser geben Buttons eigene Schrift, Rahmen und Hintergrund;
   ohne diesen Reset fielen die drei Zeilen sichtbar aus der Spalte.
   BUGFIX (Wunsch Martin 01.08.2026): hier stand `font: inherit` -- die
   Kurzform setzt auch font-size/font-weight zurück, nicht nur die
   Font-Family. Dadurch hatte .sm-row.sm-sub (Daten: Sichern/Für Analyse/
   Importieren, außerdem Profil-Wechsel/Demo zurücksetzen) eine andere
   Schriftgröße als .sm-row.sm-sub bei <a>-Elementen (Inhalt: Portfolio-/
   Immobilien-Übersicht) -- `.side-menu button.sm-row` (Element+2 Klassen)
   ist spezifischer als `.side-menu .sm-sub` (2 Klassen) und gewann daher
   gegen dessen font-size: var(--fs-xs)/font-weight:500. font-family:inherit
   behebt genau das Browser-Problem, ohne die Größe/das Gewicht aus
   .sm-sub zu überschreiben. */
.side-menu button.sm-row {
  background:none; border:0; width: 100%;
  font-family: inherit; text-align: left; cursor: pointer;
}

/* ─── Zeile ──────────────────────────────────────────────────────────────── */
.side-menu .sm-row {
  display: flex; align-items: center;
  gap: calc(var(--sm-icon-spalte) - 20px);
  padding: var(--sp-2) var(--sp-zelle);
  border-radius:var(--r-bild);
  color: var(--ink);
  text-decoration: none;
  font-size: var(--fs-kicker); font-weight: var(--fw-halbfett);
  white-space: nowrap;
  transition: background .13s, color .13s;
  /* Die alten Regeln setzten hier eine border-top pro Zeile — ein Strich
     zwischen je zwei Einträgen. Weg damit: die Abschnittslabels gliedern
     schon, Striche zusätzlich machen aus einer Liste ein Formular. */
  border:none;
}
.side-menu .sm-row > span { overflow: hidden; text-overflow: ellipsis; }
.side-menu .sm-row:hover { background:var(--hover-flaeche); }

.sm-icon { width: 20px; height: 20px; flex-shrink: 0; color: var(--muted); }
.side-menu .sm-row:hover .sm-icon { color: var(--ink); }

/* Einträge ohne Symbol behalten die Spalte trotzdem frei — das ist der ganze
   Trick an der Ausrichtung. */
.side-menu .sm-sub {
  padding-left: calc(10px + var(--sm-icon-spalte));
  font-size: var(--fs-fuss); font-weight: var(--fw-mittel);
  color: var(--muted);
}
.side-menu .sm-sub:hover { color: var(--ink); }

/* Aktiv: gefüllte Pille, Symbol in der Akzentfarbe */
.side-menu .sm-row.is-current {
  /* Aus dem kuehlen Modulboden abgeleitet, auf Sidebar-Weiss gedaempft.
     So wandert die Auswahl mit Ruhig / Balance / Signal mit. */
  background: color-mix(in srgb, var(--zone-boden-b) 70%, var(--sidebar-flaeche));
  color: var(--ink); font-weight: var(--fw-fett);
  cursor: default;
}
.side-menu .sm-row.is-current .sm-icon { color: var(--accent); }
/* Im Dunkelmodus liegen Modulboden und Sidebar fast gleich dunkel. Dort
   bleibt die vorhandene hellere Übersichts-Zone die sichtbare Auswahl. */
html[data-palette="poster_dunkel"] .side-menu .sm-row.is-current {
  background: color-mix(in srgb, var(--zone-boden-a) 70%, var(--sidebar-flaeche));
}

.sm-projekte { display: flex; flex-direction: column; }
.sm-projekte a {
  padding: var(--sp-innen) var(--sp-zelle) var(--sp-innen) calc(10px + var(--sm-icon-spalte));
  border-radius:var(--r-bild);
  font-size: var(--fs-fuss); font-weight: var(--fw-mittel);
  color: var(--muted); text-decoration: none;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.sm-projekte a:hover { color: var(--ink); background:var(--hover-flaeche); }

/* ─── Funktionen ───────────────────────────────────────────────────────────
   Vorher volle Breite + zentrierter Text -- eine einzelne Kachel, so breit
   wie die ganze Leiste, wirkte neben den linksbündigen Zeilen darüber und
   darunter wie ein Fremdkörper. Jetzt auf derselben Textkante wie .sm-sub/
   .sm-label (calc(10px + var(--sm-icon-spalte))) und nur so breit wie der
   eigene Inhalt -- align-items:flex-start auf dem Container verhindert das
   Strecken, width:auto auf den Knöpfen selbst (Wunsch Martin 01.08.2026,
   Vorbild: .einstellungen-feld/Kontrast, linksbündig statt zentriert). */
.sm-actions {
  display: flex; flex-direction: column; gap: 7px; align-items: flex-start;
  padding: 0 var(--sp-1) 0 calc(10px + var(--sm-icon-spalte));
}
.sm-actions .secondary-btn,
.sm-actions .primary-btn,
.sm-actions .file-label {
  width: auto;
  height: var(--knopfhoehe);   /* 25.08.2026: war 36 px -- der vierte
                                  Wert fuer dieselbe Sache, gefunden von
                                  check-tokens Punkt 18 */
  font-size: var(--fs-pille);
  display: inline-flex; align-items: center; justify-content: flex-start;
  box-sizing: border-box;
  text-align: left;
}

/* ─── Eingeklappt: nur die Symbolspalte ──────────────────────────────────────
   Beschriftungen, Labels und Funktionsknöpfe verschwinden, die Modulsymbole
   bleiben. Bewusst NICHT display:none auf der ganzen Leiste — dann wäre der
   Weg zurück nur über den Hamburger, und der sitzt unter der Leiste. */
[data-menu-zu="ja"][data-menu="leiste"] .side-menu { width: var(--sm-breite-zu); padding: var(--sp-4) var(--sp-2); }
[data-menu-zu="ja"][data-menu="leiste"] .side-menu .sm-row > span,
[data-menu-zu="ja"][data-menu="leiste"] .sm-label,
[data-menu-zu="ja"][data-menu="leiste"] .sm-actions,
[data-menu-zu="ja"][data-menu="leiste"] .sm-projekte,
[data-menu-zu="ja"][data-menu="leiste"] .sm-block .einstellungen-feld,
[data-menu-zu="ja"][data-menu="leiste"] .side-menu .sm-sub,
/* Der ganze Profilblock, nicht nur seine Schrift.
   
   Er kam am 27.07.2026 dazu und wurde hier vergessen: Name, Art und die
   Eigentümer standen weiter da, auf 64 Pixel Breite abgeschnitten — drei
   Textfetzen neben einer Spalte, in der sonst nur Symbole stehen.
   
   Ausgeblendet wird das Element selbst und nicht nur der Text, sonst bliebe
   ein leerer Block mit seinem Abstand stehen — eine Lücke ohne Grund, die
   schlechter aussieht als der abgeschnittene Text.
   
   Verloren geht dabei nichts: dass das Demo-Profil aktiv ist, sagt der gelbe
   Streifen über die ganze Breite. Und wer wissen will, wessen Zahlen er
   sieht, klappt auf — genau dafür ist der zugeklappte Zustand eine
   Übersicht und keine Auskunft. */
[data-menu-zu="ja"][data-menu="leiste"] #sideMenuProfil { display: none; }
/* EINGEKLAPPT steht der Knopf wieder IM FLUSS (Korrektur 25.08.2026).
   Aufgeklappt liegt er absolut oben rechts, damit die Kapitellinie von
   "PROFIL" auf seiner Mitte durchlaeuft. Eingeklappt gibt es keine Linie und
   keinen Platz daneben -- dort ueberdeckte er den ersten Menuepunkt, also
   "Assets · Gesamtvermoegen". Martin sah deshalb nur drei Symbole statt vier.

   position: static holt ihn zurueck in die Reihe; die Symbole ruecken um
   seine Hoehe nach unten und sind wieder alle sichtbar. */
[data-menu-zu="ja"][data-menu="leiste"] .sm-kopf {
  position: static;
  justify-content: center;
  padding: var(--sp-1) 0 var(--sp-4);
}
/* Der Profil-Abstand von 10 px gilt nur aufgeklappt: eingeklappt gibt es
   kein Label, an dessen Linie er sich ausrichten muesste. */
[data-menu-zu="ja"][data-menu="leiste"] .side-menu > .sm-block:first-of-type {
  padding-top: 0;
}
/* Eingeklappt fehlen die Labels — die 30 px Blockabstand wären dann reine
   Leere zwischen zwei Symbolen und würden die Leiste unnötig lang machen. */
[data-menu-zu="ja"][data-menu="leiste"] .sm-block { margin-bottom: var(--sp-4); }
[data-menu-zu="ja"][data-menu="leiste"] .side-menu .sm-row { justify-content: center; padding: 9px 0; }
[data-menu-zu="ja"][data-menu="leiste"] .sm-zu svg { transform: rotate(180deg); }

/* ─── Inhalt weicht der Leiste ───────────────────────────────────────────────
   Nur ein padding-left am body. Die Frames haben ihre eigene max-width und
   zentrieren sich in dem, was übrig bleibt — es muss also nichts angefasst
   werden, was mit Karten oder Rastern zu tun hat. */
[data-menu="leiste"] body { padding-left: var(--sm-breite); transition: padding-left .18s ease; }
[data-menu="leiste"][data-menu-zu="ja"] body { padding-left: var(--sm-breite-zu); }
[data-menu="leiste"] .side-menu-toggle,
[data-menu="leiste"] .side-menu-edge { display: none; }
[data-menu="leiste"] .side-menu { box-shadow: none; transform: none; }

/* ─── Schublade: das alte Verhalten, für schmale Fenster ─────────────────── */
[data-menu="schublade"] .side-menu {
  transform: translateX(-100%);
  transition: transform .25s ease;
  box-shadow: 14px 0 34px var(--hover-flaeche);
  padding-top: 82px;
  max-width: 80vw;
}
[data-menu="schublade"] .side-menu.open { transform: translateX(0); }
[data-menu="schublade"] .sm-zu { display: none; }

.side-menu-edge { position: fixed; top: 0; left: 0; width: 18px; height: 100%; z-index: calc(var(--z-leiste) - 2); }
.side-menu-toggle {
  position: fixed; top: 18px; left: 18px; z-index: var(--z-leiste);
  width: 52px; height: 52px;
  border-radius: var(--r-pill, 999px);
  border:1px solid var(--karten-linie);
  background:var(--paper);
  box-shadow: var(--shadow);
  display: grid; place-items: center;
  color: var(--ink); padding: 0; cursor: pointer;
}
.side-menu-toggle svg { width: 24px; height: 24px; }

/* ─── Fußbereich ─────────────────────────────────────────────────────────────
   margin-top: auto schiebt ihn ans untere Ende — das Menü ist ein Flex-Spalten-
   Container, deshalb reicht das und es braucht kein position: absolute, das bei
   scrollendem Inhalt mitwandern würde. */
.sm-fuss {
  margin-top: auto;
  padding: var(--sp-4) var(--sp-zelle) 2px;
  /* Dieselbe graue Haarlinie wie bei den Kapitelmarken (01.09.2026): sie
     liegt auf derselben weissen Flaeche und trennt dieselbe Art von Sache.
     Zwei Trennlinien in EINER Leiste, eine beige und eine grau, waeren zwei
     Bauformen fuer denselben Strich. */
  border-top: 1px solid var(--sidebar-marke-linie);
  display: flex; flex-direction: column; gap: 3px;
}
.sm-version {
  font-size: var(--fs-mini); font-weight: var(--fw-fett); letter-spacing: var(--ls-versal-eng);
  color: var(--muted);
}
.sm-fuss .stand-zeile { font-size: var(--fs-mini); }
[data-menu-zu="ja"][data-menu="leiste"] .sm-fuss { display: none; }


/* ─── Fußbereich: Version und Datenstand ─────────────────────────────────────
   Zwei Zeilen mit Unterstrich-Präfix (Wunsch MWM 27.07.2026):
     _v1.2 · Asset_Nest (27.07.2026, 15:40)
     _Content Change  heute, 14:12
   Der Unterstrich markiert beide als technische Angaben — sie gehören nicht
   zum Inhalt, sondern sagen, wie alt das ist, was man sieht. Zwei getrennte
   Fragen, deshalb zwei Zeilen: wann kam der CODE, wann kamen die DATEN. */
.sm-fuss .sm-version { display: block; line-height: 1.5; }
.sm-fuss .sm-stempel { opacity: .72; white-space: nowrap; }
.sm-fuss .stand-zeile { display: inline; }

/* Die Commit-Regeln sind am 25.08.2026 entfallen, zusammen mit dem Element.
   Ein Stylesheet, das eine Klasse gestaltet, die es nicht mehr gibt, macht
   die nächste Suche länger, nicht kürzer. */

/* ─── DEMO-Streifen ──────────────────────────────────────────────────────────
   Klebt oben und scrollt NICHT weg. Der Grund ist kein Design: ohne ständig
   sichtbare Markierung trägt man irgendwann echte Zahlen in die Demo ein oder
   zeigt echte Zahlen im Glauben, es sei die Demo. Beides merkt man erst danach.
   Gelb statt Rot: es ist kein Fehler, sondern ein Zustand. */
/* ÜBER DIE GANZE BREITE, auch über die Menüleiste.
   
   Vorher war er `sticky` und lag damit IM body — und der trägt links den
   Platz für die feste Menüleiste (padding-left). Der Streifen begann also
   erst an der Menükante und ließ links ein gelbes Loch. Für einen Hinweis,
   der sagt "nichts hiervon ist echt", ist das die falsche Halbherzigkeit:
   er soll über allem liegen, auch über der Navigation.
   
   `fixed` nimmt ihn aus dem Fluss, deshalb bekommt der body unten die
   passende Polsterung — sonst rutschte der Seiteninhalt darunter. */
#profilBanner {
  position: fixed; top: 0; left: 0; right: 0; z-index: var(--z-dialog);
  display: flex; align-items: center; gap: var(--sp-3); flex-wrap: wrap;
  padding: var(--sp-2) var(--sp-5);
  background:var(--highlight-gelb); color: var(--flaeche-invers);
  font-family: var(--font-body); font-size: var(--fs-fuss);
  box-shadow: 0 2px 10px rgba(var(--flaeche-invers-rgb), .10);
}
#profilBanner b { letter-spacing: var(--ls-versal); font-weight: var(--fw-fett); }
#profilBanner span { opacity: .78; }
#profilBanner button {
  margin-left: auto; border:1px solid rgba(var(--flaeche-invers-rgb), var(--wash-kraeftig));
  background:rgba(var(--flaeche-invers-text-rgb), var(--wash-satt)); color: inherit;
  border-radius:var(--r-pill); padding: var(--sp-1) 13px; font: inherit; font-weight: var(--fw-halbfett);
  cursor: pointer;
}
#profilBanner button:hover { background:var(--flaeche-invers-text); }

/* Höhe des Streifens an EINER Stelle. Er taucht in drei Regeln auf — Menü,
   Menürand und Seitenpolsterung; drei Zahlen, die auseinanderlaufen können,
   wären drei Gelegenheiten für eine Lücke von zwei Pixeln. */
:root { --demo-streifen: 37px; }

/* Die feste Menüleiste beginnt sonst UNTER dem Streifen und ragt unten heraus. */
[data-profil="demo"] .side-menu {
  top: var(--demo-streifen);
  height: calc(100vh - var(--demo-streifen));
}
[data-profil="demo"] .side-menu-edge {
  top: var(--demo-streifen);
  height: calc(100% - var(--demo-streifen));
}
/* Der Platz, den `fixed` nicht mehr selbst beansprucht. */
[data-profil="demo"] body { padding-top: var(--demo-streifen); }
/* Der Hamburger-Knopf der Schubladen-Ansicht sonst unter dem Streifen. */
[data-profil="demo"] .side-menu-toggle { top: calc(18px + var(--demo-streifen)); }


/* ─── Profilblock (oben, vor den Modulen) ────────────────────────────────────
   Beantwortet die Frage, die vor allen anderen kommt: wessen Zahlen sehe ich.
   Der Name ist groß, die Art klein darunter — man erkennt sein Profil am
   Namen, nicht an der Kategorie. */
.sm-profil {
  display: flex; flex-direction: column; gap: 1px;
  padding: 2px var(--sp-innen) var(--sp-zelle) calc(6px + var(--sm-icon-spalte));
}
.sm-profil-name {
  font-size: var(--fs-sm); font-weight: var(--fw-fett); color: var(--ink);
  border-radius:var(--r-bild); outline: none;
}
.sm-profil-name[contenteditable="true"] {
  background:var(--soft); box-shadow: var(--fokus-ring);
  padding: 0 var(--sp-1); cursor: text;
}
.sm-profil-art { font-size: var(--fs-pille); color: var(--muted); }

/* Dritte Zeile: wer im Profil vorkommt. Kleiner und stiller als die Art —
   sie beantwortet eine Zusatzfrage ("wessen Konten sind das"), nicht die
   Hauptfrage ("wessen Zahlen sehe ich"). Steht sie leer, nimmt sie auch
   keinen Platz ein. */
.sm-profil-leute {
  display: block;
  font-size: var(--fs-fuss);
  color: var(--muted);
  letter-spacing: var(--ls-null);
}
.sm-profil-leute:empty { display: none; }
/* Im Demo-Profil trägt der Name den Warnton — dieselbe Farbe wie der Streifen
   oben, damit beide als eine Aussage gelesen werden. */
.sm-profil.ist-demo .sm-profil-name::after {
  content: "DEMO"; margin-left: var(--sp-2); padding: 1px var(--sp-innen); border-radius:var(--r-pill);
  background:var(--highlight-gelb); color: var(--flaeche-invers);
  font-size: var(--fs-mini); font-weight: var(--fw-fett); letter-spacing: var(--ls-versal); vertical-align: 2px;
}


/* WebKit hoert nicht auf scrollbar-color, sondern nur auf seine eigenen
   Pseudoelemente. Ohne diese zwei Zeilen behielte der Balken in Chrome und
   Safari den kraeftigeren Ton aus shared/global.css, waehrend Firefox schon
   den blassen zeigt — derselbe Balken, zwei Farben je nach Browser. */
.side-menu::-webkit-scrollbar-thumb { background:var(--scrollbar-daumen-leiste); }
.side-menu::-webkit-scrollbar-thumb:hover { background:var(--scrollbar-daumen-leiste-aktiv); }
