:root {
    --bs-primary: #7ba02d;
    --bs-primary-rgb: 123, 160, 45;
    --bs-body-bg: #ffffff;
    --bs-body-bg-rgb: 255, 255, 255;
    --bs-body-color: #222c4a;
    --bs-body-color-rgb: 34, 44, 74;
    --bs-heading-color: #055445;
    --bs-link-color: #055445;
    --bs-link-color-rgb: 5, 84, 69;
    --bs-link-hover-color: #a3195b;
    --bs-link-hover-color-rgb: 163, 25, 91;
    --bsf-header-bg: #ffffff;
    --bsf-footer-bg: #055445;
    --bsf-footer-heading-color: #ffffff;
    --bsf-footer-color: #ffffff;
    --bsf-footer-link-color: #ffffff;
    --bsf-footer-link-hover-color: #e3d8c6;
    --bsf-heading-span-color: #a3195b;
    --bs-body-font-family: "Inter", "Inter Fallback", sans-serif;
    --bsf-font-primary: "Inter", "Inter Fallback", sans-serif;
    --bsf-font-secondary: "Inter", "Inter Fallback", sans-serif;
}
:root {
    --bs-body-font-size: 1.063rem;
    --bs-body-line-height: 1.65;
    --bsf-font-size-display: clamp(1.575rem, calc(1.575rem + 3.9vw), 4.5rem);
    --bsf-font-size-h1: clamp(1.45rem, calc(1.45rem + 2.4vw), 3.25rem);
    --bsf-font-size-h2: clamp(1.375rem, calc(1.375rem + 1.5vw), 2.5rem);
    --bsf-font-size-h3: clamp(1.2625rem, calc(1.2625rem + 0.15vw), 1.375rem);
    --bsf-heading-font-weight: 700;
    --bsf-label-transform: uppercase;
    --bsf-label-weight: 700;
    --bsf-label-tracking: 2px;
    --bsf-card-subtitle-padding: 0;
    --bsf-card-subtitle-radius: 0;
    --bsf-card-subtitle-bg: transparent;
    --bsf-card-subtitle-transform: var(--bsf-label-transform, uppercase);
    --bsf-card-subtitle-weight: var(--bsf-label-weight, 300);
    --bsf-card-subtitle-tracking: var(--bsf-label-tracking, 3px);
}
:root {
    --bsf-nav-link-color: #055445;
    --bsf-nav-link-hover-color: #a3195b;
    --bsf-nav-submenu-bg: #ffffff;
    --bsf-nav-submenu-link-color: #222c4a;
    --bsf-nav-submenu-link-hover-color: #a3195b;
    --bsf-btn-bg: #055445;
    --bsf-btn-bg-hover: #222c4a;
    --bsf-btn-color: #ffffff;
    --bsf-btn-color-hover: #ffffff;
}
.btn {
    --bs-btn-focus-shadow-rgb: var(--bs-body-color-rgb);
    --bs-btn-focus-box-shadow: 0 0 0 .125rem var(--bs-body-bg), 0 0 0 .25rem rgb(var(--bs-btn-focus-shadow-rgb));
}

.bsf-btn-row {
    margin-bottom: -.5rem;
}

.bsf-btn-row > .btn {
    margin-bottom: .5rem;
}

