/*
  framework.css — die Oberflaeche von FeedbackSchool, ohne CSS-Framework.

  Diese Datei ersetzt Bootstrap 5.3. Die Klassennamen sind absichtlich dieselben
  geblieben (.btn, .card, .form-control, .mb-3, .col-md-6 …): das Markup in ueber
  260 Razor-Dateien bleibt damit unveraendert, waehrend Groessen, Abstaende und
  Farben von hier kommen statt von Bootstrap. Bootstrap-JS war nie im Einsatz —
  Dialoge, Klapplisten und Ziehharmonikas schaltet Blazor selbst ueber Klassen.

  Die Gestalt folgt dem Adminbereich von AboutRoute (dessen admin.css), die Farben
  sind FeedbackSchool. Der Unterschied zum vorherigen Zustand liegt fast
  ausschliesslich in den Proportionen:

    - EINE Stellschraube fuer die Schriftgroesse: html { font-size } in Prozent,
      damit die Browsereinstellung des Betrachters erhalten bleibt. Alle Stufen
      haengen als rem daran.
    - Bedienelemente haben EINE Groesse. Die frueheren -lg-Varianten (btn-lg,
      form-control-lg, input-group-lg …) sind bewusst wirkungslos: sie stehen
      ueberall im Markup und wuerden die Basis noch einmal um Faktor 1.25
      vergroessern. Genau das liess die Oberflaeche klotzig wirken.
    - Getoente statt gefuellter Flaechen bei Plaketten und Hinweisen.

  In Komponentenregeln NIE font-size in px setzen — immer eine Stufe der Skala,
  sonst bleibt genau diese eine Groesse beim Verstellen der Basis stehen.
*/

/* ============================================================================
   1. Gestaltungsvariablen
   ============================================================================ */

:root {
    /* ---- Typografie ---------------------------------------------------- */
    --fs-text-xs:   0.75rem;
    --fs-text-sm:   0.875rem;
    --fs-text-base: 1rem;
    --fs-text-md:   1.125rem;
    --fs-text-lg:   1.25rem;
    --fs-text-xl:   1.5rem;
    --fs-text-2xl:  1.75rem;
    --fs-text-3xl:  2rem;

    /* Plus Jakarta Sans liegt selbst gehostet unter wwwroot/fonts (DSGVO, siehe
       fonts.css) und bleibt die Hausschrift — ruhiger und offener als das
       fruehere Helvetica Neue aus app.css. */
    --fs-font: 'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
    --fs-font-mono: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;

    --fs-line: 1.5;

    /* ---- Geometrie ------------------------------------------------------ */
    /* Innenabstand der Bedienelemente in em: sie wachsen mit ihrer eigenen
       Schrift, nicht mit der Basis — ein btn-sm bleibt dadurch proportional. */
    --fs-control-padding-y: 0.6em;
    --fs-control-padding-x: 0.75em;
    --fs-btn-padding-x: 1.1em;

    --fs-focus-ring: 0 0 0 3px rgba(var(--primary-rgb), 0.15);

    /* ---- Rollenfarben (auf die Palette aus _colors.css gemappt) ---------- */
    --fs-bg: var(--app-bg);
    --fs-surface: var(--surface);
    --fs-surface-sunk: var(--surface-sunk);
    --fs-border: var(--gray-border-light);
    --fs-border-strong: var(--gray-border-medium);
    --fs-text: var(--gray-dark);
    --fs-text-muted: var(--gray-text-secondary);
    --fs-text-subtle: var(--text-subtle);
}

/* ============================================================================
   2. Vertraeglichkeit: die --bs-*-Variablen, auf die app.css, modern-theme.css,
      runner.css und die 43 komponenteneigenen Stylesheets weiterhin zeigen.
      Sie bleiben erhalten, damit die Ablösung von Bootstrap nicht zugleich ein
      Umschreiben aller uebrigen Stylesheets erzwingt.
   ============================================================================ */

:root {
    --bs-primary: var(--primary);
    --bs-primary-rgb: var(--primary-rgb);
    --bs-primary-light: var(--primary-light);
    --bs-primary-hover: var(--primary-hover);
    --bs-primary-dark: var(--primary-dark);
    --bs-primary-bg-subtle: var(--primary-tint);

    --bs-secondary: var(--secondary);
    --bs-secondary-rgb: var(--secondary-rgb);
    --bs-secondary-bg: var(--fs-surface-sunk);
    --bs-secondary-color: var(--fs-text-muted);

    --bs-success: var(--success);
    --bs-success-rgb: var(--success-rgb);
    --bs-success-bg-subtle: var(--success-tint);

    --bs-danger: var(--danger);
    --bs-danger-rgb: var(--danger-rgb);
    --bs-danger-bg-subtle: var(--danger-tint);

    --bs-warning: var(--warning);
    --bs-warning-rgb: var(--warning-rgb);
    --bs-warning-bg-subtle: var(--warning-tint);
    --bs-warning-border-subtle: #f0d9ae;
    --bs-warning-text-emphasis: var(--warning-dark);

    --bs-info: var(--info);
    --bs-info-rgb: var(--info-rgb);

    --bs-light: var(--fs-surface-sunk);
    --bs-dark: var(--fs-text);
    --bs-white: var(--white);
    --bs-black: var(--black);

    --bs-body-color: var(--fs-text);
    --bs-body-bg: var(--fs-bg);
    --bs-border-color: var(--fs-border);
    --bs-tertiary-bg: var(--fs-surface-sunk);

    --bs-gray-100: #f8f9fa;
    --bs-gray-200: #eef0f2;
    --bs-gray-300: var(--fs-border);
    --bs-gray-500: var(--fs-text-subtle);
    --bs-gray-700: var(--fs-text-muted);

    --bs-link-color: var(--link-color);
    --bs-link-color-rgb: var(--link-color-rgb);
    --bs-link-hover-color: var(--link-hover-color);
    --bs-link-hover-color-rgb: var(--link-hover-color-rgb);

    --bs-table-hover-bg: var(--primary-tint);
    --bs-table-striped-bg: var(--surface-subtle);

    --bs-list-group-color: var(--fs-text);
    --bs-list-group-bg: var(--fs-surface);
    --bs-list-group-active-color: var(--primary-ink);
    --bs-list-group-active-bg: var(--primary);
    --bs-list-group-active-border-color: var(--primary);

    --bs-border-radius: var(--radius-sm);
    --bs-border-radius-lg: var(--radius-md);
    --bs-border-radius-sm: var(--radius-xs);

    --bs-accordion-active-bg: var(--primary-tint);
    --bs-accordion-active-color: var(--primary);
}

/* ============================================================================
   3. Grundlagen
   ============================================================================ */

*,
*::before,
*::after { box-sizing: border-box; }

/* ==== DIE Stellschraube fuer die Schriftgroesse der ganzen Oberflaeche ======

   Alle Stufen oben sind relativ hierzu, eine Aenderung an dieser Zeile skaliert
   also die komplette Anwendung. Bewusst in Prozent und nicht in px oder rem: der
   Wert bezieht sich damit auf die Schriftgroesse, die der Betrachter in seinem
   Browser eingestellt hat. Wer dort groesser stellt, weil er es braucht, bekommt
   hier ebenfalls groesser.

   112.5 % sind bei Browser-Voreinstellung 18px. Vorher standen hier 1.2rem
   (19.2px), und darueber lag flaechendeckend die -lg-Stufe.
   Zu klein? Wert erhoehen. Zu gross? Verringern. Sonst nichts anfassen. */
