/* BakeIT Backstraße — OpenUI5 / Fiori Horizon Feinschliff */

/* ━━━ BakeIT Design Tokens (bk-*) — geteilte Foundation (plattformweit identisch) ━━━
   Quelle: Launchpad. In allen 4 Apps am Kopf der style.css, damit Radius/Shadow/
   Content-Breite konsistent sind. Lokale bs*-Styles nutzen die Tokens, wo risikolos. */
:root {
  --bk-color-amber: #f59e2c;
  --bk-color-amber-bg: rgba(245, 158, 44, 0.08);
  --bk-radius-card: 0.75rem;
  --bk-radius-panel: 0.5rem;
  --bk-radius-chip: 0.375rem;
  --bk-shadow-tile: 0 0.125rem 0.5rem rgba(0,0,0,0.06);
  --bk-shadow-tile-hover: 0 0.25rem 0.875rem rgba(0,0,0,0.12);
  --bk-font-mono: "Fira Code", "Cascadia Code", "SF Mono", Consolas, "Courier New", monospace;
  --bk-content-max-width: 1200px;
  --bk-content-padding: 1.5rem;
}

/* ── Logo-Fix: object-fit: contain verhindert Verzerrung in ShellBar-Icon und Avataren ──
   SAP Avatar/ShellBar rendert ein <img>; ohne object-fit wird das Bild gestreckt wenn
   das natürliche Seitenverhältnis vom quadratischen Container abweicht.
   Nur object-fit setzen — width/height NICHT erzwingen (würde ShellBar-Icon verzerren). */
.sapFAvatarImage {
  object-fit: contain !important;
}
/* Card-Header-Icon (f:Card header iconSrc) proportional halten */
.sapFCardHeader .sapFCardHeaderImage .sapFAvatarImage,
.sapFCardHeader .sapFAvatarImage {
  object-fit: contain !important;
}
/* ShellBar-Logo: custom icon / homeIcon-Button-Image proportional (kein Stretch).
   Defensiv: greift auch wenn kein Logo-Button sichtbar ist. */
.sapFShellBar .sapMBtnCustomIcon,
.sapFShellBar img.sapMBtnIcon {
  object-fit: contain !important;
}
/* ShellBar: großes Standard-Padding (3rem/48px) links verkleinern — kein "Loch" zwischen Rand und Logo. */
.sapFShellBar {
  padding-left: 1rem !important;
  padding-right: 1.25rem !important;
}

.bsBrandTitle { color: var(--sapShell_TextColor); font-weight: 600; margin-left: .4rem; }
.bsBrandBtn { padding: 0 .25rem; }
.bsBrandFlame { margin-left: .25rem; }
.bsHeaderLink { margin: 0 .75rem; }
.bsHeaderLink .sapMLnk { color: var(--sapShell_InteractiveTextColor); }
.bsViewSwitch { margin-left: 1rem; }

/* Breadcrumb im Header */
.bsCrumb .sapMBtnContent { color: var(--sapShell_TextColor); }
.bsCrumbSep { color: var(--sapShell_TextColor); opacity:.6; margin: 0 .15rem; }

.bsMono { font-family: "SF Mono", Consolas, "Courier New", monospace; }
.bsDim { color: var(--sapContent_LabelColor); }
/* Skript-Editor (Deploy-/Pipeline-Skripte im Workflows-Tab): kompakter Code-Look */
.bsScriptEditor textarea {
  font-family: "SF Mono", Consolas, "Courier New", monospace;
  font-size: 0.78rem;
  line-height: 1.45;
  tab-size: 4;
  white-space: pre;
}
/* Dossier-Keys: etwas größer für bessere Lesbarkeit, Uppercase bleibt für semantische Klarheit */
.bsDk { color: var(--sapContent_LabelColor); font-size: .7rem; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; }

/* Spalten-Titel (Basis; FCL-spezifische Overrides weiter unten) */
.bsColTitleSpaced { margin-top: .75rem; }

/* Navigation links */
.bsNavCol { background: var(--sapList_Background); border-right: 1px solid var(--sapList_BorderColor); }
.bsNavBox { padding-bottom: 1rem; }
.bsProjQuickList .sapMLIB { padding: 0; }

/* 3-Spalten-Layout */
.bsCols { overflow: hidden; }
.bsCols > .bsNavCol, .bsCols > .bsAuditCol { flex: 0 0 auto; }
.bsFlexCol { flex: 1 1 auto; min-width: 0; }

/* Detail-Spalte */
.bsDetailCol { background: var(--sapGroup_ContentBackground); }
.bsDetailBox { padding: 1rem 1.25rem; }
.bsRunHead { margin-bottom: .75rem; gap: .6rem; }
/* Status EINMAL: kompaktes Badge direkt am Spaltentitel (contentRight). */
.bsHeaderStatus { font-weight: 600; margin-right: .25rem; }
.bsHeaderStatus .sapMObjStatusText { font-weight: 600; }
.bsRunHeadActions { gap: .5rem; }

/* Fehler-Strip im Run-Detail (Fix 2a) */
.bsRunErrorStrip { margin-bottom: .75rem; }