.btn-primary {
    --bs-btn-bg: var(--bsf-btn-bg, var(--bs-primary));
    --bs-btn-border-color: var(--bsf-btn-bg, var(--bs-primary));
    --bs-btn-color: var(--bsf-btn-color, #fff);
    --bs-btn-hover-bg: var(--bsf-btn-bg-hover, var(--bs-primary));
    --bs-btn-hover-border-color: var(--bsf-btn-bg-hover, var(--bs-primary));
    --bs-btn-hover-color: var(--bsf-btn-color-hover, #fff);
    --bs-btn-active-bg: var(--bsf-btn-bg-hover, var(--bs-primary));
    --bs-btn-active-border-color: var(--bsf-btn-bg-hover, var(--bs-primary));
    --bs-btn-active-color: var(--bsf-btn-color-hover, #fff);
}

.btn-outline-primary {
    --bs-btn-color: var(--bs-link-color);
    --bs-btn-border-color: var(--bsf-btn-bg, var(--bs-primary));
    --bs-btn-hover-bg: var(--bsf-btn-bg-hover, var(--bs-primary));
    --bs-btn-hover-border-color: var(--bsf-btn-bg-hover, var(--bs-primary));
    --bs-btn-hover-color: var(--bsf-btn-color-hover, #fff);
}
.bsf-carousel {
    position: relative;
    --bsf-carousel-gap: var(--bs-gutter-x, 1.5rem);
    --bsf-carousel-items: var(--bsf-carousel-items-xs, 1);
    --bsf-carousel-autoplay: var(--bsf-carousel-autoplay-requested, 0);
    --bsf-carousel-loop: 0;
}

.bsf-carousel-track {
    display: flex;
    gap: var(--bsf-carousel-gap);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    scrollbar-width: none;
}

.bsf-carousel-track::-webkit-scrollbar {
    display: none;
}

.bsf-carousel-track > * {
    flex: 0 0 calc(
        (100% - (var(--bsf-carousel-items) - 1) * var(--bsf-carousel-gap))
        / var(--bsf-carousel-items)
    );
    scroll-snap-align: start;
}

@media (min-width: 576px) {
    .bsf-carousel {
        --bsf-carousel-items: var(--bsf-carousel-items-sm, var(--bsf-carousel-items-xs, 1));
    }
}

@media (min-width: 768px) {
    .bsf-carousel {
        --bsf-carousel-items: var(--bsf-carousel-items-md, var(--bsf-carousel-items-sm, var(--bsf-carousel-items-xs, 1)));
    }
}

@media (min-width: 992px) {
    .bsf-carousel {
        --bsf-carousel-items: var(--bsf-carousel-items-lg, var(--bsf-carousel-items-md, var(--bsf-carousel-items-sm, var(--bsf-carousel-items-xs, 1))));
    }
}

@media (min-width: 1200px) {
    .bsf-carousel {
        --bsf-carousel-items: var(--bsf-carousel-items-xl, var(--bsf-carousel-items-lg, var(--bsf-carousel-items-md, var(--bsf-carousel-items-sm, var(--bsf-carousel-items-xs, 1)))));
    }
}

@media (prefers-reduced-motion: reduce) {
    .bsf-carousel-track {
        scroll-behavior: auto;
    }

    .bsf-carousel {
        --bsf-carousel-autoplay: 0;
    }
}
.bsf-clients-grid {
    display: grid;
    /* V1-D3: Spalten so breit wie die Logos (hoechstens `--bsf-logo-columns` je Reihe), nicht als Bruchteil des
       Fussbereichs – zwei Logos standen sonst in einem breiten Bereich weit auseinander. Ein schmaler Bereich laesst
       die Spalten schrumpfen (`minmax(0, …)`, Logos `img-fluid`). Die Reihe folgt `logoAlignment`. */
    grid-template-columns: repeat(var(--bsf-logo-columns, 3), minmax(0, max-content));
    gap: 1rem 1.5rem;
    align-items: center;
}

.bsf-logo-grayscale {
    filter: grayscale(1);
    transition: filter .2s ease;
}

a:hover > .bsf-logo-grayscale,
a:focus-visible > .bsf-logo-grayscale {
    filter: none;
}

@media (prefers-reduced-motion: reduce) {
    .bsf-logo-grayscale {
        transition: none;
    }
}
.bsf-heading-block h1,
.bsf-heading-block h2,
.bsf-heading-block h3,
.bsf-heading-block h4,
.bsf-heading-block .h1,
.bsf-heading-block .h2,
.bsf-heading-block .h3,
.bsf-heading-block .h4 {
    margin-bottom: 0;
    font-weight: var(--bsf-heading-font-weight, 600);
    text-transform: none;
    letter-spacing: 0;
    color: var(--bs-heading-color);
}

.bsf-heading-kicker {
    color: var(--bsf-heading-span-color);
}

/*
    Design Excellence Welle 1 (AE-9 Form A) – die Label-Rolle: Vorzeilen der Überschriftengruppe und des Hero, die
    Zusatzzeile in Listen. Bis hierher stand ihr Stil als Utility-Kette im Markup (`text-uppercase fw-light bsf-ls-3`).
    Die Werte kommen aus dem Site Design (`labelStyle`, `tokens/design-typography.twig`); ohne Wert gilt genau die
    bisherige Darstellung. `uppercaseRule` setzt eine kurze Linie in Textfarbe vor das Label. Labels sind keine
    Überschriften (`D-660` Punkt 3).
*/
.bsf-label {
    text-transform: var(--bsf-label-transform, uppercase);
    font-weight: var(--bsf-label-weight, 300);
    letter-spacing: var(--bsf-label-tracking, 3px);
}

.bsf-label::before {
    content: "";
    display: var(--bsf-label-rule, none);
    width: 2rem;
    height: 1px;
    margin-inline-end: .75rem;
    background-color: currentColor;
    vertical-align: middle;
}

/*
    D-669 – der hervorgehobene Teil der Hauptueberschrift (`span.bsf-title-accent` aus `headingText.twig`,
    `footerHeading.twig` und dem Hero-Renderer). Er ist eine Hervorhebung im Sinn der Akzentregel (`D-656`): die
    Akzentfarbe der Family (`--bsf-accent`, sonst `color.primary`), auf einer eigenen Flaeche die Textfarbe.
    D-672: auf einer eigenen Flaeche behaelt er die Primaerfarbe, wenn der Core dort 4,5 : 1 im unguenstigsten Fall
    nachgewiesen hat (`--bsf-ctx-title-accent`, `fragments/surface-context.twig`). `ownLine` stellt ihn in eine eigene
    Zeile. Groesse, Gewicht und Schrift erbt er von der Ueberschrift.
*/
.bsf-title-accent {
    color: var(--bsf-ctx-title-accent, var(--bsf-accent, rgb(var(--bs-primary-rgb))));
}

.bsf-title-accent-line {
    display: block;
}

/*
    D-669 – `displayHeadingCase`: die Hauptueberschrift der Ueberschriftengruppe (h1) und der Hero-Titel. Beide tragen
    `bsf-text-transform-none` (`text-transform: none !important`); diese Regel ist spezifischer und setzt ohne
    gesetzten Wert dasselbe `none`.
*/
.bsf-heading-block h1.bsf-text-transform-none,
.bsf-heading-block .bsf-hero-title.bsf-text-transform-none {
    text-transform: var(--bsf-display-heading-transform, none) !important;
}

.bsf-badge {
    display: inline-block;
    padding: .3125rem .75rem;
    border-radius: 50rem;
    background-color: rgba(var(--bs-body-color-rgb), .08);
    color: var(--bs-body-color);
    font-size: .8125rem;
    font-weight: 500;
    line-height: 1.2;
}

/*
    Design Excellence Welle 1 (AE-9 Karte a): der Untertitel einer Karte ist ein Etikett (`bsf-badge`, Vorgabe) oder –
    mit `cardSubtitleStyle = label` im Site Design – ein Label ohne Fläche im Stil der Vorzeile. Die Umschaltung kommt als
    Werte aus der Tokenroute; ohne Wert bleibt das Etikett genau, wie es ist.
*/
.bsf-card-subtitle {
    padding: var(--bsf-card-subtitle-padding, .3125rem .75rem);
    border-radius: var(--bsf-card-subtitle-radius, 50rem);
    background-color: var(--bsf-card-subtitle-bg, rgba(var(--bs-body-color-rgb), .08));
    text-transform: var(--bsf-card-subtitle-transform, none);
    font-weight: var(--bsf-card-subtitle-weight, 500);
    letter-spacing: var(--bsf-card-subtitle-tracking, normal);
}

/*
    V1-D0 (`D-658`, Audit §6 contentNotice): `outlined` zeigt den Ton als Rahmen in der Tonfarbe mit kraeftiger
    Anfangskante; Text und Flaeche bleiben die der Umgebung.
*/
.bsf-notice-outlined {
    border-width: 1px;
    border-inline-start-width: .3125rem;
    border-style: solid;
}
.section.bsf-section-divider {
    padding-block: calc(var(--bsf-section-space) / 2);
}

.bsf-divider {
    position: relative;
    width: 100%;
    margin: 0 auto;
}

hr.bsf-divider {
    border-top: var(--bs-border-width) solid var(--bs-border-color);
    opacity: 1;
}

.divider-icon-filled {
    background-color: var(--bsf-btn-bg, var(--bs-primary));
    color: var(--bsf-btn-color, #fff);
}

.divider-icon-outlined {
    border: 2px solid var(--bsf-accent, rgb(var(--bs-primary-rgb)));
    color: var(--bsf-accent, rgb(var(--bs-primary-rgb)));
}
.bsf-faqs .bsf-toggle + .bsf-toggle,
.bsf-faqs > div + div > .bsf-toggle {
    margin-top: .75rem;
}

.bsf-toggle-header {
    position: relative;
    display: flex;
    align-items: baseline;
    width: 100%;
    margin: 0;
    padding: .25rem 0;
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: start;
    cursor: pointer;
}

.bsf-toggle-header:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 2px;
    border-radius: 2px;
}

.bsf-toggle-title {
    flex: 1 1 0;
    max-width: 100%;
    padding: 0 0.25rem;
}

.bsf-toggle-icon {
    flex: 0 0 auto;
    padding: 0 0.375rem;
    text-align: center;
}

.bsf-toggle-content {
    position: relative;
    padding: .75rem 0 .5rem;
}

.bsf-toggle-content > :last-child {
    margin-bottom: 0;
}

html.bsf-js .bsf-toggle:not(.bsf-toggle-active) .bsf-toggle-content,
.bsf-toggle:not(.bsf-toggle-active) .bsf-toggle-open,
.bsf-toggle.bsf-toggle-active .bsf-toggle-closed {
    display: none;
}

html:not(.bsf-js) .bsf-toggle .bsf-toggle-icon[aria-hidden="true"] {
    display: none;
}
.bsf-footer {
    background-color: var(--bsf-footer-bg, var(--bs-tertiary-bg));
    color: var(--bsf-footer-color, var(--bs-body-color));
}

.bsf-footer :is(h1, h2, h3, h4, h5, h6) {
    color: var(--bsf-footer-heading-color, var(--bs-heading-color));
}

.bsf-footer a:where(:not(.btn)) {
    color: var(--bsf-footer-link-color, var(--bs-link-color));
}

.bsf-footer a:where(:not(.btn)):hover,
.bsf-footer a:where(:not(.btn)):focus {
    color: var(--bsf-footer-link-hover-color, var(--bs-link-hover-color));
}

.bsf-footer .btn-link {
    --bs-btn-color: var(--bsf-footer-link-color, var(--bs-link-color));
    --bs-btn-hover-color: var(--bsf-footer-link-hover-color, var(--bs-link-hover-color));
    --bs-btn-active-color: var(--bsf-footer-link-hover-color, var(--bs-link-hover-color));
}

.bsf-widget {
    margin-bottom: 0;
}

/*
    V1-D3: Abstand zwischen aufeinanderfolgenden Footer-Bloecken eines Bereichs. Ein Footer-Block hat keinen eigenen
    Wrapper (Ueberschriftengruppe + Inhalt stehen nebeneinander im Bereich); ein neuer Block beginnt bei jedem Element,
    das nicht direkt auf eine Ueberschriftengruppe folgt. `padding-top` statt `margin-top`, damit der negative
    Rasterrand einer `.row` mit Gutter erhalten bleibt.
*/
.bsf-widget > :not(.bsf-footer-heading-group) + * {
    padding-top: 2rem;
}

.bsf-footer-links,
.bsf-footer-links ul {
    list-style: none;
}

.bsf-footer-links {
    padding-inline-start: 0;
}

.bsf-footer-links a {
    text-decoration: none;
}

.bsf-footer-links a:hover,
.bsf-footer-links a:focus-visible {
    text-decoration: underline;
}

.bsf-footer-heading-group {
    margin-bottom: .75rem;
}

.bsf-footer .bsf-footer-heading {
    margin-bottom: 0;
    font-family: var(--bsf-font-secondary, inherit);
    font-size: clamp(1rem, .95rem + .2vw, 1.125rem);
    font-weight: var(--bsf-heading-font-weight, 600);
    line-height: 1.35;
}

.bsf-footer-kicker {
    margin-bottom: .25rem;
    font-size: .75rem;
    letter-spacing: .12em;
    text-transform: uppercase;
}
/*
    V1-Designkonvergenz (`D-663`, E-8): der Standardabstand einer Section ist fliessend, 2,5rem bei 360 px bis 4rem
    ab 1200 px (vorher fest 4rem, mobil 128 px zwischen zwei Bloecken). Er ist der Wert `themeDefault` der
    Abstandsskala (`D-655`); Hero-Geometrie und Trenner rechnen mit derselben Variable. Sie ist eine Family-Variable,
    kein Design-Token: deshalb am Wurzelelement `html` und nicht im `:root`-Block der Tokenroute.
*/
html {
    --bsf-section-space: clamp(2.5rem, 1.8571rem + 2.8571vw, 4rem);
}

.section {
    position: relative;
    width: 100%;
    margin: var(--bsf-section-space) 0;
    padding: var(--bsf-section-space) 0;
    background-color: var(--bs-tertiary-bg);
    overflow: hidden;
}

/*
    AP-FAMILY-004 B-4: die Primaerschrift der Site erreicht die Ueberschriften.

    `--bsf-font-primary` ist die letzte der 16 Chrome-Rollen. Bootstrap fuehrt
    mit `--bs-body-font-family` nur die Grundschrift; die Ueberschriftenschrift
    ist in seiner Grammatik kein eigener Slot und damit Chrome-Arbeit. Leer
    heisst Erben (`D-418`) – ohne gesetzte Rolle bleibt die Grundschrift.
*/
h1, h2, h3, h4, h5, h6 {
    font-family: var(--bsf-font-primary, inherit);
}

/*
    Paket 2 (K4-7): lange Woerter laufen nicht aus ihrer Spalte.

    Ueberschriften trugen `hyphens: manual` und `overflow-wrap: normal`. Ein
    Wort, das breiter ist als seine Spalte, ragte deshalb in die
    Nachbarspalte und wurde an der `.section` abgeschnitten (`overflow:
    hidden`). Gemessen wurde das im h2Sepp-Review bei 768 und 992px. Die
    Silbentrennung folgt der Sprache am Dokument (`lang` aus der Site) und
    trennt deutsche wie englische Woerter. `overflow-wrap` ist das Netz fuer
    Woerter ohne Trennstelle. Groessen und Skala bleiben, wie sie sind (D-623,
    D-419); diese Regel aendert nur, wo eine Zeile umbricht.
*/
h1, h2, h3, h4, h5, h6 {
    overflow-wrap: break-word;
    -webkit-hyphens: auto;
    hyphens: auto;
    hyphenate-limit-chars: 10 5 5;
    text-wrap: balance;
}

/*
    V1-Designkonvergenz (PL 2026-10-15): ruhigere Umbrueche in Ueberschriften. Die Silbentrennung oben bleibt das Netz
    gegen Ueberlauf, trennt aber erst Woerter ab 10 Zeichen und laesst je Teil mindestens 5 Zeichen
    (`hyphenate-limit-chars`): „Web-sites“ und „Än-derungen“ wandern als Ganzes in die naechste Zeile, lange Komposita
    („Donaudampfschifffahrts-gesellschaft“) trennen weiter; was dann noch nicht passt, faengt `overflow-wrap`.
    Weiche Trennstriche im Inhalt (`&shy;`) bleiben redaktionelle Entscheidung. `text-wrap: balance` verteilt
    mehrzeilige Ueberschriften und die Vorzeile gleichmaessig (keine einzelnen Woerter in der letzten Zeile). Browser ohne
    die beiden Eigenschaften trennen wie bisher.
*/
.bsf-heading-kicker {
    text-wrap: balance;
}

/*
    AP-FAMILY-004 B-4: der Inhaltsbereich waechst, damit der Footer unten
    bleibt.

    Canvas loest das mit `stretched` am Body-Element und einem Wrapper; diese
    Family setzt die Spalte im Theme (`d-flex flex-column min-vh-100`) und laesst
    das `main`-Landmark den Rest fuellen. Das ist die einzige Regel, die
    `.bsf-content` ueberhaupt braucht - Abstaende bringt jeder Block als
    `.section` selbst mit.
*/
.bsf-content {
    flex: 1 0 auto;
}

/*
    Paket 3-C (D-654): das Ueberschriftengewicht ist eine Rolle des Site
    Designs (`--bsf-heading-font-weight`, `tokens/design-typography.twig`). Es
    gilt fuer alle Ueberschriften. Ungesetzt bleiben die Family-Vorgaben:
    Bootstraps 500 fuer Ueberschriften im Fliesstext, 600 fuer die Block- und
    Hero-Ueberschriften, die bis hierher `fw-semibold` trugen und jetzt
    `bsf-heading-weight` tragen. `!important` wie die ersetzte Utility, damit
    `.h6` und aehnliche Klassen am selben Element nicht gewinnen. Komponenten mit
    eigener Titelstaerke (Heading-Block 600, Team 700, Preise 700) lesen dieselbe
    Rolle mit ihrem bisherigen Wert als Rueckfall.
*/
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
    font-weight: var(--bsf-heading-font-weight, 500);
}

.bsf-heading-weight {
    font-weight: var(--bsf-heading-font-weight, 600) !important;
}

/*
    Paket 3-C (D-654): gesetzte Groessen kommen fliessend aus der Tokenroute
    (`clamp()`, RFS-Regel); die zweite Zeile ab 1200 px greift nur noch fuer
    den ungesetzten Rueckfall.
*/
h1 { font-size: var(--bsf-font-size-h1, calc(1.375rem + 1.5vw)); }
h2 { font-size: var(--bsf-font-size-h2, calc(1.325rem + .9vw)); }
h3 { font-size: var(--bsf-font-size-h3, calc(1.3rem + .6vw)); }
h4 { font-size: var(--bsf-font-size-h4, calc(1.275rem + .3vw)); }
h5 { font-size: var(--bsf-font-size-h5, 1.25rem); }
h6 { font-size: var(--bsf-font-size-h6, 1rem); }

@media (min-width: 1200px) {
    h1 { font-size: var(--bsf-font-size-h1, 2.5rem); }
    h2 { font-size: var(--bsf-font-size-h2, 2rem); }
    h3 { font-size: var(--bsf-font-size-h3, 1.75rem); }
    h4 { font-size: var(--bsf-font-size-h4, 1.5rem); }
}

/*
    V1-D0 (Audit §5 P6): Inhaltslinks hatten nur den ungestalteten Standardring des Browsers. Jeder Link ohne eigene
    Komponentenregel zeigt bei Tastaturfokus einen Ring in seiner eigenen Farbe mit Abstand; er traegt damit auf jeder
    Flaeche denselben Kontrast wie der Link selbst. Buttons behalten ihren Fokusring (`styles/button.twig`).
*/
:where(a:not(.btn)):focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 2px;
    border-radius: 2px;
}

/*
    V1-Designkonvergenz (`D-667` C): die Lead-Rolle der Family. Redaktionell der Absatzstil „Einleitung“ im
    Rich-Text-Editor (`richTextDefault`, Klasse `lead`); fliessend 1,125rem bei 360 px bis 1,375rem ab 1200 px, Gewicht
    und Farbe wie der Fliesstext (Bootstraps 300 waere auf hellen Flaechen zu duenn). Keine Lead-Typografie je Block.
*/
p.lead {
    font-size: clamp(1.125rem, 1.0179rem + .4762vw, 1.375rem);
    font-weight: inherit;
    line-height: 1.55;
}

/*
    Design Excellence W2 (Q-1, N-3): die Icons der Family stehen in einer festen Box von 1,25em (die feste Breite von
    Font Awesome, `fa-fw`). Bis die Iconschrift geladen ist, hat ein Icon sonst keine Breite: Knöpfe, Hinweise und
    Navigation wurden beim Laden um die Iconbreite breiter und verschoben ihre Nachbarn (gemessen: Tanneck
    `/preise-buchen`, „Anrufen“ +16 px). Mit der Box steht die Breite ab dem ersten Bild. Icons als Block
    (`styles/social.twig`) füllen weiter ihre Fläche.
*/
:is(.fa-solid, .fa-regular, .fa-brands) {
    width: 1.25em;
    text-align: center;
}
.bsf-grid-container,
.bsf-grid-inner {
    position: relative;
    overflow: hidden;
}

.bsf-masonry-thumbs {
    position: relative;
    --bs-gutter-x: 2px;
    --bs-gutter-y: 2px;
}

.bsf-masonry-thumbs > * {
    overflow: hidden;
}

.bsf-masonry-thumbs > * > img,
.bsf-masonry-thumbs .bsf-grid-inner > img {
    display: block;
    width: 100%;
    height: auto;
}

.bsf-collage {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.bsf-collage > * {
    display: block;
    position: relative;
    aspect-ratio: 1 / 1;
    overflow: hidden;
}

.bsf-collage > .bsf-collage-feature {
    grid-column: span 2;
    grid-row: span 2;
}

.bsf-collage > .bsf-collage-wide {
    grid-column: span 2;
    aspect-ratio: auto;
}

.bsf-collage > .bsf-collage-wide::before {
    content: "";
    display: block;
    padding-top: 50%;
}

.bsf-collage > .bsf-collage-banner {
    grid-column: 1 / -1;
    aspect-ratio: 2 / 1;
}

.bsf-collage > * > .bsf-grid-inner,
.bsf-collage picture {
    position: absolute;
    inset: 0;
}

.bsf-collage .bsf-grid-inner {
    width: 100%;
}

.bsf-collage-img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

@media (min-width: 768px) {
    .bsf-collage {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .bsf-collage > .bsf-collage-wide::before {
        padding-top: calc(50% - 0.5rem);
    }
}
.bsf-header .navbar {
    --bs-navbar-padding-x: calc(var(--bs-gutter-x) * .5);
}

.bsf-header {
    position: relative;
    z-index: 1030;
    width: 100%;
    min-height: var(--bsf-header-height, 3.75rem);
    background-color: var(--bsf-header-bg, var(--bs-body-bg));
}

.bsf-header[data-bsf-sticky] {
    position: sticky;
    top: 0;
}

.bsf-header-transparent {
    position: absolute;
    inset-inline: 0;
    top: 0;
    background-color: transparent;
}

.bsf-header-transparent[data-bsf-sticky] {
    position: fixed;
}

.bsf-header.bsf-header-stuck {
    background-color: var(--bsf-header-bg, var(--bs-body-bg));
}

@media (max-width: 991.98px) {
    .bsf-header-transparent:has(.navbar-collapse.show),
    .bsf-header-transparent:has(.navbar-collapse.collapsing) {
        background-color: var(--bsf-header-bg, var(--bs-body-bg));
    }

    .bsf-header-transparent[data-bsf-sticky] {
        max-height: 100vh;
        max-height: 100dvh;
        overflow-y: auto;
    }
}

.bsf-header[data-bsf-sticky-shrink] {
    transition: min-height 0.2s ease;
}

.bsf-header[data-bsf-sticky-shrink].bsf-header-stuck {
    min-height: calc(var(--bsf-header-height, 3.75rem) * 0.75);
}

.bsf-header-wrap {
    display: flex;
    align-items: center;
    min-height: inherit;
}

.bsf-logo {
    display: inline-flex;
    align-items: center;
    padding-block: 10px;
}

/* V1-D3: der Fokusring des Logolinks folgt der Linkrolle der Navigation – im dunklen Kopf war `currentColor` (Farbe
   der Marke) kaum sichtbar (1,13 : 1). */
.bsf-header .bsf-logo:focus-visible {
    outline: 2px solid var(--bsf-nav-link-color, var(--bs-body-color));
    outline-offset: 2px;
}

.bsf-logo-img {
    max-height: calc(var(--bsf-header-height, 3.75rem) - 20px);
    width: auto;
}

@media (prefers-reduced-motion: reduce) {
    .bsf-header[data-bsf-sticky-shrink] {
        transition: none;
    }
}

.bsf-header-transparent::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background: linear-gradient(to bottom, rgba(0, 0, 0, .65), rgba(0, 0, 0, .55));
}

.bsf-header-transparent.bsf-header-stuck::before {
    display: none;
}

@media (min-width: 992px) {
    .bsf-header-transparent::before {
        inset: 0 0 -4rem;
        background: linear-gradient(to bottom, rgba(0, 0, 0, .65) 0, rgba(0, 0, 0, .55) calc(100% - 4rem), rgba(0, 0, 0, 0) 100%);
    }

    .bsf-header-transparent:not(.bsf-header-stuck) {
        --bsf-nav-link-color: #fff;
        --bsf-nav-link-hover-color: #fff;
    }

    .bsf-header-transparent:not(.bsf-header-stuck) .bsf-nav .nav-link:hover,
    .bsf-header-transparent:not(.bsf-header-stuck) .bsf-nav .nav-link.active {
        text-decoration: underline;
        text-underline-offset: .35em;
    }

    .bsf-header-transparent:not(.bsf-header-stuck) .bsf-logo-pair > .bsf-logo-default {
        display: none;
    }

    .bsf-header-transparent:not(.bsf-header-stuck) .bsf-logo-pair > .bsf-logo-on-dark {
        display: inline-block;
    }
}

@media (max-width: 991.98px) {
    .bsf-header-transparent:not(.bsf-header-stuck):not(:has(.navbar-collapse.show, .navbar-collapse.collapsing)) {
        --bsf-nav-link-color: #fff;
        --bsf-nav-link-hover-color: #fff;
    }

    .bsf-header-transparent:has(.navbar-collapse.show, .navbar-collapse.collapsing)::before {
        display: none;
    }

    .bsf-header-transparent:not(.bsf-header-stuck):not(:has(.navbar-collapse.show, .navbar-collapse.collapsing)) .bsf-logo-pair > .bsf-logo-default {
        display: none;
    }

    .bsf-header-transparent:not(.bsf-header-stuck):not(:has(.navbar-collapse.show, .navbar-collapse.collapsing)) .bsf-logo-pair > .bsf-logo-on-dark {
        display: inline-block;
    }
}

.bsf-logo-pair > .bsf-logo-on-dark {
    display: none;
}

.bsf-dark .bsf-logo-pair > .bsf-logo-default {
    display: none;
}

.bsf-dark .bsf-logo-pair > .bsf-logo-on-dark {
    display: inline-block;
}
.hero-height-compact {
    min-height: var(--bsf-hero-height-compact, 40vh);
}

.hero-height-standard {
    min-height: var(--bsf-hero-height-standard, 60vh);
}

.hero-height-viewport {
    min-height: 100vh;
}

.hero-height-viewport .hero-height-viewport {
    min-height: calc(100vh - 2 * var(--bsf-section-space));
}

.bsf-hero-text {
    container-type: inline-size;
}

.bsf-hero-content {
    max-width: 50rem;
}

.bsf-hero-content.text-center {
    margin-inline: auto;
}

.bsf-hero-content.text-end {
    margin-inline-start: auto;
}

.bsf-hero-title {
    --bsf-hero-title-fit: max(1.5rem, calc(100cqi / (var(--bsf-display-chars, 1) * var(--bsf-display-glyph, .62))));
    font-size: min(var(--bsf-font-size-h1, calc(1.575rem + 3.9vw)), var(--bsf-hero-title-fit));
    line-height: 1.2;
}

.bsf-hero-content .bsf-hero-title {
    font-size: min(var(--bsf-font-size-display, calc(1.575rem + 3.9vw)), var(--bsf-hero-title-fit));
    line-height: 1.1;
    -webkit-hyphens: manual;
    hyphens: manual;
}

@media (min-width: 1200px) {
    .bsf-hero-title {
        font-size: min(var(--bsf-font-size-h1, 4.5rem), var(--bsf-hero-title-fit));
    }

    .bsf-hero-content .bsf-hero-title {
        font-size: min(var(--bsf-font-size-display, 4.5rem), var(--bsf-hero-title-fit));
    }
}

.bsf-hero-panel-section {
    display: flex;
    flex-direction: column;
    padding-top: 0;
    min-height: calc(100svh - var(--bsf-header-height, 3.75rem) - 1rem);
}

.bsf-hero-panel-stage {
    position: relative;
    flex: 1 0 auto;
    min-height: max(12rem, 30svh);
}

.bsf-hero-panel-stage > picture {
    position: absolute;
    inset: 0;
}

.bsf-hero-panel {
    --bsf-hero-panel-overlap: clamp(3rem, 2rem + 5vw, 7rem);
    position: relative;
    z-index: 1;
    margin-top: calc(-1 * var(--bsf-hero-panel-overlap));
    padding: clamp(1.75rem, 1.25rem + 2vw, 3rem) clamp(1.25rem, .5rem + 3vw, 3rem) 0;
    background-color: var(--bs-body-bg);
}

.bsf-hero-panel-surface {
    position: absolute;
    inset: 0;
}

.bsf-hero-panel-body {
    position: relative;
}

.section:not(.bg-transparent) > .bsf-hero-panel {
    background-color: var(--bs-tertiary-bg);
}

@media (min-width: 992px) {
    .bsf-hero-panel-section {
        --bsf-hero-panel-share: 58.333%;
    }

    .bsf-hero-panel-stage {
        position: static;
    }

    .bsf-hero-panel-stage > picture {
        right: calc(var(--bsf-hero-panel-share) / -3);
    }

    .bsf-hero-panel {
        margin-top: 0;
        padding-inline: calc(var(--bs-gutter-x, 1.5rem) * .5);
        background-color: transparent;
    }

    .section:not(.bg-transparent) > .bsf-hero-panel {
        background-color: transparent;
    }

    .bsf-hero-panel-surface {
        top: 0;
        right: calc(100% - var(--bsf-hero-panel-share));
        bottom: -100vh;
        left: -100vw;
        background-color: var(--bs-body-bg);
    }

    .section:not(.bg-transparent) > .bsf-hero-panel > .bsf-hero-panel-surface {
        background-color: var(--bs-tertiary-bg);
    }

    .bsf-hero-panel-body {
        max-width: calc(var(--bsf-hero-panel-share) - clamp(1.25rem, .5rem + 3vw, 3rem));
    }
}

@media (min-width: 992px) and (max-width: 1199.98px) {
    .bsf-hero-panel-section {
        --bsf-hero-panel-share: 66.667%;
    }
}

.bsf-header-transparent ~ .bsf-slider > .bsf-slider-track > .section {
    margin-top: 0;
    padding-top: calc(var(--bsf-section-space) + 1rem + var(--bsf-header-height, 3.75rem));
}

.bsf-header-transparent ~ .bsf-slider > .bsf-slider-track > .section.bsf-hero-panel-section {
    padding-top: 0;
    min-height: 100svh;
}

.bsf-header-transparent ~ .bsf-slider > .bsf-slider-track > .hero-height-viewport .hero-height-viewport {
    min-height: calc(100vh - 2 * var(--bsf-section-space) - 1rem - var(--bsf-header-height, 3.75rem));
}

.bsf-slider > .bsf-slider-track > .section {
    margin-block: 0;
}

.section:is(.bsf-min-height-compact, .bsf-min-height-standard, .bsf-min-height-viewport) {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.section.bsf-min-height-compact {
    min-height: var(--bsf-hero-height-compact, 40vh);
}

.section.bsf-min-height-standard {
    min-height: var(--bsf-hero-height-standard, 60vh);
}

.section.bsf-min-height-viewport {
    min-height: 100vh;
    min-height: 100svh;
}
.bsf-item-title {
    margin-bottom: .5rem;
    font-size: clamp(1.125rem, 1.05rem + .35vw, 1.375rem);
    font-weight: var(--bsf-heading-font-weight, 600);
    line-height: 1.3;
    color: var(--bs-heading-color);
}

.bsf-accent {
    color: var(--bsf-accent, rgb(var(--bs-primary-rgb)));
}

/*
    Testimonials (V1-D0, Audit §6 contentTestimonials): ein Zitat ist `figure` > `blockquote` + `figcaption`. Der
    Zitattext steht in der Textfarbe (vorher `text-muted` auf Kartenflaeche, auf heller Flaeche einer dunklen Site
    1,14 : 1), der Name ist keine Ueberschrift (`D-660` Punkt 3), die Bewertung hat eine Textalternative.
*/
.bsf-testimonial {
    margin: 0;
}

.bsf-testimonial-person {
    display: block;
}

.bsf-testimonial-quote {
    margin-bottom: 1rem;
    font-family: var(--bsf-font-secondary, inherit);
    font-size: 1.0625rem;
    font-style: italic;
    line-height: 1.6;
}

.bsf-testimonial-quote > :last-child {
    margin-bottom: 0;
}

.bsf-testimonial-name,
.bsf-testimonial-meta,
.bsf-rating {
    display: block;
}

.bsf-testimonial-name {
    font-weight: var(--bsf-heading-font-weight, 600);
    color: var(--bs-heading-color);
}

.bsf-testimonial-meta {
    font-size: .875rem;
    color: var(--bs-secondary-color);
}

.bsf-rating {
    margin-top: .375rem;
    font-size: .875rem;
    letter-spacing: .125em;
}

.bsf-item {
    --bsf-item-padding: clamp(1rem, .85rem + .6vw, 1.5rem);
    border-radius: var(--bs-border-radius-lg);
    padding: var(--bsf-item-padding);
}

.bsf-item-plain {
    padding: 0;
    border: 0;
    background-color: transparent;
}

.bsf-item-outlined {
    border: var(--bs-border-width) solid var(--bs-border-color);
}

.bsf-item-filled {
    background-color: rgba(var(--bs-body-color-rgb), .05);
}

.bsf-card {
    --bs-card-bg: transparent;
    --bs-card-color: inherit;
    --bs-card-border-color: var(--bs-border-color);
    --bs-card-border-radius: var(--bs-border-radius-lg);
    --bs-card-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));
}

.bsf-card-outlined {
    --bs-card-border-width: var(--bs-border-width);
}

.bsf-card-plain {
    --bs-card-border-width: 0;
    --bs-card-spacer-x: 0;
}

.bsf-card-filled {
    --bs-card-border-width: 0;
    --bs-card-bg: rgba(var(--bs-body-color-rgb), .05);
}

.bsf-listing-image {
    aspect-ratio: 3 / 2;
    object-fit: cover;
}

/*
    Design Excellence Welle 1 (AE-2 B, FS-4): die Display-Kennzahl. Groesse aus der Display-Rolle des Site Designs
    (`--bsf-font-size-display`, ungesetzt die Family-Vorgabe des Hero-Titels), begrenzt auf die Breite des Kastens:
    `bsf-counter-box` ist der Groessencontainer, der Wert traegt seine Zeichenzahl (`--bsf-display-chars`), .65em ist
    die mittlere Breite von Ziffern in fetten Schnitten. Der Wert bricht nicht um.
*/
.bsf-counter-box {
    container-type: inline-size;
}

.bsf-counter-display {
    font-size: min(var(--bsf-font-size-display, calc(1.575rem + 3.9vw)), calc(100cqi / (var(--bsf-display-chars, 1) * .65)));
    line-height: 1;
    white-space: nowrap;
}

@media (min-width: 1200px) {
    .bsf-counter-display {
        font-size: min(var(--bsf-font-size-display, 4.5rem), calc(100cqi / (var(--bsf-display-chars, 1) * .65)));
    }
}
.bsf-lightbox {
    max-width: 100vw;
    max-height: 100vh;
    width: 100%;
    height: 100%;
    padding: 0;
    border: 0;
    background-color: transparent;
    color: #fff;
    overflow: hidden;
}

.bsf-lightbox::backdrop {
    background-color: rgba(0, 0, 0, 0.85);
}

.bsf-lightbox[open] {
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 1;
    transition: opacity 0.2s ease;
}

html.bsf-lightbox-open {
    overflow: hidden;
}

.bsf-lightbox-figure {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
    max-width: 90vw;
    max-height: 90vh;
    margin: 0;
}

.bsf-lightbox-image {
    max-width: 90vw;
    max-height: 80vh;
    width: auto;
    height: auto;
    object-fit: contain;
    border-radius: var(--bs-border-radius);
}

.bsf-lightbox-caption {
    text-align: center;
}

.bsf-lightbox-close,
.bsf-lightbox-prev,
.bsf-lightbox-next {
    position: absolute;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border: 0;
    border-radius: var(--bs-border-radius);
    background-color: rgba(0, 0, 0, 0.5);
    color: inherit;
}

.bsf-lightbox-close {
    top: 1.5rem;
    right: 1.5rem;
}

.bsf-lightbox-prev {
    top: 50%;
    left: 1.5rem;
    transform: translateY(-50%);
}

.bsf-lightbox-next {
    top: 50%;
    right: 1.5rem;
    transform: translateY(-50%);
}

.bsf-lightbox-counter {
    position: absolute;
    right: 1.5rem;
    bottom: 1.5rem;
    z-index: 2;
    margin-bottom: 0;
}

.bsf-lightbox-counter-current,
.bsf-lightbox-counter-total {
    font-variant-numeric: tabular-nums;
}

@media (prefers-reduced-motion: reduce) {
    .bsf-lightbox[open] {
        transition: none;
    }
}
.img-gallery {
    aspect-ratio: 4 / 3;
    object-fit: cover;
}

.img-testimonal {
    aspect-ratio: 1 / 1;
    object-fit: cover;
    width: 64px;
    height: 64px;
}

.bsf-ratio-3x4 {
    --bs-aspect-ratio: 133.333%;
}

.bsf-focal {
    object-position: var(--bsf-focal, 50% 50%);
}

@media (max-width: 767.98px) {
    .bsf-focal {
        object-position: var(--bsf-focal-mobile, var(--bsf-focal, 50% 50%));
    }
}

:where(img[width][height]) {
    max-width: 100%;
    height: auto;
}

/*
    V1-Designkonvergenz (`D-665`, E-10): Pause-/Fortsetzen-Bedienung des Hintergrundvideos. Unten links, damit sie der
    Foliennummer des Header-Sliders (unten rechts) nicht im Weg steht; 44 px Zielgroesse, eigene Kontrastflaeche ueber
    jedem Videobild, sichtbarer Fokusring. Das Icon zeigt den naechsten Schritt: Pause, solange das Video laeuft
    (`aria-pressed="false"`), Abspielen, solange es steht. Hier und nicht in `hero.twig`: die Hoehenstufen des
    Hero setzen nie eine feste Hoehe (`CoreHero001HeightContractTest`), der Button hat eine feste Zielgroesse.
*/
.bsf-video-toggle {
    position: absolute;
    left: 1rem;
    bottom: 1rem;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, .7);
    border-radius: 50%;
    background-color: rgba(0, 0, 0, .6);
    color: #fff;
}

.bsf-video-toggle[hidden] {
    display: none;
}

.bsf-video-toggle:hover {
    background-color: rgba(0, 0, 0, .8);
}

.bsf-video-toggle:focus-visible {
    outline: 3px solid #fff;
    outline-offset: 2px;
    box-shadow: 0 0 0 5px rgba(0, 0, 0, .75);
}

.bsf-video-toggle[aria-pressed="false"] .bsf-video-toggle-play,
.bsf-video-toggle[aria-pressed="true"] .bsf-video-toggle-pause {
    display: none;
}

/*
    D-670 – die Bildkomposition `overlap` von `core-media-text-001`. Ab 992 px nimmt das Hauptbild 88 % der Medienspalte
    an ihrer Aussenkante ein; das Zweitbild (46 %, 4:3) liegt absolut an der inneren unteren Ecke und ragt ueber das
    Hauptbild. Der Innenabstand unten reserviert den Teil des Zweitbilds unterhalb des Hauptbilds, so dass nichts in
    Text oder Folgeinhalt ragt und die Hoehe aus Breiten folgt (kein Layoutsprung). Darunter stehen beide Bilder
    untereinander, das Zweitbild mit 60 % an der Aussenkante. Ein Rand in der Flaechenfarbe trennt die Bilder.
*/
.bsf-media-overlap-second img {
    display: block;
}

.bsf-media-overlap-second .ratio {
    box-shadow: 0 0 0 .375rem var(--bs-body-bg), 0 .75rem 2rem rgba(0, 0, 0, .18);
}

@media (min-width: 992px) {
    .bsf-media-overlap {
        position: relative;
        padding-bottom: 14%;
    }

    .bsf-media-overlap-main {
        width: 88%;
    }

    .bsf-media-overlap-end .bsf-media-overlap-main {
        margin-inline-start: auto;
    }

    .bsf-media-overlap-second {
        position: absolute;
        bottom: 0;
        z-index: 1;
        width: 46%;
    }

    .bsf-media-overlap-end .bsf-media-overlap-second {
        inset-inline-start: 0;
    }

    .bsf-media-overlap-start .bsf-media-overlap-second {
        inset-inline-end: 0;
    }
}

@media (max-width: 991.98px) {
    .bsf-media-overlap-second {
        width: 60%;
        margin-top: 1rem;
    }

    .bsf-media-overlap-end .bsf-media-overlap-second {
        margin-inline-start: auto;
    }
}

/*
    Design Excellence Welle 1 (AE-6 A, E-2): Medium bis zum Fensterrand in `contentMediaText`. Der Container ist der
    Groessencontainer; `(100cqw - 100vw) / 2` ist der Abstand von seiner Inhaltskante bis zum Fensterrand (negativ).
    Mobil laeuft der Rahmen auf beiden Seiten bis zum Rand, ab 992 px nur auf der Seite des Mediums. Die Section
    schneidet weiter ab (`overflow: hidden`, D-658), auch eine klassische Scrollleiste. Inhaltliche Videos bleiben
    unbeschnitten (`contain`).
*/
.bsf-media-edge-host {
    container-type: inline-size;
}

.bsf-media-edge {
    display: flex;
    flex-direction: column;
}

.bsf-media-edge-frame {
    position: relative;
    flex: 1 0 auto;
    aspect-ratio: var(--bsf-media-edge-ratio, 4 / 3);
    margin-inline: calc((100cqw - 100vw) / 2);
    overflow: hidden;
}

.bsf-media-edge-medium {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.bsf-media-edge-video {
    object-fit: contain;
}

@media (min-width: 992px) {
    .bsf-media-edge-end .bsf-media-edge-frame {
        margin-inline: 0 calc((100cqw - 100vw) / 2);
    }

    .bsf-media-edge-start .bsf-media-edge-frame {
        margin-inline: calc((100cqw - 100vw) / 2) 0;
    }
}
@media screen and (prefers-reduced-motion: no-preference) {
    /* Der Übergang gilt erst mit `bsf-motion-in`: das Scharfschalten versteckt sofort, ohne Bewegung. */
    [data-bsf-motion].bsf-motion-armed.bsf-motion-in, [data-bsf-motion].bsf-motion-armed.bsf-motion-in [data-bsf-motion-item] {
        transition-property: opacity, transform, clip-path;
        transition-timing-function: var(--bsf-motion-easing, cubic-bezier(.2, .6, .2, 1));
    }

    [data-bsf-motion].bsf-motion-armed [data-bsf-motion-item] {
        --bsf-motion-delay: 0ms;
    }

    /* Dauer je Geschwindigkeit; Items starten nach dem Wrapper (D-593). */

    [data-bsf-motion-speed="slow"].bsf-motion-armed.bsf-motion-in {
        transition-duration: var(--bsf-motion-duration-slow, .9s);
    }

    [data-bsf-motion-speed="slow"].bsf-motion-armed.bsf-motion-in [data-bsf-motion-item] {
        transition-duration: var(--bsf-motion-duration-slow, .9s);
        transition-delay: calc(var(--bsf-motion-duration-slow, .9s) + var(--bsf-motion-delay));
    }

    [data-bsf-motion-speed="normal"].bsf-motion-armed.bsf-motion-in {
        transition-duration: var(--bsf-motion-duration-normal, .6s);
    }

    [data-bsf-motion-speed="normal"].bsf-motion-armed.bsf-motion-in [data-bsf-motion-item] {
        transition-duration: var(--bsf-motion-duration-normal, .6s);
        transition-delay: calc(var(--bsf-motion-duration-normal, .6s) + var(--bsf-motion-delay));
    }

    [data-bsf-motion-speed="fast"].bsf-motion-armed.bsf-motion-in {
        transition-duration: var(--bsf-motion-duration-fast, .35s);
    }

    [data-bsf-motion-speed="fast"].bsf-motion-armed.bsf-motion-in [data-bsf-motion-item] {
        transition-duration: var(--bsf-motion-duration-fast, .35s);
        transition-delay: calc(var(--bsf-motion-duration-fast, .35s) + var(--bsf-motion-delay));
    }

    /* Startzustand je Modus, bis `bsf-motion-in` den Übergang auslöst. */

    [data-bsf-motion="fade"].bsf-motion-armed:not(.bsf-motion-in), [data-bsf-motion="fade"].bsf-motion-armed [data-bsf-motion-item]:not(.bsf-motion-in) {
        opacity: 0;
    }

    [data-bsf-motion="fade-from-bottom"].bsf-motion-armed:not(.bsf-motion-in), [data-bsf-motion="fade-from-bottom"].bsf-motion-armed [data-bsf-motion-item]:not(.bsf-motion-in) {
        opacity: 0;
        transform: translateY(var(--bsf-motion-distance, 2rem));
    }

    [data-bsf-motion="fade-from-top"].bsf-motion-armed:not(.bsf-motion-in), [data-bsf-motion="fade-from-top"].bsf-motion-armed [data-bsf-motion-item]:not(.bsf-motion-in) {
        opacity: 0;
        transform: translateY(calc(-1 * var(--bsf-motion-distance, 2rem)));
    }

    [data-bsf-motion="fade-from-left"].bsf-motion-armed:not(.bsf-motion-in), [data-bsf-motion="fade-from-left"].bsf-motion-armed [data-bsf-motion-item]:not(.bsf-motion-in) {
        opacity: 0;
        transform: translateX(calc(-1 * var(--bsf-motion-distance, 2rem)));
    }

    [data-bsf-motion="fade-from-right"].bsf-motion-armed:not(.bsf-motion-in), [data-bsf-motion="fade-from-right"].bsf-motion-armed [data-bsf-motion-item]:not(.bsf-motion-in) {
        opacity: 0;
        transform: translateX(var(--bsf-motion-distance, 2rem));
    }

    [data-bsf-motion="scale-in"].bsf-motion-armed:not(.bsf-motion-in), [data-bsf-motion="scale-in"].bsf-motion-armed [data-bsf-motion-item]:not(.bsf-motion-in) {
        opacity: 0;
        transform: scale(.94);
    }

    [data-bsf-motion="reveal"].bsf-motion-armed:not(.bsf-motion-in), [data-bsf-motion="reveal"].bsf-motion-armed [data-bsf-motion-item]:not(.bsf-motion-in) {
        clip-path: inset(0 0 100% 0);
    }

    /* `reveal` braucht ein interpolierbares Ziel: `inset(0)` statt `none`, bis die Zustände fallen. */
    [data-bsf-motion="reveal"].bsf-motion-armed.bsf-motion-in, [data-bsf-motion="reveal"].bsf-motion-armed.bsf-motion-in [data-bsf-motion-item].bsf-motion-in {
        clip-path: inset(0);
    }

    /* Horizontale Modi ohne Section (Footer): nur solange scharf, keine Scrollbar; der Fokusrahmen bleibt frei (D-591 Punkt 3). */
    @supports selector(:has(*)) {
        .bsf-widget:has(> [data-bsf-motion="fade-from-left"].bsf-motion-armed, > [data-bsf-motion="fade-from-right"].bsf-motion-armed) {
            overflow-x: clip;
            overflow-clip-margin: var(--bs-focus-ring-width, .25rem);
        }
    }
}
.bsf-header .navbar-toggler {
    color: var(--bsf-nav-link-color, var(--bs-body-color));
    border-color: color-mix(in srgb, currentColor 35%, transparent);
}

.bsf-header .navbar-toggler-icon {
    background-image:
        linear-gradient(currentColor, currentColor),
        linear-gradient(currentColor, currentColor),
        linear-gradient(currentColor, currentColor);
    background-position: center 21.43%, center 50%, center 78.57%;
    background-size: 73.33% 6.67%;
}

.bsf-header .navbar-toggler:focus {
    box-shadow: 0 0 0 .125rem var(--bsf-header-bg, var(--bs-body-bg)), 0 0 0 .25rem currentColor;
}

.bsf-nav .nav-link:focus-visible {
    box-shadow: 0 0 0 .125rem var(--bsf-header-bg, var(--bs-body-bg)), 0 0 0 .25rem var(--bsf-nav-link-color, var(--bs-body-color));
}

.bsf-nav .nav-link {
    color: var(--bsf-nav-link-color, var(--bs-body-color));
}

.bsf-nav .nav-link:hover,
.bsf-nav .nav-link:focus,
.bsf-nav .nav-link.active {
    color: var(--bsf-nav-link-hover-color, var(--bs-link-hover-color));
}

.bsf-nav .dropdown-menu {
    --bs-dropdown-bg: var(--bsf-nav-submenu-bg, var(--bs-body-bg));
    --bs-dropdown-link-color: var(--bsf-nav-submenu-link-color, var(--bs-body-color));
    --bs-dropdown-link-hover-color: var(--bsf-nav-submenu-link-hover-color, var(--bs-link-hover-color));
    --bs-dropdown-link-active-color: var(--bsf-nav-submenu-link-hover-color, var(--bs-link-hover-color));
    --bs-dropdown-link-hover-bg: transparent;
    --bs-dropdown-link-active-bg: transparent;
}

@media (min-width: 992px) {
    .bsf-nav .dropdown:hover > .dropdown-menu,
    .bsf-nav .dropdown:focus-within > .dropdown-menu {
        display: block;
    }
}

@media (max-width: 991.98px) {
    .bsf-nav .dropdown-menu {
        display: block;
        position: static;
        border: 0;
        padding-block: 0;
        margin-inline-start: 1rem;
    }
}

/*
    V1-Designkonvergenz (`D-667` B): die Kopfaktion aus `navigationMainButton`. Ab dem Breakpoint rechts neben der
    Navigation in einer Zeile.

    Design Excellence Welle 1 (AE-10 A, FS-5, T-2): unter 992 px steht sie nicht mehr erst im geoeffneten Menue, sondern
    in der geschlossenen Kopfleiste zwischen Logo und Menueknopf – kompakt (.875rem, schmale Polster), ohne Umbruch.
    Damit die Leiste auch bei 320 px einzeilig bleibt, wird das Logo mobil hoechstens 2,5rem hoch und fuellt nur den
    Platz, den Aktion und Menueknopf lassen (Basis 0: ein umbrechender Flex-Container bricht sonst um, bevor das Logo
    schrumpft); der Menueknopf ist mindestens 44 × 44 px. Keine zweite Leiste, keine zweite Aktion (D-488 Punkt 3). Ab 992 px
    stellt `order` die Aktion wie bisher hinter die Navigation.
*/
.bsf-nav-actions {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    min-width: 0;
    margin-inline: auto .5rem;
}

@media (max-width: 991.98px) {
    .bsf-nav-actions .btn {
        --bs-btn-padding-y: .375rem;
        --bs-btn-padding-x: .75rem;
        --bs-btn-font-size: .875rem;
        white-space: nowrap;
    }

    .bsf-header .bsf-logo {
        flex: 1 1 0;
        min-width: 0;
    }

    .bsf-header .bsf-logo-img {
        max-width: 100%;
        max-height: min(calc(var(--bsf-header-height, 3.75rem) - 20px), 2.5rem);
    }

    .bsf-header .navbar-toggler {
        min-width: 44px;
        min-height: 44px;
    }
}

@media (min-width: 992px) {
    .bsf-nav-actions {
        order: 1;
        margin-inline: 1rem 0;
    }
}

/*
    V1-Designkonvergenz (Abschluss, PL-Auftrag Navigation 992–1199 px): lange Menuepunkte zerfielen ab dem Breakpoint in
    Einzelwoerter („Events / & / Live- / Musik“), weil die Leiste jeden Punkt bis auf seine laengste Silbe schrumpfte.
    Allgemeine Regeln ohne Vertragsaenderung (Breakpoint, Quelle und Ebenen bleiben, D-480):
    - jeder Menuepunkt bricht hoechstens ausgewogen um (`text-wrap: balance`), nie unter einer Mindestbreite von etwa
      sechs Zeichen, steht mittig in seinem Feld (gleichmaessige Abstaende) und mittig zur Leiste;
    - zwischen 992 und 1199 px ruecken Punkte und Kopfaktion enger (kleinere Innenabstaende, 0,9375rem), damit die
      Leiste dort so selten wie moeglich umbricht.

    D-668 (Navigationsgroesse): `--bsf-nav-link-font-size` und `--bsf-nav-link-padding-x` entstehen nur bei
    `navigationDensity = compact` (`tokens/design-typography.twig`) und gelten dann ab 992 px durchgehend. Ohne sie
    greifen die bisherigen Werte: Bootstraps `--bs-nav-link-font-size` ist nicht gesetzt, die Schrift erbt also wie
    zuvor; der Innenabstand bleibt `--bs-navbar-nav-link-padding-x` bzw. zwischen 992 und 1199 px 0,4rem/0,9375rem.
    Das mobile Menue (unter 992 px) liest keinen der beiden Werte.
*/
@media (min-width: 992px) {
    .bsf-nav .navbar-nav {
        align-items: center;
    }

    .bsf-nav .navbar-nav > .nav-item > .nav-link {
        min-width: 6ch;
        line-height: 1.25;
        text-align: center;
        text-wrap: balance;
        font-size: var(--bsf-nav-link-font-size, var(--bs-nav-link-font-size));
        padding-inline: var(--bsf-nav-link-padding-x, var(--bs-navbar-nav-link-padding-x));
    }
}

@media (min-width: 992px) and (max-width: 1199.98px) {
    .bsf-nav .navbar-nav > .nav-item > .nav-link {
        padding-inline: var(--bsf-nav-link-padding-x, .4rem);
        font-size: var(--bsf-nav-link-font-size, .9375rem);
    }

    .bsf-nav-actions {
        margin-inline-start: .5rem;
    }

    .bsf-nav-actions .btn {
        --bs-btn-padding-x: .75rem;
        --bs-btn-font-size: .9375rem;
    }
}

.bsf-bg-overlay,
.bsf-bg-overlay-bg,
.bsf-bg-overlay-content {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
}

.bsf-bg-overlay-bg {
    background-color: rgba(var(--bs-emphasis-color-rgb), 0.75);
}

.bsf-bg-overlay-content {
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1;
    padding: 20px;
}

.bsf-bg-overlay {
    opacity: 0;
    transition: opacity 0.25s;
}

a:focus-visible .bsf-bg-overlay {
    opacity: 1;
}

@media (hover: hover) {
    a:hover .bsf-bg-overlay {
        opacity: 1;
    }
}

@media (prefers-reduced-motion: reduce) {
    .bsf-bg-overlay {
        transition: none;
    }
}
.bsf-popup {
    width: calc(100% - 2rem);
    max-width: 40rem;
    max-height: calc(100vh - 2rem);
    max-height: calc(100dvh - 2rem);
    padding: 0;
    border: 0;
    border-radius: var(--bs-border-radius-lg);
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
    overflow: hidden;
}

.bsf-popup.bsf-popup-narrow {
    max-width: 28rem;
}

.bsf-popup.bsf-popup-standard {
    max-width: 40rem;
}

.bsf-popup.bsf-popup-wide {
    max-width: 64rem;
}

.bsf-popup::backdrop {
    background-color: rgba(0, 0, 0, 0.6);
}

.bsf-popup[open] {
    opacity: 1;
    transition: opacity 0.2s ease;
}

html.bsf-popup-open {
    overflow: hidden;
}

.bsf-popup-panel {
    position: relative;
    max-height: calc(100vh - 2rem);
    max-height: calc(100dvh - 2rem);
    padding: 3rem 1.5rem 1.5rem;
    overflow-y: auto;
}

.bsf-popup-close {
    position: absolute;
    top: 0.5rem;
    right: 0.5rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border: 0;
    border-radius: var(--bs-border-radius);
    background-color: transparent;
    color: inherit;
}

/*
    V1-D3 (Abnahme der Popups): die Ueberschriftengruppe (`headingText.twig`) traegt `bsf-vertical-middle` mit
    `min-height: 100%` fuer seitliche Layouts. Im Dialog loeste das gegen die Panelhoehe auf: die Spalte endete mit
    der Ueberschriftengruppe, die Links darunter lagen ausserhalb des Dialogs und waren unsichtbar, aber fokussierbar
    (bestand schon in `a7664489`). Im Popup gilt deshalb die natuerliche Hoehe.
*/
.bsf-popup .bsf-vertical-middle {
    min-height: 0;
}

/* V1-D3: sichtbarer Fokus und Hover des Schliessen-Buttons in der Textfarbe des Popups (auf heller wie dunkler Flaeche). */
.bsf-popup-close:hover {
    background-color: color-mix(in srgb, currentColor 10%, transparent);
}

.bsf-popup-close:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
    .bsf-popup[open] {
        transition: none;
    }
}
.bsf-pricing-box {
    overflow: hidden;
}

.bsf-pricing-title {
    padding: 1rem 0;
    border-bottom: 1px solid var(--bs-border-color);
}

.bsf-pricing-title h3 {
    margin: 0;
    font-size: 1.5rem;
    font-weight: var(--bsf-heading-font-weight, 700);
}

.bsf-pricing-title.bsf-title-sm h3 {
    font-size: 1.25rem;
}

.bsf-pricing-price {
    position: relative;
    padding: 1rem 0;
    font-size: 2.5rem;
    font-weight: 700;
    line-height: 1;
}

.bsf-pricing-price .bsf-price-tenure {
    vertical-align: baseline;
    font-size: 1rem;
    font-weight: 400;
    letter-spacing: 1px;
}

.bsf-pricing-features {
    padding: 1rem 0;
    border-top: 1px solid var(--bs-border-color);
    border-bottom: 1px solid var(--bs-border-color);
}

.bsf-pricing-features ul {
    margin: 0;
    list-style: none;
}

.bsf-pricing-action {
    padding: 1.25rem 0;
}

.bsf-pricing-highlight {
    z-index: 10;
    box-shadow: 0 0 20px rgba(var(--bs-emphasis-color-rgb), 0.1);
}

.bsf-pricing-badge {
    background-color: var(--bsf-btn-bg, var(--bs-primary));
    color: var(--bsf-btn-color, #fff);
}

.bsf-pricelist-list .bsf-price-row + .bsf-price-row {
    margin-top: 1rem;
}

.bsf-pricelist-compact .bsf-price-row {
    padding-block: .5rem;
}

.bsf-pricelist-compact .bsf-price-row + .bsf-price-row {
    border-top: var(--bs-border-width) solid var(--bs-border-color);
}

.bsf-pricelist .price-category-title {
    margin-top: 2rem;
    margin-bottom: .75rem;
}

.bsf-pricelist .price-category-title:first-child {
    margin-top: 0;
}

/* `cards`: die Gruppenueberschrift steht als volle Rasterzeile; den Abstand zur Kartenreihe bringt der Rasterabstand. */
.bsf-pricelist-cards .price-category-title {
    margin-bottom: 0;
}

.bsf-price-leader {
    min-width: 1.5rem;
    margin-inline: .5rem;
    border-bottom: 2px dotted var(--bs-border-color);
    transform: translateY(-.3em);
}

.bsf-pricelist .price-desc {
    margin-top: .25rem;
    color: var(--bs-secondary-color);
}

.bsf-pricelist-image {
    aspect-ratio: 4 / 5;
    object-fit: cover;
}

.bsf-pricelist-image.bsf-pricelist-image-wide {
    aspect-ratio: 21 / 9;
}
.process-marker-filled {
    background-color: var(--bsf-btn-bg, var(--bs-primary));
    color: var(--bsf-btn-color, #fff);
}

.process-marker-outlined {
    border: 2px solid var(--bsf-process-accent, rgb(var(--bs-primary-rgb)));
    color: var(--bs-heading-color, inherit);
}

.process-marker-plain {
    color: var(--bsf-process-accent, rgb(var(--bs-primary-rgb)));
}

@media (min-width: 768px) {
    .process.process-alternating {
        position: relative;
    }

    .process.process-alternating > .process-step {
        flex: 0 0 calc(50% + 1.5rem);
        max-width: calc(50% + 1.5rem);
        padding-inline: 0;
    }

    .process.process-alternating > .process-step:nth-child(even) {
        margin-inline-start: calc(50% - 1.5rem);
    }

    .process.process-alternating > .process-step:nth-child(odd) > .process-step-inner {
        flex-direction: row-reverse;
        text-align: end;
    }

    .process.process-alternating:is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner::before,
    .process.process-alternating.process-connector-arrow > .process-step:not(:last-child) > .process-step-inner::after {
        content: none;
    }

    .process.process-alternating:is(.process-connector-line, .process-connector-arrow)::before {
        content: "";
        position: absolute;
        top: 1.5rem;
        bottom: 1.5rem;
        inset-inline-start: calc(50% - 1px);
        width: 2px;
        border-radius: 1px;
        background-color: var(--bsf-process-accent-muted, rgba(var(--bs-primary-rgb), .5));
    }

    .process.process-alternating.process-connector-arrow::after {
        content: "";
        position: absolute;
        bottom: 1.5rem;
        inset-inline-start: calc(50% - .25rem);
        width: .5rem;
        height: .5rem;
        border-right: 2px solid var(--bsf-process-accent, rgb(var(--bs-primary-rgb)));
        border-bottom: 2px solid var(--bsf-process-accent, rgb(var(--bs-primary-rgb)));
        transform: rotate(45deg);
    }

    .process.process-alternating > .process-step > .process-step-inner > .process-marker {
        position: relative;
        z-index: 1;
    }
}
.process:is(.process-connector-line, .process-connector-arrow) {
    --bs-gutter-y: 3rem;
}

.process:is(.process-connector-line, .process-connector-arrow) > .process-step {
    position: relative;
}

/* Grundregel: untereinander, Verbindung in der Zeilenluecke unter dem Schritt. */
.process:is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner::before {
    content: "";
    position: absolute;
    inset-inline-start: calc(var(--bs-gutter-x) * .5 + 1.5rem - 1px);
    top: calc(100% + .5rem);
    bottom: calc(-1 * var(--bs-gutter-y) + .5rem);
    width: 2px;
    border-radius: 1px;
    background-color: var(--bsf-process-accent-muted, rgba(var(--bs-primary-rgb), .5));
}

.process.process-connector-arrow > .process-step:not(:last-child) > .process-step-inner::after {
    content: "";
    position: absolute;
    inset-inline-start: calc(var(--bs-gutter-x) * .5 + 1.5rem - .25rem);
    bottom: calc(-1 * var(--bs-gutter-y) + .5rem + .1036rem);
    width: .5rem;
    height: .5rem;
    border-right: 2px solid var(--bsf-process-accent, rgb(var(--bs-primary-rgb)));
    border-bottom: 2px solid var(--bsf-process-accent, rgb(var(--bs-primary-rgb)));
    transform: rotate(45deg);
}

/* Karten: Markerachse im Polster (outlined zusaetzlich hinter dem Rahmen). */
.process:is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner.p-3::before {
    inset-inline-start: calc(var(--bs-gutter-x) * .5 + 2.5rem - 1px);
}

.process.process-connector-arrow > .process-step:not(:last-child) > .process-step-inner.p-3::after {
    inset-inline-start: calc(var(--bs-gutter-x) * .5 + 2.5rem - .25rem);
}

.process:is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner.border::before {
    inset-inline-start: calc(var(--bs-gutter-x) * .5 + var(--bs-border-width) + 2.5rem - 1px);
}

.process.process-connector-arrow > .process-step:not(:last-child) > .process-step-inner.border::after {
    inset-inline-start: calc(var(--bs-gutter-x) * .5 + var(--bs-border-width) + 2.5rem - .25rem);
}

@supports selector(:has(*)) {
    /* Ohne Marker: am Textanfang bzw. in der Mitte. */
    .process:is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner:not(:has(> .process-marker))::before {
        inset-inline-start: calc(var(--bs-gutter-x) * .5);
    }

    .process.process-connector-arrow > .process-step:not(:last-child) > .process-step-inner:not(:has(> .process-marker))::after {
        inset-inline-start: calc(var(--bs-gutter-x) * .5 + 1px - .25rem);
    }

    .process:is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner.p-3:not(:has(> .process-marker))::before {
        inset-inline-start: calc(var(--bs-gutter-x) * .5 + 1rem);
    }

    .process.process-connector-arrow > .process-step:not(:last-child) > .process-step-inner.p-3:not(:has(> .process-marker))::after {
        inset-inline-start: calc(var(--bs-gutter-x) * .5 + 1rem + 1px - .25rem);
    }

    .process:is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner.border:not(:has(> .process-marker))::before {
        inset-inline-start: calc(var(--bs-gutter-x) * .5 + var(--bs-border-width) + 1rem);
    }

    .process.process-connector-arrow > .process-step:not(:last-child) > .process-step-inner.border:not(:has(> .process-marker))::after {
        inset-inline-start: calc(var(--bs-gutter-x) * .5 + var(--bs-border-width) + 1rem + 1px - .25rem);
    }

    .process:is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner.text-center:not(:has(> .process-marker))::before {
        inset-inline-start: calc(50% - 1px);
    }

    .process.process-connector-arrow > .process-step:not(:last-child) > .process-step-inner.text-center:not(:has(> .process-marker))::after {
        inset-inline-start: calc(50% - .25rem);
    }

    /* Untereinander mit Marker, einfacher Schritt: die Linie beginnt unter dem Marker. */
    .process:is(.process-vertical, .process-alternating):is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner:not(.p-3):has(> .process-marker)::before {
        top: calc(3rem + .5rem);
    }
}

@media (min-width: 768px) {
    .process.process-horizontal:is(.row-cols-md-2, .row-cols-md-3, .row-cols-md-4, .row-cols-md-6):is(.process-connector-line, .process-connector-arrow) {
        --bs-gutter-x: 3rem;
    }

    /* Waagrecht: Bruecke im Gutter, Achse der ersten Titelzeile (einfacher Schritt ohne Marker). */
    .process.process-horizontal:is(.row-cols-md-2, .row-cols-md-3, .row-cols-md-4, .row-cols-md-6):is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner::before {
        top: calc(.875rem - 1px);
        bottom: auto;
        inset-inline-start: calc(100% - var(--bs-gutter-x) * .5 + .5rem);
        inset-inline-end: calc(-1 * var(--bs-gutter-x) * .5 + .5rem);
        width: auto;
        height: 2px;
    }

    .process.process-horizontal:is(.row-cols-md-2, .row-cols-md-3, .row-cols-md-4, .row-cols-md-6).process-connector-arrow > .process-step:not(:last-child) > .process-step-inner::after {
        top: calc(.875rem - .25rem);
        bottom: auto;
        inset-inline-start: auto;
        inset-inline-end: calc(-1 * var(--bs-gutter-x) * .5 + .5rem + .1036rem);
        transform: rotate(-45deg);
    }

    .process.process-horizontal:is(.row-cols-md-2, .row-cols-md-3, .row-cols-md-4, .row-cols-md-6).process-connector-arrow > .process-step:not(:last-child) > .process-step-inner:dir(rtl)::after {
        transform: rotate(135deg);
    }

    /* Karten mit Marker: Markerachse im Polster, outlined hinter dem Rahmen. */
    .process.process-horizontal:is(.row-cols-md-2, .row-cols-md-3, .row-cols-md-4, .row-cols-md-6):is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner.p-3::before {
        top: calc(2.5rem - 1px);
    }

    .process.process-horizontal:is(.row-cols-md-2, .row-cols-md-3, .row-cols-md-4, .row-cols-md-6).process-connector-arrow > .process-step:not(:last-child) > .process-step-inner.p-3::after {
        top: calc(2.5rem - .25rem);
    }

    .process.process-horizontal:is(.row-cols-md-2, .row-cols-md-3, .row-cols-md-4, .row-cols-md-6):is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner.border::before {
        top: calc(var(--bs-border-width) + 2.5rem - 1px);
    }

    .process.process-horizontal:is(.row-cols-md-2, .row-cols-md-3, .row-cols-md-4, .row-cols-md-6).process-connector-arrow > .process-step:not(:last-child) > .process-step-inner.border::after {
        top: calc(var(--bs-border-width) + 2.5rem - .25rem);
    }

    /* Zeilenende: keine Verbindung ueber den Umbruch. */
    .process.process-horizontal.row-cols-md-2 > .process-step:nth-child(2n) > .process-step-inner::before,
    .process.process-horizontal.row-cols-md-2 > .process-step:nth-child(2n) > .process-step-inner::after,
    .process.process-horizontal.row-cols-md-3 > .process-step:nth-child(3n) > .process-step-inner::before,
    .process.process-horizontal.row-cols-md-3 > .process-step:nth-child(3n) > .process-step-inner::after,
    .process.process-horizontal.row-cols-md-4 > .process-step:nth-child(4n) > .process-step-inner::before,
    .process.process-horizontal.row-cols-md-4 > .process-step:nth-child(4n) > .process-step-inner::after,
    .process.process-horizontal.row-cols-md-6 > .process-step:nth-child(6n) > .process-step-inner::before,
    .process.process-horizontal.row-cols-md-6 > .process-step:nth-child(6n) > .process-step-inner::after {
        content: none;
    }

    @supports selector(:has(*)) {
        /* Einfacher Schritt mit Marker: von Marker zu Marker auf der Markerachse. */
        .process.process-horizontal:is(.row-cols-md-2, .row-cols-md-3, .row-cols-md-4, .row-cols-md-6):is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner:not(.p-3):has(> .process-marker)::before {
            top: calc(1.5rem - 1px);
            inset-inline-start: calc(var(--bs-gutter-x) * .5 + 3rem + .5rem);
        }

        .process.process-horizontal:is(.row-cols-md-2, .row-cols-md-3, .row-cols-md-4, .row-cols-md-6).process-connector-arrow > .process-step:not(:last-child) > .process-step-inner:not(.p-3):has(> .process-marker)::after {
            top: calc(1.5rem - .25rem);
        }

        /* Karte ohne Marker: Achse der ersten Titelzeile im Polster. */
        .process.process-horizontal:is(.row-cols-md-2, .row-cols-md-3, .row-cols-md-4, .row-cols-md-6):is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner.p-3:not(:has(> .process-marker))::before {
            top: calc(1.875rem - 1px);
        }

        .process.process-horizontal:is(.row-cols-md-2, .row-cols-md-3, .row-cols-md-4, .row-cols-md-6).process-connector-arrow > .process-step:not(:last-child) > .process-step-inner.p-3:not(:has(> .process-marker))::after {
            top: calc(1.875rem - .25rem);
        }

        .process.process-horizontal:is(.row-cols-md-2, .row-cols-md-3, .row-cols-md-4, .row-cols-md-6):is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner.border:not(:has(> .process-marker))::before {
            top: calc(var(--bs-border-width) + 1.875rem - 1px);
        }

        .process.process-horizontal:is(.row-cols-md-2, .row-cols-md-3, .row-cols-md-4, .row-cols-md-6).process-connector-arrow > .process-step:not(:last-child) > .process-step-inner.border:not(:has(> .process-marker))::after {
            top: calc(var(--bs-border-width) + 1.875rem - .25rem);
        }
    }
}

@supports selector(:has(*)) {
    /* Zentrierter senkrechter Schritt mit Marker: Marker ueber dem Text, Verbindung mittig unter dem Schritt. */
    .process.process-vertical:is(.process-connector-line, .process-connector-arrow) > .process-step:not(:last-child) > .process-step-inner.text-center:has(> .process-marker)::before {
        top: calc(100% + .5rem);
        inset-inline-start: calc(50% - 1px);
    }

    .process.process-vertical.process-connector-arrow > .process-step:not(:last-child) > .process-step-inner.text-center:has(> .process-marker)::after {
        inset-inline-start: calc(50% - .25rem);
    }
}
.bsf-quote {
    position: relative;
    margin: 0;
}

.bsf-quote-text {
    font-size: clamp(1.25rem, 1.1rem + .6vw, 1.625rem);
    line-height: 1.45;
}

.bsf-quote-text > :last-child {
    margin-bottom: 0;
}

figure.bsf-quote .bsf-quote-text::before {
    content: open-quote;
    display: block;
    height: .6em;
    margin-bottom: .25rem;
    font-family: var(--bsf-font-secondary, Georgia, serif);
    font-size: 3em;
    line-height: .6;
    color: var(--bsf-quote-mark-color, rgb(var(--bs-primary-rgb)));
}

/*
    V1-D3 (Optionsprobe): `open-quote` erhoeht die Verschachtelungstiefe der Anfuehrungszeichen. Ohne Gegenstueck zeigte
    das zweite Zitat einer Seite das Zeichen der zweiten Ebene (de: `‚` statt `„`). `no-close-quote` schliesst die Ebene,
    ohne ein Zeichen auszugeben.
*/
figure.bsf-quote .bsf-quote-text::after {
    content: no-close-quote;
}

.bsf-quote-source {
    margin-top: 1rem;
    font-size: .9375rem;
    color: var(--bs-secondary-color);
}

.bsf-quote-source::before {
    content: "\2014\00A0";
}

.bsf-quote-statement .bsf-quote-text {
    font-size: clamp(1.5rem, 1.2rem + 1.4vw, 2.5rem);
    font-weight: var(--bsf-heading-font-weight, 600);
    line-height: 1.25;
    color: var(--bs-heading-color);
}

.bsf-quote-plain {
    padding: 0;
}

.bsf-quote-accent {
    padding-inline-start: 1.5rem;
    border-inline-start: .25rem solid var(--bsf-quote-mark-color, rgb(var(--bs-primary-rgb)));
}

.bsf-quote-panel {
    padding: clamp(1.5rem, 1rem + 2vw, 2.5rem);
    border-radius: var(--bs-border-radius-lg);
    background-color: rgba(var(--bs-body-color-rgb), .05);
}
html {
    scroll-behavior: smooth;
}

[id] {
    scroll-margin-top: var(--bsf-header-height, 3.75rem);
}

/*
    Nebenbefund N-2 (WCAG 2.4.1): die Sprungmarke „Zum Inhalt springen“ (`chrome/skip-link.twig`). Unsichtbar bis zum
    Tastaturfokus (`visually-hidden-focusable`), dann oben links ueber dem Kopf, in Seitenflaeche und Textfarbe mit
    Rahmen. Das Sprungziel (Seitenkopf oder `main`, `tabindex="-1"`) ist kein Bedienelement und zeigt keinen
    Fokusrahmen; der Versatz unter den klebenden Kopf kommt aus der Regel oben.
*/
.bsf-skip-link:focus {
    position: fixed;
    top: .75rem;
    left: .75rem;
    z-index: 1060;
    padding: .75rem 1rem;
    border-radius: var(--bs-border-radius);
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
    box-shadow: 0 0 0 2px currentColor;
    text-decoration: underline;
}

.bsf-slider:focus,
.bsf-content:focus {
    outline: none;
}

.bsf-goto-top {
    position: fixed;
    right: 1.5rem;
    bottom: 1.5rem;
    z-index: 1040;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: var(--bs-border-radius);
    background-color: var(--bsf-btn-bg, var(--bs-primary));
    color: var(--bsf-btn-color, #fff);
    text-decoration: none;
}

.bsf-goto-top:hover,
.bsf-goto-top:focus {
    background-color: var(--bsf-btn-bg-hover, var(--bs-primary));
    color: var(--bsf-btn-color-hover, #fff);
}

html.bsf-js .bsf-goto-top {
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.2s ease, visibility 0.2s;
}

html.bsf-js .bsf-goto-top.bsf-goto-top-visible {
    opacity: 1;
    visibility: visible;
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    html.bsf-js .bsf-goto-top {
        transition: none;
    }
}
.bsf-slider {
    position: relative;
    width: 100%;
    overflow: hidden;
}

.bsf-slider-track {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    scrollbar-width: none;
}

.bsf-slider-track::-webkit-scrollbar {
    display: none;
}

.bsf-slider-track > * {
    flex: 0 0 100%;
    scroll-snap-align: start;
}

.bsf-slider-prev,
.bsf-slider-next {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border: 0;
    border-radius: var(--bs-border-radius);
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
}

.bsf-slider-prev {
    left: 1rem;
}

.bsf-slider-next {
    right: 1rem;
}

.bsf-slide-number {
    position: absolute;
    right: 1.5rem;
    bottom: 1.5rem;
    z-index: 2;
    margin-bottom: 0;
    color: var(--bs-body-color);
}

.bsf-slide-number-current,
.bsf-slide-number-total {
    font-variant-numeric: tabular-nums;
}

/*
    V1-Designkonvergenz (PL 2026-10-15, Fortschreibung D-584): die Grenze zwischen Header-Slider und erster Section.
    Der Hero traegt keinen Aussenrand (`styles/hero.twig`). Hero mit `transitionBottom`: der Slider ueberlappt die erste
    Section um die Uebergangshoehe und liegt ueber ihr (z-index 1, unter dem Kopf mit 1030); die Section erhaelt dieselbe
    Hoehe als Abstand vor ihrem Inhalt – in der ausgeschnittenen Form erscheint sie, nicht der Seitenhintergrund. Erste
    Section mit eigenem `transitionTop`: Punkt 84, ihre Form hat Vorrang; sie ueberlappt den Hero nach oben, der Hero
    verlaengert sich um ihre Uebergangshoehe und verzichtet auf den eigenen Schnitt (wie `D-582`). Nur bei genau einem Hero
    (Regel 112) und nur mit `:has()`.
*/
@supports selector(:has(*)) {
    .bsf-slider:has(> .bsf-slider-track > .section.bsf-transition-bottom-small:only-child) {
        --bsf-hero-overlap: var(--bsf-transition-height-small, 2.5rem);
    }

    .bsf-slider:has(> .bsf-slider-track > .section.bsf-transition-bottom-medium:only-child) {
        --bsf-hero-overlap: var(--bsf-transition-height-medium, 5rem);
    }

    .bsf-slider:has(> .bsf-slider-track > .section.bsf-transition-bottom-large:only-child) {
        --bsf-hero-overlap: var(--bsf-transition-height-large, 7.5rem);
    }

    .bsf-slider:has(> .bsf-slider-track > .section.bsf-transition-bottom:only-child):has(+ .bsf-content > .section:first-child:not(.bsf-transition-top), + .bsf-content > style:first-child + .section:not(.bsf-transition-top)) {
        z-index: 1;
        margin-bottom: calc(-1 * var(--bsf-hero-overlap));
    }

    .bsf-slider:has(> .bsf-slider-track > .section.bsf-transition-bottom-small:only-child) + .bsf-content > .section:first-child:not(.bsf-transition-top)::before, .bsf-slider:has(> .bsf-slider-track > .section.bsf-transition-bottom-small:only-child) + .bsf-content > style:first-child + .section:not(.bsf-transition-top)::before {
        content: "";
        display: block;
        height: var(--bsf-transition-height-small, 2.5rem);
    }

    .bsf-slider:has(> .bsf-slider-track > .section.bsf-transition-bottom-medium:only-child) + .bsf-content > .section:first-child:not(.bsf-transition-top)::before, .bsf-slider:has(> .bsf-slider-track > .section.bsf-transition-bottom-medium:only-child) + .bsf-content > style:first-child + .section:not(.bsf-transition-top)::before {
        content: "";
        display: block;
        height: var(--bsf-transition-height-medium, 5rem);
    }

    .bsf-slider:has(> .bsf-slider-track > .section.bsf-transition-bottom-large:only-child) + .bsf-content > .section:first-child:not(.bsf-transition-top)::before, .bsf-slider:has(> .bsf-slider-track > .section.bsf-transition-bottom-large:only-child) + .bsf-content > style:first-child + .section:not(.bsf-transition-top)::before {
        content: "";
        display: block;
        height: var(--bsf-transition-height-large, 7.5rem);
    }

    .bsf-slider:has(> .bsf-slider-track > .section:only-child) + .bsf-content > .section:first-child.bsf-transition-top, .bsf-slider:has(> .bsf-slider-track > .section:only-child) + .bsf-content > style:first-child + .section.bsf-transition-top {
        margin-top: calc(-1 * var(--bsf-transition-top-h)) !important;
    }

    .bsf-slider:has(+ .bsf-content > .section:first-child.bsf-transition-top, + .bsf-content > style:first-child + .section.bsf-transition-top) > .bsf-slider-track > .section:only-child {
        clip-path: none;
    }

    .bsf-slider:has(+ .bsf-content > .section:first-child.bsf-transition-top-small, + .bsf-content > style:first-child + .section.bsf-transition-top-small) > .bsf-slider-track > .section:only-child::after {
        content: "";
        display: block;
        height: var(--bsf-transition-height-small, 2.5rem);
    }

    .bsf-slider:has(+ .bsf-content > .section:first-child.bsf-transition-top-medium, + .bsf-content > style:first-child + .section.bsf-transition-top-medium) > .bsf-slider-track > .section:only-child::after {
        content: "";
        display: block;
        height: var(--bsf-transition-height-medium, 5rem);
    }

    .bsf-slider:has(+ .bsf-content > .section:first-child.bsf-transition-top-large, + .bsf-content > style:first-child + .section.bsf-transition-top-large) > .bsf-slider-track > .section:only-child::after {
        content: "";
        display: block;
        height: var(--bsf-transition-height-large, 7.5rem);
    }
}

@media (prefers-reduced-motion: reduce) {
    .bsf-slider-track {
        scroll-behavior: auto;
    }
}
.bsf-social-icon {
    display: block;
    text-decoration: none;
    width: 2.5rem;
    height: 2.5rem;
    font-size: 1rem;
    line-height: calc(2.5rem - 2px);
    text-align: center;
    color: var(--bsf-social-text-color, inherit);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    overflow: hidden;
}

.bsf-social-icon i {
    display: block;
    width: auto;
    position: relative;
    line-height: inherit;
}

.bsf-social-icon:hover i:first-child,
.bsf-social-icon:focus-visible i:first-child {
    margin-top: calc((2.5rem - 2px) * -1);
}

.bsf-si-large {
    width: 3.5rem;
    height: 3.5rem;
    font-size: 1.4rem;
    line-height: calc(3.5rem - 2px);
}

.bsf-si-large:hover i:first-child,
.bsf-si-large:focus-visible i:first-child {
    margin-top: calc((3.5rem - 2px) * -1);
}

.bsf-si-small {
    width: 2rem;
    height: 2rem;
    font-size: 0.875rem;
    line-height: calc(2rem - 2px);
}

.bsf-si-small:hover i:first-child,
.bsf-si-small:focus-visible i:first-child {
    margin-top: calc((2rem - 2px) * -1);
}

.bsf-footer .bsf-social-icon,
.bsf-footer .bsf-social-icon:hover,
.bsf-footer .bsf-social-icon:focus {
    color: var(--bsf-social-text-color, inherit);
}

.bsf-social-icon > i {
    color: var(--bsf-social-icon-color, inherit);
}

.bsf-social-icon.bg-dark,
.bsf-footer .bsf-social-icon.bg-dark {
    color: #fff;
}

.bsf-si-filled {
    background-color: color-mix(in srgb, var(--bsf-social-icon-color, currentColor) 15%, transparent);
    border-color: transparent;
}

.bsf-si-outlined {
    background-color: transparent;
    border-color: var(--bsf-social-icon-color, currentColor);
}

.bsf-social-icon:hover {
    background-color: var(--bsf-social-hover-bg, transparent);
    border-color: var(--bsf-social-hover-bg, var(--bs-border-color));
}

.bsf-social-icon:hover > i,
.bsf-social-icon:hover > span {
    color: var(--bsf-social-hover-color, inherit);
}

.bsf-social-icon.bg-dark:hover > i {
    color: var(--bsf-social-icon-color, inherit);
}

.bsf-social-icon.bg-dark:hover > span {
    color: inherit;
}

.bsf-social-icon:focus-visible {
    outline: 2px solid var(--bs-body-color);
    outline-offset: 2px;
}

.bsf-footer .bsf-social-icon:focus-visible {
    outline-color: var(--bsf-footer-color, var(--bs-body-color));
}
[data-bsf-surface] {
    --bs-body-color: var(--bsf-ctx-color);
    --bs-body-color-rgb: var(--bsf-ctx-color-rgb);
    --bs-emphasis-color: var(--bsf-ctx-color);
    --bs-emphasis-color-rgb: var(--bsf-ctx-color-rgb);
    --bs-heading-color: var(--bsf-ctx-color);
    --bs-secondary-color: rgba(var(--bsf-ctx-color-rgb), .78);
    --bs-secondary-color-rgb: var(--bsf-ctx-color-rgb);
    --bs-tertiary-color: rgba(var(--bsf-ctx-color-rgb), .6);
    --bs-border-color: rgba(var(--bsf-ctx-color-rgb), .28);
    --bs-border-color-translucent: rgba(var(--bsf-ctx-color-rgb), .2);
    --bs-link-color: var(--bsf-ctx-color);
    --bs-link-color-rgb: var(--bsf-ctx-color-rgb);
    --bs-link-hover-color: var(--bsf-ctx-color);
    --bs-link-hover-color-rgb: var(--bsf-ctx-color-rgb);
    --bs-body-bg: var(--bsf-ctx-bg, transparent);
    --bsf-heading-span-color: var(--bsf-ctx-color);
    --bsf-accent: var(--bsf-ctx-color);
    --bsf-process-accent: var(--bsf-ctx-color);
    --bsf-process-accent-muted: rgba(var(--bsf-ctx-color-rgb), .5);
    --bsf-quote-mark-color: var(--bsf-ctx-color);
    color: var(--bsf-ctx-color);
}

.section > [data-bsf-surface] a:where(:not(.btn)) {
    text-decoration: underline;
    text-underline-offset: .15em;
}

[data-bsf-surface] .text-primary {
    color: var(--bsf-ctx-color) !important;
}

[data-bsf-surface] .border-primary {
    border-color: var(--bsf-ctx-color) !important;
}

[data-bsf-surface] .bg-light {
    background-color: rgba(var(--bsf-ctx-color-rgb), .08) !important;
}

[data-bsf-surface] .card {
    --bs-card-bg: transparent;
    --bs-card-color: var(--bsf-ctx-color);
    --bs-card-title-color: var(--bsf-ctx-color);
    --bs-card-border-color: rgba(var(--bsf-ctx-color-rgb), .28);
}

[data-bsf-surface] .table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--bsf-ctx-color);
    --bs-table-border-color: rgba(var(--bsf-ctx-color-rgb), .28);
}

/*
    Design Excellence Welle 1, DX-P4a: die feste Kopfspalte einer Rich-Text-Tabelle (`styles/table.twig`) braucht die
    deckende Farbe der Fläche. `--bsf-ctx-bg` steht nur bei deckender Farbfläche im Stil des Kennzeichens
    (`fragments/surface-context.twig`); auf Verlauf oder Bild gibt es keine richtige Zellfarbe, die Kopfspalte scrollt
    dort mit.
*/
[data-bsf-surface] figure.table {
    --bsf-table-sticky-bg: var(--bsf-ctx-bg);
}

[data-bsf-surface]:not([style*="--bsf-ctx-bg:"]) figure.table {
    --bsf-table-sticky-position: static;
}

[data-bsf-surface] .process-marker-filled,
[data-bsf-surface] .divider-icon-filled {
    background-color: var(--bsf-ctx-color);
    color: var(--bsf-ctx-contrast);
}

[data-bsf-surface] .alert.bg-transparent {
    --bs-alert-color: var(--bsf-ctx-color);
    --bs-alert-link-color: var(--bsf-ctx-color);
}

[data-bsf-surface] :is(.btn-outline-primary, .btn-outline-secondary, .btn-outline-dark, .btn-outline-light) {
    --bs-btn-color: var(--bsf-ctx-color);
    --bs-btn-border-color: var(--bsf-ctx-color);
    --bs-btn-hover-color: var(--bsf-ctx-contrast);
    --bs-btn-hover-bg: var(--bsf-ctx-color);
    --bs-btn-hover-border-color: var(--bsf-ctx-color);
    --bs-btn-active-color: var(--bsf-ctx-contrast);
    --bs-btn-active-bg: var(--bsf-ctx-color);
    --bs-btn-active-border-color: var(--bsf-ctx-color);
}

[data-bsf-surface] .btn-link {
    --bs-btn-color: var(--bsf-ctx-color);
    --bs-btn-hover-color: var(--bsf-ctx-color);
    --bs-btn-active-color: var(--bsf-ctx-color);
}

[data-bsf-surface] .btn {
    --bs-btn-focus-box-shadow: 0 0 0 .125rem var(--bsf-ctx-contrast), 0 0 0 .25rem var(--bsf-ctx-color);
}
.section.bsf-theme-surface > .bsf-dark,
.bsf-header.bsf-dark,
.bsf-footer.bsf-dark,
.bsf-popup.bsf-dark {
    --bs-secondary-color: rgba(var(--bs-body-color-rgb), .75);
    --bs-secondary-color-rgb: var(--bs-body-color-rgb);
    --bs-border-color: rgba(var(--bs-body-color-rgb), .2);
    --bs-border-color-translucent: rgba(var(--bs-body-color-rgb), .2);
}

@supports selector(:has(*)) {
    .section.bsf-theme-surface:has(> .bsf-dark) {
        --bs-tertiary-bg: rgba(var(--bs-body-color-rgb), .04);
    }
}

.section.bsf-theme-surface > .bsf-dark .bg-light {
    background-color: rgba(var(--bs-body-color-rgb), .06) !important;
}

.section.bsf-theme-surface > .bsf-dark .btn-outline-dark {
    --bs-btn-color: var(--bs-body-color);
    --bs-btn-border-color: var(--bs-body-color);
    --bs-btn-hover-color: var(--bs-body-bg);
    --bs-btn-hover-bg: var(--bs-body-color);
    --bs-btn-hover-border-color: var(--bs-body-color);
    --bs-btn-active-color: var(--bs-body-bg);
    --bs-btn-active-bg: var(--bs-body-color);
    --bs-btn-active-border-color: var(--bs-body-color);
    --bs-btn-disabled-color: var(--bs-body-color);
    --bs-btn-disabled-border-color: var(--bs-body-color);
}

.section.bsf-theme-surface > .bsf-dark .blockquote-footer {
    color: var(--bs-secondary-color);
}

.section.bsf-theme-surface > .bsf-dark .alert.bg-transparent {
    --bs-alert-color: var(--bs-body-color);
    --bs-alert-link-color: var(--bs-body-color);
}

.section.bsf-theme-surface > .bsf-dark .btn,
.bsf-footer.bsf-dark .btn,
.bsf-popup.bsf-dark .btn {
    --bs-btn-focus-shadow-rgb: var(--bs-body-color-rgb);
}
figure.table {
    --bsf-table-sticky-bg: var(--bs-body-bg);
    --bsf-table-sticky-position: sticky;
    width: 100%;
    max-width: 100%;
    margin: 0 0 1.5rem;
    overflow-x: auto;
    vertical-align: baseline;
}

.section:not(.bg-transparent) figure.table {
    --bsf-table-sticky-bg: var(--bs-tertiary-bg);
}

figure.table > table {
    width: 100%;
    margin: 0;
    border-collapse: collapse;
    color: inherit;
    font-variant-numeric: tabular-nums;
}

figure.table > table > * > tr {
    padding: 0;
    color: inherit;
    background-color: transparent;
    border-bottom-width: 0;
    box-shadow: none;
}

figure.table :is(th, td) {
    min-width: 7rem;
    padding: .625rem .75rem;
    -webkit-hyphens: auto;
    hyphens: auto;
    hyphenate-limit-chars: 10 5 5;
    text-align: start;
    vertical-align: top;
    border-bottom: 1px solid color-mix(in srgb, currentColor 22%, transparent);
}

figure.table :is(th, td):first-child {
    padding-inline-start: 0;
}

figure.table :is(th, td):last-child {
    padding-inline-end: 0;
}

@media (min-width: 768px) {
    figure.table :is(th, td) {
        padding: .75rem 1rem;
    }
}

figure.table thead th {
    vertical-align: bottom;
    font-weight: var(--bsf-heading-font-weight, 600);
    border-bottom: 2px solid color-mix(in srgb, currentColor 70%, transparent);
}

figure.table tbody th[scope="row"] {
    font-weight: 600;
}

figure.table tbody th[scope="row"]:first-child,
figure.table:has(tbody th[scope="row"]:first-child) thead th:first-child {
    position: var(--bsf-table-sticky-position);
    inset-inline-start: 0;
    z-index: 1;
    background-color: var(--bsf-table-sticky-bg);
}

figure.table > figcaption,
figure.table > table > caption {
    padding-top: .75rem;
    color: var(--bs-secondary-color);
    font-size: .875em;
}

figure.table > figcaption {
    position: sticky;
    inset-inline-start: 0;
}

figure.table.bsf-table-more-start,
figure.table.bsf-table-more-end {
    --bsf-table-hint: color-mix(in srgb, currentColor 35%, transparent);
    background-image: var(--bsf-table-hint-start, none), var(--bsf-table-hint-end, none);
    background-repeat: no-repeat;
    background-attachment: scroll;
    background-size: 2rem 100%;
    background-position: left center, right center;
}

figure.table.bsf-table-more-start {
    --bsf-table-hint-start: linear-gradient(to right, var(--bsf-table-hint), transparent);
}

figure.table.bsf-table-more-end {
    --bsf-table-hint-end: linear-gradient(to left, var(--bsf-table-hint), transparent);
}

figure.table.bsf-table-more-start:dir(rtl),
figure.table.bsf-table-more-end:dir(rtl) {
    background-position: right center, left center;
}

figure.table.bsf-table-more-start:dir(rtl) {
    --bsf-table-hint-start: linear-gradient(to left, var(--bsf-table-hint), transparent);
}

figure.table.bsf-table-more-end:dir(rtl) {
    --bsf-table-hint-end: linear-gradient(to right, var(--bsf-table-hint), transparent);
}

figure.table:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 4px;
}
.bsf-team {
    position: relative;
}

.bsf-team-image {
    position: relative;
}

.bsf-team-image img {
    display: block;
}

.bsf-team-title {
    position: relative;
}

.bsf-team-title .bsf-item-title {
    margin-bottom: 0;
}

.bsf-team-title span {
    display: block;
    margin-top: 5px;
    font-family: var(--bs-body-font-family);
    font-size: 1rem;
    font-weight: 400;
    color: var(--bs-secondary-color);
}
.bsf-ticker-wrap {
    position: relative;
    width: 100%;
    padding-left: 100%;
    box-sizing: content-box;
    overflow: hidden;
}

.bsf-ticker-wrap .bsf-ticker {
    display: inline-block;
    white-space: nowrap;
    padding-right: 100%;
    box-sizing: content-box;
    animation: bsf-ticker 50s linear infinite;
    animation-duration: var(--bsf-ticker-duration, 50s);
}

.bsf-ticker-wrap .bsf-ticker .bsf-ticker-item {
    display: inline-block;
    padding: 0 2rem;
    font-size: 1.5rem;
}

.bsf-ticker-static {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .5rem 2rem;
}

.bsf-ticker-static .bsf-ticker-item {
    font-size: 1.5rem;
}

.bsf-ticker-wrap.bsf-ticker-reverse {
    padding-left: 0;
    padding-right: 100%;
}

.bsf-ticker-wrap.bsf-ticker-reverse .bsf-ticker {
    padding-right: 0;
    padding-left: 100%;
    animation-name: bsf-ticker-reverse;
}

.bsf-ticker-wrap.bsf-pause-on-hover .bsf-ticker:hover {
    animation-play-state: paused;
}

@keyframes bsf-ticker {
    0% {
        transform: translate3d(0, 0, 0);
        visibility: visible;
    }

    100% {
        transform: translate3d(-100%, 0, 0);
    }
}

@keyframes bsf-ticker-reverse {
    0% {
        transform: translate3d(-100%, 0, 0);
        visibility: visible;
    }

    100% {
        transform: translate3d(0, 0, 0);
    }
}
/* Formlisten: die Kante einer Form, a und b setzt die Kante (siehe Erzeuger). */
.section.bsf-transition-top, .section.bsf-transition-bottom, .section.my-0 {
    --bsf-transition-shape-top-diagonal: 0% var(--bsf-ttop-a), 100% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1);
    --bsf-transition-shape-top-diagonal-rtl: 0% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 100% var(--bsf-ttop-a);
    --bsf-transition-shape-top-wave: 0% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .5), 4.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .629), 8.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .75), 12.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .854), 16.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .933), 20.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .983), 25% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 29.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .983), 33.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .933), 37.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .854), 41.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .75), 45.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .629), 50% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .5), 54.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .371), 58.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .25), 62.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .146), 66.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .067), 70.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .017), 75% var(--bsf-ttop-a), 79.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .017), 83.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .067), 87.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .146), 91.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .25), 95.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .371), 100% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .5);
    --bsf-transition-shape-top-wave-rtl: 0% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .5), 4.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .371), 8.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .25), 12.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .146), 16.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .067), 20.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .017), 25% var(--bsf-ttop-a), 29.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .017), 33.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .067), 37.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .146), 41.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .25), 45.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .371), 50% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .5), 54.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .629), 58.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .75), 62.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .854), 66.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .933), 70.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .983), 75% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 79.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .983), 83.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .933), 87.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .854), 91.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .75), 95.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .629), 100% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .5);
    --bsf-transition-shape-top-curve: 0% var(--bsf-ttop-a), 4.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .002), 8.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .007), 12.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .016), 16.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .028), 20.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .043), 25% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .062), 29.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .085), 33.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .111), 37.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .141), 41.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .174), 45.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .21), 50% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .25), 54.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .293), 58.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .34), 62.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .391), 66.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .444), 70.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .502), 75% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .562), 79.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .627), 83.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .694), 87.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .766), 91.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .84), 95.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .918), 100% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1);
    --bsf-transition-shape-top-curve-rtl: 0% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 4.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .918), 8.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .84), 12.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .766), 16.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .694), 20.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .627), 25% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .562), 29.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .502), 33.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .444), 37.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .391), 41.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .34), 45.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .293), 50% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .25), 54.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .21), 58.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .174), 62.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .141), 66.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .111), 70.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .085), 75% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .062), 79.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .043), 83.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .028), 87.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .016), 91.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .007), 95.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .002), 100% var(--bsf-ttop-a);
    --bsf-transition-shape-top-arch: 0% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 4.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .84), 8.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .694), 12.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .562), 16.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .444), 20.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .34), 25% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .25), 29.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .174), 33.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .111), 37.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .062), 41.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .028), 45.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .007), 50% var(--bsf-ttop-a), 54.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .007), 58.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .028), 62.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .062), 66.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .111), 70.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .174), 75% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .25), 79.167% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .34), 83.333% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .444), 87.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .562), 91.667% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .694), 95.833% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .84), 100% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1);
    --bsf-transition-shape-top-triangle: 0% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 50% var(--bsf-ttop-a), 100% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1);
    --bsf-transition-shape-top-zigzag: 0% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 6.25% var(--bsf-ttop-a), 12.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 18.75% var(--bsf-ttop-a), 25% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 31.25% var(--bsf-ttop-a), 37.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 43.75% var(--bsf-ttop-a), 50% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 56.25% var(--bsf-ttop-a), 62.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 68.75% var(--bsf-ttop-a), 75% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 81.25% var(--bsf-ttop-a), 87.5% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 93.75% var(--bsf-ttop-a), 100% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1);
    --bsf-transition-shape-top-stepped: 0% var(--bsf-ttop-a), 25% var(--bsf-ttop-a), 25% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .333), 50% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .333), 50% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .667), 75% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .667), 75% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 100% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1);
    --bsf-transition-shape-top-stepped-rtl: 0% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 25% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * 1), 25% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .667), 50% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .667), 50% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .333), 75% calc(var(--bsf-ttop-a) + var(--bsf-ttop-b) * .333), 75% var(--bsf-ttop-a), 100% var(--bsf-ttop-a);
    --bsf-transition-shape-bottom-diagonal: 100% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 0% var(--bsf-tbot-a);
    --bsf-transition-shape-bottom-diagonal-rtl: 100% var(--bsf-tbot-a), 0% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1);
    --bsf-transition-shape-bottom-wave: 100% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .5), 95.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .371), 91.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .25), 87.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .146), 83.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .067), 79.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .017), 75% var(--bsf-tbot-a), 70.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .017), 66.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .067), 62.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .146), 58.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .25), 54.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .371), 50% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .5), 45.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .629), 41.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .75), 37.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .854), 33.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .933), 29.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .983), 25% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 20.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .983), 16.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .933), 12.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .854), 8.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .75), 4.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .629), 0% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .5);
    --bsf-transition-shape-bottom-wave-rtl: 100% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .5), 95.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .629), 91.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .75), 87.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .854), 83.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .933), 79.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .983), 75% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 70.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .983), 66.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .933), 62.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .854), 58.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .75), 54.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .629), 50% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .5), 45.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .371), 41.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .25), 37.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .146), 33.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .067), 29.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .017), 25% var(--bsf-tbot-a), 20.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .017), 16.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .067), 12.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .146), 8.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .25), 4.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .371), 0% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .5);
    --bsf-transition-shape-bottom-curve: 100% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 95.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .918), 91.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .84), 87.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .766), 83.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .694), 79.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .627), 75% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .562), 70.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .502), 66.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .444), 62.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .391), 58.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .34), 54.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .293), 50% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .25), 45.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .21), 41.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .174), 37.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .141), 33.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .111), 29.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .085), 25% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .062), 20.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .043), 16.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .028), 12.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .016), 8.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .007), 4.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .002), 0% var(--bsf-tbot-a);
    --bsf-transition-shape-bottom-curve-rtl: 100% var(--bsf-tbot-a), 95.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .002), 91.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .007), 87.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .016), 83.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .028), 79.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .043), 75% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .062), 70.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .085), 66.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .111), 62.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .141), 58.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .174), 54.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .21), 50% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .25), 45.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .293), 41.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .34), 37.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .391), 33.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .444), 29.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .502), 25% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .562), 20.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .627), 16.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .694), 12.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .766), 8.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .84), 4.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .918), 0% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1);
    --bsf-transition-shape-bottom-arch: 100% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 95.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .84), 91.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .694), 87.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .562), 83.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .444), 79.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .34), 75% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .25), 70.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .174), 66.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .111), 62.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .062), 58.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .028), 54.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .007), 50% var(--bsf-tbot-a), 45.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .007), 41.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .028), 37.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .062), 33.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .111), 29.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .174), 25% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .25), 20.833% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .34), 16.667% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .444), 12.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .562), 8.333% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .694), 4.167% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .84), 0% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1);
    --bsf-transition-shape-bottom-triangle: 100% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 50% var(--bsf-tbot-a), 0% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1);
    --bsf-transition-shape-bottom-zigzag: 100% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 93.75% var(--bsf-tbot-a), 87.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 81.25% var(--bsf-tbot-a), 75% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 68.75% var(--bsf-tbot-a), 62.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 56.25% var(--bsf-tbot-a), 50% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 43.75% var(--bsf-tbot-a), 37.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 31.25% var(--bsf-tbot-a), 25% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 18.75% var(--bsf-tbot-a), 12.5% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 6.25% var(--bsf-tbot-a), 0% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1);
    --bsf-transition-shape-bottom-stepped: 100% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 75% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 75% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .667), 50% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .667), 50% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .333), 25% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .333), 25% var(--bsf-tbot-a), 0% var(--bsf-tbot-a);
    --bsf-transition-shape-bottom-stepped-rtl: 100% var(--bsf-tbot-a), 75% var(--bsf-tbot-a), 75% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .333), 50% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .333), 50% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .667), 25% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * .667), 25% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1), 0% calc(var(--bsf-tbot-a) + var(--bsf-tbot-b) * 1);
}

