/*
============================================================
  OFIRA – BOOTSTRAP-BRÜCKE
  Bootstrap 5.3 bleibt für JavaScript-Komponenten (Modal,
  Dropdown, Tooltip, Popover, Tab, Collapse), Grid und das
  Formular-Grundgerüst im Einsatz. Diese Datei setzt
  ausschließlich Bootstraps CSS-Variablen auf OFIRA-Tokens,
  damit alles Verbliebene aus demselben System gestaltet wird.
  Geladen direkt nach bootstrap.min.css und design-system.css.
============================================================
*/

/* --- Global --- */
:root,
[data-bs-theme] {
  --bs-font-sans-serif:     var(--font-family-base);
  --bs-font-monospace:      var(--font-family-mono);
  --bs-body-font-family:    var(--font-family-base);
  --bs-body-font-size:      var(--type-body-size);
  --bs-body-font-weight:    var(--font-weight-normal);
  --bs-body-line-height:    var(--type-body-lh);
  --bs-body-color:          var(--text-body);
  --bs-body-bg:             var(--surface-page);
  --bs-emphasis-color:      var(--text-heading);
  --bs-secondary-color:     var(--text-muted);
  --bs-tertiary-color:      var(--text-disabled);
  --bs-secondary-bg:        var(--surface-sunken);
  --bs-tertiary-bg:         var(--surface-page);
  --bs-heading-color:       var(--text-heading);
  --bs-link-color:          var(--text-link);
  --bs-link-hover-color:    var(--text-link-hover);
  --bs-border-width:        var(--border-width);
  --bs-border-color:        var(--border-default);
  --bs-border-color-translucent: var(--border-default);
  --bs-border-radius:       var(--radius-md);
  --bs-border-radius-sm:    var(--radius-control);
  --bs-border-radius-lg:    var(--radius-lg);
  --bs-border-radius-xl:    var(--radius-xl);
  --bs-border-radius-xxl:   var(--radius-2xl);
  --bs-border-radius-pill:  var(--radius-full);
  --bs-box-shadow:          var(--shadow-md);
  --bs-box-shadow-sm:       var(--shadow-sm);
  --bs-box-shadow-lg:       var(--shadow-lg);
  --bs-box-shadow-inset:    var(--shadow-inset);
  --bs-focus-ring-width:    var(--focus-ring-width);
  --bs-focus-ring-color:    color-mix(in srgb, var(--focus-outline-color) 25%, transparent);
  --bs-form-valid-color:         var(--status-success-text);
  --bs-form-valid-border-color:  var(--status-success-solid);
  --bs-form-invalid-color:       var(--status-danger-text);
  --bs-form-invalid-border-color: var(--status-danger-solid);
  --bs-highlight-bg:        var(--status-warning-surface);
  --bs-code-color:          var(--status-purple-text);

  /* Bootstraps Themenfarben auf die OFIRA-Skalen. Die RGB-Tripel
     entsprechen exakt den Stufen 600 bzw. den Neutraltönen und werden
     von Utilities wie .bg-primary oder .link-primary benötigt. */
  --bs-primary:       var(--color-primary-600);
  --bs-secondary:     var(--color-neutral-500);
  --bs-success:       var(--color-success-600);
  --bs-info:          var(--color-info-600);
  --bs-warning:       var(--color-warning-600);
  --bs-danger:        var(--color-danger-600);
  --bs-light:         var(--color-neutral-100);
  --bs-dark:          var(--color-neutral-900);
  --bs-primary-rgb:   37, 99, 235;
  --bs-secondary-rgb: 100, 116, 139;
  --bs-success-rgb:   22, 163, 74;
  --bs-info-rgb:      2, 132, 199;
  --bs-warning-rgb:   255, 156, 13;
  --bs-danger-rgb:    220, 38, 38;
  --bs-light-rgb:     241, 245, 249;
  --bs-dark-rgb:      15, 23, 42;
  --bs-primary-text-emphasis: var(--status-primary-text);
  --bs-success-text-emphasis: var(--status-success-text);
  --bs-warning-text-emphasis: var(--status-warning-text);
  --bs-danger-text-emphasis:  var(--status-danger-text);
  --bs-info-text-emphasis:    var(--status-info-text);
  --bs-primary-bg-subtle: var(--status-primary-surface);
  --bs-success-bg-subtle: var(--status-success-surface);
  --bs-warning-bg-subtle: var(--status-warning-surface);
  --bs-danger-bg-subtle:  var(--status-danger-surface);
  --bs-info-bg-subtle:    var(--status-info-surface);
}