/* Live-Banner: laufender Run — pulsierender Punkt + „Station X läuft …". */
.bsRunLiveBanner {
  gap: .55rem; margin-bottom: .75rem; padding: .5rem .85rem;
  border: 1px solid var(--sapInformativeColor, #0a6ed1); border-radius: .5rem;
  background: var(--sapInformationBackground, var(--sapList_Background));
}
.bsRunLiveText { font-weight: 600; color: var(--sapInformativeColor, #0a6ed1); }
.bsRunLivePulse {
  display: inline-block; width: .7rem; height: .7rem; border-radius: 50%;
  background: var(--sapInformativeColor, #0a6ed1); flex: 0 0 auto;
  box-shadow: 0 0 0 0 var(--sapInformativeColor, #0a6ed1);
  animation: bsRunPulse 1.4s ease-out infinite;
}
@keyframes bsRunPulse {
  0%   { box-shadow: 0 0 0 0 rgba(10,110,209,.55); opacity: 1; }
  70%  { box-shadow: 0 0 0 .55rem rgba(10,110,209,0); opacity: .85; }
  100% { box-shadow: 0 0 0 0 rgba(10,110,209,0); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .bsRunLivePulse { animation: none; }
}

/* Doku-Busy-Banner: Documentation Agent läuft synchron vor dem Review-Gate.
   Akzentuiert (amber) abgesetzt vom generischen Live-Banner, damit die Doku-Phase als eigener
   Zustand erkennbar ist; Gate ist in dieser Phase noch nicht freigebbar. */
.bsDocPhaseBanner {
  border-color: var(--sapWarningColor, #e9730c);
  background: var(--sapWarningBackground, var(--sapList_Background));
}
.bsDocPhaseSpinner { flex: 0 0 auto; margin-right: .15rem; }
.bsDocPhaseTexts { gap: .1rem; }
.bsDocPhaseText { color: var(--sapWarningColor, #e9730c); }
.bsDocPhaseHint { font-size: .8rem; }

/* Gate-Aktionsbereich: prominent direkt unter dem Run-Header (nur bei gate_pending) */
.bsGateHeaderAction {
  margin-bottom: 1rem;
  padding: .75rem 1rem;
  border: 2px solid var(--sapWarningBorderColor);
  border-radius: .5rem;
  background: var(--sapWarningBackground);
  gap: .6rem;
}
.bsGateHeaderStrip { margin-bottom: .4rem; }
.bsGateHeaderRow { gap: .75rem; flex-wrap: wrap; align-items: flex-start; }
.bsGateHeaderInput { flex: 1 1 16rem; min-width: 12rem; }
.bsGateHeaderBtns { gap: .5rem; flex: 0 0 auto; flex-wrap: wrap; align-self: flex-end; }
.bsGateHeaderBtn { align-self: flex-start; }
.bsGateHeaderBtnReject { align-self: flex-start; }
@media (max-width: 600px) {
  .bsGateHeaderRow { flex-direction: column; }
  .bsGateHeaderInput { min-width: 0; width: 100%; }
  .bsGateHeaderBtns { width: 100%; }
}

/* Dossier / Auslieferung */
.bsDossier { margin-bottom: 1rem; }
.bsDossierBody { padding: .25rem 0; gap: .6rem; }
.bsDossierFeature { margin-bottom: .25rem; color: var(--sapTextColor); }
/* Grid-Zeilen im Dossier: kleinerer vertikaler Abstand zwischen Label und Wert */
.bsDossierGrid { margin-bottom: .35rem; }
/* Einzelne Zelle: Label oben, Wert darunter, eng gestapelt */
.bsDossierCell { gap: .1rem; }
/* Commit-Block: oberer Trennstrich + etwas Abstand */
.bsDossierCommit {
  border-top: 1px solid var(--sapList_BorderColor);
  padding-top: .55rem;
  margin-top: .25rem;
  gap: .4rem;
}
.bsDossierCommitLabel { margin-bottom: .3rem; display: block; }
/* Commit-Beschreibung breit ueber die ganze Breite */
.bsDossierSubject { margin-top: .2rem; }

/* Prozesskette — umbruchfähig (wrap), kein horizontaler Overflow.
   Knoten umbrechen in der Spalte; Pfeile via Flex-Gap statt absoluter Positionierung. */
.bsChainPanel { margin-bottom: 1rem; }
.bsChain {
  padding: .5rem 0;
  gap: 1.6rem .6rem;            /* row-gap / column-gap */
  max-width: 100%;
}
.bsChain.sapMFlexBox { flex-wrap: wrap; }
.bsChainNode {
  position: relative;
  flex: 0 1 auto;
  min-width: 6.5rem;
  max-width: 10rem;
  box-sizing: border-box;
  text-align: center;
  padding: .6rem .5rem;
  border: 1px solid var(--sapTile_BorderColor);
  border-radius: .5rem;
  background: var(--sapTile_Background);
  align-items: center;
}
/* Pfeil rechts neben jedem Knoten außer dem letzten; sitzt im column-gap. */
.bsChainNode::after {
  content: "";
  position: absolute;
  right: -.55rem;
  top: 50%;
  margin-top: -4px;
  border-left: 6px solid var(--sapContent_NonInteractiveIconColor);
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
}
.bsChainNode:last-child::after { display: none; }
.bsChainIcon { margin-bottom: .35rem; }
.bsChainName { font-weight: 600; font-size: .78rem; margin-bottom: .25rem; word-break: break-word; }
.bsChainNode .sapMObjStatus { justify-content: center; }
/* Ganzer Knoten klickbar: transparenter Overlay-Button füllt den Knoten. */
.bsChainNode { cursor: pointer; transition: border-color .12s, box-shadow .12s; }
.bsChainNode:hover { border-color: var(--sapContent_FocusColor); box-shadow: 0 1px 6px rgba(0,0,0,.12); }
/* Overlay-Button füllt den ganzen Knoten. UI5 wickelt den Button in einen
   Flex-Item-Wrapper (div) — dieser wird absolut positioniert und gefüllt. */
.bsChainNode > div:has(> .bsChainHit) {
  position: absolute; left: 0; top: 0; right: 0; bottom: 0;
  margin: 0 !important; min-width: 0 !important; z-index: 2;
}
.bsChainHit.sapMBtn {
  position: absolute; left: 0; top: 0; right: 0; bottom: 0;
  width: 100%; height: 100%; min-width: 0; margin: 0; padding: 0; opacity: 0;
}
.bsChainHit.sapMBtn .sapMBtnInner {
  width: 100%; height: 100%; min-width: 0; background: transparent; border: none; box-shadow: none;
}

/* Gate-CTA (above-the-fold Hinweis im Run-Header) */
.bsGateCta { gap: .5rem; margin-top: .5rem; }
.bsGateCtaStrip { margin-bottom: 0; }
.bsGateCtaBtn { align-self: flex-start; }

/* Gate */
.bsGate { margin-bottom: 1rem; border: 2px solid var(--sapWarningBorderColor); border-radius: .5rem; background: var(--sapWarningBackground); }
.bsGateBody { padding: .75rem; gap: .5rem; }
.bsGateStrip { margin-bottom: .25rem; }
.bsGateStripDanger { margin-bottom: .5rem; }
.bsGateTitle { margin-bottom: .5rem; }
.bsGateForm { gap: .5rem; }
.bsGateInput { width: 100%; box-sizing: border-box; }
.bsGateActions { gap: .5rem; flex-wrap: wrap; }
.bsGateBtn { align-self: flex-start; }
.bsGateBtnReject { align-self: flex-start; }

/* Evidenz — Zusammenfassung + Absprung (keine Thumbnails mehr) */
.bsEvidence { margin-bottom: 1rem; }
.bsEvSummary { gap: .75rem; padding: .25rem 0; }
.bsEvSummaryInfo { gap: .2rem; }
.bsEvSummaryStatus { font-size: 1rem; font-weight: 600; }
.bsEvSummaryStatus .sapMObjStatusIcon, .bsEvSummaryStatus .sapMObjStatusText { font-size: 1rem; }
.bsEvOpenBtn { align-self: center; }

/* Stations-Log-Dialog */
.bsStationBody { gap: .5rem; padding: .25rem; }
.bsStationHead { width: 100%; }
.bsStationTitle { margin: 0; }

/* Logs */
.bsLogBody {
  display: block;
  font-family: "SF Mono", Consolas, monospace;
  font-size: .78rem;
  /* Lange Zeilen umbrechen statt horizontal scrollen (genug Platz). */
  white-space: pre-wrap;
  word-break: break-word;
  overflow-wrap: anywhere;
  background: var(--sapList_Background);
  color: var(--sapTextColor);
  padding: .75rem;
  border-radius: .35rem;
  max-height: 40rem;
  overflow-x: hidden;
  overflow-y: auto;
  width: 100%;
  box-sizing: border-box;
}

/* Audit */
.bsAuditCol { background: var(--sapList_Background); border-left: 1px solid var(--sapList_BorderColor); }
.bsAuditBox { padding-bottom: 1rem; }
.bsAuditRow { padding: .4rem 1rem; border-bottom: 1px solid var(--sapList_BorderColor); }
.bsAuditActor { font-weight: 600; font-size: .8rem; }
.bsAuditAction { font-size: .75rem; color: var(--sapContent_LabelColor); }

/* Empty states */
.bsEmptyIcon { color: var(--sapContent_NonInteractiveIconColor); margin-bottom: .75rem; }

/* Verwaltung */
.bsVwListCol { background: var(--sapList_Background); border-right: 1px solid var(--sapList_BorderColor); }
.bsVwDetailCol { background: var(--sapGroup_ContentBackground); }
.bsVwDetailBox { padding: 1rem 1.25rem; }
.bsVwPanel { margin-bottom: 1rem; }
.bsVwForm .sapUiRespGridSpan { margin-bottom: .5rem; }
.bsVwWide { width: 100%; }
.bsVwActions { background: transparent; }
.bsGitRepo { font-weight: 600; display: block; margin-bottom: .5rem; }

/* Drawer */
.bsDrawerBody { padding: .5rem; }
.bsSecretToken { margin: .2rem; }
.bsSecretHint { margin-bottom: .5rem; }

/* Wizard */
.bsWizStep { padding: .5rem .25rem; }
.bsWizFields > .sapMLabel { margin-top: .5rem; }
.bsWizEnvPanel { margin-top: .5rem; }
.bsWizEnvRow { gap: .75rem; }
.bsWizCheckRow { gap: .5rem; padding: .3rem 0; }
.bsWizSummaryBody { padding: .25rem; }
.bsWizSummaryBody .sapMLabel { margin-right: .5rem; }

/* ───────────────────────── Startmenü (Home) ───────────────────────── */
.bsHomePage { height: 100%; }
.bsHomeScroll { box-sizing: border-box; }
.bsHomeWrap { max-width: 1200px; margin: 0 auto; padding: 1.5rem 1.5rem 3rem; box-sizing: border-box; width: 100%; }

.bsHero { padding: 1.5rem 0 2rem; text-align: center; gap: .35rem; }
.bsHeroTitle { font-size: 2rem; }
.bsHeroSub { color: var(--sapContent_LabelColor); margin-bottom: 1rem; max-width: 36rem; }
.bsHeroSearch { width: 100%; max-width: 32rem; box-sizing: border-box; margin-bottom: 1rem; }
.bsHeroActions { gap: .75rem; }

.bsHomeSection { margin-top: 1.5rem; }
.bsSectionHead { margin-bottom: .5rem; }
.bsSectionTitle { margin-bottom: .25rem; }
.bsSectionCount { white-space: nowrap; }

/* Kacheln */
.bsTile {
  box-sizing: border-box;
  height: 100%;
  padding: .9rem 1rem;
  border: 1px solid var(--sapTile_BorderColor);
  border-radius: .65rem;
  background: var(--sapTile_Background);
  gap: .5rem;
  justify-content: space-between;
  transition: box-shadow .12s ease, transform .12s ease;
}
.bsKundenGrid .sapFGridListItem:hover .bsTile,
.bsRecentGrid .sapFGridListItem:hover .bsTile {
  box-shadow: 0 4px 14px rgba(0,0,0,.10);
  transform: translateY(-1px);
}
.bsTileHead { gap: .5rem; }
.bsTileIcon { color: #f59e2c; flex: 0 0 auto; }
.bsTileName { min-width: 0; word-break: break-word; }
.bsTileSub { font-size: .8rem; }
.bsTileFoot { width: 100%; margin-top: .25rem; }
.bsTileCount .sapMObjStatusText { font-weight: 600; }
.bsRecentTile { background: var(--sapTile_Background); }
.bsRecentGrid, .bsKundenGrid { background: transparent; }

/* Root-Kachel: Kopfzeile mit Pipeline-Ampel rechts */
.bsTileHeadLeft { gap: .5rem; min-width: 0; flex: 1 1 auto; align-items: center; }
.bsTilePipelineStatus { flex: 0 0 auto; font-size: .78rem; font-weight: 600; }
.bsTilePipelineStatus .sapMObjStatusText { font-weight: 600; }

/* Aktivität / Audit als verankerter Abschnitt (kein schwebendes Accordion) */
.bsHomeAuditSection { margin-top: 2rem; }
.bsHomeAuditCard {
  border: 1px solid var(--sapTile_BorderColor);
  border-radius: .65rem;
  background: var(--sapTile_Background);
  overflow: hidden;
}
.bsHomeAuditCard .bsAuditList { background: transparent; }
.bsAuditItem { border-bottom: 1px solid var(--sapList_BorderColor); }
.bsHomeAuditCard .bsAuditRow { padding: .55rem .9rem; width: 100%; box-sizing: border-box; gap: 1rem; }
.bsAuditRowInfo { min-width: 0; gap: .1rem; flex: 1 1 auto; }
.bsAuditTime { flex: 0 0 auto; white-space: nowrap; font-size: .75rem; }

/* ───────────────────────── Kunden-Cockpit (Projekt-Dashboard) ───────────────────────── */
.bsCockpitPage { background: var(--sapBackgroundColor); }
.bsCockpitScroll { box-sizing: border-box; }
.bsCockpitWrap { max-width: 1180px; margin: 0 auto; padding: 1.5rem 1.5rem 3rem; width: 100%; box-sizing: border-box; gap: 1rem; }
.bsCockpitHead { margin-bottom: .25rem; }
.bsCockpitHeadRow { gap: 1rem; }
.bsCockpitHeadInfo { gap: .15rem; min-width: 0; }
.bsCockpitTitle { font-size: 1.35rem; }
.bsCockpitSub { font-size: .85rem; }
.bsCockpitCount { flex: 0 0 auto; font-weight: 600; }
.bsCockpitLoading { padding: 1rem; }

/* Karten-Grid: responsive 2 Spalten ab mittlerer Breite */
.bsCockpitGrid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(28rem, 1fr));
  gap: 1rem;
}
@media (max-width: 700px) { .bsCockpitGrid { grid-template-columns: 1fr; } }

.bsCockpitEmpty { padding: 3rem 1rem; gap: .6rem; align-items: center; grid-column: 1 / -1; }
.bsCockpitEmptyIcon { font-size: 2.5rem; color: var(--sapContent_NonInteractiveIconColor); opacity: .5; }

/* Einzelne Projekt-Karte */
.bsProjCard {
  box-sizing: border-box;
  padding: 1.1rem 1.25rem;
  border: 1px solid var(--sapTile_BorderColor);
  border-radius: var(--bk-radius-card, .75rem);
  background: var(--sapTile_Background);
  gap: 1rem;
  transition: box-shadow .12s ease, transform .12s ease, border-color .12s ease;
}
.bsProjCard:hover { box-shadow: 0 6px 20px rgba(0,0,0,.18); transform: translateY(-1px); border-color: var(--sapContent_FocusColor); }

.bsProjCardHead { gap: .75rem; }
.bsProjCardInfo { gap: .15rem; min-width: 0; flex: 1 1 auto; }
.bsProjCardName { font-size: 1.05rem; }
.bsProjCardRepo { font-size: .72rem; opacity: .85; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.bsProjCardStatus { flex: 0 0 auto; font-size: .85rem; font-weight: 600;
  padding: .25rem .6rem; border-radius: 1rem; background: var(--sapGroup_ContentBackground);
  border: 1px solid var(--sapTile_BorderColor); }

.bsProjSectionLabel { display: block; margin-bottom: .35rem; }

/* Stationen-Ampel */
.bsProjStagesWrap { gap: 0; }
.bsProjStages { gap: .15rem; padding: .15rem 0; }
.bsProjStageNode { flex: 1 1 0; min-width: 2.4rem; gap: .2rem; }
.bsProjStageDot { }
.bsProjStageLabel { font-size: .62rem; color: var(--sapContent_LabelColor); font-weight: 600;
  text-transform: uppercase; letter-spacing: .03em; white-space: nowrap; }
.bsProjStageArrow { color: var(--sapContent_NonInteractiveIconColor); flex: 0 0 auto; align-self: flex-start; margin-top: .15rem; }

/* Letzte Läufe */
.bsProjRecentWrap { gap: 0; }
.bsProjRecentRow { gap: .6rem; padding: .35rem .25rem; border-radius: .35rem; cursor: pointer; transition: background .1s; }
.bsProjRecentRow:hover { background: var(--sapList_Hover_Background, rgba(255,255,255,.04)); }
.bsProjRecentStatus { flex: 0 0 auto; }
.bsProjRecentId { font-size: .8rem; font-weight: 600; flex: 0 0 auto; color: var(--sapTextColor); }
.bsProjRecentDesc { font-size: .8rem; flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--sapContent_LabelColor); }
.bsProjRecentTime { font-size: .72rem; flex: 0 0 auto; white-space: nowrap; }
.bsProjNoRuns { font-size: .82rem; padding: .35rem .25rem; }

/* Footer-Aktionen */
.bsProjCardFoot { gap: .5rem; padding-top: .25rem; border-top: 1px solid var(--sapList_BorderColor); }
.bsProjCardBtn { flex: 0 0 auto; }

.bsHiddenSyncList { display: none; }

@media (max-width: 600px) {
  .bsCockpitWrap { padding: 1rem 1rem 2.5rem; }
  .bsProjCard { padding: .9rem 1rem; }
}

/* ───────────────────────── FCL Drilldown ───────────────────────── */
/* ───────────────────────── Shell: Icon-Rail + Projekt-Top-Bar + Master/Detail ───────────────────────── */
.bsBody { height: 100%; width: 100%; display: flex; }
/* Hauptbereich (sap.m.Page) rechts neben der Rail; Page regelt Header+Content-Höhe. */
.bsMain { flex: 1 1 auto; min-width: 0; height: 100%; }
.bsMainNav { min-width: 0; }
/* Schmale, immer sichtbare Navigations-Leiste links (sobald Kunde gewählt). */
.bsRail {
  flex: 0 0 auto;
  width: 3.5rem;
  height: 100%;
  box-sizing: border-box;
  padding: .5rem 0;
  gap: .25rem;
  align-items: center;
  background: var(--sapShell_Background, var(--sapBaseColor, #fff));
  border-right: 1px solid var(--sapGroup_ContentBorderColor, var(--sapList_BorderColor));
}
.bsRail .bsRailBtn.sapMBtn { width: 2.75rem; min-width: 2.75rem; height: 2.75rem; margin: 0; border-radius: .5rem; }
.bsRail .bsRailBtn .sapMBtnIcon { font-size: 1.125rem; }
/* Aktiver Eintrag (Emphasized) = dezenter Tint + farbiges Icon + linke Akzentleiste
   (Norm Docs/Testsuite .bkRail) statt vollflächigem blauem Block. */
.bsRail .bsRailBtn .sapMBtnInner.sapMBtnEmphasized {
  background-color: var(--sapButton_Selected_Background, rgba(13,110,253,0.16)) !important;
  border-color: transparent !important;
  box-shadow: none !important;
}
.bsRail .bsRailBtn .sapMBtnInner.sapMBtnEmphasized .sapMBtnIcon {
  color: var(--sapButton_Selected_TextColor, var(--sapHighlightColor, #0070f2)) !important;
}
.bsRail .bsRailBtn.sapMBtn:has(.sapMBtnEmphasized) { position: relative; }
.bsRail .bsRailBtn.sapMBtn:has(.sapMBtnEmphasized)::before {
  content: "";
  position: absolute;
  left: -0.375rem;
  top: 0.45rem;
  bottom: 0.45rem;
  width: 0.1875rem;
  border-radius: 0 0.125rem 0.125rem 0;
  background: var(--sapHighlightColor, #0070f2);
}

/* Projekt-Top-Bar (oben links im Hauptbereich) — Kunde sitzt oben rechts in der ShellBar.
   Mehr Höhe (war zu eng) + vertikal zentriert. */
.bsProjBar { flex: 0 0 auto; padding: .75rem 1rem; gap: .5rem; min-height: 3.5rem; box-sizing: border-box;
  background: var(--sapList_Background); border-bottom: 1px solid var(--sapList_BorderColor); }
.bsProjBar .sapMSlt { height: 2.25rem; }

/* Run-Header: kompakte Fakten-Zeile (ObjectAttributes) statt separatem Auslieferungs-Block. */
.bsRunHeadMeta { gap: 1.25rem; row-gap: .25rem; margin-top: .35rem; }
.bsRunHeadMeta .sapMObjectAttribute { margin: 0; }
.bsProjBarLabel { font-weight: 600; color: var(--sapContent_LabelColor); }
.bsProjSelect { min-width: 12rem; }
.bsProjSelect.sapMSlt { border-radius: .5rem; }

/* FCL füllt die Page-content vollständig; keine extra padding-top nötig —
   die ShellBar sitzt im customHeader der Page, der FCL startet erst darunter. */
.bsFcl { height: 100%; box-sizing: border-box; }

/* #17 begin-Spalte schmaler, Run-Detail breiter.
   FCL setzt inline width px auf .sapFFCLColumnBegin — max-width übersteuert das
   im Flex-Container auch gegen !important-lose inline-styles. Gilt nur wenn
   Begin + Mid beide aktiv sind (TwoColumnsMidExpanded / TwoColumnsBeginExpanded). */
.bsFcl .sapFFCLColumnBegin.sapFFCLColumnActive.sapFFCLColumnFirstActive:not(.sapFFCLColumnLastActive) {
  max-width: 22% !important;
  width: 22% !important;
}
.bsFcl .sapFFCLColumnMid.sapFFCLColumnActive.sapFFCLColumnLastActive {
  flex: 1 1 auto !important;
  width: auto !important;
  max-width: none !important;
}
/* overflow-x: hidden verhindert dass Page-Header oder Listenelemente über die
   Spaltengrenzen ragen (z.B. in schmalen FCL-Spalten links/rechts abschneiden).
   overflow-y: auto belässt den vertikalen Scroll. */
.bsFclCol { background: var(--sapGroup_ContentBackground); overflow-x: hidden; overflow-y: auto; }

/* Spalten-Kopfzeile (Bar): vertikales Padding gegen den "gedrückten" Eindruck.
   sapMPageHeader hat bereits einen Bottom-Border — wir geben links/rechts Luft.
   max-width: 100% + overflow: hidden verhindert dass der Bar bei schmaler Spalte
   über die Spaltengrenzen ragt. */
.bsColBar { padding: .5rem .75rem; min-height: 3rem; max-width: 100%; overflow: hidden; box-sizing: border-box; }
.bsColBar .bsColBarTitle { max-width: 100%; }
.bsColBar .sapMBarLeft { margin-left: 0; gap: .35rem; }
.bsColBar .sapMBarRight { margin-right: 0; }

.bsBeginCol { background: var(--sapList_Background); }

/* Spalten-Inhalt: Fiori-Padding (1rem oben, 1rem links/rechts).
   Die Projektliste beginnt nicht flush am Rand und wird nicht oben abgeschnitten. */
.bsColTitle { padding: 1rem 1rem .5rem; }
.bsProjList { padding: 0 .75rem 1rem; }
.bsProjList .sapMListItems { padding-top: .25rem; }
/* Zeilen-Padding erhöht für bessere Touch-freundlichkeit und visuelle Luft */
.bsProjList .bsProjRow { padding: .75rem .65rem; width: 100%; box-sizing: border-box; gap: .65rem; }
.bsProjInfo { min-width: 0; flex: 1 1 auto; overflow: hidden; }
/* Projektnamen mit Ellipsis statt hartem Abschneiden bei sehr schmalen Spalten */
.bsProjName { font-weight: 600; font-size: .9rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Repo-Sub-Label: deutlichere Hierarchie durch Größe + Farbe */
.bsProjRepo { font-size: .72rem; color: var(--sapContent_LabelColor); opacity: 0.85; }
.bsRunBtn { flex: 0 0 auto; }

/* Pipelines-Spalte */
/* padding-top: .5rem gibt dem Titel-Heading Abstand zur Spalten-Kopfleiste */
.bsMidBox { padding: .5rem 1rem 1.5rem; }
.bsMidBox .bsColTitle { padding-left: 0; padding-right: 0; }
.bsRunsList { margin-top: .25rem; }
/* Erste Row nicht am oberen Rand abgeschnitten */
.bsRunsList.sapMList { padding-top: .25rem; }
/* Run-Listeneinträge: mehr vertikaler Padding */
.bsRunsList .sapMLIB { padding-top: .4rem; padding-bottom: .4rem; }
/* Status-Text in der Run-Liste: UI5 klemmt den Text in .sapMLIBContent (overflow:hidden).
   Wir erlauben Überlauf im Content-Bereich und lassen den Status-Text umbrechen,
   damit lange Werte wie "fehlgeschlagen" oder "wartet am Gate" vollständig lesbar sind.
   Der Wechsel zu overflow:visible ist sicher, weil die Listzeile vertikal wächst. */
.bsRunsList .sapMLIBContent { overflow: visible; }
.bsRunsList .sapMLIBStatus .sapMObjStatus,
.bsRunsList .sapMLIBStatus .sapMObjStatusText { white-space: normal; word-break: break-word; overflow: visible; }

/* Run-Detail in der endColumn: großzügigeres Padding für Lesbarkeit */
.bsEndCol .bsDetailBox { padding: 1.25rem 1.5rem 2rem; }

/* Inline-Chain-Tab-Inhalt */
.bsChainTabs { margin: 0; }
.bsChainTabs.sapMITB { overflow: visible; }

/* ── Laufende Station (Live-Feedback): Pulse-Spinner am Tab-Icon ──
   _markRunningStationTab setzt die Klasse bsChainTabRunning bei jedem Poll DIREKT auf
   das gerenderte Tab-DOM-Element (`.sapMITBFilter`) der aktuell arbeitenden Station —
   NICHT via IconTabFilter.addStyleClass (das propagiert nicht in den DOM, per
   computed-style verifiziert). Der Icon-Container bekommt einen pulsierenden Ring +
   sanftes Pulsieren, damit auf einen Blick klar ist, welche Station gerade läuft. */
.bsChainTabs .bsChainTabRunning .sapMITBFilterIcon {
  position: relative;
  color: var(--sapInformativeColor, #0a6ed1) !important;
  border-radius: 50%;
  animation: bsChainIconPulse 1.4s ease-out infinite;
}
/* Rotierender Spinner-Ring um das laufende Station-Icon. */
.bsChainTabs .bsChainTabRunning .sapMITBFilterIcon::after {
  content: "";
  position: absolute; inset: -4px;
  border-radius: 50%;
  border: 2px solid var(--sapInformativeColor, #0a6ed1);
  border-top-color: transparent; border-right-color: transparent;
  animation: bsChainSpin .9s linear infinite;
  pointer-events: none;
}
@keyframes bsChainIconPulse {
  0%   { box-shadow: 0 0 0 0 rgba(10,110,209,.45); }
  70%  { box-shadow: 0 0 0 .5rem rgba(10,110,209,0); }
  100% { box-shadow: 0 0 0 0 rgba(10,110,209,0); }
}
@keyframes bsChainSpin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .bsChainTabs .bsChainTabRunning .sapMITBFilterIcon,
  .bsChainTabs .bsChainTabRunning .sapMITBFilterIcon::after { animation: none; }
}

/* ── Wartende Gate-Station (gate_pending): amber Glow + Lock-Overlay ──
   _markRunningStationTab setzt bei jedem Poll die stabile Klasse `bsChainTabGate`
   DIREKT auf das gerenderte Tab-DOM (`.sapMITBFilter`) der wartenden Gate-Station —
   analog zur Running-Markierung. An DIESER eigenen Klasse hängt das CSS (statt an der
   von UI5 gerenderten `sapMITBFilterCritical`): Letztere wird beim SELEKTIEREN des Tabs
   (Auto-Open wählt die Gate-Station ohnehin) von UI5 via `.sapMITBSelected
   .sapMITBFilterCritical` mit der dunklen Kontrast-Iconfarbe überschrieben → Icon
   verdunkelt/leer (live per computed-style bestätigt: rgb(29,35,42)). Die eigene
   Klasse + `!important` schlägt diese Selektionsfarbe — das Stations-Icon (Cloud/
   Factory) bleibt im selektierten UND nicht-selektierten Zustand amber, das Schloss
   ist ein kleines Overlay daneben (ersetzt das Icon NICHT). Finding 2+4. */
.bsChainTabs .bsChainTabGate .sapMITBFilterIcon,
.bsChainTabs .sapMITBSelected.bsChainTabGate .sapMITBFilterIcon {
  position: relative;
  color: var(--sapCriticalColor, #e76500) !important;
  border-radius: 50%;
  animation: bsChainGatePulse 1.8s ease-out infinite;
}
/* Kleines Schloss-Overlay am wartenden Gate-Icon (reiner CSS-Marker, ersetzt
   das Stations-Icon NICHT — sitzt unten rechts daneben). */
.bsChainTabs .bsChainTabGate .sapMITBFilterIcon::after {
  content: "\e1d9"; /* sap-icon locked */
  font-family: "SAP-icons";
  position: absolute; right: -7px; bottom: -5px;
  font-size: .7rem; line-height: 1;
  color: var(--sapCriticalColor, #e76500) !important;
  background: var(--sapList_Background, var(--sapBackgroundColor, #1d232a));
  border-radius: 50%; padding: 1px;
  pointer-events: none;
}
@keyframes bsChainGatePulse {
  0%   { box-shadow: 0 0 0 0 rgba(231,101,0,.45); }
  70%  { box-shadow: 0 0 0 .5rem rgba(231,101,0,0); }
  100% { box-shadow: 0 0 0 0 rgba(231,101,0,0); }
}
@media (prefers-reduced-motion: reduce) {
  .bsChainTabs .bsChainTabGate .sapMITBFilterIcon { animation: none; }
}

/* Doku-Sekundär-Badge am QA-Deploy-Tab: signalisiert, dass an diesem Review-Gate der
   Documentation Agent lief/läuft (eigene Stage gate1_docs). _markDocStationTab setzt die
   stabile Klasse bsChainTabDoc bei jedem Poll DIREKT auf das Tab-DOM (deploy_qa). Der D-Marker
   sitzt am OBEN-rechten Eck (das Gate-Schloss sitzt unten-rechts → keine Kollision).

   WICHTIG (Finding, live per computed-style verifiziert): Das Stations-Icon (`.sapMITBFilterIcon`)
   IST selbst das sapUiIcon-Element und rendert sein Glyph (Cloud) über sein EIGENES ::before
   (`content: attr(data-sap-ui-icon-content)`). Ein D-Badge auf demselben ::before ÜBERSCHRIEB
   daher den Cloud-Glyph komplett → das QA-Icon war ein leerer Kreis mit „D". Der D-Marker muss
   deshalb auf ein SEPARATES Element: wir hängen ihn ans Icon-Eltern-Element `.sapMITBTab::after`
   (freies Pseudo) und lassen Glyph-::before + Gate-Schloss-::after des Icons unangetastet. */
.bsChainTabs .bsChainTabDoc .sapMITBTab { position: relative; }
.bsChainTabs .bsChainTabDoc .sapMITBTab::after {
  content: "D"; /* Doku-Marker (codepoint-frei, robust gegen Font-Drift) */
  font-family: var(--sapFontFamily, "72", Arial, sans-serif);
  font-weight: 700;
  /* Oben-rechts am Icon ausrichten: das Icon ist 2.25rem hoch, mittig im sapMITBTab. */
  position: absolute; left: 50%; top: 0;
  transform: translateX(.55rem);
  font-size: .6rem; line-height: 1; letter-spacing: 0;
  color: #fff !important;
  background: var(--sapInformativeColor, #0a6ed1);
  border: 1px solid var(--sapList_Background, var(--sapBackgroundColor, #1d232a));
  border-radius: 50%; width: .95rem; height: .95rem;
  display: flex; align-items: center; justify-content: center;
  pointer-events: none; z-index: 3;
}
.bsChainTabs .bsChainTabDocRunning .sapMITBTab::after {
  background: var(--sapCriticalColor, #e76500);
  animation: bsChainGatePulse 1.8s ease-out infinite;
}

/* Icon-Verdunkelung im SELEKTIERTEN Zustand abfangen (Finding, live per computed-style
   bestätigt): selektiert paint UI5 das Stations-Icon als gefüllte Statusscheibe mit DUNKLEM
   Glyph (.sapMITBSelected .sapMITBFilterPositive → Glyph rgb(29,35,42) auf grünem Grund
   rgb(109,173,31)). Da der D-Marker die Aufmerksamkeit gezielt auf diese Station lenkt, soll der
   Cloud-Glyph hier erkennbar bleiben: wir erzwingen die UMRISS-Darstellung (transparenter
   Scheibenhintergrund + statusfarbener Glyph) wie im nicht-selektierten Zustand. Der grüne Cloud
   bleibt damit voll sichtbar (ok = grün), der D-Marker sitzt klein oben rechts daneben.
   Bei gleichzeitigem Gate (bsChainTabGate) gewinnt dessen amber-Farbregel (color !important) —
   wir neutralisieren hier nur den Scheibenhintergrund, damit der amber Glyph + das Schloss
   sichtbar bleiben (D oben-rechts, Schloss unten-rechts → keine Kollision). */
.bsChainTabs .sapMITBSelected.bsChainTabDoc .sapMITBFilterIcon {
  background-color: transparent !important;
}
/* Glyph-Farbe = STATUSFARBE der Station (statt UI5-Selektions-Kontrast). Pro Filter-Klasse,
   damit ok→grün, failed→rot korrekt bleiben. bsChainTabGate/Running setzen ihre eigene
   !important-Farbe (amber/blau) und werden hier bewusst NICHT übersteuert. */
.bsChainTabs .sapMITBSelected.bsChainTabDoc.sapMITBFilterPositive:not(.bsChainTabGate):not(.bsChainTabRunning) .sapMITBFilterIcon {
  color: var(--sapPositiveColor, #2b7d2b) !important;
}
.bsChainTabs .sapMITBSelected.bsChainTabDoc.sapMITBFilterNegative:not(.bsChainTabGate):not(.bsChainTabRunning) .sapMITBFilterIcon {
  color: var(--sapNegativeColor, #bb0000) !important;
}
.bsChainTabs .sapMITBSelected.bsChainTabDoc.sapMITBFilterCritical:not(.bsChainTabGate):not(.bsChainTabRunning) .sapMITBFilterIcon {
  color: var(--sapCriticalColor, #e76500) !important;
}
.bsChainTabs .sapMITBSelected.bsChainTabDoc.sapMITBFilterNeutral:not(.bsChainTabGate):not(.bsChainTabRunning) .sapMITBFilterIcon {
  color: var(--sapNeutralColor, #6a6d70) !important;
}

.bsChainInline { padding: .75rem 0 .25rem; gap: .5rem; }
.bsChainInlineHead { gap: 1rem; flex-wrap: wrap; padding-bottom: .35rem; }

/* „Agent dieses Schritts" je Station */
.bsChainAgentArea { gap: .25rem; padding: .35rem 0 .5rem; }
.bsChainAgentArea:empty { display: none; }
.bsChainAgentLabel { display: block; }
.bsChainAgentRow { gap: .5rem; }
.bsChainAgentAvatar { flex: 0 0 auto; }
.bsChainAgentName { font-size: .85rem; font-weight: 600; }
.bsChainAgentStatus { font-size: .8rem; }
.bsChainAgentHint { font-size: .8rem; font-style: italic; }

/* Documentation-Agent-Block am QA-Deploy-Gate (zusätzlich zum Deploy-Reporter) */
.bsChainDocBox { gap: .3rem; margin-top: .5rem; padding: .5rem .65rem;
  border: 1px solid var(--sapList_BorderColor); border-left: 3px solid var(--sapInformativeColor, #0a6ed1);
  border-radius: .5rem; background: var(--sapList_Background); }
.bsChainDocRow { gap: .5rem; }
.bsChainDocJump { margin-top: .25rem; font-size: .82rem; }

/* KV-Tabelle im Stations-Inhalt */
.bsChainKvBox { gap: .3rem; padding: .35rem 0 .5rem; }
.bsChainKvRow { gap: .6rem; }
.bsChainKvKey { min-width: 6rem; flex: 0 0 auto; }
.bsChainKvVal { word-break: break-all; }

/* Status-Timeline im Stations-Inhalt */
.bsChainTimeline { gap: .3rem; padding: .35rem 0 .5rem; border-top: 1px solid var(--sapList_BorderColor); margin-top: .25rem; }
.bsChainTimelineCompact { gap: .2rem; padding: .2rem 0 .3rem; border-top: 1px solid var(--sapList_BorderColor); margin-top: .4rem; }
.bsChainTlRow { gap: .5rem; align-items: flex-start; }
.bsChainTlIconOk { color: var(--sapPositiveColor, #2b7d2b); font-size: .9rem; flex-shrink: 0; margin-top: .05rem; }
.bsChainTlIconErr { color: var(--sapNegativeColor, #bb0000); font-size: .9rem; flex-shrink: 0; margin-top: .05rem; }
.bsChainTlIconPending { color: var(--sapNeutralColor, #8c8c8c); font-size: .9rem; flex-shrink: 0; margin-top: .05rem; }
.bsChainTlLabel { font-size: .82rem; word-break: break-word; }

/* Test-Liste (QC / Suite) */
.bsChainTestList { gap: .25rem; padding: .35rem 0 .1rem; }
.bsChainQcInfo { font-size: .82rem; padding: .2rem 0; }
.bsChainQcResult { margin-top: .4rem; }
.bsChainSuiteResult { margin-top: .2rem; margin-bottom: .2rem; }

/* Timing-Zeile (Start / Ende / Dauer) */
.bsChainTimingRow { gap: 1rem; padding-bottom: .4rem; border-bottom: 1px solid var(--sapList_BorderColor); margin-bottom: .35rem; flex-wrap: wrap; }
.bsChainTimingText { font-size: .78rem; }

/* KV-Schlüssel etwas breiter für neue Labels */
.bsChainKvKey { min-width: 7rem; flex: 0 0 auto; font-size: .7rem; }


/* Evidenz-Grid darf in schmaler Spalte nicht überlaufen */
.bsEvidence .sapFGridContainer { max-width: 100%; }

/* Projektliste: letzter Run-Status-Badge */
.bsProjLastStatus { flex: 0 0 auto; font-size: .8rem; }

/* Prozessketten-Überblick-Strip */
.bsChainStrip {
  padding: .4rem .5rem .35rem;
  border-bottom: 1px solid var(--sapList_BorderColor);
  gap: .1rem;
  overflow: hidden;
  background: var(--sapList_Background);
  border-radius: .35rem .35rem 0 0;
}
.bsChainStripNode {
  flex: 1 1 0;
  min-width: 2.5rem;
  gap: .15rem;
  cursor: pointer;
}
.bsChainStripLabel {
  font-size: .65rem;
  color: var(--sapContent_LabelColor);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .04em;
  white-space: nowrap;
}
.bsChainStripArrow {
  color: var(--sapContent_NonInteractiveIconColor);
  flex: 0 0 auto;
  margin: 0 .05rem;
}

/* Log-Zeilen-Highlighting */
.bsLogErr { color: var(--sapNegativeColor, #bb0000); display: block; }
.bsLogWarn { color: var(--sapCriticalColor, #e76500); display: block; }
.bsLogOk { color: var(--sapPositiveColor, #2b7d2b); display: block; }

/* ───────────────────────── Phone-Responsive Overrides (≤ 600 px) ───────────────────────── */
@media (max-width: 600px) {
  /* Run-Detail: kein festes Padding das auf 360px zu viel wegnimmt */
  .bsEndCol .bsDetailBox { padding: .75rem .75rem 1.5rem; }

  /* Dossier: Grids breit statt 3-spaltig → Zellen stapeln (S12 greift bereits,
     aber explizit sicherstellen dass kein horizontal-overflow entsteht) */
  .bsDossierGrid { overflow: hidden; }
  .bsDossierCell { min-width: 0; max-width: 100%; overflow: hidden; }
  .bsDossierCell .sapMText,
  .bsDossierCell .sapMLnk { word-break: break-all; }

  /* Prozesskette: Tab-Bar scrollbar, kein Overflow */
  .bsChainTabs { overflow-x: auto !important; }
  .bsChainTabs .sapMITBHead { overflow-x: auto; flex-wrap: nowrap; }

  /* Chain-Nodes umbrechen sauber */
  .bsChain { padding: .5rem 0; }
  .bsChainNode { min-width: 5rem; }

  /* KV in Stations-Inhalten: Schlüssel vollbreit, Wert darunter (keine HBox-Overflow) */
  .bsChainKvRow { flex-direction: column; gap: .1rem; }
  .bsChainKvKey { min-width: unset; }
  .bsChainKvVal { word-break: break-word; max-width: 100%; }

  /* Timing-Zeile: untereinander statt nebeneinander */
  .bsChainTimingRow { flex-direction: column; gap: .15rem; }

  /* Test-Ergebnisliste: Icon + Label nicht abschneiden */
  .bsChainTlLabel { max-width: calc(100% - 1.5rem); }

  /* Evidenz: Button und Info untereinander auf sehr kleinen Screens */
  .bsEvSummary { flex-direction: column; align-items: flex-start; }
  .bsEvOpenBtn { align-self: stretch; }
  .bsEvOpenBtn .sapMBtnInner { justify-content: center; }

  /* Gate-Bereich: kein Überlauf */
  .bsGateTitle { font-size: .95rem; word-break: break-word; }

  /* KundeMenu Popover: vollflächig auf Phone (ResponsivePopover macht das
     automatisch — nur sicherstellen dass max-width nicht zu groß) */
  .sapMPopover { max-width: 100% !important; }
}

/* ───────────────────────── Einstellungs-Dialog (Fiori-Settings) ───────────────────────── */
.bsMuted { color: var(--sapContent_LabelColor); }
/* Reduzierte Höhe — kein überschüssiger Leerraum */
.bsSettings { height: auto; min-height: 18rem; max-height: 24rem; }
.bsSettingsNav {
  flex: 0 0 12rem;
  border-right: 1px solid var(--sapGroup_ContentBorderColor, #e5e5e5);
}
.bsSettingsBody { flex: 1 1 auto; overflow-y: auto; }
.bsSettingsSection { padding: 1.25rem 1.5rem; gap: 0.5rem; }
/* RadioButton-Gruppe: etwas mehr Luft zwischen den Optionen */
.bsSettingsSection .sapMRbG .sapMRb { padding: 0.2rem 0; }
.bsSettingsKv { gap: 0.75rem; margin-top: 0.35rem; align-items: baseline; }
/* Schlüssel-Label: neutrales Label-Grau, nicht Link-Blau */
.bsSettingsKvKey {
  min-width: 7rem;
  color: var(--sapContent_LabelColor);
  font-weight: 600;
}
/* Phone: Settings-Dialog im Stretch-Modus → Nav + Body stapeln sich vertikal */
@media (max-width: 600px) {
  .bsSettingsDialog .bsSettings {
    flex-direction: column;
    max-height: none;
    min-height: 0;
    height: 100%;
  }
  .bsSettingsDialog .bsSettingsNav {
    flex: 0 0 auto;
    border-right: none;
    border-bottom: 1px solid var(--sapGroup_ContentBorderColor, #e5e5e5);
    width: 100%;
  }
  .bsSettingsDialog .bsSettingsBody {
    flex: 1 1 auto;
    overflow-y: auto;
    width: 100%;
  }
}

/* ───────────────────────── Release Notes ───────────────────────── */
/* #22 Container sitzt jetzt im Auslieferungs-Panel (dossierBody) ganz oben. */
.bsReleaseNotesDossier {
  gap: .6rem;
  padding-bottom: .6rem;
  border-bottom: 1px solid var(--sapList_BorderColor);
  margin-bottom: .25rem;
}

/* Header: Titel links, Version-Badge rechts */
.bsRnHeader {
  gap: .75rem;
  padding-bottom: .4rem;
  border-bottom: 1px solid var(--sapList_BorderColor);
  margin-bottom: .25rem;
}
.bsRnTitle {
  font-weight: 600;
  font-size: 1rem;
  color: var(--sapTextColor);
}
.bsRnVersionBadge { flex: 0 0 auto; }

/* Sections */
.bsRnSection {
  gap: .25rem;
  padding: .35rem 0 .1rem;
}
.bsRnSectionLabel {
  font-size: .7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .06em;
  margin-bottom: .2rem;
}

/* Einzelne Commit-Zeile */
.bsRnItem {
  gap: .4rem;
  flex-wrap: nowrap;
  align-items: baseline;
  padding: .15rem 0;
}
.bsRnBullet {
  flex: 0 0 auto;
  color: var(--sapContent_NonInteractiveIconColor);
  font-size: .85rem;
  line-height: 1.4;
}
.bsRnSubject {
  flex: 1 1 auto;
  font-size: .875rem;
  word-break: break-word;
}
.bsRnMeta {
  flex: 0 1 auto;
  font-size: .75rem;
  white-space: nowrap;
}

/* Footer: Quelle + Zeitstempel */
.bsRnFooter {
  gap: .4rem;
  padding-top: .5rem;
  border-top: 1px solid var(--sapList_BorderColor);
  margin-top: .25rem;
  font-size: .75rem;
  flex-wrap: wrap;
}

/* ───────────────────────── Agenten-Panel (Run-Detail) ───────────────────────── */
.bsAgentsPanel { margin-bottom: 1rem; }
.bsAgentsContainer { gap: .75rem; padding: .5rem 0; }
.bsAgentsEmpty { padding: .5rem 0; font-size: .85rem; }

/* Einzelne Agenten-Karte */
.bsAgentCard {
  gap: .5rem;
  padding: .75rem 1rem;
  border: 1px solid var(--sapList_BorderColor);
  border-radius: .5rem;
  background: var(--sapList_Background);
}

.bsAgentHead { gap: .75rem; }
.bsAgentHeadLeft { gap: .6rem; min-width: 0; }
.bsAgentAvatar { flex: 0 0 auto; }
.bsAgentStatus { font-size: .85rem; }
.bsAgentTime { font-size: .75rem; }
.bsAgentSummary { font-size: .85rem; color: var(--sapTextColor); }

/* Artefakt-Links */
.bsAgentArtifacts { gap: .25rem; padding-top: .35rem; border-top: 1px solid var(--sapList_BorderColor); margin-top: .25rem; }
.bsAgentArtLabel { display: block; margin-bottom: .15rem; }
.bsAgentArtLink { font-size: .82rem; display: block; }

/* Feedback-Bereich */
.bsAgentFeedbackBox { gap: .4rem; padding-top: .4rem; border-top: 1px solid var(--sapList_BorderColor); margin-top: .3rem; }
.bsAgentFeedbackLabel { display: block; margin-bottom: .1rem; }
.bsAgentFeedbackList { gap: .25rem; margin-bottom: .35rem; }
.bsAgentFeedbackItem { gap: .5rem; padding: .2rem 0; border-bottom: 1px dotted var(--sapList_BorderColor); flex-wrap: wrap; }
.bsAgentFeedbackMeta { font-size: .72rem; flex: 0 0 auto; white-space: nowrap; }
.bsAgentFeedbackItemText { font-size: .82rem; flex: 1 1 auto; word-break: break-word; }
/* Feedback-Eingabe: Textarea volle Breite, darunter Aktionszeile (Name links, Senden rechts) */
.bsAgentFeedbackInputCol { gap: .5rem; }
.bsAgentFeedbackActionRow { gap: .5rem; row-gap: .5rem; }
.bsAgentFeedbackAutor { flex: 1 1 12rem; min-width: 0; max-width: 18rem; }

/* ───────────────────────── Zentrale Agenten-Übersicht ───────────────────────── */
.bsAgentsPage .sapMPageSubHeader { border-bottom: 1px solid var(--sapList_BorderColor); }
.bsAgentsOverview { gap: .9rem; padding: 1rem 1.25rem 2.5rem; }

/* Erklärungs-Hinweis pro Tab (was ist das / was kann man tun) */
.bsAgentsHint { margin: 1rem 1.25rem .85rem; }
/* Leerzustand (IllustratedMessage) zentriert mit Luft */
.bsAgentsEmptyIllus { padding: 2.5rem 1rem; }

/* Inhaltsbreite begrenzen: auf Ultrawide (2560px) keine über-2500px-Bänder, die
   Inhalte wirken sonst nach links "gequetscht"/verloren. Linksbündige Lesespalte. */
/* Nur die Lese-Spalten begrenzen — NICHT die Filter-Toolbar (sap.m.Toolbar
   verträgt kein max-width/flex-wrap, sonst überlagern sich die Controls). */
.bsAgentsOverview, .bsAgentsOverviewList, .bsAgentsRegistry,
.bsAgentsHint { max-width: 72rem; box-sizing: border-box; }

/* ───────────────────────── Agenten-Tabs / Framework ───────────────────────── */
.bsAgentsTabs { height: 100%; }
.bsAgentsTabs .sapMITBContainerContent { overflow: auto; }
/* Tab-Header: kein Abschneiden bei mittelbreiten Screens, Tabs bleiben vollständig lesbar */
.bsAgentsTabs .sapMITBHead { overflow-x: auto; min-height: 2.75rem; }
.bsAgentsTabs .sapMITBFilter { white-space: nowrap; }
/* Registry + Overview: konsistentes Zeilen-Margin (beide .5rem bottom gap) */
.bsAgentsRegistry > *, .bsAgentsOverviewList > * { margin-bottom: 0; }

/* ── Aktivitäten-Tab: saubere Karten statt roher HBox-Zeilen ── */
.bsAgentsOverviewList { gap: .9rem; padding: 1rem 1.25rem 2.5rem; }
.bsAgentsOverviewCard {
  gap: .55rem;
  padding: 1.25rem 1.5rem;
  border: 1px solid var(--sapList_BorderColor);
  border-radius: .65rem;
  background: var(--sapList_Background);
  margin-bottom: 0;
  transition: box-shadow .1s;
}
.bsAgentsOverviewCard:hover { box-shadow: 0 2px 8px rgba(0,0,0,.08); }
.bsAgentsOvHead { gap: .85rem; align-items: center; flex-wrap: nowrap; }
.bsAgentsOvHeadTexts { flex: 1 1 auto; min-width: 0; gap: .1rem; }
.bsAgentsOvAvatar, .bsAgentsRegAvatar { flex: 0 0 auto; }
.bsAgentsOvStatus { flex: 0 0 auto; }
.bsAgentsOvAgent { font-size: .95rem; font-weight: 700; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bsAgentsOvMeta { gap: .6rem; }
.bsAgentsOvRunRef { font-size: .8rem; min-width: 0; white-space: nowrap; }
.bsAgentsOvTime { font-size: .75rem; white-space: nowrap; }
.bsAgentsOvNavBtn, .bsAgentsOvArtBtn { flex: 0 0 auto; }
.bsAgentsOvSummary { font-size: .85rem; line-height: 1.45; color: var(--sapTextColor); padding-top: .15rem; }
.bsAgentsOvArtLabel { font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; font-weight: 700;
  color: var(--sapContent_LabelColor); padding-top: .4rem; }
.bsAgentsOvArtList { gap: .45rem; padding-top: .2rem; }
.bsAgentsOvArtChip { gap: .35rem; padding: .2rem .6rem; border: 1px solid var(--sapList_BorderColor);
  border-radius: 1rem; background: var(--sapBackgroundColor); }
.bsAgentsOvArtIcon { font-size: .85rem; flex: 0 0 auto; color: var(--sapContent_NonInteractiveIconColor, #6a6d70); }
.bsAgentsOvArtLink, .bsAgentsOvArtText { font-size: .78rem; white-space: nowrap; }
.bsAgentsOvHook {
  font-size: .7rem; font-family: "SF Mono", Consolas, monospace;
  padding: .1rem .4rem; border-radius: .25rem;
  /* Neutral-Pill mit dunklem Text + Rahmen — lesbar in hell UND dunkel.
     (Vorher --sapHighlightTextColor = Textfarbe für SOLIDE Flächen → auf heller
     Fläche fast unsichtbar.) */
  background: var(--sapNeutralBackground, #eaecee);
  color: var(--sapTextColor, #223548);
  border: 1px solid var(--sapNeutralBorderColor, #c2c2c2);
  flex: 0 0 auto; white-space: nowrap;
}

/* Filter-Leiste Agenten — mehr vertikale Luft + Abstand zur Liste darunter.
   Kein max-width/flex-wrap: die sap.m.Toolbar regelt ihr Shrink-Layout selbst
   (sonst überlagern sich Kunde/Projekt/Selects). */
.bsAgentsFilterBar { padding: .85rem 1.25rem; gap: .75rem; background: var(--sapList_Background);
  border-bottom: 1px solid var(--sapList_BorderColor); margin-bottom: .85rem; }

/* ── Agenten-Registry: Card-Style statt Flat-Rows ── */
.bsAgentsRegistry { gap: .9rem; padding: 1rem 1.25rem 2.5rem; }

/* Registry-Tabs: echte getrennte Tabs „Agenten" (LLM) vs. „Workflows" (Skript)
   via SegmentedButton (Toolbar oben), darunter NUR die aktive Sorte. Der
   Anlegen-Button wechselt kontextabhängig (Agent anlegen / Workflow anlegen). */
.bsAgentsRegBar { gap: .75rem; }
.bsAgentsRegGroup { gap: .9rem; margin-bottom: 1.6rem; }
.bsAgentsRegGroupHint { font-size: .82rem; margin: .1rem 0 .35rem; }
.bsAgentsRegGroupEmpty { font-size: .9rem; font-style: italic; padding: 1.25rem 0; }

.bsAgentsRegistryCard {
  gap: .55rem;
  padding: 1.25rem 1.5rem;
  border: 1px solid var(--sapList_BorderColor);
  border-radius: .65rem;
  background: var(--sapList_Background);
  margin-bottom: 0;
}
.bsAgentsRegistryCard:hover { box-shadow: 0 2px 6px rgba(0,0,0,.07); }
.bsAgentsRegRow1 { gap: 1rem; align-items: center; flex-wrap: nowrap; }
.bsAgentsRegEnabled { flex: 0 0 auto; }
.bsAgentsRegName { font-weight: 600; font-size: .9rem; flex: 1 1 10rem; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bsAgentsRegType {
  font-size: .72rem; font-weight: 600; padding: .12rem .45rem; border-radius: .25rem;
  background: var(--sapNeutralBackground, #f5f5f5); color: var(--sapContent_LabelColor);
  flex: 0 0 auto; white-space: nowrap; text-transform: uppercase; letter-spacing: .04em;
}
/* Typ-Badges: Outline-Pattern (transparenter Tint + Akzent-Text + Akzent-Border).
   Robust für hell UND dunkel — die *Background-Tokens (Informative/Highlight) sind in
   Horizon-Dark LEER und fielen sonst auf helle Hardcodes zurück → helles Pill auf dunkel.
   Akzent-*Color-Tokens adaptieren dagegen korrekt. */
.bsAgentsRegType.bsAgTypeNotif { background: transparent; color: var(--sapInformativeColor, #0064a3); border: 1px solid var(--sapInformativeColor, #0064a3); }
.bsAgentsRegType.bsAgTypeGate  { background: transparent; color: var(--sapCriticalColor, #b34d00); border: 1px solid var(--sapCriticalColor, #b34d00); }
.bsAgentsRegType.bsAgTypeLint  { background: transparent; color: var(--sapPositiveColor, #256f3a); border: 1px solid var(--sapPositiveColor, #256f3a); }
.bsAgentsRegType.bsAgTypeDeploy{ background: transparent; color: var(--sapInformativeColor, #0a6ed1); border: 1px solid var(--sapInformativeColor, #0a6ed1); }
.bsAgentsRegType.bsAgTypeTest  { background: transparent; color: var(--sapCriticalColor, #c44500); border: 1px solid var(--sapCriticalColor, #c44500); }
.bsAgentsRegType.bsAgTypeDoc   { background: transparent; color: var(--sapHighlightColor, #6047a0); border: 1px solid var(--sapHighlightColor, #6047a0); }
/* Agent vs. Workflow Klassifikations-Badge (Registry-Card) */
.bsAgentsRegKind {
  font-size: .68rem; font-weight: 700; padding: .12rem .5rem; border-radius: 999px;
  flex: 0 0 auto; white-space: nowrap; text-transform: uppercase; letter-spacing: .05em;
}
/* Kind-Badges (Agent/Workflow): Outline-Pattern, transparenter Hintergrund.
   --sapHighlightBackground ist in Horizon-Dark LEER → Hardcode #eef0fc (hell) + heller
   Akzent-Text = Kontrast 2.05 (FAIL). Transparent + Akzent-Border/Text adaptiert sauber. */
.bsAgentsRegKindAgent {
  background: transparent; color: var(--sapHighlightColor, #5a4ec0);
  border: 1px solid var(--sapHighlightColor, #5a4ec0);
}
.bsAgentsRegKindWorkflow {
  background: transparent; color: var(--sapNeutralElementColor, #5b738b);
  border: 1px solid var(--sapNeutralElementColor, #5b738b);
}

/* Konfigurations-Zeile (Registry): Chips für Status/Hook/Modell + weitere config-Keys */
.bsAgentsRegConfig { padding-top: .6rem; gap: .5rem; align-items: center; }
.bsAgConfigChip {
  gap: .3rem; align-items: center; padding: .15rem .5rem; border-radius: .35rem;
  background: var(--sapList_Background, #f7f8f9); border: 1px solid var(--sapList_BorderColor, #e1e5ea);
}
.bsAgConfigKey { font-size: .66rem; text-transform: uppercase; letter-spacing: .04em; }
.bsAgConfigVal { font-size: .74rem; font-weight: 600; }
.bsAgConfigChip.bsAgConfigOn  { border-color: var(--sapPositiveColor, #256f3a); }
.bsAgConfigChip.bsAgConfigOff { opacity: .7; }
.bsAgConfigChip.bsAgConfigModel { background: var(--sapHighlightBackground, #f0eefc); border-color: var(--sapHighlightColor, #6047a0); }
.bsAgConfigChip.bsAgConfigNoModel { opacity: .65; }
.bsAgConfigModelSel { min-width: 11rem; }

/* Modell-Select je Agent-Card: im Dark Theme (sap_horizon_dark) rendert das Select-Feld
   sonst mit hellem/weißem Hintergrund (schlecht lesbar, inkonsistent zum Rest). Auf die
   Field-Theme-Variablen umstellen, damit es in BEIDEN Themes passt (hell + dunkel).
   Greift den Select-Knopf (.sapMSltInner) inkl. Text + Pfeil-Icon. */
.bsAgConfigModelSel.sapMSlt,
.bsAgConfigModelSel .sapMSltInner {
  background-color: var(--sapField_Background) !important;
  color: var(--sapField_TextColor) !important;
  border-color: var(--sapField_BorderColor) !important;
}
.bsAgConfigModelSel .sapMSltLabel,
.bsAgConfigModelSel .sapMSltArrow {
  color: var(--sapField_TextColor) !important;
}
.bsAgConfigModelSel.sapMSltHoverable:hover .sapMSltInner {
  background-color: var(--sapField_Hover_Background, var(--sapField_Background)) !important;
  border-color: var(--sapField_Hover_BorderColor, var(--sapField_BorderColor)) !important;
}
/* Der bsAgConfigModel-Chip-Hintergrund (--sapHighlightBackground) wirkt im Dark Mode hell
   hinter dem Select — neutral halten, damit der Kontrast zum dunklen Feld stimmt. */
.bsAgConfigChip.bsAgConfigModel {
  background: var(--sapList_Background, transparent);
  border-color: var(--sapHighlightColor, #6047a0);
}
/* Geöffnetes Dropdown (Popover-Items): Theme-Felder, lesbar in hell + dunkel. */
.bsAgConfigModelSelPopover .sapMSelectListItem {
  background-color: var(--sapList_Background) !important;
  color: var(--sapList_TextColor) !important;
}
.bsAgConfigModelSelPopover .sapMSelectListItemBaseSelected,
.bsAgConfigModelSelPopover .sapMSelectListItem:hover {
  background-color: var(--sapList_Hover_Background, var(--sapList_SelectionBackgroundColor)) !important;
  color: var(--sapList_TextColor) !important;
}

/* Agent vs. Workflow Badge in der Trace */
.bsTraceKind {
  font-size: .62rem; font-weight: 700; padding: .05rem .42rem; border-radius: 999px;
  margin-left: .5rem; white-space: nowrap; text-transform: uppercase; letter-spacing: .05em;
}
.bsTraceKindAgent { background: transparent; color: var(--sapHighlightColor, #5a4ec0); border: 1px solid var(--sapHighlightColor, #5a4ec0); }
.bsTraceKindWorkflow { background: transparent; color: var(--sapNeutralElementColor, #5b738b); border: 1px solid var(--sapNeutralElementColor, #5b738b); }
.bsTraceModel { font-weight: 600; color: var(--sapHighlightColor, #6047a0) !important; }

/* Agent vs. Workflow Badge im Artefakt-Schaukasten */
.bsArtAgKind {
  font-size: .6rem; font-weight: 700; padding: .04rem .4rem; border-radius: 999px;
  margin-left: .45rem; white-space: nowrap; text-transform: uppercase; letter-spacing: .05em;
}
.bsArtAgKindAgent { background: transparent; color: var(--sapHighlightColor, #5a4ec0); border: 1px solid var(--sapHighlightColor, #5a4ec0); }
.bsArtAgKindWorkflow { background: transparent; color: var(--sapNeutralElementColor, #5b738b); border: 1px solid var(--sapNeutralElementColor, #5b738b); }

.bsAgentsRegHook {
  font-size: .73rem; font-family: "SF Mono", Consolas, monospace;
  padding: .12rem .45rem; border-radius: .25rem;
  /* Neutral-Pill mit dunklem Text + Rahmen — lesbar in hell UND dunkel.
     (Vorher --sapHighlightTextColor → auf heller Fläche fast unsichtbar.) */
  background: var(--sapNeutralBackground, #eaecee);
  color: var(--sapTextColor, #223548);
  border: 1px solid var(--sapNeutralBorderColor, #c2c2c2);
  flex: 0 0 auto; white-space: nowrap;
}
.bsAgentsRegActions { gap: .25rem; flex: 0 0 auto; }
.bsAgentsRegRow2 { padding-top: .65rem; gap: 1rem; align-items: center; }
.bsAgentsRegDesc { font-size: .82rem; flex: 1 1 auto; min-width: 0; color: var(--sapContent_LabelColor); }
.bsAgentsRegMeta { font-size: .72rem; flex: 0 0 auto; white-space: nowrap; color: var(--sapContent_LabelColor);
  border-left: 1px solid var(--sapList_BorderColor); padding-left: .75rem; }

/* Agenten-Detail-Bereich (letzte Aktivitäten + Feedback) */
.bsAgentsDetailPanel {
  padding: .75rem 1rem;
  background: var(--sapGroup_ContentBackground);
  border: 1px solid var(--sapList_BorderColor);
  border-radius: .5rem;
  margin-top: .5rem;
  gap: .5rem;
}
.bsAgentsDetailTitle { font-weight: 600; font-size: .85rem; margin-bottom: .35rem; }
.bsAgentsDetailRow { gap: .5rem; padding: .3rem 0; border-bottom: 1px solid var(--sapList_BorderColor);
  align-items: center; flex-wrap: wrap; }
.bsAgentsDetailRow:last-child { border-bottom: none; }
.bsAgentsDetailStatus { flex: 0 0 auto; }
.bsAgentsDetailRef { font-size: .75rem; flex: 0 0 10rem; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bsAgentsDetailSum { font-size: .8rem; flex: 1 1 8rem; min-width: 0; color: var(--sapContent_LabelColor);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bsAgentsDetailTime { font-size: .7rem; flex: 0 0 auto; white-space: nowrap; }
/* Klickbare Detail-Zeile: in den Run abspringen */
.bsAgentsDetailRowClickable { cursor: pointer; border-radius: .35rem; transition: background .1s; }
.bsAgentsDetailRowClickable:hover { background: var(--sapList_Hover_Background, rgba(127,127,127,.08)); }
.bsAgentsDetailGo { color: var(--sapContent_NonInteractiveIconColor); font-size: .85rem; margin-left: auto; flex: 0 0 auto; }
.bsAgentsDetailRowClickable:hover .bsAgentsDetailGo { color: var(--sapContent_IconColor, var(--sapHighlightColor)); }

/* Agenten-Dialog (Anlegen/Bearbeiten): luftiges Formular statt gequetschter Felder */
.bsAgentDialogForm { padding: .25rem 1.25rem 1rem; }
.bsAgentDialogForm > .sapMLabel { display: block; margin-top: 1rem; font-weight: 600; }
.bsAgentDialogForm > .sapMLabel:first-child { margin-top: .25rem; }

/* Leerer Zustand im Agenten-Panel */
.bsAgentsEmptyCard {
  padding: 1.5rem 1rem;
  text-align: center;
  color: var(--sapContent_LabelColor);
  background: var(--sapList_Background);
  border: 1px dashed var(--sapList_BorderColor);
  border-radius: .5rem;
  margin: .5rem 0;
  gap: .4rem;
  align-items: center;
}
.bsAgentsEmptyCard .sapUIIcon { font-size: 2rem; opacity: .5; }

@media (max-width: 600px) {
  .bsAgentsOverviewCard { padding: .6rem .75rem; }
  .bsAgentsOvHead { flex-wrap: wrap; }
  .bsAgentsOvRunRef, .bsAgentsOvAgent { white-space: normal; max-width: 100%; }
  .bsAgentsRegistryCard { padding: .6rem .75rem; }
  .bsAgentsRegRow1 { flex-wrap: wrap; }
  .bsAgentsRegName { flex: none; white-space: normal; }
}

/* Run-Delta: "Generiert in diesem Run" (Prozesse/Doku/Test-Cases + Deep-Links) — 2-spaltig */
.bsDeltaBody { padding: 0.25rem 0; align-items: flex-start; column-gap: 2rem; row-gap: 0.85rem; }
.bsDeltaGroup { gap: 0.25rem; flex: 1 1 320px; min-width: 260px; }
.bsDeltaLabel { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.04em; opacity: 0.7; }
.bsDeltaList .sapMLIB { padding: 0.15rem 0; min-height: 0; }
.bsDeltaRow { width: 100%; gap: 0.6rem; padding: 0.1rem 0; }
.bsDeltaProzItem { width: 100%; gap: 0.1rem; }
.bsDeltaSubRow { padding-left: 1.6rem; }
.bsDeltaIconBpmn { color: var(--sapInformativeColor, #0a6ed1); opacity: 0.85; }
.bsDeltaType { min-width: 6.5rem; }
.bsDeltaSub { opacity: 0.85; }
.bsChainSuiteOpenBtn { margin-top: 0.5rem; }

/* ── Run-Detail Konsolidierung (UI-Cleanup 2026-06-17) ── */
/* Einheitliches Abstandsraster: jede Sektion (Panel oder Chain-Block) gleicher Abstand. */
.bsDetailBox > .sapMPanel,
.bsDetailBox > .bsChainSection { margin-bottom: 0.85rem; }
.bsDetailBox > .sapMPanel:last-child,
.bsDetailBox > .bsChainSection:last-child { margin-bottom: 0; }
/* Einheitlicher Section-Titel (ruhiges Label statt mehrerer Heading-Größen). */
.bsSectionHeading { margin: 0 0 0.4rem 0; }
.bsSectionHeading .sapMTitleInner,
.bsSectionHeading.sapMTitle {
  font-size: 0.8rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--sapContent_LabelColor, #6a6d70);
}
.bsChainSection { display: flex; flex-direction: column; }
/* Panel-Bodies einheitlicher Innenabstand. */
.bsDossierBody, .bsGateBody { gap: 0.5rem; }

/* Delta-Sektion: Komponenten-Icons (visuelle Scanbarkeit) */
.bsDeltaCell { gap: 0.5rem; }
.bsDeltaIcon { width: 1rem; height: 1rem; font-size: 1rem; flex: 0 0 auto; color: var(--sapContent_NonInteractiveIconColor, #6a6d70); }
.bsDeltaIconProzess { color: var(--sapInformativeColor, #0a6ed1); }
.bsDeltaIconTest { color: var(--sapPositiveColor, #107e3e); }
.bsDeltaSub .sapMLnkIcon { font-size: 0.85rem; }

/* ── Artefakt-Schaukasten (Run-Artefaktseite) — Master/Detail, volle Breite ── */
.bsArtefaktePage section.sapMPage { background: var(--sapBackgroundColor); }
/* Page-Content-Hoehe sichern (analog Docs .bkContentPage): die enableScrolling=false-Page
   gibt ihrem Inhalt nur dann die volle Hoehe, wenn der Content-Bereich eine Flex-Spalte
   mit height:100% ist. Ohne das kollabiert VBox.bsArtPage (height:100% gegen einen nicht
   voll hohen Parent) → die bsArtBody (flex:1 1 auto) wird 0 hoch → die beiden Scroll-
   Container (Nav/Detail) bekommen 0 Hoehe → die Seite ist „leer" (nur der Busy-Spinner der
   Page ist zu sehen). Das ist KEIN Datenproblem, sondern die fehlende Hoehen-Kette. */
.bsArtefaktePage .sapMPageContent {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
}
.bsArtPage { padding: 0.85rem 1rem 0; gap: 0.75rem; box-sizing: border-box; flex: 1 1 auto; min-height: 0; }
.bsArtBody { flex: 1 1 auto; min-height: 0; gap: 0; border-top: 1px solid var(--sapList_BorderColor); }
.bsArtNavCol { flex: 0 0 320px; width: 320px; border-right: 1px solid var(--sapList_BorderColor);
  background: var(--sapList_Background); }
.bsArtNav { padding: 0.5rem 0.4rem 1.5rem; gap: 0.1rem; }
/* Detail-Spalte muss die Restbreite FÜLLEN (flex:1 1 0), nicht auf Inhaltsbreite
   schrumpfen. Bei BPMN ist der Canvas width:100% (0 intrinsische Breite) → mit
   flex-basis:auto kollabierte die ganze Spalte auf ~480px. UI5 wickelt HBox-Kinder
   in .sapMFlexItem-Wrapper — der Wrapper, nicht der ScrollContainer, ist das Flex-
   Kind. Daher die Wrapper direkt steuern: 1. Kind (Nav) fix 320px, 2. Kind (Detail)
   füllt den Rest. */
.bsArtDetailCol { min-width: 0; width: auto; }
/* UI5 setzt flex als INLINE-Style auf die Flex-Item-Wrapper → !important nötig. */
.bsArtBody > *:first-child { flex: 0 0 320px !important; min-width: 320px; }
.bsArtBody > *:last-child  { flex: 1 1 0 !important; min-width: 0; }
.bsArtDetail { padding: 1rem 1.5rem 2rem; gap: 0.65rem; max-width: 1600px; }
/* BPMN-Ansicht: Lese-Cap aufheben, damit das Diagramm die volle Spaltenbreite nutzt.
   (Frühere Regel hob nur die canvas-eigene max-width auf — das Eltern-VBox blieb bei
   1600px gekappt und das Canvas (width:100%) konnte nicht über 1600px wachsen.) */
.bsArtDetail.bsArtDetBpmn { max-width: none; width: 100%; }
.bsArtDetail .bsArtBpmnCanvas { max-width: none; }
/* sap.m.ScrollContainer rendert seinen Scroll-Inhalt als inline-block (für H-Scroll) —
   dadurch löst sich width:100% des BPMN-Canvas gegen die SHRINK-gewrappte Inhaltsbreite
   auf (Canvas blieb ~480px statt voller Spaltenbreite). Den Scroll-Inhalt der Detail-
   Spalte auf volle Breite zwingen, damit width:100% real die Spaltenbreite trifft. */
.bsArtDetailCol > .sapMScrollCont > .sapMScrollContScroll { width: 100%; box-sizing: border-box; }

/* Agent-Gruppenkopf in der Nav */
.bsArtNavAgent { gap: 0.55rem; padding: 0.8rem 0.5rem 0.35rem; margin-top: 0.3rem; }
.bsArtNavAgent:first-child { margin-top: 0; }
.bsArtAgAvatar { flex: 0 0 auto; }
.bsArtAgTexts { min-width: 0; flex: 1 1 auto; gap: 0; }
.bsArtAgName { font-weight: 700; font-size: 0.88rem; }
.bsArtAgMeta { font-size: 0.72rem; }
.bsArtAgStatus { flex: 0 0 auto; }

/* Artefakt-Zeile in der Nav */
.bsArtNavRow { gap: 0.55rem; padding: 0.4rem 0.5rem; margin-left: 0.4rem; border-radius: 0.5rem; cursor: pointer;
  border-left: 2px solid transparent; }
.bsArtNavRow:hover { background: var(--sapList_Hover_Background); }
.bsArtNavRowActive { background: var(--sapList_SelectionBackgroundColor, rgba(10,110,209,0.12));
  border-left-color: var(--sapSelectedColor, #0a6ed1); }
.bsArtNavIcon { font-size: 1rem; flex: 0 0 auto; color: var(--sapContent_NonInteractiveIconColor, #6a6d70); }
.bsArtNavTexts { min-width: 0; gap: 0; }
.bsArtNavTitle { font-size: 0.85rem; font-weight: 600; }
.bsArtNavSub { font-size: 0.72rem; }

/* Artefakt-Lifecycle: obsolete Artefakte gedimmt + Badge (nicht verstecken — Audit-Trail). */
.bsArtObsolet { opacity: 0.5; }
.bsArtObsolet .bsArtNavTitle { text-decoration: line-through; text-decoration-color: var(--sapNeutralColor, #6a6d70); }
.bsArtObsoletBadge { font-size: 0.68rem; margin-top: 0.1rem; }
.bsArtObsoletHint { gap: 0.5rem; padding: 0.2rem 0.1rem 0.4rem; }
.bsArtDetObsolet .bsArtMd, .bsArtDetObsolet .bsArtBpmnCanvas, .bsArtDetObsolet .bsArtTcSteps,
.bsArtDetObsolet .bsArtTcDesc, .bsArtDetObsolet .bsArtSteps { opacity: 0.6; }

/* Detail-Provenienz + Kopf */
.bsArtProv { gap: 0.4rem; padding: 0.15rem 0.1rem 0.35rem; font-size: 0.82rem; }
.bsArtProvAvatar { flex: 0 0 auto; }
.bsArtProvName { font-weight: 700; }
.bsArtDetHead { width: 100%; gap: 0.6rem; padding-bottom: 0.3rem; border-bottom: 1px solid var(--sapList_BorderColor); margin-bottom: 0.3rem; }
.bsArtDetHeadLeft { gap: 0.5rem; min-width: 0; }
.bsArtDetIcon { font-size: 1.3rem; flex: 0 0 auto; color: var(--sapInformativeColor, #0a6ed1); }
.bsArtDetTitle { font-weight: 700; }
.bsArtDetActions { gap: 0.6rem; }
.bsArtDetMainLink { font-weight: 600; }
.bsArtLinkHint { padding: 0.4rem 0; }

/* BPMN-Canvas */
.bsArtBpmnCanvas { width: 100%; height: 680px; border: 1px solid var(--sapList_BorderColor);
  border-radius: 0.5rem; background:
    radial-gradient(var(--sapList_BorderColor) 1px, transparent 1px) 0 0 / 22px 22px,
    var(--sapBaseColor, #fff); position: relative; overflow: hidden; }
.bsArtBpmnCanvas.bsArtBpmnDark { background:
    radial-gradient(rgba(255,255,255,0.06) 1px, transparent 1px) 0 0 / 22px 22px,
    var(--sapBackgroundColor); }
.bsArtBpmnCanvas .djs-palette { display: none; }
.bsArtBpmnCanvas .bjs-powered-by { display: none; }

.bsArtHead { gap: 0.85rem; padding: 0.85rem 1rem; border-radius: 0.75rem;
  background: var(--sapTile_Background, var(--sapList_Background)); border: 1px solid var(--sapList_BorderColor); }
.bsArtHeadIcon { font-size: 1.75rem; color: var(--sapInformativeColor, #0a6ed1); flex: 0 0 auto; }
.bsArtHeadTxt { gap: 0.25rem; min-width: 0; }
.bsArtHeadMeta { gap: 0.6rem; }
.bsArtAgentChip .sapMObjStatusText { font-weight: 600; }
.bsArtSubtitle { font-size: 0.85rem; }
.bsArtEmpty { margin: 0.5rem 0; }

.bsArtSection { gap: 0.5rem; }
.bsArtSecHead { gap: 0.5rem; padding: 0.25rem 0.1rem; }
.bsArtSecIcon { font-size: 1.1rem; color: var(--sapContent_NonInteractiveIconColor, #6a6d70); }
.bsArtCount { min-width: 1.4rem; height: 1.4rem; line-height: 1.4rem; text-align: center;
  border-radius: 0.7rem; padding: 0 0.45rem; font-size: 0.8rem; font-weight: 700;
  color: var(--sapButton_Emphasized_TextColor, #fff); background: var(--sapInformativeColor, #0a6ed1); }

.bsArtCard { margin-bottom: 0.6rem; border-radius: 0.6rem; }
.bsArtCard .sapMPanelHdr, .bsArtCardBar { background: transparent; }
.bsArtCardIcon { font-size: 1.1rem; flex: 0 0 auto; }
.bsArtCardBody { gap: 0.5rem; padding: 0.4rem 0.25rem 0.2rem; }
.bsArtMiniLabel { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.04em;
  font-weight: 700; color: var(--sapContent_LabelColor); }
.bsArtTypeChip { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em;
  color: var(--sapContent_LabelColor); padding: 0.05rem 0.45rem; border-radius: 0.5rem;
  background: var(--sapList_Background); border: 1px solid var(--sapList_BorderColor); }
.bsArtSubLink { margin-left: 0.25rem; opacity: 0.9; }

.bsArtSteps { gap: 0.4rem; }
.bsArtStep { padding: 0.2rem 0.6rem; border-radius: 1rem; background: var(--sapList_Background);
  border: 1px solid var(--sapList_BorderColor); font-size: 0.82rem; }
.bsArtStep .sapMText { white-space: nowrap; }

.bsArtMd { font-size: 0.88rem; line-height: 1.5; color: var(--sapTextColor); }
.bsArtMd h4, .bsArtMd h5, .bsArtMd h6 { margin: 0.6rem 0 0.3rem; font-weight: 700; }
.bsArtMd p { margin: 0.35rem 0; }
.bsArtMd ul, .bsArtMd ol { margin: 0.3rem 0 0.3rem 1.1rem; }
.bsArtMd li { margin: 0.15rem 0; }
.bsArtMd code { font-family: var(--sapContent_MonospaceFontFamily, monospace); font-size: 0.82rem;
  background: var(--sapList_Background); padding: 0.05rem 0.3rem; border-radius: 0.3rem; }
.bsArtMd pre { background: var(--sapList_Background); border: 1px solid var(--sapList_BorderColor);
  border-radius: 0.4rem; padding: 0.6rem 0.75rem; overflow: auto; font-size: 0.8rem; }
.bsArtMd .bsArtHr { margin: 0.6rem 0; border-top: 1px solid var(--sapList_BorderColor); height: 0; }

.bsArtTcRef { font-size: 0.8rem; }
.bsArtTcDesc { font-size: 0.88rem; line-height: 1.45; }
.bsArtTcSteps { gap: 0.25rem; }
.bsArtTcStep { gap: 0.5rem; }
.bsArtTcStepNo { font-weight: 700; color: var(--sapContent_LabelColor); min-width: 1.4rem; }
.bsArtTcStatus { font-size: 0.8rem; }

/* Playwright-Skript / Code-Block (read-only TextArea — natives UI5-Control, kein Sanitizer-Drift). */
.bsArtCode { margin: 0.3rem 0 0.7rem 0; }
.bsArtCode .sapMTextArea, .bsArtCode .sapMInputBaseInner, .bsArtCode textarea {
  font-family: var(--sapContent_MonospaceFontFamily, monospace) !important;
  font-size: 0.78rem !important; line-height: 1.45 !important;
  background: var(--sapList_Background) !important; color: var(--sapTextColor) !important; }

/* Screenshot-Galerie (eingebettete data-URIs) */
.bsArtShots { gap: 0.7rem; margin: 0.25rem 0 0.7rem 0; }
.bsArtShotFig { gap: 0.25rem; max-width: 22rem; }
.bsArtShotImg { width: 100%; height: auto; border: 1px solid var(--sapList_BorderColor);
  border-radius: 0.5rem; background: var(--sapList_Background); display: block; }
.bsArtShotCap { font-size: 0.75rem; }

/* Externes Test-Suite-Lauf-Artefakt (test-run) inline */
.bsArtTrStatus, .bsArtTrRowStatus { font-size: 0.82rem; }
.bsArtTrMetrics { gap: 0.6rem; margin: 0.4rem 0 0.8rem 0; }
.bsArtTrChip { min-width: 5rem; padding: 0.5rem 0.8rem; border-radius: 0.6rem;
  background: var(--sapTile_Background, var(--sapList_Background)); border: 1px solid var(--sapList_BorderColor);
  align-items: center; }
.bsArtTrChipVal { font-size: 1.25rem; font-weight: 700; line-height: 1.2; }
.bsArtTrChipLbl { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.04em; }
.bsArtTrChipOk .bsArtTrChipVal { color: var(--sapPositiveColor, #36a41d); }
.bsArtTrChipFail .bsArtTrChipVal { color: var(--sapNegativeColor, #e90b0b); }
.bsArtTrList { gap: 0.55rem; margin: 0.25rem 0 0.6rem 0; }
.bsArtTrRow { gap: 0.4rem; padding: 0.55rem 0.7rem; border-radius: 0.55rem;
  background: var(--sapList_Background); border: 1px solid var(--sapList_BorderColor); }
.bsArtTrRowHead { gap: 0.6rem; }
.bsArtTrRowName { font-weight: 600; flex: 1 1 12rem; }
.bsArtTrRowDur { font-size: 0.78rem; }
.bsArtTrShot { max-width: 24rem; width: 100%; height: auto; margin-top: 0.4rem;
  border: 1px solid var(--sapList_BorderColor); border-radius: 0.45rem; display: block; }

/* Klickbare Screenshots → Vollbild-Lightbox mit Karussell */
.bsArtShotClickable { cursor: zoom-in; transition: transform 0.12s ease, box-shadow 0.12s ease; }
.bsArtShotClickable:hover { transform: scale(1.02);
  box-shadow: 0 0.2rem 0.85rem rgba(0,0,0,0.35); border-color: var(--sapContent_FocusColor, #0854a0); }
.bsShotBoxDialog .sapMDialogScrollCont { padding: 0 !important; }
.bsShotBoxPage { width: 100%; height: 100%; box-sizing: border-box; padding: 0.5rem 2.6rem 0.8rem; gap: 0.55rem; }
.bsShotBoxImg { max-width: 100% !important; max-height: 70vh !important; width: auto !important; height: auto !important;
  object-fit: contain; border-radius: 0.45rem; border: 1px solid var(--sapList_BorderColor);
  background: var(--sapList_Background); box-shadow: 0 0.3rem 1rem rgba(0,0,0,0.3); }
.bsShotBoxCap { font-size: 0.85rem; color: var(--sapContent_LabelColor, #6a6d70); text-align: center;
  max-width: 90%; }

/* Release-Verwebung (inline Verknüpfungs-Liste) */
.bsArtWeaveList { gap: 0.3rem; margin: 0.25rem 0 0.6rem 0; }
.bsArtWeaveRow { gap: 0.55rem; padding: 0.4rem 0.55rem; border-radius: 0.55rem;
  background: var(--sapList_Background); border: 1px solid var(--sapList_BorderColor); }
.bsArtWeaveRow:hover { background: var(--sapList_Hover_Background); }
.bsArtWeaveBpmn { margin-left: auto; font-size: 0.85rem; }

/* Absprung-Affordanzen */
.bsChainAgentJump { margin-top: 0.4rem; font-size: 0.82rem; }
.bsAgentsDetailArtLink { margin-left: 0.4rem; font-size: 0.8rem; white-space: nowrap; }

/* ── Trace & Kosten (F5.2) ───────────────────────────────────────────── */
.bsTraceSummary { gap: .75rem; padding: .85rem 1rem .35rem; flex-wrap: wrap; }
.bsTraceTile { min-width: 92px; padding: .55rem .8rem; border: 1px solid var(--sapList_BorderColor, #444); border-radius: 10px; background: var(--sapTile_Background, #1d232a); }
.bsTraceTileVal { font-size: 1.25rem; font-weight: 700; line-height: 1.2; }
.bsTraceTileLbl { font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; }
.bsTraceTileCost .bsTraceTileVal { color: var(--sapPositiveColor, #36a41d); }
.bsTraceList { padding: .25rem .5rem 1rem; }
.bsTraceRow { gap: .7rem; padding: .6rem .75rem; border-bottom: 1px solid var(--sapList_BorderColor, #333); align-items: center; }
.bsTraceRow:hover { background: var(--sapList_Hover_Background, rgba(255,255,255,.03)); border-radius: 8px; }
.bsTraceKindIcon { color: var(--sapContent_NonInteractiveIconColor, #91c8f6); }
.bsTraceKind-agent { color: #c39bd3; }
.bsTraceKind-model { color: #7fb3d5; }
.bsTraceKind-tool  { color: #f0b27a; }
.bsTraceTexts { flex: 1 1 auto; min-width: 0; }
.bsTraceName { font-weight: 600; }
.bsTraceMeta { font-size: .72rem; margin-right: .6rem; }
.bsTraceNums { align-items: flex-end; }
.bsTraceTok { font-weight: 600; }
.bsTraceCost { font-size: .72rem; }
.bsTraceOpen { margin-left: .25rem; font-size: 1rem; }
.bsTraceAvatar { flex: 0 0 auto; }
.bsTraceScript { opacity: .7; font-style: italic; }

/* ── Kosten-/KPI-Cockpit (F8.5) ──────────────────────────────────────── */
.bsTraceKpis { gap: .75rem; padding: 0 1rem .6rem; flex-wrap: wrap; }
.bsKpiCard { flex: 1 1 320px; min-width: 280px; padding: .7rem .9rem; border: 1px solid var(--sapList_BorderColor, #444); border-radius: 12px; background: var(--sapTile_Background, #1d232a); }
.bsKpiTitle { font-weight: 700; margin-bottom: .35rem; }
.bsKpiRow { padding: .25rem 0; border-bottom: 1px solid var(--sapList_BorderColor, #2c2c2c); }
.bsKpiRow:last-child { border-bottom: none; }
.bsKpiModel { font-size: .8rem; }
.bsKpiTok { margin-right: .8rem; font-size: .75rem; }
.bsKpiCost { font-weight: 600; }
.bsKpiBudgetSpent { font-weight: 700; }
.bsKpiBudgetEdit { gap: .5rem; margin-top: .4rem; }

/* ── F8.2: Gate-1 Review-Artefakte ───────────────────────────────────── */
.bsGateReview { padding: .5rem .25rem; }
.bsGateReviewLabel { font-weight: 600; margin-bottom: .25rem; }
.bsGateReviewList { border: 1px solid var(--sapList_BorderColor, #d9d9d9); border-radius: 8px; margin-bottom: .4rem; }

/* Artefakte-Seite: Page-Header (Artefakte · Run #N) hatte zu wenig Abstand zur App-ShellBar
   (fast abgeschnitten). Etwas margin/padding oben schafft Luft. */
.bsArtefaktePage .sapMPageHeader { margin-top: .5rem; }
.bsArtefaktePage .sapMPageHeader .sapMBarPH,
.bsArtefaktePage .sapMPageHeader .sapMTitle { padding-top: .15rem; padding-bottom: .15rem; }

/* #110 Agent-Kontext-Transparenz: Basis-Prompt lesbar (monospace, dezent), Kontextliste mit Luft */
.bsAgentBasePrompt textarea {
  font-family: "Fira Code", "Cascadia Code", Consolas, monospace;
  font-size: 0.78rem; line-height: 1.45; white-space: pre-wrap;
  background: var(--sapList_Background, rgba(0,0,0,0.12));
}
.bsAgentCtxItems { white-space: pre-line; line-height: 1.7; }
.bsAgentCtxPanel .sapMPanelHdr { font-weight: 600; }

/* #114 Sichtbare Textauswahl — im Dark-Theme war die Markierung unsichtbar (gleiche Farbe wie Text). */
::selection { background: #2563eb !important; color: #ffffff !important; }
::-moz-selection { background: #2563eb !important; color: #ffffff !important; }
input::selection, textarea::selection { background: #2563eb !important; color: #ffffff !important; }
/* #114 (verstärkt): SAP-Theme setzt eigene ::selection — daher !important + SAP-Inner-Selektoren. */
.sapMInputBaseInner::selection, .sapMTextArea textarea::selection, textarea::selection,
.sapMText::selection, .sapMLabel::selection, .sapMTitle::selection, span::selection, div::selection,
.sapUiText::selection, code::selection, pre::selection { background: #2563eb !important; color: #ffffff !important; }
.sapMInputBaseInner::-moz-selection, .sapMTextArea textarea::-moz-selection, textarea::-moz-selection { background: #2563eb !important; color: #ffffff !important; }

/* #125 Agent-Detailseite (Master-Detail) */
.bsAgentDetailSplit { gap: 1rem; padding: 1rem; box-sizing: border-box; }
.bsAgentDetailMaster { flex: 0 0 16rem; max-width: 16rem; border-right: 1px solid var(--sapGroup_ContentBorderColor, rgba(255,255,255,0.08)); padding-right: 0.75rem; }
.bsAgentDetailRight { flex: 1 1 auto; min-width: 0; }
.bsAgentDetailBack { display: inline-block; font-weight: 600; }
.bsAgentDetailMasterItem { padding: 0.5rem 0.6rem; border-radius: 0.5rem; cursor: pointer; transition: background-color 0.12s ease; }
.bsAgentDetailMasterItem:hover { background: var(--sapList_Hover_Background, rgba(120,160,255,0.06)); }
.bsAgentDetailMasterItem.bsSel { background: var(--sapList_SelectionBackgroundColor, rgba(37,99,235,0.18)); cursor: default; }
.bsAgentDetailMasterName { font-weight: 600; font-size: 0.85rem; }
.bsAgentDetailMasterSub { font-size: 0.68rem; opacity: 0.6; }
.bsAgentDetailForm { max-width: 60rem; }
.bsAgentDetailTitle { margin-bottom: 0.5rem; }
.bsAgentDetailSaveBar { justify-content: flex-start; }
.bsAgentDetailAct { padding: 0.3rem 0; }
.bsAgentDetailActs { margin-top: 0.3rem; }
@media (max-width: 800px) { .bsAgentDetailSplit { flex-direction: column; } .bsAgentDetailMaster { flex-basis: auto; max-width: none; border-right: none; } }

/* ── Doku-Orchestrator (Lücken-Chat) ─────────────────────────────────── */
/* Body füllt die Seite; padding INNERHALB der Höhe (border-box), damit nichts überläuft. */
.bsDokuChatBody { box-sizing: border-box; padding: 1rem 1.25rem; }
/* Gap-Panel + Eingabe behalten ihre Höhe (nicht stauchen); nur der Verlauf wächst/schrumpft. */
.bsDokuChatGaps.sapMPanel { flex-shrink: 0; margin-bottom: 0.75rem; }
.bsDokuChatInput { flex-shrink: 0; margin-top: 0.75rem; }
/* min-height:0 erlaubt dem wachsenden Scrollbereich zu schrumpfen statt Panel/Eingabe
   aus dem Flex-Container zu drücken (sonst wird das Panel oben abgeschnitten). */
.bsDokuChatScroll { min-height: 0; }
.bsDokuChatMsgs { background: transparent; }
.bsDokuChatMsgs .sapMLIB { border-bottom: none; }
/* Gap-Liste etwas Luft zum linken Rand. */
.bsDokuChatGapList .sapMLIB { padding-left: 0.25rem; }
/* Arbeits-Indikator: dezent, aber klar sichtbar (Spinner + kursiver Statustext). */
.bsDokuChatBusy { flex-shrink: 0; padding: 0.5rem 0.5rem 0.25rem; }
.bsDokuChatBusyText { font-style: italic; color: var(--sapContent_LabelColor, #6a6d70); }