/* Formwahl der eigenen Kanten (D-585: automatic = leftToRight). */
.bsf-transition-top-diagonal {
    --bsf-transition-top-edge: var(--bsf-transition-shape-top-diagonal);
}
.bsf-transition-top-diagonal.bsf-transition-top-rtl {
    --bsf-transition-top-edge: var(--bsf-transition-shape-top-diagonal-rtl);
}
.bsf-transition-top-wave {
    --bsf-transition-top-edge: var(--bsf-transition-shape-top-wave);
}
.bsf-transition-top-wave.bsf-transition-top-rtl {
    --bsf-transition-top-edge: var(--bsf-transition-shape-top-wave-rtl);
}
.bsf-transition-top-curve {
    --bsf-transition-top-edge: var(--bsf-transition-shape-top-curve);
}
.bsf-transition-top-curve.bsf-transition-top-rtl {
    --bsf-transition-top-edge: var(--bsf-transition-shape-top-curve-rtl);
}
.bsf-transition-top-arch {
    --bsf-transition-top-edge: var(--bsf-transition-shape-top-arch);
}
.bsf-transition-top-triangle {
    --bsf-transition-top-edge: var(--bsf-transition-shape-top-triangle);
}
.bsf-transition-top-zigzag {
    --bsf-transition-top-edge: var(--bsf-transition-shape-top-zigzag);
}
.bsf-transition-top-stepped {
    --bsf-transition-top-edge: var(--bsf-transition-shape-top-stepped);
}
.bsf-transition-top-stepped.bsf-transition-top-rtl {
    --bsf-transition-top-edge: var(--bsf-transition-shape-top-stepped-rtl);
}
.bsf-transition-bottom-diagonal {
    --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-diagonal);
}
.bsf-transition-bottom-diagonal.bsf-transition-bottom-rtl {
    --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-diagonal-rtl);
}
.bsf-transition-bottom-wave {
    --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-wave);
}
.bsf-transition-bottom-wave.bsf-transition-bottom-rtl {
    --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-wave-rtl);
}
.bsf-transition-bottom-curve {
    --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-curve);
}
.bsf-transition-bottom-curve.bsf-transition-bottom-rtl {
    --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-curve-rtl);
}
.bsf-transition-bottom-arch {
    --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-arch);
}
.bsf-transition-bottom-triangle {
    --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-triangle);
}
.bsf-transition-bottom-zigzag {
    --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-zigzag);
}
.bsf-transition-bottom-stepped {
    --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-stepped);
}
.bsf-transition-bottom-stepped.bsf-transition-bottom-rtl {
    --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-stepped-rtl);
}