html {
    font-size: 112.5%;
    /* Android Chrome inflates text it considers desktop-sized ("font boosting"),
       which showed as an oversized legal footer on tablets. The prefixed form is
       the one older Android engines actually honour. */
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

body {
    margin: 0;
    font-family: var(--fs-font);
    font-size: var(--fs-text-base);
    font-weight: 400;
    line-height: var(--fs-line);
    letter-spacing: 0.005em;
    color: var(--fs-text);
    background-color: var(--fs-bg);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-size-adjust: 100%;
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
    margin: 0 0 0.5rem;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: -0.01em;
}

h1 { font-size: var(--fs-text-2xl); }
h2 { font-size: var(--fs-text-xl); }
h3 { font-size: var(--fs-text-lg); }
h4 { font-size: var(--fs-text-md); }
h5 { font-size: var(--fs-text-md); }
h6 { font-size: var(--fs-text-base); }

p { margin: 0 0 1rem; }

ul, ol { margin: 0 0 1rem; padding-left: 2rem; }

a {
    color: var(--bs-link-color);
    text-decoration: none;
}

a:hover { color: var(--bs-link-hover-color); }

hr {
    height: 0;
    margin: 1rem 0;
    border: 0;
    border-top: 1px solid var(--fs-border);
}

code, kbd, samp, pre {
    font-family: var(--fs-font-mono);
    font-size: 0.9em;
}

code { color: inherit; }

pre { margin: 0 0 1rem; overflow: auto; }

small { font-size: 0.875em; }

strong, b { font-weight: 600; }

img, svg { vertical-align: middle; }

table { caption-side: bottom; border-collapse: collapse; }

th { text-align: inherit; }

label { display: inline-block; }

button, input, optgroup, select, textarea {
    margin: 0;
    font-family: inherit;
    font-size: inherit;
    line-height: inherit;
}

button, [type="button"], [type="submit"], [type="reset"] {
    -webkit-appearance: button;
}

button:not(:disabled),
[type="button"]:not(:disabled),
[type="submit"]:not(:disabled) { cursor: pointer; }

textarea { resize: vertical; }

fieldset { min-width: 0; padding: 0; margin: 0; border: 0; }

legend { float: left; width: 100%; padding: 0; margin-bottom: 0.5rem; font-size: var(--fs-text-lg); }

[hidden] { display: none !important; }

::placeholder { color: var(--fs-text-subtle); opacity: 1; }

/* ============================================================================
   4. Raster
   ============================================================================
   Zwoelf Spalten wie gewohnt. Im Projekt sind sie duenn gesaet (rund 150 .row und
   56 .col-md-6), aber wo sie stehen, sollen sie sich verhalten wie bisher. */

.container,
.container-fluid {
    width: 100%;
    padding-right: 0.75rem;
    padding-left: 0.75rem;
    margin-right: auto;
    margin-left: auto;
}

@media (min-width: 576px) { .container { max-width: 540px; } }
@media (min-width: 768px) { .container { max-width: 720px; } }
@media (min-width: 992px) { .container { max-width: 960px; } }
@media (min-width: 1200px) { .container { max-width: 1140px; } }
@media (min-width: 1400px) { .container { max-width: 1320px; } }

.row {
    --fs-gutter-x: 1.5rem;
    --fs-gutter-y: 0;
    display: flex;
    flex-wrap: wrap;
    margin-top: calc(-1 * var(--fs-gutter-y));
    margin-right: calc(-0.5 * var(--fs-gutter-x));
    margin-left: calc(-0.5 * var(--fs-gutter-x));
}

.row > * {
    flex-shrink: 0;
    width: 100%;
    max-width: 100%;
    padding-right: calc(var(--fs-gutter-x) * 0.5);
    padding-left: calc(var(--fs-gutter-x) * 0.5);
    margin-top: var(--fs-gutter-y);
}

.g-0, .gx-0 { --fs-gutter-x: 0; }
.g-0, .gy-0 { --fs-gutter-y: 0; }
.g-1, .gx-1 { --fs-gutter-x: 0.25rem; }
.g-1, .gy-1 { --fs-gutter-y: 0.25rem; }
.g-2, .gx-2 { --fs-gutter-x: 0.5rem; }
.g-2, .gy-2 { --fs-gutter-y: 0.5rem; }
.g-3, .gx-3 { --fs-gutter-x: 1rem; }
.g-3, .gy-3 { --fs-gutter-y: 1rem; }
.g-4, .gx-4 { --fs-gutter-x: 1.5rem; }
.g-4, .gy-4 { --fs-gutter-y: 1.5rem; }
.g-5, .gx-5 { --fs-gutter-x: 3rem; }
.g-5, .gy-5 { --fs-gutter-y: 3rem; }

.col { flex: 1 0 0%; }
.col-auto { flex: 0 0 auto; width: auto; }
.col-1 { flex: 0 0 auto; width: 8.333333%; }
.col-2 { flex: 0 0 auto; width: 16.666667%; }
.col-3 { flex: 0 0 auto; width: 25.0%; }
.col-4 { flex: 0 0 auto; width: 33.333333%; }
.col-5 { flex: 0 0 auto; width: 41.666667%; }
.col-6 { flex: 0 0 auto; width: 50.0%; }
.col-7 { flex: 0 0 auto; width: 58.333333%; }
.col-8 { flex: 0 0 auto; width: 66.666667%; }
.col-9 { flex: 0 0 auto; width: 75.0%; }
.col-10 { flex: 0 0 auto; width: 83.333333%; }
.col-11 { flex: 0 0 auto; width: 91.666667%; }
.col-12 { flex: 0 0 auto; width: 100.0%; }
.row-cols-1 > * { flex: 0 0 auto; width: 100.0%; }
.row-cols-2 > * { flex: 0 0 auto; width: 50.0%; }
.row-cols-3 > * { flex: 0 0 auto; width: 33.333333%; }
.row-cols-4 > * { flex: 0 0 auto; width: 25.0%; }
.row-cols-5 > * { flex: 0 0 auto; width: 20.0%; }
.row-cols-6 > * { flex: 0 0 auto; width: 16.666667%; }
.row-cols-auto > * { flex: 0 0 auto; width: auto; }
.offset-0 { margin-left: 0.0%; }
.offset-1 { margin-left: 8.333333%; }
.offset-2 { margin-left: 16.666667%; }
.offset-3 { margin-left: 25.0%; }
.offset-4 { margin-left: 33.333333%; }
.offset-5 { margin-left: 41.666667%; }
.offset-6 { margin-left: 50.0%; }
.offset-7 { margin-left: 58.333333%; }
.offset-8 { margin-left: 66.666667%; }
.offset-9 { margin-left: 75.0%; }
.offset-10 { margin-left: 83.333333%; }
.offset-11 { margin-left: 91.666667%; }
.offset-12 { margin-left: 100.0%; }

@media (min-width: 576px) {
    .col-sm { flex: 1 0 0%; }
    .col-sm-auto { flex: 0 0 auto; width: auto; }
    .col-sm-1 { flex: 0 0 auto; width: 8.333333%; }
    .col-sm-2 { flex: 0 0 auto; width: 16.666667%; }
    .col-sm-3 { flex: 0 0 auto; width: 25.0%; }
    .col-sm-4 { flex: 0 0 auto; width: 33.333333%; }
    .col-sm-5 { flex: 0 0 auto; width: 41.666667%; }
    .col-sm-6 { flex: 0 0 auto; width: 50.0%; }
    .col-sm-7 { flex: 0 0 auto; width: 58.333333%; }
    .col-sm-8 { flex: 0 0 auto; width: 66.666667%; }
    .col-sm-9 { flex: 0 0 auto; width: 75.0%; }
    .col-sm-10 { flex: 0 0 auto; width: 83.333333%; }
    .col-sm-11 { flex: 0 0 auto; width: 91.666667%; }
    .col-sm-12 { flex: 0 0 auto; width: 100.0%; }
    .row-cols-sm-1 > * { flex: 0 0 auto; width: 100.0%; }
    .row-cols-sm-2 > * { flex: 0 0 auto; width: 50.0%; }
    .row-cols-sm-3 > * { flex: 0 0 auto; width: 33.333333%; }
    .row-cols-sm-4 > * { flex: 0 0 auto; width: 25.0%; }
    .row-cols-sm-5 > * { flex: 0 0 auto; width: 20.0%; }
    .row-cols-sm-6 > * { flex: 0 0 auto; width: 16.666667%; }
    .row-cols-sm-auto > * { flex: 0 0 auto; width: auto; }
    .offset-sm-0 { margin-left: 0.0%; }
    .offset-sm-1 { margin-left: 8.333333%; }
    .offset-sm-2 { margin-left: 16.666667%; }
    .offset-sm-3 { margin-left: 25.0%; }
    .offset-sm-4 { margin-left: 33.333333%; }
    .offset-sm-5 { margin-left: 41.666667%; }
    .offset-sm-6 { margin-left: 50.0%; }
    .offset-sm-7 { margin-left: 58.333333%; }
    .offset-sm-8 { margin-left: 66.666667%; }
    .offset-sm-9 { margin-left: 75.0%; }
    .offset-sm-10 { margin-left: 83.333333%; }
    .offset-sm-11 { margin-left: 91.666667%; }
    .offset-sm-12 { margin-left: 100.0%; }
}

@media (min-width: 768px) {
    .col-md { flex: 1 0 0%; }
    .col-md-auto { flex: 0 0 auto; width: auto; }
    .col-md-1 { flex: 0 0 auto; width: 8.333333%; }
    .col-md-2 { flex: 0 0 auto; width: 16.666667%; }
    .col-md-3 { flex: 0 0 auto; width: 25.0%; }
    .col-md-4 { flex: 0 0 auto; width: 33.333333%; }
    .col-md-5 { flex: 0 0 auto; width: 41.666667%; }
    .col-md-6 { flex: 0 0 auto; width: 50.0%; }
    .col-md-7 { flex: 0 0 auto; width: 58.333333%; }
    .col-md-8 { flex: 0 0 auto; width: 66.666667%; }
    .col-md-9 { flex: 0 0 auto; width: 75.0%; }
    .col-md-10 { flex: 0 0 auto; width: 83.333333%; }
    .col-md-11 { flex: 0 0 auto; width: 91.666667%; }
    .col-md-12 { flex: 0 0 auto; width: 100.0%; }
    .row-cols-md-1 > * { flex: 0 0 auto; width: 100.0%; }
    .row-cols-md-2 > * { flex: 0 0 auto; width: 50.0%; }
    .row-cols-md-3 > * { flex: 0 0 auto; width: 33.333333%; }
    .row-cols-md-4 > * { flex: 0 0 auto; width: 25.0%; }
    .row-cols-md-5 > * { flex: 0 0 auto; width: 20.0%; }
    .row-cols-md-6 > * { flex: 0 0 auto; width: 16.666667%; }
    .row-cols-md-auto > * { flex: 0 0 auto; width: auto; }
    .offset-md-0 { margin-left: 0.0%; }
    .offset-md-1 { margin-left: 8.333333%; }
    .offset-md-2 { margin-left: 16.666667%; }
    .offset-md-3 { margin-left: 25.0%; }
    .offset-md-4 { margin-left: 33.333333%; }
    .offset-md-5 { margin-left: 41.666667%; }
    .offset-md-6 { margin-left: 50.0%; }
    .offset-md-7 { margin-left: 58.333333%; }
    .offset-md-8 { margin-left: 66.666667%; }
    .offset-md-9 { margin-left: 75.0%; }
    .offset-md-10 { margin-left: 83.333333%; }
    .offset-md-11 { margin-left: 91.666667%; }
    .offset-md-12 { margin-left: 100.0%; }
}

@media (min-width: 992px) {
    .col-lg { flex: 1 0 0%; }
    .col-lg-auto { flex: 0 0 auto; width: auto; }
    .col-lg-1 { flex: 0 0 auto; width: 8.333333%; }
    .col-lg-2 { flex: 0 0 auto; width: 16.666667%; }
    .col-lg-3 { flex: 0 0 auto; width: 25.0%; }
    .col-lg-4 { flex: 0 0 auto; width: 33.333333%; }
    .col-lg-5 { flex: 0 0 auto; width: 41.666667%; }
    .col-lg-6 { flex: 0 0 auto; width: 50.0%; }
    .col-lg-7 { flex: 0 0 auto; width: 58.333333%; }
    .col-lg-8 { flex: 0 0 auto; width: 66.666667%; }
    .col-lg-9 { flex: 0 0 auto; width: 75.0%; }
    .col-lg-10 { flex: 0 0 auto; width: 83.333333%; }
    .col-lg-11 { flex: 0 0 auto; width: 91.666667%; }
    .col-lg-12 { flex: 0 0 auto; width: 100.0%; }
    .row-cols-lg-1 > * { flex: 0 0 auto; width: 100.0%; }
    .row-cols-lg-2 > * { flex: 0 0 auto; width: 50.0%; }
    .row-cols-lg-3 > * { flex: 0 0 auto; width: 33.333333%; }
    .row-cols-lg-4 > * { flex: 0 0 auto; width: 25.0%; }
    .row-cols-lg-5 > * { flex: 0 0 auto; width: 20.0%; }
    .row-cols-lg-6 > * { flex: 0 0 auto; width: 16.666667%; }
    .row-cols-lg-auto > * { flex: 0 0 auto; width: auto; }
    .offset-lg-0 { margin-left: 0.0%; }
    .offset-lg-1 { margin-left: 8.333333%; }
    .offset-lg-2 { margin-left: 16.666667%; }
    .offset-lg-3 { margin-left: 25.0%; }
    .offset-lg-4 { margin-left: 33.333333%; }
    .offset-lg-5 { margin-left: 41.666667%; }
    .offset-lg-6 { margin-left: 50.0%; }
    .offset-lg-7 { margin-left: 58.333333%; }
    .offset-lg-8 { margin-left: 66.666667%; }
    .offset-lg-9 { margin-left: 75.0%; }
    .offset-lg-10 { margin-left: 83.333333%; }
    .offset-lg-11 { margin-left: 91.666667%; }
    .offset-lg-12 { margin-left: 100.0%; }
}

@media (min-width: 1200px) {
    .col-xl { flex: 1 0 0%; }
    .col-xl-auto { flex: 0 0 auto; width: auto; }
    .col-xl-1 { flex: 0 0 auto; width: 8.333333%; }
    .col-xl-2 { flex: 0 0 auto; width: 16.666667%; }
    .col-xl-3 { flex: 0 0 auto; width: 25.0%; }
    .col-xl-4 { flex: 0 0 auto; width: 33.333333%; }
    .col-xl-5 { flex: 0 0 auto; width: 41.666667%; }
    .col-xl-6 { flex: 0 0 auto; width: 50.0%; }
    .col-xl-7 { flex: 0 0 auto; width: 58.333333%; }
    .col-xl-8 { flex: 0 0 auto; width: 66.666667%; }
    .col-xl-9 { flex: 0 0 auto; width: 75.0%; }
    .col-xl-10 { flex: 0 0 auto; width: 83.333333%; }
    .col-xl-11 { flex: 0 0 auto; width: 91.666667%; }
    .col-xl-12 { flex: 0 0 auto; width: 100.0%; }
    .row-cols-xl-1 > * { flex: 0 0 auto; width: 100.0%; }
    .row-cols-xl-2 > * { flex: 0 0 auto; width: 50.0%; }
    .row-cols-xl-3 > * { flex: 0 0 auto; width: 33.333333%; }
    .row-cols-xl-4 > * { flex: 0 0 auto; width: 25.0%; }
    .row-cols-xl-5 > * { flex: 0 0 auto; width: 20.0%; }
    .row-cols-xl-6 > * { flex: 0 0 auto; width: 16.666667%; }
    .row-cols-xl-auto > * { flex: 0 0 auto; width: auto; }
    .offset-xl-0 { margin-left: 0.0%; }
    .offset-xl-1 { margin-left: 8.333333%; }
    .offset-xl-2 { margin-left: 16.666667%; }
    .offset-xl-3 { margin-left: 25.0%; }
    .offset-xl-4 { margin-left: 33.333333%; }
    .offset-xl-5 { margin-left: 41.666667%; }
    .offset-xl-6 { margin-left: 50.0%; }
    .offset-xl-7 { margin-left: 58.333333%; }
    .offset-xl-8 { margin-left: 66.666667%; }
    .offset-xl-9 { margin-left: 75.0%; }
    .offset-xl-10 { margin-left: 83.333333%; }
    .offset-xl-11 { margin-left: 91.666667%; }
    .offset-xl-12 { margin-left: 100.0%; }
}

@media (min-width: 1400px) {
    .col-xxl { flex: 1 0 0%; }
    .col-xxl-auto { flex: 0 0 auto; width: auto; }
    .col-xxl-1 { flex: 0 0 auto; width: 8.333333%; }
    .col-xxl-2 { flex: 0 0 auto; width: 16.666667%; }
    .col-xxl-3 { flex: 0 0 auto; width: 25.0%; }
    .col-xxl-4 { flex: 0 0 auto; width: 33.333333%; }
    .col-xxl-5 { flex: 0 0 auto; width: 41.666667%; }
    .col-xxl-6 { flex: 0 0 auto; width: 50.0%; }
    .col-xxl-7 { flex: 0 0 auto; width: 58.333333%; }
    .col-xxl-8 { flex: 0 0 auto; width: 66.666667%; }
    .col-xxl-9 { flex: 0 0 auto; width: 75.0%; }
    .col-xxl-10 { flex: 0 0 auto; width: 83.333333%; }
    .col-xxl-11 { flex: 0 0 auto; width: 91.666667%; }
    .col-xxl-12 { flex: 0 0 auto; width: 100.0%; }
    .row-cols-xxl-1 > * { flex: 0 0 auto; width: 100.0%; }
    .row-cols-xxl-2 > * { flex: 0 0 auto; width: 50.0%; }
    .row-cols-xxl-3 > * { flex: 0 0 auto; width: 33.333333%; }
    .row-cols-xxl-4 > * { flex: 0 0 auto; width: 25.0%; }
    .row-cols-xxl-5 > * { flex: 0 0 auto; width: 20.0%; }
    .row-cols-xxl-6 > * { flex: 0 0 auto; width: 16.666667%; }
    .row-cols-xxl-auto > * { flex: 0 0 auto; width: auto; }
    .offset-xxl-0 { margin-left: 0.0%; }
    .offset-xxl-1 { margin-left: 8.333333%; }
    .offset-xxl-2 { margin-left: 16.666667%; }
    .offset-xxl-3 { margin-left: 25.0%; }
    .offset-xxl-4 { margin-left: 33.333333%; }
    .offset-xxl-5 { margin-left: 41.666667%; }
    .offset-xxl-6 { margin-left: 50.0%; }
    .offset-xxl-7 { margin-left: 58.333333%; }
    .offset-xxl-8 { margin-left: 66.666667%; }
    .offset-xxl-9 { margin-left: 75.0%; }
    .offset-xxl-10 { margin-left: 83.333333%; }
    .offset-xxl-11 { margin-left: 91.666667%; }
    .offset-xxl-12 { margin-left: 100.0%; }
}


/* ============================================================================
   5. Hilfsklassen
   ============================================================================ */

/* Anzeige und Flexbox */
.d-none { display: none !important; }
.d-inline { display: inline !important; }
.d-inline-block { display: inline-block !important; }
.d-block { display: block !important; }
.d-grid { display: grid !important; }
.d-table { display: table !important; }
.d-table-row { display: table-row !important; }
.d-table-cell { display: table-cell !important; }
.d-flex { display: flex !important; }
.d-inline-flex { display: inline-flex !important; }

.flex-row { flex-direction: row !important; }
.flex-column { flex-direction: column !important; }
.flex-row-reverse { flex-direction: row-reverse !important; }
.flex-column-reverse { flex-direction: column-reverse !important; }
.flex-wrap { flex-wrap: wrap !important; }
.flex-nowrap { flex-wrap: nowrap !important; }
.flex-wrap-reverse { flex-wrap: wrap-reverse !important; }
.flex-fill { flex: 1 1 auto !important; }
.flex-grow-0 { flex-grow: 0 !important; }
.flex-grow-1 { flex-grow: 1 !important; }
.flex-shrink-0 { flex-shrink: 0 !important; }
.flex-shrink-1 { flex-shrink: 1 !important; }

.justify-content-start { justify-content: flex-start !important; }
.justify-content-end { justify-content: flex-end !important; }
.justify-content-center { justify-content: center !important; }
.justify-content-between { justify-content: space-between !important; }
.justify-content-around { justify-content: space-around !important; }
.justify-content-evenly { justify-content: space-evenly !important; }

.align-items-start { align-items: flex-start !important; }
.align-items-end { align-items: flex-end !important; }
.align-items-center { align-items: center !important; }
.align-items-baseline { align-items: baseline !important; }
.align-items-stretch { align-items: stretch !important; }

.align-self-start { align-self: flex-start !important; }
.align-self-end { align-self: flex-end !important; }
.align-self-center { align-self: center !important; }
.align-self-stretch { align-self: stretch !important; }

.align-content-start { align-content: flex-start !important; }
.align-content-center { align-content: center !important; }
.align-content-between { align-content: space-between !important; }

.order-first { order: -1 !important; }
.order-last { order: 6 !important; }

.order-0 { order: 0 !important; }
.order-1 { order: 1 !important; }
.order-2 { order: 2 !important; }
.order-3 { order: 3 !important; }
.order-4 { order: 4 !important; }
.order-5 { order: 5 !important; }

@media (min-width: 576px) {
    .d-sm-none { display: none !important; }
    .d-sm-inline { display: inline !important; }
    .d-sm-inline-block { display: inline-block !important; }
    .d-sm-block { display: block !important; }
    .d-sm-grid { display: grid !important; }
    .d-sm-flex { display: flex !important; }
    .d-sm-inline-flex { display: inline-flex !important; }
    .d-sm-table-cell { display: table-cell !important; }
    .flex-sm-row { flex-direction: row !important; }
    .flex-sm-column { flex-direction: column !important; }
    .flex-sm-row-reverse { flex-direction: row-reverse !important; }
    .flex-sm-column-reverse { flex-direction: column-reverse !important; }
    .flex-sm-wrap { flex-wrap: wrap !important; }
    .flex-sm-nowrap { flex-wrap: nowrap !important; }
    .flex-sm-fill { flex: 1 1 auto !important; }
    .justify-content-sm-start { justify-content: flex-start !important; }
    .justify-content-sm-end { justify-content: flex-end !important; }
    .justify-content-sm-center { justify-content: center !important; }
    .justify-content-sm-between { justify-content: space-between !important; }
    .justify-content-sm-around { justify-content: space-around !important; }
    .justify-content-sm-evenly { justify-content: space-evenly !important; }
    .align-items-sm-start { align-items: flex-start !important; }
    .align-items-sm-end { align-items: flex-end !important; }
    .align-items-sm-center { align-items: center !important; }
    .align-items-sm-baseline { align-items: baseline !important; }
    .align-items-sm-stretch { align-items: stretch !important; }
}

@media (min-width: 768px) {
    .d-md-none { display: none !important; }
    .d-md-inline { display: inline !important; }
    .d-md-inline-block { display: inline-block !important; }
    .d-md-block { display: block !important; }
    .d-md-grid { display: grid !important; }
    .d-md-flex { display: flex !important; }
    .d-md-inline-flex { display: inline-flex !important; }
    .d-md-table-cell { display: table-cell !important; }
    .flex-md-row { flex-direction: row !important; }
    .flex-md-column { flex-direction: column !important; }
    .flex-md-row-reverse { flex-direction: row-reverse !important; }
    .flex-md-column-reverse { flex-direction: column-reverse !important; }
    .flex-md-wrap { flex-wrap: wrap !important; }
    .flex-md-nowrap { flex-wrap: nowrap !important; }
    .flex-md-fill { flex: 1 1 auto !important; }
    .justify-content-md-start { justify-content: flex-start !important; }
    .justify-content-md-end { justify-content: flex-end !important; }
    .justify-content-md-center { justify-content: center !important; }
    .justify-content-md-between { justify-content: space-between !important; }
    .justify-content-md-around { justify-content: space-around !important; }
    .justify-content-md-evenly { justify-content: space-evenly !important; }
    .align-items-md-start { align-items: flex-start !important; }
    .align-items-md-end { align-items: flex-end !important; }
    .align-items-md-center { align-items: center !important; }
    .align-items-md-baseline { align-items: baseline !important; }
    .align-items-md-stretch { align-items: stretch !important; }
}

@media (min-width: 992px) {
    .d-lg-none { display: none !important; }
    .d-lg-inline { display: inline !important; }
    .d-lg-inline-block { display: inline-block !important; }
    .d-lg-block { display: block !important; }
    .d-lg-grid { display: grid !important; }
    .d-lg-flex { display: flex !important; }
    .d-lg-inline-flex { display: inline-flex !important; }
    .d-lg-table-cell { display: table-cell !important; }
    .flex-lg-row { flex-direction: row !important; }
    .flex-lg-column { flex-direction: column !important; }
    .flex-lg-row-reverse { flex-direction: row-reverse !important; }
    .flex-lg-column-reverse { flex-direction: column-reverse !important; }
    .flex-lg-wrap { flex-wrap: wrap !important; }
    .flex-lg-nowrap { flex-wrap: nowrap !important; }
    .flex-lg-fill { flex: 1 1 auto !important; }
    .justify-content-lg-start { justify-content: flex-start !important; }
    .justify-content-lg-end { justify-content: flex-end !important; }
    .justify-content-lg-center { justify-content: center !important; }
    .justify-content-lg-between { justify-content: space-between !important; }
    .justify-content-lg-around { justify-content: space-around !important; }
    .justify-content-lg-evenly { justify-content: space-evenly !important; }
    .align-items-lg-start { align-items: flex-start !important; }
    .align-items-lg-end { align-items: flex-end !important; }
    .align-items-lg-center { align-items: center !important; }
    .align-items-lg-baseline { align-items: baseline !important; }
    .align-items-lg-stretch { align-items: stretch !important; }
}

@media (min-width: 1200px) {
    .d-xl-none { display: none !important; }
    .d-xl-inline { display: inline !important; }
    .d-xl-inline-block { display: inline-block !important; }
    .d-xl-block { display: block !important; }
    .d-xl-grid { display: grid !important; }
    .d-xl-flex { display: flex !important; }
    .d-xl-inline-flex { display: inline-flex !important; }
    .d-xl-table-cell { display: table-cell !important; }
    .flex-xl-row { flex-direction: row !important; }
    .flex-xl-column { flex-direction: column !important; }
    .flex-xl-row-reverse { flex-direction: row-reverse !important; }
    .flex-xl-column-reverse { flex-direction: column-reverse !important; }
    .flex-xl-wrap { flex-wrap: wrap !important; }
    .flex-xl-nowrap { flex-wrap: nowrap !important; }
    .flex-xl-fill { flex: 1 1 auto !important; }
    .justify-content-xl-start { justify-content: flex-start !important; }
    .justify-content-xl-end { justify-content: flex-end !important; }
    .justify-content-xl-center { justify-content: center !important; }
    .justify-content-xl-between { justify-content: space-between !important; }
    .justify-content-xl-around { justify-content: space-around !important; }
    .justify-content-xl-evenly { justify-content: space-evenly !important; }
    .align-items-xl-start { align-items: flex-start !important; }
    .align-items-xl-end { align-items: flex-end !important; }
    .align-items-xl-center { align-items: center !important; }
    .align-items-xl-baseline { align-items: baseline !important; }
    .align-items-xl-stretch { align-items: stretch !important; }
}

@media (min-width: 1400px) {
    .d-xxl-none { display: none !important; }
    .d-xxl-inline { display: inline !important; }
    .d-xxl-inline-block { display: inline-block !important; }
    .d-xxl-block { display: block !important; }
    .d-xxl-grid { display: grid !important; }
    .d-xxl-flex { display: flex !important; }
    .d-xxl-inline-flex { display: inline-flex !important; }
    .d-xxl-table-cell { display: table-cell !important; }
    .flex-xxl-row { flex-direction: row !important; }
    .flex-xxl-column { flex-direction: column !important; }
    .flex-xxl-row-reverse { flex-direction: row-reverse !important; }
    .flex-xxl-column-reverse { flex-direction: column-reverse !important; }
    .flex-xxl-wrap { flex-wrap: wrap !important; }
    .flex-xxl-nowrap { flex-wrap: nowrap !important; }
    .flex-xxl-fill { flex: 1 1 auto !important; }
    .justify-content-xxl-start { justify-content: flex-start !important; }
    .justify-content-xxl-end { justify-content: flex-end !important; }
    .justify-content-xxl-center { justify-content: center !important; }
    .justify-content-xxl-between { justify-content: space-between !important; }
    .justify-content-xxl-around { justify-content: space-around !important; }
    .justify-content-xxl-evenly { justify-content: space-evenly !important; }
    .align-items-xxl-start { align-items: flex-start !important; }
    .align-items-xxl-end { align-items: flex-end !important; }
    .align-items-xxl-center { align-items: center !important; }
    .align-items-xxl-baseline { align-items: baseline !important; }
    .align-items-xxl-stretch { align-items: stretch !important; }
}

/* Abstaende zwischen Flex-/Grid-Kindern */
.gap-0 { gap: 0 !important; }
.row-gap-0 { row-gap: 0 !important; }
.column-gap-0 { column-gap: 0 !important; }
.gap-1 { gap: 0.25rem !important; }
.row-gap-1 { row-gap: 0.25rem !important; }
.column-gap-1 { column-gap: 0.25rem !important; }
.gap-2 { gap: 0.5rem !important; }
.row-gap-2 { row-gap: 0.5rem !important; }
.column-gap-2 { column-gap: 0.5rem !important; }
.gap-3 { gap: 1rem !important; }
.row-gap-3 { row-gap: 1rem !important; }
.column-gap-3 { column-gap: 1rem !important; }
.gap-4 { gap: 1.5rem !important; }
.row-gap-4 { row-gap: 1.5rem !important; }
.column-gap-4 { column-gap: 1.5rem !important; }
.gap-5 { gap: 3rem !important; }
.row-gap-5 { row-gap: 3rem !important; }
.column-gap-5 { column-gap: 3rem !important; }

@media (min-width: 576px) {
    .gap-sm-0 { gap: 0 !important; }
    .gap-sm-1 { gap: 0.25rem !important; }
    .gap-sm-2 { gap: 0.5rem !important; }
    .gap-sm-3 { gap: 1rem !important; }
    .gap-sm-4 { gap: 1.5rem !important; }
    .gap-sm-5 { gap: 3rem !important; }
}
@media (min-width: 768px) {
    .gap-md-0 { gap: 0 !important; }
    .gap-md-1 { gap: 0.25rem !important; }
    .gap-md-2 { gap: 0.5rem !important; }
    .gap-md-3 { gap: 1rem !important; }
    .gap-md-4 { gap: 1.5rem !important; }
    .gap-md-5 { gap: 3rem !important; }
}
@media (min-width: 992px) {
    .gap-lg-0 { gap: 0 !important; }
    .gap-lg-1 { gap: 0.25rem !important; }
    .gap-lg-2 { gap: 0.5rem !important; }
    .gap-lg-3 { gap: 1rem !important; }
    .gap-lg-4 { gap: 1.5rem !important; }
    .gap-lg-5 { gap: 3rem !important; }
}
@media (min-width: 1200px) {
    .gap-xl-0 { gap: 0 !important; }
    .gap-xl-1 { gap: 0.25rem !important; }
    .gap-xl-2 { gap: 0.5rem !important; }
    .gap-xl-3 { gap: 1rem !important; }
    .gap-xl-4 { gap: 1.5rem !important; }
    .gap-xl-5 { gap: 3rem !important; }
}
@media (min-width: 1400px) {
    .gap-xxl-0 { gap: 0 !important; }
    .gap-xxl-1 { gap: 0.25rem !important; }
    .gap-xxl-2 { gap: 0.5rem !important; }
    .gap-xxl-3 { gap: 1rem !important; }
    .gap-xxl-4 { gap: 1.5rem !important; }
    .gap-xxl-5 { gap: 3rem !important; }
}

/* Aussen- und Innenabstand. Die Stufe bleibt die gewohnte (0 / .25 / .5 / 1 /
   1.5 / 3 rem) — sie haengt an der Basisschrift und ist damit von selbst um
   gut sechs Prozent enger geworden. */
.m-0 { margin-top: 0 !important; margin-right: 0 !important; margin-bottom: 0 !important; margin-left: 0 !important; }
.m-1 { margin-top: 0.25rem !important; margin-right: 0.25rem !important; margin-bottom: 0.25rem !important; margin-left: 0.25rem !important; }
.m-2 { margin-top: 0.5rem !important; margin-right: 0.5rem !important; margin-bottom: 0.5rem !important; margin-left: 0.5rem !important; }
.m-3 { margin-top: 1rem !important; margin-right: 1rem !important; margin-bottom: 1rem !important; margin-left: 1rem !important; }
.m-4 { margin-top: 1.5rem !important; margin-right: 1.5rem !important; margin-bottom: 1.5rem !important; margin-left: 1.5rem !important; }
.m-5 { margin-top: 3rem !important; margin-right: 3rem !important; margin-bottom: 3rem !important; margin-left: 3rem !important; }
.m-auto { margin-top: auto !important; margin-right: auto !important; margin-bottom: auto !important; margin-left: auto !important; }
.mt-0 { margin-top: 0 !important; }
.mt-1 { margin-top: 0.25rem !important; }
.mt-2 { margin-top: 0.5rem !important; }
.mt-3 { margin-top: 1rem !important; }
.mt-4 { margin-top: 1.5rem !important; }
.mt-5 { margin-top: 3rem !important; }
.mt-auto { margin-top: auto !important; }
.mb-0 { margin-bottom: 0 !important; }
.mb-1 { margin-bottom: 0.25rem !important; }
.mb-2 { margin-bottom: 0.5rem !important; }
.mb-3 { margin-bottom: 1rem !important; }
.mb-4 { margin-bottom: 1.5rem !important; }
.mb-5 { margin-bottom: 3rem !important; }
.mb-auto { margin-bottom: auto !important; }
.ms-0 { margin-left: 0 !important; }
.ms-1 { margin-left: 0.25rem !important; }
.ms-2 { margin-left: 0.5rem !important; }
.ms-3 { margin-left: 1rem !important; }
.ms-4 { margin-left: 1.5rem !important; }
.ms-5 { margin-left: 3rem !important; }
.ms-auto { margin-left: auto !important; }
.me-0 { margin-right: 0 !important; }
.me-1 { margin-right: 0.25rem !important; }
.me-2 { margin-right: 0.5rem !important; }
.me-3 { margin-right: 1rem !important; }
.me-4 { margin-right: 1.5rem !important; }
.me-5 { margin-right: 3rem !important; }
.me-auto { margin-right: auto !important; }
.mx-0 { margin-left: 0 !important; margin-right: 0 !important; }
.mx-1 { margin-left: 0.25rem !important; margin-right: 0.25rem !important; }
.mx-2 { margin-left: 0.5rem !important; margin-right: 0.5rem !important; }
.mx-3 { margin-left: 1rem !important; margin-right: 1rem !important; }
.mx-4 { margin-left: 1.5rem !important; margin-right: 1.5rem !important; }
.mx-5 { margin-left: 3rem !important; margin-right: 3rem !important; }
.mx-auto { margin-left: auto !important; margin-right: auto !important; }
.my-0 { margin-top: 0 !important; margin-bottom: 0 !important; }
.my-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; }
.my-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; }
.my-3 { margin-top: 1rem !important; margin-bottom: 1rem !important; }
.my-4 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; }
.my-5 { margin-top: 3rem !important; margin-bottom: 3rem !important; }
.my-auto { margin-top: auto !important; margin-bottom: auto !important; }
.p-0 { padding-top: 0 !important; padding-right: 0 !important; padding-bottom: 0 !important; padding-left: 0 !important; }
.p-1 { padding-top: 0.25rem !important; padding-right: 0.25rem !important; padding-bottom: 0.25rem !important; padding-left: 0.25rem !important; }
.p-2 { padding-top: 0.5rem !important; padding-right: 0.5rem !important; padding-bottom: 0.5rem !important; padding-left: 0.5rem !important; }
.p-3 { padding-top: 1rem !important; padding-right: 1rem !important; padding-bottom: 1rem !important; padding-left: 1rem !important; }
.p-4 { padding-top: 1.5rem !important; padding-right: 1.5rem !important; padding-bottom: 1.5rem !important; padding-left: 1.5rem !important; }
.p-5 { padding-top: 3rem !important; padding-right: 3rem !important; padding-bottom: 3rem !important; padding-left: 3rem !important; }
.pt-0 { padding-top: 0 !important; }
.pt-1 { padding-top: 0.25rem !important; }
.pt-2 { padding-top: 0.5rem !important; }
.pt-3 { padding-top: 1rem !important; }
.pt-4 { padding-top: 1.5rem !important; }
.pt-5 { padding-top: 3rem !important; }
.pb-0 { padding-bottom: 0 !important; }
.pb-1 { padding-bottom: 0.25rem !important; }
.pb-2 { padding-bottom: 0.5rem !important; }
.pb-3 { padding-bottom: 1rem !important; }
.pb-4 { padding-bottom: 1.5rem !important; }
.pb-5 { padding-bottom: 3rem !important; }
.ps-0 { padding-left: 0 !important; }
.ps-1 { padding-left: 0.25rem !important; }
.ps-2 { padding-left: 0.5rem !important; }
.ps-3 { padding-left: 1rem !important; }
.ps-4 { padding-left: 1.5rem !important; }
.ps-5 { padding-left: 3rem !important; }
.pe-0 { padding-right: 0 !important; }
.pe-1 { padding-right: 0.25rem !important; }
.pe-2 { padding-right: 0.5rem !important; }
.pe-3 { padding-right: 1rem !important; }
.pe-4 { padding-right: 1.5rem !important; }
.pe-5 { padding-right: 3rem !important; }
.px-0 { padding-left: 0 !important; padding-right: 0 !important; }
.px-1 { padding-left: 0.25rem !important; padding-right: 0.25rem !important; }
.px-2 { padding-left: 0.5rem !important; padding-right: 0.5rem !important; }
.px-3 { padding-left: 1rem !important; padding-right: 1rem !important; }
.px-4 { padding-left: 1.5rem !important; padding-right: 1.5rem !important; }
.px-5 { padding-left: 3rem !important; padding-right: 3rem !important; }
.py-0 { padding-top: 0 !important; padding-bottom: 0 !important; }
.py-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; }
.py-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; }
.py-3 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
.py-4 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
.py-5 { padding-top: 3rem !important; padding-bottom: 3rem !important; }