/* --- Buttons: Grundmaße (Varianten in components.css) --- */
.btn {
  --bs-btn-padding-x:     var(--btn-padding-x-md);
  --bs-btn-padding-y:     0;
  --bs-btn-font-family:   var(--font-family-base);
  --bs-btn-font-size:     var(--btn-font-size-md);
  --bs-btn-font-weight:   var(--font-weight-medium);
  --bs-btn-line-height:   var(--control-line-height);
  --bs-btn-border-width:  var(--border-width);
  --bs-btn-border-radius: var(--btn-radius);
  --bs-btn-box-shadow:    none;
  --bs-btn-focus-box-shadow: none;
  --bs-btn-disabled-opacity: var(--opacity-40);
}
.btn-sm,
.btn-group-sm > .btn {
  --bs-btn-padding-x:     var(--btn-padding-x-sm);
  --bs-btn-font-size:     var(--btn-font-size-sm);
  --bs-btn-border-radius: var(--btn-radius);
}
.btn-lg,
.btn-group-lg > .btn {
  --bs-btn-padding-x:     var(--btn-padding-x-lg);
  --bs-btn-font-size:     var(--btn-font-size-lg);
  --bs-btn-border-radius: var(--btn-radius);
}
.btn-link {
  --bs-btn-color:        var(--text-link);
  --bs-btn-hover-color:  var(--text-link-hover);
  --bs-btn-active-color: var(--text-link-hover);
  --bs-btn-disabled-color: var(--text-disabled);
}

/* --- Button-Varianten aus Bootstrap auf OFIRA-Tokens ---
   Primär, Sekundär, Ghost, Gefahr und Erfolg sind in components.css
   gestaltet; die übrigen Bootstrap-Varianten folgen denselben Rollen. */