/* Höhen: die eigene Höhe je Seite. */
.bsf-transition-top-small {
    --bsf-transition-top-h: var(--bsf-transition-height-small, 2.5rem);
}
.bsf-transition-top-medium {
    --bsf-transition-top-h: var(--bsf-transition-height-medium, 5rem);
}
.bsf-transition-top-large {
    --bsf-transition-top-h: var(--bsf-transition-height-large, 7.5rem);
}
.bsf-transition-bottom-small {
    --bsf-transition-bottom-h: var(--bsf-transition-height-small, 2.5rem);
}
.bsf-transition-bottom-medium {
    --bsf-transition-bottom-h: var(--bsf-transition-height-medium, 5rem);
}
.bsf-transition-bottom-large {
    --bsf-transition-bottom-h: var(--bsf-transition-height-large, 7.5rem);
}

/* Grundschicht: transitionTop nach innen, Hero-Übergang (auch ohne :has()). */
.bsf-transition-top, .bsf-transition-standalone {
    clip-path: polygon(var(--bsf-transition-top-edge, 0 0, 100% 0), var(--bsf-transition-bottom-edge, 100% 100%, 0 100%));
}

.bsf-transition-top {
    --bsf-ttop-a: 0px;
    --bsf-ttop-b: var(--bsf-transition-top-h);
}