@media (min-width: 576px) {
    .m-sm-0 { margin-top: 0 !important; margin-right: 0 !important; margin-bottom: 0 !important; margin-left: 0 !important; }
    .m-sm-1 { margin-top: 0.25rem !important; margin-right: 0.25rem !important; margin-bottom: 0.25rem !important; margin-left: 0.25rem !important; }
    .m-sm-2 { margin-top: 0.5rem !important; margin-right: 0.5rem !important; margin-bottom: 0.5rem !important; margin-left: 0.5rem !important; }
    .m-sm-3 { margin-top: 1rem !important; margin-right: 1rem !important; margin-bottom: 1rem !important; margin-left: 1rem !important; }
    .m-sm-4 { margin-top: 1.5rem !important; margin-right: 1.5rem !important; margin-bottom: 1.5rem !important; margin-left: 1.5rem !important; }
    .m-sm-5 { margin-top: 3rem !important; margin-right: 3rem !important; margin-bottom: 3rem !important; margin-left: 3rem !important; }
    .m-sm-auto { margin-top: auto !important; margin-right: auto !important; margin-bottom: auto !important; margin-left: auto !important; }
    .mt-sm-0 { margin-top: 0 !important; }
    .mt-sm-1 { margin-top: 0.25rem !important; }
    .mt-sm-2 { margin-top: 0.5rem !important; }
    .mt-sm-3 { margin-top: 1rem !important; }
    .mt-sm-4 { margin-top: 1.5rem !important; }
    .mt-sm-5 { margin-top: 3rem !important; }
    .mt-sm-auto { margin-top: auto !important; }
    .mb-sm-0 { margin-bottom: 0 !important; }
    .mb-sm-1 { margin-bottom: 0.25rem !important; }
    .mb-sm-2 { margin-bottom: 0.5rem !important; }
    .mb-sm-3 { margin-bottom: 1rem !important; }
    .mb-sm-4 { margin-bottom: 1.5rem !important; }
    .mb-sm-5 { margin-bottom: 3rem !important; }
    .mb-sm-auto { margin-bottom: auto !important; }
    .ms-sm-0 { margin-left: 0 !important; }
    .ms-sm-1 { margin-left: 0.25rem !important; }
    .ms-sm-2 { margin-left: 0.5rem !important; }
    .ms-sm-3 { margin-left: 1rem !important; }
    .ms-sm-4 { margin-left: 1.5rem !important; }
    .ms-sm-5 { margin-left: 3rem !important; }
    .ms-sm-auto { margin-left: auto !important; }
    .me-sm-0 { margin-right: 0 !important; }
    .me-sm-1 { margin-right: 0.25rem !important; }
    .me-sm-2 { margin-right: 0.5rem !important; }
    .me-sm-3 { margin-right: 1rem !important; }
    .me-sm-4 { margin-right: 1.5rem !important; }
    .me-sm-5 { margin-right: 3rem !important; }
    .me-sm-auto { margin-right: auto !important; }
    .mx-sm-0 { margin-left: 0 !important; margin-right: 0 !important; }
    .mx-sm-1 { margin-left: 0.25rem !important; margin-right: 0.25rem !important; }
    .mx-sm-2 { margin-left: 0.5rem !important; margin-right: 0.5rem !important; }
    .mx-sm-3 { margin-left: 1rem !important; margin-right: 1rem !important; }
    .mx-sm-4 { margin-left: 1.5rem !important; margin-right: 1.5rem !important; }
    .mx-sm-5 { margin-left: 3rem !important; margin-right: 3rem !important; }
    .mx-sm-auto { margin-left: auto !important; margin-right: auto !important; }
    .my-sm-0 { margin-top: 0 !important; margin-bottom: 0 !important; }
    .my-sm-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; }
    .my-sm-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; }
    .my-sm-3 { margin-top: 1rem !important; margin-bottom: 1rem !important; }
    .my-sm-4 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; }
    .my-sm-5 { margin-top: 3rem !important; margin-bottom: 3rem !important; }
    .my-sm-auto { margin-top: auto !important; margin-bottom: auto !important; }
    .p-sm-0 { padding-top: 0 !important; padding-right: 0 !important; padding-bottom: 0 !important; padding-left: 0 !important; }
    .p-sm-1 { padding-top: 0.25rem !important; padding-right: 0.25rem !important; padding-bottom: 0.25rem !important; padding-left: 0.25rem !important; }
    .p-sm-2 { padding-top: 0.5rem !important; padding-right: 0.5rem !important; padding-bottom: 0.5rem !important; padding-left: 0.5rem !important; }
    .p-sm-3 { padding-top: 1rem !important; padding-right: 1rem !important; padding-bottom: 1rem !important; padding-left: 1rem !important; }
    .p-sm-4 { padding-top: 1.5rem !important; padding-right: 1.5rem !important; padding-bottom: 1.5rem !important; padding-left: 1.5rem !important; }
    .p-sm-5 { padding-top: 3rem !important; padding-right: 3rem !important; padding-bottom: 3rem !important; padding-left: 3rem !important; }
    .pt-sm-0 { padding-top: 0 !important; }
    .pt-sm-1 { padding-top: 0.25rem !important; }
    .pt-sm-2 { padding-top: 0.5rem !important; }
    .pt-sm-3 { padding-top: 1rem !important; }
    .pt-sm-4 { padding-top: 1.5rem !important; }
    .pt-sm-5 { padding-top: 3rem !important; }
    .pb-sm-0 { padding-bottom: 0 !important; }
    .pb-sm-1 { padding-bottom: 0.25rem !important; }
    .pb-sm-2 { padding-bottom: 0.5rem !important; }
    .pb-sm-3 { padding-bottom: 1rem !important; }
    .pb-sm-4 { padding-bottom: 1.5rem !important; }
    .pb-sm-5 { padding-bottom: 3rem !important; }
    .ps-sm-0 { padding-left: 0 !important; }
    .ps-sm-1 { padding-left: 0.25rem !important; }
    .ps-sm-2 { padding-left: 0.5rem !important; }
    .ps-sm-3 { padding-left: 1rem !important; }
    .ps-sm-4 { padding-left: 1.5rem !important; }
    .ps-sm-5 { padding-left: 3rem !important; }
    .pe-sm-0 { padding-right: 0 !important; }
    .pe-sm-1 { padding-right: 0.25rem !important; }
    .pe-sm-2 { padding-right: 0.5rem !important; }
    .pe-sm-3 { padding-right: 1rem !important; }
    .pe-sm-4 { padding-right: 1.5rem !important; }
    .pe-sm-5 { padding-right: 3rem !important; }
    .px-sm-0 { padding-left: 0 !important; padding-right: 0 !important; }
    .px-sm-1 { padding-left: 0.25rem !important; padding-right: 0.25rem !important; }
    .px-sm-2 { padding-left: 0.5rem !important; padding-right: 0.5rem !important; }
    .px-sm-3 { padding-left: 1rem !important; padding-right: 1rem !important; }
    .px-sm-4 { padding-left: 1.5rem !important; padding-right: 1.5rem !important; }
    .px-sm-5 { padding-left: 3rem !important; padding-right: 3rem !important; }
    .py-sm-0 { padding-top: 0 !important; padding-bottom: 0 !important; }
    .py-sm-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; }
    .py-sm-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; }
    .py-sm-3 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
    .py-sm-4 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
    .py-sm-5 { padding-top: 3rem !important; padding-bottom: 3rem !important; }
}