.btn-warning {
  --bs-btn-color: var(--text-on-warning);
  --bs-btn-bg: var(--status-warning-solid);
  --bs-btn-border-color: var(--status-warning-solid);
  --bs-btn-hover-color: var(--text-on-warning);
  --bs-btn-hover-bg: var(--status-warning-bright);
  --bs-btn-hover-border-color: var(--status-warning-bright);
  --bs-btn-active-color: var(--text-on-warning);
  --bs-btn-active-bg: var(--status-warning-bright);
  --bs-btn-active-border-color: var(--status-warning-bright);
  --bs-btn-disabled-color: var(--text-on-warning);
  --bs-btn-disabled-bg: var(--status-warning-solid);
  --bs-btn-disabled-border-color: var(--status-warning-solid);
}
.btn-info {
  --bs-btn-color: var(--text-on-info);
  --bs-btn-bg: var(--status-info-strong);
  --bs-btn-border-color: var(--status-info-strong);
  --bs-btn-hover-color: var(--text-on-info);
  --bs-btn-hover-bg: var(--status-info-solid);
  --bs-btn-hover-border-color: var(--status-info-solid);
  --bs-btn-active-color: var(--text-on-info);
  --bs-btn-active-bg: var(--status-info-solid);
  --bs-btn-active-border-color: var(--status-info-solid);
  --bs-btn-disabled-color: var(--text-on-info);
  --bs-btn-disabled-bg: var(--status-info-strong);
  --bs-btn-disabled-border-color: var(--status-info-strong);
}
.btn-light {
  --bs-btn-color: var(--text-body);
  --bs-btn-bg: var(--surface-sunken);
  --bs-btn-border-color: var(--border-default);
  --bs-btn-hover-color: var(--text-heading);
  --bs-btn-hover-bg: var(--surface-muted);
  --bs-btn-hover-border-color: var(--border-strong);
  --bs-btn-active-color: var(--text-heading);
  --bs-btn-active-bg: var(--surface-muted);
  --bs-btn-active-border-color: var(--border-strong);
}
.btn-dark {
  --bs-btn-color: var(--text-inverse);
  --bs-btn-bg: var(--surface-inverse);
  --bs-btn-border-color: var(--surface-inverse);
  --bs-btn-hover-color: var(--text-inverse);
  --bs-btn-hover-bg: var(--text-strong);
  --bs-btn-hover-border-color: var(--text-strong);
  --bs-btn-active-color: var(--text-inverse);
  --bs-btn-active-bg: var(--text-strong);
  --bs-btn-active-border-color: var(--text-strong);
}
.btn-outline-primary {
  --bs-btn-color: var(--text-link);
  --bs-btn-border-color: var(--accent);
  --bs-btn-hover-color: var(--text-on-primary);
  --bs-btn-hover-bg: var(--accent);
  --bs-btn-hover-border-color: var(--accent);
  --bs-btn-active-color: var(--text-on-primary);
  --bs-btn-active-bg: var(--accent-hover);
  --bs-btn-active-border-color: var(--accent-hover);
  --bs-btn-disabled-color: var(--text-link);
  --bs-btn-disabled-border-color: var(--accent);
}
.btn-outline-secondary {
  --bs-btn-color: var(--text-label);
  --bs-btn-border-color: var(--border-strong);
  --bs-btn-hover-color: var(--text-heading);
  --bs-btn-hover-bg: var(--surface-hover);
  --bs-btn-hover-border-color: var(--border-control);
  --bs-btn-active-color: var(--text-heading);
  --bs-btn-active-bg: var(--surface-pressed);
  --bs-btn-active-border-color: var(--border-control);
  --bs-btn-disabled-color: var(--text-disabled);
  --bs-btn-disabled-border-color: var(--border-default);
}
.btn-outline-success {
  --bs-btn-color: var(--status-success-text);
  --bs-btn-border-color: var(--status-success-solid);
  --bs-btn-hover-color: var(--text-on-success);
  --bs-btn-hover-bg: var(--status-success-strong);
  --bs-btn-hover-border-color: var(--status-success-strong);
  --bs-btn-active-color: var(--text-on-success);
  --bs-btn-active-bg: var(--status-success-deep);
  --bs-btn-active-border-color: var(--status-success-deep);
  --bs-btn-disabled-color: var(--status-success-text);
  --bs-btn-disabled-border-color: var(--status-success-solid);
}
.btn-outline-danger {
  --bs-btn-color: var(--status-danger-text);
  --bs-btn-border-color: var(--status-danger-solid);
  --bs-btn-hover-color: var(--text-on-danger);
  --bs-btn-hover-bg: var(--status-danger-solid);
  --bs-btn-hover-border-color: var(--status-danger-solid);
  --bs-btn-active-color: var(--text-on-danger);
  --bs-btn-active-bg: var(--status-danger-deep);
  --bs-btn-active-border-color: var(--status-danger-deep);
  --bs-btn-disabled-color: var(--status-danger-text);
  --bs-btn-disabled-border-color: var(--status-danger-solid);
}
.btn-outline-warning {
  --bs-btn-color: var(--status-warning-text);
  --bs-btn-border-color: var(--status-warning-solid);
  --bs-btn-hover-color: var(--text-on-warning);
  --bs-btn-hover-bg: var(--status-warning-solid);
  --bs-btn-hover-border-color: var(--status-warning-solid);
  --bs-btn-active-color: var(--text-on-warning);
  --bs-btn-active-bg: var(--status-warning-bright);
  --bs-btn-active-border-color: var(--status-warning-bright);
  --bs-btn-disabled-color: var(--status-warning-text);
  --bs-btn-disabled-border-color: var(--status-warning-solid);
}
.btn-outline-info {
  --bs-btn-color: var(--status-info-text);
  --bs-btn-border-color: var(--status-info-solid);
  --bs-btn-hover-color: var(--text-on-info);
  --bs-btn-hover-bg: var(--status-info-strong);
  --bs-btn-hover-border-color: var(--status-info-strong);
  --bs-btn-active-color: var(--text-on-info);
  --bs-btn-active-bg: var(--status-info-strong);
  --bs-btn-active-border-color: var(--status-info-strong);
}
.btn-outline-dark {
  --bs-btn-color: var(--text-heading);
  --bs-btn-border-color: var(--text-label-strong);
  --bs-btn-hover-color: var(--text-inverse);
  --bs-btn-hover-bg: var(--surface-inverse);
  --bs-btn-hover-border-color: var(--surface-inverse);
  --bs-btn-active-color: var(--text-inverse);
  --bs-btn-active-bg: var(--surface-inverse);
  --bs-btn-active-border-color: var(--surface-inverse);
}

