/* ── Kostenstand-Sidebar — Optik 1:1 zur rechts angedockten AKVS-Bar (.vg-panel) ── */
.lv-flaeche { display: flex; gap: 10px; align-items: stretch; }
.lv-flaeche .lv-grid { flex: 1; }
.lv-sidebar { width: 190px; flex-shrink: 0; height: calc(100vh - 252px);
  background: var(--bg); border: 1px solid var(--rand); border-radius: 8px;
  box-shadow: 0 1px 8px rgba(0,0,0,0.06); overflow: hidden;
  display: flex; flex-direction: column; }
/* Kopfzeile wie .vg-panel-kopf/.vg-panel-titel/.vg-panel-zu */
.sb-kopf { display: flex; align-items: center; justify-content: space-between;
  padding: 10px 12px 8px; border-bottom: 1px solid var(--rand); }
.sb-kopf-titel { font-size: 13px; font-weight: 600; }
.sb-kopf-zu { border: none; background: transparent; color: var(--text-3);
  cursor: pointer; font-size: 14px; }
.sb-kopf-zu:hover { color: var(--text); }
.sb-liste { flex: 1; overflow-y: auto; padding: 4px 0 8px; }
/* Eingeklappt: dezenter Pfeil-Griff — exakte Spiegelung von .vg-griff (AKVS-Bar
   rechts), damit beide auf derselben Höhe sitzen (fix auf halber Fensterhöhe). */
.lv-sidebar-zu { position: fixed; left: 0; top: 50%; transform: translateY(-50%); z-index: 40;
  width: 20px; height: 60px; display: flex; align-items: center; justify-content: center;
  background: var(--bg); color: var(--text-3);
  border: 1px solid var(--rand); border-left: none; border-radius: 0 6px 6px 0;
  font-size: 16px; line-height: 1; cursor: pointer;
  box-shadow: 3px 0 12px rgba(0,0,0,0.12); }
.lv-sidebar-zu:hover { color: var(--text); background: var(--hover); }
.sb-gruppe { font-size: 10.5px; font-weight: 600; letter-spacing: .4px;
  text-transform: uppercase; color: var(--text-2); padding: 10px 12px 3px; }
.sb-eintrag { display: flex; align-items: center; justify-content: space-between;
  gap: 8px; padding: 5px 12px 5px 18px; font-size: 12px; cursor: pointer;
  border-left: 3px solid transparent; }
.sb-eintrag:hover { background: var(--hover); }
.sb-eintrag.aktiv { border-left-color: var(--oeko-fg); color: var(--oeko-fg);
  font-weight: 600; background: var(--hover); }
.sb-eintrag.leer .sb-name { color: var(--text-3); font-style: italic; }
.sb-zahl { font-size: 10.5px; color: var(--text-3); }

/* Fortschreiben-Dialog (AKVS) */
.fort-quelle { display:flex; align-items:center; gap:8px; padding:7px 10px;
  border-radius:6px; cursor:pointer; border:1px solid transparent; }