@media (min-width: 768px) {
    .m-md-0 { margin-top: 0 !important; margin-right: 0 !important; margin-bottom: 0 !important; margin-left: 0 !important; }
    .m-md-1 { margin-top: 0.25rem !important; margin-right: 0.25rem !important; margin-bottom: 0.25rem !important; margin-left: 0.25rem !important; }
    .m-md-2 { margin-top: 0.5rem !important; margin-right: 0.5rem !important; margin-bottom: 0.5rem !important; margin-left: 0.5rem !important; }
    .m-md-3 { margin-top: 1rem !important; margin-right: 1rem !important; margin-bottom: 1rem !important; margin-left: 1rem !important; }
    .m-md-4 { margin-top: 1.5rem !important; margin-right: 1.5rem !important; margin-bottom: 1.5rem !important; margin-left: 1.5rem !important; }
    .m-md-5 { margin-top: 3rem !important; margin-right: 3rem !important; margin-bottom: 3rem !important; margin-left: 3rem !important; }
    .m-md-auto { margin-top: auto !important; margin-right: auto !important; margin-bottom: auto !important; margin-left: auto !important; }
    .mt-md-0 { margin-top: 0 !important; }
    .mt-md-1 { margin-top: 0.25rem !important; }
    .mt-md-2 { margin-top: 0.5rem !important; }
    .mt-md-3 { margin-top: 1rem !important; }
    .mt-md-4 { margin-top: 1.5rem !important; }
    .mt-md-5 { margin-top: 3rem !important; }
    .mt-md-auto { margin-top: auto !important; }
    .mb-md-0 { margin-bottom: 0 !important; }
    .mb-md-1 { margin-bottom: 0.25rem !important; }
    .mb-md-2 { margin-bottom: 0.5rem !important; }
    .mb-md-3 { margin-bottom: 1rem !important; }
    .mb-md-4 { margin-bottom: 1.5rem !important; }
    .mb-md-5 { margin-bottom: 3rem !important; }
    .mb-md-auto { margin-bottom: auto !important; }
    .ms-md-0 { margin-left: 0 !important; }
    .ms-md-1 { margin-left: 0.25rem !important; }
    .ms-md-2 { margin-left: 0.5rem !important; }
    .ms-md-3 { margin-left: 1rem !important; }
    .ms-md-4 { margin-left: 1.5rem !important; }
    .ms-md-5 { margin-left: 3rem !important; }
    .ms-md-auto { margin-left: auto !important; }
    .me-md-0 { margin-right: 0 !important; }
    .me-md-1 { margin-right: 0.25rem !important; }
    .me-md-2 { margin-right: 0.5rem !important; }
    .me-md-3 { margin-right: 1rem !important; }
    .me-md-4 { margin-right: 1.5rem !important; }
    .me-md-5 { margin-right: 3rem !important; }
    .me-md-auto { margin-right: auto !important; }
    .mx-md-0 { margin-left: 0 !important; margin-right: 0 !important; }
    .mx-md-1 { margin-left: 0.25rem !important; margin-right: 0.25rem !important; }
    .mx-md-2 { margin-left: 0.5rem !important; margin-right: 0.5rem !important; }
    .mx-md-3 { margin-left: 1rem !important; margin-right: 1rem !important; }
    .mx-md-4 { margin-left: 1.5rem !important; margin-right: 1.5rem !important; }
    .mx-md-5 { margin-left: 3rem !important; margin-right: 3rem !important; }
    .mx-md-auto { margin-left: auto !important; margin-right: auto !important; }
    .my-md-0 { margin-top: 0 !important; margin-bottom: 0 !important; }
    .my-md-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; }
    .my-md-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; }
    .my-md-3 { margin-top: 1rem !important; margin-bottom: 1rem !important; }
    .my-md-4 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; }
    .my-md-5 { margin-top: 3rem !important; margin-bottom: 3rem !important; }
    .my-md-auto { margin-top: auto !important; margin-bottom: auto !important; }
    .p-md-0 { padding-top: 0 !important; padding-right: 0 !important; padding-bottom: 0 !important; padding-left: 0 !important; }
    .p-md-1 { padding-top: 0.25rem !important; padding-right: 0.25rem !important; padding-bottom: 0.25rem !important; padding-left: 0.25rem !important; }
    .p-md-2 { padding-top: 0.5rem !important; padding-right: 0.5rem !important; padding-bottom: 0.5rem !important; padding-left: 0.5rem !important; }
    .p-md-3 { padding-top: 1rem !important; padding-right: 1rem !important; padding-bottom: 1rem !important; padding-left: 1rem !important; }
    .p-md-4 { padding-top: 1.5rem !important; padding-right: 1.5rem !important; padding-bottom: 1.5rem !important; padding-left: 1.5rem !important; }
    .p-md-5 { padding-top: 3rem !important; padding-right: 3rem !important; padding-bottom: 3rem !important; padding-left: 3rem !important; }
    .pt-md-0 { padding-top: 0 !important; }
    .pt-md-1 { padding-top: 0.25rem !important; }
    .pt-md-2 { padding-top: 0.5rem !important; }
    .pt-md-3 { padding-top: 1rem !important; }
    .pt-md-4 { padding-top: 1.5rem !important; }
    .pt-md-5 { padding-top: 3rem !important; }
    .pb-md-0 { padding-bottom: 0 !important; }
    .pb-md-1 { padding-bottom: 0.25rem !important; }
    .pb-md-2 { padding-bottom: 0.5rem !important; }
    .pb-md-3 { padding-bottom: 1rem !important; }
    .pb-md-4 { padding-bottom: 1.5rem !important; }
    .pb-md-5 { padding-bottom: 3rem !important; }
    .ps-md-0 { padding-left: 0 !important; }
    .ps-md-1 { padding-left: 0.25rem !important; }
    .ps-md-2 { padding-left: 0.5rem !important; }
    .ps-md-3 { padding-left: 1rem !important; }
    .ps-md-4 { padding-left: 1.5rem !important; }
    .ps-md-5 { padding-left: 3rem !important; }
    .pe-md-0 { padding-right: 0 !important; }
    .pe-md-1 { padding-right: 0.25rem !important; }
    .pe-md-2 { padding-right: 0.5rem !important; }
    .pe-md-3 { padding-right: 1rem !important; }
    .pe-md-4 { padding-right: 1.5rem !important; }
    .pe-md-5 { padding-right: 3rem !important; }
    .px-md-0 { padding-left: 0 !important; padding-right: 0 !important; }
    .px-md-1 { padding-left: 0.25rem !important; padding-right: 0.25rem !important; }
    .px-md-2 { padding-left: 0.5rem !important; padding-right: 0.5rem !important; }
    .px-md-3 { padding-left: 1rem !important; padding-right: 1rem !important; }
    .px-md-4 { padding-left: 1.5rem !important; padding-right: 1.5rem !important; }
    .px-md-5 { padding-left: 3rem !important; padding-right: 3rem !important; }
    .py-md-0 { padding-top: 0 !important; padding-bottom: 0 !important; }
    .py-md-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; }
    .py-md-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; }
    .py-md-3 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
    .py-md-4 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
    .py-md-5 { padding-top: 3rem !important; padding-bottom: 3rem !important; }
}

@media (min-width: 992px) {
    .m-lg-0 { margin-top: 0 !important; margin-right: 0 !important; margin-bottom: 0 !important; margin-left: 0 !important; }
    .m-lg-1 { margin-top: 0.25rem !important; margin-right: 0.25rem !important; margin-bottom: 0.25rem !important; margin-left: 0.25rem !important; }
    .m-lg-2 { margin-top: 0.5rem !important; margin-right: 0.5rem !important; margin-bottom: 0.5rem !important; margin-left: 0.5rem !important; }
    .m-lg-3 { margin-top: 1rem !important; margin-right: 1rem !important; margin-bottom: 1rem !important; margin-left: 1rem !important; }
    .m-lg-4 { margin-top: 1.5rem !important; margin-right: 1.5rem !important; margin-bottom: 1.5rem !important; margin-left: 1.5rem !important; }
    .m-lg-5 { margin-top: 3rem !important; margin-right: 3rem !important; margin-bottom: 3rem !important; margin-left: 3rem !important; }
    .m-lg-auto { margin-top: auto !important; margin-right: auto !important; margin-bottom: auto !important; margin-left: auto !important; }
    .mt-lg-0 { margin-top: 0 !important; }
    .mt-lg-1 { margin-top: 0.25rem !important; }
    .mt-lg-2 { margin-top: 0.5rem !important; }
    .mt-lg-3 { margin-top: 1rem !important; }
    .mt-lg-4 { margin-top: 1.5rem !important; }
    .mt-lg-5 { margin-top: 3rem !important; }
    .mt-lg-auto { margin-top: auto !important; }
    .mb-lg-0 { margin-bottom: 0 !important; }
    .mb-lg-1 { margin-bottom: 0.25rem !important; }
    .mb-lg-2 { margin-bottom: 0.5rem !important; }
    .mb-lg-3 { margin-bottom: 1rem !important; }
    .mb-lg-4 { margin-bottom: 1.5rem !important; }
    .mb-lg-5 { margin-bottom: 3rem !important; }
    .mb-lg-auto { margin-bottom: auto !important; }
    .ms-lg-0 { margin-left: 0 !important; }
    .ms-lg-1 { margin-left: 0.25rem !important; }
    .ms-lg-2 { margin-left: 0.5rem !important; }
    .ms-lg-3 { margin-left: 1rem !important; }
    .ms-lg-4 { margin-left: 1.5rem !important; }
    .ms-lg-5 { margin-left: 3rem !important; }
    .ms-lg-auto { margin-left: auto !important; }
    .me-lg-0 { margin-right: 0 !important; }
    .me-lg-1 { margin-right: 0.25rem !important; }
    .me-lg-2 { margin-right: 0.5rem !important; }
    .me-lg-3 { margin-right: 1rem !important; }
    .me-lg-4 { margin-right: 1.5rem !important; }
    .me-lg-5 { margin-right: 3rem !important; }
    .me-lg-auto { margin-right: auto !important; }
    .mx-lg-0 { margin-left: 0 !important; margin-right: 0 !important; }
    .mx-lg-1 { margin-left: 0.25rem !important; margin-right: 0.25rem !important; }
    .mx-lg-2 { margin-left: 0.5rem !important; margin-right: 0.5rem !important; }
    .mx-lg-3 { margin-left: 1rem !important; margin-right: 1rem !important; }
    .mx-lg-4 { margin-left: 1.5rem !important; margin-right: 1.5rem !important; }
    .mx-lg-5 { margin-left: 3rem !important; margin-right: 3rem !important; }
    .mx-lg-auto { margin-left: auto !important; margin-right: auto !important; }
    .my-lg-0 { margin-top: 0 !important; margin-bottom: 0 !important; }
    .my-lg-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; }
    .my-lg-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; }
    .my-lg-3 { margin-top: 1rem !important; margin-bottom: 1rem !important; }
    .my-lg-4 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; }
    .my-lg-5 { margin-top: 3rem !important; margin-bottom: 3rem !important; }
    .my-lg-auto { margin-top: auto !important; margin-bottom: auto !important; }
    .p-lg-0 { padding-top: 0 !important; padding-right: 0 !important; padding-bottom: 0 !important; padding-left: 0 !important; }
    .p-lg-1 { padding-top: 0.25rem !important; padding-right: 0.25rem !important; padding-bottom: 0.25rem !important; padding-left: 0.25rem !important; }
    .p-lg-2 { padding-top: 0.5rem !important; padding-right: 0.5rem !important; padding-bottom: 0.5rem !important; padding-left: 0.5rem !important; }
    .p-lg-3 { padding-top: 1rem !important; padding-right: 1rem !important; padding-bottom: 1rem !important; padding-left: 1rem !important; }
    .p-lg-4 { padding-top: 1.5rem !important; padding-right: 1.5rem !important; padding-bottom: 1.5rem !important; padding-left: 1.5rem !important; }
    .p-lg-5 { padding-top: 3rem !important; padding-right: 3rem !important; padding-bottom: 3rem !important; padding-left: 3rem !important; }
    .pt-lg-0 { padding-top: 0 !important; }
    .pt-lg-1 { padding-top: 0.25rem !important; }
    .pt-lg-2 { padding-top: 0.5rem !important; }
    .pt-lg-3 { padding-top: 1rem !important; }
    .pt-lg-4 { padding-top: 1.5rem !important; }
    .pt-lg-5 { padding-top: 3rem !important; }
    .pb-lg-0 { padding-bottom: 0 !important; }
    .pb-lg-1 { padding-bottom: 0.25rem !important; }
    .pb-lg-2 { padding-bottom: 0.5rem !important; }
    .pb-lg-3 { padding-bottom: 1rem !important; }
    .pb-lg-4 { padding-bottom: 1.5rem !important; }
    .pb-lg-5 { padding-bottom: 3rem !important; }
    .ps-lg-0 { padding-left: 0 !important; }
    .ps-lg-1 { padding-left: 0.25rem !important; }
    .ps-lg-2 { padding-left: 0.5rem !important; }
    .ps-lg-3 { padding-left: 1rem !important; }
    .ps-lg-4 { padding-left: 1.5rem !important; }
    .ps-lg-5 { padding-left: 3rem !important; }
    .pe-lg-0 { padding-right: 0 !important; }
    .pe-lg-1 { padding-right: 0.25rem !important; }
    .pe-lg-2 { padding-right: 0.5rem !important; }
    .pe-lg-3 { padding-right: 1rem !important; }
    .pe-lg-4 { padding-right: 1.5rem !important; }
    .pe-lg-5 { padding-right: 3rem !important; }
    .px-lg-0 { padding-left: 0 !important; padding-right: 0 !important; }
    .px-lg-1 { padding-left: 0.25rem !important; padding-right: 0.25rem !important; }
    .px-lg-2 { padding-left: 0.5rem !important; padding-right: 0.5rem !important; }
    .px-lg-3 { padding-left: 1rem !important; padding-right: 1rem !important; }
    .px-lg-4 { padding-left: 1.5rem !important; padding-right: 1.5rem !important; }
    .px-lg-5 { padding-left: 3rem !important; padding-right: 3rem !important; }
    .py-lg-0 { padding-top: 0 !important; padding-bottom: 0 !important; }
    .py-lg-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; }
    .py-lg-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; }
    .py-lg-3 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
    .py-lg-4 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
    .py-lg-5 { padding-top: 3rem !important; padding-bottom: 3rem !important; }
}