/* --- Formulare --- */
.form-control,
.form-select {
  border-radius: var(--form-radius);
}
.form-control-sm,
.form-select-sm {
  border-radius: var(--form-radius);
}
.form-check-input {
  --bs-form-check-bg: var(--form-bg);
  border-color: var(--form-border);
}
.form-check-input:checked {
  background-color: var(--accent);
  border-color:     var(--accent);
}
.form-switch .form-check-input:not(:checked) {
  --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2364748b'/%3e%3c/svg%3e");
}
.input-group-text {
  background-color: var(--surface-sunken);
  border-color:     var(--form-border);
  color:            var(--text-muted);
  font-size:        var(--form-font-size);
  border-radius:    var(--form-radius);
}
.form-text {
  color:     var(--form-helper-color);
  font-size: var(--font-size-xs);
}
.invalid-feedback { color: var(--status-danger-text); font-size: var(--font-size-xs); }
.valid-feedback   { color: var(--status-success-text); font-size: var(--font-size-xs); }

/* --- Karten --- */
.card {
  --bs-card-spacer-y:      var(--space-4);
  --bs-card-spacer-x:      var(--space-5);
  --bs-card-title-spacer-y: var(--space-2);
  --bs-card-border-width:  var(--border-width);
  --bs-card-border-color:  var(--border-subtle);
  --bs-card-border-radius: var(--card-radius);
  --bs-card-inner-border-radius: calc(var(--card-radius) - var(--border-width));
  --bs-card-cap-padding-y: var(--space-3);
  --bs-card-cap-padding-x: var(--space-5);
  --bs-card-cap-bg:        transparent;
  --bs-card-cap-color:     var(--text-heading);
  --bs-card-color:         var(--text-body);
  --bs-card-bg:            var(--surface-card);
}

/* --- Modals --- */
.modal {
  --bs-modal-padding:       var(--space-6);
  --bs-modal-margin:        var(--space-4);
  --bs-modal-color:         var(--text-body);
  --bs-modal-bg:            var(--surface-card);
  --bs-modal-border-color:  var(--border-subtle);
  --bs-modal-border-width:  var(--border-width);
  --bs-modal-border-radius: var(--modal-radius);
  --bs-modal-box-shadow:    var(--shadow-xl);
  --bs-modal-inner-border-radius: calc(var(--modal-radius) - var(--border-width));
  --bs-modal-header-padding: var(--space-4) var(--space-6);
  --bs-modal-header-border-color: var(--border-subtle);
  --bs-modal-footer-border-color: var(--border-subtle);
  --bs-modal-footer-gap:    var(--space-2);
  --bs-modal-title-line-height: var(--type-title-3-lh);
}
.modal-backdrop {
  --bs-backdrop-bg:      var(--color-neutral-900);
  --bs-backdrop-opacity: 0.5;
}
.modal-title {
  font-size:      var(--type-title-3-size);
  font-weight:    var(--type-title-3-weight);
  letter-spacing: var(--type-title-3-tracking);
  color:          var(--text-heading);
}