.bsf-transition-top::before, .bsf-transition-standalone.bsf-transition-bottom::after {
    content: "";
    display: block;
}

.bsf-transition-top-small::before, .bsf-transition-standalone.bsf-transition-bottom-small::after {
    height: calc(var(--bsf-transition-height-small, 2.5rem) + var(--bs-focus-ring-width, .25rem));
}

.bsf-transition-top-medium::before, .bsf-transition-standalone.bsf-transition-bottom-medium::after {
    height: calc(var(--bsf-transition-height-medium, 5rem) + var(--bs-focus-ring-width, .25rem));
}

.bsf-transition-top-large::before, .bsf-transition-standalone.bsf-transition-bottom-large::after {
    height: calc(var(--bsf-transition-height-large, 7.5rem) + var(--bs-focus-ring-width, .25rem));
}

.bsf-transition-standalone.bsf-transition-bottom {
    --bsf-tbot-a: 100%;
    --bsf-tbot-b: calc(-1 * var(--bsf-transition-bottom-h));
}

/* Aufbauschicht: transitionBottom, gemeinsame Grenze, Überlappung, Vorrang (D-582). */
@supports selector(:has(*)) {
    .bsf-transition-bottom {
        --bsf-tbot-a: 100%;
        --bsf-tbot-b: calc(-1 * var(--bsf-transition-bottom-h));
        clip-path: polygon(var(--bsf-transition-top-edge, 0 0, 100% 0), var(--bsf-transition-bottom-edge, 100% 100%, 0 100%));
    }

    .bsf-transition-bottom::after {
        content: "";
        display: block;
    }

    .bsf-transition-bottom-small::after {
        height: calc(var(--bsf-transition-height-small, 2.5rem) + var(--bs-focus-ring-width, .25rem));
    }

    .bsf-transition-bottom-medium::after {
        height: calc(var(--bsf-transition-height-medium, 5rem) + var(--bs-focus-ring-width, .25rem));
    }

    .bsf-transition-bottom-large::after {
        height: calc(var(--bsf-transition-height-large, 7.5rem) + var(--bs-focus-ring-width, .25rem));
    }

    /* transitionBottom an einer gemeinsamen Grenze: Überlappung, der Nachfolger erhält Abstand und Komplement. */
    .section.my-0.bsf-transition-bottom:has(+ .section.my-0:not(.bsf-transition-top), + style + .section.my-0:not(.bsf-transition-top)) {
        margin-bottom: calc(-1 * var(--bsf-transition-bottom-h)) !important;
    }

    .section.my-0.bsf-transition-bottom + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom + style + .section.my-0:not(.bsf-transition-top) {
        clip-path: polygon(var(--bsf-transition-top-edge, 0 0, 100% 0), var(--bsf-transition-bottom-edge, 100% 100%, 0 100%));
    }

    .section.my-0.bsf-transition-bottom + .section.my-0:not(.bsf-transition-top)::before, .section.my-0.bsf-transition-bottom + style + .section.my-0:not(.bsf-transition-top)::before {
        content: "";
        display: block;
    }

    .section.my-0.bsf-transition-bottom-small + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom-small + style + .section.my-0:not(.bsf-transition-top) {
        --bsf-ttop-a: var(--bsf-transition-height-small, 2.5rem);
        --bsf-ttop-b: calc(-1 * var(--bsf-transition-height-small, 2.5rem));
    }

    .section.my-0.bsf-transition-bottom-small + .section.my-0:not(.bsf-transition-top)::before, .section.my-0.bsf-transition-bottom-small + style + .section.my-0:not(.bsf-transition-top)::before {
        height: calc(var(--bsf-transition-height-small, 2.5rem) + var(--bs-focus-ring-width, .25rem));
    }

    .section.my-0.bsf-transition-bottom-medium + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom-medium + style + .section.my-0:not(.bsf-transition-top) {
        --bsf-ttop-a: var(--bsf-transition-height-medium, 5rem);
        --bsf-ttop-b: calc(-1 * var(--bsf-transition-height-medium, 5rem));
    }

    .section.my-0.bsf-transition-bottom-medium + .section.my-0:not(.bsf-transition-top)::before, .section.my-0.bsf-transition-bottom-medium + style + .section.my-0:not(.bsf-transition-top)::before {
        height: calc(var(--bsf-transition-height-medium, 5rem) + var(--bs-focus-ring-width, .25rem));
    }

    .section.my-0.bsf-transition-bottom-large + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom-large + style + .section.my-0:not(.bsf-transition-top) {
        --bsf-ttop-a: var(--bsf-transition-height-large, 7.5rem);
        --bsf-ttop-b: calc(-1 * var(--bsf-transition-height-large, 7.5rem));
    }

    .section.my-0.bsf-transition-bottom-large + .section.my-0:not(.bsf-transition-top)::before, .section.my-0.bsf-transition-bottom-large + style + .section.my-0:not(.bsf-transition-top)::before {
        height: calc(var(--bsf-transition-height-large, 7.5rem) + var(--bs-focus-ring-width, .25rem));
    }

    .section.my-0.bsf-transition-bottom-diagonal:not(.bsf-transition-bottom-rtl) + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom-diagonal:not(.bsf-transition-bottom-rtl) + style + .section.my-0:not(.bsf-transition-top) {
        --bsf-transition-top-edge: var(--bsf-transition-shape-top-diagonal);
    }

    .section.my-0.bsf-transition-bottom-diagonal.bsf-transition-bottom-rtl + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom-diagonal.bsf-transition-bottom-rtl + style + .section.my-0:not(.bsf-transition-top) {
        --bsf-transition-top-edge: var(--bsf-transition-shape-top-diagonal-rtl);
    }

    .section.my-0.bsf-transition-bottom-wave:not(.bsf-transition-bottom-rtl) + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom-wave:not(.bsf-transition-bottom-rtl) + style + .section.my-0:not(.bsf-transition-top) {
        --bsf-transition-top-edge: var(--bsf-transition-shape-top-wave);
    }

    .section.my-0.bsf-transition-bottom-wave.bsf-transition-bottom-rtl + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom-wave.bsf-transition-bottom-rtl + style + .section.my-0:not(.bsf-transition-top) {
        --bsf-transition-top-edge: var(--bsf-transition-shape-top-wave-rtl);
    }

    .section.my-0.bsf-transition-bottom-curve:not(.bsf-transition-bottom-rtl) + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom-curve:not(.bsf-transition-bottom-rtl) + style + .section.my-0:not(.bsf-transition-top) {
        --bsf-transition-top-edge: var(--bsf-transition-shape-top-curve);
    }

    .section.my-0.bsf-transition-bottom-curve.bsf-transition-bottom-rtl + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom-curve.bsf-transition-bottom-rtl + style + .section.my-0:not(.bsf-transition-top) {
        --bsf-transition-top-edge: var(--bsf-transition-shape-top-curve-rtl);
    }

    .section.my-0.bsf-transition-bottom-arch + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom-arch + style + .section.my-0:not(.bsf-transition-top) {
        --bsf-transition-top-edge: var(--bsf-transition-shape-top-arch);
    }

    .section.my-0.bsf-transition-bottom-triangle + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom-triangle + style + .section.my-0:not(.bsf-transition-top) {
        --bsf-transition-top-edge: var(--bsf-transition-shape-top-triangle);
    }

    .section.my-0.bsf-transition-bottom-zigzag + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom-zigzag + style + .section.my-0:not(.bsf-transition-top) {
        --bsf-transition-top-edge: var(--bsf-transition-shape-top-zigzag);
    }

    .section.my-0.bsf-transition-bottom-stepped:not(.bsf-transition-bottom-rtl) + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom-stepped:not(.bsf-transition-bottom-rtl) + style + .section.my-0:not(.bsf-transition-top) {
        --bsf-transition-top-edge: var(--bsf-transition-shape-top-stepped);
    }

    .section.my-0.bsf-transition-bottom-stepped.bsf-transition-bottom-rtl + .section.my-0:not(.bsf-transition-top), .section.my-0.bsf-transition-bottom-stepped.bsf-transition-bottom-rtl + style + .section.my-0:not(.bsf-transition-top) {
        --bsf-transition-top-edge: var(--bsf-transition-shape-top-stepped-rtl);
    }

    /* transitionTop an einer gemeinsamen Grenze: Überlappung nach oben, Vorrang vor transitionBottom (Punkt 84). */
    .section.my-0 + .section.my-0.bsf-transition-top, .section.my-0 + style + .section.my-0.bsf-transition-top {
        margin-top: calc(-1 * var(--bsf-transition-top-h)) !important;
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top, + style + .section.my-0.bsf-transition-top) {
        clip-path: polygon(var(--bsf-transition-top-edge, 0 0, 100% 0), var(--bsf-transition-bottom-edge, 100% 100%, 0 100%));
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top, + style + .section.my-0.bsf-transition-top)::after {
        content: "";
        display: block;
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-small, + style + .section.my-0.bsf-transition-top-small) {
        --bsf-tbot-a: calc(100% - var(--bsf-transition-height-small, 2.5rem));
        --bsf-tbot-b: var(--bsf-transition-height-small, 2.5rem);
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-small, + style + .section.my-0.bsf-transition-top-small)::after {
        height: calc(var(--bsf-transition-height-small, 2.5rem) + var(--bs-focus-ring-width, .25rem));
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-medium, + style + .section.my-0.bsf-transition-top-medium) {
        --bsf-tbot-a: calc(100% - var(--bsf-transition-height-medium, 5rem));
        --bsf-tbot-b: var(--bsf-transition-height-medium, 5rem);
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-medium, + style + .section.my-0.bsf-transition-top-medium)::after {
        height: calc(var(--bsf-transition-height-medium, 5rem) + var(--bs-focus-ring-width, .25rem));
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-large, + style + .section.my-0.bsf-transition-top-large) {
        --bsf-tbot-a: calc(100% - var(--bsf-transition-height-large, 7.5rem));
        --bsf-tbot-b: var(--bsf-transition-height-large, 7.5rem);
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-large, + style + .section.my-0.bsf-transition-top-large)::after {
        height: calc(var(--bsf-transition-height-large, 7.5rem) + var(--bs-focus-ring-width, .25rem));
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-diagonal:not(.bsf-transition-top-rtl), + style + .section.my-0.bsf-transition-top-diagonal:not(.bsf-transition-top-rtl)) {
        --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-diagonal);
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-diagonal.bsf-transition-top-rtl, + style + .section.my-0.bsf-transition-top-diagonal.bsf-transition-top-rtl) {
        --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-diagonal-rtl);
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-wave:not(.bsf-transition-top-rtl), + style + .section.my-0.bsf-transition-top-wave:not(.bsf-transition-top-rtl)) {
        --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-wave);
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-wave.bsf-transition-top-rtl, + style + .section.my-0.bsf-transition-top-wave.bsf-transition-top-rtl) {
        --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-wave-rtl);
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-curve:not(.bsf-transition-top-rtl), + style + .section.my-0.bsf-transition-top-curve:not(.bsf-transition-top-rtl)) {
        --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-curve);
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-curve.bsf-transition-top-rtl, + style + .section.my-0.bsf-transition-top-curve.bsf-transition-top-rtl) {
        --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-curve-rtl);
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-arch, + style + .section.my-0.bsf-transition-top-arch) {
        --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-arch);
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-triangle, + style + .section.my-0.bsf-transition-top-triangle) {
        --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-triangle);
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-zigzag, + style + .section.my-0.bsf-transition-top-zigzag) {
        --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-zigzag);
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-stepped:not(.bsf-transition-top-rtl), + style + .section.my-0.bsf-transition-top-stepped:not(.bsf-transition-top-rtl)) {
        --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-stepped);
    }

    .section.my-0:has(+ .section.my-0.bsf-transition-top-stepped.bsf-transition-top-rtl, + style + .section.my-0.bsf-transition-top-stepped.bsf-transition-top-rtl) {
        --bsf-transition-bottom-edge: var(--bsf-transition-shape-bottom-stepped-rtl);
    }
}
.bsf-ls-3 {
    letter-spacing: 3px !important;
}.bsf-my-6 {
    margin-top: 5rem !important;
    margin-bottom: 5rem !important;
}.bsf-pt-small { padding-top: clamp(1.5rem, 1.2857rem + .9524vw, 2rem) !important; }
.bsf-pb-small { padding-bottom: clamp(1.5rem, 1.2857rem + .9524vw, 2rem) !important; }
.bsf-pt-medium { padding-top: clamp(2.25rem, 1.9286rem + 1.4286vw, 3rem) !important; }
.bsf-pb-medium { padding-bottom: clamp(2.25rem, 1.9286rem + 1.4286vw, 3rem) !important; }
.bsf-pt-large { padding-top: clamp(4.5rem, 3.8571rem + 2.8571vw, 6rem) !important; }
.bsf-pb-large { padding-bottom: clamp(4.5rem, 3.8571rem + 2.8571vw, 6rem) !important; }
.bsf-pt-xlarge { padding-top: clamp(5.5rem, 4.4286rem + 4.7619vw, 8rem) !important; }
.bsf-pb-xlarge { padding-bottom: clamp(5.5rem, 4.4286rem + 4.7619vw, 8rem) !important; }