@media (min-width: 1200px) {
    .m-xl-0 { margin-top: 0 !important; margin-right: 0 !important; margin-bottom: 0 !important; margin-left: 0 !important; }
    .m-xl-1 { margin-top: 0.25rem !important; margin-right: 0.25rem !important; margin-bottom: 0.25rem !important; margin-left: 0.25rem !important; }
    .m-xl-2 { margin-top: 0.5rem !important; margin-right: 0.5rem !important; margin-bottom: 0.5rem !important; margin-left: 0.5rem !important; }
    .m-xl-3 { margin-top: 1rem !important; margin-right: 1rem !important; margin-bottom: 1rem !important; margin-left: 1rem !important; }
    .m-xl-4 { margin-top: 1.5rem !important; margin-right: 1.5rem !important; margin-bottom: 1.5rem !important; margin-left: 1.5rem !important; }
    .m-xl-5 { margin-top: 3rem !important; margin-right: 3rem !important; margin-bottom: 3rem !important; margin-left: 3rem !important; }
    .m-xl-auto { margin-top: auto !important; margin-right: auto !important; margin-bottom: auto !important; margin-left: auto !important; }
    .mt-xl-0 { margin-top: 0 !important; }
    .mt-xl-1 { margin-top: 0.25rem !important; }
    .mt-xl-2 { margin-top: 0.5rem !important; }
    .mt-xl-3 { margin-top: 1rem !important; }
    .mt-xl-4 { margin-top: 1.5rem !important; }
    .mt-xl-5 { margin-top: 3rem !important; }
    .mt-xl-auto { margin-top: auto !important; }
    .mb-xl-0 { margin-bottom: 0 !important; }
    .mb-xl-1 { margin-bottom: 0.25rem !important; }
    .mb-xl-2 { margin-bottom: 0.5rem !important; }
    .mb-xl-3 { margin-bottom: 1rem !important; }
    .mb-xl-4 { margin-bottom: 1.5rem !important; }
    .mb-xl-5 { margin-bottom: 3rem !important; }
    .mb-xl-auto { margin-bottom: auto !important; }
    .ms-xl-0 { margin-left: 0 !important; }
    .ms-xl-1 { margin-left: 0.25rem !important; }
    .ms-xl-2 { margin-left: 0.5rem !important; }
    .ms-xl-3 { margin-left: 1rem !important; }
    .ms-xl-4 { margin-left: 1.5rem !important; }
    .ms-xl-5 { margin-left: 3rem !important; }
    .ms-xl-auto { margin-left: auto !important; }
    .me-xl-0 { margin-right: 0 !important; }
    .me-xl-1 { margin-right: 0.25rem !important; }
    .me-xl-2 { margin-right: 0.5rem !important; }
    .me-xl-3 { margin-right: 1rem !important; }
    .me-xl-4 { margin-right: 1.5rem !important; }
    .me-xl-5 { margin-right: 3rem !important; }
    .me-xl-auto { margin-right: auto !important; }
    .mx-xl-0 { margin-left: 0 !important; margin-right: 0 !important; }
    .mx-xl-1 { margin-left: 0.25rem !important; margin-right: 0.25rem !important; }
    .mx-xl-2 { margin-left: 0.5rem !important; margin-right: 0.5rem !important; }
    .mx-xl-3 { margin-left: 1rem !important; margin-right: 1rem !important; }
    .mx-xl-4 { margin-left: 1.5rem !important; margin-right: 1.5rem !important; }
    .mx-xl-5 { margin-left: 3rem !important; margin-right: 3rem !important; }
    .mx-xl-auto { margin-left: auto !important; margin-right: auto !important; }
    .my-xl-0 { margin-top: 0 !important; margin-bottom: 0 !important; }
    .my-xl-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; }
    .my-xl-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; }
    .my-xl-3 { margin-top: 1rem !important; margin-bottom: 1rem !important; }
    .my-xl-4 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; }
    .my-xl-5 { margin-top: 3rem !important; margin-bottom: 3rem !important; }
    .my-xl-auto { margin-top: auto !important; margin-bottom: auto !important; }
    .p-xl-0 { padding-top: 0 !important; padding-right: 0 !important; padding-bottom: 0 !important; padding-left: 0 !important; }
    .p-xl-1 { padding-top: 0.25rem !important; padding-right: 0.25rem !important; padding-bottom: 0.25rem !important; padding-left: 0.25rem !important; }
    .p-xl-2 { padding-top: 0.5rem !important; padding-right: 0.5rem !important; padding-bottom: 0.5rem !important; padding-left: 0.5rem !important; }
    .p-xl-3 { padding-top: 1rem !important; padding-right: 1rem !important; padding-bottom: 1rem !important; padding-left: 1rem !important; }
    .p-xl-4 { padding-top: 1.5rem !important; padding-right: 1.5rem !important; padding-bottom: 1.5rem !important; padding-left: 1.5rem !important; }
    .p-xl-5 { padding-top: 3rem !important; padding-right: 3rem !important; padding-bottom: 3rem !important; padding-left: 3rem !important; }
    .pt-xl-0 { padding-top: 0 !important; }
    .pt-xl-1 { padding-top: 0.25rem !important; }
    .pt-xl-2 { padding-top: 0.5rem !important; }
    .pt-xl-3 { padding-top: 1rem !important; }
    .pt-xl-4 { padding-top: 1.5rem !important; }
    .pt-xl-5 { padding-top: 3rem !important; }
    .pb-xl-0 { padding-bottom: 0 !important; }
    .pb-xl-1 { padding-bottom: 0.25rem !important; }
    .pb-xl-2 { padding-bottom: 0.5rem !important; }
    .pb-xl-3 { padding-bottom: 1rem !important; }
    .pb-xl-4 { padding-bottom: 1.5rem !important; }
    .pb-xl-5 { padding-bottom: 3rem !important; }
    .ps-xl-0 { padding-left: 0 !important; }
    .ps-xl-1 { padding-left: 0.25rem !important; }
    .ps-xl-2 { padding-left: 0.5rem !important; }
    .ps-xl-3 { padding-left: 1rem !important; }
    .ps-xl-4 { padding-left: 1.5rem !important; }
    .ps-xl-5 { padding-left: 3rem !important; }
    .pe-xl-0 { padding-right: 0 !important; }
    .pe-xl-1 { padding-right: 0.25rem !important; }
    .pe-xl-2 { padding-right: 0.5rem !important; }
    .pe-xl-3 { padding-right: 1rem !important; }
    .pe-xl-4 { padding-right: 1.5rem !important; }
    .pe-xl-5 { padding-right: 3rem !important; }
    .px-xl-0 { padding-left: 0 !important; padding-right: 0 !important; }
    .px-xl-1 { padding-left: 0.25rem !important; padding-right: 0.25rem !important; }
    .px-xl-2 { padding-left: 0.5rem !important; padding-right: 0.5rem !important; }
    .px-xl-3 { padding-left: 1rem !important; padding-right: 1rem !important; }
    .px-xl-4 { padding-left: 1.5rem !important; padding-right: 1.5rem !important; }
    .px-xl-5 { padding-left: 3rem !important; padding-right: 3rem !important; }
    .py-xl-0 { padding-top: 0 !important; padding-bottom: 0 !important; }
    .py-xl-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; }
    .py-xl-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; }
    .py-xl-3 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
    .py-xl-4 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
    .py-xl-5 { padding-top: 3rem !important; padding-bottom: 3rem !important; }
}

@media (min-width: 1400px) {
    .m-xxl-0 { margin-top: 0 !important; margin-right: 0 !important; margin-bottom: 0 !important; margin-left: 0 !important; }
    .m-xxl-1 { margin-top: 0.25rem !important; margin-right: 0.25rem !important; margin-bottom: 0.25rem !important; margin-left: 0.25rem !important; }
    .m-xxl-2 { margin-top: 0.5rem !important; margin-right: 0.5rem !important; margin-bottom: 0.5rem !important; margin-left: 0.5rem !important; }
    .m-xxl-3 { margin-top: 1rem !important; margin-right: 1rem !important; margin-bottom: 1rem !important; margin-left: 1rem !important; }
    .m-xxl-4 { margin-top: 1.5rem !important; margin-right: 1.5rem !important; margin-bottom: 1.5rem !important; margin-left: 1.5rem !important; }
    .m-xxl-5 { margin-top: 3rem !important; margin-right: 3rem !important; margin-bottom: 3rem !important; margin-left: 3rem !important; }
    .m-xxl-auto { margin-top: auto !important; margin-right: auto !important; margin-bottom: auto !important; margin-left: auto !important; }
    .mt-xxl-0 { margin-top: 0 !important; }
    .mt-xxl-1 { margin-top: 0.25rem !important; }
    .mt-xxl-2 { margin-top: 0.5rem !important; }
    .mt-xxl-3 { margin-top: 1rem !important; }
    .mt-xxl-4 { margin-top: 1.5rem !important; }
    .mt-xxl-5 { margin-top: 3rem !important; }
    .mt-xxl-auto { margin-top: auto !important; }
    .mb-xxl-0 { margin-bottom: 0 !important; }
    .mb-xxl-1 { margin-bottom: 0.25rem !important; }
    .mb-xxl-2 { margin-bottom: 0.5rem !important; }
    .mb-xxl-3 { margin-bottom: 1rem !important; }
    .mb-xxl-4 { margin-bottom: 1.5rem !important; }
    .mb-xxl-5 { margin-bottom: 3rem !important; }
    .mb-xxl-auto { margin-bottom: auto !important; }
    .ms-xxl-0 { margin-left: 0 !important; }
    .ms-xxl-1 { margin-left: 0.25rem !important; }
    .ms-xxl-2 { margin-left: 0.5rem !important; }
    .ms-xxl-3 { margin-left: 1rem !important; }
    .ms-xxl-4 { margin-left: 1.5rem !important; }
    .ms-xxl-5 { margin-left: 3rem !important; }
    .ms-xxl-auto { margin-left: auto !important; }
    .me-xxl-0 { margin-right: 0 !important; }
    .me-xxl-1 { margin-right: 0.25rem !important; }
    .me-xxl-2 { margin-right: 0.5rem !important; }
    .me-xxl-3 { margin-right: 1rem !important; }
    .me-xxl-4 { margin-right: 1.5rem !important; }
    .me-xxl-5 { margin-right: 3rem !important; }
    .me-xxl-auto { margin-right: auto !important; }
    .mx-xxl-0 { margin-left: 0 !important; margin-right: 0 !important; }
    .mx-xxl-1 { margin-left: 0.25rem !important; margin-right: 0.25rem !important; }
    .mx-xxl-2 { margin-left: 0.5rem !important; margin-right: 0.5rem !important; }
    .mx-xxl-3 { margin-left: 1rem !important; margin-right: 1rem !important; }
    .mx-xxl-4 { margin-left: 1.5rem !important; margin-right: 1.5rem !important; }
    .mx-xxl-5 { margin-left: 3rem !important; margin-right: 3rem !important; }
    .mx-xxl-auto { margin-left: auto !important; margin-right: auto !important; }
    .my-xxl-0 { margin-top: 0 !important; margin-bottom: 0 !important; }
    .my-xxl-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; }
    .my-xxl-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; }
    .my-xxl-3 { margin-top: 1rem !important; margin-bottom: 1rem !important; }
    .my-xxl-4 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; }
    .my-xxl-5 { margin-top: 3rem !important; margin-bottom: 3rem !important; }
    .my-xxl-auto { margin-top: auto !important; margin-bottom: auto !important; }
    .p-xxl-0 { padding-top: 0 !important; padding-right: 0 !important; padding-bottom: 0 !important; padding-left: 0 !important; }
    .p-xxl-1 { padding-top: 0.25rem !important; padding-right: 0.25rem !important; padding-bottom: 0.25rem !important; padding-left: 0.25rem !important; }
    .p-xxl-2 { padding-top: 0.5rem !important; padding-right: 0.5rem !important; padding-bottom: 0.5rem !important; padding-left: 0.5rem !important; }
    .p-xxl-3 { padding-top: 1rem !important; padding-right: 1rem !important; padding-bottom: 1rem !important; padding-left: 1rem !important; }
    .p-xxl-4 { padding-top: 1.5rem !important; padding-right: 1.5rem !important; padding-bottom: 1.5rem !important; padding-left: 1.5rem !important; }
    .p-xxl-5 { padding-top: 3rem !important; padding-right: 3rem !important; padding-bottom: 3rem !important; padding-left: 3rem !important; }
    .pt-xxl-0 { padding-top: 0 !important; }
    .pt-xxl-1 { padding-top: 0.25rem !important; }
    .pt-xxl-2 { padding-top: 0.5rem !important; }
    .pt-xxl-3 { padding-top: 1rem !important; }
    .pt-xxl-4 { padding-top: 1.5rem !important; }
    .pt-xxl-5 { padding-top: 3rem !important; }
    .pb-xxl-0 { padding-bottom: 0 !important; }
    .pb-xxl-1 { padding-bottom: 0.25rem !important; }
    .pb-xxl-2 { padding-bottom: 0.5rem !important; }
    .pb-xxl-3 { padding-bottom: 1rem !important; }
    .pb-xxl-4 { padding-bottom: 1.5rem !important; }
    .pb-xxl-5 { padding-bottom: 3rem !important; }
    .ps-xxl-0 { padding-left: 0 !important; }
    .ps-xxl-1 { padding-left: 0.25rem !important; }
    .ps-xxl-2 { padding-left: 0.5rem !important; }
    .ps-xxl-3 { padding-left: 1rem !important; }
    .ps-xxl-4 { padding-left: 1.5rem !important; }
    .ps-xxl-5 { padding-left: 3rem !important; }
    .pe-xxl-0 { padding-right: 0 !important; }
    .pe-xxl-1 { padding-right: 0.25rem !important; }
    .pe-xxl-2 { padding-right: 0.5rem !important; }
    .pe-xxl-3 { padding-right: 1rem !important; }
    .pe-xxl-4 { padding-right: 1.5rem !important; }
    .pe-xxl-5 { padding-right: 3rem !important; }
    .px-xxl-0 { padding-left: 0 !important; padding-right: 0 !important; }
    .px-xxl-1 { padding-left: 0.25rem !important; padding-right: 0.25rem !important; }
    .px-xxl-2 { padding-left: 0.5rem !important; padding-right: 0.5rem !important; }
    .px-xxl-3 { padding-left: 1rem !important; padding-right: 1rem !important; }
    .px-xxl-4 { padding-left: 1.5rem !important; padding-right: 1.5rem !important; }
    .px-xxl-5 { padding-left: 3rem !important; padding-right: 3rem !important; }
    .py-xxl-0 { padding-top: 0 !important; padding-bottom: 0 !important; }
    .py-xxl-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; }
    .py-xxl-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; }
    .py-xxl-3 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
    .py-xxl-4 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
    .py-xxl-5 { padding-top: 3rem !important; padding-bottom: 3rem !important; }
}
/* Groessen */
.w-25 { width: 25% !important; }
.w-50 { width: 50% !important; }
.w-75 { width: 75% !important; }
.w-100 { width: 100% !important; }
.w-auto { width: auto !important; }
.mw-100 { max-width: 100% !important; }
.h-25 { height: 25% !important; }
.h-50 { height: 50% !important; }
.h-75 { height: 75% !important; }
.h-100 { height: 100% !important; }
.h-auto { height: auto !important; }
.mh-100 { max-height: 100% !important; }
.vh-100 { height: 100vh !important; }
.min-vh-100 { min-height: 100vh !important; }