/* --- Dropdowns --- */
.dropdown-menu {
  --bs-dropdown-zindex:        var(--z-dropdown);
  --bs-dropdown-min-width:     12rem;
  --bs-dropdown-padding-x:     var(--space-1);
  --bs-dropdown-padding-y:     var(--space-1);
  --bs-dropdown-spacer:        var(--space-1);
  --bs-dropdown-font-size:     var(--font-size-sm);
  --bs-dropdown-color:         var(--text-body);
  --bs-dropdown-bg:            var(--surface-elevated);
  --bs-dropdown-border-color:  var(--border-default);
  --bs-dropdown-border-radius: var(--menu-radius);
  --bs-dropdown-border-width:  var(--border-width);
  --bs-dropdown-inner-border-radius: calc(var(--menu-radius) - var(--border-width));
  --bs-dropdown-divider-bg:    var(--border-subtle);
  --bs-dropdown-divider-margin-y: var(--space-1);
  --bs-dropdown-box-shadow:    var(--shadow-lg);
  --bs-dropdown-link-color:    var(--text-body);
  --bs-dropdown-link-hover-color: var(--text-heading);
  --bs-dropdown-link-hover-bg: var(--surface-hover);
  --bs-dropdown-link-active-color: var(--text-on-primary);
  --bs-dropdown-link-active-bg: var(--accent);
  --bs-dropdown-link-disabled-color: var(--text-disabled);
  --bs-dropdown-item-padding-x: var(--space-3);
  --bs-dropdown-item-padding-y: var(--space-1-5);
  --bs-dropdown-header-color:  var(--text-muted);
  --bs-dropdown-header-padding-x: var(--space-3);
  --bs-dropdown-header-padding-y: var(--space-1);
}
.dropdown-item {
  border-radius: var(--radius-control);
}

/* --- Tooltips & Popovers --- */
.tooltip {
  --bs-tooltip-zindex:        var(--z-tooltip);
  --bs-tooltip-max-width:     18rem;
  --bs-tooltip-padding-x:     var(--space-2);
  --bs-tooltip-padding-y:     var(--space-1);
  --bs-tooltip-font-size:     var(--font-size-xs);
  --bs-tooltip-color:         var(--text-inverse);
  --bs-tooltip-bg:            var(--surface-tooltip);
  --bs-tooltip-border-radius: var(--tooltip-radius);
  --bs-tooltip-opacity:       1;
}
.popover {
  --bs-popover-zindex:        var(--z-popover);
  --bs-popover-font-size:     var(--font-size-sm);
  --bs-popover-bg:            var(--surface-elevated);
  --bs-popover-border-color:  var(--border-default);
  --bs-popover-border-radius: var(--menu-radius);
  --bs-popover-inner-border-radius: calc(var(--menu-radius) - var(--border-width));
  --bs-popover-box-shadow:    var(--shadow-lg);
  --bs-popover-header-bg:     var(--surface-sunken);
  --bs-popover-header-color:  var(--text-heading);
  --bs-popover-body-color:    var(--text-body);
  --bs-popover-header-padding-x: var(--space-3);
  --bs-popover-header-padding-y: var(--space-2);
  --bs-popover-body-padding-x: var(--space-3);
  --bs-popover-body-padding-y: var(--space-2);
}

/* --- Navigation, Tabs --- */
.nav {
  --bs-nav-link-padding-x:   var(--space-3);
  --bs-nav-link-padding-y:   var(--space-2);
  --bs-nav-link-font-size:   var(--font-size-sm);
  --bs-nav-link-font-weight: var(--font-weight-medium);
  --bs-nav-link-color:       var(--text-label);
  --bs-nav-link-hover-color: var(--text-heading);
  --bs-nav-link-disabled-color: var(--text-disabled);
}
.nav-tabs {
  --bs-nav-tabs-border-width:  var(--border-width);
  --bs-nav-tabs-border-color:  var(--border-default);
  --bs-nav-tabs-border-radius: var(--radius-md);
  --bs-nav-tabs-link-hover-border-color: var(--border-subtle) var(--border-subtle) var(--border-default);
  --bs-nav-tabs-link-active-color: var(--text-heading);
  --bs-nav-tabs-link-active-bg: var(--surface-card);
  --bs-nav-tabs-link-active-border-color: var(--border-default) var(--border-default) var(--surface-card);
}
.nav-pills {
  --bs-nav-pills-border-radius: var(--radius-control);
  --bs-nav-pills-link-active-color: var(--text-on-primary);
  --bs-nav-pills-link-active-bg: var(--accent);
}