.bsf-text-smaller {
    font-size: 80% !important;
}

.bsf-text-smaller small,
.bsf-text-smaller .small {
    font-size: 90% !important;
}

.bsf-text-transform-none {
    text-transform: none !important;
}

.bsf-vertical-middle {
    position: relative;
    z-index: 3;
    display: flex;
    flex-flow: column;
    justify-content: center;
    width: 100%;
    min-height: 100%;
}

/*
    V1-Designkonvergenz (Abschluss, PL-Auftrag Kontaktblock): `min-height: 100%` zentriert die Ueberschriftengruppe in
    seitlichen Layouts, in denen sie allein in ihrer Spalte steht. Folgt in derselben Spalte weiterer Inhalt
    (Kontaktdaten, Buttonzeile, Preisliste), loeste die Hoehe gegen die Spalte auf und schob einen Leerraum davor
    (Kontakt: 92 px auf jeder Breite; Popups: Aktionen ausserhalb des Dialogs). Dann gilt die natuerliche Hoehe.
*/
.bsf-vertical-middle:not(:last-child) {
    min-height: 0;
}

.bsf-measure-narrow {
    max-width: 42rem;
}

.bsf-measure-standard {
    max-width: 56rem;
}

.bsf-measure-wide {
    max-width: 72rem;
}

.bsf-measure-center {
    margin-inline: auto;
}

.bsf-measure-end {
    margin-inline-start: auto;
}

@media (min-width: 768px) {
    .bsf-text-columns-2,
    .bsf-text-columns-3 {
        column-count: 2;
        column-gap: 2.5rem;
    }
}

@media (min-width: 992px) {
    .bsf-text-columns-3 {
        column-count: 3;
    }
}

:is(.bsf-text-columns-2, .bsf-text-columns-3) :is(h2, h3, h4, h5, h6, figure, table, blockquote) {
    break-inside: avoid;
}

.bsf-text-justify {
    text-align: justify;
    -webkit-hyphens: auto;
    hyphens: auto;
}

/*
    V1-D2 (`D-658`): `full` bei Einzelmedium und Embed ist randlos ueber die volle Fensterbreite. Die Section schneidet
    mit `overflow: hidden` die Breite der Scrollleiste ab; es entsteht kein waagrechter Ueberlauf.
*/
.bsf-full-bleed {
    width: 100vw;
    max-width: 100vw;
    margin-inline: calc(50% - 50vw);
}

.bsf-full-bleed > figcaption {
    padding-inline: max(.75rem, calc((100vw - 1320px) / 2));
}