/* Lage */
.position-static { position: static !important; }
.position-relative { position: relative !important; }
.position-absolute { position: absolute !important; }
.position-fixed { position: fixed !important; }
.position-sticky { position: sticky !important; }

.top-0 { top: 0 !important; }
.top-50 { top: 50% !important; }
.top-100 { top: 100% !important; }
.bottom-0 { bottom: 0 !important; }
.start-0 { left: 0 !important; }
.start-50 { left: 50% !important; }
.start-100 { left: 100% !important; }
.end-0 { right: 0 !important; }
.end-50 { right: 50% !important; }

.translate-middle { transform: translate(-50%, -50%) !important; }
.translate-middle-x { transform: translateX(-50%) !important; }
.translate-middle-y { transform: translateY(-50%) !important; }

.sticky-top {
    position: sticky;
    top: 0;
    z-index: 1020;
}

/* Ueberlauf */
.overflow-auto { overflow: auto !important; }
.overflow-hidden { overflow: hidden !important; }
.overflow-visible { overflow: visible !important; }
.overflow-scroll { overflow: scroll !important; }
.overflow-x-auto { overflow-x: auto !important; }
.overflow-y-auto { overflow-y: auto !important; }

/* Sichtbarkeit */
.visible { visibility: visible !important; }
.invisible { visibility: hidden !important; }