/* --- Tabellen --- */
.table {
  --bs-table-color:        var(--text-body);
  --bs-table-bg:           transparent;
  --bs-table-border-color: var(--table-divider-color);
  --bs-table-striped-bg:   var(--surface-hover);
  --bs-table-striped-color: var(--text-body);
  --bs-table-hover-bg:     var(--table-row-hover-bg);
  --bs-table-hover-color:  var(--text-body);
  --bs-table-active-bg:    var(--surface-selected);
  --bs-table-active-color: var(--text-body);
}
.table-light {
  --bs-table-color:        var(--text-label);
  --bs-table-bg:           var(--surface-sunken);
  --bs-table-border-color: var(--table-divider-color);
}

/* --- Listen-Gruppen --- */
.list-group {
  --bs-list-group-color:         var(--text-body);
  --bs-list-group-bg:            var(--surface-card);
  --bs-list-group-border-color:  var(--border-subtle);
  --bs-list-group-border-width:  var(--border-width);
  --bs-list-group-border-radius: var(--card-radius);
  --bs-list-group-item-padding-x: var(--space-4);
  --bs-list-group-item-padding-y: var(--space-2-5);
  --bs-list-group-action-color:  var(--text-body);
  --bs-list-group-action-hover-color: var(--text-heading);
  --bs-list-group-action-hover-bg: var(--surface-hover);
  --bs-list-group-action-active-color: var(--text-heading);
  --bs-list-group-action-active-bg: var(--surface-pressed);
  --bs-list-group-active-color:  var(--text-on-primary);
  --bs-list-group-active-bg:     var(--accent);
  --bs-list-group-active-border-color: var(--accent);
  --bs-list-group-disabled-color: var(--text-disabled);
}

/* --- Seitennummerierung --- */
.pagination {
  --bs-pagination-padding-x:  var(--space-3);
  --bs-pagination-padding-y:  var(--space-1-5);
  --bs-pagination-font-size:  var(--font-size-sm);
  --bs-pagination-color:      var(--text-label);
  --bs-pagination-bg:         var(--surface-card);
  --bs-pagination-border-color: var(--border-default);
  --bs-pagination-border-radius: var(--radius-control);
  --bs-pagination-hover-color: var(--text-heading);
  --bs-pagination-hover-bg:   var(--surface-hover);
  --bs-pagination-hover-border-color: var(--border-default);
  --bs-pagination-focus-color: var(--text-heading);
  --bs-pagination-focus-bg:   var(--surface-hover);
  --bs-pagination-focus-box-shadow: var(--focus-ring);
  --bs-pagination-active-color: var(--text-on-primary);
  --bs-pagination-active-bg:  var(--accent);
  --bs-pagination-active-border-color: var(--accent);
  --bs-pagination-disabled-color: var(--text-disabled);
  --bs-pagination-disabled-bg: var(--surface-card);
  --bs-pagination-disabled-border-color: var(--border-subtle);
}
.pagination-sm {
  --bs-pagination-padding-x: var(--space-2);
  --bs-pagination-padding-y: var(--space-1);
  --bs-pagination-font-size: var(--font-size-xs);
  --bs-pagination-border-radius: var(--radius-control);
}

/* --- Fortschritt, Spinner, Badges, Schließen-Button --- */
.progress,
.progress-stacked {
  --bs-progress-height:        var(--space-1-5);
  --bs-progress-font-size:     var(--font-size-2xs);
  --bs-progress-bg:            var(--surface-sunken);
  --bs-progress-border-radius: var(--radius-full);
  --bs-progress-bar-color:     var(--text-on-primary);
  --bs-progress-bar-bg:        var(--accent);
}
.spinner-border-sm {
  --bs-spinner-border-width: var(--border-width-thick);
}
.badge {
  --bs-badge-padding-x:     var(--pill-padding-x);
  --bs-badge-padding-y:     var(--pill-padding-y);
  --bs-badge-font-size:     var(--pill-font-size);
  --bs-badge-font-weight:   var(--pill-font-weight);
  --bs-badge-border-radius: var(--pill-radius);
}
.btn-close {
  --bs-btn-close-opacity:       var(--opacity-60);
  --bs-btn-close-hover-opacity: var(--opacity-100);
  --bs-btn-close-focus-shadow:  var(--focus-ring);
}
[data-theme="dark"] .btn-close {
  filter: invert(1) grayscale(100%) brightness(200%);
}