.fort-quelle:hover { background: var(--hover); }
.fort-quelle.aktiv { border-color: var(--akzent); background: var(--hover); }
.fort-quelle.leer { opacity:.55; cursor:default; font-style:italic; }
.fort-quelle .fort-name { flex:1; }
.fort-warnung { color: var(--warn, #d97706); font-weight:600; }
/* AKVS „Aus anderer Stufe fortschreiben" — 420 breit wie StufeFortschreibenDialog.xaml. */
.fort-dialog { width: 420px; max-width: 94vw; }

/* GAEB-Import-Knopf (Label um verstecktes InputFile) */
.import-knopf { display:inline-flex; align-items:center; cursor:pointer; }
.import-knopf input[type=file] { display:none; }

/* Kostenträger */
.kt-streifen { display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  padding:5px 12px; font-size:12px; color: var(--text-2);
  border-bottom:1px solid var(--rand); }
.kt-titel { font-weight:600; }
.kt-chip { padding:2px 8px; border-radius:10px; background: var(--hover); }
.kt-chip em { font-style:normal; color: var(--text-2); }
.kt-zeile { display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.kt-zeile .feld { flex:1; }
.kt-zeile .kt-anteil { flex:0 0 90px; text-align:right; }

/* Modus-Akzentlinie unter der Kopfleiste (Farbkanon: Rot nur für Gefahr) */
.lv-kopf.modus-akvs   { border-bottom: 2px solid var(--akvs-fg); }
.lv-kopf.modus-oeko   { border-bottom: 2px solid var(--oeko-fg); }
.lv-kopf.modus-termin { border-bottom: 2px solid var(--termin-fg); }
.lv-kopf.modus-oenorm { border-bottom: 2px solid var(--oenorm-fg); }
.lv-kopf.modus-db_lv  { border-bottom: 2px solid var(--dblv-fg); }
.lv-kopf.modus-auswertung { border-bottom: 2px solid var(--termin-fg); }

/* Export-Menü ans Kontextmenü angleichen */
.export-liste .cm-item { border-radius: 5px; padding: 6px 10px; }

/* 3D-Viewer-Panel */
.viewer-panel { width: 46%; min-width: 380px; display: flex; flex-direction: column;
  border: 1px solid var(--rand-fein); border-radius: 6px; overflow: hidden;
  height: calc(100vh - 252px); background: var(--bg); }
.viewer-kopf { display: flex; align-items: center; gap: 8px; padding: 6px 10px;
  border-bottom: 1px solid var(--rand-fein); }
.viewer-kopf .vw-titel { font-weight: 600; font-size: 12.5px; }
.viewer-panel .hinweis-text { margin: 6px 10px; }
.viewer-frame { flex: 1; border: 0; width: 100%; background: #1c1c1e; }
.btn-leise.aktiv { border-color: var(--akzent); font-weight: 600; }

/* Statusleiste (wie Desktop: links Zählung/Selektion/Speicherstand, rechts Summen) */
/* Fußzeile mit der Summe klebt am unteren Rand — sonst rutscht sie bei langen LVs
   unter den Falz und wäre erst nach dem Scrollen ans Grid-Ende sichtbar. */
.lv-statusbar { display: flex; align-items: center; gap: 8px; padding: 5px 70px 5px 12px;
  font-size: 11.5px; color: var(--text-2); border-top: 1px solid var(--rand-fein);
  background: var(--bg); margin-top: 4px; position: sticky; bottom: 0; z-index: 5; }
.lv-statusbar .st-sep { color: var(--text-3); }
.lv-statusbar .st-warn { color: var(--akvs-fg); font-weight: 600; }
.lv-statusbar .fett { color: var(--text); }

/* Modus-Block-Titel im Kontextmenü (farbige Kante wie Desktop) */
.cm-modus-titel { font-size: 10px; font-weight: 700; letter-spacing: .08em;
  padding: 6px 12px 2px; color: var(--text-2); }
.cm-modus-titel.modus-akvs { color: var(--akvs-fg); border-left: 3px solid var(--akvs-fg); }

/* Rechtes Katalog-Panel offen (body.vg-offen, siehe csmPanelOffen): das Grid
   macht Platz statt überdeckt zu werden — Panelbreite 400 + Griff/Luft. */
/* KEINE Margin-Transition: waehrend der Animation misst Blazor-Virtualize den
   Viewport falsch und laesst sporadisch Zeilen/Zebrastreifen aus (Anwender-
   Feedback mit Screenshot) — das Panel klappt jetzt instant. */
body.vg-offen .lv-flaeche { margin-right: 410px; }
/* Linkes Zuordnungs-Panel offen (body.za-offen, siehe csmPanelLinksOffen) */
body.za-offen .lv-flaeche { margin-left: 370px; }