.visually-hidden,
.visually-hidden-focusable:not(:focus):not(:focus-within) {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.user-select-all { user-select: all !important; }
.user-select-none { user-select: none !important; }
.pe-none { pointer-events: none !important; }
.pe-auto { pointer-events: auto !important; }

/* Schrift */
.fs-1 { font-size: var(--fs-text-2xl) !important; }
.fs-2 { font-size: var(--fs-text-xl) !important; }
.fs-3 { font-size: var(--fs-text-lg) !important; }
.fs-4 { font-size: var(--fs-text-md) !important; }
.fs-5 { font-size: var(--fs-text-base) !important; }
.fs-6 { font-size: var(--fs-text-sm) !important; }

.small { font-size: var(--fs-text-sm) !important; }
.lead { font-size: var(--fs-text-md) !important; font-weight: 400; }

.fw-light { font-weight: 300 !important; }
.fw-normal { font-weight: 400 !important; }
.fw-medium { font-weight: 500 !important; }
.fw-semibold { font-weight: 600 !important; }
.fw-bold { font-weight: 600 !important; }
.fw-bolder { font-weight: 700 !important; }

.fst-italic { font-style: italic !important; }
.fst-normal { font-style: normal !important; }

.lh-1 { line-height: 1 !important; }
.lh-sm { line-height: 1.25 !important; }
.lh-base { line-height: var(--fs-line) !important; }
.lh-lg { line-height: 1.75 !important; }

.font-monospace { font-family: var(--fs-font-mono) !important; }

.text-start { text-align: left !important; }
.text-end { text-align: right !important; }
.text-center { text-align: center !important; }

.text-lowercase { text-transform: lowercase !important; }
.text-uppercase { text-transform: uppercase !important; }
.text-capitalize { text-transform: capitalize !important; }

.text-nowrap { white-space: nowrap !important; }
.text-wrap { white-space: normal !important; }
.text-break { word-wrap: break-word !important; word-break: break-word !important; }

.text-truncate {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.text-decoration-none { text-decoration: none !important; }
.text-decoration-underline { text-decoration: underline !important; }
.text-decoration-line-through { text-decoration: line-through !important; }

.align-top { vertical-align: top !important; }
.align-middle { vertical-align: middle !important; }
.align-bottom { vertical-align: bottom !important; }

.list-unstyled { padding-left: 0 !important; list-style: none !important; }
.list-inline { padding-left: 0; list-style: none; }

/* Schriftfarben. Die getoenten Rollen (danger, warning, success) sind bewusst
   die gedaempften Werte der Palette und nicht Bootstraps gesaettigte Toene. */
.text-primary { color: var(--primary) !important; }
.text-secondary { color: var(--secondary) !important; }
.text-success { color: var(--success) !important; }
.text-danger { color: var(--danger) !important; }
.text-warning { color: var(--warning-text) !important; }
.text-info { color: var(--info) !important; }
.text-light { color: var(--fs-surface-sunk) !important; }
.text-dark { color: var(--fs-text) !important; }
.text-white { color: var(--white) !important; }
.text-body { color: var(--fs-text) !important; }
.text-muted { color: var(--fs-text-muted) !important; }
.text-black { color: var(--black) !important; }
.text-body-secondary { color: var(--fs-text-muted) !important; }
.text-primary-emphasis { color: var(--primary-dark) !important; }
.text-danger-emphasis { color: var(--danger-dark) !important; }
.text-success-emphasis { color: var(--success-dark) !important; }
.text-warning-emphasis { color: var(--warning-dark) !important; }

/* Flaechenfarben */
.bg-primary { background-color: var(--primary) !important; }
.bg-secondary { background-color: var(--secondary) !important; }
.bg-success { background-color: var(--success) !important; }
.bg-danger { background-color: var(--danger) !important; }
.bg-warning { background-color: var(--warning) !important; }
.bg-info { background-color: var(--info) !important; }
.bg-dark { background-color: var(--fs-text) !important; }
.bg-light { background-color: var(--fs-surface-sunk) !important; }
.bg-white { background-color: var(--white) !important; }
.bg-body { background-color: var(--fs-bg) !important; }
.bg-transparent { background-color: transparent !important; }
.bg-primary-subtle { background-color: var(--primary-tint) !important; }
.bg-success-subtle { background-color: var(--success-tint) !important; }
.bg-danger-subtle { background-color: var(--danger-tint) !important; }
.bg-warning-subtle { background-color: var(--warning-tint) !important; }
.bg-info-subtle { background-color: var(--primary-tint) !important; }
.bg-secondary-subtle { background-color: var(--fs-surface-sunk) !important; }
.bg-light-subtle { background-color: var(--fs-surface-sunk) !important; }

/* Rahmen */
.border { border: 1px solid var(--fs-border) !important; }
.border-0 { border: 0 !important; }
.border-top { border-top: 1px solid var(--fs-border) !important; }
.border-top-0 { border-top: 0 !important; }
.border-bottom { border-bottom: 1px solid var(--fs-border) !important; }
.border-bottom-0 { border-bottom: 0 !important; }
.border-start { border-left: 1px solid var(--fs-border) !important; }
.border-start-0 { border-left: 0 !important; }
.border-end { border-right: 1px solid var(--fs-border) !important; }
.border-end-0 { border-right: 0 !important; }
.border-1 { border-width: 1px !important; }
.border-2 { border-width: 2px !important; }
.border-3 { border-width: 3px !important; }
.border-primary { border-color: var(--primary) !important; }
.border-secondary { border-color: var(--secondary) !important; }
.border-success { border-color: var(--success) !important; }
.border-danger { border-color: var(--danger) !important; }
.border-warning { border-color: var(--warning) !important; }
.border-info { border-color: var(--info) !important; }
.border-light { border-color: var(--fs-border) !important; }
.border-dark { border-color: var(--fs-border-strong) !important; }
.border-white { border-color: var(--white) !important; }

.rounded { border-radius: var(--radius-sm) !important; }
.rounded-0 { border-radius: 0 !important; }
.rounded-1 { border-radius: var(--radius-xs) !important; }
.rounded-2 { border-radius: var(--radius-sm) !important; }
.rounded-3 { border-radius: var(--radius-md) !important; }
.rounded-4 { border-radius: var(--radius-lg) !important; }
.rounded-circle { border-radius: 50% !important; }
.rounded-pill { border-radius: var(--radius-pill) !important; }
.rounded-top { border-top-left-radius: var(--radius-sm) !important; border-top-right-radius: var(--radius-sm) !important; }
.rounded-bottom { border-bottom-left-radius: var(--radius-sm) !important; border-bottom-right-radius: var(--radius-sm) !important; }

/* Schatten — federleicht, die Erhebung traegt die Flaeche, nicht der Schlagschatten. */
.shadow-none { box-shadow: none !important; }
.shadow-sm { box-shadow: var(--shadow-sm) !important; }
.shadow { box-shadow: var(--shadow-md) !important; }
.shadow-lg { box-shadow: var(--shadow-lg) !important; }

.opacity-25 { opacity: 0.25 !important; }
.opacity-50 { opacity: 0.5 !important; }
.opacity-75 { opacity: 0.75 !important; }
.opacity-100 { opacity: 1 !important; }

.float-start { float: left !important; }
.float-end { float: right !important; }
.clearfix::after { display: block; clear: both; content: ""; }

.ratio { position: relative; width: 100%; }
.ratio::before { display: block; padding-top: var(--fs-aspect-ratio); content: ""; }
.ratio > * { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
.ratio-16x9 { --fs-aspect-ratio: 56.25%; }
.ratio-4x3 { --fs-aspect-ratio: 75%; }
.ratio-1x1 { --fs-aspect-ratio: 100%; }

@media (min-width: 576px) {
    .text-sm-start { text-align: left !important; }
    .text-sm-end { text-align: right !important; }
    .text-sm-center { text-align: center !important; }
    .w-sm-auto { width: auto !important; }
}
@media (min-width: 768px) {
    .text-md-start { text-align: left !important; }
    .text-md-end { text-align: right !important; }
    .text-md-center { text-align: center !important; }
    .w-md-auto { width: auto !important; }
}
@media (min-width: 992px) {
    .text-lg-start { text-align: left !important; }
    .text-lg-end { text-align: right !important; }
    .text-lg-center { text-align: center !important; }
    .w-lg-auto { width: auto !important; }
}
@media (min-width: 1200px) {
    .text-xl-start { text-align: left !important; }
    .text-xl-end { text-align: right !important; }
    .text-xl-center { text-align: center !important; }
    .w-xl-auto { width: auto !important; }
}
@media (min-width: 1400px) {
    .text-xxl-start { text-align: left !important; }
    .text-xxl-end { text-align: right !important; }
    .text-xxl-center { text-align: center !important; }
    .w-xxl-auto { width: auto !important; }
}
/* ============================================================================
   6. Knoepfe
   ============================================================================
   Eine Groesse. Die frueheren Stufen -lg und -sm gab es dreifach im Markup
   (591x btn-lg, 178x btn-sm); -lg ist hier absichtlich wirkungslos, sonst waere
   der Umbau an der einen Stelle wieder aufgehoben, an der er am meisten zaehlt. */

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4em;
    padding: var(--fs-control-padding-y) var(--fs-btn-padding-x);
    /* Ein Knopf ist immer gleich hoch, gleich ob Text, Symbol oder beides
       darin steht — ein Symbol allein ist niedriger als eine Textzeile. */
    min-height: calc(1.4em + 2 * var(--fs-control-padding-y) + 2px);
    font-family: inherit;
    font-size: var(--fs-text-base);
    font-weight: 500;
    line-height: 1.4;
    color: var(--fs-text);
    text-align: center;
    text-decoration: none;
    white-space: nowrap;
    vertical-align: middle;
    background-color: var(--fs-surface);
    border: 1px solid var(--fs-border-strong);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: var(--transition-colors), box-shadow var(--duration-base) var(--ease-out);
}

.btn:hover:not(:disabled):not(.disabled) { background-color: var(--fs-surface-sunk); }

.btn:focus-visible {
    outline: none;
    box-shadow: var(--fs-focus-ring);
}

.btn:disabled,
.btn.disabled {
    opacity: 0.55;
    cursor: not-allowed;
    pointer-events: none;
}

/* Die -lg-Stufe steht flaechendeckend im Markup und bleibt deshalb stehen —
   wirkungslos, aber ohne 591 Aenderungen an Razor-Dateien zu erzwingen. */
.btn-lg,
.btn-group-lg > .btn { padding: var(--fs-control-padding-y) var(--fs-btn-padding-x); font-size: var(--fs-text-base); }

.btn-sm,
.btn-group-sm > .btn { padding: 0.45em 0.9em; min-height: calc(1.4em + 0.9em + 2px); font-size: var(--fs-text-sm); }

.btn-primary {
    color: var(--primary-ink);
    background-color: var(--primary);
    border-color: var(--primary);
}

.btn-primary:hover:not(:disabled):not(.disabled) {
    color: var(--primary-ink);
    background-color: var(--primary-hover);
    border-color: var(--primary-hover);
}

.btn-secondary {
    color: var(--white);
    background-color: var(--secondary);
    border-color: var(--secondary);
}

.btn-secondary:hover:not(:disabled):not(.disabled) {
    color: var(--white);
    background-color: var(--secondary-hover);
    border-color: var(--secondary-hover);
}

.btn-success {
    color: var(--white);
    background-color: var(--success);
    border-color: var(--success);
}

.btn-success:hover:not(:disabled):not(.disabled) {
    color: var(--white);
    background-color: var(--success-hover);
    border-color: var(--success-hover);
}

.btn-danger {
    color: var(--white);
    background-color: var(--danger);
    border-color: var(--danger);
}

.btn-danger:hover:not(:disabled):not(.disabled) {
    color: var(--white);
    background-color: var(--danger-hover);
    border-color: var(--danger-hover);
}

.btn-warning {
    color: var(--fs-text);
    background-color: var(--warning);
    border-color: var(--warning);
}

.btn-warning:hover:not(:disabled):not(.disabled) {
    color: var(--fs-text);
    background-color: var(--warning-hover);
    border-color: var(--warning-hover);
}

.btn-dark {
    color: var(--white);
    background-color: var(--fs-text);
    border-color: var(--fs-text);
}

.btn-dark:hover:not(:disabled):not(.disabled) {
    color: var(--white);
    background-color: #000;
    border-color: #000;
}

.btn-light {
    color: var(--fs-text);
    background-color: var(--fs-surface-sunk);
    border-color: var(--fs-border);
}

.btn-outline-primary {
    color: var(--primary);
    background-color: transparent;
    border-color: var(--primary);
}

.btn-outline-primary:hover:not(:disabled):not(.disabled) {
    color: var(--primary-dark);
    background-color: var(--primary-tint);
    border-color: var(--primary);
}

.btn-outline-secondary {
    color: var(--fs-text-muted);
    background-color: transparent;
    border-color: var(--fs-border-strong);
}

.btn-outline-secondary:hover:not(:disabled):not(.disabled) {
    color: var(--fs-text);
    background-color: var(--fs-surface-sunk);
}

.btn-outline-danger {
    color: var(--danger);
    background-color: transparent;
    border-color: var(--danger);
}

.btn-outline-danger:hover:not(:disabled):not(.disabled) {
    color: var(--white);
    background-color: var(--danger);
}

/* Eine Handlung, die sich als Link liest: sie steht in einem Satz oder einer
   Tabellenzelle, wo ein gerahmter Knopf mehr Gewicht beanspruchte als der Text
   um ihn herum. */
.btn-link {
    padding: 0;
    color: var(--bs-link-color);
    background: none;
    border: 0;
    font-weight: 400;
    text-decoration: none;
}

.btn-link:hover:not(:disabled):not(.disabled) {
    background: none;
    color: var(--bs-link-hover-color);
    text-decoration: none;
}

/* ---- Knopfgruppe ---------------------------------------------------------- */

.btn-group,
.btn-group-vertical {
    position: relative;
    display: inline-flex;
    vertical-align: middle;
}

.btn-group > .btn { position: relative; flex: 1 1 auto; }

.btn-group > .btn:not(:first-child) { margin-left: -1px; }

.btn-group > .btn:not(:last-child) {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

.btn-group > .btn:not(:first-child) {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

.btn-group > .btn:hover,
.btn-group > .btn:focus-visible,
.btn-group > .btn.active { z-index: 1; }

/* In einer Segmentgruppe heisst btn-secondary "nicht gewaehlt", nicht "vorsichtige
   Handlung": das Markup schaltet zwischen btn-primary und btn-secondary um. Beide
   sind aber Gruen, und zwei fast gleiche Gruene nebeneinander sagen nicht, welches
   Segment gerade gilt. Die nicht gewaehlten werden deshalb zur Rille, auf der das
   gewaehlte Segment sitzt. Ausserhalb einer Gruppe bleibt btn-secondary, was es
   ist — dort steht es allein und meint eine Handlung. */
.btn-group > .btn-secondary:not(:disabled):not(.disabled),
.btn-group-vertical > .btn-secondary:not(:disabled):not(.disabled) {
    background-color: var(--surface-sunk);
    border-color: var(--gray-border-medium);
    color: var(--gray-text-secondary);
}

.btn-group > .btn-secondary:hover:not(:disabled):not(.disabled),
.btn-group-vertical > .btn-secondary:hover:not(:disabled):not(.disabled) {
    background-color: var(--gray-border-light);
    border-color: var(--gray-border-medium);
    color: var(--gray-dark);
}

.btn-group-vertical { flex-direction: column; align-items: flex-start; }
.btn-group-vertical > .btn { width: 100%; }
.btn-group-vertical > .btn:not(:first-child) { margin-top: -1px; }
.btn-group-vertical > .btn:not(:last-child) { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
.btn-group-vertical > .btn:not(:first-child) { border-top-left-radius: 0; border-top-right-radius: 0; }

/* ---- Schliessen-Kreuz ----------------------------------------------------- */

.btn-close {
    box-sizing: content-box;
    width: 1em;
    height: 1em;
    padding: 0.25em;
    color: var(--fs-text-muted);
    background: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235b6373'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;
    border: 0;
    border-radius: var(--radius-sm);
    opacity: 0.6;
    cursor: pointer;
}

.btn-close:hover { opacity: 1; }

.btn-close:focus-visible { outline: none; box-shadow: var(--fs-focus-ring); opacity: 1; }

.btn-close-white {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");
    opacity: 0.85;
}

/* ============================================================================
   7. Formulare
   ============================================================================ */

.form-label {
    display: block;
    margin-bottom: 6px;
    font-size: var(--fs-text-sm);
    font-weight: 600;
    color: var(--fs-text-subtle);
}

.col-form-label {
    padding-top: var(--fs-control-padding-y);
    padding-bottom: var(--fs-control-padding-y);
    margin-bottom: 0;
    font-size: var(--fs-text-sm);
    font-weight: 600;
    color: var(--fs-text-subtle);
}

.form-control,
.form-select {
    display: block;
    width: 100%;
    padding: var(--fs-control-padding-y) var(--fs-control-padding-x);
    font-family: inherit;
    font-size: var(--fs-text-base);
    font-weight: 400;
    line-height: 1.4;
    color: var(--fs-text);
    background-color: var(--fs-surface);
    border: 1px solid var(--fs-border-strong);
    border-radius: var(--radius-sm);
    appearance: none;
    transition: var(--transition-colors), box-shadow var(--duration-base) var(--ease-out);
}

.form-control:focus,
.form-select:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: var(--fs-focus-ring);
}

.form-control:disabled,
.form-select:disabled,
.form-control[readonly] {
    background-color: var(--fs-surface-sunk);
    opacity: 1;
}

.form-control::placeholder { color: var(--fs-text-subtle); }

/* Wie bei den Knoepfen: -lg bleibt als Klasse bestehen, aendert aber nichts. */
.form-control-lg,
.form-select-lg,
.input-group-lg > .form-control,
.input-group-lg > .form-select,
.input-group-lg > .btn,
.input-group-lg > .input-group-text {
    padding: var(--fs-control-padding-y) var(--fs-control-padding-x);
    font-size: var(--fs-text-base);
    border-radius: var(--radius-sm);
}

.input-group-lg > .btn { padding-left: var(--fs-btn-padding-x); padding-right: var(--fs-btn-padding-x); }

.form-control-sm,
.form-select-sm,
.input-group-sm > .form-control,
.input-group-sm > .form-select,
.input-group-sm > .input-group-text {
    padding: 0.45em 0.6em;
    font-size: var(--fs-text-sm);
}

.input-group-sm > .btn { padding: 0.45em 0.9em; font-size: var(--fs-text-sm); }

textarea.form-control { min-height: 6rem; line-height: var(--fs-line); }

.form-control[type="file"] { padding: 0.45em var(--fs-control-padding-x); }

.form-control[type="color"] { padding: 0.25em; height: 2.6em; }

/* Der eigene Pfeil statt des eingebauten: der Browser setzt seinen an den Rand
   des Feldes und ignoriert dabei die Polsterung. */
.form-select {
    padding-right: 2.25em;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235B6373' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.75em center;
    background-size: 1.15em 1.15em;
}

.form-select[multiple],
.form-select[size]:not([size="1"]) { padding-right: var(--fs-control-padding-x); background-image: none; }

.form-text {
    margin-top: 4px;
    font-size: var(--fs-text-sm);
    color: var(--fs-text-muted);
}

.invalid-feedback {
    display: block;
    margin-top: 4px;
    font-size: var(--fs-text-sm);
    color: var(--danger);
}

.form-control.is-invalid,
.is-invalid > .form-control { border-color: var(--danger); }

.valid.modified:not([type=checkbox]) { outline: 1px solid var(--success); }
.invalid { outline: 1px solid var(--danger); }

.validation-message {
    padding: 0.5rem 0.75rem;
    color: var(--danger);
    font-size: var(--fs-text-sm);
}

/* ---- Kaestchen, Schalter, Regler ------------------------------------------ */

.form-check {
    display: block;
    min-height: 1.5rem;
    padding-left: 1.6em;
    margin-bottom: 0.125rem;
}

.form-check-input {
    width: 1.1em;
    height: 1.1em;
    vertical-align: middle;
    background-color: var(--fs-surface);
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
    border: 1px solid var(--fs-border-strong);
    appearance: none;
    cursor: pointer;
    transition: var(--transition-colors);
}

/* Das Kaestchen haengt nur dann links vor dem Label, wenn es auch eines gibt.
   Eine freistehende Checkbox (Tabellenzelle, Werkzeugleiste) bleibt dort stehen,
   wo sie im Markup steht — sonst rutscht sie aus ihrem Container heraus. */
.form-check > .form-check-input,
.form-check > label > .form-check-input {
    float: left;
    margin-top: 0.2em;
    margin-left: -1.6em;
    vertical-align: top;
}

.form-check-input[type="checkbox"] { border-radius: var(--radius-xs); }
.form-check-input[type="radio"] { border-radius: 50%; }

.form-check-input:checked {
    background-color: var(--primary);
    border-color: var(--primary);
}

.form-check-input[type="checkbox"]:checked {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
}

.form-check-input[type="radio"]:checked {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e");
}

.form-check-input[type="checkbox"]:indeterminate {
    background-color: var(--primary);
    border-color: var(--primary);
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e");
}

.form-check-input:focus-visible { outline: none; box-shadow: var(--fs-focus-ring); }

.form-check-input:disabled { opacity: 0.5; cursor: default; }

.form-check-label { cursor: pointer; }

/* Ein freistehender Schalter statt eines Kaestchens — er ist auf einen Blick als
   An/Aus zu lesen (Projektkonvention). */
.form-switch { padding-left: 2.6em; }

.form-switch .form-check-input {
    width: 2.1em;
    height: 1.15em;
    margin-left: -2.6em;
    border-radius: var(--radius-pill);
    background-color: var(--fs-surface-sunk);
    border-color: var(--fs-border-strong);
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%238a92a1'/%3e%3c/svg%3e");
    background-position: left center;
    background-size: contain;
    transition: background-position 0.15s ease-in-out, var(--transition-colors);
}

.form-switch .form-check-input:checked {
    background-color: var(--primary);
    border-color: var(--primary);
    background-position: right center;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
}

.form-range {
    width: 100%;
    height: 1.5rem;
    padding: 0;
    background: transparent;
    accent-color: var(--primary);
    cursor: pointer;
    appearance: auto;
}

.form-range:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }

/* ---- Eingabegruppe -------------------------------------------------------- */

.input-group {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    width: 100%;
}

.input-group > .form-control,
.input-group > .form-select {
    position: relative;
    flex: 1 1 auto;
    width: 1%;
    min-width: 0;
}

.input-group > :not(:first-child) {
    margin-left: -1px;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

.input-group > :not(:last-child) {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

/* Der Fokusschein liegt ueber dem Nachbarrahmen, nicht darunter. */
.input-group > .form-control:focus,
.input-group > .form-select:focus,
.input-group > .btn:focus-visible { z-index: 3; }

.input-group-text {
    display: flex;
    align-items: center;
    padding: var(--fs-control-padding-y) var(--fs-control-padding-x);
    font-size: var(--fs-text-base);
    color: var(--fs-text-muted);
    text-align: center;
    white-space: nowrap;
    background-color: var(--fs-surface-sunk);
    border: 1px solid var(--fs-border-strong);
    border-radius: var(--radius-sm);
}

/* Verhindert, dass ein Auswahlfeld in einer Gruppe die ganze Breite nimmt. */
.form-select.select-auto { flex: 0 1 auto; width: auto; }

/* ============================================================================
   8. Karten
   ============================================================================
   Flaeche, Haarlinie, weicher Radius — die Erhebung traegt die Flaeche selbst.
   AboutRoute kommt ohne Schlagschatten aus, und ohne ihn wirken gestapelte
   Karten deutlich ruhiger. */

.card {
    position: relative;
    display: flex;
    flex-direction: column;
    min-width: 0;
    word-wrap: break-word;
    background-color: var(--fs-surface);
    border: 1px solid var(--fs-border);
    border-radius: var(--radius-md);
}

.card-body { flex: 1 1 auto; padding: 1.1rem; }

.card-title { margin-bottom: 0.25rem; font-size: var(--fs-text-md); font-weight: 600; }

.card-subtitle { margin-top: -0.125rem; margin-bottom: 0; color: var(--fs-text-muted); }

.card-text { margin-bottom: 0; }

.card-header {
    display: flex;
    align-items: center;
    padding: 0.85rem 1.1rem;
    font-size: var(--fs-text-md);
    font-weight: 600;
    background-color: transparent;
    border-bottom: 1px solid var(--fs-border);
    border-radius: calc(var(--radius-md) - 1px) calc(var(--radius-md) - 1px) 0 0;
}

.card-footer {
    padding: 0.85rem 1.1rem;
    background-color: transparent;
    border-top: 1px solid var(--fs-border);
    border-radius: 0 0 calc(var(--radius-md) - 1px) calc(var(--radius-md) - 1px);
}

.card-header-tabs { margin-bottom: -0.85rem; border-bottom: 0; }

.card > .list-group { border-top: inherit; border-bottom: inherit; }

/* ============================================================================
   9. Tabellen
   ============================================================================ */

.table {
    width: 100%;
    margin-bottom: 1rem;
    font-size: var(--fs-text-sm);
    color: var(--fs-text);
    border-collapse: collapse;
    vertical-align: middle;
}

.table > thead { vertical-align: bottom; }

.table > :not(caption) > * > * {
    padding: 0.7rem 0.75rem;
    border-bottom: 1px solid var(--fs-border);
    vertical-align: middle;
}

.table > thead > tr > th {
    font-weight: 600;
    color: var(--fs-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-size: var(--fs-text-sm);
    background-color: var(--fs-surface-sunk);
    white-space: nowrap;
}

.table > tbody > tr:last-child > * { border-bottom: 0; }

.table-sm > :not(caption) > * > * { padding: 0.4rem 0.5rem; }

.table-striped > tbody > tr:nth-of-type(odd) > * { background-color: var(--surface-subtle); }

.table-hover > tbody > tr:hover > * { background-color: var(--primary-tint); }

.table-bordered > :not(caption) > * > * { border: 1px solid var(--fs-border); }

.table-light > th,
.table-light > td,
.table-light { background-color: var(--fs-surface-sunk); }

.table-secondary > th,
.table-secondary > td,
tr.table-secondary > * { background-color: var(--fs-surface-sunk); }

.table-responsive { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* Eine anklickbare Zeile muss das auch zeigen. */
.table tr.cursor-pointer,
.table tr.selectable { cursor: pointer; }

/* ============================================================================
   10. Plaketten
   ============================================================================
   Getoent statt gefuellt: eine Plakette neben einer Zeile ist eine Auskunft,
   keine Handlung — gefuellte Farbflaechen daneben schreien. */

.badge {
    display: inline-flex;
    align-items: center;
    padding: 0.2em 0.7em;
    font-size: var(--fs-text-xs);
    font-weight: 600;
    line-height: 1.5;
    color: var(--fs-text-muted);
    text-align: center;
    white-space: nowrap;
    vertical-align: baseline;
    background-color: var(--fs-surface-sunk);
    border-radius: var(--radius-pill);
}

.badge.bg-primary { background-color: var(--primary-tint) !important; color: var(--primary-dark); }
.badge.bg-secondary { background-color: var(--fs-surface-sunk) !important; color: var(--fs-text-muted); }
.badge.bg-success { background-color: var(--success-tint) !important; color: var(--success-dark); }
.badge.bg-danger { background-color: var(--danger-tint) !important; color: var(--danger-dark); }
.badge.bg-warning { background-color: var(--warning-tint) !important; color: var(--warning-dark); }
.badge.bg-info { background-color: var(--primary-tint) !important; color: var(--primary-dark); }
.badge.bg-light { background-color: var(--fs-surface-sunk) !important; color: var(--fs-text-muted); }
.badge.bg-dark { background-color: var(--fs-text) !important; color: var(--white); }
.badge.bg-white { background-color: var(--white) !important; color: var(--fs-text); }

/* Eine einzelne Plakette in einer Tabellenzelle nimmt die volle Breite. */
td > .badge:only-child { display: block; }

/* ============================================================================
   11. Hinweise
   ============================================================================ */

.alert {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    padding: 0.85rem 1rem;
    margin-bottom: 1rem;
    font-size: var(--fs-text-sm);
    border: 1px solid transparent;
    border-radius: var(--radius-md);
}

.alert > .material-symbols-outlined { flex-shrink: 0; }

.alert-primary { color: var(--primary-dark); background-color: var(--primary-tint); border-color: var(--info-border); }
.alert-info { color: var(--primary-dark); background-color: var(--primary-tint); border-color: var(--info-border); }
.alert-success { color: var(--success-dark); background-color: var(--success-tint); border-color: var(--success-border); }
.alert-warning { color: var(--fs-text); background-color: var(--warning-tint); border-color: var(--warning-border); }
/* Der Text steht schwarz auf dem gelben Grund, weil das Braun darauf kaum zu
   lesen war. Die Warnfarbe traegt weiterhin das Zeichen. */
.alert-warning .material-symbols-outlined { color: var(--warning-dark); }
.alert-danger { color: var(--danger-dark); background-color: var(--danger-tint); border-color: var(--danger-border); }
.alert-secondary,
.alert-light { color: var(--fs-text-muted); background-color: var(--fs-surface-sunk); border-color: var(--fs-border); }

.alert-dismissible { position: relative; padding-right: 3rem; }

.alert-dismissible .btn-close { position: absolute; top: 0.6rem; right: 0.6rem; }

.alert-link { font-weight: 600; color: inherit; text-decoration: underline; }

/* ============================================================================
   12. Fortschritt und Ladeanzeige
   ============================================================================ */

.progress {
    display: flex;
    height: 0.5rem;
    overflow: hidden;
    font-size: var(--fs-text-xs);
    background-color: var(--fs-surface-sunk);
    border-radius: var(--radius-pill);
}

/* Immer Hausfarbe, immer glatt — keine Streifen, keine Animation
   (Projektkonvention). */
.progress-bar {
    display: flex;
    flex-direction: column;
    justify-content: center;
    overflow: hidden;
    color: var(--white);
    text-align: center;
    white-space: nowrap;
    background-color: var(--primary);
    transition: width 0.4s ease;
}

.spinner-border {
    display: inline-block;
    width: 1.4rem;
    height: 1.4rem;
    vertical-align: -0.125em;
    border: 0.15em solid currentcolor;
    border-right-color: transparent;
    border-radius: 50%;
    animation: fs-spin 0.7s linear infinite;
}

.spinner-border-sm { width: 1rem; height: 1rem; border-width: 0.12em; }

.spinner-grow {
    display: inline-block;
    width: 1.4rem;
    height: 1.4rem;
    vertical-align: -0.125em;
    background-color: currentcolor;
    border-radius: 50%;
    opacity: 0;
    animation: fs-grow 0.75s linear infinite;
}

.spinner-grow-sm { width: 1rem; height: 1rem; }

@keyframes fs-spin { to { transform: rotate(360deg); } }
@keyframes fs-grow { 50% { opacity: 1; transform: none; } 0%, 100% { transform: scale(0); } }

/* ============================================================================
   13. Modale Dialoge
   ============================================================================
   Die Dialoge im Projekt werden von Blazor selbst geschaltet — im Markup steht
   `modal fade show d-block`, ein Bootstrap-JS gab es hier nie. Deshalb traegt
   .modal die Flaeche und den Schleier, und `.d-block` macht sie sichtbar.
   Die Dialoge stehen bewusst OBEN, nicht vertikal zentriert (Projektkonvention). */

.modal {
    position: fixed;
    inset: 0;
    z-index: 10050;
    display: none;
    width: 100%;
    height: 100%;
    overflow-x: hidden;
    overflow-y: auto;
    outline: 0;
}

.modal-backdrop {
    position: fixed;
    inset: 0;
    z-index: 10040;
    background-color: rgba(20, 25, 35, 0.45);
}

.modal-backdrop.show { opacity: 1; }

.modal-dialog {
    position: relative;
    width: auto;
    max-width: 540px;
    margin: 1.75rem auto;
    pointer-events: none;
}

@media (max-width: 575.98px) {
    .modal-dialog { max-width: none; margin: 0.5rem; }
}

.modal-sm { max-width: 380px; }
.modal-lg { max-width: 800px; }
.modal-xl { max-width: 1080px; }

/* Der breiteste Dialog nimmt sich den Bildschirm bis auf den Rand — er traegt Tabellen,
   die sonst nicht zu lesen waeren. */
.modal-xxl { max-width: calc(100% - 3.5rem); }

.modal-dialog-centered {
    display: flex;
    align-items: center;
    min-height: calc(100% - 3.5rem);
}

.modal-dialog-scrollable { height: calc(100% - 3.5rem); }
.modal-dialog-scrollable .modal-content { max-height: 100%; overflow: hidden; }
.modal-dialog-scrollable .modal-body { overflow-y: auto; }

.modal-content {
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
    pointer-events: auto;
    background-color: var(--fs-surface);
    border: 0;
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-xl);
    outline: 0;
    overflow: hidden;
}

.modal-header {
    display: flex;
    flex-shrink: 0;
    align-items: center;
    gap: 0.5rem;
    padding: 1rem 1.2rem;
    font-size: var(--fs-text-md);
    font-weight: 600;
    border-bottom: 1px solid var(--fs-border);
    /* Die Kopfzeile ist der Griff, an dem der Dialog verschoben wird
       (initModalDrag in utils.js). */
    cursor: move;
    user-select: none;
}

.modal-header .btn-close { margin-left: auto; cursor: pointer; }

/* Ein Dialog IM Kopf eines anderen Dialogs (verschachtelter Berechtigungs-Picker)
   erbt den Griff-Zeiger sonst mit. */
.modal-header .modal { cursor: auto; }

.modal-title { margin: 0; font-size: var(--fs-text-md); font-weight: 600; line-height: 1.3; }

.modal-body { position: relative; flex: 1 1 auto; padding: 1.2rem; }

/* Die Knoepfe teilen sich die volle Breite als flache Leiste mit Trennlinien,
   statt als gefuellte Schaltflaechen in einem Kasten zu sitzen (Gestalt aus
   AboutRoute/SIDAN2). In einem Dialog ist der Rahmen schon der Kasten; ein
   zweiter darin ist Laerm. Die Bedeutung traegt hier die Schriftfarbe. */
.modal-footer {
    display: flex;
    flex-shrink: 0;
    flex-wrap: nowrap;
    padding: 0;
    border-top: 1px solid var(--fs-border);
}

/* Das gap-2 aus dem Markup wuerde die Trennlinien in der Luft haengen lassen. */
.modal-footer.gap-1,
.modal-footer.gap-2,
.modal-footer.gap-3 { gap: 0 !important; }

.modal-footer > .btn {
    flex: 1 1 0 !important;
    margin: 0;
    padding: 0.85rem 1rem;
    font-size: var(--fs-text-base);
    font-weight: 500;
    color: var(--fs-text-muted);
    background-color: transparent;
    border: none;
    border-right: 1px solid var(--fs-border);
    border-radius: 0;
}

.modal-footer > .btn:last-child { border-right: none; }

.modal-footer > .btn:hover:not(:disabled):not(.disabled) {
    background-color: var(--fs-surface-sunk);
    color: var(--fs-text);
}

.modal-footer > .btn.btn-primary { color: var(--primary); background-color: transparent; }
.modal-footer > .btn.btn-primary:hover:not(:disabled):not(.disabled) { background-color: var(--primary-tint); color: var(--primary-dark); }

.modal-footer > .btn.btn-success { color: var(--success); background-color: transparent; }
.modal-footer > .btn.btn-success:hover:not(:disabled):not(.disabled) { background-color: var(--success-tint); color: var(--success-dark); }

.modal-footer > .btn.btn-danger { color: var(--danger); background-color: transparent; }
.modal-footer > .btn.btn-danger:hover:not(:disabled):not(.disabled) { background-color: var(--danger-tint); color: var(--danger); }

.modal-footer > .btn.btn-dark,
.modal-footer > .btn.btn-secondary { color: var(--fs-text-muted); background-color: transparent; }

.modal-footer > .btn:disabled,
.modal-footer > .btn.disabled { background-color: transparent; color: var(--fs-text-subtle); opacity: 1; }

/* ---- Ein- und Ausblenden -------------------------------------------------- */

.fade { transition: opacity 0.15s linear; }
.fade:not(.show) { opacity: 0; }

.collapse:not(.show) { display: none; }

.collapsing {
    height: 0;
    overflow: hidden;
    transition: height 0.25s ease;
}

/* ============================================================================
   14. Reiter und Navigation
   ============================================================================ */

.nav {
    display: flex;
    flex-wrap: wrap;
    padding-left: 0;
    margin-bottom: 0;
    list-style: none;
}

.nav-link {
    display: block;
    padding: 0.5rem 0.85rem;
    color: var(--fs-text-muted);
    text-decoration: none;
    background: none;
    border: 0;
    transition: var(--transition-colors);
}

.nav-link:hover { color: var(--fs-text); }

.nav-link.disabled { color: var(--fs-text-subtle); pointer-events: none; }

/* Unterstrichene Reiter statt der gerahmten Registerkarten: eine Linie sagt
   dasselbe wie ein Kasten und traegt ein Viertel des Gewichts. */
.nav-tabs {
    gap: 0.15rem;
    border-bottom: 1px solid var(--fs-border);
}

.nav-tabs .nav-link {
    padding: 0.6rem 1rem;
    margin-bottom: -1px;
    font-weight: 500;
    font-size: var(--fs-text-sm);
    color: var(--fs-text-muted);
    background: none;
    border: 0;
    border-bottom: 2px solid transparent;
    border-radius: 0;
    cursor: pointer;
}

.nav-tabs .nav-link:hover { color: var(--fs-text); }

.nav-tabs .nav-link.active,
.nav-tabs .nav-item.show .nav-link {
    color: var(--primary);
    background: none;
    border-bottom-color: var(--primary);
}

.nav-tabs .nav-link .badge { margin-left: 0.35rem; }

.nav-pills .nav-link { border-radius: var(--radius-sm); }
.nav-pills .nav-link.active { color: var(--primary-ink); background-color: var(--primary); }

.navbar-toggler {
    padding: 0.35rem 0.6rem;
    background: transparent;
    border: 1px solid var(--fs-border);
    border-radius: var(--radius-sm);
    cursor: pointer;
}

/* ============================================================================
   15. Klapplisten
   ============================================================================ */

.dropdown,
.dropup { position: relative; }

.dropdown-toggle::after {
    display: inline-block;
    margin-left: 0.4em;
    vertical-align: 0.15em;
    content: "";
    border-top: 0.3em solid;
    border-right: 0.3em solid transparent;
    border-bottom: 0;
    border-left: 0.3em solid transparent;
}

.dropdown-menu {
    position: absolute;
    z-index: 1000;
    display: none;
    min-width: 11rem;
    padding: 0.35rem;
    margin: 0.25rem 0 0;
    font-size: var(--fs-text-base);
    color: var(--fs-text);
    text-align: left;
    list-style: none;
    background-color: var(--fs-surface);
    border: 1px solid var(--fs-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-lg);
}

.dropdown-menu.show { display: block; }

.dropdown-menu-end { right: 0; left: auto; }

.dropdown-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.45rem 0.65rem;
    clear: both;
    font-weight: 400;
    color: var(--fs-text);
    text-align: inherit;
    text-decoration: none;
    white-space: nowrap;
    background-color: transparent;
    border: 0;
    border-radius: var(--radius-sm);
    cursor: pointer;
}

.dropdown-item:hover,
.dropdown-item:focus { background-color: var(--fs-surface-sunk); color: var(--fs-text); }

.dropdown-item.active { background-color: var(--primary-tint); color: var(--primary-dark); font-weight: 500; }

.dropdown-item.disabled { color: var(--fs-text-subtle); pointer-events: none; }

.dropdown-divider { height: 0; margin: 0.35rem 0; border-top: 1px solid var(--fs-border); }

.dropdown-header {
    display: block;
    padding: 0.4rem 0.65rem;
    font-size: var(--fs-text-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--fs-text-subtle);
}

/* ============================================================================
   16. Ziehharmonika
   ============================================================================ */

.accordion { --fs-accordion-radius: var(--radius-md); }

.accordion-item {
    background-color: var(--fs-surface);
    border: 1px solid var(--fs-border);
}

.accordion-item:first-of-type { border-radius: var(--fs-accordion-radius) var(--fs-accordion-radius) 0 0; }
.accordion-item:last-of-type { border-radius: 0 0 var(--fs-accordion-radius) var(--fs-accordion-radius); }
.accordion-item:not(:first-of-type) { border-top: 0; }

.accordion-header { margin: 0; }

.accordion-button {
    position: relative;
    display: flex;
    align-items: center;
    width: 100%;
    padding: 0.85rem 1.1rem;
    font-family: inherit;
    font-size: var(--fs-text-base);
    font-weight: 500;
    color: var(--fs-text);
    text-align: left;
    background-color: transparent;
    border: 0;
    border-radius: 0;
    cursor: pointer;
    transition: var(--transition-colors);
}

.accordion-button:not(.collapsed) {
    color: var(--primary-dark);
    background-color: var(--primary-tint);
}

.accordion-button:hover { background-color: var(--fs-surface-sunk); }
.accordion-button:not(.collapsed):hover { background-color: var(--primary-tint); }

.accordion-button::after {
    flex-shrink: 0;
    width: 1.1em;
    height: 1.1em;
    margin-left: auto;
    content: "";
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235B6373' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-size: 1.1em;
    transition: transform 0.2s ease;
}

.accordion-button:not(.collapsed)::after { transform: rotate(180deg); }

.accordion-collapse { border: 0; }

.accordion-body { padding: 1.1rem; }

.accordion-flush .accordion-item { border-right: 0; border-left: 0; border-radius: 0; }
.accordion-flush .accordion-item:first-child { border-top: 0; }
.accordion-flush .accordion-item:last-child { border-bottom: 0; }

/* ============================================================================
   17. Listengruppen
   ============================================================================ */

.list-group {
    display: flex;
    flex-direction: column;
    padding-left: 0;
    margin-bottom: 0;
    border-radius: var(--radius-md);
}

.list-group-item {
    position: relative;
    display: block;
    padding: 0.7rem 1rem;
    color: var(--fs-text);
    text-decoration: none;
    background-color: var(--fs-surface);
    border: 1px solid var(--fs-border);
}

.list-group-item:first-child { border-top-left-radius: inherit; border-top-right-radius: inherit; }
.list-group-item:last-child { border-bottom-left-radius: inherit; border-bottom-right-radius: inherit; }
.list-group-item + .list-group-item { border-top-width: 0; }

.list-group-item.active {
    z-index: 2;
    color: var(--primary-ink);
    background-color: var(--primary);
    border-color: var(--primary);
}

.list-group-item.disabled { color: var(--fs-text-subtle); background-color: var(--fs-surface); }

.list-group-item-action { width: 100%; text-align: inherit; cursor: pointer; }
.list-group-item-action:hover:not(.active) { background-color: var(--fs-surface-sunk); }

.list-group-flush { border-radius: 0; }
.list-group-flush > .list-group-item { border-width: 0 0 1px; }
.list-group-flush > .list-group-item:last-child { border-bottom-width: 0; }

/* ============================================================================
   18. Uebernommene Sonderfaelle
   ============================================================================
   Was frueher in css/bootstrap.css stand und weiterhin gebraucht wird. */

/* Das Symbol in einem Hinweis haelt Abstand zum Text. */
.alert .material-symbols-outlined { flex-shrink: 0; }

/* Eine Zeile mit Plakette braucht etwas mehr Luft als eine reine Textzeile. */
.table td:has(.badge) { padding-top: 0.5rem; padding-bottom: 0.5rem; }

.badge-lg { padding: 0.35em 0.9em; font-size: var(--fs-text-sm); }

/* Der Datumswaehler in einer Eingabegruppe bleibt schmal. */
.input-group > .datepicker-auto-width,
.input-group > .datepicker-auto-width.form-control { flex: 0 0 auto; width: 13rem; }

/* Ziehharmonika ohne Winkel (Abschnitte im Fragebogen). */
.accordion-button.no-chevron,
.accordion-button.no-chevron:not(.collapsed) {
    background-color: var(--primary-tint);
    color: var(--fs-text);
    font-weight: 600;
    box-shadow: none;
}

.accordion-button.no-chevron::after { display: none; }

/* Gedaempfte Fassung: dieselbe Flaeche im auf- wie im zugeklappten Zustand. */
.accordion-button.accordion-muted,
.accordion-button.accordion-muted.collapsed { background-color: var(--primary-tint); }

/* Die rechte Spalte des KI-Assistenten: Plus/Minus statt Winkel. */
#expert-right-panel-accordion .accordion-button,
#expert-right-panel-accordion .accordion-button.collapsed {
    background-color: var(--primary-tint);
    color: var(--primary-dark);
}

#expert-right-panel-accordion .accordion-button:not(.collapsed) { font-weight: 700; }

#expert-right-panel-accordion .accordion-button:not(.accordion-muted)::after {
    background-image: none;
    font-family: 'Material Symbols Outlined';
    font-size: var(--fs-text-lg);
    line-height: 1;
    width: 1.25rem;
    height: 1.25rem;
    transform: none;
    transition: none;
    color: var(--primary);
    content: 'add';
    font-weight: normal;
    font-style: normal;
    font-variant: normal;
    text-transform: none;
    letter-spacing: normal;
    word-wrap: normal;
    white-space: nowrap;
    direction: ltr;
    -webkit-font-feature-settings: 'liga';
    -webkit-font-smoothing: antialiased;
    font-variation-settings: 'FILL' 1;
}

#expert-right-panel-accordion .accordion-button:not(.accordion-muted):not(.collapsed)::after { content: 'remove'; }

/* Blazors Fehlerleiste am unteren Rand. */
#blazor-error-ui {
    display: none;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 20000;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    padding: 0.75rem 1.25rem;
    background: var(--danger);
    color: var(--white);
    font-size: var(--fs-text-sm);
    box-shadow: 0 -2px 10px rgba(20, 25, 35, 0.25);
}

#blazor-error-ui[style*="display: block"] { display: flex !important; }

#blazor-error-ui .reload,
#blazor-error-ui .dismiss { color: var(--white); font-weight: 600; cursor: pointer; }

/* Ein Druckgefuehl ohne Sprung im Layout. */
.btn:active:not(:disabled):not(.disabled) { transform: translateY(1px); }

.bg-info { color: var(--white) !important; }

.darker-border-checkbox.form-check-input { border-color: var(--fs-border-strong); }