/* --- Alerts: weiche Statusflächen --- */
.alert {
  --bs-alert-padding-x:     var(--space-4);
  --bs-alert-padding-y:     var(--space-3);
  --bs-alert-margin-bottom: var(--space-4);
  --bs-alert-border-radius: var(--radius-md);
  --bs-alert-link-color:    inherit;
}
.alert-success   { --bs-alert-color: var(--status-success-on-surface); --bs-alert-bg: var(--status-success-surface); --bs-alert-border-color: color-mix(in srgb, var(--status-success-solid) 30%, transparent); }
.alert-warning   { --bs-alert-color: var(--status-warning-on-surface); --bs-alert-bg: var(--status-warning-surface); --bs-alert-border-color: color-mix(in srgb, var(--status-warning-solid) 30%, transparent); }
.alert-danger    { --bs-alert-color: var(--status-danger-on-surface);  --bs-alert-bg: var(--status-danger-surface);  --bs-alert-border-color: color-mix(in srgb, var(--status-danger-solid) 30%, transparent); }
.alert-info      { --bs-alert-color: var(--status-info-on-surface);    --bs-alert-bg: var(--status-info-surface);    --bs-alert-border-color: color-mix(in srgb, var(--status-info-solid) 30%, transparent); }
.alert-primary   { --bs-alert-color: var(--status-primary-on-surface); --bs-alert-bg: var(--status-primary-surface); --bs-alert-border-color: color-mix(in srgb, var(--status-primary-solid) 30%, transparent); }
.alert-secondary,
.alert-light     { --bs-alert-color: var(--text-label); --bs-alert-bg: var(--status-neutral-surface); --bs-alert-border-color: var(--border-default); }

/* --- Farb-Utilities auf Status-Text-Tokens --- */
.text-success   { color: var(--status-success-text) !important; }
.text-warning   { color: var(--status-warning-text) !important; }
.text-danger    { color: var(--status-danger-text) !important; }
.text-info      { color: var(--status-info-text) !important; }
.text-primary   { color: var(--text-link) !important; }
.text-secondary { color: var(--text-muted) !important; }
.text-muted     { color: var(--text-muted) !important; }
.text-body      { color: var(--text-body) !important; }
.text-dark      { color: var(--text-heading) !important; }
.text-body-secondary { color: var(--text-muted) !important; }

.bg-light       { background-color: var(--surface-sunken) !important; }
.bg-white       { background-color: var(--surface-card) !important; }
.bg-body        { background-color: var(--surface-page) !important; }
.bg-body-tertiary,
.bg-body-secondary { background-color: var(--surface-sunken) !important; }
.border-secondary { border-color: var(--border-strong) !important; }
.border-light   { border-color: var(--border-subtle) !important; }
.border-primary { border-color: var(--accent) !important; }
.border-success { border-color: var(--status-success-solid) !important; }
.border-warning { border-color: var(--status-warning-solid) !important; }
.border-danger  { border-color: var(--status-danger-solid) !important; }
.border-info    { border-color: var(--status-info-solid) !important; }

.font-monospace { font-family: var(--font-family-mono) !important; }
.fw-semibold    { font-weight: var(--font-weight-semibold) !important; }
.fw-bold        { font-weight: var(--font-weight-bold) !important; }
.fw-medium      { font-weight: var(--font-weight-medium) !important; }
.fw-normal      { font-weight: var(--font-weight-normal) !important; }
.fs-1           { font-size: var(--font-size-3xl) !important; }
.fs-2           { font-size: var(--font-size-28) !important; }
.fs-3           { font-size: var(--font-size-2xl) !important; }
.fs-4           { font-size: var(--font-size-xl) !important; }
.fs-5           { font-size: var(--font-size-17) !important; }
.fs-6           { font-size: var(--font-size-sm) !important; }
.lh-1           { line-height: var(--line-height-none) !important; }
.lh-sm          { line-height: var(--line-height-tight) !important; }
.lh-base        { line-height: var(--line-height-normal) !important; }
