/* /Components/Features/Admin/AdminPage.razor.rz.scp.css */
.admin-page[b-cv20wzqdz4] {
    padding: 1.5rem;
    max-width: 680px;
}

.admin-page h1[b-cv20wzqdz4] {
    margin-top: 0;
}

.admin-intro[b-cv20wzqdz4] {
    margin-bottom: 1.5rem;
    color: var(--bs-secondary, #666);
}

.admin-actions[b-cv20wzqdz4] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    align-items: flex-start;
}

.db-connection[b-cv20wzqdz4] {
    margin-bottom: 1.5rem;
    padding: 0.75rem 1rem;
    border: 1px solid var(--bs-border-color, #d9d9d9);
    border-radius: 6px;
    background: var(--bs-tertiary-bg, #f7f7f7);
}

.db-connection h2[b-cv20wzqdz4] {
    margin: 0 0 0.5rem;
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--bs-secondary, #555);
}

.db-connection-table[b-cv20wzqdz4] {
    border-collapse: collapse;
    font-size: 0.9rem;
}

.db-connection-table th[b-cv20wzqdz4],
.db-connection-table td[b-cv20wzqdz4] {
    padding: 0.2rem 0.9rem 0.2rem 0;
    text-align: left;
    vertical-align: middle;
    white-space: nowrap;
}

.db-connection-table th[scope="row"][b-cv20wzqdz4] {
    font-weight: 600;
    color: var(--bs-secondary, #555);
}

.db-server[b-cv20wzqdz4] {
    font-family: var(--bs-font-monospace, ui-monospace, monospace);
}

.db-name[b-cv20wzqdz4] {
    font-family: var(--bs-font-monospace, ui-monospace, monospace);
    font-weight: 600;
}

.db-badge[b-cv20wzqdz4] {
    display: inline-block;
    padding: 0.05rem 0.55rem;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 600;
    line-height: 1.5;
    color: #fff;
}

.db-badge-pg[b-cv20wzqdz4] {
    background: #336791; /* PostgreSQL-Blau */
}

.db-badge-mssql[b-cv20wzqdz4] {
    background: #cc2927; /* SQL-Server-Rot */
}
/* /Components/Features/Admin/DbErrorOverviewPage.razor.rz.scp.css */
.dbrepair-page[b-8s6btcp19x] {
    padding: 1rem 1.5rem;
    height: 100%;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.dbrepair-toolbar[b-8s6btcp19x] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.dbrepair-info[b-8s6btcp19x] {
    margin-left: auto;
    color: var(--bs-secondary, #666);
    font-size: 0.9em;
}

.dbrepair-summary[b-8s6btcp19x] {
    flex: 0 0 auto;
    color: var(--bs-secondary, #555);
}

/* CssClass landet auf dem Grid-Root (DevExpress-Kind-Komponente) — ohne ::deep
   greift der scoped Selektor nicht. Begrenzte Höhe (flex:1 1 0; min-height:0)
   => der Datenbereich scrollt innerhalb der Seite, der Pager bleibt unten sichtbar. */
.dbrepair-page[b-8s6btcp19x]  .dbrepair-grid {
    flex: 1 1 0;
    min-height: 0;
}

.dbrepair-scan-errors[b-8s6btcp19x] {
    margin: 0.35rem 0 0;
    padding-left: 1.2rem;
}

.action-buttons[b-8s6btcp19x] {
    display: flex;
    gap: 0.25rem;
    flex-wrap: wrap;
}

.badge[b-8s6btcp19x] {
    display: inline-block;
    margin-left: 0.4rem;
    padding: 0.05rem 0.45rem;
    border-radius: 0.75rem;
    font-size: 0.72em;
    font-weight: 600;
    line-height: 1.4;
    vertical-align: middle;
}

.badge-null[b-8s6btcp19x] {
    background: #fff3cd;
    color: #856404;
}

.badge-info[b-8s6btcp19x] {
    background: #d1ecf1;
    color: #0c5460;
}

.sample-keys[b-8s6btcp19x] {
    display: inline-block;
    max-width: 100%;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    font-family: var(--dx-font-family-monospace, monospace);
    font-size: 0.88em;
}
/* /Components/Features/Admin/DbRepairPage.razor.rz.scp.css */
.dbrepair-page[b-9qpftnrv69] {
    padding: 1rem 1.5rem;
    height: 100%;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.dbrepair-toolbar[b-9qpftnrv69] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.dbrepair-info[b-9qpftnrv69] {
    margin-left: auto;
    color: var(--bs-secondary, #666);
    font-size: 0.9em;
}

.dbrepair-split[b-9qpftnrv69] {
    flex: 1 1 auto;
    min-height: 0;
}

.dbrepair-errors[b-9qpftnrv69],
.dbrepair-firmen[b-9qpftnrv69] {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.dbrepair-firmen-title[b-9qpftnrv69] {
    flex: 0 0 auto;
    margin: 0 0 0.5rem;
}

/* Flex-Wrap, der dem Grid eine definierte (flex-begrenzte) Höhe gibt. */
.dbrepair-firmen-grid-wrap[b-9qpftnrv69] {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

/* CssClass landet auf dem Grid-Root (DevExpress-Kind-Komponente) — ohne ::deep
   greift der scoped Selektor nicht. Begrenzte Höhe (flex:1 1 0; min-height:0)
   => der Datenbereich scrollt innerhalb der Seite, der Pager bleibt unten
   sichtbar (klassisches Paging, kein Virtual Scrolling). */
.dbrepair-page[b-9qpftnrv69]  .dbrepair-grid,
.dbrepair-page[b-9qpftnrv69]  .dbrepair-firmen-grid {
    flex: 1 1 0;
    min-height: 0;
}

.action-buttons[b-9qpftnrv69] {
    display: flex;
    gap: 0.25rem;
    flex-wrap: wrap;
}

/* Synthetische "Nicht zuordenbar"-Zeile in der Firmen-Liste hervorheben. */
.scope-unattributed[b-9qpftnrv69] {
    font-style: italic;
    color: var(--bs-secondary, #666);
}

.dbrepair-scan-errors[b-9qpftnrv69] {
    margin: 0.35rem 0 0;
    padding-left: 1.2rem;
}

.badge[b-9qpftnrv69] {
    display: inline-block;
    margin-left: 0.4rem;
    padding: 0.05rem 0.45rem;
    border-radius: 0.75rem;
    font-size: 0.72em;
    font-weight: 600;
    line-height: 1.4;
    vertical-align: middle;
}

.badge-null[b-9qpftnrv69] {
    background: #fff3cd;
    color: #856404;
}

.badge-info[b-9qpftnrv69] {
    background: #d1ecf1;
    color: #0c5460;
}

.sample-keys[b-9qpftnrv69] {
    display: inline-block;
    max-width: 100%;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    font-family: var(--dx-font-family-monospace, monospace);
    font-size: 0.88em;
}
/* /Components/Features/Admin/GegenkontenAendernPopup.razor.rz.scp.css */
.ga-vorlage[b-9pkzttqtmh] { font-size: 0.85em; color: var(--bs-secondary, #666); }
.ga-picker[b-9pkzttqtmh] { min-width: 320px; }
.ga-bez[b-9pkzttqtmh] { margin-top: 0.35rem; }
.ga-summary[b-9pkzttqtmh] { margin-right: auto; color: var(--bs-secondary, #555); }
/* Body als Flex-Column, damit das DxGrid die Resthöhe zwischen Kopf und Fuß
   absorbiert und INTERN scrollt (Virtual Scrolling) — Popup wächst nicht mit
   der Zeilenzahl. Muster wie KoreDetailPopup. */
.ga-popup[b-9pkzttqtmh] {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 0.5rem;
    overflow: hidden;
}

.ga-popup[b-9pkzttqtmh]  .ga-grid {
    flex: 1 1 0;
    min-height: 0;
    height: 100%;
}
/* /Components/Features/Admin/KontenReparaturPage.razor.rz.scp.css */
.kontrep-page[b-6v8vqtucwm] {
    padding: 1rem 1.5rem;
    height: 100%;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.kontrep-toolbar[b-6v8vqtucwm] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.kontrep-info[b-6v8vqtucwm] {
    margin-left: auto;
    color: var(--bs-secondary, #666);
    font-size: 0.9em;
}

/* CssClass landet auf dem Grid-Root (DevExpress-Kind-Komponente) — ohne ::deep
   greift der scoped Selektor nicht. Flex-begrenzte Höhe => Datenbereich scrollt
   innerhalb der Seite (Virtual Scrolling). */
.kontrep-page[b-6v8vqtucwm]  .kontrep-grid {
    flex: 1 1 0;
    min-height: 0;
}

.badge[b-6v8vqtucwm] {
    display: inline-block;
    padding: 0.05rem 0.45rem;
    border-radius: 0.75rem;
    font-size: 0.72em;
    font-weight: 600;
    line-height: 1.4;
    vertical-align: middle;
}

.badge-clone[b-6v8vqtucwm] {
    background: #d4edda;
    color: #155724;
}

.kontrep-noclone[b-6v8vqtucwm] {
    font-style: italic;
    color: var(--bs-secondary, #666);
}
/* /Components/Features/Admin/KtonrFormelPopup.razor.rz.scp.css */
/* Body als Flex-Column: Kopf (Formel) fix, Vorschau-Grid füllt den Rest und scrollt intern
   (Virtual Scrolling) — Popup wächst nicht mit der Zeilenzahl. Muster wie GegenkontenAendernPopup. */
.ktf-popup[b-d7l5c8b3qc] {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 0.6rem;
    overflow: hidden;
}

.ktf-busy[b-d7l5c8b3qc] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 1rem 0.25rem;
    color: var(--bs-secondary, #555);
}

.ktf-head[b-d7l5c8b3qc] {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.ktf-formula[b-d7l5c8b3qc] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.ktf-popup[b-d7l5c8b3qc]  .ktf-input {
    min-width: 320px;
}

.ktf-hint[b-d7l5c8b3qc] {
    font-size: 0.85em;
    color: var(--bs-secondary, #666);
}

.ktf-errs[b-d7l5c8b3qc] {
    margin: 0;
    padding-left: 1.2rem;
}

.ktf-summary[b-d7l5c8b3qc] {
    margin-right: auto;
    color: var(--bs-secondary, #555);
}

.ktf-popup[b-d7l5c8b3qc]  .ktf-grid {
    flex: 1 1 0;
    min-height: 0;
    height: 100%;
}

.ktf-popup[b-d7l5c8b3qc]  .badge {
    display: inline-block;
    margin-left: 0.4rem;
    padding: 0.05rem 0.45rem;
    border-radius: 0.75rem;
    font-size: 0.75em;
    font-weight: 600;
    line-height: 1.4;
    vertical-align: middle;
}

.ktf-popup[b-d7l5c8b3qc]  .badge-ok {
    background: #d4edda;
    color: #155724;
}

.ktf-popup[b-d7l5c8b3qc]  .badge-warn {
    background: #fff3cd;
    color: #856404;
}

.ktf-popup[b-d7l5c8b3qc]  .badge-info {
    background: #d1ecf1;
    color: #0c5460;
}

.ktf-popup[b-d7l5c8b3qc]  .badge-mismatch {
    background: #f8d7da;
    color: #842029;
    font-weight: 600;
}

.ktf-popup[b-d7l5c8b3qc]  .badge-ust {
    background: #fff3cd;
    color: #856404;
}
/* /Components/Features/Admin/OrphanReferencesPopup.razor.rz.scp.css */
/* Body als Flex-Column: Hinweise fix, das Grid füllt den Rest und scrollt intern (Virtual Scrolling
   Rows+Columns für viele/ breite Spalten). Muster wie KtonrFormelPopup. */
.orphanrefs[b-1o77nx5n7w] {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 0.6rem;
    overflow: hidden;
}

.orphanrefs-busy[b-1o77nx5n7w] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 1rem 0.25rem;
    color: var(--bs-secondary, #555);
}

.orphanrefs[b-1o77nx5n7w]  .orphanrefs-grid {
    flex: 1 1 0;
    min-height: 0;
    height: 100%;
}
/* /Components/Features/Admin/PartnerEvidencePopup.razor.rz.scp.css */
/* Body als Flex-Column: Hinweise fix, das Grid füllt den Rest und scrollt intern, statt die
   verfügbare Popup-Höhe zu überschreiten. Muster wie OrphanReferencesPopup/KtonrFormelPopup:
   Container mit height:100% + overflow:hidden; das Grid via ::deep (sein Root liegt in der
   DxGrid-Kind-Scope, daher pierct die Regel vom Container aus) mit flex:1 1 0 / min-height:0 /
   height:100%. */
.partnerev[b-3ua3895ko1] {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 0.5rem;
    overflow: hidden;
}

.partnerev-busy[b-3ua3895ko1] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem;
}

.partnerev[b-3ua3895ko1]  .partnerev-grid {
    flex: 1 1 0;
    min-height: 0;
    height: 100%;
}

.partnerev[b-3ua3895ko1]  tr.partnerev-chosen td {
    background: #d4edda;
    font-weight: 600;
}
/* /Components/Features/Bilanz/BilanzEditor.razor.rz.scp.css */
.bilanz-page[b-2njxauydct] {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 0.75rem 1rem;
    gap: 0.5rem;
    overflow: hidden;
}

.bilanz-page .bilanz-header[b-2njxauydct] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    flex: 0 0 auto;
}

.bilanz-page .bilanz-header h2[b-2njxauydct] {
    margin: 0;
    font-size: 1.1rem;
}

.bilanz-page .bilanz-tabs-row[b-2njxauydct] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* Toolbar an den rechten Rand schieben, DxTabs bleibt links. */
.bilanz-page .bilanz-tabs-row[b-2njxauydct] >  .bilanz-actions {
    margin-left: auto;
    flex: 0 0 auto;
}

/* Wrap der Tree-List + Loading-Overlay; füllt die Splitter-Pane vollständig.
   Das interne DxTreeList füllt den Rest. */
.bilanz-page .bilanz-grid-wrap[b-2njxauydct] {
    height: 100%;
    min-height: 0;
    position: relative;
    display: flex;
    flex-direction: column;
}

.bilanz-page .bilanz-empty[b-2njxauydct] {
    color: #888;
    font-style: italic;
    margin: 0.5rem 0;
}

/* Drag-Handle auf Nicht-Konto-Zeilen ausblenden — visibility statt display,
   damit die Spaltenbreite des Drag-Anchors erhalten bleibt. */
.bilanz-page[b-2njxauydct]  .bilanz-no-drag {
    visibility: hidden;
    pointer-events: none;
}

/* Drop-Indikator auf ungültigen Drop-Targets unterdrücken. DevExpress
   rendert den Indikator als Sub-Element mit "drop-target"/"drag-target"
   im Klassennamen. Falls der Selektor nicht greift, im DOM nachsehen. */
.bilanz-page[b-2njxauydct]  .bilanz-no-drop [class*="drop-target"],
.bilanz-page[b-2njxauydct]  .bilanz-no-drop [class*="drag-target"] {
    display: none !important;
}

/* DxTreeList / DxGrid füllen den Flex-Slot ihres Wraps — flex-basis 0
   erzwingt reine Flex-Sizing, min-height: 0 erlaubt das Schrumpfen. */
.bilanz-page[b-2njxauydct]  .bilanz-grid,
.bilanz-page[b-2njxauydct]  .bilanz-unassigned-grid {
    flex: 1 1 0;
    min-height: 0;
}

/* Während ein Collapsed-Snapshot pending ist (Tab-Wechsel, Drag-Drop), den
   Tree per visibility ausblenden, damit der voll aufgeklappte Initial-Render
   nicht aufblitzt. Layout bleibt erhalten — kein Sprung beim Sichtbarwerden. */
.bilanz-page[b-2njxauydct]  .bilanz-grid-hidden {
    visibility: hidden;
}

.bilanz-page .bilanz-loading-overlay[b-2njxauydct] {
    position: absolute;
    inset: 0;
    background: rgba(255, 255, 255, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    z-index: 10;
}

/* Cell-Klassen liegen innerhalb der DxTreeList-Zellen → ::deep. */
.bilanz-page[b-2njxauydct]  .bilanz-davon {
    font-style: italic;
    color: #555;
}

.bilanz-page[b-2njxauydct]  .bilanz-summenkopf {
    font-weight: 600;
}

/* DxTreeList: Leaf-Rows ohne sichtbare Children bekommen einen Placeholder
   anstelle des Expand-Pfeils. Standard-Breite ist 0 → Geschwister sind
   unterschiedlich eingerückt. Auf die Breite des echten Pfeils setzen, damit
   alle Tree-Geschwister auf gleicher Indent-Linie stehen. */
.bilanz-page[b-2njxauydct]  .dxbl-grid-tree-node-expand-button-placeholder {
    width: 1rem;
    min-width: 1rem;
    display: inline-block;
}

/* Splitter füllt den Restraum unter dem Header. */
.bilanz-page[b-2njxauydct]  .bilanz-split {
    flex: 1 1 0;
    min-height: 0;
}

/* Rechte Pane: Header + Konten-Grid stapeln. */
.bilanz-page .bilanz-unassigned-wrap[b-2njxauydct] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    gap: 0.25rem;
    padding-left: 0.5rem;
}

.bilanz-page .bilanz-unassigned-title[b-2njxauydct] {
    font-weight: 600;
    font-size: 0.95em;
    padding: 0.25rem 0;
}

.bilanz-page .bilanz-unassigned-empty[b-2njxauydct] {
    color: #888;
    font-style: italic;
    margin: 0.25rem 0;
}
/* /Components/Features/Buchungen/BuchungsPopup.razor.rz.scp.css */
.buchungs-popup-info[b-vwq65ll28k] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    margin-bottom: 0.75rem;
}

.buchungs-popup-jahresergebnis[b-vwq65ll28k] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    background: var(--dxds-color-bg-subtle, #f5f5f5);
    /*background-color: var(--dxds-primary-10, #FDE9EB);*/
    padding: 0.25rem 0.5rem 0.25rem;
    margin-top: 0.25rem;
    font-size: 0.75rem;
}

.buchungs-popup-loading[b-vwq65ll28k] {
    color: var(--dxds-color-text-subtle, #6c757d);
    font-style: italic;
    padding: 1rem 0;
}

.buchungs-popup-error[b-vwq65ll28k] {
    color: var(--dxds-color-danger, #b3261e);
    padding: 0.5rem 0;
}

.buchungs-popup-grid-wrapper[b-vwq65ll28k] {
    height: calc(85vh - 280px);
}

.buchungs-popup-grid-wrapper[b-vwq65ll28k]  .buchungs-popup-grid {
    height: 100%;
}

.buchungs-form[b-vwq65ll28k] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    margin-top: 0.6rem;
    padding: 0.5rem;
    background: var(--dxds-color-bg-subtle, #f5f5f5);
    border-radius: 4px;
}

.buchungs-form-row[b-vwq65ll28k] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.4rem;
}

.buchungs-form-field[b-vwq65ll28k] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

.buchungs-form-field-grow[b-vwq65ll28k] {
    flex: 1 1 240px;
}

.buchungs-form-field label[b-vwq65ll28k] {
    font-size: 0.75rem;
    color: var(--dxds-color-text-subtle, #6c757d);
}

.buchungs-form-actions[b-vwq65ll28k] {
    display: flex;
    align-items: flex-end;
    gap: 0.4rem;
    margin-left: auto;
}

.buchungs-form-info[b-vwq65ll28k] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.25rem 2rem;
    margin-top: 0.4rem;
    font-size: 0.85rem;
    color: var(--dxds-color-text-subtle, #495057);
    min-height: 1.2rem;
}

.buchungs-form-info-col[b-vwq65ll28k] {
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 0.15rem 0.5rem;
    align-content: start;
}

.buchungs-form-info-label[b-vwq65ll28k] {
    color: var(--dxds-color-text-subtle, #6c757d);
}

.buchungs-form-info-body[b-vwq65ll28k] {
    white-space: nowrap;
}

[b-vwq65ll28k] .buchungs-field-datum { width: 110px; }
[b-vwq65ll28k] .buchungs-field-bk { width: 60px; }
[b-vwq65ll28k] .buchungs-field-belegnr { width: 110px; }
[b-vwq65ll28k] .buchungs-field-konto { width: 220px; }
[b-vwq65ll28k] .buchungs-field-kako { width: 140px; }
[b-vwq65ll28k] .buchungs-field-ust { width: 70px; }
[b-vwq65ll28k] .buchungs-field-betrag { width: 130px; }
/* /Components/Features/Buchungen/KontoblaetterPage.razor.rz.scp.css */
.kontoblaetter-page[b-qsatro3hbc] {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 0.75rem 1rem;
    gap: 0.5rem;
    overflow: hidden;
}

.kontoblaetter-page .kontoblaetter-header[b-qsatro3hbc] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    flex: 0 0 auto;
}

.kontoblaetter-page .kontoblaetter-header h2[b-qsatro3hbc] {
    margin: 0;
    font-size: 1.1rem;
}

.kontoblaetter-page .kontoblaetter-actions[b-qsatro3hbc] {
    flex: 0 0 auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3rem 0.6rem;
}

/* Label + DateEdit als eine zusammenhängende, mittig ausgerichtete Einheit, die
   beim Umbruch nicht getrennt wird. */
.kontoblaetter-page .kontoblaetter-stichtag[b-qsatro3hbc] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.kontoblaetter-page .kontoblaetter-viewer-wrap[b-qsatro3hbc] {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    /* DxReportViewer braucht eine explizite Höhe — der Tab-Body ist ein
       flex-Container, der Wrapper füllt den Rest, der Viewer 100% davon. */
}

.kontoblaetter-page[b-qsatro3hbc]  .kontoblaetter-viewer {
    flex: 1 1 0;
    min-height: 0;
    height: 100%;
    width: 100%;
}
/* /Components/Features/Buchungen/KontoPage.razor.rz.scp.css */
.konto-page[b-0mnjufr06k] {
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.tab-header[b-0mnjufr06k] {
    padding: 0.35rem 0.5rem;
    font-weight: 600;
    font-size: 0.85rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 0 0 auto;
    background-color: var(--dxds-color-surface-primary-subdued-active);
    color: white;
}

.tab-loading[b-0mnjufr06k] {
    padding: 1rem;
    color: #666;
    font-style: italic;
}

/* DxGrid fills remaining space in its flex parent; flex-basis 0 forces
   pure flex sizing so the grid doesn't overflow .tab-header, and min-height: 0
   lets it shrink to its allotted box. */
.konto-page[b-0mnjufr06k]  .fibu-grid {
    flex: 1 1 0;
    min-height: 0;
    --dxbl-grid-font-size: 0.8rem;
}

.kp-popup[b-0mnjufr06k] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.25rem 0;
}

.kp-popup-label[b-0mnjufr06k] {
    font-size: 0.85rem;
    color: #444;
}

.kp-popup[b-0mnjufr06k]  .kp-popup-picker {
    width: 100%;
}
/* /Components/Features/Buchungen/TabManager.razor.rz.scp.css */
.tab-root[b-vlys9nnt1y] {
    height: 100%;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.tab-empty[b-vlys9nnt1y] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: #888;
    gap: 0.5rem;
}

.tab-empty h2[b-vlys9nnt1y] {
    font-weight: 300;
    font-size: 1.6rem;
    color: #555;
    margin: 0;
}

.tab-empty p[b-vlys9nnt1y] {
    font-size: 0.9rem;
    margin: 0;
}

.tab-row[b-vlys9nnt1y] {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.tab-row + .tab-row[b-vlys9nnt1y] {
    border-top: 1px solid var(--dxds-color-border-subtle, #ddd);
}

.tab-title[b-vlys9nnt1y] {
    font-weight: 500;
}

.tab-close[b-vlys9nnt1y] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    margin-left: 0.5rem;
    border-radius: 50%;
    font-size: 1rem;
    line-height: 1;
    color: #888;
    cursor: pointer;
    user-select: none;
}

.tab-close:hover[b-vlys9nnt1y] {
    background: rgba(0, 0, 0, 0.1);
    color: #000;
}

/* DxTabs root — reached via ::deep since DevExpress components don't get
   the scoped attribute from this component. */
.tab-row[b-vlys9nnt1y]  .fibu-tabs {
    flex: 1 1 auto;
    min-height: 0;
    max-height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
/* /Components/Features/Buchungen/UstUebersichtPage.razor.rz.scp.css */
.ust-page[b-uem15h9vf7] {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 0.75rem 1rem;
    gap: 0.5rem;
    overflow: hidden;
}

.ust-page .ust-header[b-uem15h9vf7] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    flex: 0 0 auto;
}

.ust-page .ust-header h2[b-uem15h9vf7] {
    margin: 0;
    font-size: 1.1rem;
}

.ust-page[b-uem15h9vf7] >  .ust-actions {
    flex: 0 0 auto;
}

.ust-page .ust-pivot-wrap[b-uem15h9vf7] {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.ust-page[b-uem15h9vf7]  .ust-pivot {
    flex: 1 1 0;
    min-height: 0;
    height: 100%;
}

.ust-page[b-uem15h9vf7]  .ust-cell {
    display: block;
    width: 100%;
    min-height: 1.4em;
    box-sizing: border-box;
    cursor: pointer;
}

/* .ust-drill-wrap / .ust-drill-grid leben in app.css (global), weil
   DxPopup seinen Body via JS aus dem Page-Subtree raus-teleportiert —
   scoped CSS mit ::deep würde dann nicht mehr matchen. Gleicher Grund,
   warum .stamm-tab in app.css steht. */
/* /Components/Features/Firmen/FirmaJobProgressInline.razor.rz.scp.css */
/* Abbrechen-Affordance im Footer des Firma-Editors (heller Popup-Hintergrund): je Job
   eine Zeile (Titel + „Abbrechen"). Den Fortschritt zeigt der App-FooterBar; hier wird er
   bewusst NICHT gedoppelt. Mehrere Jobs (1 laufend + ggf. wartende) stapeln sich vertikal
   über den Block-Flow des umgebenden .popup-footer-progress. */

.op-progress[b-uo59y7qnm4] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
    font-size: 0.8rem;
    color: var(--dxbl-body-color, #242424);
}

.op-progress + .op-progress[b-uo59y7qnm4] {
    margin-top: 0.25rem;
}

.op-progress-title[b-uo59y7qnm4] {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* /Components/Features/Konsolidierung/AddTochterPopup.razor.rz.scp.css */
/* Styles für .add-tochter-body / .add-tochter-grid leben in app.css (global),
   weil DxPopup seinen Body via JS aus dem Page-Subtree raus-teleportiert —
   scoped CSS mit ::deep würde dann nicht matchen. */
/* /Components/Features/Konsolidierung/KonsolidierungPage.razor.rz.scp.css */
.kons-page[b-k7dr2lfv71] {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 0.75rem 1rem;
    gap: 0.5rem;
    overflow: hidden;
}

.kons-page .kons-header[b-k7dr2lfv71] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    flex: 0 0 auto;
}

.kons-page .kons-header h2[b-k7dr2lfv71] {
    margin: 0;
    font-size: 1.1rem;
}

.kons-tool-row[b-k7dr2lfv71] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: 0 0 auto;
}

.kons-tool-row[b-k7dr2lfv71] >  .kons-actions {
    flex: 0 0 auto;
}

.kons-tool-row[b-k7dr2lfv71] >  .kons-filter {
    flex: 1 1 auto;
    min-width: 0;
}

.kons-page .kons-pivot-wrap[b-k7dr2lfv71] {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.kons-page[b-k7dr2lfv71]  .kons-pivot {
    flex: 1 1 0;
    min-height: 0;
    height: 100%;
}

.kons-page[b-k7dr2lfv71]  .kons-ktobez-cell {
    display: inline-block;
    width: 100%;
    cursor: pointer;
}

.kons-page[b-k7dr2lfv71]  .kons-cell {
    display: block;
    width: 100%;
    min-height: 1.4em;
    box-sizing: border-box;
    cursor: grab;
    padding: 2px 4px;
}

.kons-page[b-k7dr2lfv71]  .kons-cell:active {
    cursor: grabbing;
}

.kons-page[b-k7dr2lfv71]  .kons-cell:hover {
    background: var(--dxds-color-surface-primary-subdued-rest, #f0f4ff);
}

.kons-page[b-k7dr2lfv71]  .kons-cell.kons-cell-dragover {
    background: var(--dxds-color-surface-primary-rest, #cfe1ff);
    outline: 2px dashed var(--dxds-color-text-accent-rest, #2a6fd1);
    outline-offset: -2px;
}
/* /Components/Features/Kostenrechnung/BabPage.razor.rz.scp.css */
.kore-bab-page[b-hgys5xhy7o] {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 0.75rem 1rem;
    gap: 0.5rem;
    overflow: hidden;
}

.kore-bab-page .kore-bab-header[b-hgys5xhy7o] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    flex: 0 0 auto;
}

.kore-bab-page .kore-bab-header h2[b-hgys5xhy7o] {
    margin: 0;
    font-size: 1.1rem;
}

.kore-bab-page[b-hgys5xhy7o] >  .kore-bab-actions {
    flex: 0 0 auto;
}

.kore-bab-page[b-hgys5xhy7o] >  .kore-bab-period-tabs {
    flex: 0 0 auto;
}

.kore-bab-page .kore-bab-pivot-wrap[b-hgys5xhy7o] {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.kore-bab-page[b-hgys5xhy7o]  .kore-bab-pivot {
    flex: 1 1 0;
    min-height: 0;
    height: 100%;
}

/* Make Betrag data cells visually selectable so the user discovers the
   double-click drilldown. Span fills the cell so the click area is the
   whole rectangle, not just the rendered text. */
.kore-bab-page[b-hgys5xhy7o]  .kore-bab-cell {
    display: block;
    width: 100%;
    min-height: 1.4em;
    box-sizing: border-box;
    cursor: grab;
    padding: 2px 4px;
}

.kore-bab-page[b-hgys5xhy7o]  .kore-bab-cell:active {
    cursor: grabbing;
}

.kore-bab-page[b-hgys5xhy7o]  .kore-bab-cell:hover {
    background: var(--dxds-color-surface-primary-subdued-rest, #f0f4ff);
}

/* Active drop-target highlight while dragging — :hover is unreliable during
   HTML5 drag, so a class is toggled from the C# dragenter handler instead. */
.kore-bab-page[b-hgys5xhy7o]  .kore-bab-cell.kore-bab-cell-dragover {
    background: var(--dxds-color-surface-primary-rest, #cfe1ff);
    outline: 2px dashed var(--dxds-color-text-accent-rest, #2a6fd1);
    outline-offset: -2px;
}

/* Summen-Footerzeile hervorheben: fett + Hintergrund über die GANZE Zeile.
   Der Marker-Span sitzt in der Kategorie-Headerzelle (ValueTemplate, textbasiert auf
   "4.Summe" — kein RowIndex, daher trifft es nur die echte Summe-Zeile); :has() hebt
   alle Zellen derselben <tr> an — inkl. der leeren KA-/Bezeichnungszellen UND der
   Datenzellen (DxPivotTable rendert die Zeile als eine <tr>). */
.kore-bab-page[b-hgys5xhy7o]  tr:has(.kore-bab-summe-marker) > * {
    background: var(--dxds-color-surface-primary-subdued-rest, #fbe7d6);
}

/* Fett für die gesamte Zeile — Zellen UND ihre inneren Elemente (Datenzell-Spans,
   Zahlen), falls DevExpress dort ein eigenes font-weight setzt, das die Vererbung
   überschreiben würde. */
.kore-bab-page[b-hgys5xhy7o]  tr:has(.kore-bab-summe-marker) > *,
.kore-bab-page[b-hgys5xhy7o]  tr:has(.kore-bab-summe-marker) > * * {
    font-weight: 700;
}
/* /Components/Features/Kostenrechnung/BdsKostenstellenPage.razor.rz.scp.css */
.bds-page[b-ghn4yuxo82] {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 0.75rem 1rem;
    gap: 0.5rem;
    overflow: hidden;
}

.bds-page .bds-header[b-ghn4yuxo82] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    flex: 0 0 auto;
}

.bds-page .bds-header h2[b-ghn4yuxo82] {
    margin: 0;
    font-size: 1.1rem;
}

.bds-page[b-ghn4yuxo82] >  .bds-actions {
    flex: 0 0 auto;
}

.bds-page .bds-grid-wrap[b-ghn4yuxo82] {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.bds-page[b-ghn4yuxo82]  .bds-grid {
    flex: 1 1 0;
    min-height: 0;
    height: 100%;
}

.bds-page[b-ghn4yuxo82]  .bds-detail {
    padding: 0.4rem 0.6rem;
    background: rgba(0, 0, 0, 0.02);
}

.bds-page[b-ghn4yuxo82]  .bds-detail-grid {
    width: 100%;
}
/* /Components/Features/Kostenrechnung/IlvPopup.razor.rz.scp.css */
/* The DxPopup BodyContentTemplate is a block element with the popup body's
   inner height. Make the page-root flex-column and the matrix wrap absorb
   leftover height so the table fills the entire popup. */
.ilv-popup[b-efvgmppyxw] {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 0.5rem;
    overflow: hidden;
}

.ilv-popup[b-efvgmppyxw] >  .ilv-period-tabs,
.ilv-popup .ilv-toolbar[b-efvgmppyxw] {
    flex: 0 0 auto;
}

.ilv-popup .ilv-toolbar[b-efvgmppyxw] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.ilv-popup .ilv-toolbar .ilv-spacer[b-efvgmppyxw] {
    flex: 1 1 auto;
}

.ilv-popup .ilv-toolbar .ilv-hint[b-efvgmppyxw] {
    color: #666;
    font-style: italic;
}

/* Kumuliert-Schalter: optisch von den Buttons abgesetzt (Separator rechts). */
.ilv-popup .ilv-toolbar .ilv-scope-toggle[b-efvgmppyxw] {
    display: inline-flex;
    align-items: center;
    padding-right: 0.5rem;
    margin-right: 0.25rem;
    border-right: 1px solid var(--dxbl-border-color, #ccc);
    white-space: nowrap;
}

.ilv-popup .ilv-import-label[b-efvgmppyxw] {
    display: inline-flex;
    align-items: center;
    gap: var(--dxds-spacing-40, 0.25rem);
    padding: var(--dxds-spacing-30, 0.1875rem) var(--dxds-spacing-80, 0.5rem);
    border: 1px solid var(--dxbl-border-color, #ccc);
    border-radius: 3px;
    cursor: pointer;
    background: var(--dxbl-btn-bg, #f6f6f6);
    font-size: var(--dxds-font-size-base-sm, 0.75rem);
    font-weight: var(--dxds-font-weight-base-default, 400);
    line-height: var(--dxds-line-height-base-sm, 1rem);
}

.ilv-popup .ilv-import-label:hover[b-efvgmppyxw] {
    background: var(--dxbl-btn-bg-hover, #e9e9e9);
}

.ilv-popup .ilv-import-input[b-efvgmppyxw] {
    display: none;
}

.ilv-popup .ilv-andere-firma-wrap[b-efvgmppyxw] {
    position: relative;
}

.ilv-popup .ilv-firma-picker[b-efvgmppyxw] {
    position: absolute;
    top: calc(100% + 0.25rem);
    left: 0;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    background: #fff;
    border: 1px solid var(--dxbl-border-color, #ccc);
    border-radius: 4px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
    z-index: 10;
    white-space: nowrap;
}

.ilv-popup .ilv-firma-picker[b-efvgmppyxw]  .ilv-firma-combo {
    min-width: 320px;
}

.ilv-popup .ilv-pivot-wrap[b-efvgmppyxw] {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

/* Scroll container: only this scrolls (both axes); sticky headers anchor to it. */
.ilv-popup .ilv-matrix-scroll[b-efvgmppyxw] {
    flex: 1 1 0;
    min-height: 0;
    overflow: auto;
    background: var(--dxds-color-surface-neutral-default-rest, #fff);
}

.ilv-popup .ilv-matrix[b-efvgmppyxw] {
    border-collapse: separate;
    border-spacing: 0;
    table-layout: fixed;
    font-size: var(--dxds-font-size-base-sm, 0.75rem);
    line-height: var(--dxds-line-height-base-sm, 1rem);
    font-weight: var(--dxds-font-weight-base-default, 400);
    font-family: var(--dxds-font-family-base, inherit);
}

.ilv-popup .ilv-matrix th[b-efvgmppyxw],
.ilv-popup .ilv-matrix td[b-efvgmppyxw] {
    border-right: 1px solid var(--dxbl-border-color, #d8d8d8);
    border-bottom: 1px solid var(--dxbl-border-color, #d8d8d8);
    padding: 2px 4px;
    background: #fff;
    vertical-align: middle;
}

.ilv-popup .ilv-matrix th[b-efvgmppyxw] {
    font-weight: 600;
}

/* Sticky top header row */
.ilv-popup .ilv-matrix thead th[b-efvgmppyxw] {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--dxds-color-surface-neutral-subdued-rest, #f3f3f3);
    user-select: none;
}

.ilv-popup .ilv-matrix thead .ilv-col-header[b-efvgmppyxw] {
    cursor: pointer;
}

.ilv-popup .ilv-matrix thead .ilv-col-header:hover[b-efvgmppyxw] {
    background: var(--dxds-color-surface-neutral-default-hover, #e6e6e6);
}

/* Sticky left column (row headers + bottom-left total) */
.ilv-popup .ilv-matrix .ilv-row-header[b-efvgmppyxw] {
    position: sticky;
    left: 0;
    z-index: 1;
    background: var(--dxds-color-surface-neutral-subdued-rest, #f3f3f3);
    text-align: left;
    white-space: nowrap;
    max-width: 18rem;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Top-left corner — sticky on both axes, must beat both row & column headers */
.ilv-popup .ilv-matrix .ilv-corner[b-efvgmppyxw] {
    left: 0;
    z-index: 3;
    background: var(--dxds-color-surface-neutral-default-rest, #ececec);
    text-align: center;
    white-space: nowrap;
    min-width: 12rem;
}

.ilv-popup .ilv-matrix .ilv-corner[b-efvgmppyxw] {
    cursor: default;
}

.ilv-popup .ilv-matrix .ilv-corner-axis[b-efvgmppyxw] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.25rem;
    padding: 1px 4px;
    cursor: pointer;
}

.ilv-popup .ilv-matrix .ilv-corner-axis:hover[b-efvgmppyxw] {
    background: var(--dxds-color-surface-neutral-default-hover, #e0e0e0);
}

.ilv-popup .ilv-matrix .ilv-corner-axis-lks[b-efvgmppyxw] {
    border-bottom: 1px solid var(--dxbl-border-color, #d8d8d8);
}

/* Column header with stacked ID + Bezeichnung */
.ilv-popup .ilv-matrix .ilv-col-header[b-efvgmppyxw] {
    min-width: 7rem;
    max-width: 9rem;
}

.ilv-popup .ilv-matrix .ilv-ks-header[b-efvgmppyxw] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    line-height: 1.2;
}

.ilv-popup .ilv-matrix .ilv-ks-header .ilv-ks-id[b-efvgmppyxw] {
    font-weight: 600;
}

.ilv-popup .ilv-matrix .ilv-ks-header .ilv-ks-text[b-efvgmppyxw] {
    font-size: 0.85em;
    color: #666;
    white-space: normal;
    overflow-wrap: break-word;
    font-weight: 400;
}

/* Data cells */
.ilv-popup .ilv-matrix .ilv-cell[b-efvgmppyxw] {
    text-align: right;
    padding: 0;
}

.ilv-popup .ilv-matrix .ilv-cell-active[b-efvgmppyxw] {
    outline: 2px solid var(--dxds-color-primary-default-rest, #0078d4);
    outline-offset: -2px;
    position: relative;
    z-index: 1;
}

.ilv-popup .ilv-matrix-scroll:focus[b-efvgmppyxw] {
    outline: none;
}

.ilv-popup .ilv-matrix-scroll:focus-visible[b-efvgmppyxw] {
    outline: none;
}

.ilv-popup .ilv-matrix .ilv-cell-missing[b-efvgmppyxw] {
    background: var(--dxds-color-surface-neutral-default-disabled, #eaeaea);
}

.ilv-popup .ilv-matrix .ilv-cell-display[b-efvgmppyxw] {
    display: block;
    width: 100%;
    min-height: 1.25rem;
    cursor: text;
    text-align: right;
    padding: 2px 4px;
}

.ilv-popup .ilv-matrix .ilv-cell-display:hover[b-efvgmppyxw] {
    background: var(--dxds-color-surface-primary-subdued-rest, #f0f4ff);
}

.ilv-popup .ilv-matrix .ilv-cell-disabled[b-efvgmppyxw] {
    display: block;
    width: 100%;
    min-height: 1.25rem;
    background-color: var(--dxds-color-surface-neutral-default-disabled, #eaeaea);
    cursor: not-allowed;
    pointer-events: none;
    text-align: right;
    padding: 2px 4px;
}

.ilv-popup .ilv-matrix .ilv-cell-edit-wrap[b-efvgmppyxw] {
    width: 100%;
}

.ilv-popup .ilv-matrix .ilv-cell-edit[b-efvgmppyxw] {
    width: 100%;
    box-sizing: border-box;
    text-align: right;
    padding: 2px 4px;
    border: 1px solid var(--dxds-color-primary-default-rest, #0078d4);
    background: #fff;
    font: inherit;
    color: inherit;
    outline: none;
}

.ilv-popup .ilv-matrix .ilv-col-total[b-efvgmppyxw] {
    text-align: right;
}

/* Right grand-total column — sticky on the right edge so it stays visible
   while horizontally scrolling. Mirrors the old DxPivotTable behavior. */
.ilv-popup .ilv-matrix .ilv-col-total-header[b-efvgmppyxw],
.ilv-popup .ilv-matrix .ilv-row-total-cell[b-efvgmppyxw] {
    position: sticky;
    right: 0;
    background: var(--dxds-color-surface-neutral-subdued-rest, #f3f3f3);
    font-weight: 600;
    text-align: right;
}

.ilv-popup .ilv-matrix .ilv-row-total-cell[b-efvgmppyxw] {
    z-index: 2;
}

/* Top-right corner: sticky top + right; beats plain top-headers (z=2) */
.ilv-popup .ilv-matrix .ilv-col-total-header[b-efvgmppyxw] {
    z-index: 3;
}

/* Sticky bottom total row (Spaltensummen) — bleibt beim vertikalen Scrollen sichtbar.
   Sticky wird wie bei thead auf die Zellen gesetzt (nicht auf <tr>/<tfoot>). */
.ilv-popup .ilv-matrix tfoot th[b-efvgmppyxw],
.ilv-popup .ilv-matrix tfoot td[b-efvgmppyxw] {
    position: sticky;
    bottom: 0;
    z-index: 2;
    background: var(--dxds-color-surface-neutral-subdued-rest, #f3f3f3);
    font-weight: 600;
    text-align: right;
}

/* Bottom-left-Ecke der Total-Zeile: sticky unten + links (schlägt Fuß- und Kopfzeile) */
.ilv-popup .ilv-matrix tfoot .ilv-foot-corner[b-efvgmppyxw] {
    left: 0;
    z-index: 3;
    text-align: left;
    white-space: nowrap;
}

/* Bottom-right Gesamtsumme: sticky unten + rechts (schlägt alles) */
.ilv-popup .ilv-matrix tfoot .ilv-foot-grand[b-efvgmppyxw] {
    right: 0;
    z-index: 4;
}

.ilv-popup .ilv-status[b-efvgmppyxw] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-size: 0.875rem;
    color: #555;
    padding: 0.25rem 0;
}

.ilv-popup .ilv-status[b-efvgmppyxw]  .ilv-save-button {
    margin-left: auto;
}

.ilv-popup .ilv-status .ilv-dirty[b-efvgmppyxw] {
    color: #b25400;
    font-weight: 600;
}

.ilv-popup .ilv-status .ilv-info[b-efvgmppyxw] {
    color: #1a6f1a;
}
/* /Components/Features/Kostenrechnung/KoreDetailPopup.razor.rz.scp.css */
/* DxPopup BodyContentTemplate is a block element with the popup body's inner
   height. Make the root flex-column so the DxGrid can absorb the leftover
   height between the filter toolbar and the popup's bottom edge. */
.kore-detail-popup[b-8puv4b06da] {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 0.5rem;
    overflow: hidden;
}

.kore-detail-popup .kore-detail-filters[b-8puv4b06da] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    flex: 0 0 auto;
}

.kore-detail-popup[b-8puv4b06da]  .kore-detail-combo {
    min-width: 14rem;
}

.kore-detail-popup[b-8puv4b06da]  .kore-detail-grid {
    flex: 1 1 0;
    min-height: 0;
    height: 100%;
}
/* /Components/Features/Kostenrechnung/KostenartenAnzeigePage.razor.rz.scp.css */
.kostenarten-page[b-8zwry023eq] {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 0.75rem 1rem;
    gap: 0.5rem;
    overflow: hidden;
}

.kostenarten-page .kostenarten-header[b-8zwry023eq] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    flex: 0 0 auto;
}

.kostenarten-page .kostenarten-header h2[b-8zwry023eq] {
    margin: 0;
    font-size: 1.1rem;
}

.kostenarten-page .kostenarten-actions[b-8zwry023eq] {
    flex: 0 0 auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3rem 0.6rem;
}

/* Label + ComboBox als eine zusammenhängende, mittig ausgerichtete Einheit, die
   beim Umbruch nicht getrennt wird. */
.kostenarten-page .kostenarten-periode[b-8zwry023eq] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.kostenarten-page .kostenarten-grid-wrap[b-8zwry023eq] {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.kostenarten-page[b-8zwry023eq]  .kostenarten-grid {
    flex: 1 1 0;
    min-height: 0;
    height: 100%;
}

.kostenarten-page[b-8zwry023eq]  .kostenarten-detail {
    padding: 0.4rem 0.6rem;
    background: rgba(0, 0, 0, 0.02);
    /* Festes Höhenfenster — die DetailRow-<td> der Master-DxGrid propagiert
       max-height-Begrenzungen nicht zuverlässig, daher explizit auf 50vh
       fixieren. Scrollbar erscheint, sobald der innere Grid höher wird. */
    height: 50vh;
    box-sizing: border-box;
    overflow-y: auto;
    overflow-x: hidden;
}

.kostenarten-page[b-8zwry023eq]  .kostenarten-detail-grid {
    width: 100%;
}
/* /Components/Features/Kostenrechnung/UmbuchenPopup.razor.rz.scp.css */
.umbuchen-popup[b-06zizjkxlf] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.umbuchen-popup .umbuchen-hint[b-06zizjkxlf] {
    margin: 0;
    font-size: 0.8125rem;
    color: #666;
}

.umbuchen-popup .umbuchen-grid[b-06zizjkxlf] {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: start;
    gap: 0.5rem;
}

.umbuchen-popup .umbuchen-col[b-06zizjkxlf] {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 0.5rem;
    row-gap: 0.35rem;
    align-items: center;
}

.umbuchen-popup .umbuchen-col h4[b-06zizjkxlf] {
    grid-column: 1 / -1;
    margin: 0 0 0.15rem 0;
    font-size: 0.875rem;
    font-weight: 600;
    color: #555;
}

.umbuchen-popup .umbuchen-col label[b-06zizjkxlf] {
    font-size: 0.8125rem;
    color: #555;
    white-space: nowrap;
}

.umbuchen-popup .umbuchen-arrow[b-06zizjkxlf] {
    align-self: center;
    padding-top: 1.25rem;
    font-size: 1.25rem;
    color: #888;
}

.umbuchen-popup .umbuchen-betrag[b-06zizjkxlf] {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 0.5rem;
    align-items: center;
    width: 180px;
    margin: 0 auto;
}

.umbuchen-popup .umbuchen-betrag label[b-06zizjkxlf] {
    font-size: 0.8125rem;
    color: #555;
}
/* /Components/Features/Saldenliste/SaldenlistePage.razor.rz.scp.css */
.saldenliste-page[b-r5u51k1cj9] {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 0.75rem 1rem;
    gap: 0.5rem;
    overflow: hidden;
}

.saldenliste-page .saldenliste-header[b-r5u51k1cj9] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    flex: 0 0 auto;
}

.saldenliste-page .saldenliste-header h2[b-r5u51k1cj9] {
    margin: 0;
    font-size: 1.1rem;
}

.saldenliste-page[b-r5u51k1cj9] >  .saldenliste-actions {
    flex: 0 0 auto;
}

.saldenliste-page .saldenliste-grid-wrap[b-r5u51k1cj9] {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.saldenliste-page[b-r5u51k1cj9]  .saldenliste-grid {
    flex: 1 1 0;
    min-height: 0;
}

.saldenliste-page[b-r5u51k1cj9]  .saldenliste-group {
    font-weight: 600;
}

.saldenliste-page[b-r5u51k1cj9]  .saldenliste-group-kennung {
    font-weight: 400;
    color: #666;
    margin-left: 0.5rem;
}

/* Group-Header-Layout: linke Spalte (Label) flex-1, vier Summen-Spalten
   à 120px rechtsbündig — matched die Breite der Wert-Spalten EB/Soll/
   Haben/Saldo, damit die Summen direkt unter den jeweiligen Spalten-
   Headern stehen. Die KtoNr-Spalte (80px) fällt in den Label-Bereich.
   translateX kompensiert visuell, dass die Group-Row-Zelle einen anderen
   right-Padding/Scrollbar-Gutter hat als die Detail-Zellen — negative
   margins werden von DxGrid's Overflow-Container abgeschnitten. */
.saldenliste-page[b-r5u51k1cj9]  .saldenliste-group-row {
    display: flex;
    align-items: center;
    width: 100%;
    gap: 0;
    transform: translateX(0.5rem);
}

/* Hintergrund auf die Group-Row-Zelle: subtile Hervorhebung der
   Kontoart-Header-Zeilen. :has() trifft das umgebende <td>, damit
   die Färbung über die volle Spaltenbreite reicht — die
   transform-Verschiebung des inneren Layouts bleibt davon unberührt.
   Wir verwenden das öffentliche Fluent-Design-Token
   --dxds-color-surface-primary-subdued-rest, das den aktuellen Accent
   (Rust) als zart getönte Fläche aufgreift. */
.saldenliste-page[b-r5u51k1cj9]  td:has(> .saldenliste-group-row) {
    background-color: var(--dxds-color-surface-primary-subdued-rest);
}

.saldenliste-page[b-r5u51k1cj9]  .saldenliste-group-label {
    flex: 1 1 auto;
    font-weight: 600;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.saldenliste-page[b-r5u51k1cj9]  .saldenliste-group-sum {
    flex: 0 0 120px;
    text-align: right;
    font-weight: 600;
    /* Matches --dxbl-grid-text-cell-padding-x for SizeMode.Small so the
       sums align horizontally with the right-aligned detail values. */
    padding-right: 0.4375rem;
}
/* /Components/Layout/FirmenMenu.razor.rz.scp.css */
.firmen-tree-container[b-qzjnh997eh] {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
}

.firmen-filter[b-qzjnh997eh] {
    padding: 0.5rem;
    flex-shrink: 0;
}

.tree-view-scroll[b-qzjnh997eh] {
    flex: 1;
    min-height: 0;
    overflow: auto;
}

.firmen-combo[b-qzjnh997eh] {
    width: 100%;
}

[b-qzjnh997eh] .tree-col {
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-qzjnh997eh] .tree-col.klientennr {
    flex-shrink: 0;
    min-width: 2rem;
}

[b-qzjnh997eh] .tree-col.name {
    flex: 1;
    min-width: 0;
}

[b-qzjnh997eh] .tree-col.stichtag {
    flex-shrink: 0;
    font-size: 0.7rem;
    opacity: 0.7;
}

[b-qzjnh997eh] .tree-col.art {
    flex-shrink: 0;
    min-width: 1.5rem;
}

[b-qzjnh997eh] .tree-col.beschreibung {
    flex: 1;
    min-width: 0;
}

[b-qzjnh997eh] .tree-col.kennung {
    flex-shrink: 0;
    font-size: 0.7rem;
    opacity: 0.7;
}

[b-qzjnh997eh] .tree-col.ktonr {
    flex-shrink: 0;
    min-width: 2.5rem;
}

[b-qzjnh997eh] .tree-col.ktobez {
    flex: 1;
    min-width: 0;
}

.firmen-loading[b-qzjnh997eh] {
    padding: 0.5rem;
    color: #999;
    font-size: 0.8rem;
}

[b-qzjnh997eh] .tree-loading {
    list-style: none;
    padding: 0.5rem;
    color: #999;
    font-size: 0.8rem;
}

.firmen-empty[b-qzjnh997eh] {
    padding: 0.5rem;
    color: #999;
    font-size: 0.8rem;
    text-align: center;
}

[b-qzjnh997eh] .firmen-tabs {
    --dxbl-tabs-height: 100%;
    flex: 1;
    min-height: 0;
}

[b-qzjnh997eh] .firmen-tabs .dxbl-tabs-content-panel {
    min-height: 0;
    overflow: hidden;
}

[b-qzjnh997eh] .firmen-tabs .dxbl-tabs-content {
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
/* /Components/Layout/FooterBar.razor.rz.scp.css */
.footer-bar[b-e43hkd4d49] {
    height: 1.6rem;               /* fix: das Layout (DxSplitter-Höhe) reserviert genau 1.6rem */
    position: relative;           /* Anker für den schwebenden Operations-Stapel */
    background-color: var(--dxds-color-surface-primary-default-rest, #0F6CBD);
    color: white;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 0.75rem;
    font-size: 0.8rem;
    flex-shrink: 0;
}

/* Stapel mehrerer gleichzeitiger Hintergrund-Operationen: schwebt RECHTSBÜNDIG nach OBEN über
   die Footer-Leiste (Toast-Stil). Bewusst aus dem Layout-Fluss genommen (position:absolute) —
   der Footer darf nicht nach unten wachsen, sonst schiebt er sich aus dem 100vh-Bereich
   (.dx-page hat overflow:hidden, DxSplitter-Höhe geht von 1.6rem Footer aus). */
.footer-progress-stack[b-e43hkd4d49] {
    position: absolute;
    right: 0.5rem;
    bottom: calc(100% + 2px);
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 4px;
    max-height: 60vh;             /* sehr viele Jobs -> scrollbar statt über den Bildschirm */
    overflow-y: auto;
    z-index: 100;                 /* über dem Content rendern */
    pointer-events: none;         /* leeres Panel fängt keine Klicks ab */
}

/* Jede Operation als eigenständiger Chip (eigener Hintergrund, da über Content schwebend). */
.footer-progress-stack > .footer-progress[b-e43hkd4d49],
.footer-progress-stack > .footer-progress-error[b-e43hkd4d49],
.footer-progress-stack > .footer-progress-info[b-e43hkd4d49],
.footer-progress-stack > .footer-progress-download[b-e43hkd4d49] {
    flex: 0 0 auto;
    width: auto;
    pointer-events: auto;
    background-color: var(--dxds-color-surface-primary-default-rest, #0F6CBD);
    padding: 3px 0.75rem;
    border-radius: 5px;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35);
}

/* „Download bereit" hebt sich grün ab (Export fertig, abholbereit). */
.footer-progress-stack > .footer-progress-download[b-e43hkd4d49] {
    background-color: var(--dxbl-success, #107C10);
}

.footer-firma[b-e43hkd4d49] {
    display: flex;
    gap: 1rem;
    align-items: center;
    overflow: hidden;
    min-width: 0;
}

.footer-firma-name[b-e43hkd4d49],
.footer-konto-bez[b-e43hkd4d49] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.footer-konto-sep[b-e43hkd4d49] {
    opacity: 0.5;
}

.footer-copyright[b-e43hkd4d49] {
    white-space: nowrap;
    opacity: 0.85;
}

.footer-progress[b-e43hkd4d49] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: 1;
    justify-content: flex-end;
    min-width: 0;
    padding: 0 1rem;
}

.footer-progress-title[b-e43hkd4d49] {
    font-weight: 600;
    white-space: nowrap;
}

/* Eigener Bar (statt DxProgressBar): kontrastiert sicher gegen den Footer-
   Hintergrund (Fluent-Theme primary surface — kann je nach Theme blau oder
   rust sein). Track = halbtransparentes Weiß, Fill = Fluent-Warning-Amber. */
.footer-progress-meter[b-e43hkd4d49] {
    position: relative;
    width: 240px;
    height: 14px;
    flex-shrink: 0;
    background: rgba(255, 255, 255, 0.22);
    border: 1px solid rgba(255, 255, 255, 0.45);
    border-radius: 7px;
    overflow: hidden;
}

.footer-progress-fill[b-e43hkd4d49] {
    height: 100%;
    background: linear-gradient(90deg,
        var(--dxbl-warning, #ffb900) 0%,
        var(--dxbl-warning-hover, #ffc83d) 100%);
    transition: width 200ms ease-out;
    border-radius: inherit;
    box-shadow: 0 0 6px rgba(255, 200, 61, 0.55);
}

.footer-progress-percent[b-e43hkd4d49] {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 0.72rem;
    font-weight: 700;
    color: #1a1a1a;
    text-shadow: 0 0 2px rgba(255, 255, 255, 0.6);
    pointer-events: none;
    line-height: 1;
}

.footer-progress-text[b-e43hkd4d49] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    opacity: 0.95;
    max-width: 24rem;
}

.footer-progress-error[b-e43hkd4d49] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: 1;
    justify-content: flex-end;
    color: #fff3a5;
}

/* Neutralere Info-Variante für User-Abbrüche — kein Warn-/Error-Look. */
.footer-progress-info[b-e43hkd4d49] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: 1;
    justify-content: flex-end;
    color: rgba(255, 255, 255, 0.92);
    font-style: italic;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
.dx-page[b-87de77c5bv] {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100vh;
    overflow: hidden;
}

main[b-87de77c5bv] {
    flex: 1;
    margin-left: 0.5rem;
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.dx-content[b-87de77c5bv] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.dx-sidebar[b-87de77c5bv] {
    background-image: linear-gradient(180deg, var(--dxds-color-surface-primary-default-rest, #006bb7) 0%, var(--dxds-color-surface-primary-subdued-rest, #3a0647) 70%);
    height: 100%;
}

.dx-top-row[b-87de77c5bv] {
    background-color: var(--dxds-color-surface-primary-default-rest, #0F6CBD);
    border-bottom: 1px solid var(--dxds-color-surface-primary-default-rest, #0F6CBD);
    justify-content: flex-end;
    height: 3.0rem;
    display: flex;
    align-items: center;
    color: white;
}

    .dx-top-row[b-87de77c5bv]  a, .dx-top-row[b-87de77c5bv]  .btn-link {
        white-space: nowrap;
        margin-left: 0.5rem;
        text-decoration: none;
    }

    .dx-top-row[b-87de77c5bv]  a:hover, .dx-top-row[b-87de77c5bv]  .btn-link:hover {
        text-decoration: underline;
    }

    .dx-top-row[b-87de77c5bv]  a:first-child {
        overflow: hidden;
        text-overflow: ellipsis;
    }

@media (max-width: 641px) {
    .dx-top-row[b-87de77c5bv] {
        justify-content: space-between;
    }

    .dx-top-row[b-87de77c5bv]  a, .dx-top-row[b-87de77c5bv]  .btn-link {
        margin-left: 0;
    }
}

@media (min-width: 641px) {
    .dx-top-row[b-87de77c5bv] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

    .dx-top-row.auth[b-87de77c5bv]  a:first-child {
        flex: 1;
        text-align: right;
        width: 0;
    }
}

#blazor-error-ui[b-87de77c5bv] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dx-dismiss[b-87de77c5bv] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/TopBar.razor.rz.scp.css */
.dx-topbar-header[b-ifwtj8m0yz] {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    /* padding-left: 0.5rem; */
    padding-right: 0.5rem;
}

.dx-topbar-brand[b-ifwtj8m0yz] {
    font-size: 1.1rem;
    font-weight: var(--dxds-font-weight-caption-stronger);
    color: var(--dxds-color-content-neutral-default-inverted-rest);
    text-decoration: none;
    flex-grow: 1;
    text-align: left;
    /*margin-left: 2.5rem; !* Balance the toggler width on the right *!*/
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.user-avatar-btn[b-ifwtj8m0yz] {
    background: none;
    border: 2px solid rgba(255, 255, 255, 0.6);
    border-radius: 50%;
    width: 30px;
    height: 30px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    margin-left: 0.5rem;
    margin-right: 0.5rem;
    transition: background-color 0.2s;
}

.user-avatar-btn:hover[b-ifwtj8m0yz] {
    background-color: rgba(255, 255, 255, 0.15);
}

.user-avatar-loggedout[b-ifwtj8m0yz] {
    border-color: rgba(255, 255, 255, 0.3);
    opacity: 0.6;
}

.user-avatar-loggedout:hover[b-ifwtj8m0yz] {
    opacity: 0.9;
}

[b-ifwtj8m0yz] .topbar-switcher {
    margin-right: 0.25rem;
    color: var(--dxds-color-content-neutral-default-inverted-rest);
}

[b-ifwtj8m0yz] .topbar-switcher .dxbl-btn {
    color: rgba(255, 255, 255, 0.85);
}

[b-ifwtj8m0yz] .topbar-switcher .dxbl-btn:hover {
    background-color: rgba(255, 255, 255, 0.15);
    color: white;
}


/* /Components/Pages/Home.razor.rz.scp.css */
.tabmanager-page[b-3uogkcchqw] {
    height: 100%;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
/* /Components/Shared/TreeNode.razor.rz.scp.css */
.tree-node[b-klehbh9mta] {
    display: flex;
    align-items: center;
    padding: 0.3rem 0.4rem;
    cursor: pointer;
    font-size: 0.8rem;
    border-radius: 4px;
    gap: 0.3rem;
    white-space: nowrap;
    overflow: hidden;
}

.tree-node:hover[b-klehbh9mta] {
    background-color: var(--dxds-color-surface-primary-subdued-hovered);
}

.tree-node.expanded[b-klehbh9mta] {
    background-color: var(--dxds-color-surface-primary-deep-active);
}

.tree-node.active[b-klehbh9mta] {
    background-color: var(--dxds-color-surface-primary-deep-selected);
    font-weight: 700;
}

.tree-icon[b-klehbh9mta] {
    flex-shrink: 0;
    width: 0.8rem;
    font-size: 0.7rem;
    text-align: center;
}

.level-parent[b-klehbh9mta] {
    font-weight: 700;
}

.level-branch[b-klehbh9mta] {
    font-weight: 700;
}

.level-leaf[b-klehbh9mta] {
    font-weight: 400;
    cursor: default;
}

.level-leaf:hover[b-klehbh9mta] {
    background-color: var(--dxds-color-surface-primary-subdued-hovered);
}


/* /Components/Shared/TreeView.razor.rz.scp.css */
.tree-view[b-wntwa8nlq8] {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    min-height: 0;
}

.tree-root[b-wntwa8nlq8] {
    list-style: none;
    margin: 0;
    padding: 0;
}
