/* ─────────── Brand-Tokens — überall verfügbar ─────────── */
    :root {
      /* ── Fluide Root-Schriftgröße ────────────────────────────────────────
         Skaliert von 16 px (≤ 360 px Viewport) bis 21 px (≥ 1920 px).
         Formel: clamp(min, slope·vw + intercept, max)
           slope     = (21−16) / (1920−360) × 100 = 0.3205
           intercept = 16 − 0.003205 × 360       = 14.84 px
         Alle rem-Werte in Elementor skalieren damit automatisch. */
      font-size: clamp(18px, 0.1923vw + 17.31px, 21px);

      /* Typografie */
      --ff-font-display: "futura-pt", sans-serif;
      --ff-font-body:    "futura-pt", sans-serif;

      /* Brand-Farben (immer gleich) */
      --ff-color-bg:           #ffffff;
      --ff-color-text-default: #1a1a1a;
      --ff-color-text-muted:   rgba(26, 26, 26, 0.7);
      --ff-color-border:       rgba(26, 26, 26, 0.12);

      /* Plenary / Status-Farben (editionsübergreifend einheitlich) */
      --ff-color-plenary-yellow: #FFD200;
      --ff-color-plenary-pink:   #FF8DE6;

      /* Spacing-Tokens in rem (skalieren mit der fluid root font-size) */
      --ff-radius-sm: 0.25rem;  /*  4px @ 16px root */
      --ff-radius-md: 0.5rem;   /*  8px @ 16px root */
      --ff-space-xs:  0.25rem;  /*  4px @ 16px root */
      --ff-space-sm:  0.5rem;   /*  8px @ 16px root */
      --ff-space-md:  1rem;     /* 16px @ 16px root */
      --ff-space-lg:  1.5rem;   /* 24px @ 16px root */
      --ff-space-xl:  2.5rem;   /* 40px @ 16px root */

      /* Utility: abgeschrägte Ecken für Elementor-Container/Divs */
      --ff-cut-corner-size: clamp(18px, 2vw, 36px);
      --ff-cut-corner-x: var(--ff-cut-corner-size);
      --ff-cut-corner-y: var(--ff-cut-corner-size);
      --ff-cut-corner-padding: 35px;
    }

    .ff-cut-corners--flat-tall,
    .ff-cut-corners--abgeflacht-hoch {
      --ff-cut-corner-x: 15%;
      --ff-cut-corner-y: 4%;
    }

    .ff-cut-corners--flat-wide,
    .ff-cut-corners--abgeflacht-quer {
      --ff-cut-corner-x: 4%;
      --ff-cut-corner-y: 15%;
    }

    .ff-cut-corners,
    .ff-cut-corners > .elementor-widget-container,
    .ff-cut-corners .elementor-flip-box,
    .ff-cut-corners .elementor-flip-box__layer,
    .elementor-widget-flip-box.ff-cut-corners .elementor-flip-box,
    .elementor-widget-flip-box.ff-cut-corners .elementor-flip-box__layer {
      overflow: hidden;
      clip-path: polygon(
        var(--ff-cut-corner-x) 0,
        calc(100% - var(--ff-cut-corner-x)) 0,
        100% var(--ff-cut-corner-y),
        100% calc(100% - var(--ff-cut-corner-y)),
        calc(100% - var(--ff-cut-corner-x)) 100%,
        var(--ff-cut-corner-x) 100%,
        0 calc(100% - var(--ff-cut-corner-y)),
        0 var(--ff-cut-corner-y)
      );
    }

    .ff-cut-corners--diagonal,
    .ff-cut-corners--diagonal > .elementor-widget-container,
    .ff-cut-corners--diagonal .elementor-flip-box,
    .ff-cut-corners--diagonal .elementor-flip-box__layer,
    .elementor-widget-flip-box.ff-cut-corners--diagonal .elementor-flip-box,
    .elementor-widget-flip-box.ff-cut-corners--diagonal .elementor-flip-box__layer {
      overflow: hidden;
      clip-path: polygon(
        0 0,
        calc(100% - var(--ff-cut-corner-x)) 0,
        100% var(--ff-cut-corner-y),
        100% 100%,
        var(--ff-cut-corner-x) 100%,
        0 calc(100% - var(--ff-cut-corner-y))
      );
    }

    .ff-cut-corners :is(img, video, picture),
    .ff-cut-corners--diagonal :is(img, video, picture) {
      display: block;
      width: 100%;
      height: 100%;
      object-fit: cover;
    }

    .ff-cut-corners .elementor-flip-box__layer,
    .ff-cut-corners--diagonal .elementor-flip-box__layer {
      border-radius: 0 !important;
    }

    .ff-cut-corners .elementor-flip-box__layer__overlay,
    .ff-cut-corners--diagonal .elementor-flip-box__layer__overlay {
      padding: var(--ff-cut-corner-padding) !important;
    }

    body:not(.elementor-editor-active) .site-content .elementor-widget-flip-box .elementor-flip-box {
      height: var(--ff-flipbox-row-height, 280px);
      min-height: var(--ff-flipbox-row-height, 280px);
    }

    .site-content .elementor-widget-flip-box :is(.elementor-flip-box__layer__title, .elementor-flip-box__layer__description) {
      font-family: var(--e-global-typography-body_small-font-family), Sans-serif;
      font-size: var(--e-global-typography-body_small-font-size);
      font-weight: var(--e-global-typography-body_small-font-weight);
      line-height: var(--e-global-typography-body_small-line-height);
      text-transform: var(--e-global-typography-body_small-text-transform);
    }

    .ff-card-grid {
      align-items: stretch;
      overflow: visible !important;
    }

    .ff-card-grid > .e-con-inner {
      overflow: visible !important;
    }

    .ff-track-card {
      --ff-card-duration: 680ms;
      --ff-card-ease: cubic-bezier(0.2, 0.8, 0.2, 1);
      --ff-cut-corner-size: 24px;
      --ff-card-face-inset: clamp(0.75rem, 1.2vw, 1.5rem);
      display: grid !important;
      grid-template: 1fr / 1fr;
      min-height: clamp(18rem, 30vw, 36rem);
      perspective: 1200px;
      transform-style: preserve-3d;
      isolation: isolate;
      overflow: visible !important;
      clip-path: none !important;
      contain: none !important;
    }

    .ff-track-card:is(:hover, :focus-within, :focus-visible) {
      z-index: 20;
    }

    .ff-track-card > .e-con-inner {
      display: grid;
      grid-template: 1fr / 1fr;
      width: 100%;
      height: 100%;
      overflow: visible !important;
      clip-path: none !important;
      transform-style: preserve-3d;
    }

    .ff-track-card > .ff-track-card__face,
    .ff-track-card > .e-con-inner > .ff-track-card__face {
      grid-area: 1 / 1;
      min-width: 0;
      min-height: calc(100% - (var(--ff-card-face-inset) * 2));
      width: calc(100% - (var(--ff-card-face-inset) * 2));
      height: calc(100% - (var(--ff-card-face-inset) * 2));
      align-self: center;
      justify-self: center;
      backface-visibility: hidden;
      transform-origin: center;
      transform-style: preserve-3d;
      padding-block: clamp(1.25rem, 2vw, 2rem);
      overflow: hidden !important;
      z-index: 1;
      clip-path: polygon(
        var(--ff-cut-corner-x) 0,
        calc(100% - var(--ff-cut-corner-x)) 0,
        100% var(--ff-cut-corner-y),
        100% calc(100% - var(--ff-cut-corner-y)),
        calc(100% - var(--ff-cut-corner-x)) 100%,
        var(--ff-cut-corner-x) 100%,
        0 calc(100% - var(--ff-cut-corner-y)),
        0 var(--ff-cut-corner-y)
      ) !important;
      transition:
        opacity var(--ff-card-duration) var(--ff-card-ease),
        transform var(--ff-card-duration) var(--ff-card-ease),
        filter var(--ff-card-duration) var(--ff-card-ease);
      will-change: opacity, transform;
    }

    body.edition-2025 .ff-card-demo-section .ff-track-card > .ff-track-card__face,
    body.edition-2025 .ff-card-demo-section .ff-track-card > .e-con-inner > .ff-track-card__face {
      padding-bottom: clamp(2rem, 3vw, 3rem) !important;
    }

    .ff-track-card--flip > .ff-track-card__front,
    .ff-track-card--flip > .e-con-inner > .ff-track-card__front {
      z-index: 2;
      transform: rotateX(0deg);
    }

    .ff-track-card--flip > .ff-track-card__back,
    .ff-track-card--flip > .e-con-inner > .ff-track-card__back {
      z-index: 1;
      transform: rotateX(180deg);
    }

    .ff-track-card--flip:is(:hover, :focus-within, :focus-visible) > .ff-track-card__front,
    .ff-track-card--flip:is(:hover, :focus-within, :focus-visible) > .e-con-inner > .ff-track-card__front {
      z-index: 3;
      transform: rotateX(-180deg);
    }

    .ff-track-card--flip:is(:hover, :focus-within, :focus-visible) > .ff-track-card__back,
    .ff-track-card--flip:is(:hover, :focus-within, :focus-visible) > .e-con-inner > .ff-track-card__back {
      z-index: 3;
      transform: rotateX(0deg);
    }

    .ff-track-card--reveal > .ff-track-card__back,
    .ff-track-card--reveal > .e-con-inner > .ff-track-card__back {
      z-index: 2;
      opacity: 0;
      transform: translateY(102%);
    }

    .ff-track-card--reveal:is(:hover, :focus-within, :focus-visible) > .ff-track-card__front,
    .ff-track-card--reveal:is(:hover, :focus-within, :focus-visible) > .e-con-inner > .ff-track-card__front {
      filter: saturate(1.12) brightness(0.92);
    }

    .ff-track-card--reveal:is(:hover, :focus-within, :focus-visible) > .ff-track-card__back,
    .ff-track-card--reveal:is(:hover, :focus-within, :focus-visible) > .e-con-inner > .ff-track-card__back {
      opacity: 1;
      transform: translateY(0);
    }

    .ff-track-card__face :is(.elementor-widget-text-editor, .elementor-widget-text-editor p, .elementor-widget-text-editor li, .elementor-widget-text-editor div) {
      font-family: "Berlin Type", sans-serif;
    }

    .ff-track-card__back-title .elementor-heading-title {
      font-family: var(--e-global-typography-h6_typography-font-family, "futura-pt"), sans-serif;
      font-size: var(--e-global-typography-h6_typography-font-size, 1rem);
      font-weight: var(--e-global-typography-h6_typography-font-weight, 600);
      line-height: var(--e-global-typography-h6_typography-line-height, 1.3em);
      text-transform: var(--e-global-typography-h6_typography-text-transform, none);
    }

    @media (prefers-reduced-motion: reduce) {
      .ff-track-card > .ff-track-card__face,
      .ff-track-card > .e-con-inner > .ff-track-card__face {
        transition-duration: 1ms;
      }
    }

    /* ─────────── Layout-Tokens (editionsübergreifend) ───────────
       Diese Werte gelten für ALLE Editionen, damit Header (Elementor #3962,
       per Theme-Builder include/general), Footer (Elementor) und Content
       in der gleichen Maximalbreite und mit dem gleichen Gutter laufen —
       neue Edition wie Archiv. Editionspezifisch bleibt nur die Farb-
       palette (siehe Blöcke pro Edition unten). */
    body.edition-2026,
    body.edition-2025,
    body.edition-2027 {
      /* Globale Elementor-Farbe: "Automatische Farbe" */
      --e-global-color-auto_color: var(--ff-color-accent);
      font-variant-numeric:  tabular-nums;
      --ff-page-max-width:   1920px;
      --ff-page-gutter:      clamp(20px, 4vw, 80px);
      --ff-page-boxed-width: min(calc(100vw - (var(--ff-page-gutter) * 2)), var(--ff-page-max-width));
      --ff-rhythm-section:   0px;
      --ff-rhythm-compact:   clamp(24px, 3vw, 48px);
      --ff-rhythm-stack:     clamp(14px, 2vw, 24px);
      --ff-rhythm-inline:    clamp(20px, 3vw, 48px);
    }

    /* ─────────── Edition 2026 (aktuell) — nur Farben ─────────── */
    body.edition-2026 {
      --ff-color-accent:           #8f4ef3;
      --ff-color-track-business:   #3771C8;
      --ff-color-track-society:    #9CF8D6;
      --ff-color-track-planet:     #1F4E8F;
    }

    /* .ast-container bleibt 100% breit — der Elementor-Canvas darin darf
       Full-Width-Container nutzen, ohne durch Astras Wrapper geclipt zu
       werden. Container-Breite/Padding wird ausschließlich über die
       Elementor-Container-Settings (Boxed/Full) und unsere Padding-Formel
       für Boxed-/Bg-Container gesteuert. */

    /* Gutenberg-Content-Elemente (kein Elementor): direkte Kinder von
       .entry-content ODER .ast-container werden boxed-zentriert, damit
       Klassik-Editor-Pages und Astra-Page-Builder-Pages (die ohne
       entry-content-Wrapper rendern, z.B. /program/) das gleiche
       1920px-Layout bekommen. Gilt für alle Editionen.
       Elementor-Canvases (.elementor) und Theme-Builder-Wrapper
       (header/footer mit data-elementor-type) bleiben unangetastet. */
    :is(body.edition-2026, body.edition-2025, body.edition-2027) :where(
      .entry-header,
      .ast-single-post .entry-header,
      .page .entry-header,
      .entry-content > p,
      .entry-content > h1,
      .entry-content > h2,
      .entry-content > h3,
      .entry-content > h4,
      .entry-content > h5,
      .entry-content > h6,
      .entry-content > ul,
      .entry-content > ol,
      .entry-content > blockquote,
      .entry-content > .wp-block-group,
      .entry-content > .wp-block-columns,
      .entry-content > .wp-block-shortcode,
      .entry-content > .wp-block-heading,
      .entry-content > .wp-block-paragraph,
      .ast-container > p,
      .ast-container > h1,
      .ast-container > h2,
      .ast-container > h3,
      .ast-container > h4,
      .ast-container > h5,
      .ast-container > h6,
      .ast-container > ul,
      .ast-container > ol,
      .ast-container > blockquote,
      .ast-container > .wp-block-group,
      .ast-container > .wp-block-columns,
      .ast-container > .wp-block-shortcode,
      .ast-container > .wp-block-heading,
      .ast-container > .wp-block-paragraph
    ) {
      width: var(--ff-page-boxed-width);
      max-width: none;
      margin-left: auto;
      margin-right: auto;
      box-sizing: border-box;
    }

    /* (Astra-Header-/Footer-DOM-Beschränkungen entfernt — wir verwenden jetzt
       Elementor Theme-Builder Header #3962 + Footer #364/3754/3772; die
       alten #ast-desktop-header, #ast-mobile-header, #colophon-Selektoren
       wären Dead Code, weil diese Elemente nicht mehr gerendert werden.) */

    /* Vertikaler Rhythmus: Section-, Stack- und Inline-Abstände kommen aus
       wenigen Tokens statt aus Einzelkorrekturen je Elementor-Block. */
    :is(body.edition-2026, body.edition-2025, body.edition-2027) .site-content .elementor {
      display: flex;
      flex-direction: column;
      row-gap: var(--ff-rhythm-section);
    }

    /* Section-Margins respektieren: --margin-top/-bottom werden von Elementor
       je Container gesetzt (z.B. Team-Page 100px/150px für vertikalen Rhythmus
       zwischen Mitgliedern). Vorher hartes margin:0 !important hat alle
       Abstände pro Container zerstört. Jetzt mit var()-Fallback: wenn der
       Container ein Margin im Editor gesetzt hat, gilt es; sonst 0. */
    :is(body.edition-2026, body.edition-2025, body.edition-2027) .site-content .elementor > .e-con.e-parent {
      margin-top: var(--margin-top, 0) !important;
      margin-bottom: var(--margin-bottom, 0) !important;
    }

    /* Text-Editor-Widget: erstes/letztes Kind-Element kriegt 0 vertikaler Margin.
       Browser-Defaults (`p { margin-block: 1em }`, `h2 { margin-block-start: 0.83em }`
       etc.) erzeugen sonst eine "Geistermarge" innerhalb des Widgets, die
       als Lücke zwischen aufeinanderfolgenden Text-Editor-Widgets in einem
       flex-Container sichtbar wird — selbst wenn der Container flex_gap:0 hat.
       Mit dieser Regel ist Container-flex_gap die einzige Quelle für vertikale
       Abstände zwischen Text-Editor-Widgets. Interne mehrzeilige Texte
       behalten ihre Paragraf-Abstände, weil nur :first/:last-child gestrippt
       werden. */
    .elementor-widget-text-editor > .elementor-widget-container > :first-child {
      margin-block-start: 0;
    }
    .elementor-widget-text-editor > .elementor-widget-container > :last-child {
      margin-block-end: 0;
    }

    /* Heading-Widget koppelt jede .elementor-heading-title per hart codiertem
       Default an die globale Primary-Typografie. Generische Regel
       '.elementor-widget-heading .elementor-heading-title { font-size:
       var(--e-global-typography-primary-font-size) }' (Spezifität 0,2,0)
       schlägt die Kit-Regel '.elementor-kit-12 hN' (0,1,1). Erste Idee:
       Variable per h-Tag-Scope auf 'initial' setzen — funktioniert nicht,
       weil var()-IACVT die Property auf inherit setzt (h1 wurde 1rem
       statt 4rem). Stattdessen explizite Per-Tag-Overrides mit Spezifität
       (0,3,1) > Widget-Regel. Werte spiegeln Kit-Einstellungen (Website-Einstellungen
       → Theme Style → Typography → H1...H6) — wenn du die änderst,
       diese Regel mitziehen. */
    /* Fluide Typografie-Skala wird nun direkt von Elementor-Website-Einstellungen verwaltet. */

    /* (gelöscht) — Globaler Standard-Rhythmus auf jedem .e-con setzte
       --row-gap/--column-gap mit höherer Spezifität als Elementors
       per-Container-Inline-CSS. Effekt: Container-flex_gap aus dem
       Elementor-UI (z. B. mm1txt = 0) wurde stillschweigend
       überschrieben. Per-Container-Settings im CMS sind jetzt die
       Quelle der Wahrheit; Container ohne explizites Gap erben
       Elementor-Defaults (oder können global in Website-Einstellungen →
       Theme Style → Container setzen). */

    :is(
      [data-elementor-type="footer"],
      .elementor-location-footer
    ) {
      display: flex;
      flex-direction: column;
      row-gap: 0;
    }

    /* (gelöscht) — Footer-Container-Gap- und -Padding-Overrides.
       Genau wie die globale Rhythmus-Regel ein paar Zeilen darüber:
       diese Regeln überschrieben die per-Container flex_gap und Padding
       aus dem Elementor-UI. Statt CSS-Defaults sollen die einzelnen
       Footer-Container ihre Padding/Gap-Werte direkt in Elementor halten
       (Layout-Tab → Items Gap / Advanced > Layout → Padding). */

    /* Die globalen Breiten- und Padding-Formeln wurden auf Wunsch entfernt.
       Elementor steuert ab sofort alle Container-Breiten zu 100% nativ. */

    /* =========================================================================
       FLUIDES BOXED-PADDING (Elementor-Default-Override)
       Elementor-Nutzer setzen oft versehentlich das Padding auf 0 (z.B. im Header/Footer).
       Um zu verhindern, dass Inhalte am Rand kleben, erzwingen wir hier als Minimum
       den Wert aus den globalen Elementor "Website-Einstellungen" (Container Padding).
       Wir nutzen max() und !important auf dem äußeren Container, um versehentliche
       0px zu überstimmen, ohne ein Doppel-Padding auszulösen. Größere manuelle
       Werte (z.B. 100px) werden durch max() aber weiterhin respektiert!
       ========================================================================= */
    .e-con-boxed {
      padding-left: max(var(--container-default-padding-left, 20px), var(--padding-left, 0px)) !important;
      padding-right: max(var(--container-default-padding-right, 20px), var(--padding-right, 0px)) !important;
    }

    /* Full-Width-Container sollen standardmäßig KEINEN Gutter haben,
       damit z.B. Hero-Bilder randlos laufen können. */
    .e-con-full {
      --container-default-padding-left: 0px !important;
      --container-default-padding-right: 0px !important;
    }

    /* Footer-Nav: Elementor rendert zusätzlich zum vertikalen Hauptmenü
       immer ein Dropdown-Markup für responsive Menüs. Im Footer darf diese
       Kopie nie sichtbar sein, sonst erscheinen Menüpunkte doppelt und die
       Dropdown-Aktivfarben (grün/pink) überschreiben die Footer-Farben. */
    :is(
      [data-elementor-type="footer"],
      .elementor-location-footer
    ) .elementor-widget-nav-menu .elementor-nav-menu--dropdown,
    :is(
      [data-elementor-type="footer"],
      .elementor-location-footer
    ) .elementor-widget-nav-menu .elementor-menu-toggle {
      display: none !important;
      visibility: hidden !important;
    }

    :is(
      [data-elementor-type="footer"],
      .elementor-location-footer
    ) .elementor-widget-nav-menu .elementor-nav-menu--main {
      display: block !important;
    }

    /* Barrierefreiheits-Fokussystem:
       - keine dotted outline
       - flächige, transparente Akzent-Überlagerung
       - 3px größere Fokusfläche via box-shadow
       - Akzentfarbe bei 15% Deckkraft als dezentes Fokus-Highlight.
         Hinweis: 15% unterschreitet die 3:1-Kontrastschwelle für Fokus-
         Indikatoren (WCAG 2.4.7/2.4.11) — bewusst so gewünscht. */
    body {
      --ff-focus-surface: color-mix(in srgb, var(--e-global-color-accent, var(--ff-color-accent, #A6007D)) 15%, transparent);
      --ff-focus-text: #0A0A0A;
    }

    ::selection {
      background-color: var(--e-global-color-accent, var(--ff-color-accent, #A6007D)) !important;
      color: #FFFFFF !important;
    }
    ::-moz-selection {
      background-color: var(--e-global-color-accent, var(--ff-color-accent, #A6007D)) !important;
      color: #FFFFFF !important;
    }

    /* Dynamische Button-Farbe für den Footer (z.B. Newsletter) */
    body:not(.elementor-editor-active) [data-elementor-type="footer"] .elementor-button {
      background-color: var(--e-global-color-accent, var(--ff-color-accent, #A6007D)) !important;
    }
    body:not(.elementor-editor-active) [data-elementor-type="footer"] .elementor-button:hover,
    body:not(.elementor-editor-active) [data-elementor-type="footer"] .elementor-button:focus {
      background-color: color-mix(in srgb, var(--e-global-color-accent, var(--ff-color-accent, #A6007D)) 85%, black) !important;
    }

    /* Footer-Textlinks (z.B. §STN.) Hover-Effekt: 2px Linie in Akzentfarbe */
    body:not(.elementor-editor-active) [data-elementor-type="footer"] .elementor-text-editor a:not(.elementor-button),
    body:not(.elementor-editor-active) [data-elementor-type="footer"] .elementor-widget-text-editor a:not(.elementor-button) {
      transition: text-decoration-color .16s ease !important;
    }
    body:not(.elementor-editor-active) [data-elementor-type="footer"] .elementor-text-editor a:not(.elementor-button):hover,
    body:not(.elementor-editor-active) [data-elementor-type="footer"] .elementor-widget-text-editor a:not(.elementor-button):hover,
    body:not(.elementor-editor-active) [data-elementor-type="footer"] .elementor-text-editor a:not(.elementor-button):focus,
    body:not(.elementor-editor-active) [data-elementor-type="footer"] .elementor-widget-text-editor a:not(.elementor-button):focus {
      text-decoration-line: underline !important;
      text-decoration-thickness: 2px !important;
      text-decoration-color: var(--e-global-color-accent, var(--ff-color-accent)) !important;
    }

    html:not([lang^="en"]) .ff-footer-credit__en,
    html[lang^="en"] .ff-footer-credit__de {
      display: none;
    }

    :where(
      a[href],
      button,
      summary,
      input,
      select,
      textarea,
      [role="button"],
      [tabindex]:not([tabindex="-1"]),
      .elementor-button,
      .elementor-menu-toggle
    ):focus {
      outline: none !important;
    }

    :where(
      a[href],
      button,
      summary,
      input,
      select,
      textarea,
      [role="button"],
      [tabindex]:not([tabindex="-1"]),
      .elementor-button,
      .elementor-menu-toggle
    ):focus-visible {
      outline: none !important;
      background-color: var(--ff-focus-surface) !important;
      box-shadow: 0 0 0 3px var(--ff-focus-surface) !important;
      color: var(--ff-focus-text) !important;
      fill: var(--ff-focus-text) !important;
      text-decoration-color: transparent !important;
    }

    body:not(.elementor-editor-active) :where(
      a[href],
      button,
      summary,
      [role="button"],
      [tabindex]:not([tabindex="-1"]),
      .elementor-button,
      .elementor-menu-toggle
    ):focus-visible {
      border-radius: 0;
    }

    :where(input, select, textarea):focus-visible {
      border-color: var(--ff-focus-surface) !important;
    }

    body.error404 .search-form:focus-within .search-field,
    body.error404 .search-form .search-field:is(:active, :focus, :focus-visible) {
      border-color: var(--ff-color-accent, var(--e-global-color-accent, #cf369d)) !important;
      background-color: #fff !important;
      box-shadow: none !important;
      color: var(--e-global-color-text, #2B2E34) !important;
    }

    :where(
      a[href],
      button,
      .elementor-button,
      .elementor-menu-toggle
    ):focus-visible :is(svg, path, span) {
      color: var(--ff-focus-text) !important;
      fill: var(--ff-focus-text) !important;
    }

    [data-elementor-type="header"] .elementor-menu-toggle,
    .elementor-location-header .elementor-menu-toggle {
      inline-size: 44px !important;
      block-size: 44px !important;
      min-inline-size: 44px !important;
      min-block-size: 44px !important;
      max-inline-size: 44px !important;
      max-block-size: 44px !important;
      box-sizing: border-box !important;
      padding: 0 !important;
    }

    [data-elementor-type="header"] .elementor-menu-toggle:not(:focus-visible),
    .elementor-location-header .elementor-menu-toggle:not(:focus-visible) {
      background: transparent !important;
      box-shadow: none !important;
    }

    [data-elementor-type="header"] .elementor-menu-toggle:hover:not(:focus-visible),
    [data-elementor-type="header"] .elementor-menu-toggle.elementor-active:not(:focus-visible),
    .elementor-location-header .elementor-menu-toggle:hover:not(:focus-visible),
    .elementor-location-header .elementor-menu-toggle.elementor-active:not(:focus-visible) {
      background: transparent !important;
      box-shadow: none !important;
    }

    [data-elementor-type="header"] .elementor-menu-toggle :is(
      svg,
      i[class*="eicon"],
      .elementor-menu-toggle__icon--open,
      .elementor-menu-toggle__icon--close
    ),
    .elementor-location-header .elementor-menu-toggle :is(
      svg,
      i[class*="eicon"],
      .elementor-menu-toggle__icon--open,
      .elementor-menu-toggle__icon--close
    ) {
      inline-size: 32px !important;
      block-size: 32px !important;
      font-size: 32px !important;
      line-height: 1 !important;
    }

    /* Menü-Hover: Unterstreichungen dürfen nicht erst von der Textfarbe
       (schwarz) zur Akzentfarbe animieren. Elementor zeichnet seine
       Pointer-Linie über ::before/::after; Browser-Textdekorationen ziehen
       sonst kurz currentColor. Daher beide Quellen direkt einfärben. */
    body:not(.elementor-editor-active) :is(
      [data-elementor-type="header"],
      [data-elementor-type="footer"],
      .elementor-location-header,
      .elementor-location-footer
    ) .elementor-widget-nav-menu :is(a, a:hover, a:focus, a.elementor-item-active) {
      text-decoration-color: var(--e-global-color-accent, var(--ff-color-accent)) !important;
    }

    body:not(.elementor-editor-active) :is(
      [data-elementor-type="header"],
      [data-elementor-type="footer"],
      .elementor-location-header,
      .elementor-location-footer
    ) .elementor-widget-nav-menu :is(a::before, a::after) {
      background-color: var(--e-global-color-accent, var(--ff-color-accent)) !important;
      border-color: var(--e-global-color-accent, var(--ff-color-accent)) !important;
    }

    /* Globale Korrektur der vertikalen Ausrichtung für Checkboxen und Radiobuttons in allen Elementor-Formularen */
    body:not(.elementor-editor-active) .elementor-widget-form .elementor-field-option {
      display: inline-flex;
      align-items: center;
    }

    body:not(.elementor-editor-active) .elementor-widget-form .elementor-field-option :is(input[type="radio"], input[type="checkbox"]) {
      flex: 0 0 auto;
      margin: 0 8px 0 0 !important;
    }

    body:not(.elementor-editor-active) .elementor-widget-form .elementor-subgroup-inline .elementor-field-option:not(:last-child) {
      margin-right: 16px;
    }

    /* ─── Mobiles Menü (Elementor Nav-Menu-Dropdown) ───
       Wichtig: `.elementor-nav-menu--dropdown` ist KEIN mobile-exklusiver
       Selektor — Elementor verwendet ihn auch für Desktop-Submenüs (<ul>).
       Daher zielen wir nur auf das mobile <nav>-Wrapper-Element
       (`nav.elementor-nav-menu--dropdown.elementor-nav-menu__container`)
       und wrappen alles in @media. */
    [data-elementor-type="header"] > .e-con {
      position: relative;
    }
    [data-elementor-type="header"] > .e-con .elementor-widget-nav-menu {
      flex: 0 0 auto;
      margin-left: auto;
    }

    @media (max-width: 1024px) {
      :is(body.edition-2026, body.edition-2025, body.edition-2027) .site-content .elementor > .e-con-boxed,
      :is(body.edition-2026, body.edition-2025, body.edition-2027) .site-content .elementor .e-con-boxed.e-parent {
        padding-left: max(var(--ff-page-gutter, 20px), calc((100vw - var(--ff-page-max-width, 1920px)) / 2)) !important;
        padding-right: max(var(--ff-page-gutter, 20px), calc((100vw - var(--ff-page-max-width, 1920px)) / 2)) !important;
        box-sizing: border-box !important;
      }

      :is(body.edition-2026, body.edition-2025, body.edition-2027) .site-content .elementor .e-con-boxed .e-con-boxed:not([data-settings*="background_background"]),
      body:not(.elementor-editor-active) :is(
        [data-elementor-type="footer"],
        [data-elementor-type="header"],
        .elementor-location-footer,
        .elementor-location-header
      ) .e-con .e-con:not([data-settings*="background_background"]) {
        padding-left: 0 !important;
        padding-right: 0 !important;
      }

      /* Sprachauswahl & Menü-Toggle ausrichten */
      body .elementor-location-header .elementor-widget-nav-menu {
        display: flex !important;
        flex-direction: row !important;
        justify-content: flex-end !important;
        align-items: center !important;
        gap: 24px !important;
        flex-wrap: nowrap !important;
      }
      body .elementor-location-header .elementor-widget-nav-menu .elementor-nav-menu--main,
      body .elementor-location-header .elementor-widget-nav-menu .elementor-nav-menu--main > ul.elementor-nav-menu {
        position: static !important;
        transform: none !important;
        right: auto !important;
        top: auto !important;
        margin: 0 !important;
        padding: 0 !important;
        width: auto !important;
      }

      /* Mobiles Dropdown-Styling: perfekte Ausrichtung an der Header-Unterkante */
      body .elementor-location-header .elementor-widget-nav-menu {
        position: static !important;
      }
      body .elementor-location-header {
        position: relative !important;
      }

      [data-elementor-type="header"] nav.elementor-nav-menu--dropdown.elementor-nav-menu__container,
      .elementor-location-header nav.elementor-nav-menu--dropdown.elementor-nav-menu__container {
        position: absolute !important;
        top: 100% !important;
        left: 0 !important;
        right: 0 !important;
        width: 100% !important;
        max-width: 100vw !important;
        margin-top: 0 !important;
        transform: none !important;
        box-shadow: 0 8px 24px rgba(0, 0, 0, 0.06) !important;
        background-color: #ffffff !important;
      }
      
      /* Padding und max-height auf die innere UL legen, damit Elementors native max-height:0-Animation am NAV-Wrapper intakt bleibt. Das verhindert den Sprung beim Schließen. */
      [data-elementor-type="header"] nav.elementor-nav-menu--dropdown.elementor-nav-menu__container > ul,
      .elementor-location-header nav.elementor-nav-menu--dropdown.elementor-nav-menu__container > ul {
        padding-top: 24px !important;
        padding-bottom: 24px !important;
        max-height: calc(100vh - 80px) !important;
        overflow-y: auto !important;
      }



      body:not(.elementor-editor-active) [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .elementor-nav-menu {
        text-align: center;
      }
      body:not(.elementor-editor-active) [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .elementor-item,
      body:not(.elementor-editor-active) [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .elementor-sub-item {
        color: #0A0A0A !important;
        fill: #0A0A0A !important;
        text-align: center;
        justify-content: center;
        padding-left: max(var(--ff-page-gutter, 20px), calc((100vw - var(--ff-page-max-width, 1920px)) / 2));
        padding-right: max(var(--ff-page-gutter, 20px), calc((100vw - var(--ff-page-max-width, 1920px)) / 2));
        font-size: 16px;
        line-height: 1.4;
        text-decoration: underline transparent !important;
        text-decoration-thickness: 2px !important;
        text-underline-offset: 4px !important;
        background: transparent !important;
      }

      body:not(.elementor-editor-active) [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .elementor-item:hover,
      body:not(.elementor-editor-active) [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .elementor-item:focus,
      body:not(.elementor-editor-active) [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .elementor-item.elementor-item-active,
      body:not(.elementor-editor-active) [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .elementor-sub-item:hover,
      body:not(.elementor-editor-active) [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .elementor-sub-item:focus,
      body:not(.elementor-editor-active) [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .elementor-sub-item.elementor-item-active {
        color: #0A0A0A !important;
        fill: #0A0A0A !important;
        background: transparent !important;
        text-decoration-color: var(--e-global-color-accent, var(--ff-color-accent, #FF8DE6)) !important;
      }

      [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .elementor-item:focus-visible,
      [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .elementor-sub-item:focus-visible,
      .elementor-location-header nav.elementor-nav-menu--dropdown .elementor-item:focus-visible,
      .elementor-location-header nav.elementor-nav-menu--dropdown .elementor-sub-item:focus-visible {
        position: relative !important;
        z-index: 2 !important;
        background-color: var(--ff-focus-surface) !important;
        box-shadow: 0 0 0 3px var(--ff-focus-surface) !important;
        color: var(--ff-focus-text) !important;
        fill: var(--ff-focus-text) !important;
        text-decoration-color: transparent !important;
      }

      [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .elementor-item:focus-visible :is(span, svg, path),
      [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .elementor-sub-item:focus-visible :is(span, svg, path),
      .elementor-location-header nav.elementor-nav-menu--dropdown .elementor-item:focus-visible :is(span, svg, path),
      .elementor-location-header nav.elementor-nav-menu--dropdown .elementor-sub-item:focus-visible :is(span, svg, path) {
        color: var(--ff-focus-text) !important;
        fill: var(--ff-focus-text) !important;
      }

      /* Sub-Items im mobilen Menü: gleiche Schriftgröße, leicht eingerückt */
      [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .elementor-sub-item {
        font-size: 16px;
        padding-left: calc(max(var(--ff-page-gutter, 20px), calc((100vw - var(--ff-page-max-width, 1920px)) / 2)) + 20px);
      }
      [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .ff-language-switcher__item {
        color: #0A0A0A !important;
      }
      [data-elementor-type="header"] nav.elementor-nav-menu--dropdown .ff-language-switcher__item.is-unavailable {
        color: rgba(10, 10, 10, 0.42) !important;
      }
    }

    body.edition-2026 .entry-content :where(
      p,
      h1,
      h2,
      h3,
      h4,
      h5,
      h6,
      ul,
      ol,
      blockquote,
      .wp-block-group,
      .wp-block-columns,
      .wp-block-shortcode
    ) {
      max-width: 100%;
      box-sizing: border-box;
    }

    /* Schedule auf Edition-Pages: gleiche Content-Breite wie der restliche
       Page-Inhalt (Elementor-Kit content_width, 1920px default). Da der
       Schedule via Shortcode aus post_content rendert (nicht in einem
       Elementor-Container liegt), muss die Boundary hier per CSS gesetzt
       werden. Wert orientiert sich am Kit-Setting; der user editiert ihn
       in Site Settings → Layout → Content Width und passt unten den Fallback
       an. */
    :is(body.edition-2026, body.edition-2025, body.edition-2027) .ff-schedule {
      /* Full-Bleed: das Timetable bricht aus dem Content-Container auf die volle
         Viewport-Breite aus, sodass sein horizontaler Overflow erst am Browser-
         rand abgeschnitten wird (nicht am Rand des Content-Bereichs). Das Padding
         entspricht exakt der Seiten-Gutter-Formel → das Raster startet bündig zum
         übrigen Seiteninhalt; das Clipping liegt an der Element-Box = Browserrand. */
      width: 100vw;
      max-width: 100vw;
      margin-left:  calc(50% - 50vw);
      margin-right: calc(50% - 50vw);
      /* Linkes Padding = 0: der Gutter steckt in der ersten Grid-Spalte (Zeit-
         Spalte), die dadurch bis zum linken Browserrand weiß hinterlegt ist und
         beim Scrollen fixiert bleibt. */
      padding-left:  0;
      padding-right: max(var(--ff-page-gutter, 20px), calc((100vw - var(--ff-page-max-width, 1920px)) / 2));
      box-sizing: border-box;
      /* Nur das Timetable scrollt horizontal; vertikal NICHT (overflow-x:auto würde
         sonst overflow-y auf 'auto' heben → Sub-Pixel-Scrollbalken). */
      overflow-x: auto;
      overflow-y: hidden;
    }

    /* ─────────── Edition 2025 ─────────── */
    body.edition-2025 {
      --e-global-color-accent: #A6007D;
      --ff-color-accent: #A6007D;
      --ff-color-track-business: var(--e-global-color-25_z1);
      --ff-color-track-society: var(--e-global-color-25_z2);
      --ff-color-track-planet: var(--e-global-color-25_z3);
    }

    /* ─────────── Edition 2026 ─────────── */
    body.edition-2026 {
      --e-global-color-accent: #8f4ef3; /* Lila-Farbton basierend auf #b488f7, jedoch abgedunkelt für WCAG AA-Konformität (4.6:1) auf weißem Grund */
      --ff-color-accent: #8f4ef3;
      --ff-color-track-business: var(--e-global-color-26_z1);
      --ff-color-track-society: var(--e-global-color-26_z2);
      --ff-color-track-planet: var(--e-global-color-26_z3);
    }

    /* ─────────── Edition 2027 (template) ─────────── */
    body.edition-2027 {
      /* --ff-color-accent: #...; */
      /* Sobald 2027 startet: hier Overrides ergänzen */
    }

    /* Astra setzt auf .ast-page-builder-template ein fixes 20px horizontales
       Padding auf article/post-navigation. Das macht den Seiteninhalt schmaler
       als den Footer und konkurriert mit unserer Gutter-Logik. Für alle
       Editionen entfernen — Padding kommt einheitlich aus den Container-
       Settings + der globalen Footer-Padding-Formel. */
    :is(body.edition-2026, body.edition-2025, body.edition-2027).ast-page-builder-template .site-main > article,
    :is(body.edition-2026, body.edition-2025, body.edition-2027).ast-page-builder-template .post-navigation {
      padding-left: 0 !important;
      padding-right: 0 !important;
    }

    .ff-archive-edition-notice {
      width: 100%;
      background: var(--ff-color-accent, #0A0A0A);
      color: #F5F3EF;
      text-align: center;
      font-family: var(--ff-font-body);
      font-size: 15px;
      line-height: 1.1;
      letter-spacing: .02em;
      padding: 6px 16px;
      position: sticky;
      top: 0;
      z-index: 100000;
      display: flex;
      flex-wrap: wrap;
      gap: 2px 14px;
      align-items: center;
      justify-content: center;
    }

    body.admin-bar .ff-archive-edition-notice {
      z-index: 9990;
    }

    .ff-archive-edition-notice__badge {
      display: inline-block;
      padding: 2px 8px;
      border: 1px solid #F5F3EF;
      font-size: 14px;
      font-weight: 500;
      letter-spacing: .12em;
      text-transform: uppercase;
      line-height: 1.2;
    }

    .ff-archive-edition-notice__text {
      color: #F5F3EF;
      font-weight: 500;
      opacity: 1;
    }

    @media (max-width: 639.98px) {
      .ff-archive-edition-notice {
        justify-content: space-between;
      }

      .ff-archive-edition-notice__text {
        display: none;
      }
    }

    .ff-archive-edition-notice__link,
    .ff-archive-edition-notice__link:link,
    .ff-archive-edition-notice__link:visited,
    .ff-archive-edition-notice__link:hover,
    .ff-archive-edition-notice__link:focus,
    .ff-archive-edition-notice__link:active {
      display: inline-block;
      color: #F5F3EF !important;
      font-weight: 500;
      text-decoration: none !important;
      border-bottom: 0;
      position: relative;
    }

    .ff-archive-edition-notice__link::after {
      content: "";
      position: absolute;
      left: 0;
      right: auto;
      bottom: -2px;
      width: 100%;
      height: 1px;
      background: currentColor;
      transform: scaleX(0);
      transform-origin: left center;
    }

    .ff-archive-edition-notice__link:hover {
      color: #F5F3EF !important;
    }

    .ff-archive-edition-notice__link:hover::after {
      animation: ff-archive-link-underline-cycle .65s ease-in-out 1 both;
    }

    @keyframes ff-archive-link-underline-cycle {
      0% {
        transform: scaleX(0);
        transform-origin: left center;
      }
      45% {
        transform: scaleX(1);
        transform-origin: left center;
      }
      46% {
        transform: scaleX(1);
        transform-origin: right center;
      }
      100% {
        transform: scaleX(0);
        transform-origin: right center;
      }
    }

    .ff-archive-edition-notice__link:focus-visible::after {
      transform: scaleX(1);
      transform-origin: left center;
      animation: none;
    }

    /* Archiv-Edition: Ticket-CTAs ausblenden (alle Varianten).
       Buttons mit href auf /tickets/ oder data-attr "tickets" verschwinden. */
    body.is-archive-edition a[href*="/tickets"],
    body.is-archive-edition .elementor-button[href*="/tickets"],
    body.is-archive-edition [data-cta="tickets"] {
      display: none !important;
    }

    /* Sticky-Header-Offset für Archiv-Hinweis */
    body.is-archive-edition .elementor-sticky--active {
        top: var(--ff-notice-height, 0px) !important;
    }


    /* Hinweis: die früher hier befindliche pauschale Akzent-Dämpfung
       (--ff-color-accent: #c4a8c0 für is-archive-edition) wurde entfernt.
       Archive-Editionen behalten ihre Edition-eigenen Farben (siehe
       body.edition-2025 weiter oben). Andere Archive-Signale (Top-Bar,
       Body-Class, fehlende Ticket-CTAs) reichen für die Markierung. */

    .ff-partner-archive {
      width: var(--ff-page-boxed-width);
      margin: 0 auto;
      padding: clamp(56px, 7vw, 120px) 0;
      box-sizing: border-box;
      font-family: var(--ff-font-body);
    }

    body.page-id-3980 .entry-header {
      display: none;
    }



    /* Doppelte Seitentitel verhindern: Theme/Astra rendert den Seitentitel im
       .entry-header automatisch, der eigentliche Inhalt liefert oft selbst ein
       <h1>/<h2> mit demselben Text. Auf allen Edition-Seiten den vom Theme
       generierten Header ausblenden — die Inhalts-Überschrift bleibt die
       einzige sichtbare Titel-Quelle. */
    :is(body.edition-2026, body.edition-2025, body.edition-2027) .entry-header {
      display: none;
    }

    .ff-partner-archive h1 {
      margin: 0 0 clamp(32px, 4vw, 56px);
      font-family: var(--ff-font-display);
      font-size: clamp(24px, 2vw, 36px);
      font-weight: 400;
      line-height: 1.1;
      letter-spacing: .08em;
      text-transform: none;
    }

    .ff-partner-archive h2 {
      margin: clamp(32px, 4vw, 56px) 0 clamp(16px, 2vw, 28px);
      font-size: clamp(13px, 1vw, 16px);
      font-weight: 400;
      line-height: 1.2;
      text-transform: uppercase;
      letter-spacing: .08em;
    }

    .ff-partner-archive__grid {
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: clamp(28px, 4vw, 80px);
      align-items: center;
    }

    .ff-partner-archive__grid--featured {
      grid-template-columns: repeat(4, minmax(0, 1fr));
      margin-bottom: clamp(32px, 4vw, 72px);
    }

    .ff-partner-archive__grid--two {
      grid-template-columns: repeat(2, minmax(0, 1fr));
      max-width: min(100%, 1100px);
      margin-bottom: clamp(32px, 4vw, 72px);
    }

    .ff-partner-archive__grid--single {
      grid-template-columns: minmax(0, .55fr);
      margin-bottom: clamp(48px, 6vw, 96px);
    }

    .ff-partner-archive__logo {
      display: flex;
      min-height: clamp(32px, 3vw, 48px);
      align-items: center;
      justify-content: center;
      /* Container-Breite begrenzen — sonst werden breite Querlogos (z.B.
         "B_LDA_Logo_H_print" 1024x205) in die volle Spaltenbreite gezogen
         und wirken überdimensioniert, auch wenn die Höhe gedeckelt ist. */
      max-width: clamp(120px, 12vw, 160px);
      margin: 0 auto;
    }

    .ff-partner-archive__logo--large {
      max-width: clamp(140px, 14vw, 200px);
    }

    .ff-partner-archive__logo img {
      /* Eng gefasster Logo-Strip (kein Hero-Bild). Höhe + Breite gedeckelt;
         Aspect-Ratio bleibt erhalten via object-fit:contain. */
      display: block;
      width: auto;
      height: auto;
      max-width: 100%;
      max-height: clamp(28px, 3vw, 44px);
      object-fit: contain;
      object-position: center;
    }

    .ff-partner-archive__logo--large img {
      max-height: clamp(40px, 4vw, 60px);
    }

    /* Partner-Seiten (3980 = /2025/partners/, 4003 = /partners/):
       Uniformes Logo-Grid mit hellgrau gerahmten Zellen. Jede Zelle gleich
       groß, Logo zentriert mit Bildhöhe 120px und auto-Breite (max 100%).
       Responsive: 4 Spalten Desktop, 3 Tablet (≤1024px), 2 Mobile (≤600px). */
    /* :is(body.page-id-3980, body.page-id-4003) .ff-logo-grid.e-con,
    :is(body.page-id-3980, body.page-id-4003) .ff-logo-grid {
      display: grid !important;
      grid-template-columns: repeat(4, 1fr) !important;
      gap: 12px !important;
      width: 100% !important;
      align-items: stretch !important;
    }
    @media (max-width: 1024px) {
      :is(body.page-id-3980, body.page-id-4003) .ff-logo-grid.e-con,
      :is(body.page-id-3980, body.page-id-4003) .ff-logo-grid {
        grid-template-columns: repeat(3, 1fr) !important;
      }
    }
    @media (max-width: 600px) {
      :is(body.page-id-3980, body.page-id-4003) .ff-logo-grid.e-con,
      :is(body.page-id-3980, body.page-id-4003) .ff-logo-grid {
        grid-template-columns: repeat(2, 1fr) !important;
      }
    } */

    /* Logo-Zelle: hellgrauer Rahmen, 16:9 Aspect-Ratio, Logo zentriert.
       Bildgröße kommt nicht mehr aus CSS (kein !important auf width/height) —
       die 120px max-Breite wird im Elementor-Image-Widget direkt eingestellt,
       damit die Größe in der UI änderbar bleibt. */
    /*
    :is(body.page-id-3980, body.page-id-4003) .ff-logo-cell.e-con,
    :is(body.page-id-3980, body.page-id-4003) .ff-logo-cell {
      width: 100% !important;
      min-width: 0 !important;
      max-width: none !important;
      aspect-ratio: 16 / 9;
      padding: 16px !important;
      box-sizing: border-box !important;
      border: 1px solid #E5E5E5 !important;
      background: transparent !important;
      display: flex !important;
      align-items: center !important;
      justify-content: center !important;
    }

    :is(body.page-id-3980, body.page-id-4003) .ff-logo-cell .elementor-widget-image,
    :is(body.page-id-3980, body.page-id-4003) .ff-logo-cell .elementor-widget-image > .elementor-widget-container,
    :is(body.page-id-3980, body.page-id-4003) .ff-logo-cell .elementor-widget-image a {
      width: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    :is(body.page-id-3980, body.page-id-4003) .ff-logo-cell img {
      display: block;
      height: auto;
      max-width: 100%;
      max-height: 100%;
      object-fit: contain;
      object-position: center;
    }
    */

    .ff-partner-archive__cta {
      margin: clamp(56px, 7vw, 120px) 0 0;
      color: var(--e-global-color-accent, var(--ff-color-accent, #A6007D));
      text-align: center;
    }

    .ff-partner-archive__cta a,
    .ff-partner-archive__cta a:visited {
      color: var(--e-global-color-accent, var(--ff-color-accent, #A6007D));
    }

    @media (max-width: 900px) {
      .ff-partner-archive__grid,
      .ff-partner-archive__grid--featured {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }
    }

    @media (max-width: 560px) {
      .ff-partner-archive__grid,
      .ff-partner-archive__grid--featured,
      .ff-partner-archive__grid--two,
      .ff-partner-archive__grid--single {
        grid-template-columns: minmax(0, 1fr);
      }
    }

    /* WCAG-konformer Hover-Effekt (Header + Footer): Text bleibt im
       Dunkelschwarz (Kontrast AAA gegen Warm-White-Hintergrund), der
       Akzent zeigt sich als Unterlinie in der Brand-Farbe — das gibt
       den klaren Brand-Cue ohne den Farbkontrast unter 4.5:1 (AA) zu
       drücken (FF8DE6 als Textfarbe auf Weiß = ~1.9:1, fällt durch).
       Underline kann dünn farbig sein, Text ist es nicht. */
    body:not(.elementor-editor-active) [data-elementor-type="header"] .elementor-widget-nav-menu .elementor-item,
    body:not(.elementor-editor-active) [data-elementor-type="footer"] .elementor-widget-nav-menu .elementor-item {
      transition: color .16s ease;
      text-decoration-line: underline;
      text-decoration-color: transparent;
      text-decoration-thickness: 2px;
      text-underline-offset: 4px;
    }
    body:not(.elementor-editor-active) [data-elementor-type="header"] .elementor-widget-nav-menu .elementor-item:hover,
    body:not(.elementor-editor-active) [data-elementor-type="header"] .elementor-widget-nav-menu .elementor-item:focus,
    body:not(.elementor-editor-active) [data-elementor-type="header"] .elementor-widget-nav-menu .elementor-item.elementor-item-active,
    body:not(.elementor-editor-active) [data-elementor-type="header"] .elementor-widget-nav-menu .elementor-item.highlighted,
    body:not(.elementor-editor-active) [data-elementor-type="footer"] .elementor-widget-nav-menu .elementor-item:hover,
    body:not(.elementor-editor-active) [data-elementor-type="footer"] .elementor-widget-nav-menu .elementor-item:focus,
    body:not(.elementor-editor-active) [data-elementor-type="footer"] .elementor-widget-nav-menu .elementor-item.elementor-item-active,
    body:not(.elementor-editor-active) [data-elementor-type="footer"] .elementor-widget-nav-menu .elementor-item.highlighted {
      color: #0A0A0A !important;
      fill: #0A0A0A !important;
      text-decoration-line: underline !important;
      text-decoration-color: var(--e-global-color-accent, var(--ff-color-accent, #FF8DE6)) !important;
      text-decoration-thickness: 2px !important;
      text-underline-offset: 4px !important;
    }

    body:not(.elementor-editor-active) [data-elementor-type="header"] .elementor-widget-nav-menu .elementor-item::before,
    body:not(.elementor-editor-active) [data-elementor-type="header"] .elementor-widget-nav-menu .elementor-item::after {
      background-color: var(--e-global-color-accent, var(--ff-color-accent, #FF8DE6)) !important;
      border-color: var(--e-global-color-accent, var(--ff-color-accent, #FF8DE6)) !important;
    }

    [data-elementor-type="header"] .ff-language-switcher {
      display: inline-flex !important;
      align-items: center !important;
      gap: 0.15em !important;
      padding-left: 12px !important;
      white-space: nowrap !important;
      font-family: futura-pt, sans-serif !important;
      font-size: 16px !important;
      line-height: 1 !important;
      text-transform: uppercase !important;
      letter-spacing: 0.5px !important;
    }

    body:not(.elementor-editor-active) [data-elementor-type="header"] .ff-language-switcher__item {
      display: inline-flex !important;
      align-items: center !important;
      padding-left: 0 !important;
      padding-right: 0 !important;
      color: #0A0A0A !important;
      text-decoration-line: underline !important;
      text-decoration-color: transparent !important;
      text-decoration-thickness: 2px !important;
      text-underline-offset: 4px !important;
      transition: text-decoration-color .16s ease !important;
    }

    /* Aktiven Pointer des Sprachwechslers aus dem Höhenfluss nehmen */
    body:not(.elementor-editor-active) [data-elementor-type="header"] .ff-language-switcher__item::after,
    body:not(.elementor-editor-active) [data-elementor-type="header"] .ff-language-switcher__item::before {
      display: none !important;
      content: none !important;
    }

    body:not(.elementor-editor-active) [data-elementor-type="header"] .ff-language-switcher__item.is-current {
      color: #0A0A0A !important;
      text-decoration: underline var(--ff-color-text-default, #2B2E34) 1px !important;
      text-decoration-line: underline !important;
      text-decoration-thickness: 1px !important;
      text-underline-offset: 4px !important;
      text-decoration-color: var(--ff-color-text-default, #2B2E34) !important;
    }

    body:not(.elementor-editor-active) [data-elementor-type="header"] .ff-language-switcher__item:not(.is-current),
    body:not(.elementor-editor-active) [data-elementor-type="header"] .ff-language-switcher__item.is-available:not(.is-current):hover,
    body:not(.elementor-editor-active) [data-elementor-type="header"] .ff-language-switcher__item.is-available:not(.is-current):focus {
      color: #0A0A0A !important;
      text-decoration-line: none !important;
      text-decoration-thickness: 2px !important;
      text-underline-offset: 4px !important;
      text-decoration-color: transparent !important;
    }

    body:not(.elementor-editor-active) [data-elementor-type="header"] .ff-language-switcher__item.is-unavailable {
      color: #595959 !important;
      cursor: not-allowed !important;
      text-decoration: none !important;
    }

    body.elementor-editor-active [data-elementor-type="header"] .elementor-widget-nav-menu .elementor-item,
    body.elementor-editor-active [data-elementor-type="header"] .elementor-widget-nav-menu .elementor-item:hover,
    body.elementor-editor-active [data-elementor-type="header"] .elementor-widget-nav-menu .elementor-item:focus,
    body.elementor-editor-active [data-elementor-type="header"] .elementor-widget-nav-menu .elementor-item.elementor-item-active,
    body.elementor-editor-active [data-elementor-type="header"] .elementor-widget-nav-menu .elementor-item.highlighted,
    body.elementor-editor-active [data-elementor-type="header"] .ff-language-switcher__item,
    body.elementor-editor-active [data-elementor-type="header"] .ff-language-switcher__item:hover,
    body.elementor-editor-active [data-elementor-type="header"] .ff-language-switcher__item:focus,
    body.elementor-editor-active [data-elementor-type="header"] .ff-language-switcher__item.is-current {
      text-decoration: none !important;
      text-decoration-line: none !important;
      text-decoration-color: transparent !important;
    }

    [data-elementor-type="header"] .ff-language-switcher__separator {
      display: inline-block !important;
      flex: 0 0 1.5px !important;
      align-self: center !important;
      width: 1.5px !important;
      min-width: 1.5px !important;
      height: 0.78em !important;
      padding: 0 !important;
      margin-left: 6px !important;
      margin-right: 6px !important;
      background: currentColor !important;
      color: rgba(10, 10, 10, 0.45) !important;
      vertical-align: -0.06em !important;
      font-size: 0 !important;
      line-height: 1 !important;
    }

    #ast-scroll-top {
      bottom: 15px !important;
    }

    @media (max-width: 880px) {
      #ast-scroll-top {
        bottom: 12px !important;
      }
    }

    /* Footer-Menüs jederzeit sichtbar, kein Burger.
       Elementor's eigentliche Collapse-Regel ist nicht display:none, sondern
         .elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active) + .elementor-nav-menu__container
           { max-height:0; overflow:hidden; transform:scaleY(0) }
       Diese drei Properties hier rückgängig machen, plus Burger-Toggle
       ausblenden, plus Dropdown-Variante hart hidden. */
    [data-elementor-type="footer"] .elementor-widget-nav-menu .elementor-menu-toggle {
      display: none !important;
    }
    [data-elementor-type="footer"] .elementor-widget-nav-menu nav.elementor-nav-menu--dropdown.elementor-nav-menu__container,
    [data-elementor-type="footer"] .elementor-widget-nav-menu .elementor-nav-menu--dropdown {
      display: none !important;
      visibility: hidden !important;
      height: 0 !important;
      max-height: 0 !important;
      min-height: 0 !important;
      overflow: hidden !important;
      margin: 0 !important;
      padding: 0 !important;
      border: 0 !important;
      transform: none !important;
      animation: none !important;
    }
    [data-elementor-type="footer"] .elementor-widget-nav-menu .elementor-nav-menu__container:not(.elementor-nav-menu--dropdown),
    [data-elementor-type="footer"] .elementor-widget-nav-menu .elementor-nav-menu--main,
    [data-elementor-type="footer"] .elementor-widget-nav-menu.elementor-nav-menu--toggle .elementor-menu-toggle + .elementor-nav-menu__container:not(.elementor-nav-menu--dropdown),
    [data-elementor-type="footer"] .elementor-widget-nav-menu.elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active) + .elementor-nav-menu__container:not(.elementor-nav-menu--dropdown) {
      max-height: none !important;
      overflow: visible !important;
      transform: none !important;
      display: block !important;
      animation: none !important;
    }
    [data-elementor-type="footer"] .elementor-widget-nav-menu .elementor-nav-menu--dropdown {
      display: none !important;
      visibility: hidden !important;
      height: 0 !important;
      max-height: 0 !important;
      min-height: 0 !important;
      overflow: hidden !important;
      margin: 0 !important;
      padding: 0 !important;
      border: 0 !important;
      transform: none !important;
      animation: none !important;
    }
    [data-elementor-type="footer"] .elementor-widget-nav-menu .elementor-nav-menu--main .elementor-nav-menu {
      display: flex !important;
      flex-direction: column !important;
    }

    /* 1px-Gap-Trick und einheitliches Layout für Logo-Grids */
    .ff-logo-grid.e-grid {
      background-color: #D9D9D9 !important; /* Angenehmes Mittelgrau */
      gap: 1px !important;
      border: 1px solid #D9D9D9 !important;
    }
    .ff-logo-grid .ff-logo-cell.e-con,
    .ff-logo-grid .ff-logo-cell {
      background-color: #FFFFFF !important;
      border: none !important;
      aspect-ratio: 16 / 9 !important;
      min-height: 0 !important;
      padding: 16px !important;
      box-sizing: border-box !important;
      display: flex !important;
      align-items: center !important;
      justify-content: center !important;
      overflow: hidden !important;
    }
    /* Bild-Wrapper exakt auf die Zellhöhe begrenzen, damit das 16:9-aspect-ratio
       der Zelle hält und das Logo nicht die Zelle aufdrückt. Ohne diese Kette
       (Widget → Container → Link) löst img{max-height:100%} gegen eine
       auto-hohe Box auf und wirkt nicht. Früher kam diese Begrenzung implizit
       aus dem V4-Container-CSS — das ist im abgespeckten Editor nicht mehr aktiv. */
    .ff-logo-grid .ff-logo-cell .elementor-widget-image,
    .ff-logo-grid .ff-logo-cell .elementor-widget-image > .elementor-widget-container,
    .ff-logo-grid .ff-logo-cell .elementor-widget-image a {
      width: 100% !important;
      height: 100% !important;
      min-height: 0 !important;
      display: flex !important;
      align-items: center !important;
      justify-content: center !important;
      line-height: 0 !important;
    }
    .ff-logo-grid .ff-logo-cell img {
      max-width: 100%;
      max-height: 100%;
      width: auto;
      height: auto;
      object-fit: contain;
    }

    /* Newsletter Formular: Normalzustand ohne sichtbaren Rahmen/Inset-Shadow,
       Fokus sofort hellgrau ohne Hintergrundwechsel. */
    body:not(.elementor-editor-active) .elementor-location-footer .elementor-element-f3395f2 .elementor-field-textual {
      background-color: #ffffff !important;
      background-image: none !important;
      border-style: solid !important;
      border-width: 1px !important;
      border-color: transparent !important;
      outline: none !important;
      box-shadow: none !important;
      -webkit-box-shadow: none !important;
      transition: none !important;
    }
    body:not(.elementor-editor-active) .elementor-location-footer .elementor-element-f3395f2 .elementor-field-textual:focus,
    body:not(.elementor-editor-active) .elementor-location-footer .elementor-element-f3395f2 .elementor-field-textual:active,
    body:not(.elementor-editor-active) .elementor-location-footer .elementor-element-f3395f2 .elementor-field-textual:focus-visible,
    body:not(.elementor-editor-active) .elementor-location-footer .elementor-element-f3395f2 .elementor-field-group:focus-within .elementor-field-textual {
      background-color: #ffffff !important;
      border-color: #cccccc !important;
      outline: none !important;
      box-shadow: none !important;
      -webkit-box-shadow: none !important;
    }

    .elementor-location-footer .elementor-widget-social-icons .elementor-widget-container,
    .elementor-location-footer .elementor-widget-social-icons .elementor-social-icons-wrapper,
    [data-elementor-type="footer"] .elementor-widget-social-icons .elementor-widget-container,
    [data-elementor-type="footer"] .elementor-widget-social-icons .elementor-social-icons-wrapper {
        gap: 20px;
    }

    /* Fix flex menu links in footer */
    .elementor-location-footer .ff-flex-menu .menu-link,
    [data-elementor-type="footer"] .ff-flex-menu .menu-link {
        text-decoration: none !important;
        color: inherit !important;
    }

    .elementor-location-footer .ff-flex-menu .menu-link:hover,
    [data-elementor-type="footer"] .ff-flex-menu .menu-link:hover,
    .elementor-location-footer .ff-flex-menu .current_page_item .menu-link,
    [data-elementor-type="footer"] .ff-flex-menu .current_page_item .menu-link {
        text-decoration: underline !important;
        text-decoration-thickness: 1px !important;
        text-underline-offset: 4px !important;
        color: inherit !important;
    }

    /* Social-Icons-Fix: überschreibt Margin und korrigiert Baseline-Abweichung */
    .elementor-location-footer .elementor-widget-social-icons,
    [data-elementor-type="footer"] .elementor-widget-social-icons {
      margin-top: 0 !important;
      margin-bottom: 0 !important;
      align-self: center !important;
      line-height: 0 !important;
    }
    .elementor-location-footer .elementor-widget-social-icons .elementor-widget-container,
    .elementor-location-footer .elementor-widget-social-icons .elementor-social-icons-wrapper,
    [data-elementor-type="footer"] .elementor-widget-social-icons .elementor-widget-container,
    [data-elementor-type="footer"] .elementor-widget-social-icons .elementor-social-icons-wrapper {
      line-height: 0 !important;
      align-items: center !important;
      margin: 0 !important;
      padding: 0 !important;
    }

/* Active header language link: override generic active menu underline. */
body:not(.elementor-editor-active) :is([data-elementor-type="header"], .elementor-location-header) .elementor-widget-nav-menu .elementor-item.ff-language-switcher__item.is-current,
body:not(.elementor-editor-active) :is([data-elementor-type="header"], .elementor-location-header) .elementor-widget-nav-menu .elementor-item.ff-language-switcher__item[aria-current="page"],
body:not(.elementor-editor-active) :is([data-elementor-type="header"], .elementor-location-header) .elementor-widget-nav-menu .elementor-item.elementor-item-active.ff-language-switcher__item.is-current {
    text-decoration: underline var(--ff-color-text-default, #2B2E34) 1px !important;
    text-decoration-line: underline !important;
    text-decoration-color: var(--ff-color-text-default, #2B2E34) !important;
    text-decoration-thickness: 1px !important;
    text-underline-offset: 4px !important;
}
