

/*
Theme Name: Twenty Twenty KL
Template: twentytwenty
Version: 2026.06.03
Text Domain: twentytwenty-child
Author: Malte Schütt
Author URI: https://mediaring.org
Description: Individuelles Child Theme, vollständig erstellt und gepflegt von Malte Schütt. Alle Inhalte, Anpassungen und Erweiterungen sind sein geistiges Eigentum.
*/
/* ==================================================
   00 INDEX / INHALTSVERZEICHNIS
==================================================
   Dieser Index dient nur zur Orientierung in der Datei.
   Er hat keine technische Wirkung.

   00-01 ZENTRALE ICON-PFADE
   00-02 ZENTRALE DESIGN-VARIABLEN
   01 GLOBAL / CONTAINER
   01-03 MOBILE INHALTSKANTE / KARTEN-ZENTRIERUNG
   02 FONTS
   02-XX GLOBALE SCHRIFTEN / STANDARD-TYPOGRAFIE
   03 TYPOGRAFIE / GRUNDSTILE
   04 SUCHE / SUCHERGEBNISSE
   05 COOKIE INFO
   06 HEADER / LOGO / SPRACHWECHSEL
   07 NAVIGATION / MENÜ
   08 SEITENHEADER / TITELBEREICH
   09 MOBILES MENÜ
   10 HOME / TITEL / WILLKOMMEN
   11 GRIDS / NEWS & PROJEKTE
   12 ÜBERSCHRIFTEN / TABELLEN / SONDERKLASSEN
   13 KULTURPARTNER / FÖRDERER / SPONSOREN / AUSZEICHNUNGEN
   14 FOOTER
   15 ALLGEMEINE SEITEN
   16 TEAM
   17 ACCORDIONS / ARCHIVE / ADRESSEN
   18 KONTAKT / ADRESSBLOCK / GÄSTETELEFON
   19 SEITE - DER VEREIN
   20 BUTTONS
   21 FILE / DOWNLOAD BLOCKS
   22 PRESSE / PRESSEKONTAKT
   23 COUNTER
   24 KSK INFO
   25 PDF SYMBOL / INLINE LINK
   26 BREITEN-FIX FÜR FULL-WIDTH TEMPLATE
   27 SPENDENBLOCK
   28 FORMULARE (KONTAKT + NEWSLETTER)
   29 STANDORTE / ZEITEN / TELEFON
   30 WILLKOMMENSTEXT
   31 MULTISITE / FARBVARIANTE BLAU
*/

/* ==================================================
   00-01 ZENTRALE ICON-PFADE
================================================== */
/*
   Zentrale Icon-Pfade für KulturLeben-UI-Elemente.
   Die Pfeil-Icons liegen im Child-Theme unter:
   /wp-content/themes/twentytwenty-child/partials/icons/
*/
:root {
  --kl-icon-pfeil-weiss: url("partials/icons/pfeil-weiss.png");
  --kl-icon-pfeil-magenta: url("partials/icons/pfeil-magenta.png");
  --kl-icon-pfeil-braun: url("partials/icons/pfeil-braun.png");
  --kl-icon-pfeil-blau: url("partials/icons/pfeil-blau.png");
}

/* ==================================================
   00-02 ZENTRALE DESIGN-VARIABLEN
================================================== */
/*
   Sauber benannte Design-Variablen ohne anonyme Nummern-Variables.

   Grundsatz dieser Version:
   - die drei vorhandenen Roboto-Schriften sind zentral steuerbar
   - Hintergründe, Statusfarben und spezielle Hervorhebungen bleiben erhalten
   - nur sehr ähnliche Akzent- und Schriftwerte werden zusammengeführt
   - alle zentralen Farbwerte stehen als rgba()
*/
:root {
  /* Layout */
  --kl-layout-width: 100rem;
  --kl-layout-side-gap: 4rem;

  /* Schriftfamilien */
  --kl-font-light: 'Roboto-Light', 'Roboto', Arial, Helvetica, sans-serif;
  --kl-font-main: 'Roboto', Arial, Helvetica, sans-serif;
  --kl-font-bold: 'Roboto-Bold', 'Roboto', Arial, Helvetica, sans-serif;

  /* Grundfarben */
  --kl-color-text: rgba(101, 76, 56, 1);
  --kl-color-brown: rgba(90, 72, 57, 1);
  --kl-color-brown-soft: rgba(107, 90, 74, 1);
  --kl-color-brown-muted: rgba(122, 105, 89, 1);
  --kl-color-brown-dark: rgba(63, 48, 39, 1);
  --kl-color-white: rgba(255, 255, 255, 1);
  --kl-color-black: rgba(0, 0, 0, 1);
  --kl-color-dark: rgba(34, 34, 34, 1);
  --kl-color-border: rgba(204, 204, 204, 1);
  --kl-color-border-soft: rgba(214, 214, 214, 1);

  /* Akzentfarben */
  --kl-color-magenta: rgba(229, 0, 126, 1);
  --kl-color-magenta-alt: rgba(229, 0, 126, 1);
  --kl-color-magenta-vivid: rgba(209, 35, 186, 1);
  --kl-color-magenta-soft: rgba(255, 228, 236, 1);
  --kl-color-magenta-soft-2: rgba(255, 209, 232, 1);
  --kl-color-magenta-light: rgba(255, 94, 174, 1);
  --kl-color-magenta-light-2: rgba(255, 127, 193, 1);
  --kl-color-active-underline: rgba(242, 140, 194, 1);
  --kl-color-accent-soft-bg: rgba(253, 232, 243, 1);

  /* Flächen / Hintergründe */
  --kl-color-surface-card: rgba(239, 237, 236, 1);
  --kl-color-surface-card-hover: rgba(243, 239, 239, 1);
  --kl-color-surface-page: rgba(246, 244, 242, 1);
  --kl-color-surface-cream: rgba(255, 253, 242, 1);
  --kl-color-surface-cool: rgba(241, 245, 249, 1);

  /* Blau / Türkis / Violett */
  --kl-color-blue: rgba(30, 102, 255, 1);
  --kl-color-blue-brand: rgba(42, 101, 175, 1);
  --kl-color-blue-dark: rgba(0, 59, 115, 1);
  --kl-color-blue-darker: rgba(0, 47, 92, 1);
  --kl-color-blue-soft: rgba(232, 241, 255, 1);
  --kl-color-turquoise-soft: rgba(229, 251, 251, 1);
  --kl-color-turquoise: rgba(0, 140, 149, 1);
  --kl-color-purple-soft: rgba(243, 232, 255, 1);
  --kl-color-purple: rgba(124, 58, 237, 1);

  /* Status- und Hinweisfarben */
  --kl-color-green-light: rgba(144, 211, 107, 1);
  --kl-color-green-soft: rgba(234, 248, 235, 1);
  --kl-color-green: rgba(21, 128, 61, 1);
  --kl-color-green-dark: rgba(17, 109, 50, 1);
  --kl-color-orange-light: rgba(252, 177, 43, 1);
  --kl-color-orange: rgba(246, 163, 19, 1);
  --kl-color-orange-strong: rgba(249, 115, 22, 1);
  --kl-color-orange-soft: rgba(255, 237, 213, 1);
  --kl-color-yellow-soft: rgba(255, 246, 191, 1);
  --kl-color-warning-soft: rgba(255, 243, 205, 1);
  --kl-color-warning-brown: rgba(183, 121, 0, 1);
  --kl-color-alert-red: rgba(122, 0, 31, 1);
  --kl-color-muted-bluegrey: rgba(100, 116, 139, 1);

  /* Transparenzen / Schatten */
  --kl-alpha-shadow-search: rgba(66, 66, 66, .75);
  --kl-alpha-shadow-010: rgba(0, 0, 0, .10);
  --kl-alpha-shadow-012: rgba(0, 0, 0, .12);
  --kl-alpha-shadow-013: rgba(0, 0, 0, .13);
  --kl-alpha-shadow-014: rgba(0, 0, 0, .14);
  --kl-alpha-shadow-015: rgba(0, 0, 0, .15);
  --kl-alpha-shadow-016: rgba(0, 0, 0, .16);
  --kl-alpha-shadow-018: rgba(0, 0, 0, .18);
  --kl-alpha-shadow-020: rgba(0, 0, 0, .20);
  --kl-alpha-shadow-022: rgba(0, 0, 0, .22);
  --kl-alpha-shadow-045: rgba(0, 0, 0, .045);
  --kl-alpha-shadow-060: rgba(0, 0, 0, .06);
  --kl-alpha-shadow-070: rgba(0, 0, 0, .07);
  --kl-alpha-shadow-068: rgba(0, 0, 0, .68);
  --kl-alpha-shadow-072: rgba(0, 0, 0, .72);
  --kl-alpha-shadow-075: rgba(0, 0, 0, .75);

  --kl-alpha-white-000: rgba(255, 255, 255, 0);
  --kl-alpha-white-035: rgba(255, 255, 255, .035);
  --kl-alpha-white-045: rgba(255, 255, 255, .045);
  --kl-alpha-white-055: rgba(255, 255, 255, .055);
  --kl-alpha-white-080: rgba(255, 255, 255, .08);
  --kl-alpha-white-100: rgba(255, 255, 255, .10);
  --kl-alpha-white-180: rgba(255, 255, 255, .18);
  --kl-alpha-white-220: rgba(255, 255, 255, .22);
  --kl-alpha-white-240: rgba(255, 255, 255, .24);
  --kl-alpha-white-280: rgba(255, 255, 255, .28);
  --kl-alpha-white-380: rgba(255, 255, 255, .38);
  --kl-alpha-white-780: rgba(255, 255, 255, .78);
  --kl-alpha-white-820: rgba(255, 255, 255, .82);
  --kl-alpha-white-880: rgba(255, 255, 255, .88);
  --kl-alpha-white-920: rgba(255, 255, 255, .92);

  --kl-alpha-magenta-080: rgba(229, 0, 126, .08);
  --kl-alpha-magenta-180: rgba(229, 0, 126, .18);
  --kl-alpha-magenta-280: rgba(230, 0, 126, .28);
  --kl-alpha-magenta-350: rgba(230, 0, 126, .35);
  --kl-alpha-magenta-420: rgba(230, 0, 126, .42);
  --kl-alpha-magenta-450: rgba(229, 0, 126, .45);
  --kl-alpha-magenta-620: rgba(229, 0, 126, .62);
  --kl-alpha-magenta-820: rgba(229, 0, 126, .82);
  --kl-alpha-pink-glow: rgba(255, 105, 180, .55);
  --kl-alpha-brown-border: rgba(101, 76, 56, .32);
  --kl-alpha-blue-080: rgba(30, 102, 255, .08);
  --kl-alpha-blue-180: rgba(30, 102, 255, .18);
  --kl-alpha-blue-340: rgba(30, 102, 255, .34);
  --kl-alpha-blue-dark-180: rgba(0, 59, 115, .18);
  --kl-alpha-orange-240: rgba(246, 163, 19, .24);
  --kl-alpha-red-dark-350: rgba(112, 0, 32, .35);
  --kl-alpha-surface-950: rgba(246, 244, 242, .95);

  /* Schriftgrößen / Basis */
  --kl-font-size-zero: 0;
  --kl-font-size-082: .82rem;
  --kl-font-size-105: 1.05rem;
  --kl-font-size-108: 1.08rem;
  --kl-font-size-112: 1.12rem;
  --kl-font-size-115: 1.15rem;
  --kl-font-size-122: 1.22rem;
  --kl-font-size-125: 1.25rem;
  --kl-font-size-130: 1.3rem;
  --kl-font-size-135: 1.35rem;
  --kl-font-size-140: 1.4rem;
  --kl-font-size-145: 1.45rem;
  --kl-font-size-150: 1.5rem;
  --kl-font-size-155: 1.55rem;
  --kl-font-size-160: 1.6rem;
  --kl-font-size-165: 1.65rem;
  --kl-font-size-170: 1.7rem;
  --kl-font-size-175: 1.75rem;
  --kl-font-size-180: 1.8rem;
  --kl-font-size-195: 1.95rem;
  --kl-font-size-200: 2rem;
  --kl-font-size-205: 2.05rem;
  --kl-font-size-210: 2.1rem;
  --kl-font-size-220: 2.2rem;
  --kl-font-size-225: 2.25rem;
  --kl-font-size-240: 2.4rem;
  --kl-font-size-280: 2.8rem;
  --kl-font-size-290: 2.9rem;
  --kl-font-size-300: 3rem;
  --kl-font-size-400: 4rem;
  --kl-font-size-500: 5rem;

  /* Schriftgrößen / responsive Spezialgrößen */
  --kl-font-size-menu-desktop: clamp(1.35rem, 1.34vw, 2.25rem);
  --kl-font-size-menu-wide: clamp(1.45rem, 1.52vw, 2.05rem);
  --kl-font-size-menu-tablet: clamp(1.32rem, 1.65vw, 1.85rem);
  --kl-font-size-menu-compact: clamp(1.22rem, 1.78vw, 1.65rem);
  --kl-font-size-menu-small: clamp(1.05rem, 1.72vw, 1.45rem);
  --kl-font-size-menu-tiny: clamp(.92rem, 1.52vw, 1.2rem);
  --kl-font-size-title-mobile: clamp(3.2rem, 10vw, 4.2rem);
  --kl-font-size-title-small: clamp(2.8rem, 9.2vw, 3.6rem);
  --kl-font-size-grid-heading: clamp(2.6rem, 7vw, 3.2rem);
  --kl-font-size-card-title-fluid: clamp(2.3rem, 5.2cqw, 3.05rem);
  --kl-font-size-card-title-fluid-small: clamp(2rem, 6.7cqw, 2.65rem);
  --kl-font-size-card-text-fluid: clamp(.9em, 3.25cqw, 1.12em);
  --kl-font-size-card-meta-fluid: clamp(1em, 3.35cqw, 1.18em);
  --kl-font-size-fluid-108-132: clamp(1.08rem, 3vw, 1.32rem);
  --kl-font-size-fluid-102-120: clamp(1.02rem, 2.9vw, 1.2rem);
  --kl-font-size-fluid-170-215: clamp(1.7rem, 4.8vw, 2.15rem);
  --kl-font-size-fluid-148-182: clamp(1.48rem, 4.2vw, 1.82rem);
  --kl-font-size-fluid-165-205: clamp(1.65rem, 4.6vw, 2.05rem);
  --kl-font-size-fluid-235-280: clamp(2.35rem, 6.8vw, 2.8rem);
  --kl-font-size-fluid-150-185: clamp(1.5rem, 4.3vw, 1.85rem);
  --kl-font-size-fluid-125-165: clamp(1.25rem, 1.7vw, 1.65rem);
  --kl-font-size-fluid-115-145: clamp(1.15rem, 3.2vw, 1.45rem);
  --kl-font-size-fluid-105-128: clamp(1.05rem, 3.4vw, 1.28rem);
  --kl-font-size-fluid-150-200: clamp(1.5rem, 1.2vw, 2rem);
  --kl-font-size-fluid-155-205: clamp(1.55rem, 1.16vw, 2.05rem);
  --kl-font-size-fluid-178-212: clamp(1.78rem, 2.35vw, 2.12rem);
  --kl-font-size-fluid-175-215: clamp(1.75rem, 5vw, 2.15rem);
  --kl-font-size-fluid-162-205: clamp(1.62rem, 4.75vw, 2.05rem);
  --kl-font-size-fluid-150-170: clamp(1.5rem, 4.85vw, 1.7rem);
  --kl-font-size-fluid-145-180: clamp(1.45rem, 4.45cqw, 1.8rem);
  --kl-font-size-fluid-240-340: clamp(2.4rem, 4.2vw, 3.4rem);
  --kl-font-size-fluid-260-380: clamp(2.6rem, 4.6vw, 3.8rem);
  --kl-font-size-fluid-155-190: clamp(1.55rem, 2.45vw, 1.9rem);
  --kl-font-size-fluid-235-310: clamp(2.35rem, 5.6vw, 3.1rem);
  --kl-font-size-fluid-148-170: clamp(1.48rem, 3.7vw, 1.7rem);
  --kl-font-size-fluid-215-280: clamp(2.15rem, 6.5vw, 2.8rem);
  --kl-font-size-fluid-210-280: clamp(2.1rem, 8vw, 2.8rem);
  --kl-font-size-fluid-185-245: clamp(1.85rem, 1.45rem + 1.3vw, 2.45rem);
  --kl-font-size-fluid-142-168: clamp(1.42rem, 1.18vw, 1.68rem);
  --kl-font-size-fluid-134-152: clamp(1.34rem, 2.9vw, 1.52rem);
  --kl-font-size-fluid-205-255: clamp(2.05rem, 7vw, 2.55rem);
  --kl-font-size-fluid-124-143: clamp(1.24rem, 3.9vw, 1.43rem);
  --kl-font-size-fluid-190-225: clamp(1.9rem, 7.2vw, 2.25rem);
  --kl-font-size-fluid-116-132: clamp(1.16rem, 3.75vw, 1.32rem);
  --kl-font-size-cqw-heading: clamp(1.4em, 4.2cqw, 2.05em);

  /* Schriftgrößen / em-Werte */
  --kl-font-size-em-050: .5em;
  --kl-font-size-em-086: .86em;
  --kl-font-size-em-090: .9em;
  --kl-font-size-em-092: .92em;
  --kl-font-size-em-096: .96em;
  --kl-font-size-em-100: 1em;
  --kl-font-size-em-110: 1.1em;
  --kl-font-size-em-112: 1.12em;
  --kl-font-size-em-115: 1.15em;
  --kl-font-size-em-130: 1.3em;
  --kl-font-size-em-135: 1.35em;
  --kl-font-size-em-140: 1.4em;
  --kl-font-size-em-145: 1.45em;
  --kl-font-size-em-150: 1.5em;
  --kl-font-size-em-155: 1.55em;
  --kl-font-size-em-165: 1.65em;
  --kl-font-size-em-180: 1.8em;
  --kl-font-size-em-200: 2em;
  --kl-font-size-em-215: 2.15em;
  --kl-font-size-em-220: 2.2em;
  --kl-font-size-em-400: 4em;

  /* Bestehende semantische Schriftgrößen */
  --kl-font-size-h2: var(--kl-font-size-300);
  --kl-font-size-entry-title: var(--kl-font-size-500);
  --kl-font-size-card-title: var(--kl-font-size-240);
  --kl-font-size-form-label: var(--kl-font-size-160);
  --kl-font-size-form-field: var(--kl-font-size-155);
  --kl-font-size-form-note: var(--kl-font-size-145);
  --kl-font-size-form-button: var(--kl-font-size-170);

  /* Header */
  --kl-header-logo-height: 12rem;

  /* Menü-Steuerung */
  --kl-menu-font-min: 1.35rem;
  --kl-menu-font-fluid: 1.18vw;
  --kl-menu-font-max: 2.2rem;
  --kl-menu-gap-min: .8rem;
  --kl-menu-gap-fluid: 1.8vw;
  --kl-menu-gap-max: 3.2rem;
  --kl-footer-menu-font-min: 1.25rem;
  --kl-footer-menu-font-fluid: 1.12vw;
  --kl-footer-menu-font-max: 2.25rem;
  --kl-footer-menu-gap-min: .8rem;
  --kl-footer-menu-gap-fluid: 1.7vw;
  --kl-footer-menu-gap-max: 3rem;

  /* Karten-Steuerung */
  --kl-card-min-height: 72rem;
  --kl-card-image-height: 15em;
  --kl-card-title-height: 5.2em;
  --kl-card-subtitle-height: 3em;
  --kl-card-time-height: 4.8em;
  --kl-card-location-height: 3.8em;
  --kl-card-sponsor-title-height: 2.4em;
  --kl-card-sponsor-row-height: 6.2em;
  --kl-card-description-height: 13.5em;
  --kl-card-readmore-height: 3.8em;
  --kl-card-inner-gap: .85em;
}

/* ==================================================
   01 GLOBAL / CONTAINER
================================================== */
/* Auf kleinen Displays etwas weniger Seitenabstand */
@media (max-width: 700px) {
  :root {
    --kl-layout-side-gap: 2rem;
  }
}

/* Innercontainer Breite */
[class*="__inner-container"] > :not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright):not(.is-style-wide),
[class*="__inner-container"] .wp-block-group:not(.alignfull):not(.alignwide):not(.alignleft):not(.alignright),
[class*="__inner-container"] .wp-block-cover:not(.alignfull):not(.alignwide):not(.alignleft):not(.alignright) {
  max-width: var(--kl-layout-width);
}

/*
   Einheitliche Breite für zentrale Seitenbereiche.
   Diese Regel sorgt dafür, dass Text, Überschrift, Bild,
   Menü und Footer nicht unterschiedlich breit laufen.

   Hinweis:
   .primary-menu-wrapper ist hier bewusst enthalten.
   In Abschnitt 07 wird zusätzlich sichergestellt, dass Dropdowns
   trotz Breitenbegrenzung sichtbar bleiben.
*/
.header-inner.section-inner,
.primary-menu-wrapper,
.entry-header .section-inner,
.entry-header .entry-header-inner,
.entry-content > *:not(.alignfull),
.entry-content > .alignwide,
.footer-top,
.footer-widgets-wrapper {
  max-width: var(--kl-layout-width);
  width: calc(100% - (var(--kl-layout-side-gap) * 2));
  margin-left: auto;
  margin-right: auto;
}

/* Große Bilder / direkte Inhaltsbilder niemals breiter als ihr Inhaltscontainer */
.entry-content img {
  max-width: 100%;
  height: auto;
}

/* ==================================================
   01-03 MOBILE INHALTSKANTE / KARTEN-ZENTRIERUNG
================================================== */

/*
   Mobile Inhaltskante
   --------------------------------------------------
   Ziel:
   - zentrale Inhalte bleiben auf kleinen Ansichten sauber innerhalb
     gleicher linker und rechter Seitenabstände.
   - News- und Projektkarten sitzen in der Einspaltenansicht
     sauber mittig.
   - Team wird hier bewusst NICHT gesteuert.
     Team wird vollständig in Abschnitt 16 geregelt.
*/
@media (max-width: 1000px) {
  .entry-content > :not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright):not(.is-style-wide),
  .entry-content [class*="__inner-container"] > p:not(.alignwide):not(.alignfull),
  .entry-content [class*="__inner-container"] > h1:not(.alignwide):not(.alignfull),
  .entry-content [class*="__inner-container"] > h2:not(.alignwide):not(.alignfull),
  .entry-content [class*="__inner-container"] > h3:not(.alignwide):not(.alignfull),
  .entry-content [class*="__inner-container"] > h4:not(.alignwide):not(.alignfull),
  .entry-content [class*="__inner-container"] > h5:not(.alignwide):not(.alignfull),
  .entry-content [class*="__inner-container"] > h6:not(.alignwide):not(.alignfull) {
    max-width: calc(100% - 2rem) !important;
    margin-left: auto !important;
    margin-right: auto !important;
    box-sizing: border-box;
  }
}

/*
   PostGrid-Listen in mobiler Einspaltenansicht zentrieren.

   Betrifft:
   - News
   - Home-Projekte
   - Aktuelle Projekte

   Team ist bewusst nicht enthalten.
*/
@media (max-width: 880px) {
  #items-loop-pg8d6d88e3b217,
  #items-loop-pg4ec09279fbab,
  #items-loop-pg753c2ab9a4c8 {
    width: calc(100% - 2rem) !important;
    max-width: calc(100% - 2rem) !important;

    margin-left: auto !important;
    margin-right: auto !important;

    box-sizing: border-box;
  }

  #items-loop-pg8d6d88e3b217 .item.mix,
  #items-loop-pg4ec09279fbab .item.mix,
  #items-loop-pg753c2ab9a4c8 .item.mix {
    width: 100%;
    max-width: 100%;

    margin-left: auto !important;
    margin-right: auto !important;

    box-sizing: border-box;
  }
}

/*
   Sehr kleine Displays:
   Abstand kompakt halten, aber weiterhin links/rechts gleich.
*/
@media (max-width: 480px) {
  #items-loop-pg8d6d88e3b217,
  #items-loop-pg4ec09279fbab,
  #items-loop-pg753c2ab9a4c8 {
    width: calc(100% - 2rem) !important;
    max-width: calc(100% - 2rem) !important;

    margin-left: auto !important;
    margin-right: auto !important;

    box-sizing: border-box;
  }
}


/* ==================================================
   02 FONTS
================================================== */

@font-face {
  font-family: 'Roboto';
  src: url('/fonts/Roboto/Roboto-Regular-webfont.woff') format('woff'),
       url('/fonts/Roboto/Roboto-Regular-webfont.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'Roboto-Light';
  src: url('/fonts/Roboto/Roboto-Light-webfont.woff') format('woff'),
       url('/fonts/Roboto/Roboto-Light-webfont.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'Roboto-Bold';
  src: url('/fonts/Roboto/Roboto-Bold-webfont.woff') format('woff'),
       url('/fonts/Roboto/Roboto-Bold-webfont.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}


/* ==================================================
   02-XX GLOBALE SCHRIFTEN / STANDARD-TYPOGRAFIE
================================================== */

/*
   Globale Standard-Schrift
   --------------------------------------------------
   Ziel:
   - Alle normalen Seiteninhalte nutzen Roboto.
   - TwentyTwenty-Serif-Schrift in .entry-content wird überschrieben.
   - Die Standard-Schriftgröße bleibt kontrolliert.
   - Überschriften nutzen Roboto-Bold.
   - Überschriftenfarben werden NICHT verändert.
   - Links behalten die gleiche Schrift wie der Text.
   - Icons / FontAwesome werden nicht global kaputt überschrieben.
*/

/*
   Grundschrift der gesamten Seite.

   Wichtig:
   Hier wird bewusst KEINE Farbe gesetzt,
   damit Überschriften ihre vorhandenen Farben behalten können.
*/
body {
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-180);
  line-height: 1.5;
  letter-spacing: normal;
  text-align: left;
  text-underline-position: under;
}

/*
   WordPress/TwentyTwenty Hauptinhalt.

   Wichtig:
   TwentyTwenty setzt .entry-content teilweise auf Serif-Schrift
   und ab 700px auf 2.1rem. Das wird hier vereinheitlicht.

   Hier wird bewusst KEINE Farbe gesetzt,
   damit Überschriftenfarben nicht über Vererbung überschrieben werden.
*/
.entry-content,
.site-content,
.wp-site-blocks,
.wp-block-group,
.wp-block-group__inner-container,
.wp-block-column,
.wp-block-columns {
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-180);
  line-height: 1.5;
  letter-spacing: normal;
}

/*
   Standard-Fließtext und Listen.

   Nur normaler Text bekommt die Standard-Textfarbe.
   Überschriften sind hier bewusst NICHT enthalten.
*/
p,
li,
.entry-content p,
.entry-content li,
.wp-block-group p,
.wp-block-column p,
.wp-block-column li,
.widget_text p {
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-180);
  line-height: 1.5;
  letter-spacing: normal;
  color: var(--kl-color-text);
}

/*
   Links im Inhaltsbereich.

   Links erben grundsätzlich die Schrift.
   Die Farbe wird hier nicht global gesetzt,
   damit Links in Überschriften oder Sonderbereichen nicht verfärbt werden.
*/
a,
.entry-content a,
.wp-block-group a,
.wp-block-column a {
  font-family: inherit;
  text-underline-position: under;
}

/*
   Links im normalen Fließtext bleiben magenta.

   Diese Regel gilt bewusst nur für Links in Absätzen und Listen,
   nicht für Überschriften-Links.
*/
.entry-content p a,
.entry-content li a,
.wp-block-group p a,
.wp-block-column p a {
  color: var(--kl-color-magenta);
}

/*
   Überschriften global auf Roboto-Bold setzen.

   Wichtig:
   Hier wird bewusst KEINE Farbe gesetzt.
   Dadurch bleiben bestehende Überschriftenfarben aus anderen
   CSS-Abschnitten, Gutenberg-Farbeinstellungen oder Theme-Regeln erhalten.
*/
h1,
h2,
h3,
h4,
h5,
h6,
.entry-content h1,
.entry-content h2,
.entry-content h3,
.entry-content h4,
.entry-content h5,
.entry-content h6,
.wp-block-heading {
  font-family: var(--kl-font-bold) !important;
  letter-spacing: normal;
}

/*
   Listen sauber halten.
*/
.entry-content ul,
.entry-content ol,
.wp-block-group ul,
.wp-block-group ol {
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-180);
  line-height: 1.5;
  color: var(--kl-color-text);
}

/*
   Buttons / Formulartexte angleichen,
   ohne Icon-Fonts zu überschreiben.
*/
button,
input,
select,
textarea {
  font-family: var(--kl-font-main);
}

/*
   TwentyTwenty setzt ab 700px .entry-content p/li line-height/font-size.
   Hier wird der Standard bewusst stabil gehalten.

   Auch hier keine globale Farbe für Container setzen.
*/
@media (min-width: 700px) {
  .entry-content,
  .entry-content p,
  .entry-content li,
  .wp-block-group,
  .wp-block-group p,
  .wp-block-column p,
  .wp-block-column li {
    font-size: var(--kl-font-size-180);
    line-height: 1.5;
  }
}

/*
   Mobile:
   minimal kleiner, damit lange Texte besser passen.

   Überschriften werden hier bewusst nicht kleiner gemacht,
   damit bestehende H1/H2/H3-Regeln erhalten bleiben.
*/
@media (max-width: 700px) {
  body,
  .entry-content,
  .entry-content p,
  .entry-content li,
  .wp-block-group,
  .wp-block-group p,
  .wp-block-column p,
  .wp-block-column li {
    font-size: var(--kl-font-size-170);
    line-height: 1.5;
  }
}

/* Ende 02-XX GLOBALE SCHRIFTEN / STANDARD-TYPOGRAFIE */


/* ==================================================
   03 TYPOGRAFIE / GRUNDSTILE
================================================== */

/* Beitragsbild & Seitenbild global ausblenden */
.single-post .wp-post-image,
.type-page .wp-post-image {
  display: none;
}

/* Textinhalt / Counter / Seiteninhalt - Schriftanpassungen */
body,
p,
a,
ul,
li,
.widget_text p,
.wpsm_counterbox,
.wpsm_counterbox .counter,
.site-content,
.wp-block-group {
  font-family: var(--kl-font-main) !important;
  text-underline-position: under;
  color: var(--kl-color-text);
}

/* Überschriften - Schriftanpassungen */
h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: var(--kl-font-bold) !important;
  text-underline-position: under;
  color: var(--kl-color-text);
}

h2 {
  font-size: var(--kl-font-size-h2);
}

/* ==================================================
   04 SUCHE / SUCHERGEBNISSE
================================================== */

/* ==================================================
   04-01 SUCHMODAL / SUCHFELD
================================================== */

/* Suchfeld Anpassungen */
#search-form-1 {
  border-width: 1px;
  border-color: var(--kl-color-border);
  background-color: var(--kl-color-white);
  color: var(--kl-color-text);
  border-style: solid;
  border-radius: 0;
  box-shadow: 0 0 5px var(--kl-alpha-shadow-search);
  margin-left: 0;
}

#search-form-1:focus {
  outline: none;
}

/* Suchfeld Form Anpassungen */
.search-modal-inner .section-inner {
  max-width: 85rem;
}

/* Suchfeld Form Field */
.search-modal .search-field {
  border: none;
  font-size: var(--kl-font-size-200);
  height: 5rem;
  margin-top: 4.5rem;
  margin-bottom: 4.5rem;
}

/* Suchfeld Form Field ab 440px */
@media (min-width: 440px) {
  .search-modal .search-field {
    border: none;
    font-size: var(--kl-font-size-300);
    height: 6rem;
    margin-top: 4rem;
    margin-bottom: 4rem;
  }
}

/* Suchfeld Form - Anpassungen ab 1000px */
@media (min-width: 1000px) {
  .search-modal .search-field {
    border: none;
    font-size: var(--kl-font-size-400);
    height: 9rem;
    margin-top: 2.8rem;
    margin-bottom: 2.8rem;
  }
}

/* Lupe & X Anpassung */
.toggle-inner svg,
.toggle.search-untoggle.close-search-toggle.fill-children-current-color svg {
  color: var(--kl-color-white);
}

/* ==================================================
   04-02 SUCHERGEBNISSE / GRUNDLAYOUT
================================================== */

/*
   Suchergebnisseite / Grundlayout
   --------------------------------------------------
   Die normale TwentyTwenty-Suchergebnisseite ist sehr listenartig
   und nutzt große Theme-Abstände. Dieser Block gestaltet die Suche
   als ruhige Kartenübersicht im KulturLeben-Layout.

   Wichtig:
   Alle Regeln sind streng auf body.search.search-results begrenzt.
   Dadurch werden normale Seiten, News-, Projekt- und Teamkarten
   nicht verändert.
*/
body.search.search-results #site-content {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2.4rem;

  max-width: var(--kl-layout-width);
  width: calc(100% - (var(--kl-layout-side-gap) * 2));

  margin-left: auto;
  margin-right: auto;

  padding-top: 2.4rem;
  padding-bottom: 4rem;
}

/* ==================================================
   04-03 SUCHERGEBNISSE / SUCHKOPF
================================================== */

/*
   Suchkopf
   --------------------------------------------------
   Der Suchkopf wird optisch wie eine Seitenüberschrift behandelt,
   aber kompakter als der Theme-Standard.
*/
body.search.search-results .archive-header,
body.search.search-no-results .archive-header {
  grid-column: 1 / -1;

  margin: 0 0 0.6rem !important;
  padding: 0 !important;

  background: transparent !important;
  border: none !important;
}

body.search.search-results .archive-header-inner,
body.search.search-no-results .archive-header-inner {
  max-width: none !important;
  width: 100% !important;

  margin: 0 !important;
  padding: 0 !important;

  text-align: left;
}

/*
   Suchseiten-Titel
   --------------------------------------------------
   Magenta Kopfleiste passend zu News-Überschriften.

   TwentyTwenty gibt im HTML standardmäßig aus:
   <span class="color-accent">Suchen:</span> “Suchbegriff”

   Der sichtbare Prefix "Suchen:" wird unten optisch ausgeblendet
   und durch "Suchergebnisse:" ersetzt. Der Suchbegriff selbst
   bleibt unverändert erhalten.
*/
body.search.search-results .archive-title,
body.search.search-no-results .archive-title {
  display: block;

  margin: 0 !important;
  padding: 0.45rem 0.8rem 0.55rem;

  background-color: var(--kl-color-magenta);

  color: var(--kl-color-white);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-280);
  line-height: 1.2;
  letter-spacing: 0.01em;
  text-align: left;
}

body.search.search-results .archive-title .color-accent,
body.search.search-no-results .archive-title .color-accent {
  color: var(--kl-color-white);
}

/*
   Suchseiten-Titel Prefix ersetzen
   --------------------------------------------------
   Der Theme-Text "Suchen:" wird optisch ausgeblendet.
   "Suchergebnisse:" wird davor neu ausgegeben.
*/
body.search.search-results .archive-title .color-accent,
body.search.search-no-results .archive-title .color-accent {
  font-size: var(--kl-font-size-zero);
  line-height: 0;
}

body.search.search-results .archive-title::before,
body.search.search-no-results .archive-title::before {
  content: "Suchergebnisse:";

  margin-right: 0.28em;

  color: var(--kl-color-white);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-280);
  line-height: 1.2;
  letter-spacing: 0.01em;
}

/*
   Trefferanzahl / Unterzeile
   --------------------------------------------------
   Die Trefferanzahl bzw. Kein-Ergebnis-Meldung steht als kompakter
   Hinweis unter der Kopfleiste.
*/
body.search.search-results .archive-subtitle,
body.search.search-no-results .archive-subtitle {
  max-width: none !important;
  width: 100% !important;

  margin: 0 !important;
  padding: 0.8rem 0.2rem 0.2rem !important;

  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  text-align: left;
}

body.search.search-results .archive-subtitle p,
body.search.search-no-results .archive-subtitle p {
  margin: 0 !important;

  color: var(--kl-color-text);
  font-size: var(--kl-font-size-170);
  line-height: 1.4;
}

/*
   Responsive Titelgrößen
   --------------------------------------------------
   Der per CSS ersetzte Prefix bekommt dieselbe Größe wie
   der restliche Suchseiten-Titel.
*/
@media (max-width: 900px) {
  body.search.search-results .archive-title::before,
  body.search.search-no-results .archive-title::before {
    font-size: var(--kl-font-size-240);
  }
}

@media (max-width: 480px) {
  body.search.search-results .archive-title::before,
  body.search.search-no-results .archive-title::before {
    font-size: var(--kl-font-size-210);
  }
}

/* ==================================================
   04-04 SUCHERGEBNISSE / KARTEN
================================================== */

/* --------------------------------------------------
   04-04-01 Einzelnes Suchergebnis als Karte
-------------------------------------------------- */

/*
   Einzelnes Suchergebnis als Karte
   --------------------------------------------------
   Die Ergebnisse orientieren sich optisch an Projekt-/Teamkarten:
   - helle Fläche
   - brauner Rahmen
   - runde Ecken
   - dezenter Schatten
   - komplette Karte ist über den Titel-Link klickbar
   - unten rechts steht ein "mehr lesen ..."-Hinweis mit Pfeil
*/
body.search.search-results #site-content > article {
  position: relative;

  box-sizing: border-box;
  display: flex;
  flex-direction: column;

  min-width: 0;
  min-height: 24rem;

  margin: 0 !important;
  padding: 1.35rem 1.45rem 4.3rem;

  border: 2px solid var(--kl-color-brown);
  border-radius: 25px;
  background-color: var(--kl-color-surface-card);
  box-shadow: 0 4px 8px var(--kl-alpha-shadow-010);

  overflow: hidden;
  cursor: pointer;

  transition:
    box-shadow 0.18s ease,
    border-color 0.18s ease,
    background-color 0.18s ease;
}

/* --------------------------------------------------
   04-04-02 Karten-Hover
-------------------------------------------------- */

/*
   Karten-Hover
   --------------------------------------------------
   Dezenter Hover-Effekt für das gesamte Suchergebnis.
*/
body.search.search-results #site-content > article:hover,
body.search.search-results #site-content > article:focus-within {
  border-color: var(--kl-color-magenta);
  background-color: var(--kl-color-surface-card-hover);
  box-shadow: 0 6px 14px var(--kl-alpha-shadow-016);
}

/* --------------------------------------------------
   04-04-03 "mehr lesen ..."-Hinweis
-------------------------------------------------- */

/*
   "mehr lesen ..."-Hinweis
   --------------------------------------------------
   Der Text sitzt unten rechts in jeder Suchkarte.

   Wichtig:
   Der Pfeil selbst wird separat über article::before gesetzt.
   Dadurch dreht sich beim Hover/Fokus nur der Pfeil,
   nicht der Text "mehr lesen ...".
*/
body.search.search-results #site-content > article::after {
  content: "mehr lesen ...";

  position: absolute;
  right: 4.25rem;
  bottom: 1.15rem;

  min-height: 2.4rem;

  display: inline-flex;
  align-items: center;

  color: var(--kl-color-magenta);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-145);
  line-height: 1.2;
  letter-spacing: 0.035em;
  text-decoration: none;

  z-index: 2;
  pointer-events: none;
}

/* --------------------------------------------------
   04-04-04 Pfeil im "mehr lesen ..."-Hinweis
-------------------------------------------------- */

/*
   Pfeil im "mehr lesen ..."-Hinweis
   --------------------------------------------------
   Der Pfeil wird über die zentrale Icon-Variable geladen.

   Normalzustand:
   - Pfeil zeigt nach rechts.

   Hover/Fokus der Suchkarte:
   - Pfeil dreht nach rechts oben.
*/
body.search.search-results #site-content > article::before {
  content: "";

  position: absolute;
  right: 1.45rem;
  bottom: 1.15rem;

  display: block;

  width: 2.2rem;
  height: 2.2rem;

  background-image: var(--kl-icon-pfeil-magenta);
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;

  transform: rotate(0deg);
  transform-origin: center center;

  transition: transform 0.16s ease;

  z-index: 2;
  pointer-events: none;
}

/*
   Suchergebnis-Karten:
   Bei Hover/Fokus dreht sich nur der Pfeil nach rechts oben.
*/
body.search.search-results #site-content > article:hover::before,
body.search.search-results #site-content > article:focus-within::before {
  transform: rotate(-45deg);
}

/* --------------------------------------------------
   04-04-05 Theme-Header im Ergebnis neutralisieren
-------------------------------------------------- */

/*
   Theme-Header im Ergebnis neutralisieren
   --------------------------------------------------
   TwentyTwenty setzt hier große Abstände und zentriert alles.
   Für Karten wird das zurückgenommen.
*/
body.search.search-results #site-content > article .entry-header {
  margin: 0 !important;
  padding: 0 !important;

  background: transparent !important;
  border: none !important;

  text-align: left !important;
  letter-spacing: normal !important;
}

body.search.search-results #site-content > article .entry-header-inner,
body.search.search-results #site-content > article .post-inner,
body.search.search-results #site-content > article > .section-inner {
  max-width: none !important;
  width: 100% !important;

  margin: 0 !important;
  padding: 0 !important;
}

/* --------------------------------------------------
   04-04-06 Post-Inner / Auszugsbereich tiefer führen
-------------------------------------------------- */

/*
   Post-Inner / Auszugsbereich tiefer führen
   --------------------------------------------------
   Der Suchauszug rückt innerhalb der Karte nach unten.
   Dadurch wirkt der Inhalt vertikal ruhiger und der Mehr-lesen-Bereich
   sitzt sauber am Kartenfuß.
*/
body.search.search-results #site-content > article .post-inner {
  margin-top: auto !important;
}

/* ==================================================
   04-05 SUCHERGEBNISSE / TITEL, META UND AUSZUG
================================================== */

/*
   Ergebnis-Titel
   --------------------------------------------------
   Kompakter Kartentitel statt riesigem Theme-H1/H2.
   Überschriften sind bewusst nicht unterstrichen.
*/
body.search.search-results #site-content > article .entry-title {
  margin: 0 0 0.65rem !important;

  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-225) !important;
  line-height: 1.18;
  letter-spacing: 0.01em;
  text-align: left;
}

/*
   Titel-Link
   --------------------------------------------------
   Der sichtbare Titel bleibt ohne Unterstreichung.
   Über ::after wird der Link als unsichtbare Fläche über die ganze
   Suchergebnis-Karte gelegt. Dadurch ist die komplette Karte klickbar.
*/
body.search.search-results #site-content > article .entry-title a {
  position: static;

  color: var(--kl-color-text);
  text-decoration: none !important;
}

body.search.search-results #site-content > article .entry-title a::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 5;
}

body.search.search-results #site-content > article .entry-title a:hover,
body.search.search-results #site-content > article .entry-title a:focus {
  color: var(--kl-color-magenta);
  text-decoration: none !important;
}

/*
   Titel-Farbe bei Karten-Hover
   --------------------------------------------------
   Wenn die ganze Karte berührt wird, wirkt auch der Titel aktiv.
*/
body.search.search-results #site-content > article:hover .entry-title a,
body.search.search-results #site-content > article:focus-within .entry-title a {
  color: var(--kl-color-magenta);
}

/*
   Veröffentlichungsdatum / Meta oben
   --------------------------------------------------
   Falls WordPress ein Datum ausgibt, wird es kompakt und linksbündig
   dargestellt.
*/
body.search.search-results #site-content > article .post-meta-wrapper.post-meta-single {
  align-self: flex-start;

  margin: -0.15rem 0 0.8rem !important;
  padding: 0 !important;

  text-align: left;
}

body.search.search-results #site-content > article .post-meta {
  display: flex;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 0.25rem;

  margin: 0 !important;
  padding: 0 !important;
}

body.search.search-results #site-content > article .post-meta li {
  margin: 0 !important;

  color: var(--kl-color-text);
  font-size: var(--kl-font-size-135);
  line-height: 1.3;
  text-align: left;
}

/*
   Datum-Link
   --------------------------------------------------
   Datum bleibt optisch als Link erkennbar, liegt aber unter der
   Karten-Klickfläche. Geklickt wird dadurch die Zielseite des Titels.
*/
body.search.search-results #site-content > article .post-meta a {
  color: var(--kl-color-text);
  text-decoration: underline;
  text-decoration-color: var(--kl-color-magenta);
}

body.search.search-results #site-content > article .post-meta .meta-icon {
  display: none;
}

/*
   Inhalt / Auszug
   --------------------------------------------------
   Der Suchauszug wird lesbar, aber begrenzt.
   Lange Texte sprengen dadurch nicht die Karte.
*/
body.search.search-results #site-content > article .entry-content {
  margin: 0 !important;
  padding: 0 !important;

  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
}

body.search.search-results #site-content > article .entry-content > * {
  max-width: none !important;
  width: auto !important;

  margin-left: 0 !important;
  margin-right: 0 !important;
}

body.search.search-results #site-content > article .entry-content p {
  margin: 0 !important;

  color: var(--kl-color-text);
  font-size: var(--kl-font-size-155);
  line-height: 1.42;

  display: -webkit-box;
  -webkit-line-clamp: 5;
  -webkit-box-orient: vertical;

  overflow: hidden;
}

/*
   Leere Inhalte
   --------------------------------------------------
   Einige Suchtreffer wie PostGrid-Vorlagen haben keinen Auszug.
   Diese leeren Inhaltsbereiche erzeugen keinen Abstand.
*/
body.search.search-results #site-content > article .entry-content:empty {
  display: none;
}

/*
   Bearbeiten-Link
   --------------------------------------------------
   Der Admin-Bearbeiten-Link stört die öffentliche Kartenoptik.
   Auf der Suchergebnisseite wird er deshalb ausgeblendet.
*/
body.search.search-results #site-content > article .post-meta-edit-link-wrapper {
  display: none !important;
}

/*
   Theme-Trennlinien zwischen Ergebnissen
   --------------------------------------------------
   Die Karten haben bereits Abstand und Rahmen.
   Die alten horizontalen Trenner werden entfernt.
*/
body.search.search-results #site-content > hr.post-separator,
body.search.search-results #site-content > hr.styled-separator {
  display: none !important;
}

/* ==================================================
   04-06 KEINE SUCHERGEBNISSE
================================================== */

/*
   Keine Suchergebnisse / Grundlayout
   --------------------------------------------------
   Die Kein-Ergebnis-Seite nutzt dasselbe 100rem-Layout,
   aber einspaltig. Die Meldung selbst bleibt schlicht,
   ohne Box, Rahmen, Hintergrund oder Schatten.
*/
body.search.search-no-results #site-content {
  max-width: var(--kl-layout-width);
  width: calc(100% - (var(--kl-layout-side-gap) * 2));

  margin-left: auto;
  margin-right: auto;

  padding-top: 2.4rem;
  padding-bottom: 4rem;
}

/*
   Kein-Ergebnis-Meldung
   --------------------------------------------------
   Der Hinweistext steht schlicht unter der magenta Suchüberschrift.
   Keine Box, kein Rahmen, kein Hintergrund, kein Schatten.
*/
body.search.search-no-results .archive-header {
  margin-bottom: 1.6rem !important;
}

body.search.search-no-results .archive-subtitle {
  box-sizing: border-box;

  max-width: none !important;
  width: 100% !important;

  margin: 0 !important;
  padding: 1rem 0.2rem 0.2rem !important;

  border: none !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;

  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  text-align: left;
}

body.search.search-no-results .archive-subtitle p {
  margin: 0 !important;

  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-165);
  line-height: 1.45;
}

/*
   Kein-Ergebnis-Suchformular
   --------------------------------------------------
   Das erneute Suchformular orientiert sich am Kontaktformular:
   - mittige Breite
   - nur dünne Seitenlinien links und rechts
   - kein Hintergrund
   - kein oberer oder unterer Rahmen
   - keine Rundung
   - kein Schatten
*/
body.search.search-no-results .no-search-results-form {
  box-sizing: border-box;

  max-width: 60rem !important;
  width: 100% !important;

  margin: 2.2rem auto 0 !important;
  padding: 2.2rem 3rem !important;

  border-left: 0.2rem solid var(--kl-alpha-magenta-080);
  border-right: 0.2rem solid var(--kl-alpha-magenta-080);
  border-top: none !important;
  border-bottom: none !important;
  border-radius: 0 !important;

  background: transparent !important;
  box-shadow: none !important;

  font-family: var(--kl-font-main) !important;
  color: var(--kl-color-text);
}

body.search.search-no-results .no-search-results-form .search-form {
  display: flex;
  align-items: stretch;
  gap: 0.8rem;

  margin: 0;
}

body.search.search-no-results .no-search-results-form label {
  display: block;
  flex: 1 1 auto;

  margin: 0;
}

body.search.search-no-results .no-search-results-form .search-field {
  width: 100%;
  height: auto;

  margin: 0 !important;
  padding: 0.95rem 1rem;

  border: 0.1rem solid var(--kl-alpha-brown-border);
  border-radius: 0;
  background-color: var(--kl-color-white);

  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-160);
  line-height: 1.35;

  box-shadow: none;
}

body.search.search-no-results .no-search-results-form .search-field:focus {
  outline: none;
  border-color: var(--kl-color-magenta);
}

/*
   Suchbutton
   --------------------------------------------------
   Ruhiger KulturLeben-Button wie bei den Formularen.
*/
body.search.search-no-results .no-search-results-form .search-submit {
  flex: 0 0 auto;

  margin: 0;
  padding: 0.95rem 2.1rem;

  border: 0.2rem solid var(--kl-color-magenta);
  border-radius: 0;
  background-color: var(--kl-color-brown);

  color: var(--kl-color-white);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-160);
  line-height: 1.2;
  letter-spacing: 0.045em;

  text-decoration: none !important;
  text-transform: none;

  cursor: pointer;

  transition:
    background-color 0.18s ease,
    border-color 0.18s ease,
    color 0.18s ease;
}

body.search.search-no-results .no-search-results-form .search-submit:hover,
body.search.search-no-results .no-search-results-form .search-submit:focus {
  background-color: var(--kl-color-magenta);
  border-color: var(--kl-color-brown);
  color: var(--kl-color-white);

  text-decoration: none !important;
  outline: none;
}

/*
   Mobile Ansicht für keine Suchergebnisse
   --------------------------------------------------
   Auf kleinen Displays bleibt die Formularoptik erhalten:
   keine Box, kein Hintergrund, nur dünne Seitenlinien.
*/
@media (max-width: 900px) {
  body.search.search-no-results .no-search-results-form .search-form {
  }

  body.search.search-no-results .no-search-results-form .search-submit {
  }
}

@media (max-width: 480px) {
  body.search.search-no-results #site-content {
    width: calc(100% - 4rem);
    padding-top: 1.8rem;
    padding-bottom: 3rem;
  }

  body.search.search-no-results .archive-subtitle {

    border: none !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
  }

  body.search.search-no-results .archive-subtitle p {
    font-size: var(--kl-font-size-150);
  }

  body.search.search-no-results .no-search-results-form {

    border-left-width: 0.15rem;
    border-right-width: 0.15rem;
    border-top: none !important;
    border-bottom: none !important;
    border-radius: 0 !important;

    background: transparent !important;
    box-shadow: none !important;
  }

  body.search.search-no-results .no-search-results-form .search-field {
  }

  body.search.search-no-results .no-search-results-form .search-submit {
  }
}

/* ==================================================
   04-07 SUCHERGEBNISSE / PAGINATION
================================================== */

/*
   Pagination / Seitenzahlen für Suchergebnisse
   --------------------------------------------------
   Ziel:
   - optisch nah an News-/Projekt-Pagination
   - alle Elemente stehen direkt zusammen in der Mitte
   - Zurück und Weiter stehen direkt neben den Zahlen
   - kompakter, aber lesbarer Abstand zwischen allen Elementen
   - besser lesbarer Buchstabenabstand
   - Hover/Fokus mit klarem, aber ruhigem Button-Effekt
*/
body.search.search-results .pagination-wrapper {
  grid-column: 1 / -1;

  max-width: none !important;
  width: 100% !important;

  margin: 1.8rem 0 2rem !important;
  padding: 0 !important;

  text-align: center;
}

/* Theme-Trennlinie vor der Pagination entfernen */
body.search.search-results .pagination-wrapper .pagination-separator {
  display: none !important;
}

/* Pagination-Container */
body.search.search-results .navigation.pagination {
  display: flex !important;
  justify-content: center !important;

  width: 100% !important;
  max-width: none !important;

  margin: 0 !important;
  padding: 0 !important;
}

/* Liste der Seitenzahlen */
body.search.search-results .nav-links {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-wrap: wrap;

  width: auto !important;
  max-width: max-content !important;

  gap: 0.35rem !important;

  margin: 0 auto !important;
  padding: 0 !important;

  background: transparent;
  border-radius: 0;
}

/* Alle direkten Pagination-Elemente zurücksetzen */
body.search.search-results .nav-links > * {
  position: static !important;
  float: none !important;

  margin-left: 0 !important;
  margin-right: 0 !important;

  transform: none !important;
}

/* Einzelne Seitenzahl / Zurück / Weiter */
body.search.search-results .nav-links .page-numbers {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;

  min-width: 3.2rem;
  min-height: 3.2rem;
  padding: 0.45rem 0.9rem;

  margin: 0 !important;

  border: 2px solid var(--kl-color-brown);
  border-radius: 999px;
  background-color: var(--kl-color-white);

  color: var(--kl-color-magenta);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-140);
  line-height: 1;
  letter-spacing: 0.035em;
  text-decoration: none;

  cursor: pointer;

  transition:
    background-color 0.18s ease,
    border-color 0.18s ease,
    color 0.18s ease,
    opacity 0.18s ease;
}

/*
   Hover/Fokus für klickbare Pagination-Elemente
*/
body.search.search-results .nav-links a.page-numbers:hover,
body.search.search-results .nav-links a.page-numbers:focus {
  background-color: var(--kl-color-magenta);
  border-color: var(--kl-color-brown);
  color: var(--kl-color-white);
  text-decoration: none;
  outline: none;
}

/* Aktive Seite */
body.search.search-results .nav-links .page-numbers.current {
  background-color: var(--kl-color-magenta);
  border-color: var(--kl-color-magenta);
  color: var(--kl-color-white);
  cursor: default;
}

/* Deaktivierte Elemente */
body.search.search-results .nav-links .page-numbers.placeholder {
  opacity: 0.35;
  cursor: default;
  pointer-events: none;
}

/* Auslassungszeichen */
body.search.search-results .nav-links .page-numbers.dots {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  min-width: 2.2rem;
  min-height: 3.2rem;

  border-color: transparent;
  background-color: transparent;

  color: var(--kl-color-brown);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-140);
  line-height: 1;
  letter-spacing: 0.035em;

  cursor: default;
}

/*
   "Neuere Beiträge" visuell durch "Zurück" ersetzen
*/
body.search.search-results .nav-links .prev.page-numbers {
  font-size: var(--kl-font-size-zero);
  min-width: auto;
  padding-left: 1.2rem;
  padding-right: 1.2rem;
}

body.search.search-results .nav-links .prev.page-numbers::after {
  content: "Zurück";
  font-size: var(--kl-font-size-140);
  letter-spacing: 0.045em;
}

/*
   "Ältere Beiträge" visuell durch "Weiter" ersetzen
*/
body.search.search-results .nav-links .next.page-numbers {
  font-size: var(--kl-font-size-zero);
  min-width: auto;
  padding-left: 1.2rem;
  padding-right: 1.2rem;
}

body.search.search-results .nav-links .next.page-numbers::after {
  content: "Weiter";
  font-size: var(--kl-font-size-140);
  letter-spacing: 0.045em;
}

/*
   Hover/Fokus für Zurück und Weiter
*/
body.search.search-results .nav-links a.prev.page-numbers:hover::after,
body.search.search-results .nav-links a.prev.page-numbers:focus::after,
body.search.search-results .nav-links a.next.page-numbers:hover::after,
body.search.search-results .nav-links a.next.page-numbers:focus::after {
  color: var(--kl-color-white);
}

/*
   Pfeile und innere Theme-Texte ausblenden
*/
body.search.search-results .nav-links .prev.page-numbers > *,
body.search.search-results .nav-links .next.page-numbers > * {
  display: none !important;
}

/* ==================================================
   04-08 SUCHERGEBNISSE / RESPONSIVE
================================================== */

/*
   Tablet
   --------------------------------------------------
   Unter 900px wird die Suche einspaltig.
*/
@media (max-width: 900px) {
  body.search.search-results #site-content {
    grid-template-columns: 1fr;
    gap: 1.8rem;
  }

  body.search.search-results .archive-title,
  body.search.search-no-results .archive-title {
    font-size: var(--kl-font-size-240);
  }

  body.search.search-no-results .no-search-results-form .search-form {
    flex-direction: column;
  }

  body.search.search-no-results .no-search-results-form .search-submit {
    align-self: flex-start;
  }
}

/*
   Mobile
   --------------------------------------------------
   Kompaktere Karten und kleinere Schrift auf kleinen Displays.
*/
@media (max-width: 480px) {
  body.search.search-results #site-content,
  body.search.search-no-results #site-content {
    width: calc(100% - 4rem);
    padding-top: 1.8rem;
    padding-bottom: 3rem;
  }

  body.search.search-results #site-content > article {
    border-radius: 18px;
    padding: 1.15rem 1.2rem 4rem;
  }

  body.search.search-results #site-content > article::after {
    right: 1.2rem;
    bottom: 1rem;

    padding-right: 2.5rem;
    background-size: 2rem 2rem;

    font-size: var(--kl-font-size-130);
    letter-spacing: 0.035em;
  }

  body.search.search-results .archive-title,
  body.search.search-no-results .archive-title {
    font-size: var(--kl-font-size-210);
  }

  body.search.search-results .archive-subtitle p,
  body.search.search-no-results .archive-subtitle p {
    font-size: var(--kl-font-size-150);
  }

  body.search.search-no-results .archive-subtitle {
    padding: 1.2rem 1.3rem !important;
  }

  body.search.search-no-results .no-search-results-form {
    max-width: none !important;
    margin-top: 1.6rem !important;
    padding: 1.6rem 1.4rem !important;
  }

  body.search.search-no-results .no-search-results-form .search-field {
    font-size: var(--kl-font-size-150);
    padding: 0.8rem 0.9rem;
  }

  body.search.search-no-results .no-search-results-form .search-submit {
    font-size: var(--kl-font-size-155);
    letter-spacing: 0.035em;
    padding: 0.9rem 2rem;
  }

  body.search.search-results #site-content > article .entry-title {
    font-size: var(--kl-font-size-200) !important;
  }

  body.search.search-results #site-content > article .entry-content p {
    font-size: var(--kl-font-size-145);
    -webkit-line-clamp: 6;
  }

  body.search.search-results .nav-links {
    gap: 0.22rem !important;
  }

  body.search.search-results .nav-links .page-numbers {
    min-width: 2.8rem;
    min-height: 2.8rem;
    padding: 0.4rem 0.7rem;
    font-size: var(--kl-font-size-125);
    letter-spacing: 0.03em;
  }

  body.search.search-results .nav-links .page-numbers.dots {
    min-height: 2.8rem;
    font-size: var(--kl-font-size-125);
    letter-spacing: 0.03em;
  }

  body.search.search-results .nav-links .prev.page-numbers::after,
  body.search.search-results .nav-links .next.page-numbers::after {
    font-size: var(--kl-font-size-125);
    letter-spacing: 0.04em;
  }
}

/* ==================================================
   05 COOKIE INFO
================================================== */

/* Cookie Info - unten fixieren */
.bst-panel-fixed-top {
  top: auto;
  position: fixed;
  bottom: 0;
  left: 0;
}

/* Cookie Info - Blockgröße */
.bst-wrapper.group {
  max-width: none !important;
}

/* Cookie Info - Button */
.bst-wrapper.group button {
  background: var(--kl-color-brown);
  cursor: pointer;
  font-size: var(--kl-font-size-150);
  font-weight: 600;
  letter-spacing: 0.0333em;
  transition: opacity 0.15s linear;
  border: 2px solid;
}

/* Cookie Info - Button Hover */
.bst-wrapper.group button:hover {
  background: var(--kl-color-magenta);
  border-color: var(--kl-color-brown);
}

/* ==================================================
   06 HEADER / LOGO / SPRACHWECHSEL
================================================== */

/*
   Header-Raster
   --------------------------------------------------
   1fr auto 1fr sorgt dafür, dass das Logo immer exakt
   mittig sitzt. Rechts können Suche, Leichte Sprache und
   Gebärdensprache stehen, ohne das Logo optisch zu verschieben.
*/
.header-inner.section-inner {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  position: relative;
  padding: 0;
}

/*
   Logo mittig.
   Je nach Theme liegt das Logo entweder direkt in .site-logo
   oder innerhalb von .header-titles-wrapper.
*/
.header-titles-wrapper,
.site-logo {
  grid-column: 2;
  justify-self: center;
}

/*
   Einheitliche Logo-Größe für Desktop, Tablet und Mobil
   --------------------------------------------------
   Das Logo hatte vorher je nach Ansicht unterschiedliche Größen.
   Diese Regel setzt eine feste visuelle Höhe für alle Ansichten.
   max-width: none verhindert, dass das Theme das Desktop-Logo
   kleiner skaliert als das Tablet-/Mobil-Logo.
*/
.site-logo img,
.header-titles-wrapper .site-logo img,
.custom-logo-link img,
img.custom-logo {
  height: var(--kl-header-logo-height);
  max-height: var(--kl-header-logo-height);
  width: auto;
  max-width: none;
  margin: 1rem 0;
  display: block;
}

/*
   Sicherheit für kleine Bildschirme:
   Das Logo bleibt grundsätzlich gleich groß.
   Nur wenn der Bildschirm extrem schmal ist, darf es nicht
   aus dem sichtbaren Bereich herauslaufen.
*/
@media (max-width: 420px) {
  .site-logo img,
  .header-titles-wrapper .site-logo img,
  .custom-logo-link img,
  img.custom-logo {
    max-width: calc(100vw - 4rem);
    height: auto;
    max-height: var(--kl-header-logo-height);
  }
}

/*
   Header-Icons rechts.
   Wichtig: keine festen 6rem mehr.
   Dadurch enden die Icons exakt an der rechten Layoutkante.
*/
.header-toggles {
  grid-column: 3;
  justify-self: end;
  position: static;
  top: auto;
  right: auto;
  transform: none;
  margin-right: 0;
}

/* Falls Sprach-/Symbol-Umschalter separat im Header liegt */
.header-inner.section-inner .language-switch {
  grid-column: 3;
  justify-self: end;
}

/* Header - Logo & Button - Hover Effekt */
.header-inner.section-inner img:hover,
.header-inner.section-inner button:hover {
  opacity: 0.6;
  transition: opacity 0.3s linear;
}

/* Seiten/Sprachen Switch - mittige Position */
.language-switch {
  display: flex;
  justify-content: center;
}

/* Seiten/Sprachen Switch - Abstand rechts */
.language-switch img {
  margin-left: 2rem;
}

/* Titel Footer Rahmen Entfernung */
.header-footer-group {
  border-bottom: none;
}

/* ==================================================
   07 NAVIGATION / MENÜ
================================================== */

/*
   Abschnittsübersicht
   --------------------------------------------------
   07-01  Navigation / Ebenen und Grundstruktur
   07-02  Hauptmenü / Außencontainer
   07-03  Hauptmenü / Liste und Menüpunkte
   07-04  Hauptmenü / Responsive Schrift und Abstände
   07-05  Hauptmenü / Farben, Links, Hover und aktive Punkte
   07-06  Hauptmenü / Externe Links Desktop
   07-07  Submenü / Dropdown-Grundstruktur
   07-08  Submenü / Pfeil und Dropdown-Position
   07-09  Submenü / Listenpunkte und Links
   07-10  Mobile Navigation / Desktop-Dropdown-Reset
   07-11  Mobile Navigation / Externe Links rechts im Toggle-Bereich
   07-12  Footer-Menü / Unterstreichungen

   Wichtig:
   Das eigentliche mobile Menü wird in Abschnitt 09 weitergehend geregelt.
   Dieser Abschnitt ergänzt nur die Navigationslogik und externe Link-Pfeile.
*/


/* ==================================================
   07-01 NAVIGATION / EBENEN UND GRUNDSTRUKTUR
================================================== */

/*
   Navigations-Ebene / Stapelreihenfolge
   --------------------------------------------------
   Wichtig:
   Das Menü und die Dropdowns müssen über Karten, Badges und Bildern liegen,
   dürfen aber den Header nicht gegenseitig überdecken.

   Deshalb:
   - keine extrem hohe globale Ebene auf alle Header-Elemente
   - nur die Navigationsleiste und das Dropdown bekommen kontrollierte Ebenen
   - Karten-Badges bleiben darunter
*/
#site-header {
  position: relative;
  z-index: 900;
  overflow: visible;
}

.header-footer-group {
  overflow: visible;
}

/*
   Navigationsleiste / braune Hintergrundfläche
   --------------------------------------------------
   Ziel:
   - Die gesamte sichtbare Menüleiste ist braun hinterlegt.
   - Die braune Fläche läuft über die volle Browserbreite.
   - Das eigentliche Menü bleibt innen auf 100rem begrenzt.
   - Keine weiße/transparent sichtbare Zwischenfläche.
*/
#site-header .header-navigation-plate,
.header-navigation-plate,
#site-header .header-navigation-wrapper,
.header-navigation-wrapper {
  background-color: var(--kl-color-brown) !important;
  overflow: visible !important;
  position: relative;
  z-index: 950;
}

/*
   Header-Navigation-Wrapper
   --------------------------------------------------
   TwentyTwenty setzt .header-navigation-wrapper ab 1000px auf display:flex.
   Diese Regel ergänzt dort den braunen Hintergrund und volle Breite.
*/
#site-header .header-navigation-wrapper,
.header-navigation-wrapper {
  width: 100% !important;
  max-width: none !important;
}

/*
   Zusatzsicherheit:
   Auch Wrapper und Menü selbst bekommen braunen Hintergrund,
   damit keine weißen Zwischenflächen sichtbar bleiben.
*/
#site-header .primary-menu-wrapper,
.primary-menu-wrapper,
#site-header ul.primary-menu,
ul.primary-menu,
#site-header ul.primary-menu > li,
ul.primary-menu > li {
  background-color: var(--kl-color-brown) !important;
}


/* ==================================================
   07-02 HAUPTMENÜ / AUSSENCONTAINER
================================================== */

/*
   Hauptmenü-Außencontainer
   --------------------------------------------------
   Gleiche Breite wie Inhalt und Bild.
   Dropdown-Menüs bleiben sichtbar.
   Das Menü bleibt sichtbar und liegt über dem Inhaltsbereich.

   Wichtig:
   Der Wrapper nutzt die zentrale Layoutbreite.
   In Tablet-/Zwischenbreiten soll die verfügbare Breite möglichst
   gut genutzt werden, damit die Schrift nicht unnötig klein wirkt.
*/
.primary-menu-wrapper {
  display: flex;
  justify-content: center;

  /*
     Kompakter als vorher, aber nicht zu stark nach oben gezogen.
     Zu starke negative Verschiebungen können dazu führen, dass
     das Menü vom Header oder anderen Ebenen überdeckt wird.
  */
  padding-top: 0.25rem;
  padding-bottom: 0.75rem;

  max-width: var(--kl-layout-width);
  width: calc(100% - (var(--kl-layout-side-gap) * 2));
  margin-left: auto;
  margin-right: auto;

  overflow: visible !important;
  position: relative;
  z-index: 960;
}


/* ==================================================
   07-03 HAUPTMENÜ / LISTE UND MENÜPUNKTE
================================================== */

/*
   Hauptmenü
   --------------------------------------------------
   - erster Menüpunkt beginnt links an der Inhaltskante
   - letzter Menüpunkt endet rechts an der Inhaltskante
   - Menü darf NICHT umbrechen
   - Schrift und Abstände werden dynamisch angepasst

   Änderung:
   In Tablet-/Zwischenbreiten war die Schrift zu klein, obwohl
   noch genug Platz vorhanden war. Deshalb wird die Schrift dort
   größer geführt und erst bei wirklich engen Breiten stärker reduziert.
*/
ul.primary-menu {
  width: 100%;
  max-width: var(--kl-layout-width);

  display: flex;
  flex-wrap: nowrap;
  justify-content: space-between;
  align-items: center;

  column-gap: clamp(0.4rem, 0.95vw, 1.8rem);

  margin: 0;
  padding: 0;

  font-size: var(--kl-font-size-menu-desktop);
  letter-spacing: clamp(0em, 0.1vw, 0.04em);
  font-weight: 700;
  text-underline-position: under;

  overflow: visible !important;
  position: relative;
  z-index: 970;
}

/*
   Theme-Abstände entfernen, damit die Kanten exakt stimmen.
   Wichtig:
   Kein padding-bottom auf li.
   Dadurch entsteht kein künstlich vergrößerter Hover-Bereich,
   der Dropdowns zu früh öffnen würde.
*/
ul.primary-menu > li {
  margin-left: 0;
  margin-right: 0;
  padding-top: 0;
  padding-bottom: 0;

  flex: 0 1 auto;
  min-width: 0;

  position: relative;
  overflow: visible !important;
  z-index: 980;

  background-color: var(--kl-color-brown) !important;
}

/*
   Hauptmenü-Einträge bleiben immer einzeilig.
   Text und Dropdown-Icons sind weiß.
*/
ul.primary-menu > li > a,
ul.primary-menu > li > .icon {
  white-space: nowrap;
  color: var(--kl-color-white) !important;
}

/*
   Links selbst sind der eigentliche Hover-Bereich.
   Keine übergroßen unsichtbaren Zonen am li.
*/
ul.primary-menu > li > a {
  display: inline-flex;
  align-items: center;
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;

  color: var(--kl-color-white) !important;
  background-color: transparent !important;
}


/* ==================================================
   07-04 HAUPTMENÜ / RESPONSIVE SCHRIFT UND ABSTÄNDE
================================================== */

/*
   Bis 1280px:
   In dieser Zwischenbreite ist meistens noch genug Platz.
   Die Schrift bleibt deshalb bewusst größer.
*/
@media (max-width: 1280px) {
  ul.primary-menu {
    font-size: var(--kl-font-size-menu-wide);
    column-gap: clamp(0.35rem, 0.85vw, 1.4rem);
    letter-spacing: clamp(0em, 0.08vw, 0.035em);
  }
}

/*
   Unter 1100px:
   Nicht umbrechen, sondern Schrift nur moderat reduzieren.
   Diese Ansicht war vorher zu klein.
*/
@media (max-width: 1100px) {
  ul.primary-menu {
    font-size: var(--kl-font-size-menu-tablet);
    column-gap: clamp(0.25rem, 0.62vw, 1rem);
    letter-spacing: clamp(0em, 0.04vw, 0.025em);
  }
}

/*
   Unter 1000px:
   Noch sichtbar größer halten, solange das horizontale Menü angezeigt wird.
*/
@media (max-width: 1000px) {
  ul.primary-menu {
    font-size: var(--kl-font-size-menu-compact);
    column-gap: clamp(0.18rem, 0.5vw, 0.8rem);
    letter-spacing: 0;
  }
}

/*
   Unter 900px:
   Weiter verkleinern, aber NICHT abschneiden und NICHT umbrechen.
*/
@media (max-width: 900px) {
  .primary-menu-wrapper {
    overflow: visible !important;
  }

  ul.primary-menu {
    font-size: var(--kl-font-size-menu-small);
    column-gap: clamp(0.12rem, 0.42vw, 0.65rem);
    letter-spacing: 0;
  }
}

/*
   Unter 760px:
   Noch etwas kleiner, damit lange Hauptmenüeinträge sichtbar bleiben.
*/
@media (max-width: 760px) {
  ul.primary-menu {
    font-size: var(--kl-font-size-menu-tiny);
    column-gap: 0.22rem;
  }
}

/*
   Unter 620px:
   Sehr enge Breiten. Trotzdem kein Umbruch.
*/
@media (max-width: 620px) {
  ul.primary-menu {
    font-size: var(--kl-font-size-082);
    column-gap: 0.12rem;
  }
}

/* ==================================================
   07-05 HAUPTMENÜ / FARBEN, LINKS, HOVER UND AKTIVE PUNKTE
================================================== */

/*
   Neue Navi Leiste - Anpassungen Hauptmenü
   --------------------------------------------------
   Ziel:
   - Hauptmenü-Text bleibt auf braunem Hintergrund weiß.
   - Dropdown-/Aufklapp-Icons im Desktop-Hauptmenü werden nur magenta umgefärbt.
   - Keine Vergrößerung, kein transform, keine Breitenänderung an den V-Icons.
   - Link-Unterstreichungen bleiben wie bisher:
     normal weiß, Hover magenta, aktiv rosa.

   Wichtig:
   Die Textlinks und die Icon-Spans werden bewusst getrennt behandelt.
   Dadurch kann der Menütext weiß bleiben, während die V-/Dropdown-Icons
   in KulturLeben-Magenta erscheinen.
*/

/* --------------------------------------------------
   07-05-01 Hauptmenü-Textlinks bleiben weiß
-------------------------------------------------- */

#site-header .header-navigation-wrapper .primary-menu > li > a,
#site-header .primary-menu-wrapper .primary-menu > li > a,
body:not(.overlay-header) #site-header .primary-menu > li > a,
body:not(.overlay-header) .primary-menu > li > a,
ul.primary-menu > li > a {
  color: var(--kl-color-white) !important;
}

/*
   Falls Theme- oder Browserregeln direkt alle Links im Header färben,
   werden nur die eigentlichen Menülinks gezielt weiß gesetzt.
*/
#site-header .header-navigation-wrapper a,
#site-header .primary-menu-wrapper a,
#site-header ul.primary-menu a,
.header-navigation-wrapper a,
.primary-menu-wrapper a,
ul.primary-menu a {
  color: var(--kl-color-white) !important;
}


/* --------------------------------------------------
   07-05-02 Hauptmenü-Unterstreichungen
-------------------------------------------------- */

/*
   Normalzustand:
   - Schrift weiß
   - Unterstreichung weiß
*/
#site-header .primary-menu a,
.primary-menu a {
  color: var(--kl-color-white) !important;
  text-decoration: underline;
  text-decoration-color: var(--kl-color-white);
}

/*
   Hover / Fokus:
   - Schrift bleibt weiß
   - Unterstreichung wird magenta
*/
#site-header .primary-menu a:hover,
#site-header .primary-menu a:focus,
.primary-menu a:hover,
.primary-menu a:focus {
  color: var(--kl-color-white) !important;
  text-decoration: underline;
  text-decoration-color: var(--kl-color-magenta);
}

/*
   Aktive / aktuelle Menüpunkte:
   - Schrift bleibt weiß
   - Unterstreichung wird rosa
   Rosa = Zwischenfarbe aus Magenta und Weiß.
*/
#site-header .primary-menu .current_page_ancestor > a,
#site-header .primary-menu .current-menu-item > a,
#site-header .primary-menu .current-menu-parent > a,
#site-header .primary-menu .current-menu-ancestor > a,
.primary-menu .current_page_ancestor > a,
.primary-menu .current-menu-item > a,
.primary-menu .current-menu-parent > a,
.primary-menu .current-menu-ancestor > a {
  color: var(--kl-color-white) !important;
  text-decoration: underline;
  text-decoration-color: var(--kl-color-active-underline);
}

/*
   Aktive oder geöffnete Menüpunkte bei Hover/Fokus:
   Wenn ein aktiver/geöffneter Menüpunkt zusätzlich gehovert wird,
   darf die Unterstreichung magenta werden.
*/
.primary-menu > li:hover > a,
.primary-menu > li:focus-within > a {
  color: var(--kl-color-white) !important;
  text-decoration-color: var(--kl-color-magenta);
}


/* --------------------------------------------------
   07-05-03 Desktop-Dropdown-Icons / V-Pfeile nur magenta umfärben
-------------------------------------------------- */

/*
   Dropdown-Icon / Pfeilplatzhalter neben Menüpunkten.
   In deinem HTML ist das:
   <span class="icon"></span>

   Wichtig:
   Hier wird NUR die Farbe geändert.
   Keine Größe, kein transform, keine Breite/Höhe.
*/
#site-header .header-navigation-wrapper .primary-menu > li > .icon,
#site-header .primary-menu-wrapper .primary-menu > li > .icon,
body:not(.overlay-header) #site-header .primary-menu > li > .icon,
body:not(.overlay-header) .primary-menu > li > .icon,
ul.primary-menu > li > .icon,
.primary-menu > li > .icon,
.primary-menu .icon {
  color: var(--kl-color-magenta) !important;
  fill: var(--kl-color-magenta) !important;
}

/*
   TwentyTwenty erzeugt die eigentliche Pfeil-/V-Form teilweise über
   Pseudo-Elemente oder Border-Farben.

   Auch hier wird NUR die Farbe geändert.
   Keine Skalierung, kein transform.
*/
#site-header .header-navigation-wrapper .primary-menu > li > .icon::before,
#site-header .header-navigation-wrapper .primary-menu > li > .icon::after,
#site-header .primary-menu-wrapper .primary-menu > li > .icon::before,
#site-header .primary-menu-wrapper .primary-menu > li > .icon::after,
body:not(.overlay-header) #site-header .primary-menu > li > .icon::before,
body:not(.overlay-header) #site-header .primary-menu > li > .icon::after,
body:not(.overlay-header) .primary-menu > li > .icon::before,
body:not(.overlay-header) .primary-menu > li > .icon::after,
ul.primary-menu > li > .icon::before,
ul.primary-menu > li > .icon::after,
.primary-menu > li > .icon::before,
.primary-menu > li > .icon::after,
.primary-menu .icon::before,
.primary-menu .icon::after {
  color: var(--kl-color-magenta) !important;
  border-color: var(--kl-color-magenta) !important;
  fill: var(--kl-color-magenta) !important;
}

/*
   Hover / Fokus:
   Das Desktop-V bleibt magenta, auch wenn der Menüpunkt geöffnet
   oder gehovert wird.
*/
.primary-menu > li:hover > .icon,
.primary-menu > li:focus-within > .icon,
.primary-menu > li:hover > .icon::before,
.primary-menu > li:hover > .icon::after,
.primary-menu > li:focus-within > .icon::before,
.primary-menu > li:focus-within > .icon::after {
  color: var(--kl-color-magenta) !important;
  border-color: var(--kl-color-magenta) !important;
  fill: var(--kl-color-magenta) !important;
}
/* --------------------------------------------------
   07-05-04 Desktop-Dropdown-Icon bei geöffnetem Menü drehen
-------------------------------------------------- */

/*
   Ziel:
   --------------------------------------------------
   Das magenta V im Desktop-Hauptmenü ist im Normalzustand
   bereits um 45 Grad gedreht.

   Wenn ein Menüpunkt geöffnet ist, also bei Hover oder Tastatur-Fokus,
   dreht sich das V um weitere 45 Grad weiter.

   Technisch bedeutet das:
   - Normalzustand: rotate(45deg)
   - Geöffneter Zustand: rotate(90deg)

   Wichtig:
   - Nur Desktop-Hauptmenü.
   - Kein Eingriff ins mobile Menü.
   - Keine Skalierung.
   - Keine Vergrößerung.
   - Das V dreht sich optisch um seine Mitte.
   - Der Abstand zwischen Menüpunkt und V bleibt kompakt.
*/

@media (min-width: 1001px) {
  .primary-menu > li > .icon {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;

    /*
       Kompakte Icon-Fläche:
       groß genug für eine saubere Drehachse,
       aber nicht so breit, dass der Abstand zum Menütext zu groß wird.
    */
    width: 0.82em;
    height: 0.82em;
    min-width: 0.82em;

    /*
       Abstand zum Menütext kleiner als vorher.
    */
    margin-left: 0.12em;

    /*
       Normalzustand:
       Das V ist bereits um 45 Grad gedreht.
       translateY bleibt erhalten, damit das Icon optisch zur Textmitte sitzt.
    */
    transform: translateY(-0.3em) rotate(-45deg);

    transform-origin: 50% 50%;
    transition: transform 0.16s ease;

    color: var(--kl-color-magenta) !important;
    fill: var(--kl-color-magenta) !important;
  }

  .primary-menu > li > .icon::before,
  .primary-menu > li > .icon::after {
    color: var(--kl-color-magenta) !important;
    border-color: var(--kl-color-magenta) !important;
    fill: var(--kl-color-magenta) !important;

    /*
       Wichtig:
       Das Pseudo-Element selbst wird nicht verschoben oder skaliert.
       Die Drehung passiert ausschließlich über die Icon-Box.
    */
    transform-origin: 50% 50%;
  }

  .primary-menu > li:hover > .icon,
  .primary-menu > li:focus-within > .icon {
    /*
       Geöffneter Zustand:
       Das V dreht sich gegenüber dem Normalzustand um weitere 45 Grad.
       CSS ersetzt den Transform-Wert, daher hier Gesamtwinkel 90 Grad.
    */
    transform: translateY(0.15em) translateX(-0.2em)rotate(45deg);
  }

  /*
     Farbe bleibt auch im geöffneten Zustand magenta.
  */
  .primary-menu > li:hover > .icon,
  .primary-menu > li:focus-within > .icon,
  .primary-menu > li:hover > .icon::before,
  .primary-menu > li:hover > .icon::after,
  .primary-menu > li:focus-within > .icon::before,
  .primary-menu > li:focus-within > .icon::after {
    color: var(--kl-color-magenta) !important;
    border-color: var(--kl-color-magenta) !important;
    fill: var(--kl-color-magenta) !important;
  }
}

/*
   Barrierefreiheit:
   Wenn Nutzer:innen reduzierte Bewegung eingestellt haben,
   wird die Dreh-Animation abgeschaltet.
*/
@media (prefers-reduced-motion: reduce) {
  .primary-menu > li > .icon {
    transition: none !important;
  }
}

/* ==================================================
   07-06 HAUPTMENÜ / EXTERNE LINKS DESKTOP
================================================== */

/*
   Externe Hauptmenü-Links / Pfeil nach oben rechts
   --------------------------------------------------
   Externe Hauptmenü-Links, die in einem neuen Tab öffnen,
   bekommen automatisch einen Pfeil nach oben rechts.

   Ziel:
   - Nur Links mit target="_blank" bekommen den Pfeil.
   - Der Linktext bleibt weiß.
   - Der externe Pfeil ist magenta.
   - Der Pfeil wird nicht unterstrichen.
   - Der Pfeil wird über die zentrale Icon-Variable geladen.
   - Normalzustand: Pfeil zeigt nach oben rechts.
   - Hover/Fokus: Pfeil dreht nach oben.
   - Der Link reserviert dauerhaft Platz für den Pfeil,
     damit beim Laden nichts nachgeschoben wird.
*/
.primary-menu > li > a[role="link"][target="_blank"],
.primary-menu > li > a[target="_blank"] {
  position: relative;

  /*
     Platz für den Pfeil von Anfang an reservieren.
     Dadurch wird der Pfeil nicht nachträglich "eingeschoben".
  */
  padding-right: 1.08em;
}

/*
   Pfeil nach oben rechts.
   --------------------------------------------------
   Der Pfeil wird über die zentrale Icon-Variable geladen.

   Wichtig:
   - Kein Unicode-Zeichen mehr.
   - Die Größe bleibt an die Menüschrift gekoppelt.
   - Normalzustand ist schräg nach oben rechts.
*/
.primary-menu > li > a[role="link"][target="_blank"]::after,
.primary-menu > li > a[target="_blank"]::after {
  content: "";

  position: absolute;
  right: 0;
  top: 50%;

  display: block;

  width: 1em;
  height: 1em;

  background-image: var(--kl-icon-pfeil-magenta);
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;

  text-decoration: none !important;
  text-decoration-line: none !important;
  text-decoration-color: transparent !important;

  transform: translateY(-56%) rotate(-45deg);
  transform-origin: center center;

  pointer-events: none;

  transition: transform 0.16s ease !important;
}

/*
   Hover / Fokus:
   Der Pfeil dreht von oben rechts nach oben.
*/
.primary-menu > li > a[role="link"][target="_blank"]:hover::after,
.primary-menu > li > a[role="link"][target="_blank"]:focus::after,
.primary-menu > li > a[target="_blank"]:hover::after,
.primary-menu > li > a[target="_blank"]:focus::after {
  text-decoration: none !important;
  text-decoration-line: none !important;
  text-decoration-color: transparent !important;

  transform: translateY(-56%) rotate(-90deg);
}

/*
   Aktiver externer Hauptmenü-Link:
   Auch aktiv bleibt der Pfeil im Normalzustand nach oben rechts.
*/
.primary-menu > li.current_page_ancestor > a[role="link"][target="_blank"]::after,
.primary-menu > li.current-menu-item > a[role="link"][target="_blank"]::after,
.primary-menu > li.current-menu-parent > a[role="link"][target="_blank"]::after,
.primary-menu > li.current-menu-ancestor > a[role="link"][target="_blank"]::after,
.primary-menu > li.current_page_ancestor > a[target="_blank"]::after,
.primary-menu > li.current-menu-item > a[target="_blank"]::after,
.primary-menu > li.current-menu-parent > a[target="_blank"]::after,
.primary-menu > li.current-menu-ancestor > a[target="_blank"]::after {
  text-decoration: none !important;
  text-decoration-line: none !important;
  text-decoration-color: transparent !important;

  transform: translateY(-56%) rotate(-45deg);
}

/*
   Aktiver externer Hauptmenü-Link bei Hover/Fokus:
   Auch aktive externe Links drehen bei Hover/Fokus nach oben.
*/
.primary-menu > li.current_page_ancestor > a[role="link"][target="_blank"]:hover::after,
.primary-menu > li.current_page_ancestor > a[role="link"][target="_blank"]:focus::after,
.primary-menu > li.current-menu-item > a[role="link"][target="_blank"]:hover::after,
.primary-menu > li.current-menu-item > a[role="link"][target="_blank"]:focus::after,
.primary-menu > li.current-menu-parent > a[role="link"][target="_blank"]:hover::after,
.primary-menu > li.current-menu-parent > a[role="link"][target="_blank"]:focus::after,
.primary-menu > li.current-menu-ancestor > a[role="link"][target="_blank"]:hover::after,
.primary-menu > li.current-menu-ancestor > a[role="link"][target="_blank"]:focus::after,
.primary-menu > li.current_page_ancestor > a[target="_blank"]:hover::after,
.primary-menu > li.current_page_ancestor > a[target="_blank"]:focus::after,
.primary-menu > li.current-menu-item > a[target="_blank"]:hover::after,
.primary-menu > li.current-menu-item > a[target="_blank"]:focus::after,
.primary-menu > li.current-menu-parent > a[target="_blank"]:hover::after,
.primary-menu > li.current-menu-parent > a[target="_blank"]:focus::after,
.primary-menu > li.current-menu-ancestor > a[target="_blank"]:hover::after,
.primary-menu > li.current-menu-ancestor > a[target="_blank"]:focus::after {
  transform: translateY(-56%) rotate(-90deg);
}

/*
   Sicherheit:
   Falls bei einem externen Hauptmenü-Link trotzdem ein Theme-Dropdown-Icon
   ausgegeben wird, wird dieses im Desktop-Menü ausgeblendet.

   Wichtig:
   Diese Regel betrifft nur externe Links im Desktop-Hauptmenü.
*/
.primary-menu > li > a[role="link"][target="_blank"] + .icon,
.primary-menu > li > a[target="_blank"] + .icon {
  display: none !important;
}

/* ==================================================
   07-07 SUBMENÜ / DROPDOWN-GRUNDSTRUKTUR
================================================== */

/*
   Submenü / Dropdown
   --------------------------------------------------
   Ziel:
   - Einträge im Dropdown brechen NICHT um.
   - Das Dropdown ist so breit wie der längste Eintrag.
   - Das Dropdown wird nicht abgeschnitten.
   - Der Dreieck-Pfeil sitzt links oben am Untermenü.
   - Das Dropdown öffnet nur bei echtem Hover/Fokus auf den Menüpunkt.
   - Das Dropdown liegt sicher über Karten und Badges.

   Änderung:
   - Das Dropdown beginnt etwas tiefer, damit es die weiße/magenta
     Unterstreichung des Hauptmenüs nicht überdeckt.
   - Eine kleine unsichtbare Hover-Brücke verhindert Flackern beim
     Wechsel vom Hauptmenüpunkt ins Dropdown.

   Wichtig:
   Diese Regeln gelten nur für das Desktop-/horizontale Hauptmenü.
   Das mobile Modal-Menü wird weiter unten wieder neutralisiert.
*/
.primary-menu .sub-menu {
  width: max-content !important;
  min-width: 28rem;
  max-width: calc(100vw - 2rem);

  text-align: left;
  text-underline-offset: 0.4rem;

  background-color: var(--kl-color-brown) !important;
  overflow: visible !important;

  position: absolute;

  /*
     Dropdown etwas tiefer setzen.
     Vorher: top: calc(100% + 0.15rem);
     Neu: mehr Abstand zur Unterstreichung des Hauptmenüs.
  */
  top: calc(100% + 0.7rem);
  left: 0;
  right: auto;

  margin: 0;

  /*
     Etwas mehr Innenabstand oben, damit Dreieck und erster Eintrag
     sauber sitzen.
  */
  padding-top: 1.25rem;

  z-index: 5000;

  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(-0.15rem);
  transition:
    opacity 0.12s ease,
    visibility 0.12s ease,
    transform 0.12s ease;
}

/*
   Hover-Brücke zwischen Hauptmenüpunkt und Dropdown
   --------------------------------------------------
   Weil das Dropdown nun etwas tiefer öffnet, entsteht optisch ein kleiner
   Abstand. Diese unsichtbare Fläche hält den Hover-Zustand stabil, wenn
   die Maus vom Hauptmenüpunkt ins Dropdown bewegt wird.
*/
.primary-menu > li.menu-item-has-children::after {
  content: "";
  position: absolute;

  top: 100%;
  left: 0;
  right: 0;

  height: 1.05rem;

  background: transparent;
  pointer-events: auto;

  z-index: 4999;
}

/*
   Sichtbarer Zustand.
   Wichtig:
   pointer-events wird wieder aktiviert, damit das Dropdown stabil
   benutzbar bleibt und beim Übergang nicht flackert.
*/
.primary-menu li:hover > .sub-menu,
.primary-menu li:focus-within > .sub-menu {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
}

/*
   Kleine Hover-Brücke direkt über dem Dropdown.
   Sie ist absichtlich niedrig gehalten und liegt nur am Dropdown selbst.
   Dadurch wird das Menü nicht schon weit oberhalb des Menüpunktes ausgelöst.
*/
.primary-menu > li > .sub-menu {
  padding-top: 1.25rem;
}

.primary-menu > li > .sub-menu::marker {
  content: "";
}


/* ==================================================
   07-08 SUBMENÜ / PFEIL UND DROPDOWN-POSITION
================================================== */

/*
   Magenta-Dreieck am Untermenü
   --------------------------------------------------
   Das Dreieck sitzt links oben am Dropdown.
   Es gehört optisch zum Untermenü und zeigt nicht mehr rechts.
*/
.primary-menu > li > .sub-menu::before {
  content: "";
  position: absolute;

  top: 0.05rem;
  left: 2rem;
  right: auto;

  width: 0;
  height: 0;

  border-left: 1rem solid transparent;
  border-right: 1rem solid transparent;
  border-bottom: 1rem solid var(--kl-color-magenta);

  z-index: 5001;
}

/*
   Alte/zusätzliche Theme-Pfeile deaktivieren,
   damit nur ein sauberer magenta Pfeil sichtbar ist.
*/
.primary-menu > li > .sub-menu::after {
  content: none !important;
  display: none !important;
}

/*
   Falls ein Dropdown am rechten Rand sitzt:
   Dadurch bleibt es eher innerhalb des sichtbaren Bereichs.
   Besonders relevant beim letzten Menüpunkt.
*/
.primary-menu > li:last-child > .sub-menu {
  right: 0;
  left: auto;
}

/*
   Falls ein Dropdown mittig oder links geöffnet wird,
   soll es normal am jeweiligen Menüpunkt beginnen.
*/
.primary-menu > li:not(:last-child) > .sub-menu {
  left: 0;
  right: auto;
}

/*
   Bei rechtsbündigen Dropdowns bleibt der Pfeil trotzdem links
   innerhalb des Dropdowns.
*/
.primary-menu > li:last-child > .sub-menu::before {
  left: 2rem;
  right: auto;
}


/* ==================================================
   07-09 SUBMENÜ / LISTENPUNKTE UND LINKS
================================================== */

/*
   Submenü-Listenpunkte:
   Keine künstlichen Breiten, keine Umbrüche.
*/
.primary-menu .sub-menu li {
  width: auto;
  min-width: max-content;
  white-space: nowrap;
  margin: 0;
  padding: 0;

  background-color: var(--kl-color-brown) !important;
}

/*
   Submenü-Links:
   Text bleibt in einer Zeile.
   Das Dropdown orientiert sich an der längsten Zeile.

   Normalzustand:
   - Schrift weiß
   - Unterstreichung weiß
*/
.primary-menu .sub-menu a {
  display: block;
  width: auto;
  min-width: max-content;

  white-space: nowrap;

  color: var(--kl-color-white) !important;
  background-color: var(--kl-color-brown) !important;

  letter-spacing: 0.08em;
  line-height: 2.7rem;

  text-decoration: underline;
  text-decoration-color: var(--kl-color-white);
}

/*
   Submenü Hover / Fokus
   --------------------------------------------------
   Hover:
   - Hintergrund bleibt braun
   - Schrift bleibt weiß
   - Unterstreichung wird magenta
*/
.primary-menu .sub-menu a:hover,
.primary-menu .sub-menu a:focus {
  color: var(--kl-color-white) !important;
  background-color: var(--kl-color-brown) !important;
  text-decoration: underline;
  text-decoration-color: var(--kl-color-magenta);
}

/*
   Submenü aktiv / current
   --------------------------------------------------
   Aktiv:
   - Hintergrund bleibt braun
   - Schrift bleibt weiß
   - Unterstreichung wird rosa
*/
.primary-menu .sub-menu .current_page_ancestor > a,
.primary-menu .sub-menu .current-menu-item > a,
.primary-menu .sub-menu .current-menu-parent > a,
.primary-menu .sub-menu .current-menu-ancestor > a {
  color: var(--kl-color-white) !important;
  background-color: var(--kl-color-brown) !important;
  text-decoration: underline;
  text-decoration-color: var(--kl-color-active-underline);
}

/*
   Submenü aktiv + Hover
   --------------------------------------------------
   Wenn ein aktiver Unterpunkt gehovert wird,
   wird die Unterstreichung ebenfalls magenta.
*/
.primary-menu .sub-menu .current_page_ancestor > a:hover,
.primary-menu .sub-menu .current-menu-item > a:hover,
.primary-menu .sub-menu .current-menu-parent > a:hover,
.primary-menu .sub-menu .current-menu-ancestor > a:hover,
.primary-menu .sub-menu .current_page_ancestor > a:focus,
.primary-menu .sub-menu .current-menu-item > a:focus,
.primary-menu .sub-menu .current-menu-parent > a:focus,
.primary-menu .sub-menu .current-menu-ancestor > a:focus {
  color: var(--kl-color-white) !important;
  background-color: var(--kl-color-brown) !important;
  text-decoration-color: var(--kl-color-magenta);
}


/* ==================================================
   07-10 MOBILE NAVIGATION / DESKTOP-DROPDOWN-RESET
================================================== */

/*
   Mobile Navigation:
   Desktop-Dropdownregeln nicht in das modale/mobile Menü ziehen.

   Wichtig:
   Das eigentliche mobile Menü wird in Abschnitt 09 geregelt.
   Hier wird nur verhindert, dass Desktop-Dropdown-Regeln
   in das mobile Modal-Menü hineinwirken.
*/
.mobile-menu .sub-menu,
.modal-menu .sub-menu {
  position: static;
  top: auto;
  left: auto;
  right: auto;
  width: auto !important;
  min-width: 0;
  max-width: none;
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: none;
  transition: none;
  padding-top: 0;
  z-index: auto;
}

.mobile-menu .sub-menu::before,
.mobile-menu .sub-menu::after,
.modal-menu .sub-menu::before,
.modal-menu .sub-menu::after {
  content: none !important;
  display: none !important;
}

/* ==================================================
   07-11 MOBILE NAVIGATION / EXTERNE LINKS RECHTS IM TOGGLE-BEREICH
================================================== */

/*
   Ziel:
   --------------------------------------------------
   Externe Links im mobilen Menü sollen nicht direkt am Linktext
   einen Pfeil bekommen.

   Darstellung:
   - Normale Untermenüs behalten rechts das magenta V.
   - Externe Links mit Untermenü bekommen zusätzlich einen magenta Pfeil
     unter dem V im rechten Toggle-Bereich.
   - Externe Links ohne Untermenü bekommen den magenta Pfeil rechts außen
     an der optischen Position der Toggle-Spalte.
   - Der Pfeil wird über die zentrale Icon-Variable geladen.
   - Keine transform:none-Regeln auf li oder sub-menu-li,
     damit das mobile Menü stabil bleibt.
*/

/* --------------------------------------------------
   07-11-01 Mobile Menüzeilen stabilisieren
-------------------------------------------------- */

.menu-modal .modal-menu li,
.modal-menu li {
  position: relative;
  width: 100%;
}

.menu-modal .modal-menu .ancestor-wrapper,
.modal-menu .ancestor-wrapper {
  box-sizing: border-box;
  position: relative;

  display: flex;
  align-items: stretch;

  width: 100%;
  max-width: 100%;
}

/* --------------------------------------------------
   07-11-02 Link links flexibel, Toggle rechts fest
-------------------------------------------------- */

.menu-modal .modal-menu .ancestor-wrapper > a,
.modal-menu .ancestor-wrapper > a {
  box-sizing: border-box;

  flex: 1 1 auto;
  min-width: 0;
  width: auto;

  white-space: normal;
  overflow-wrap: normal;
  word-break: normal;
  hyphens: none;
}

/*
   Der vorhandene Toggle-Button bleibt rechts außen.

   Wichtig:
   Der Toggle-Button wird nicht mehr als flex-column aufgebaut.
   Dadurch bleibt das vorhandene V-Symbol stabil groß.
*/
.menu-modal .modal-menu .ancestor-wrapper > .sub-menu-toggle,
.modal-menu .ancestor-wrapper > .sub-menu-toggle {
  box-sizing: border-box;

  flex: 0 0 6.4rem;
  width: 6.4rem;
  min-width: 6.4rem;
  max-width: 6.4rem;

  margin-left: auto;

  position: relative;

  display: flex;
  align-items: center;
  justify-content: center;

  color: var(--kl-color-magenta) !important;
}

/*
   Vorhandenes V im mobilen Menü stabilisieren.
   Diese Regel schützt das normale Auf-/Zuklapp-Symbol davor,
   durch externe Pfeil-Regeln kleiner zu werden.
*/
.menu-modal .modal-menu .ancestor-wrapper > .sub-menu-toggle svg,
.modal-menu .ancestor-wrapper > .sub-menu-toggle svg {
  display: block !important;

  width: 2.05rem !important;
  height: 2.05rem !important;
  min-width: 2.05rem !important;
  min-height: 2.05rem !important;

  color: var(--kl-color-magenta) !important;
  fill: currentColor !important;

  opacity: 1 !important;
  filter: none !important;
}

/*
   Falls TwentyTwenty das V über ein Pseudo-Element erzeugt,
   bleibt auch dieses magenta.
*/
.menu-modal .modal-menu .ancestor-wrapper > .sub-menu-toggle::before,
.modal-menu .ancestor-wrapper > .sub-menu-toggle::before {
  color: var(--kl-color-magenta) !important;
}

/* --------------------------------------------------
   07-11-03 Alte/falsche Inline-Pfeile sicher entfernen
-------------------------------------------------- */

/*
   Wichtig:
   Externe Pfeile sollen im mobilen Menü nicht direkt am Linktext hängen.

   Diese Regel entfernt alte Link-Pseudo-Pfeile.
   Der Desktop-Pfeil aus .primary-menu bleibt davon unberührt.
*/
.menu-modal .modal-menu a[target="_blank"]::after,
.modal-menu a[target="_blank"]::after,
.menu-modal .modal-menu .ancestor-wrapper > a[target="_blank"]:only-child::after,
.modal-menu .ancestor-wrapper > a[target="_blank"]:only-child::after,
.menu-modal .modal-menu .ancestor-wrapper > a[target="_blank"]::after,
.modal-menu .ancestor-wrapper > a[target="_blank"]::after {
  content: none !important;
  display: none !important;
}

/* --------------------------------------------------
   07-11-04 Externer Link MIT Untermenü:
   Pfeil mittig unter dem vorhandenen V
-------------------------------------------------- */

/*
   Falls ein externer Menüpunkt zusätzlich ein Untermenü hat:
   - Das normale V bleibt im Toggle-Button erhalten.
   - Der externe Pfeil erscheint zusätzlich exakt mittig unterhalb des V.
   - Der externe Pfeil wird über die zentrale Icon-Variable geladen.
   - Der externe Pfeil ist von Anfang an nach oben rechts gedreht.
   - Bei Hover/Fokus wird der externe Pfeil weiß.
*/
.menu-modal .modal-menu .ancestor-wrapper:has(> a[target="_blank"]) > .sub-menu-toggle::after,
.modal-menu .ancestor-wrapper:has(> a[target="_blank"]) > .sub-menu-toggle::after {
  content: "";

  position: absolute;

  left: 50%;
  top: calc(50% + 1.45rem);

  display: block;

  width: 1em;
  height: 1em;

  background-image: var(--kl-icon-pfeil-magenta);
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;

  font-size: var(--kl-font-size-175);
  line-height: 1;

  transform: translateX(-50%) rotate(-45deg);
  transform-origin: center center;

  text-decoration: none !important;
  pointer-events: none;
}

/* --------------------------------------------------
   07-11-05 Externer Link OHNE Untermenü:
   Pfeil rechts außen an Toggle-Position
-------------------------------------------------- */

/*
   Dieser Fall betrifft externe Links ohne .sub-menu-toggle,
   zum Beispiel „Werkstatt Utopia“.

   Der Pfeil wird nicht am Link selbst erzeugt,
   sondern auf dem .ancestor-wrapper rechts außen.
*/
.menu-modal .modal-menu .ancestor-wrapper:has(> a[target="_blank"]):not(:has(> .sub-menu-toggle)),
.modal-menu .ancestor-wrapper:has(> a[target="_blank"]):not(:has(> .sub-menu-toggle)) {
  box-sizing: border-box;
  position: relative !important;

  display: flex !important;
  align-items: center !important;

  width: 100% !important;
  max-width: 100% !important;
}

/*
   Link bekommt rechts genug Luft.
   Der Linktext wird nicht gequetscht und nicht buchstabenweise umbrochen.
*/
.menu-modal .modal-menu .ancestor-wrapper:has(> a[target="_blank"]):not(:has(> .sub-menu-toggle)) > a,
.modal-menu .ancestor-wrapper:has(> a[target="_blank"]):not(:has(> .sub-menu-toggle)) > a {
  box-sizing: border-box;

  flex: 1 1 auto !important;
  min-width: 0 !important;

  width: auto !important;
  max-width: calc(100% - 9rem) !important;

  padding-right: 1.6rem !important;

  white-space: normal !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
  hyphens: none !important;
}

/*
   Der externe Pfeil für Links ohne Untermenü.
   Er sitzt rechts im Bereich der Toggle-Spalte.

   Normalzustand:
   - magenta
   - nach rechts oben gedreht

   Hover/Fokus/Touch:
   - weiß
   - nach oben gedreht
*/
.menu-modal .modal-menu .ancestor-wrapper:has(> a[target="_blank"]):not(:has(> .sub-menu-toggle))::after,
.modal-menu .ancestor-wrapper:has(> a[target="_blank"]):not(:has(> .sub-menu-toggle))::after {
  content: "";

  position: absolute;

  right: calc(3.2rem - 0.5em);
  top: 50%;

  display: block;

  width: 1em;
  height: 1em;

  background-image: var(--kl-icon-pfeil-magenta);
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;

  font-size: var(--kl-font-size-205);
  line-height: 1;

  transform: translateY(-50%) rotate(-45deg);
  transform-origin: center center;

  transition:
    transform 0.16s ease,
    background-image 0.16s ease;

  text-decoration: none !important;
  pointer-events: none;
}

/* --------------------------------------------------
   07-11-06 Hover/Fokus/Touch:
   Externe mobile Pfeile reagieren sichtbar
-------------------------------------------------- */

/*
   Externer Link MIT Untermenü:
   Wenn die Zeile, der Link oder der Toggle-Bereich berührt/fokussiert wird,
   wird nur der zusätzliche externe Pfeil weiß und dreht nach oben.

   Das normale V bleibt davon unberührt.
*/
.menu-modal .modal-menu .ancestor-wrapper:has(> a[target="_blank"]):hover > .sub-menu-toggle::after,
.menu-modal .modal-menu .ancestor-wrapper:has(> a[target="_blank"]):focus-within > .sub-menu-toggle::after,
.menu-modal .modal-menu .ancestor-wrapper:has(> a[target="_blank"]):active > .sub-menu-toggle::after,
.modal-menu .ancestor-wrapper:has(> a[target="_blank"]):hover > .sub-menu-toggle::after,
.modal-menu .ancestor-wrapper:has(> a[target="_blank"]):focus-within > .sub-menu-toggle::after,
.modal-menu .ancestor-wrapper:has(> a[target="_blank"]):active > .sub-menu-toggle::after,
.menu-modal .modal-menu .ancestor-wrapper:has(> a[target="_blank"]) > .sub-menu-toggle:hover::after,
.menu-modal .modal-menu .ancestor-wrapper:has(> a[target="_blank"]) > .sub-menu-toggle:focus::after,
.menu-modal .modal-menu .ancestor-wrapper:has(> a[target="_blank"]) > .sub-menu-toggle:active::after,
.modal-menu .ancestor-wrapper:has(> a[target="_blank"]) > .sub-menu-toggle:hover::after,
.modal-menu .ancestor-wrapper:has(> a[target="_blank"]) > .sub-menu-toggle:focus::after,
.modal-menu .ancestor-wrapper:has(> a[target="_blank"]) > .sub-menu-toggle:active::after {
  background-image: var(--kl-icon-pfeil-weiss);
  transform: translateX(-50%) rotate(-90deg);
  text-decoration: none !important;
}

/*
   Externer Link OHNE Untermenü:
   Bei Hover/Fokus/Touch der Zeile wird der externe Pfeil weiß
   und dreht von rechts oben nach gerade oben.
*/
.menu-modal .modal-menu .ancestor-wrapper:has(> a[target="_blank"]):not(:has(> .sub-menu-toggle)):hover::after,
.menu-modal .modal-menu .ancestor-wrapper:has(> a[target="_blank"]):not(:has(> .sub-menu-toggle)):focus-within::after,
.menu-modal .modal-menu .ancestor-wrapper:has(> a[target="_blank"]):not(:has(> .sub-menu-toggle)):active::after,
.modal-menu .ancestor-wrapper:has(> a[target="_blank"]):not(:has(> .sub-menu-toggle)):hover::after,
.modal-menu .ancestor-wrapper:has(> a[target="_blank"]):not(:has(> .sub-menu-toggle)):focus-within::after,
.modal-menu .ancestor-wrapper:has(> a[target="_blank"]):not(:has(> .sub-menu-toggle)):active::after {
  background-image: var(--kl-icon-pfeil-weiss);
  transform: translateY(-50%) rotate(-90deg);
  text-decoration: none !important;
}

/* ==================================================
   07-12 FOOTER-MENÜ / UNTERSTREICHUNGEN
================================================== */

/*
   Footer-Unterstreichungen bleiben hier mit definiert.
   Der eigentliche Footer wird in Abschnitt 14 geregelt.
*/
.footer-menu a {
  text-decoration: underline;
  text-decoration-color: var(--kl-color-white);
}

.footer-menu a:hover,
.footer-menu a:focus,
.footer-menu .current_page_ancestor {
  text-decoration: underline;
  text-decoration-color: var(--kl-color-magenta);
}

/* ==================================================
   08 SEITENHEADER / TITELBEREICH
================================================== */

/*
   Seitenheader / Titelbereich
   --------------------------------------------------
   Der Titelbereich bleibt schlicht weiß.
   Wichtig:
   - Kein großer globaler Buchstabenabstand mehr.
   - Dadurch werden Seitentitel auf mobilen Displays nicht
     künstlich auseinandergezogen.
   - Automatische Silbentrennung wird für Titel deaktiviert,
     damit Wörter wie „Transparenz“ nicht unschön getrennt werden.
*/
.entry-header {
  background-color: var(--kl-color-white) !important;
  border-bottom-width: 2px;
  border-bottom-style: solid;
  letter-spacing: normal !important;
}

/*
   Titel im Seitenheader
   --------------------------------------------------
   Früher stand hier ein zusätzlicher Buchstabenabstand.
   Dieser wird entfernt, damit lange Titel auf Handy-Displays
   natürlicher umbrechen.
*/
.entry-header h1 {
  letter-spacing: normal !important;
  word-break: normal;
  overflow-wrap: normal;
  hyphens: none;
  text-wrap: balance;
}

/*
   Titeleiste - Anpassungen
   --------------------------------------------------
   Der Inhaltsbereich beginnt direkt nach dem Titelbereich.
*/
.post-inner {
  padding-top: 0;
}

/*
   Titelbereich auf der Home-Seite ausblenden
   --------------------------------------------------
   Die Startseite nutzt eigene Überschriften/Blöcke.
   Der normale WordPress-Seitentitel bleibt dort ausgeblendet.
*/
.page-id-14226 .entry-header {
  display: none;
  height: 0;
  width: 0;
}

/*
   Titeleiste - Anpassungen auf der Home-Seite
*/
.page-id-14226 .post-inner {
  padding-top: 0;
}

/*
   Post-/Seitentitel - Anpassungen
   --------------------------------------------------
   Einheitliche, linke Ausrichtung und kontrollierter Umbruch.
*/
h1.entry-title {
  font-size: var(--kl-font-size-entry-title) !important;
  line-height: 1.12;
  letter-spacing: normal !important;
  word-break: normal;
  overflow-wrap: normal;
  hyphens: none;
  text-wrap: balance;
  text-align: left;
  color: var(--kl-color-text);
}

/*
   Post-/Seitentitel - mobile Anpassungen
   --------------------------------------------------
   Auf kleineren Displays wird die Schrift etwas flexibler.
   Dadurch entstehen weniger ungünstige Umbrüche.
*/
@media (max-width: 700px) {
  h1.entry-title {
    font-size: var(--kl-font-size-title-mobile) !important;
    line-height: 1.1;
    letter-spacing: normal !important;
    word-break: normal;
    overflow-wrap: normal;
    hyphens: none;
  }
}

/*
   Sehr kleine Displays
   --------------------------------------------------
   Noch etwas kompakter, damit lange Titel besser passen.
*/
@media (max-width: 420px) {
  h1.entry-title {
    font-size: var(--kl-font-size-title-small) !important;
    line-height: 1.08;
  }
}
/* ==================================================
09 MOBILES MENÜ
================================================== */

/* ==================================================
09-01 GRUNDABSTÄNDE / POSITION
================================================== */

/*
Mobiles Menü X - Kopfabstand

Der Schließen-Button bleibt gut erreichbar.
*/
.toggle.close-nav-toggle {
  margin-top: 4.5rem;
  margin-bottom: 2rem;
}

/*
Mobiles Menü

Kein negatives margin-top.
Sonst verschwinden Logo/Sprachsymbole oder obere Menüpunkte.
*/
.mobile-menu {
  margin-top: 0;
}

/* Mobiles Menü - Ebene von X auf 99 */
.menu-modal-inner .close-nav-toggle {
  z-index: 99;
}

/* ==================================================/*   09-02 MOBILE WIDGETS / LEICHTE SPRACHE / GEBÄRDENSPRACHE
================================================== */

/* --------------------------------------------------
   09-02-01 Grundlayout der Mobile-Widgets
-------------------------------------------------- */

/*
   Mobile Widgets oben im Menü

   Das normale obere Header-Logo (.custom-logo) bleibt sichtbar.
   Das zusätzliche KulturLeben-Logo innerhalb der Mobile-Widgets
   wird ausgeblendet, damit das Logo nicht doppelt erscheint.

   Danach stehen nur noch:
   - Leichte Sprache
   - Gebärdensprache

   Wichtig:
   Die Sprachsymbole werden bewusst deutlich weiter nach unten gesetzt,
   damit sie unter dem Header-Logo vollständig sichtbar und klickbar sind.
*/
.menu-modal .mobile-widgets {
  position: relative;
  z-index: 20;

  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  justify-items: center;

  gap: 0.75rem 1.2rem;

  width: 100%;
  max-width: 100%;

  /*
     Von Malte getestet:
     8rem funktioniert gut, damit die Sprach-Icons unter dem oberen
     Logo sichtbar und klickbar sind.
  */
  margin: 8rem 0 1.25rem 0;
  padding: 0.25rem 1.2rem 1rem;

  box-sizing: border-box;

  pointer-events: auto;
}

/* --------------------------------------------------
   09-02-02 Zusätzliches Logo im mobilen Menü ausblenden
-------------------------------------------------- */

/*
   Das erste Widget ist das zusätzliche KulturLeben-Logo im Menü.
   Dieses wird ausgeblendet, weil oben bereits das richtige Header-Logo steht.
*/
.menu-modal .mobile-widgets .widget.widget_media_image:first-child {
  display: none !important;
}

/*
   Sicherheit:
   Falls das Logo-Bild nicht über first-child erwischt wird,
   wird es zusätzlich über die Bild-ID ausgeblendet.
*/
.menu-modal .mobile-menu .image.wp-image-15449,
.menu-modal .mobile-widgets .image.wp-image-15449 {
  display: none !important;
}

/* --------------------------------------------------
   09-02-03 Widget-Kacheln und Inhalte
-------------------------------------------------- */

/* Alle übrigen Widget-Kacheln oben im mobilen Menü */
.menu-modal .mobile-widgets .widget.widget_media_image {
  position: relative;
  z-index: 21;

  width: 100%;
  max-width: 100%;

  margin: 0;
  padding: 0;

  border: none;

  text-align: center;
  box-sizing: border-box;

  pointer-events: auto;
}

/* Widget-Inhalte zentrieren */
.menu-modal .mobile-widgets .widget-content {
  position: relative;
  z-index: 22;

  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;

  width: 100%;
  max-width: 100%;

  margin: 0;
  padding: 0;

  pointer-events: auto;
}

/* --------------------------------------------------
   09-02-04 Links der Sprachsymbole
-------------------------------------------------- */

/*
   Links der Sprachsymbole

   Die Links bekommen eine eigene gut klickbare Fläche.

   Wichtig:
   - Der Rahmen ist im Normalzustand transparent.
   - Bei Hover/Fokus bleibt der alte dezente Hintergrund erhalten.
   - Der magenta Rahmen erscheint nur, wenn der Link aktiv ist.
*/
.menu-modal .mobile-widgets .widget-content > a {
  position: relative;
  z-index: 30;

  display: inline-flex;
  align-items: center;
  justify-content: center;

  min-width: 6rem;
  min-height: 6rem;

  padding: 0.25rem;

  border: 0.2rem solid transparent;
  border-radius: 999px;

  pointer-events: auto;

  transition:
    background-color 0.16s ease,
    border-color 0.16s ease,
    box-shadow 0.16s ease;
}

/*
   Alter dezenter Hover-/Focus-Effekt für Sprachsymbol-Links.

   Wichtig:
   Kein magenta Rahmen bei normalem Hover/Fokus.
*/
.menu-modal .mobile-widgets .widget-content > a:hover,
.menu-modal .mobile-widgets .widget-content > a:focus,
.menu-modal .mobile-widgets .widget-content > a:focus-visible,
.menu-modal .mobile-widgets .widget-content > a:active {
  border-color: transparent;
  background: var(--kl-alpha-white-080);
  box-shadow: none;
  outline: none;
}

/* --------------------------------------------------
   09-02-05 Aktive Sprach-/Symbol-Seite markieren
-------------------------------------------------- */

/*
   Aktive Sprach-/Symbol-Seite:
   Nur wenn die jeweilige Seite aktiv ist, erscheint der magenta Rahmen.

   Abgedeckte mögliche Markierungen:
   - aria-current="page"
   - current-menu-item
   - current_page_item
   - active
   - is-active

   Falls WordPress an diesen Widget-Links keine aktive Markierung ausgibt,
   erscheint der Rahmen nicht automatisch. Dann müsste später anhand des
   tatsächlichen HTML eine gezielte URL-/Klassenregel ergänzt werden.
*/
.menu-modal .mobile-widgets .widget-content > a[aria-current="page"],
.menu-modal .mobile-widgets .widget-content > a.current-menu-item,
.menu-modal .mobile-widgets .widget-content > a.current_page_item,
.menu-modal .mobile-widgets .widget-content > a.is-active,
.menu-modal .mobile-widgets .widget-content > a.active,
.menu-modal .mobile-widgets .current-menu-item > .widget-content > a,
.menu-modal .mobile-widgets .current_page_item > .widget-content > a,
.menu-modal .mobile-widgets .current-menu-item a,
.menu-modal .mobile-widgets .current_page_item a {
  border-color: var(--kl-color-magenta);
  background: var(--kl-alpha-white-080);
  box-shadow: 0 0 0 0.18rem var(--kl-alpha-magenta-180);
}

/* --------------------------------------------------
   09-02-06 Titel für Leichte Sprache / Gebärdensprache
-------------------------------------------------- */

/* Titel für Leichte Sprache / Gebärdensprache */
.menu-modal .mobile-widgets .widget .widget-title,
.menu-modal .mobile-widgets h2 {
  color: var(--kl-alpha-white-880) !important;

  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-fluid-108-132);
  line-height: 1.15;
  letter-spacing: 0.01em;

  margin: 0 0 0.35rem 0;

  text-align: center;
  text-shadow: none !important;

  pointer-events: none;
}

/* --------------------------------------------------
   09-02-07 Icons Leichte Sprache / Gebärdensprache
-------------------------------------------------- */

/* Icons Leichte Sprache / Gebärdensprache */
.menu-modal .mobile-widgets img {
  display: block;

  width: clamp(4.2rem, 12vw, 5.6rem);
  max-width: 100%;
  height: auto;

  margin: 0 auto !important;

  filter: none;

  pointer-events: auto;
}

/* --------------------------------------------------
   09-02-08 Sehr kleine Displays
-------------------------------------------------- */

/* Sehr kleine Displays */
@media (max-width: 420px) {
  .menu-modal .mobile-widgets {
    gap: 0.6rem 0.9rem;
    margin: 6.4rem 0 1.1rem 0;
  }

  .menu-modal .mobile-widgets .widget-content > a {
    min-width: 5.4rem;
    min-height: 5.4rem;
  }

  .menu-modal .mobile-widgets img {
    width: clamp(3.8rem, 11.5vw, 5rem);
  }

  .menu-modal .mobile-widgets .widget .widget-title,
  .menu-modal .mobile-widgets h2 {
    font-size: var(--kl-font-size-fluid-102-120);
  }
}

/* ==================================================
   09-03 MOBILE MENÜ / BEDIENUNG, OPTIK UND LESBARKEIT
================================================== */

/*
   Mobile Menü-Bedienung

   Ziel:
   - direkter Klick auf Text-Link öffnet die Seite
   - Klick rechts / freie Zeile klappt Untermenü auf/zu
   - Toggle-Icon rechts ist dezent magenta
   - Toggle-Icon dreht sich sanft von V nach <
   - keine auffällige Button-Kapsel
   - Schrift ist ruhig und besser lesbar
   - Hauptpunkte mit deutlich mehr Buchstabenabstand
   - Untermenüs liegen sauber im Dokumentfluss
   - keine weiche CSS-Animation auf dem gesamten Menübereich

   Wichtig:
   Keine transform:none-Overrides auf li, li[style] oder .sub-menu li[style].
   TwentyTwenty nutzt diese Inline-Transforms während der Animation.
   Werden sie per CSS hart entfernt, stapeln sich die Menüpunkte oben.
*/
@media (max-width: 1000px) {

  /* --------------------------------------------------
     09-03-01 Menü-Wrapper stabilisieren
  -------------------------------------------------- */

  .menu-modal .menu-wrapper,
  .menu-modal .menu-top,
  .menu-modal .mobile-menu,
  .menu-modal .modal-menu {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
  }

  /*
     Mobile Menü-Liste.

     Auf sehr schmalen Displays bleibt der Abstand kompakt.
     In breiteren Mobile-/Tablet-Zwischenbreiten bekommt das Menü
     mehr seitlichen Innenabstand, damit die Einträge nicht direkt
     am Fensterrand kleben.
  */
  .menu-modal .modal-menu {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;

    padding-left: clamp(1.2rem, 4vw, 3.2rem);
    padding-right: clamp(1.2rem, 4vw, 3.2rem);

    animation: none !important;
  }

  /*
     Menüzeilen bleiben innerhalb der eingerückten Menüliste.
     Dadurch kleben Text und Unterstreichung bei Zwischenbreiten
     nicht mehr direkt am linken Browserrand.
  */
  .menu-modal .modal-menu > li {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;

    border-bottom: 1px solid var(--kl-alpha-white-100);

    animation: none !important;
  }

  /*
     Menüpunkt-Zeile.
  */
  .menu-modal .ancestor-wrapper {
    position: relative;
    min-height: 5.2rem;

    animation: none !important;
  }

  /* --------------------------------------------------
     09-03-02 Mobile Link-Grundtypografie
  -------------------------------------------------- */

  /*
     Hauptlinks und Untermenülinks:
     ruhig, gut lesbar, ohne 3D-/Schattenwirkung.

     Grundregel für alle mobilen Menülinks.
     Die Hauptpunkte werden weiter unten noch gezielter überschrieben,
     weil TwentyTwenty dort eine eigene letter-spacing-Regel setzt.

     Unterstreichungslogik:
     - Normal: weiß
     - Hover/Fokus: magenta
     - Aktiv/current: rosa
  */
  .menu-modal .modal-menu a,
  .menu-modal .modal-menu ul li a {
    color: var(--kl-color-white) !important;

    font-family: var(--kl-font-main) !important;
    font-size: var(--kl-font-size-fluid-170-215);
    line-height: 1.34;
    letter-spacing: 0.06em;

    text-decoration: underline;
    text-decoration-color: var(--kl-color-white) !important;
    text-decoration-thickness: 0.075em;
    text-underline-offset: 0.36em;

    text-shadow: none !important;
    -webkit-text-stroke: 0 !important;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;

    box-sizing: border-box;

    transition:
      color 0.08s linear,
      background-color 0.08s linear,
      text-decoration-color 0.08s linear;
  }

  /*
     Hauptpunkte gezielt gegen TwentyTwenty überschreiben.

     TwentyTwenty setzt auf:
     .modal-menu > li > a,
     .modal-menu > li > .ancestor-wrapper > a {
       letter-spacing: -0.0375em;
     }

     Deshalb hier bewusst mit gleicher Struktur plus .menu-modal
     und !important.
  */
  .menu-modal .modal-menu > li > a,
  .menu-modal .modal-menu > li > .ancestor-wrapper > a {
    letter-spacing: 0.095em !important;
    line-height: 1.36 !important;
    font-weight: 700 !important;
    text-transform: uppercase;
  }

  /* --------------------------------------------------
     09-03-03 Oberlink und Klickbereiche
  -------------------------------------------------- */

  /*
     Oberlink.

     Der Link liegt über dem Toggle-Button.
     Dadurch gilt:
     - Klick direkt auf Text = Link öffnen
     - Klick daneben/rechts = Untermenü toggeln
  */
  .menu-modal .ancestor-wrapper > a {
    position: relative;
    z-index: 3;

    display: inline-flex;
    align-items: center;

    width: auto;
    max-width: calc(100% - 6.4rem);
    min-height: 5.2rem;

    padding: 1.2rem 1.6rem;

    background: transparent;
  }

  /*
     Mobile Menü Hover/Fokus:
     - Text bleibt weiß
     - Unterstreichung wird magenta
  */
  .menu-modal .ancestor-wrapper > a:hover,
  .menu-modal .ancestor-wrapper > a:focus,
  .menu-modal .modal-menu a:hover,
  .menu-modal .modal-menu a:focus,
  .menu-modal .modal-menu ul li a:hover,
  .menu-modal .modal-menu ul li a:focus {
    color: var(--kl-color-white) !important;
    text-decoration-color: var(--kl-color-magenta) !important;
    background: var(--kl-alpha-white-035);
  }

  /* --------------------------------------------------
     09-03-04 Toggle-Button rechts
  -------------------------------------------------- */

  /*
     Toggle-Button als große unsichtbare Zeilenfläche.
     Nur das Icon rechts ist sichtbar.
  */
  .menu-modal .ancestor-wrapper > .sub-menu-toggle {
    position: absolute;
    z-index: 2;
    inset: 0;

    display: flex;
    align-items: center;
    justify-content: flex-end;

    width: 100%;
    height: 100%;

    margin: 0;
    padding: 0 1.6rem 0 0;

    border: 0 !important;
    border-radius: 0;
    background: transparent !important;
    box-shadow: none !important;

    color: var(--kl-alpha-magenta-820) !important;

    cursor: pointer;

    animation: none !important;

    transition:
      background-color 0.08s linear;
  }

  /*
     Toggle-Icon rechts:
     Kein Rahmen, kein Hintergrund.
     Nur dezentes Magenta.

     Wichtig:
     Das mobile V dreht sich beim Öffnen sanft.
     Geschlossen: V
     Geöffnet: <

     Dafür wird nur um 90 Grad gedreht, nicht um 180 Grad.
  */
  .menu-modal .ancestor-wrapper > .sub-menu-toggle svg {
    width: 2.05rem;
    height: auto;

    color: var(--kl-alpha-magenta-820) !important;
    fill: currentColor;

    opacity: 0.9;

    filter: none !important;
    box-shadow: none !important;

    transform: rotate(0deg);
    transform-origin: center center;

    animation: none !important;

    transition:
      transform 0.16s ease,
      color 0.16s ease,
      opacity 0.16s ease;
  }

  /*
     Dezenter Hover/Focus nur dort, wo es gebraucht wird.
  */
  .menu-modal .ancestor-wrapper > .sub-menu-toggle:hover,
  .menu-modal .ancestor-wrapper > .sub-menu-toggle:focus {
    background: var(--kl-alpha-white-035) !important;
    outline: none;
  }

  .menu-modal .ancestor-wrapper > .sub-menu-toggle:hover svg,
  .menu-modal .ancestor-wrapper > .sub-menu-toggle:focus svg {
    color: var(--kl-alpha-white-920) !important;
    opacity: 1;
    filter: none !important;
  }

  /*
     Aktiver Toggle:
     Das mobile V dreht sich beim Öffnen sanft um 90 Grad.
     Dadurch wird aus dem V ein Pfeil nach links (<),
     der optisch in Richtung des geöffneten Untermenüs zeigt.
  */
  .menu-modal .ancestor-wrapper > .sub-menu-toggle.active svg {
    color: var(--kl-alpha-magenta-820) !important;
    opacity: 1;

    transform: rotate(90deg);
    transform-origin: center center;

    transition:
      transform 0.16s ease,
      color 0.16s ease,
      opacity 0.16s ease;
  }

  .menu-modal .ancestor-wrapper > .sub-menu-toggle.active:hover svg,
  .menu-modal .ancestor-wrapper > .sub-menu-toggle.active:focus svg {
    color: var(--kl-alpha-white-920) !important;
  }

  /* --------------------------------------------------
     09-03-05 Aktuelle Seiten markieren
  -------------------------------------------------- */

  /*
     Aktuelle Seite dezent markieren.
     Kein starker Magenta-Block.

     Unterstreichung:
     - Aktiv/current: rosa
  */
  .menu-modal .modal-menu .current-menu-item > .ancestor-wrapper,
  .menu-modal .modal-menu .current-menu-parent > .ancestor-wrapper,
  .menu-modal .modal-menu .current-menu-ancestor > .ancestor-wrapper,
  .menu-modal .modal-menu .current_page_item > .ancestor-wrapper,
  .menu-modal .modal-menu .current_page_parent > .ancestor-wrapper,
  .menu-modal .modal-menu .current_page_ancestor > .ancestor-wrapper {
    background: var(--kl-alpha-white-035);
    box-shadow: inset 0.22rem 0 0 var(--kl-alpha-magenta-620);
  }

  .menu-modal .modal-menu .current-menu-item > .ancestor-wrapper > a,
  .menu-modal .modal-menu .current-menu-parent > .ancestor-wrapper > a,
  .menu-modal .modal-menu .current-menu-ancestor > .ancestor-wrapper > a,
  .menu-modal .modal-menu .current_page_item > .ancestor-wrapper > a,
  .menu-modal .modal-menu .current_page_parent > .ancestor-wrapper > a,
  .menu-modal .modal-menu .current_page_ancestor > .ancestor-wrapper > a,
  .menu-modal .modal-menu .current-menu-item > a,
  .menu-modal .modal-menu .current-menu-parent > a,
  .menu-modal .modal-menu .current-menu-ancestor > a,
  .menu-modal .modal-menu .current_page_item > a,
  .menu-modal .modal-menu .current_page_parent > a,
  .menu-modal .modal-menu .current_page_ancestor > a {
    color: var(--kl-color-white) !important;
    text-decoration-color: var(--kl-color-active-underline) !important;
  }

  /*
     Aktive Menüpunkte bei Hover/Fokus:
     Hover gewinnt, also magenta.
  */
  .menu-modal .modal-menu .current-menu-item > .ancestor-wrapper > a:hover,
  .menu-modal .modal-menu .current-menu-parent > .ancestor-wrapper > a:hover,
  .menu-modal .modal-menu .current-menu-ancestor > .ancestor-wrapper > a:hover,
  .menu-modal .modal-menu .current_page_item > .ancestor-wrapper > a:hover,
  .menu-modal .modal-menu .current_page_parent > .ancestor-wrapper > a:hover,
  .menu-modal .modal-menu .current_page_ancestor > .ancestor-wrapper > a:hover,
  .menu-modal .modal-menu .current-menu-item > .ancestor-wrapper > a:focus,
  .menu-modal .modal-menu .current-menu-parent > .ancestor-wrapper > a:focus,
  .menu-modal .modal-menu .current-menu-ancestor > .ancestor-wrapper > a:focus,
  .menu-modal .modal-menu .current_page_item > .ancestor-wrapper > a:focus,
  .menu-modal .modal-menu .current_page_parent > .ancestor-wrapper > a:focus,
  .menu-modal .modal-menu .current_page_ancestor > .ancestor-wrapper > a:focus,
  .menu-modal .modal-menu .current-menu-item > a:hover,
  .menu-modal .modal-menu .current-menu-parent > a:hover,
  .menu-modal .modal-menu .current-menu-ancestor > a:hover,
  .menu-modal .modal-menu .current_page_item > a:hover,
  .menu-modal .modal-menu .current_page_parent > a:hover,
  .menu-modal .modal-menu .current_page_ancestor > a:hover,
  .menu-modal .modal-menu .current-menu-item > a:focus,
  .menu-modal .modal-menu .current-menu-parent > a:focus,
  .menu-modal .modal-menu .current-menu-ancestor > a:focus,
  .menu-modal .modal-menu .current_page_item > a:focus,
  .menu-modal .modal-menu .current_page_parent > a:focus,
  .menu-modal .modal-menu .current_page_ancestor > a:focus {
    color: var(--kl-color-white) !important;
    text-decoration-color: var(--kl-color-magenta) !important;
  }

  /* --------------------------------------------------
     09-03-06 Untermenüs mobil
  -------------------------------------------------- */

  /*
     Untermenüs mobil:
     - normal im Fluss
     - keine Desktop-Dropdown-Positionierung
     - sehr ruhiger Hintergrund
     - bleibt innerhalb der eingerückten mobilen Menüliste

     Wichtig:
     Keine transform:none-Regeln auf li.
     Keine breit gestreuten transition-duration-Overrides auf li.
  */
  .menu-modal .modal-menu .sub-menu {
    position: static !important;

    width: 100% !important;
    max-width: 100%;
    box-sizing: border-box;

    margin: 0;
    padding: 0;

    background: var(--kl-alpha-shadow-010);
    border-top: 1px solid var(--kl-alpha-white-045);

    animation: none !important;
    transition: none !important;
  }

  .menu-modal .modal-menu .sub-menu > li {
    border-bottom: 1px solid var(--kl-alpha-white-055);

    animation: none !important;
  }

  .menu-modal .modal-menu .sub-menu > li:last-child {
    border-bottom: 0;
  }

  /* --------------------------------------------------
     09-03-07 Untermenü-Einträge
  -------------------------------------------------- */

  /*
     Untermenü-Einträge.

     Die Untermenüs bleiben etwas kompakter als die Hauptpunkte,
     damit die Hierarchie sichtbar bleibt.

     Unterstreichungslogik:
     - Normal: weiß
     - Hover/Fokus: magenta
     - Aktiv/current: rosa
  */
  .menu-modal .modal-menu .sub-menu .ancestor-wrapper {
    min-height: 4.55rem;
  }

  .menu-modal .modal-menu .sub-menu a {
    width: 100%;
    max-width: 100%;
    min-height: 4.55rem;

    padding: 1rem 1.6rem 1rem 2.8rem;

    font-size: var(--kl-font-size-fluid-148-182);
    line-height: 1.34;
    letter-spacing: 0.052em !important;

    color: var(--kl-color-white) !important;
    text-decoration-color: var(--kl-color-white) !important;
    text-decoration-thickness: 0.07em;
    text-underline-offset: 0.34em;

    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
  }

  /*
     Falls ein Untermenüpunkt selbst weitere Kinder hat,
     darf die Hauptpunkt-Regel oben ihn nicht zu stark aufziehen.
  */
  .menu-modal .modal-menu .sub-menu > li > a,
  .menu-modal .modal-menu .sub-menu > li > .ancestor-wrapper > a {
    letter-spacing: 0.052em !important;
    text-transform: none;
  }

  /*
     Untermenü Hover/Fokus:
     Hover = magenta.
  */
  .menu-modal .modal-menu .sub-menu a:hover,
  .menu-modal .modal-menu .sub-menu a:focus {
    color: var(--kl-color-white) !important;
    text-decoration-color: var(--kl-color-magenta) !important;
    background: var(--kl-alpha-white-035);
  }

  /*
     Untermenü aktiv/current:
     Aktiv = rosa.
  */
  .menu-modal .modal-menu .sub-menu .current-menu-item > a,
  .menu-modal .modal-menu .sub-menu .current-menu-parent > a,
  .menu-modal .modal-menu .sub-menu .current-menu-ancestor > a,
  .menu-modal .modal-menu .sub-menu .current_page_item > a,
  .menu-modal .modal-menu .sub-menu .current_page_parent > a,
  .menu-modal .modal-menu .sub-menu .current_page_ancestor > a,
  .menu-modal .modal-menu .sub-menu .current-menu-item > .ancestor-wrapper > a,
  .menu-modal .modal-menu .sub-menu .current-menu-parent > .ancestor-wrapper > a,
  .menu-modal .modal-menu .sub-menu .current-menu-ancestor > .ancestor-wrapper > a,
  .menu-modal .modal-menu .sub-menu .current_page_item > .ancestor-wrapper > a,
  .menu-modal .modal-menu .sub-menu .current_page_parent > .ancestor-wrapper > a,
  .menu-modal .modal-menu .sub-menu .current_page_ancestor > .ancestor-wrapper > a {
    color: var(--kl-color-white) !important;
    text-decoration-color: var(--kl-color-active-underline) !important;
  }

  /*
     Untermenü aktiv/current bei Hover/Fokus:
     Hover gewinnt, also magenta.
  */
  .menu-modal .modal-menu .sub-menu .current-menu-item > a:hover,
  .menu-modal .modal-menu .sub-menu .current-menu-parent > a:hover,
  .menu-modal .modal-menu .sub-menu .current-menu-ancestor > a:hover,
  .menu-modal .modal-menu .sub-menu .current_page_item > a:hover,
  .menu-modal .modal-menu .sub-menu .current_page_parent > a:hover,
  .menu-modal .modal-menu .sub-menu .current_page_ancestor > a:hover,
  .menu-modal .modal-menu .sub-menu .current-menu-item > a:focus,
  .menu-modal .modal-menu .sub-menu .current-menu-parent > a:focus,
  .menu-modal .modal-menu .sub-menu .current-menu-ancestor > a:focus,
  .menu-modal .modal-menu .sub-menu .current_page_item > a:focus,
  .menu-modal .modal-menu .sub-menu .current_page_parent > a:focus,
  .menu-modal .modal-menu .sub-menu .current_page_ancestor > a:focus {
    color: var(--kl-color-white) !important;
    text-decoration-color: var(--kl-color-magenta) !important;
  }

  /*
     Untermenü-Items ohne weitere Unterpunkte brauchen keine Toggle-Fläche.
  */
  .menu-modal .modal-menu .sub-menu .ancestor-wrapper:not(:has(.sub-menu-toggle)) > a {
    width: 100%;
    max-width: 100%;
  }

  /* --------------------------------------------------
     09-03-08 Reduzierte Bewegung respektieren
  -------------------------------------------------- */

  /*
     Wenn Nutzer:innen reduzierte Bewegung eingestellt haben,
     wird die Dreh-Animation der mobilen Toggle-Icons abgeschaltet.
  */
  @media (prefers-reduced-motion: reduce) {
    .menu-modal .ancestor-wrapper > .sub-menu-toggle svg,
    .menu-modal .ancestor-wrapper > .sub-menu-toggle.active svg {
      transition: none !important;
    }
  }
}

/* ==================================================
09-04 MOBILE MENÜ / RESPONSIVE BASIS UND SUCHE
================================================== */

/* Anzeige nur unter 1000px */
@media (max-width: 1000px) {
  /* Position mobiles Menü */
  .toggle.nav-toggle.mobile-nav-toggle {
    margin-top: 9rem;
    margin-bottom: 20%;
  }

  /*
  Mobiles Menü - Farbe anpassen.
  Haupttext bleibt weiß für Lesbarkeit.
  */
  body:not(.overlay-header) #site-header .toggle,
  body:not(.overlay-header) .toggle-inner .toggle-text,
  .modal-menu a,
  .modal-menu ul li a {
    color: var(--kl-color-white);
  }

  /* Mobiles Menü */
  body:not(.overlay-header) #site-header .toggle {
    padding-left: 2rem;
  }

  /* Mobiles Menü Footer - verkleinern */
  .menu-bottom {
    padding: 2rem;
  }

  /* Mobiles Menü - X Button - Abstände entfernen */
  button.close-nav-toggle {
    padding: 0;
  }

  /*
  Mobile Suche:
  Diese Regel ist gezielt nur für den Suchmodal-Bereich.
  */
  .search-modal-inner .section-inner {
    width: calc(100% - 10rem);
    flex-direction: row-reverse;
  }

  /* Mobile Suche - X Anpassungen */
  button.search-untoggle {
    margin-right: 0;
    padding: 0 7rem;
  }

  /* Mobile Suche - Lupe Anpassungen */
  .search-modal-inner .search-field {
    margin-right: 1rem;
  }
}

/* Anzeige unter 700px */
@media (max-width: 700px) {
  button.search-untoggle {
    margin-right: 0;
    padding: 0 2rem;
  }

  .search-modal-inner .section-inner {
    width: calc(100% - 5.5rem);
    margin-left: 0;
  }
}

/* Anzeige nur unter 1000px und über 700px */
@media (max-width: 1000px) and (min-width: 700px) {
  button.toggle.search-toggle.mobile-search-toggle {
    left: 4.5rem;
  }
}

/* ==================================================
09-05 DESKTOP-RESET BEI GEÖFFNETEM MOBILE-MENÜ
================================================== */

/*
Bugfix:
Wenn das mobile Menü geöffnet ist und das Browserfenster anschließend
auf Desktop-Breite vergrößert wird, bleibt sonst ein brauner
Menü-/Modalbereich sichtbar.

Ab 1001px wird das mobile Modal deshalb optisch vollständig deaktiviert.
Die mobile Menü-Bodyklasse kann zwar noch im DOM hängen bleiben,
aber der sichtbare braune Restbereich verschwindet.
*/
@media (min-width: 1001px) {
  body.showing-menu-modal {
    overflow: auto !important;
    position: static !important;
  }

  body.showing-menu-modal .menu-modal,
  body.showing-menu-modal .menu-modal.active,
  body.showing-menu-modal .menu-modal.show-modal,
  body.showing-menu-modal .menu-modal-inner,
  body.showing-menu-modal .menu-wrapper {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
  }

  html.showing-menu-modal,
  body.showing-menu-modal {
    height: auto !important;
    max-height: none !important;
  }
}

/* ==================================================
09-06 MOBILE MENÜ / ANIMATIONSSPRINGEN REDUZIEREN
================================================== */

/*
Bugfix:
Beim Auf-/Zuklappen von Untermenüs springt der sichtbare Bereich
kurz nach oben zu den Sprach-Icons.

Wichtig:
Dieser Abschnitt entfernt bewusst KEINE Inline-Transforms auf li,
li[style] oder .sub-menu li[style].

Der eigentliche TwentyTwenty-Animationsbug wird sauber per JavaScript
gelöst, indem data-toggle-duration für .sub-menu-toggle auf 0 gesetzt wird.
CSS stabilisiert hier nur Scroll-Anker und sichtbare Nebenwirkungen.
*/
@media (max-width: 1000px) {
  .menu-modal,
  .menu-modal-inner,
  .menu-modal .menu-wrapper,
  .menu-modal .menu-top,
  .menu-modal .mobile-menu,
  .menu-modal .modal-menu,
  .menu-modal .modal-menu li,
  .menu-modal .modal-menu .sub-menu {
    overflow-anchor: none;
    scroll-behavior: auto;
  }

  /*
  Die Sprach-Widgets sollen nicht als Scroll-Anker dienen.
  */
  .menu-modal .mobile-widgets,
  .menu-modal .mobile-widgets * {
    overflow-anchor: none;
  }

  /*
  Auch geöffnete Untermenüs dürfen keinen eigenen Scroll-Anker bilden.
  */
  .menu-modal .modal-menu .sub-menu.active,
  .menu-modal .modal-menu .sub-menu.toggling-target {
    overflow-anchor: none;
  }

  /*
  Keine zusätzliche CSS-Animation auf dem Modal selbst.
  Das greift nicht in die TwentyTwenty-li-Transforms ein.
  */
  .menu-modal {
    animation: none !important;
  }

  .menu-modal .menu-wrapper.is-toggling,
  .menu-modal .menu-wrapper.is-animating {
    animation: none !important;
  }
}

/* ==================================================
   10 HOME / TITEL / WILLKOMMEN
================================================== */

/* Titel Bild */
.theteam-img {
  margin-top: 0 !important;
  margin-bottom: 1em !important;
}

@media (max-width: 1000px) {
  .theteam-img {
    display: inline-block;
    min-width: 100%;
  }
}

@media (max-width: 764px) {
  .home-titel {
    text-align: center;
    font-size: var(--kl-font-size-em-200);
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
}

/* Willkommens Text */
.welcome-colum {
  margin-top: auto !important;
  margin-bottom: 2em !important;
}

/* Willkommens Text über 1280px */
@media (min-width: 1280px) {
  .welcome-colum {
    min-height: 6em;
    max-height: 9em;
  }

  /* Willkommens Text Abstand */
  .entry-content .wp-block-columns h2 {
    margin: 0 1rem 2rem;
  }
}
/* ==================================================/*
   11 GRIDS / NEWS & PROJEKTE
/* ==================================================/*
/*
   Eigene KulturLeben-Grids
   --------------------------------------------------
   Dieser Abschnitt gestaltet ausschließlich die neuen KL-Grid-Shortcodes.

   Verwendete Grid-Shortcodes:
   - [kl-news-home]
   - [kl-projekte-home]
   - [kl-news-archiv]
   - [kl-projekte]
   - [kl-projekte-archiv]

   Verwendete Überschriften-Shortcodes:
   - [kl-news-head]
   - [kl-news-head-more]
   - [kl-projekte-head]
   - [kl-projekte-head-more]

   Wichtig:
   Die alte PostGrid-Kompatibilität ist hier bewusst entfernt.
   Es werden keine alten pg...-Klassen, keine #items-loop-pg... IDs
   und keine #pagination-pg... IDs mehr unterstützt.

   Abstandssystem:
   - Überschriftenleisten haben oben mehr Abstand als unten.
   - Der Abstand unter einer Überschrift ist kleiner, damit das zugehörige
     Grid optisch direkt zur Überschrift gehört.
   - Die Grids selbst haben oben und unten denselben Abstand.
   - Der Abstand nach einem Grid zum nächsten Seitenbereich bleibt kompakt.
*/

/* ==================================================
   11-01 GRUNDABSTÄNDE / SCHRIFT
================================================== */

/*
   Abstand der Grids
   --------------------------------------------------
   Oben und unten gilt derselbe Abstand.
   Dadurch sitzt ein Grid ruhig im Layout und erzeugt nach unten
   kein zu großes Loch vor dem nächsten Seitenbereich.
*/
.entry-content > .kl-grids.alignwide,
.entry-content > .kl-grids,
.kl-grids {
  margin-top: 1.2rem !important;
  margin-bottom: 1.2rem !important;
}

/*
   Einheitliche Schrift im Gridbereich
   --------------------------------------------------
   Nur die KL-Grids selbst werden angesprochen.
   Es werden keine globalen WordPress-Blöcke verändert.
*/
.kl-grids,
.kl-grids .grid-keyword,
.kl-grids .grid-title,
.kl-grids .grid-subtitle,
.kl-grids .grid-meta,
.kl-grids .grid-description,
.kl-grids .grid-readmore {
  font-family: var(--kl-font-main);
  color: var(--kl-color-text);
}

/* ==================================================
   11-02 GRID-ÜBERSCHRIFTEN
================================================== */

/* --------------------------------------------------
   11-02-01 Grundlayout der Überschriftenleisten
-------------------------------------------------- */

/*
   Überschriftenleisten für News, Projekte und Logo-Bereiche
   --------------------------------------------------
   Betrifft unter anderem:
   - [kl-news-head]
   - [kl-news-head-more]
   - [kl-projekte-head]
   - [kl-projekte-head-more]
   - Logo-Überschriften-Shortcodes mit gleicher Struktur

   Wichtig:
   Bei Varianten mit "-more" ist der gesamte farbige Balken ein echter Link.
   Dadurch ist die komplette magenta- bzw. braune Fläche zuverlässig klick-
   und antippbar.

   Das ist stabiler als eine unsichtbare CSS-Klickfläche über ::after,
   weil mobile Browser solche Pseudo-Flächen unterschiedlich behandeln können.

   Varianten ohne "-more" bleiben normale Überschriften ohne Link.
*/
.entry-content > .kl-grid-head.wp-block-columns,
.kl-grid-head.wp-block-columns,
.kl-grid-head {
  display: flex !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: space-between;
  gap: 1rem;

  position: relative;

  box-sizing: border-box;
  max-width: 100%;

  min-height: 0 !important;
  height: auto !important;

  margin-top: 2rem !important;
  margin-bottom: 1rem !important;

  padding-top: 0.10em !important;
  padding-right: 0.75em;
  padding-bottom: 0.28em !important;
  padding-left: 0.75em;

  color: var(--kl-color-white);
  line-height: 1.08;
  overflow: visible;
}

/*
   Wenn die Leiste ein Link ist, darf sie sich optisch trotzdem
   wie ein Block verhalten.
*/
a.kl-grid-head,
a.kl-grid-head:visited,
a.kl-grid-head:hover,
a.kl-grid-head:focus {
  color: var(--kl-color-white);
  text-decoration: none;
}

/* --------------------------------------------------
   11-02-02 Farben der Überschriftenleisten
-------------------------------------------------- */

.kl-grid-head.kl-head-news,
.kl-grid-head.home-news-heading {
  background-color: var(--kl-color-magenta);
}

.kl-grid-head.kl-head-projekte,
.kl-grid-head.home-project-heading {
  background-color: var(--kl-color-brown);
}

/* --------------------------------------------------
   11-02-03 Innere Spalten
-------------------------------------------------- */

/*
   Innere Spalten der Überschriftenleiste.
   Diese Regeln gelten nur innerhalb der KL-Überschriften.
*/
.kl-grid-head > .wp-block-column,
.kl-grid-head > .kl-head-title-column,
.kl-grid-head > .kl-head-more-block {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;

  min-height: 0 !important;
  height: auto !important;

  display: flex;
  align-items: center;
}

/* Linke Titelseite */
.kl-grid-head .kl-head-title-column {
  flex: 1 1 auto !important;
  flex-basis: auto !important;
  min-width: 0;
  justify-content: flex-start;
}

/* Rechte Mehr-Link-Seite */
.kl-grid-head .kl-head-more-block {
  flex: 0 0 auto !important;
  flex-basis: auto !important;
  justify-content: flex-end;
  white-space: nowrap;
}

/* --------------------------------------------------
   11-02-04 Titel in der Leiste
-------------------------------------------------- */

.kl-grid-head .kl-head-title,
.kl-grid-head h3 {
  display: flex;
  align-items: center;

  margin: 0 !important;
  padding: 0 !important;

  color: var(--kl-color-white);
  font-family: var(--kl-font-bold) !important;
  font-weight: bold;
  font-size: var(--kl-font-size-em-200);
  line-height: 1.08;
  letter-spacing: 0.01em;

  white-space: nowrap;
  overflow: visible;
}

/* --------------------------------------------------
   11-02-05 Mehr-Bereich rechts
-------------------------------------------------- */

/*
   Mehr-Bereich rechts.
   Bei der Link-Variante ist .kl-head-more-link kein eigener Link mehr,
   sondern nur noch sichtbarer Text innerhalb des gesamten Balken-Links.
*/
.kl-grid-head .kl-head-more-link,
.kl-grid-head .more-block .kl-head-more-link {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.45em;

  margin: 0 !important;
  padding: 0 !important;

  color: var(--kl-color-white);
  font-family: var(--kl-font-bold) !important;
  font-weight: bold;
  font-size: var(--kl-font-size-em-130);
  line-height: 1.08;
  text-decoration: none;

  white-space: nowrap;
  overflow: visible;
}

/* --------------------------------------------------
   11-02-06 Pfeil im Mehr-Bereich
-------------------------------------------------- */

/*
   Pfeil im Mehr-Bereich.
   --------------------------------------------------
   Der Pfeil wird über die zentrale Icon-Variable geladen.

   Wichtig:
   - Kein sichtbares Text-/Unicode-Zeichen mehr.
   - Der Pfeil bleibt weiß, passend zu den farbigen Überschriftenleisten.
   - Normalzustand: Pfeil zeigt nach rechts.
   - Hover/Fokus bei klickbaren Leisten: Pfeil dreht nach rechts oben.
   - Externe Links mit target="_blank" zeigen direkt nach rechts oben.
   - Die bisherige optische Größe bleibt erhalten:
     font-size: 1.5em;
     width: 1em;
     height: 1em;
*/
.kl-grid-head .kl-head-more-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  width: 1em;
  height: 1em;

  background-image: var(--kl-icon-pfeil-weiss);
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;

  color: transparent;
  font-size: var(--kl-font-size-em-150);
  line-height: 1;

  overflow: hidden;
  text-indent: -9999px;

  transform: translateY(0) rotate(0deg);
  transform-origin: center center;

  transition: transform 0.16s ease;
}

/*
   Hover/Fokus:
   Bei klickbaren Überschriftenleisten dreht sich der Pfeil
   von rechts nach rechts oben.
*/
.kl-grid-head.kl-head-with-more:hover .kl-head-more-arrow,
.kl-grid-head.kl-head-with-more:focus .kl-head-more-arrow,
.kl-grid-head.kl-head-with-more:focus-visible .kl-head-more-arrow {
  transform: translateY(0) rotate(-45deg);
}

/*
   Externer Überschriften-Link:
   Externe Links zeigen schon im Normalzustand nach rechts oben.
*/
.kl-grid-head[target="_blank"] .kl-head-more-arrow {
  transform: translateY(0) rotate(-45deg);
}

/*
   Externer Überschriften-Link bei Hover/Fokus:
   Bleibt nach rechts oben gedreht.
*/
.kl-grid-head[target="_blank"]:hover .kl-head-more-arrow,
.kl-grid-head[target="_blank"]:focus .kl-head-more-arrow,
.kl-grid-head[target="_blank"]:focus-visible .kl-head-more-arrow {
  transform: translateY(0) rotate(-45deg);
}

/* --------------------------------------------------
   11-02-07 Klickbarkeit und Fokus
-------------------------------------------------- */

/*
   Cursor nur bei klickbaren Leisten.
*/
.kl-grid-head.kl-head-with-more {
  cursor: pointer;
}

.kl-grid-head.kl-head-no-more {
  cursor: default;
}

/*
   Tastatur-Fokus sichtbar machen.
*/
.kl-grid-head.kl-head-with-more:focus-visible {
  outline: 3px solid var(--kl-alpha-magenta-450);
  outline-offset: 3px;
}

/* --------------------------------------------------
   11-02-08 Zwischenbreiten
-------------------------------------------------- */

@media (max-width: 900px) {
  .entry-content > .kl-grid-head.wp-block-columns,
  .kl-grid-head.wp-block-columns,
  .kl-grid-head {
    padding-right: 0.75em;
    padding-left: 0.75em;
  }
}

/* --------------------------------------------------
   11-02-09 Mobile Überschriftenleisten
-------------------------------------------------- */

/*
   Mobile Überschriftenleisten.
   Der Balken bleibt einzeilig und kompakt.
*/
@media (max-width: 700px) {
  .entry-content > .kl-grid-head.wp-block-columns,
  .kl-grid-head.wp-block-columns,
  .kl-grid-head {
    flex-wrap: nowrap !important;

    margin-top: 1.6rem !important;
    margin-bottom: 0.8rem !important;

    padding-top: 0.08em !important;
    padding-right: 0.75em;
    padding-bottom: 0.24em !important;
    padding-left: 0.75em;
  }

  .kl-grid-head .kl-head-title-column {
    flex: 1 1 auto !important;
    flex-basis: auto !important;
    min-width: 0;
  }

  .kl-grid-head .kl-head-more-block {
    flex: 0 0 auto !important;
    flex-basis: auto !important;
  }

  .kl-grid-head .kl-head-title,
  .kl-grid-head h3 {
    font-size: var(--kl-font-size-grid-heading);
    line-height: 1.08;
  }

  .kl-grid-head .kl-head-more-link {
    font-size: var(--kl-font-size-fluid-165-205);
    line-height: 1.08;
  }

  .kl-grid-head .kl-head-more-arrow {
    font-size: var(--kl-font-size-em-145);
  }
}

/* --------------------------------------------------
   11-02-10 Sehr kleine Displays
-------------------------------------------------- */

@media (max-width: 420px) {
  .entry-content > .kl-grid-head.wp-block-columns,
  .kl-grid-head.wp-block-columns,
  .kl-grid-head {
    padding-top: 0.06em !important;
    padding-right: 0.65em;
    padding-bottom: 0.22em !important;
    padding-left: 0.65em;
    gap: 0.6rem;
  }

  .kl-grid-head .kl-head-title,
  .kl-grid-head h3 {
    font-size: var(--kl-font-size-fluid-235-280);
  }

  .kl-grid-head .kl-head-more-link {
    font-size: var(--kl-font-size-fluid-150-185);
  }

  .kl-grid-head .kl-head-more-arrow {
    font-size: var(--kl-font-size-em-135);
  }
}

/* ==================================================
   11-03 GRID-GRUNDLAYOUT
================================================== */

/*
   Grid-Spalten und Kartenabstände
   --------------------------------------------------
   Desktop:
   - Startseite News: drei Spalten
   - Startseite Projekte: drei Spalten
   - News-Archiv: drei Spalten
   - laufende Projekte: drei Spalten
   - Projektarchiv: zwei schmalere Spalten

   Der Abstand zwischen den Karten bleibt ruhig und lesbar.
   Der Außenabstand des gesamten Grids wird in 11-01 geregelt.
*/
.kl-grids .grid-loop {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  column-gap: 2rem;
  row-gap: 2rem;
  align-items: stretch;
}

.kl-grids.grid-news-home .grid-loop,
.kl-grids.grid-projekte-home .grid-loop {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.kl-grids.grid-news-archiv .grid-loop,
.kl-grids.grid-projekte-laufend .grid-loop {
  grid-template-columns: repeat(3, minmax(24rem, 1fr));
}

.kl-grids.grid-projekte-archiv .grid-loop {
  grid-template-columns: repeat(2, minmax(24rem, 28rem));
  justify-content: start;
}

/*
   Einzelne Karte
   --------------------------------------------------
   Die Karte ist ein Flex-Container.
   Dadurch kann der Mehr-lesen-Link unten sauber ausgerichtet werden.
*/
.kl-grids .grid-item {
  position: relative;
  box-sizing: border-box;

  display: flex;
  flex-direction: column;

  container-type: inline-size;

  width: 100%;
  max-width: 100%;
  min-height: var(--kl-card-min-height);

  overflow: hidden;

  padding-left: 0;
  padding-right: 0;
}

/*
   Einheitlicher Innenabstand für Karteninhalte
   --------------------------------------------------
   Keyword-Badge und Bild bleiben randlos.
   Alle anderen direkten Inhalte bekommen den gleichen linken und rechten
   Innenabstand.
*/
.kl-grids .grid-item > :not(.grid-keyword):not(.grid-image):not(.home-news-icon) {
  box-sizing: border-box;
  padding-left: clamp(0.85em, 3.2cqw, 1.35em);
  padding-right: clamp(0.85em, 3.2cqw, 1.35em);
}

.kl-grids .grid-item > * {
  flex-shrink: 0;
}

/* ==================================================
   11-04 KARTENBILDER
================================================== */

/*
   Kartenbilder
   --------------------------------------------------
   Alle Grid-Bilder bleiben im 4:3-Format.
   Das Bild füllt den Bildbereich vollständig aus.
*/
.kl-grids .grid-image {
  width: 100%;
  aspect-ratio: 4 / 3;

  overflow: hidden;
  margin: 0;
  padding: 0;

  flex-shrink: 0;
}

.kl-grids .grid-image img {
  display: block;

  object-fit: cover;
  object-position: center center;

  width: 100% !important;
  height: 100% !important;
  max-width: 100%;

  margin-left: 0;
  margin-top: 0;
}

/*
   News-Bilder und Grid-Bilder sauber an die Kartenrundung anpassen.
*/
.kl-grids.grid-news .grid-item img {
  border-radius: 0;
}

.kl-grids .grid-item > .grid-image img {
  border-radius: 23px 23px 0 0;
}

/* ==================================================
   11-05 NEWS-ICON-/LOGO-BLOCK
================================================== */

/*
   Dekorative News-Icon-Blöcke ausblenden
   --------------------------------------------------
   Falls in alten Inhalten noch ein dekorativer home-news-icon-Block
   im neuen Grid-Markup auftaucht, erzeugt er keinen Leerraum.
*/
.kl-grids.grid-news .grid-item > .home-news-icon,
.kl-grids.grid-news .grid-item .home-news-icon {
  display: none !important;

  width: 0 !important;
  height: 0 !important;
  min-height: 0 !important;

  margin: 0 !important;
  padding: 0 !important;

  overflow: hidden !important;
}

.home-news-icon img {
  max-width: 3em;
}

/* ==================================================
   11-06 KATEGORIE-BADGES / KEYWORDS
================================================== */

/*
   Kategorie- bzw. Keyword-Badge über dem Bild
   --------------------------------------------------
   News-Badges sind magenta.
   Projekt-Badges sind braun.
*/
.kl-grids .grid-keyword {
  display: flex;
  justify-content: center;

  width: 100%;

  pointer-events: none;

  position: relative;
  z-index: 2;
}

.kl-grids .grid-keyword div {
  font-family: var(--kl-font-bold);
  font-weight: bold;
  font-size: var(--kl-font-size-cqw-heading);
  line-height: 1.2;
  text-align: center;

  padding-left: 0.5em;
  padding-right: 0.5em;

  color: var(--kl-color-white);

  position: absolute;
  z-index: 2;
}

.kl-grids.grid-news .grid-keyword div {
  background-color: var(--kl-color-magenta);
}

.kl-grids.grid-projekte .grid-keyword div {
  background-color: var(--kl-color-brown);
}

/* ==================================================
   11-07 KARTENTITEL / META / BESCHREIBUNG
================================================== */

/*
   Kartentitel
   --------------------------------------------------
   Die unterschiedlichen Mindesthöhen halten Karten auf großen
   Bildschirmen optisch ruhiger. Unterhalb von 1280px werden diese
   Mindesthöhen wieder gelöst.
*/
.kl-grids .grid-title,
.kl-grids .grid-item h2 {
  margin-top: 0.35em !important;
  margin-bottom: 0.08em !important;

  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-card-title-fluid) !important;
  line-height: 1.18;

  display: flex;
  align-items: flex-start;

  height: auto;
}

.kl-grids.grid-news .grid-item > h2,
.kl-grids.grid-news .grid-item > .grid-title {
  min-height: 8.9rem;
}

.kl-grids.grid-projekte .grid-item > h2,
.kl-grids.grid-projekte .grid-item > .grid-title {
  min-height: 5.9rem;
}

.kl-grids.grid-news h2,
.kl-grids.grid-news .grid-title {
  color: var(--kl-color-magenta);
}

.kl-grids.grid-projekte h2,
.kl-grids.grid-projekte .grid-title {
  color: var(--kl-color-text);
}

/*
   Untertitel
   --------------------------------------------------
   Untertitel bekommen auf großen Karten eine Mindesthöhe,
   damit Karten nebeneinander gleichmäßiger wirken.
*/
.kl-grids .grid-subtitle,
.kl-grids .home-subtitel,
.kl-grids .subtitel.home-subtitel {
  height: auto;
  min-height: calc(3 * 1.25em);

  font-size: var(--kl-font-size-card-text-fluid);
  line-height: 1.25;

  margin-top: 0 !important;
  margin-bottom: 0.18em !important;

  padding-left: 0.25em;
}

.kl-grids.grid-news .grid-item > *:has(.subtitel.home-subtitel),
.kl-grids.grid-news .grid-item > *:has(.home-subtitel),
.kl-grids.grid-projekte .grid-meta:has(.subtitel.home-subtitel),
.kl-grids.grid-projekte .grid-item > *:has(.home-subtitel) {
  min-height: calc(3 * 1.25em);
  margin-top: 0 !important;
  margin-bottom: 0.12em !important;
}

/*
   Meta-Angaben
   --------------------------------------------------
   Dazu gehören z. B. Zeitraum, Ort, Projektlaufzeit und ähnliche
   kurze Zusatzinformationen.
*/
.kl-grids .grid-meta-title,
.kl-grids .home-timeline-titel,
.kl-grids .home-time-titel,
.kl-grids .home-location_type-titel {
  margin-top: 0.18em !important;
  margin-bottom: 0.03em !important;
  padding-top: 0.15em !important;

  font-family: var(--kl-font-bold) !important;
  font-weight: bold;
  font-size: var(--kl-font-size-card-meta-fluid);
  line-height: 1.2;
}

.kl-grids .grid-meta-value,
.kl-grids .home-timeline,
.kl-grids .home-time,
.kl-grids .home-location_type {
  padding-left: 0.25em;

  margin-top: 0;
  margin-bottom: 0.18em !important;

  font-size: var(--kl-font-size-card-meta-fluid);
  line-height: 1.28;

  min-height: calc(2 * 1.28em);
  height: auto;
}

.kl-grids.grid-projekte .grid-time {
  min-height: 3.15em;
  margin-top: 0.05rem;
  margin-bottom: 0.05rem;
}

.kl-grids.grid-news .grid-meta:has(.home-timeline-titel),
.kl-grids.grid-news .grid-meta:has(.home-location_type-titel) {
  min-height: 0;
  margin-top: 0.08rem;
  margin-bottom: 0.02rem;
}

.kl-grids.grid-news .grid-meta:has(.home-timeline) {
  min-height: calc(2 * 1.28em);
  margin-top: 0;
  margin-bottom: 0.35em;
}

.kl-grids.grid-news .grid-meta:has(.home-location_type) {
  min-height: calc(4 * 1.28em);
  margin-top: 0;
  margin-bottom: 0.35em;
}

.kl-grids.grid-news .home-timeline,
.kl-grids.grid-news .home-location_type {
  display: block;
  height: auto;
  line-height: 1.28;
}

/*
   Sponsor- und Fördererbereich
   --------------------------------------------------
   Sponsor-Titel und Logos werden kompakt gehalten.
   Dadurch entsteht innerhalb der Projektkarten kein unnötiger Leerraum.
*/
.kl-grids.grid-projekte .grid-sponsor-title,
.kl-grids.grid-projekte .home-sponsor-titel {
  min-height: 0 !important;

  margin-top: 0.15em !important;
  margin-bottom: 0.02em !important;

  padding-top: 0 !important;
  padding-bottom: 0 !important;

  font-family: var(--kl-font-bold) !important;
  font-weight: bold;
  font-size: var(--kl-font-size-card-meta-fluid);
  line-height: 1.15;
}

.kl-grids.grid-projekte .grid-sponsor-logos {
  min-height: 3.2em !important;

  display: flex;
  align-items: center !important;
  gap: 0.65rem;

  margin-top: 0 !important;
  margin-bottom: 0.05em !important;

  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

.kl-grids .project-sponsor-icon,
.kl-grids .project-sponsor-icon .wp-block-group__inner-container,
.kl-grids .grid-sponsor-icon {
  display: flex;
  align-items: center;

  margin-top: 0 !important;
  margin-bottom: 0 !important;

  padding-top: 0 !important;
  padding-bottom: 0 !important;

  line-height: 1;
}

.kl-grids .project-sponsor-icon img,
.kl-grids .grid-sponsor-icon img {
  display: block;

  max-width: 5em !important;
  max-height: 2.8em;

  object-fit: contain;
}

/*
   Beschreibungstext
   --------------------------------------------------
   Auf großen Bildschirmen sorgt die Mindesthöhe für ruhige Karten.
   Auf kleineren Bildschirmen wird diese Mindesthöhe aufgehoben.
*/
.kl-grids .grid-description {
  display: block;
  vertical-align: top;

  min-height: var(--kl-card-description-height);
  height: auto !important;
  max-height: none !important;

  overflow: visible !important;

  margin-top: 0.15em;

  font-size: var(--kl-font-size-card-meta-fluid);
}

.kl-grids .grid-description-text,
.kl-grids .home-post-description {
  display: block;

  min-height: var(--kl-card-description-height);
  height: auto !important;
  max-height: none !important;

  overflow: visible !important;

  font-size: var(--kl-font-size-card-meta-fluid);
  line-height: 1.45;
}

/* ==================================================
   11-08 KARTENOPTIK
================================================== */

/*
   News-Karten
   --------------------------------------------------
   News bleiben magenta und hellrosa hinterlegt.
*/
.kl-grids.grid-news .grid-item {
  border: 2px solid var(--kl-color-magenta);
  border-radius: 25px;
  background-color: var(--kl-color-magenta-soft);
  box-shadow: 0 4px 8px var(--kl-alpha-shadow-010);

  padding-bottom: 0.25em;

  overflow: hidden;
}

/*
   Projekt-Karten
   --------------------------------------------------
   Projektkarten bleiben braun/grau gestaltet.
*/
.kl-grids.grid-projekte .grid-item {
  border: 2px solid var(--kl-color-brown);
  border-radius: 25px;
  background-color: var(--kl-color-surface-card);
  box-shadow: 0 4px 8px var(--kl-alpha-shadow-010);

  overflow: hidden;
}

/*
   Unterer Innenabstand bei Home-Grids
   --------------------------------------------------
   Der Wert ist klein gehalten, damit nach dem Grid kein großer
   zusätzlicher Abstand entsteht.
*/
.kl-grids.grid-news-home,
.kl-grids.grid-projekte-home {
  padding-bottom: 0.4rem;
}

.kl-grids .project-sponsor-colum {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

.kl-grids .home-sponsor-titel,
.kl-grids .grid-sponsor-title {
  margin-top: 0.15em;
  font-weight: bold;
}

.kl-grids.grid-projekte .grid-description {
  margin-top: 0.15em;
}

/* ==================================================
   11-09 MEHR-LESEN-LINKS
================================================== */

/* --------------------------------------------------
   11-09-01 Mehr-lesen-Bereich
-------------------------------------------------- */

/*
   Mehr-lesen-Bereich
   --------------------------------------------------
   Der Link sitzt am Kartenfuß rechts.

   Durch margin-top: auto bleibt er unten,
   auch wenn die Texte in den Karten unterschiedlich lang sind.
*/
.kl-grids .grid-readmore {
  min-height: var(--kl-card-readmore-height);
  margin-top: auto !important;

  display: flex;
  align-items: center;
  justify-content: flex-end;

  position: relative;
  z-index: 1;

  padding-top: 1.2em;
  padding-bottom: 1.1em;
}

/* --------------------------------------------------
   11-09-02 Link-Grundstil
-------------------------------------------------- */

.kl-grids .grid-readmore a,
.kl-grids .grid-readmore-link {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.45em;

  color: var(--kl-color-magenta);
  font-family: var(--kl-font-main);
  font-size: var(--kl-font-size-card-meta-fluid);
  line-height: 1.2;
  text-decoration: none;

  white-space: nowrap;
}

.kl-grids .grid-readmore a:hover,
.kl-grids .grid-readmore a:focus,
.kl-grids .grid-readmore-link:hover,
.kl-grids .grid-readmore-link:focus {
  color: var(--kl-color-magenta);
  text-decoration: none;
}

/* --------------------------------------------------
   11-09-03 Pfeile für Mehr-lesen-Links
-------------------------------------------------- */

/*
   Pfeile für Mehr-lesen-Links
   --------------------------------------------------
   Interne Links:
   - Normalzustand: Pfeil zeigt nach rechts.
   - Hover/Fokus: Pfeil dreht nach rechts oben.

   Externe Links mit target="_blank":
   - Normalzustand: Pfeil zeigt nach rechts oben.
   - Hover/Fokus: Pfeil dreht nach oben.

   Der Pfeil wird über die zentrale Icon-Variable geladen.

   Die bisherige optische Größe bleibt erhalten:
   - font-size: 2.15em;
   - width: 1em;
   - height: 1em;
*/
.kl-grids .grid-readmore a::after,
.kl-grids .grid-readmore-link::after {
  content: "";

  display: inline-flex;
  align-items: center;
  justify-content: center;

  width: 1em;
  height: 1em;

  background-image: var(--kl-icon-pfeil-magenta);
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;

  font-size: var(--kl-font-size-em-215);
  line-height: 0.8;

  margin-left: 0.18em;

  transform: translateY(0.02em) rotate(0deg);
  transform-origin: center center;

  transition: transform 0.16s ease;
}

/*
   Interne KL-Grid-Links:
   Bei Hover/Fokus dreht sich der Pfeil nach rechts oben.
*/
.kl-grids .grid-readmore a:hover::after,
.kl-grids .grid-readmore a:focus::after,
.kl-grids .grid-readmore-link:hover::after,
.kl-grids .grid-readmore-link:focus::after {
  transform: translateY(0.02em) rotate(-45deg);
}

/*
   Externe KL-Grid-Links:
   Externe Links zeigen schon im Normalzustand nach rechts oben.
*/
.kl-grids .grid-readmore a[target="_blank"]::after,
.kl-grids .grid-readmore-link[target="_blank"]::after {
  margin-left: 0.22em;

  transform: translateY(0.02em) rotate(-45deg);
}

/*
   Externe KL-Grid-Links bei Hover/Fokus:
   Der Pfeil dreht weiter nach oben.
*/
.kl-grids .grid-readmore a[target="_blank"]:hover::after,
.kl-grids .grid-readmore a[target="_blank"]:focus::after,
.kl-grids .grid-readmore-link[target="_blank"]:hover::after,
.kl-grids .grid-readmore-link[target="_blank"]:focus::after {
  transform: translateY(0.02em) rotate(-90deg);
}

/* --------------------------------------------------
   11-09-04 Leere Absatz-Elemente in Karten entfernen
-------------------------------------------------- */

.kl-grids .grid-item > p.wp-block-paragraph:empty {
  display: none;

  margin: 0 !important;
  padding: 0 !important;
}

/* --------------------------------------------------
   11-09-05 Desktop-Feinjustierung
-------------------------------------------------- */

@media (min-width: 880px) {
  .kl-grids .project-sponsor-icon img,
  .kl-grids .grid-sponsor-icon img {
    min-width: 4em;
  }

  .kl-grids .subtitel.home-subtitel {
    margin-top: 0 !important;
  }
}

/* ==================================================
   11-09-06 STANDALONE MEHR-LESEN SHORTCODE
================================================== */

/*
   Standalone-Shortcode:
   [kl-mehr url="..."]

   Darstellung:
   - rechtsbündig wie ein einzelner Mehr-lesen-Link
   - Schriftgröße orientiert sich am normalen Text darüber
   - magenta Text
   - magenta Pfeil über zentrale Icon-Variable
   - Hover/Fokus: Pfeil dreht nach rechts oben
   - externe Links mit target="_blank": Pfeil zeigt direkt nach rechts oben
   - externe Links mit target="_blank" bei Hover/Fokus: Pfeil dreht nach oben
*/
.kl-mehr-shortcode {
  display: flex;
  justify-content: flex-end;
  align-items: center;

  width: 100%;
  max-width: 100%;

  margin-top: 1.1rem;
  margin-bottom: 1.1rem;
}

.kl-mehr-shortcode-link {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.38em;

  color: var(--kl-color-magenta);
  font-family: var(--kl-font-main);

  /*
     Wichtig:
     Die Größe orientiert sich jetzt am normalen Text darüber.
     Kein großes vw-clamp mehr.
  */
  font-size: var(--kl-font-size-em-100);
  line-height: 1.25;

  text-decoration: underline;
  text-decoration-color: var(--kl-color-magenta);
  text-underline-offset: 0.24em;

  white-space: nowrap;
}

.kl-mehr-shortcode-link:hover,
.kl-mehr-shortcode-link:focus {
  color: var(--kl-color-magenta);
  text-decoration: underline;
  text-decoration-color: var(--kl-color-magenta);
  outline: none;
}

.kl-mehr-shortcode-link::after {
  content: "";

  display: inline-flex;
  align-items: center;
  justify-content: center;

  width: 1em;
  height: 1em;

  background-image: var(--kl-icon-pfeil-magenta);
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;

  /*
     Pfeil nur leicht größer als der Text,
     aber deutlich kleiner als vorher.
  */
  font-size: var(--kl-font-size-em-115);
  line-height: 1;

  margin-left: 0.06em;

  transform: translateY(0.03em) rotate(0deg);
  transform-origin: center center;

  transition: transform 0.16s ease;
}

.kl-mehr-shortcode-link:hover::after,
.kl-mehr-shortcode-link:focus::after {
  transform: translateY(0.03em) rotate(-45deg);
}

/*
   Externe Links:
   Normalzustand nach rechts oben,
   Hover/Fokus weiter nach oben.
*/
.kl-mehr-shortcode-link[target="_blank"]::after {
  transform: translateY(0.03em) rotate(-45deg);
}

.kl-mehr-shortcode-link[target="_blank"]:hover::after,
.kl-mehr-shortcode-link[target="_blank"]:focus::after {
  transform: translateY(0.03em) rotate(-90deg);
}

@media (max-width: 700px) {
  .kl-mehr-shortcode {
    margin-top: 1rem;
    margin-bottom: 1rem;
  }

  .kl-mehr-shortcode-link {
    font-size: var(--kl-font-size-em-100);
  }

  .kl-mehr-shortcode-link::after {
    font-size: var(--kl-font-size-em-112);
  }
}

/* ==================================================
   11-10 GRID-RESPONSIVE
================================================== */

/*
   Tablet-Ansicht
   --------------------------------------------------
   Unter 1280px werden die Karten flexibler:
   - Mindesthöhen werden gelöst
   - Texte dürfen natürlich wachsen
   - Grids wechseln auf zwei Spalten
*/
@media (max-width: 1280px) {
  .kl-grids .grid-item {
    min-height: 0 !important;
  }

  .kl-grids .grid-item > h2,
  .kl-grids .grid-item > .grid-title {
    min-height: 0 !important;
    height: auto !important;

    margin-top: 0.75em !important;
    margin-bottom: 0.18em !important;
  }

  .kl-grids .home-subtitel,
  .kl-grids .subtitel.home-subtitel,
  .kl-grids .grid-item > *:has(.subtitel.home-subtitel),
  .kl-grids .grid-item > *:has(.home-subtitel) {
    min-height: 0 !important;
    height: auto !important;

    margin-top: 0 !important;
    margin-bottom: 0.45em !important;
  }

  .kl-grids .home-timeline,
  .kl-grids .home-time,
  .kl-grids .home-location_type,
  .kl-grids .grid-meta-value,
  .kl-grids .grid-meta {
    min-height: 0 !important;
    height: auto !important;
  }

  .kl-grids .grid-description,
  .kl-grids .grid-description-text,
  .kl-grids .home-post-description {
    min-height: 0 !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
  }

  .kl-grids.grid-projekte .grid-sponsor-logos {
    min-height: 0 !important;
    align-items: center !important;
    margin-bottom: 0.25em !important;
  }

  .kl-grids .grid-readmore {
    min-height: 3.4rem;
    margin-top: 1.4em !important;
  }

  .kl-grids .project-sponsor-icon img,
  .kl-grids .grid-sponsor-icon img {
    max-height: 3em;
  }

  .kl-grids.grid-news-home .grid-loop,
  .kl-grids.grid-projekte-home .grid-loop,
  .kl-grids.grid-news-archiv .grid-loop,
  .kl-grids.grid-projekte-laufend .grid-loop {
    grid-template-columns: repeat(2, minmax(24rem, 1fr));
  }

  .kl-grids.grid-projekte-archiv .grid-loop {
    grid-template-columns: repeat(2, minmax(24rem, 28rem));
  }
}

/*
   Mobile Ansicht
   --------------------------------------------------
   Unter 760px laufen alle Grid-Varianten einspaltig.
*/
@media (max-width: 760px) {
  .kl-grids.grid-news-home .grid-loop,
  .kl-grids.grid-projekte-home .grid-loop,
  .kl-grids.grid-news-archiv .grid-loop,
  .kl-grids.grid-projekte-laufend .grid-loop,
  .kl-grids.grid-projekte-archiv .grid-loop {
    grid-template-columns: 1fr !important;
  }
}

@media (max-width: 700px) {
  .kl-grid-head {
    max-height: none;
  }

  .kl-grid-head .kl-head-title {
    line-height: 1.12;
  }

  .kl-grids .grid-image {
    aspect-ratio: 4 / 3;
  }

  .kl-grids .grid-image img {
    width: 100% !important;
    height: 100% !important;
    max-width: 100%;

    margin-left: 0;
  }
}

@media (max-width: 480px) {
  .kl-grids {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }

  .kl-grids .grid-loop {
    row-gap: 1.6rem;
  }

  .kl-grids .grid-image {
    aspect-ratio: 4 / 3;
  }

  .kl-grids .grid-item {
    border-radius: 18px;
  }

  .kl-grids .grid-item > .grid-image img {
    border-radius: 16px 16px 0 0;
  }

  .kl-grids.grid-news-home,
  .kl-grids.grid-projekte-home {
    padding-bottom: 0.2rem;
  }
}

/* ==================================================
   11-11 PAGINATION
================================================== */

/*
   Pagination für Archiv- und Übersichtsseiten
   --------------------------------------------------
   Home-Grids haben keine Seitennummerierung.
   Archiv- und Übersichtsseiten haben eine Pagination.

   Der Abstand oberhalb und unterhalb der Pagination bleibt kompakt.
*/
.kl-grids .grid-pagination {
  margin-top: 1.2rem;
  margin-bottom: 1.2rem;

  text-align: center;
}

.kl-grids .grid-pagination-list {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0.45rem;

  padding: 0;
  margin: 0;

  background: transparent;
  border-radius: 0;
}

.kl-grids .grid-pagination .page-numbers,
.kl-grids .grid-page-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  min-width: 3.2rem;
  min-height: 3.2rem;
  padding: 0.45rem 0.9rem;

  border: 2px solid var(--kl-color-brown);
  border-radius: 999px;
  background-color: var(--kl-color-white);

  color: var(--kl-color-magenta);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-140);
  line-height: 1;
  text-decoration: none;

  cursor: pointer;
}

.kl-grids .grid-pagination .page-numbers:hover,
.kl-grids .grid-pagination .page-numbers:focus,
.kl-grids .grid-page-number:hover,
.kl-grids .grid-page-number:focus {
  background-color: var(--kl-color-white);
  border-color: var(--kl-color-brown);
  color: var(--kl-color-magenta);
  text-decoration: none;
}

.kl-grids .grid-pagination .page-numbers[aria-current="page"],
.kl-grids .grid-pagination .grid-page-number.is-current {
  background-color: var(--kl-color-magenta);
  border-color: var(--kl-color-magenta);
  color: var(--kl-color-white);
}

.kl-grids .grid-pagination .page-numbers[aria-disabled="true"],
.kl-grids .grid-pagination .grid-page-number.is-disabled {
  opacity: 0.35;
  cursor: default;
  pointer-events: none;
}

.kl-grids .grid-pagination .page-numbers.dots,
.kl-grids .grid-pagination .grid-page-number.dots {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  min-width: 2.2rem;
  min-height: 3.2rem;

  border-color: transparent;
  background-color: transparent;

  color: var(--kl-color-brown);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-140);
  line-height: 1;

  cursor: default;
}

.kl-grids .grid-pagination .prev.page-numbers,
.kl-grids .grid-pagination .next.page-numbers {
  min-width: auto;
  padding-left: 1.2rem;
  padding-right: 1.2rem;
}

@media (max-width: 480px) {
  .kl-grids .grid-pagination {
    margin-top: 1rem;
    margin-bottom: 1rem;
  }

  .kl-grids .grid-pagination-list {
    gap: 0.3rem;
  }

  .kl-grids .grid-pagination .page-numbers,
  .kl-grids .grid-page-number {
    min-width: 2.8rem;
    min-height: 2.8rem;
    padding: 0.4rem 0.7rem;

    font-size: var(--kl-font-size-125);
  }

  .kl-grids .grid-pagination .page-numbers.dots,
  .kl-grids .grid-pagination .grid-page-number.dots {
    min-height: 2.8rem;
    font-size: var(--kl-font-size-125);
  }
}

/* ==================================================
   11-12 LOGO-GRIDS / PARTNER, AUSZEICHNUNGEN, FÖRDERER
================================================== */


/*
   Logo-Grids für Partner- und Förderlogos
   --------------------------------------------------
   Betrifft diese Shortcodes:

   Logo-Grids:
   - [kl-logo-ausgezeichnet]
   - [kl-logo-mitglied]
   - [kl-logo-foerderer]
   - [kl-logo-kulturpartner]
   - [kl-logo-sozialpartner]

   Home-Versionen:
   - [kl-logo-ausgezeichnet-home]
   - [kl-logo-mitglied-home]
   - [kl-logo-foerderer-home]
   - [kl-logo-kulturpartner-home]
   - [kl-logo-sozialpartner-home]

   Unabhängige Überschriften:
   - [kl-logo-ausgezeichnet-head]
   - [kl-logo-mitglied-head]
   - [kl-logo-foerderer-head]
   - [kl-logo-kulturpartner-head]
   - [kl-logo-sozialpartner-head]

   Wichtig:
   Die Logo-Grids nutzen keine alten PostGrid-Klassen mehr.
   Deshalb werden hier ausschließlich die neuen KL-Logo-Klassen angesprochen.

   Layout-Ziel:
   - maximal 3 Logos nebeneinander
   - auf kleineren Bildschirmen mindestens 2 Logos nebeneinander
   - Logos werden proportional skaliert
   - Logos werden nicht abgeschnitten
   - Kulturpartner und Sozialpartner zeigen Logo plus Titel
*/

/* --------------------------------------------------
   Logo-Grid außen
-------------------------------------------------- */

.entry-content > .kl-logo-grid.alignwide,
.entry-content > .kl-logo-grid,
.kl-logo-grid {
  margin-top: 1.2rem !important;
  margin-bottom: 1.2rem !important;
}

/*
   Home-Versionen kompakter halten.
*/
.kl-logo-grid.kl-logo-grid-home {
  margin-top: 0.8rem !important;
  margin-bottom: 1rem !important;
}

/* --------------------------------------------------
   Logo-Loop
-------------------------------------------------- */

.kl-logo-grid .kl-logo-loop {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  column-gap: clamp(1rem, 3vw, 2rem);
  row-gap: clamp(1rem, 3vw, 2rem);

  align-items: stretch;
  justify-items: center;

  width: 100%;
  max-width: 100%;

  margin: 0 auto;
  padding: 0;
}

/*
   Alle Logo-Grids:
   maximal 3 Spalten nebeneinander.
*/
.kl-logo-grid.kl-logo-grid-ausgezeichnet .kl-logo-loop,
.kl-logo-grid.kl-logo-grid-mitglied .kl-logo-loop,
.kl-logo-grid.kl-logo-grid-foerderer .kl-logo-loop,
.kl-logo-grid.kl-logo-grid-kulturpartner .kl-logo-loop,
.kl-logo-grid.kl-logo-grid-sozialpartner .kl-logo-loop {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

/* --------------------------------------------------
   Einzelnes Logo-Element
-------------------------------------------------- */

.kl-logo-grid .kl-logo-item {
  box-sizing: border-box;

  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;

  width: 100%;
  max-width: 100%;

  margin: 0;
  padding: clamp(0.5rem, 1.5vw, 1rem);

  background: transparent;
  border: 0;
  box-shadow: none;
}

/*
   Reine Logo-Grids ohne Titel:
   Logos optisch mittig halten.
*/
.kl-logo-grid-ausgezeichnet .kl-logo-item,
.kl-logo-grid-mitglied .kl-logo-item,
.kl-logo-grid-foerderer .kl-logo-item {
  justify-content: center;
}

/* --------------------------------------------------
   Bildbereich
-------------------------------------------------- */

.kl-logo-grid .kl-logo-image {
  display: flex;
  align-items: center;
  justify-content: center;

  width: 100%;
  max-width: 100%;

  min-height: clamp(5rem, 9vw, 8rem);

  margin: 0;
  padding: 0;
}

/*
   Kulturpartner und Sozialpartner brauchen wegen Titel darunter
   eine etwas ruhigere Bildzone.
*/
.kl-logo-grid-kulturpartner .kl-logo-image,
.kl-logo-grid-sozialpartner .kl-logo-image {
  min-height: clamp(5.4rem, 9vw, 8.4rem);
  margin-bottom: 0.55rem;
}

/* --------------------------------------------------
   Logo-Bild
-------------------------------------------------- */

.kl-logo-grid .kl-logo-image img {
  display: block;

  width: auto !important;
  height: auto !important;

  max-width: 100%;
  max-height: clamp(5rem, 9vw, 8rem);

  object-fit: contain;
  object-position: center center;

  margin: 0 auto;
  padding: 0;

  border: 0;
  border-radius: 0;
  box-shadow: none;
}

/*
   Kulturpartner- und Sozialpartner-Logos:
   minimal kompakter, damit der Titel darunter Platz hat.
*/
.kl-logo-grid-kulturpartner .kl-logo-image img,
.kl-logo-grid-sozialpartner .kl-logo-image img {
  max-height: clamp(4.8rem, 8.5vw, 7.6rem);
}

/* --------------------------------------------------
   Logo-Titel unter Kulturpartner / Sozialpartner
-------------------------------------------------- */

/*
   Der Titel kommt aus dem Post-Titel des jeweiligen Eintrags.
   Er wird nur ausgegeben, wenn das Grid im PHP show_title=true hat.
*/
.kl-logo-grid .kl-logo-title {
  box-sizing: border-box;

  width: 100%;
  max-width: 100%;

  margin: 0.45rem auto 0;
  padding: 0 0.3rem;

  color: var(--kl-color-text);
  font-family: var(--kl-font-bold) !important;
  font-weight: bold;
  font-size: var(--kl-font-size-fluid-125-165);
  line-height: 1.25;
  letter-spacing: 0.02em;
  text-align: center;

  overflow-wrap: anywhere;
  word-break: normal;
}

/*
   Titel nur in den beiden Titel-Logo-Grids sichtbar gestalten.
*/
.kl-logo-grid-kulturpartner .kl-logo-title,
.kl-logo-grid-sozialpartner .kl-logo-title {
  display: block;
}

/* --------------------------------------------------
   Logo-Überschriften
-------------------------------------------------- */

/*
   Die Logo-Überschriften sind unabhängig von den Logo-Grids.
   Sie können frei mit oder ohne Logo-Grid genutzt werden.
*/
.kl-logo-head {
  margin-top: 2rem !important;
  margin-bottom: 1rem !important;
}

.kl-logo-head .kl-logo-head-title-column {
  margin: 0 !important;
  padding: 0 !important;
}

/*
   Titel der Logo-Überschriften.
   Die Klasse .partfordspon-head bleibt bewusst enthalten,
   damit vorhandene Gestaltungsregeln weiter greifen können.
*/
.kl-logo-head .kl-logo-head-title {
  margin-top: 0 !important;
  margin-bottom: 0 !important;

  font-family: var(--kl-font-bold) !important;
  font-weight: bold;
}

/* --------------------------------------------------
   Responsive: Tablet / kleinere Breiten
-------------------------------------------------- */

/*
   Unter 760px bleiben mindestens 2 Logos nebeneinander.
*/
@media (max-width: 760px) {
  .kl-logo-grid .kl-logo-loop,
  .kl-logo-grid.kl-logo-grid-ausgezeichnet .kl-logo-loop,
  .kl-logo-grid.kl-logo-grid-mitglied .kl-logo-loop,
  .kl-logo-grid.kl-logo-grid-foerderer .kl-logo-loop,
  .kl-logo-grid.kl-logo-grid-kulturpartner .kl-logo-loop,
  .kl-logo-grid.kl-logo-grid-sozialpartner .kl-logo-loop {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: clamp(0.8rem, 3vw, 1.4rem);
    row-gap: clamp(1rem, 3.2vw, 1.6rem);
  }

  .kl-logo-grid .kl-logo-item {
    padding: clamp(0.35rem, 2vw, 0.7rem);
  }

  .kl-logo-grid .kl-logo-image {
    min-height: clamp(4.6rem, 13vw, 6.5rem);
  }

  .kl-logo-grid .kl-logo-image img {
    max-height: clamp(4.6rem, 13vw, 6.5rem);
  }

  .kl-logo-grid-kulturpartner .kl-logo-image,
  .kl-logo-grid-sozialpartner .kl-logo-image {
    min-height: clamp(4.8rem, 13vw, 6.8rem);
    margin-bottom: 0.45rem;
  }

  .kl-logo-grid-kulturpartner .kl-logo-image img,
  .kl-logo-grid-sozialpartner .kl-logo-image img {
    max-height: clamp(4.4rem, 12vw, 6.2rem);
  }

  .kl-logo-grid .kl-logo-title {
    font-size: var(--kl-font-size-fluid-115-145);
    line-height: 1.22;
  }
}

/* --------------------------------------------------
   Sehr kleine Displays
-------------------------------------------------- */

/*
   Auch auf sehr kleinen Displays bleiben 2 Logos nebeneinander.
   Die Logos und Titel werden dafür etwas kleiner skaliert.
*/
@media (max-width: 420px) {
  .kl-logo-grid {
    margin-top: 0.9rem !important;
    margin-bottom: 0.9rem !important;
  }

  .kl-logo-grid .kl-logo-loop {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 0.7rem;
    row-gap: 1rem;
  }

  .kl-logo-grid .kl-logo-item {
    padding: 0.3rem;
  }

  .kl-logo-grid .kl-logo-image {
    min-height: clamp(4rem, 14vw, 5.6rem);
  }

  .kl-logo-grid .kl-logo-image img {
    max-height: clamp(4rem, 14vw, 5.6rem);
  }

  .kl-logo-grid-kulturpartner .kl-logo-image,
  .kl-logo-grid-sozialpartner .kl-logo-image {
    min-height: clamp(4.2rem, 14vw, 5.8rem);
    margin-bottom: 0.35rem;
  }

  .kl-logo-grid-kulturpartner .kl-logo-image img,
  .kl-logo-grid-sozialpartner .kl-logo-image img {
    max-height: clamp(3.8rem, 13vw, 5.2rem);
  }

  .kl-logo-grid .kl-logo-title {
    margin-top: 0.35rem;
    padding-left: 0.15rem;
    padding-right: 0.15rem;

    font-size: var(--kl-font-size-fluid-105-128);
    line-height: 1.18;
    letter-spacing: 0.01em;
  }
}
 


/* ==================================================
   12 ÜBERSCHRIFTEN / TABELLEN / SONDERKLASSEN
================================================== */

/* Gesamte Überschriften Anpassungen */
.braun-head {
  background-color: var(--kl-color-brown);
  color: var(--kl-color-white);
  font-weight: bold;
  font-size: var(--kl-font-size-em-200);
  letter-spacing: 0.01em;
  padding-left: 0.3em;
}

.magenta-head,
.braun-head {
  padding-bottom: 0.8rem;
}

.magenta-head {
  background-color: var(--kl-color-magenta-alt);
  color: var(--kl-color-white);
  font-weight: bold;
  font-size: var(--kl-font-size-em-200);
  letter-spacing: 0.01em;
  padding-left: 0.3em;
  margin: -4rem;
  max-width: 110%;
}

h2.wp-block-heading.magenta-head {
  margin-left: -4rem !important;
  margin-right: -4rem !important;
  margin-top: -4rem !important;
  width: calc(100% + 8rem) !important;
}

h2.wp-block-heading.magenta-head-no-background {
  margin-top: -4rem !important;
  width: calc(100% + 8rem) !important;
}


/*
   Trennlinie / WordPress Separator
   --------------------------------------------------
   Vereinheitlicht den vertikalen Abstand von WordPress-Trennlinien.
   Der Separator bleibt zentriert und bekommt oben/unten 5rem Abstand.
*/
hr.wp-block-separator {
  margin: 5rem auto !important;
}


/* Tabelle ohne Rahmen und Abstand oben/unten */
table.table-no-border {
  border: none;
  border-collapse: collapse;
}

.table-no-border table {
  margin-top: 0;
  margin-bottom: 0;
}

.table-no-border td,
.table-no-border th {
  border: 1px solid transparent;
}

/* ==================================================
   13 KULTURPARTNER / FÖRDERER / SPONSOREN / AUSZEICHNUNGEN
================================================== */

/* Kulturpartner & Förderer - Hintergrund und Schriftfarbe */
.partfordspon-head {
  color: var(--kl-color-text);
  text-align: left;
  font-size: var(--kl-font-size-em-100);
  border-bottom: 0.1rem solid var(--kl-color-brown);
  margin-bottom: 0.1em !important;
}

/* Mitglied Förderer Kulturpartner von Leisten - Logo Größe */
.home-culturpartner img,
.home-funders img,
.home-sponsors img,
.home-member img,
.sponsors-block img,
.socialpartner-block img {
  object-fit: contain;
  width: 100%;
  height: 7em;
}

.pg22d6718b25d4 {
  margin-top: 1rem !important;
  letter-spacing: 0.2rem;
}

/* Postadresse */
.postadress-block h3 {
  display: block;
  margin: 0 0 .35rem 0;
}

/* Straße + Hausnummer */
.postadress-block .adress-line,
.postadress-block .pg033c2ba97b0c {
  display: inline;
  white-space: nowrap;
  margin-right: .4rem;
  vertical-align: baseline;
}

/* PLZ + Stadt */
.postadress-block .city-line,
.postadress-block .city-line + .pga03377fb8bf7 {
  display: inline-block;
  white-space: nowrap;
  vertical-align: baseline;
}

/* Abstand hinter PLZ */
.postadress-block .city-line {
  margin-right: .4rem;
}

.postadress-block {
  margin: 1rem 0;
  padding: 0.5rem 0;
}

/* Ausgezeichnet Leiste - Logo Größe */
.home-awarded img {
  object-fit: contain;
  width: 100%;
  height: 8em;
}

/* Kulturpartner Förderer Sponsoren Mitglied Ausgezeichnet - Überschriften */
.home-culturpartner .items-loop h2,
.home-funders .items-loop h2,
.home-sponsors .items-loop h2,
.home-member .items-loop h2,
.sponsors-block .items-loop h2,
.home-award .items-loop h2 {
  font-size: var(--kl-font-size-em-050);
  text-align: center;
}

/* Kulturpartner Förderer Sponsoren Mitglied Ausgezeichnet - Außenabstände */
.home-culturpartner .items-loop,
.home-funders .items-loop,
.home-sponsors .items-loop,
.home-member .items-loop,
.home-award .items-loop,
.sponsors-block .items-loop {
  margin-left: 0.5em;
  margin-right: 0.5em;
  margin-bottom: 0.5em;
}

/* Kulturpartner Förderer Sponsoren Mitglied Ausgezeichnet - Innenabstände */
.home-culturpartner .items-loop .item div,
.home-funders .items-loop .item div,
.home-sponsors .items-loop .item div,
.home-member .items-loop .item div,
.home-award .items-loop .item div,
.sponsors-block .items-loop .item div {
  margin-right: 2em;
  margin-left: 2em;
}

/* Ausgezeichnet, Sponsoren und Förderer - 1-spaltig */
.home-awarded .pg7c2c368c69d1 .items-loop,
.home-sponsors .pg7c2c368c69d1 .items-loop,
.home-funders .pg7c2c368c69d1 .items-loop {
  grid-template-rows: 1fr !important;
}

/* ==================================================
   13-01 WORDPRESS-INHALTSBLÖCKE / MAXIMALE BREITE
================================================== */

/*
   WordPress-Gruppenblöcke mit Hintergrund begrenzen
   --------------------------------------------------
   Ziel:
   - Fullwidth-/breite WordPress-Blöcke dürfen weiterhin ihren Hintergrund
     über die volle Browserbreite zeigen.
   - Der eigentliche Inhalt im Block bleibt aber zentriert.
   - Maximale Inhaltsbreite bleibt 100rem bzw. var(--kl-layout-width).
   - Dadurch laufen Textbereiche nicht unkontrolliert zu breit.
*/
.entry-content > .wp-block-group.alignfull > .wp-block-group__inner-container,
.entry-content > .wp-block-group.alignwide > .wp-block-group__inner-container,
.entry-content > .wp-block-cover.alignfull > .wp-block-cover__inner-container,
.entry-content > .wp-block-cover.alignwide > .wp-block-cover__inner-container {
  box-sizing: border-box;

  width: calc(100% - (var(--kl-layout-side-gap, 4rem) * 2));
  max-width: var(--kl-layout-width, 100rem);

  margin-left: auto;
  margin-right: auto;
}

/*
   Falls der Block selbst kein inner-container-Element hat,
   wird auch der direkte Block abgesichert.
*/
.entry-content > .wp-block-group:not(.alignfull):not(.alignwide),
.entry-content > .wp-block-cover:not(.alignfull):not(.alignwide) {
  box-sizing: border-box;

  max-width: var(--kl-layout-width, 100rem);

  margin-left: auto;
  margin-right: auto;
}

/*
   Fullwidth-Blöcke:
   Hintergrund darf breit bleiben,
   aber kein horizontaler Überlauf.
*/
.entry-content > .wp-block-group.alignfull,
.entry-content > .wp-block-cover.alignfull {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  overflow-x: hidden;
}

/*
   Tablet:
   etwas kleinere Seitenränder.
*/
@media (max-width: 1000px) {
  .entry-content > .wp-block-group.alignfull > .wp-block-group__inner-container,
  .entry-content > .wp-block-group.alignwide > .wp-block-group__inner-container,
  .entry-content > .wp-block-cover.alignfull > .wp-block-cover__inner-container,
  .entry-content > .wp-block-cover.alignwide > .wp-block-cover__inner-container {
    width: calc(100% - 4rem);
  }
}

/*
   Mobile:
   fast volle Breite, aber weiterhin mit kleinem Rand.
*/
@media (max-width: 700px) {
  .entry-content > .wp-block-group.alignfull > .wp-block-group__inner-container,
  .entry-content > .wp-block-group.alignwide > .wp-block-group__inner-container,
  .entry-content > .wp-block-cover.alignfull > .wp-block-cover__inner-container,
  .entry-content > .wp-block-cover.alignwide > .wp-block-cover__inner-container {
    width: calc(100% - 2rem);
    max-width: none;
  }
}

/* Ende CONTENT: Fullwidth-Blöcke innen auf Layoutbreite begrenzen */

/* ==================================================
   14 FOOTER
================================================== */

/* ==================================================
   14-01 FOOTER-GRUNDSTRUKTUR / BREITE
================================================== */

/*
   Footer-Grundstruktur
   --------------------------------------------------
   Ziel:
   - Der Footer beginnt ohne zusätzlichen Abstand nach oben.
   - Die braune Footer-Fläche darf die volle Browserbreite nutzen.
   - Der innere Footer darf auf Mobilgeräten NICHT durch Theme- oder
     Customizer-Regeln künstlich verengt werden.
   - Die eigentlichen Footer-Inhalte bleiben auf Desktop an der
     zentralen Layoutbreite ausgerichtet.
*/
.footer-nav-widgets-wrapper {
  margin-top: 0 !important;
}

/*
   Footer-Innencontainer
   --------------------------------------------------
   Wichtig:
   TwentyTwenty und der Customizer können .section-inner auf kleinen
   Ansichten künstlich verengen. Für den Footer wird das aufgehoben,
   damit das mobile Footer-Menü maximal nutzbare Breite bekommt.
*/
.footer-nav-widgets-wrapper .footer-inner.section-inner,
.footer-inner.section-inner {
  max-width: none !important;
  width: 100% !important;

  margin-left: auto !important;
  margin-right: auto !important;

  padding-left: 0 !important;
  padding-right: 0 !important;
}

/*
   WordPress-Customizer-Vorschau neutralisieren
   --------------------------------------------------
   Im Customizer kann diese Regel auftauchen:
   .customize-partial-edit-shortcuts-shown .footer-nav-widgets-wrapper .footer-inner.section-inner {
     width: calc(100% - 8rem);
   }

   Genau diese Verengung kostet im mobilen Footer-Menü wertvolle Breite.
   Deshalb wird sie hier gezielt für den Footer zurückgenommen.
*/
@media (max-width: 800px) {
  .customize-partial-edit-shortcuts-shown .footer-nav-widgets-wrapper .footer-inner.section-inner {
    width: 100% !important;
    max-width: none !important;

    margin-left: auto !important;
    margin-right: auto !important;

    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/*
   Footer-Widget-Außenbereich
*/
.footer-widgets-outer-wrapper {
  border-bottom: hidden;
  padding-top: 2.35rem;
}

/*
   Footer-Inhalte Desktop / Basis
   --------------------------------------------------
   Gleiche Breite wie Text, Bild, Menü und andere zentrale Inhalte.
*/
.footer-widgets-wrapper {
  width: calc(100% - (var(--kl-layout-side-gap) * 2));
  max-width: var(--kl-layout-width);

  margin-left: auto;
  margin-right: auto;
}

/* ==================================================
   14-02 FOOTER-MENÜ / DESKTOP, TABLET, MOBILE
================================================== */

/*
   Footer-Menü-Leiste
   --------------------------------------------------
   Ziel:
   - Desktop: einzeiliges Menü innerhalb der Layoutbreite.
   - Tablet: 3 Spalten / 2 Reihen.
   - Mobile: 2 Spalten / 3 Reihen.
   - Wörter wie TRANSPARENZ und DATENSCHUTZ brechen nicht mitten im Wort.
   - Touch-Flächen sind groß genug.
   - In sehr kleinen Ansichten wird die verfügbare Breite maximal genutzt.
   - Die mobile Schrift ist deutlich größer und besser lesbar.
   - Die Unterstreichung wird stabil per ::after erzeugt
     und sitzt nah am Text wie im oberen Menü.
   - Der leere Social-Menü-Bereich oben im Footer wird neutralisiert.
*/
.footer-top {
  display: flex;
  justify-content: center;

  width: 100%;
  max-width: none;

  border: none;
  overflow: visible;

  padding-top: 2.2rem;
  padding-bottom: 1.15rem;
}

/*
   Leeren Social-Menü-Bereich im Footer-Top neutralisieren
   --------------------------------------------------
   Dieser Bereich ist im HTML vorhanden, enthält aber keine Links.
   Wenn er sichtbar bleibt, verschiebt er das Footer-Menü optisch.
   Die Social-Icons im Widget-Bereich bleiben davon unberührt.
*/
.footer-top .footer-social-wrapper {
  display: none !important;
  visibility: hidden !important;

  width: 0 !important;
  max-width: 0 !important;
  height: 0 !important;
  max-height: 0 !important;

  margin: 0 !important;
  padding: 0 !important;

  overflow: hidden !important;
  pointer-events: none !important;
}

/*
   Footer-Menü-Wrapper
*/
.footer-menu-wrapper {
  width: 100%;
  max-width: var(--kl-layout-width);

  margin-left: auto;
  margin-right: auto;
}

/*
   Footer-Menü Desktop / Basis
   --------------------------------------------------
   Desktop:
   - eine Reihe
   - keine Umbrüche
   - gleichmäßige Verteilung
*/
.footer-menu {
  display: flex;
  flex-wrap: nowrap;
  justify-content: space-between;
  align-items: center;

  width: 100%;
  max-width: var(--kl-layout-width);

  gap: clamp(0.7rem, 1.05vw, 1.8rem);

  margin-left: 0;
  margin-right: 0;

  padding-left: 0;
  padding-right: 0;

  overflow: visible;
}

.footer-menu li {
  flex: 0 1 auto;
  min-width: 0;

  margin-left: 0;
  margin-right: 0;
}

/*
   Footer-Menü-Links
   --------------------------------------------------
   Wichtig:
   Die sichtbare Linie wird über ::after erzeugt.
   Dadurch bleibt sie stabil sichtbar, sitzt aber näher am Text
   als eine border-bottom-Linie.
*/
.footer-menu li a,
.footer-nav-widgets-wrapper .footer-top .footer-menu li > a {
  position: relative !important;

  color: var(--kl-color-white) !important;
  font-family: var(--kl-font-bold) !important;

  font-size: var(--kl-font-size-fluid-150-200) !important;
  line-height: 1.35 !important;
  letter-spacing: clamp(0.015em, 0.055vw, 0.055em) !important;

  white-space: nowrap !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
  hyphens: none !important;

  text-decoration: none !important;

  box-sizing: border-box !important;
}

.footer-menu li a::after,
.footer-nav-widgets-wrapper .footer-top .footer-menu li > a::after {
  content: "";

  position: absolute;
  left: 0;
  right: 0;

  bottom: 0.1em;

  height: 0.08em;
  min-height: 1px;

  background-color: var(--kl-color-white);

  pointer-events: none;
}

.footer-menu li a:hover,
.footer-menu li a:focus,
.footer-nav-widgets-wrapper .footer-top .footer-menu li > a:hover,
.footer-nav-widgets-wrapper .footer-top .footer-menu li > a:focus {
  text-decoration: none !important;
}

.footer-menu li a:hover::after,
.footer-menu li a:focus::after,
.footer-nav-widgets-wrapper .footer-top .footer-menu li > a:hover::after,
.footer-nav-widgets-wrapper .footer-top .footer-menu li > a:focus::after {
  background-color: var(--kl-color-magenta);
}

/*
   Desktop ab 1001px
*/
@media (min-width: 1001px) {
  .footer-top {
    padding-top: 2.35rem;
    padding-bottom: 1.2rem;
  }

  .footer-menu li a,
  .footer-nav-widgets-wrapper .footer-top .footer-menu li > a {
    font-size: var(--kl-font-size-fluid-155-205) !important;
    line-height: 1.35 !important;
    letter-spacing: clamp(0.015em, 0.055vw, 0.06em) !important;
  }

  .footer-widgets-outer-wrapper {
    padding-top: 2.45rem;
  }
}

/*
   Tablet 701px bis 1000px
*/
@media (max-width: 1000px) and (min-width: 701px) {
  .footer-top {
    width: 100%;
    max-width: none;

    margin-left: auto;
    margin-right: auto;

    padding-top: 1.75rem;
    padding-bottom: 1rem;

    overflow-x: hidden;
    overflow-y: visible;
  }

  .footer-menu-wrapper {
    width: 100%;
    max-width: none;
  }

  .footer-menu {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));

    width: calc(100% - 0.2rem);
    max-width: none;

    gap: 0.75rem 0.45rem;

    margin-left: auto;
    margin-right: auto;

    padding: 0.95rem 0;

    overflow: visible;
  }

  .footer-menu li {
    display: flex;
    justify-content: center;

    width: 100%;
    min-width: 0;
    margin: 0;
  }

  .footer-menu li a,
  .footer-nav-widgets-wrapper .footer-top .footer-menu li > a {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    width: auto !important;
    max-width: 100% !important;
    min-height: 5.2rem !important;

    padding: 0.9rem 0.22rem !important;

    font-size: var(--kl-font-size-fluid-178-212) !important;
    line-height: 1.18 !important;
    letter-spacing: clamp(0.012em, 0.045vw, 0.045em) !important;

    text-align: center !important;

    box-sizing: border-box !important;
  }

  .footer-menu li a::after,
  .footer-nav-widgets-wrapper .footer-top .footer-menu li > a::after {
    bottom: 0.42em;
    height: 0.075em;
  }

  .footer-widgets-outer-wrapper {
    padding-top: 2.1rem;
  }
}

/*
   Mobile bis 700px
*/
@media (max-width: 700px) {
  .footer-top {
    width: 100%;
    max-width: none;

    margin-left: auto;
    margin-right: auto;

    padding-top: 1.45rem;
    padding-bottom: 1rem;

    overflow-x: hidden;
    overflow-y: visible;
  }

  .footer-menu-wrapper {
    width: 100%;
    max-width: none;
  }

  .footer-menu {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));

    width: 100%;
    max-width: 48rem;

    gap: 0.76rem 0.14rem;

    margin-left: auto;
    margin-right: auto;

    padding: 0.95rem 0;

    overflow: visible;
  }

  .footer-menu li {
    display: flex;
    justify-content: center;

    width: 100%;
    min-width: 0;
    margin: 0;
  }

  .footer-menu li a,
  .footer-nav-widgets-wrapper .footer-top .footer-menu li > a {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    width: auto !important;
    max-width: 100% !important;
    min-height: 5.55rem !important;

    padding: 0.88rem 0 !important;

    font-size: var(--kl-font-size-fluid-175-215) !important;
    line-height: 1.12 !important;
    letter-spacing: 0.045em !important;

    text-align: center !important;

    box-sizing: border-box !important;
  }

  .footer-menu li a::after,
  .footer-nav-widgets-wrapper .footer-top .footer-menu li > a::after {
    bottom: 0.46em;
    height: 0.075em;
  }

  .footer-widgets-outer-wrapper {
    padding-top: 1.9rem;
  }
}

/*
   Sehr kleine Displays bis 420px
*/
@media (max-width: 420px) {
  .footer-top {
    width: 100%;
    padding-top: 1.25rem;
    padding-bottom: 0.95rem;
  }

  .footer-menu {
    width: 100%;
    max-width: none;

    gap: 0.66rem 0.04rem;

    padding-top: 0.86rem;
    padding-bottom: 0.86rem;
  }

  .footer-menu li a,
  .footer-nav-widgets-wrapper .footer-top .footer-menu li > a {
    min-height: 5.45rem !important;

    padding: 0.78rem 0 !important;

    font-size: var(--kl-font-size-fluid-162-205) !important;
    line-height: 1.08 !important;
    letter-spacing: 0.075em !important;
  }

  .footer-menu li a::after,
  .footer-nav-widgets-wrapper .footer-top .footer-menu li > a::after {
    bottom: 0.42em;
    height: 0.07em;
  }
}

/*
   Extrem kleine Displays bis 340px
*/
@media (max-width: 340px) {
  .footer-menu {
    width: 100%;
    max-width: none;

    gap: 0.58rem 0.02rem;
  }

  .footer-menu li a,
  .footer-nav-widgets-wrapper .footer-top .footer-menu li > a {
    min-height: 5.3rem !important;

    padding-left: 0 !important;
    padding-right: 0 !important;

    font-size: var(--kl-font-size-fluid-150-170) !important;
    line-height: 1.06 !important;
    letter-spacing: 0.05em !important;
  }

  .footer-menu li a::after,
  .footer-nav-widgets-wrapper .footer-top .footer-menu li > a::after {
    bottom: 0.4em;
    height: 0.07em;
  }
}

/* ==================================================
   14-03 FOOTER-SCHRIFTEN / LINKS
================================================== */

/*
   Footer-Schriften
   --------------------------------------------------
   Diese Regeln betreffen die Widget-Inhalte unterhalb des Footer-Menüs,
   nicht das Footer-Menü selbst.
*/
.widget-content p,
.footer-widgets-wrapper h2,
.footer-copyright {
  color: var(--kl-color-white);
  margin-bottom: 0.1em;
  letter-spacing: 0.03em;
}

/*
   Widget-Überschriften
*/
.footer-widgets .widget .widget-title {
  color: var(--kl-color-white);

  font-size: var(--kl-font-size-em-140);
  letter-spacing: 0.02em;

  margin-top: 0;
  margin-bottom: 1rem;
}

/*
   Widget-Texte und Widget-Links
*/
.widget-content,
.widget-content a {
  font-size: var(--kl-font-size-em-090);
  letter-spacing: 0.055em;
  font-weight: normal;
}

/*
   Footer-Widget-Links
*/
.widget-content a {
  text-decoration: none;
}

.widget-content a:hover {
  text-decoration: underline;
  transition: opacity 0.5s linear;
}

/* ==================================================
   14-04 FOOTER-SPALTEN DESKTOP / TABLET
================================================== */

/*
   Footer-Spalten ab 700px
   --------------------------------------------------
   Ziel:
   - Bei drei Footer-Spalten gezielte Verteilung.
   - Spalte 1: Gästetelefon / Social Icons.
   - Spalte 2: Logo / Adresse.
   - Spalte 3: Spendenkonto / Spenden mit.
   - Die Spalten bleiben innerhalb der zentralen Footer-Breite.
   - Mobile Ansicht wird in 14-05 separat geregelt.
*/
@media (min-width: 700px) {
  .footer-widgets-wrapper {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0;
  }

  .footer-widgets-wrapper .footer-widgets {
    box-sizing: border-box;
    min-width: 0;
    margin-top: 0;
  }

  /*
     Spalte 1
  */
  .footer-widgets-wrapper .footer-widgets:nth-child(1) {
    width: calc(28% - 3.3rem);
    margin-left: 0;
    padding-left: 0;
  }

  /*
     Spalte 2
  */
  .footer-widgets-wrapper .footer-widgets:nth-child(2) {
    width: calc(34% - 3.3rem);
    margin-left: 2rem;
  }

  /*
     Spalte 3
  */
  .footer-widgets-wrapper .footer-widgets:nth-child(3) {
    width: calc(47% - 4.4rem);
    margin-left: 6rem;
  }

  /*
     Falls nur zwei Footer-Spalten vorhanden sind.
  */
  .footer-widgets-wrapper .footer-widgets:first-child:nth-last-child(2),
  .footer-widgets-wrapper .footer-widgets:first-child:nth-last-child(2) ~ .footer-widgets {
    width: calc(50% - 2rem);
  }

  .footer-widgets-wrapper .footer-widgets:first-child:nth-last-child(2) {
    margin-left: 0;
  }

  .footer-widgets-wrapper .footer-widgets:first-child:nth-last-child(2) + .footer-widgets {
    margin-left: 4rem;
  }
}

/*
   Footer-Spalte 2: Logo / Adresse
*/
.footer-widgets.column-two {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;

  text-align: center;
}

.footer-widgets.column-two .widget_media_image {
  max-width: min(34rem, 72%);
  position: relative;
}

.footer-widgets.column-two .widget_media_image:hover {
  opacity: 0.6;
  transition: opacity 0.3s linear;
}

.footer-widgets.column-two .widget_media_image img {
  margin-top: 0;
  padding-bottom: 0.5rem;
}

/*
   Footer-Spalte 3: Spendenbild Hover
*/
.footer-widgets.column-three .widget_media_image img:hover {
  opacity: 0.5;
  transition: opacity 0.3s linear;
  color: var(--kl-color-white);
}

/*
   Footer-Widget-Grundabstände
*/
.footer-widgets .widget {
  margin-top: 0;
  margin-bottom: 1.8rem;
}

.footer-widgets .widget:last-child {
  margin-bottom: 0;
}


/* ==================================================
   14-04-01 FOOTER-SPALTEN / ZWISCHENBREITEN & SMARTPHONE QUERFORMAT
================================================== */

/*
   Smartphone quer / kleine Tablets / schmale Zwischenbreiten
   --------------------------------------------------
   Problem:
   Geräte im Querformat oder schmale Tablet-/Customizer-Breiten sind
   oft breiter als 700px. Dadurch greift die Desktop-3-Spalten-Logik,
   obwohl praktisch zu wenig Platz für drei gleichzeitige Footer-Spalten
   vorhanden ist.

   Lösung:
   - Zwischen 701px und 1075px wird der Footer-Widgetbereich
     auf ein 2-spaltiges Grid umgestellt.
   - Spalte 1: Gästetelefon links, aber mit sauberem Außenabstand.
   - Spalte 2: KulturLeben-Logo + Adresse rechts.
   - Spalte 3: Spendenkonto darunter über beide Spalten mittig.
   - PayPal steht mittig unter "Spenden mit".
   - Social Icons beim Gästetelefon beginnen bündig mit dem Text.
   - Texte dürfen normal umbrechen.
*/
@media (max-width: 1075px) and (min-width: 701px) {
  .footer-widgets-wrapper {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    grid-template-areas:
      "phone address"
      "donate donate";

    width: calc(100% - 4.2rem);
    max-width: var(--kl-layout-width);

    margin-left: auto;
    margin-right: auto;

    gap: 2rem 3rem;

    align-items: start;
  }

  /*
     Alle Footer-Spalten aus der Desktop-3-Spalten-Logik lösen.
  */
  .footer-widgets-wrapper .footer-widgets {
    box-sizing: border-box;

    width: auto !important;
    max-width: 100%;
    min-width: 0;

    margin-left: 0 !important;
    margin-right: 0 !important;

    padding-left: 0;
    padding-right: 0;
  }

  /*
     Spalte 1: Gästetelefon links.
     Der Block bekommt bewusst wieder Abstand vom linken Rand.
  */
  .footer-widgets.column-one,
  .footer-widgets-wrapper .footer-widgets:nth-child(1) {
    grid-area: phone;

    justify-self: stretch;
    align-self: start;

    padding-left: 1.4rem;
    padding-right: 0;

    text-align: left;
  }

  .footer-widgets.column-one .widget,
  .footer-widgets.column-one .widget-content,
  .footer-widgets.column-one .textwidget,
  .footer-widgets.column-one p,
  .footer-widgets.column-one div,
  .footer-widgets.column-one h2 {
    text-align: left;
  }

  /*
     Gästetelefon-Textblock als optische Kante.
  */
  .footer-widgets.column-one .kl-footer-phone-main {
    text-align: left;
  }

  .footer-widgets.column-one .kl-footer-phone-main div {
    text-align: left;
  }

  /*
     Social Icons beim Gästetelefon linksbündig zum Textanfang.
     Wichtig:
     Das Plugin setzt am UL und an den Bildern Inline-Styles.
     Diese werden hier gezielt nur in Spalte 1 überstimmt.
  */
  .footer-widgets.column-one .widget_cnss_widget,
  .footer-widgets.column-one .widget_cnss_widget .widget-content {
    width: 100%;
    max-width: 100%;

    margin-left: 0 !important;
    margin-right: 0 !important;

    text-align: left !important;
  }

  .footer-widgets.column-one .cnss-social-icon {
    display: flex !important;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-start !important;

    width: 100%;

    margin-left: 0 !important;
    margin-right: 0 !important;

    padding-left: 0 !important;
    padding-right: 0 !important;

    text-align: left !important;
  }

  .footer-widgets.column-one .cnss-social-icon li {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;

    margin-left: 0 !important;
  }

  /*
     Sichtbaren Icon-Rand bündig ziehen:
     Die Bilder haben inline margin:5px.
     Links wird dieser Abstand entfernt, damit das Facebook-F optisch
     mit dem Textanfang darüber beginnt.
  */
  .footer-widgets.column-one .cnss-social-icon li:first-child img {
    margin-left: 0 !important;
  }

  .footer-widgets.column-one .cnss-social-icon img {
    margin-top: 5px !important;
    margin-right: 8px !important;
    margin-bottom: 5px !important;
  }

  /*
     Spalte 2: KulturLeben-Logo + Adresse rechts oben.
  */
  .footer-widgets.column-two,
  .footer-widgets-wrapper .footer-widgets:nth-child(2) {
    grid-area: address;

    justify-self: center;
    align-self: start;

    width: 100% !important;
    max-width: 46rem;

    margin-left: auto !important;
    margin-right: auto !important;

    text-align: center;
  }

  .footer-widgets.column-two .widget,
  .footer-widgets.column-two .widget-content,
  .footer-widgets.column-two .textwidget,
  .footer-widgets.column-two p,
  .footer-widgets.column-two div,
  .footer-widgets.column-two h2 {
    text-align: center;
  }

  .footer-widgets.column-two .widget_media_image {
    max-width: min(30rem, 82%);
    margin-left: auto;
    margin-right: auto;
  }

  .footer-widgets.column-two .widget_media_image a,
  .footer-widgets.column-two .widget_media_image img {
    display: block;

    margin-left: auto;
    margin-right: auto;
  }

  /*
     Spalte 3: Spendenkonto darunter über beide Spalten.
     Der komplette Spendenblock steht mittig.
  */
  .footer-widgets.column-three,
  .footer-widgets-wrapper .footer-widgets:nth-child(3) {
    grid-area: donate;

    justify-self: center;
    align-self: start;

    width: 100% !important;
    max-width: 68rem;

    margin-left: auto !important;
    margin-right: auto !important;

    text-align: center;
  }

  .footer-widgets.column-three .widget,
  .footer-widgets.column-three .widget-content,
  .footer-widgets.column-three .textwidget,
  .footer-widgets.column-three p,
  .footer-widgets.column-three div,
  .footer-widgets.column-three h2 {
    text-align: center;
  }

  /*
     PayPal / "Spenden mit" wirklich mittig.
     Das betrifft nur das Bild-Widget in Spalte 3.
  */
  .footer-widgets.column-three .widget_media_image {
    width: 100%;
    max-width: 100%;

    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    margin-left: auto;
    margin-right: auto;

    text-align: center;
  }

  .footer-widgets.column-three .widget_media_image .widget-content {
    width: 100%;

    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    margin-left: auto;
    margin-right: auto;

    text-align: center;
  }

  .footer-widgets.column-three .widget_media_image .widget-title {
    width: 100%;

    margin-left: auto;
    margin-right: auto;

    text-align: center;
  }

  .footer-widgets.column-three .widget_media_image a {
    display: inline-flex;

    margin-left: auto !important;
    margin-right: auto !important;

    align-items: center;
    justify-content: center;
  }

  .footer-widgets.column-three .widget_media_image img {
    display: block;

    margin-left: auto !important;
    margin-right: auto !important;
  }

  /*
     Texte in den Zwischenbreiten normal umbrechen lassen.
     Wichtig:
     Das betrifft nur Footer-Widgets, nicht das Footer-Menü oben.
  */
  .footer-widgets .widget-content,
  .footer-widgets .textwidget,
  .footer-widgets .widget-content p,
  .footer-widgets .widget-content div,
  .footer-widgets .widget-content span,
  .footer-widgets .widget-content strong,
  .footer-widgets .widget-content a {
    max-width: 100%;

    white-space: normal;
    overflow-wrap: break-word;
    word-break: normal;
    hyphens: auto;
  }

  /*
     Footer-Widget-Abstände in Zwischenbreiten kompakter halten.
  */
  .footer-widgets .widget {
    margin-top: 0;
    margin-bottom: 1.25rem;
  }

  .footer-widgets .widget:last-child {
    margin-bottom: 0;
  }
}

/*
   Obere Zwischenbreite
   --------------------------------------------------
   Bis 1075px ist das Layout grundsätzlich okay.
   Nur die Social-Icons werden bündig korrigiert.
*/
@media (max-width: 1075px) and (min-width: 1001px) {
  .footer-widgets-wrapper {
    width: calc(100% - 5rem);
    gap: 2.2rem 3.2rem;
  }

  .footer-widgets.column-one,
  .footer-widgets-wrapper .footer-widgets:nth-child(1) {
    padding-left: 1.2rem;
  }
}

/*
   Enge Zwischenbreiten / Smartphone quer
   --------------------------------------------------
   Unter 1000px wird der linke Abstand des Gästetelefons bewusst
   erhalten, aber etwas kompakter, damit rechts genug Platz bleibt.
*/
@media (max-width: 1000px) and (min-width: 701px) {
  .footer-widgets-wrapper {
    width: calc(100% - 3.2rem);
    gap: 1.8rem 2.2rem;
  }

  .footer-widgets.column-one,
  .footer-widgets-wrapper .footer-widgets:nth-child(1) {
    padding-left: 1rem;
  }

  .footer-widgets.column-two,
  .footer-widgets-wrapper .footer-widgets:nth-child(2) {
    max-width: 42rem;
  }

  .footer-widgets.column-three,
  .footer-widgets-wrapper .footer-widgets:nth-child(3) {
    max-width: 62rem;
  }
}

/* ==================================================
   14-05 FOOTER-INHALTE MOBIL
================================================== */

/*
   Footer-Inhalte mobil stabilisieren
   --------------------------------------------------
   Die Footer-Spalten werden gestapelt.
   Alle Inhalte stehen mittig und dürfen nicht seitlich ausbrechen.
*/
@media (max-width: 700px) {
  .footer-widgets-wrapper {
    width: calc(100% - 0.8rem);
    max-width: none;

    display: block;

    margin-left: auto;
    margin-right: auto;
  }

  .footer-widgets {
    width: 100%;
    max-width: 100%;

    margin-left: auto;
    margin-right: auto;

    box-sizing: border-box;
  }

  .footer-widgets.column-one,
  .footer-widgets.column-two,
  .footer-widgets.column-three {
    display: flex;
    flex-direction: column;
    align-items: center;

    text-align: center;
  }

  .footer-widgets .widget {
    width: 100%;
    max-width: 100%;

    margin-left: auto;
    margin-right: auto;

    text-align: center;
  }

  .footer-widgets .widget-content,
  .footer-widgets .textwidget,
  .footer-widgets .widget-content p,
  .footer-widgets .widget-content div,
  .footer-widgets-wrapper h2,
  .footer-widgets .widget .widget-title {
    text-align: center;
  }

  .widget-content,
  .widget-content a,
  .widget-content p,
  .footer-widgets-wrapper h2 {
    overflow-wrap: anywhere;
    word-break: normal;
  }

  /*
     Social Icons mobil mittig.
     Inline-Styles des Social-Icon-Plugins werden hier bewusst überstimmt.
  */
  .footer-widgets .cnss-social-icon {
    display: flex !important;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center !important;

    width: 100%;

    margin-left: auto !important;
    margin-right: auto !important;

    padding-left: 0 !important;
    padding-right: 0 !important;

    text-align: center !important;
  }

  .footer-widgets .cnss-social-icon li {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
  }

  /*
     Bilder / Logos mobil mittig.
  */
  .footer-widgets .widget_media_image,
  .footer-widgets.column-two .widget_media_image {
    max-width: min(26rem, 86%);
    margin-left: auto;
    margin-right: auto;
    text-align: center;
  }

  .footer-widgets .widget_media_image a,
  .footer-widgets .widget_media_image img,
  .footer-widgets.column-two .widget_media_image a,
  .footer-widgets.column-two .widget_media_image img {
    display: block;
    margin-left: auto;
    margin-right: auto;
  }

  /*
     Telefon-/Info-Blöcke mobil mittig.
  */
  .footer-widgets .kl-footer-phone-main {
    text-align: center;
  }

  .footer-widgets .kl-footer-phone-main div {
    text-align: center;
  }
}

/*
   Sehr kleine Footer-Inhalte
   --------------------------------------------------
   Auch die Widget-Inhalte bekommen auf sehr kleinen Displays
   etwas mehr nutzbare Breite.
*/
@media (max-width: 420px) {
  .footer-widgets-wrapper {
    width: calc(100% - 0.4rem);
  }
}

@media (max-width: 340px) {
  .footer-widgets-wrapper {
    width: 100%;
  }
}

/* ==================================================
   14-06 PARTNER-/FÖRDERER-/MITGLIED-LOGOS VOR DEM FOOTER
================================================== */

/*
   Partner-/Förderer-/Mitglied-/Kulturpartner-Logos
   --------------------------------------------------
   Diese Logos liegen NICHT in .footer-widgets, sondern in eigenen
   WordPress-/PostGrid-Blöcken oberhalb des Footers.

   Ziel:
   - Desktop bleibt ruhig und groß genug.
   - Tablet: 3 Logos nebeneinander.
   - Mobile: 2 Logos nebeneinander.
   - Logos werden kompakt, aber gut sichtbar dargestellt.
   - Keine dateinamen-spezifischen Sonderregeln.
   - Breite, hohe und quadratische Logos werden automatisch eingepasst.
   - Keine horizontalen Scrollbalken.
*/
:is(
  .home-culturpartner,
  .home-member,
  .home-funders,
  .home-sponsors,
  .home-awarded,
  .home-awards,
  .sponsors-block,
  .socialpartner-block,
  .wp-block-group:has(.partfordspon-head)
) {
  box-sizing: border-box;
  max-width: 100%;
  overflow-x: hidden;
}

:is(
  .home-culturpartner,
  .home-member,
  .home-funders,
  .home-sponsors,
  .home-awarded,
  .home-awards,
  .sponsors-block,
  .socialpartner-block,
  .wp-block-group:has(.partfordspon-head)
) .partfordspon-head {
  margin-top: 1.3rem !important;
  margin-bottom: 0.7rem !important;
}

:is(
  .home-culturpartner,
  .home-member,
  .home-funders,
  .home-sponsors,
  .home-awarded,
  .home-awards,
  .sponsors-block,
  .socialpartner-block,
  .wp-block-group:has(.partfordspon-head)
) .items-loop {
  box-sizing: border-box;

  display: grid !important;
  align-items: stretch;

  width: 100%;
  max-width: 100%;

  margin-left: 0;
  margin-right: 0;

  overflow-x: hidden;
}

:is(
  .home-culturpartner,
  .home-member,
  .home-funders,
  .home-sponsors,
  .home-awarded,
  .home-awards,
  .sponsors-block,
  .socialpartner-block,
  .wp-block-group:has(.partfordspon-head)
) .items-loop .item {
  box-sizing: border-box;

  display: flex;
  align-items: stretch;
  justify-content: center;

  width: 100%;
  max-width: 100%;

  margin: 0 !important;
  padding: 0 !important;

  overflow: hidden;
}

:is(
  .home-culturpartner,
  .home-member,
  .home-funders,
  .home-sponsors,
  .home-awarded,
  .home-awards,
  .sponsors-block,
  .socialpartner-block,
  .wp-block-group:has(.partfordspon-head)
) .partnersponsors-block,
:is(
  .home-culturpartner,
  .home-member,
  .home-funders,
  .home-sponsors,
  .home-awarded,
  .home-awards,
  .sponsors-block,
  .socialpartner-block,
  .wp-block-group:has(.partfordspon-head)
) .partnersponsors-block .wp-block-group__inner-container {
  box-sizing: border-box;

  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;

  width: 100%;
  max-width: 100%;

  margin: 0 !important;
  padding: 0 !important;
}

:is(
  .home-culturpartner,
  .home-member,
  .home-funders,
  .home-sponsors,
  .home-awarded,
  .home-awards,
  .sponsors-block,
  .socialpartner-block,
  .wp-block-group:has(.partfordspon-head)
) .pg8df80e2459eb {
  box-sizing: border-box;

  display: flex;
  align-items: center;
  justify-content: center;

  width: 100%;
  max-width: 100%;

  margin: 0 !important;
  padding: 0 !important;

  overflow: hidden;
}

:is(
  .home-culturpartner,
  .home-member,
  .home-funders,
  .home-sponsors,
  .home-awarded,
  .home-awards,
  .sponsors-block,
  .socialpartner-block,
  .wp-block-group:has(.partfordspon-head)
) .pg8df80e2459eb img {
  display: block;

  width: auto !important;
  max-width: 92% !important;

  height: auto !important;
  max-height: 100% !important;

  object-fit: contain;
  object-position: center center;

  margin: 0 auto !important;
  padding: 0 !important;
}

:is(
  .home-culturpartner,
  .home-member,
  .home-funders,
  .home-sponsors,
  .home-awarded,
  .home-awards,
  .sponsors-block,
  .socialpartner-block,
  .wp-block-group:has(.partfordspon-head)
) .pg22d6718b25d4 {
  box-sizing: border-box;

  width: 100%;
  max-width: 100%;

  margin-top: 0.75rem !important;
  margin-bottom: 0 !important;

  padding-left: 0.3rem;
  padding-right: 0.3rem;

  text-align: center;
  overflow-wrap: anywhere;
  word-break: normal;
}

/*
   Partnerlogos Desktop
*/
@media (min-width: 1001px) {
  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .items-loop {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 1.6rem 2rem;
  }

  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .items-loop .item,
  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .partnersponsors-block {
    min-height: 12.5rem;
  }

  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .pg8df80e2459eb {
    height: 9.5rem;
  }

  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .pg8df80e2459eb img {
    max-height: 9.5rem !important;
  }
}

/*
   Partnerlogos Tablet
*/
@media (max-width: 1000px) and (min-width: 701px) {
  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .items-loop {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 1rem 0.8rem;
  }

  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .items-loop .item,
  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .partnersponsors-block {
    min-height: 10rem;
  }

  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .pg8df80e2459eb {
    height: 7.2rem;
  }

  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .pg8df80e2459eb img {
    max-height: 7.2rem !important;
  }
}

/*
   Partnerlogos Mobile
*/
@media (max-width: 700px) {
  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) {
    width: calc(100% - 0.8rem);
    max-width: none;

    margin-left: auto !important;
    margin-right: auto !important;
  }

  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .items-loop {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 0.55rem 0.45rem;

    width: 100%;
    max-width: 100%;
  }

  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .items-loop .item,
  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .partnersponsors-block {
    min-height: 8.4rem;
  }

  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .pg8df80e2459eb {
    height: 6.2rem;
  }

  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .pg8df80e2459eb img {
    max-height: 6.2rem !important;
    max-width: 94% !important;
  }
}

/*
   Partnerlogos sehr kleine Displays
*/
@media (max-width: 420px) {
  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) {
    width: calc(100% - 0.4rem);
  }

  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .items-loop {
    gap: 0.45rem 0.3rem;
  }

  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .items-loop .item,
  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .partnersponsors-block {
    min-height: 7.8rem;
  }

  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .pg8df80e2459eb {
    height: 5.8rem;
  }

  :is(
    .home-culturpartner,
    .home-member,
    .home-funders,
    .home-sponsors,
    .home-awarded,
    .home-awards,
    .sponsors-block,
    .socialpartner-block,
    .wp-block-group:has(.partfordspon-head)
  ) .pg8df80e2459eb img {
    max-height: 5.8rem !important;
    max-width: 96% !important;
  }
}

/* ==================================================
   14-07 COPYRIGHT / NACH OBEN / WORDPRESS-BILDBLÖCKE
================================================== */

/*
   Copyright
*/
.footer-copyright {
  color: var(--kl-color-white);
  font-size: var(--kl-font-size-em-092);
  letter-spacing: 0.01em;
  font-weight: normal;
}

/*
   Nach oben
*/
.to-the-top {
  padding-right: 1.5%;
  color: var(--kl-color-white);
}

/*
   Allgemeine Abschnittsbreite
   --------------------------------------------------
   Bestehende globale Regel bleibt erhalten.
*/
.section-inner {
  max-width: 100rem;
}

/*
   WordPress-Bildblöcke
   --------------------------------------------------
   Das Theme setzt für normale WordPress-Blöcke standardmäßig
   sehr große Abstände oben und unten.
   Für einzelne Bilder wird der Abstand hier reduziert.
*/
.wp-block-image:not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright):not(.aligncenter) {
  margin-top: 1.5rem !important;
  margin-bottom: 1.5rem !important;
}

/*
   Zentrierte Bilder
   --------------------------------------------------
   Bilder mit innerem aligncenter-Figure, wie z. B.:
   <div class="wp-block-image">
     <figure class="aligncenter ...">
   bekommen ebenfalls einen reduzierten Außenabstand.
*/
.wp-block-image figure.aligncenter {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* ==================================================
   15 ALLGEMEINE SEITEN
================================================== */

/* Sitemap - linker Seitenrand */
.ddsg-wrapper {
  padding-left: 2rem;
}

/* ==================================================
   15-01 MOBILE / TABLET SEITENINHALTE / RAND-SICHERUNG
================================================== */

/*
   Mobile / Tablet Seiteninhalte / Rand-Sicherung
   --------------------------------------------------
   Dieser Fix basiert direkt auf Maltes funktionierendem Test:

   [class*="__inner-container"] > *:not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright) {
     margin-left: 1rem;
     margin-right: 1rem;
   }

   Wichtig:
   Die vorherige Version mit stärkerer .entry-content-Kapselung
   hat nicht zuverlässig gegriffen. Deshalb wird hier bewusst wieder
   der funktionierende Selektor verwendet.

   Der Fix gilt bis 1000px, damit der Rand nicht nur in der kleinsten
   Smartphone-Ansicht vorhanden ist, sondern auch in Zwischenbreiten
   und Tablet-Ansichten.
*/
@media (max-width: 1000px) {
  [class*="__inner-container"] > *:not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright) {
    box-sizing: border-box !important;
    margin-left: 1rem !important;
    margin-right: 1rem !important;
    max-width: calc(100% - 2rem) !important;
  }

  /*
     Direkte Inhalte in .entry-content zusätzlich absichern.
     Das betrifft einzelne Absätze oder Blöcke, die nicht in einem
     __inner-container liegen.
  */
  .entry-content > *:not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright) {
    box-sizing: border-box !important;
    margin-left: 1rem !important;
    margin-right: 1rem !important;
    max-width: calc(100% - 2rem) !important;
  }

  /*
     Farbige Überschriftenleisten wieder auf volle Breite setzen.
     Ohne diese Ausnahme würden .braun-head und .magenta-head ebenfalls
     eingerückt werden.

     Gewünscht:
     - Überschriftenleisten bleiben breit/flächig
     - normaler Text darunter bekommt Abstand
  */
  [class*="__inner-container"] > .magenta-head,
  [class*="__inner-container"] > .braun-head,
  [class*="__inner-container"] > h2.wp-block-heading.magenta-head,
  [class*="__inner-container"] > h2.wp-block-heading.braun-head,
  [class*="__inner-container"] > h2.wp-block-heading.magenta-head-no-background,
  .entry-content > .magenta-head,
  .entry-content > .braun-head,
  .entry-content > h2.wp-block-heading.magenta-head,
  .entry-content > h2.wp-block-heading.braun-head,
  .entry-content > h2.wp-block-heading.magenta-head-no-background {
    box-sizing: border-box !important;

    width: 100% !important;
    max-width: 100% !important;

    margin-left: 0 !important;
    margin-right: 0 !important;

    padding-left: 1.2rem !important;
    padding-right: 1.2rem !important;

    overflow-wrap: anywhere;
    word-break: normal;
  }

  /*
     Lange Links, Dateinamen und Begriffe umbrechen.
  */
  .entry-content p,
  .entry-content li,
  .entry-content a,
  .entry-content span,
  .entry-content div {
    overflow-wrap: anywhere;
    word-break: normal;
  }

  /*
     Horizontales Überlaufen vermeiden.
  */
  html,
  body,
  #site-content,
  .entry-content {
    overflow-x: hidden;
  }

  /*
     Bilder und Tabellen absichern.
  */
  .entry-content img,
  .entry-content figure,
  .entry-content .wp-block-image {
    max-width: 100%;
    height: auto;
    box-sizing: border-box;
  }

  .entry-content table,
  .entry-content pre,
  .entry-content code {
    max-width: 100%;
  }

  .entry-content table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/*
   Zusätzliche Feinanpassung für sehr kleine Displays
   --------------------------------------------------
   Auf Smartphones bleiben die Überschriftenleisten etwas kleiner,
   damit lange Überschriften nicht zu wuchtig werden.
*/
@media (max-width: 700px) {
  .magenta-head,
  .braun-head {
    font-size: var(--kl-font-size-em-165);
    line-height: 1.18;
  }

  .entry-content ul,
  .entry-content ol {
    padding-left: 2.6rem !important;
  }
}

/* ==================================================
   15-02 EINZELANSICHT NEWS / TITEL + BEITRAGSBILD
================================================== */

/*
   Einzelansicht für News-Beiträge
   --------------------------------------------------
   Gilt für einzelne News-/Beitragsdetailseiten mit:
   <article class="... news type-news ...">

   Ziel:
   - Überschrift zuerst, linksbündig an der 100rem-Layoutkante
   - darunter Beitragsbild mittig im Layout
   - normales WordPress-Veröffentlichungsdatum wird nicht angezeigt
   - darunter Beitragstext mit ruhigem Abstand zum Bild
   - Beitragstext selbst wird NICHT neu formatiert
*/
article.type-news {
  display: flex;
  flex-direction: column;
}

/*
   Header optisch auflösen, damit Titel, Bild und Inhalt
   sauber in der gewünschten Reihenfolge erscheinen können.
*/
article.type-news > .entry-header,
article.type-news > .entry-header > .entry-header-inner {
  display: contents;
}

/*
   1. Überschrift
   --------------------------------------------------
   Die Überschrift steht linksbündig an der allgemeinen 100rem-Vorgabe.
*/
article.type-news .entry-title {
  order: 1;

  box-sizing: border-box;

  max-width: var(--kl-layout-width);
  width: calc(100% - (var(--kl-layout-side-gap) * 2));

  margin: 3rem auto 2rem !important;
  padding: 0 !important;

  text-align: left;
}

/*
   2. Beitragsbild / Featured Media
   --------------------------------------------------
   Der äußere Figure-Block läuft neutral.
   Der innere Bildcontainer sitzt mittig in der 100rem-Layoutbreite.
   Unter dem Bild bleibt ein ruhiger Abstand zum Beitragstext.
*/
article.type-news > .featured-media {
  order: 2;

  display: block;

  width: 100% !important;
  max-width: none !important;

  margin: 0 0 2.2rem !important;
  padding: 0 !important;

  background: transparent !important;

  position: relative;
  left: auto !important;
  right: auto !important;
  transform: none !important;
}

article.type-news > .featured-media::before,
article.type-news > .featured-media::after {
  content: none !important;
  display: none !important;
}

/*
   Innerer Bildcontainer
   --------------------------------------------------
   Hier wird das Bild wirklich mittig gesetzt.
*/
article.type-news .featured-media-inner {
  box-sizing: border-box;

  max-width: var(--kl-layout-width) !important;
  width: calc(100% - (var(--kl-layout-side-gap) * 2)) !important;

  margin-left: auto !important;
  margin-right: auto !important;

  padding: 0 !important;

  background: transparent !important;

  position: relative !important;
  left: auto !important;
  right: auto !important;
  transform: none !important;
}

/*
   Beitragsbild selbst
   --------------------------------------------------
   Das Bild füllt den mittigen Bildcontainer.
   Rundung, Rahmen und Schatten bleiben erhalten.
*/
article.type-news .featured-media img,
article.type-news .featured-media .wp-post-image {
  display: block;

  width: 100% !important;
  max-width: 100% !important;
  height: auto !important;

  margin: 0 auto !important;

  border: 2px solid var(--kl-color-brown);
  border-radius: 25px;
  box-shadow: 0 4px 10px var(--kl-alpha-shadow-012);

  object-fit: contain;
  object-position: center center;

  position: static !important;
  left: auto !important;
  right: auto !important;
  transform: none !important;
}

/*
   3. Veröffentlichungsdatum ausblenden
   --------------------------------------------------
   Das normale WordPress-Veröffentlichungsdatum wird auf
   News-Einzelseiten nicht mehr angezeigt.

   Wichtig:
   Fachliche Datumsangaben im Beitragstext bleiben sichtbar,
   z. B. Veranstaltungstag, Zeitraum oder Projektlaufzeit.
*/
article.type-news .post-meta-wrapper.post-meta-single-top,
article.type-news .post-meta-wrapper.post-meta-single,
article.type-news .post-meta .post-date {
  display: none !important;

  width: 0 !important;
  height: 0 !important;

  margin: 0 !important;
  padding: 0 !important;

  overflow: hidden !important;
}

/*
   4. Beitragstext
   --------------------------------------------------
   Der Beitragstext soll nach Titel und Bild kommen.

   Wichtig:
   Der Beitragstext wird hier NICHT optisch neu formatiert.
   WordPress/TwentyTwenty behält seine normale Textformatierung.
*/
article.type-news > .post-inner {
  order: 4;
}

/*
   Nachgelagerte Bereiche bleiben nach dem Beitragstext.
*/
article.type-news > .section-inner {
  order: 5;
}

article.type-news > .pagination-single {
  order: 6;
}

/*
   Tablet und Mobile
*/
@media (max-width: 900px) {
  article.type-news .entry-title {
    margin-top: 2.2rem !important;
    margin-bottom: 1.4rem !important;
  }

  article.type-news > .featured-media {
    margin-bottom: 1.8rem !important;
  }

  article.type-news .featured-media img,
  article.type-news .featured-media .wp-post-image {
    border-radius: 18px;
  }
}

@media (max-width: 480px) {
  article.type-news .entry-title,
  article.type-news .featured-media-inner {
    width: calc(100% - 4rem) !important;
  }

  article.type-news > .featured-media {
    margin-bottom: 1.6rem !important;
  }

  article.type-news .featured-media img,
  article.type-news .featured-media .wp-post-image {
    border-radius: 16px;
  }
}

/* ==================================================
   16 TEAM
================================================== */

/*
   Team-Grid / Team-Übersicht
   --------------------------------------------------
   Gilt gezielt für die Team-PostGrid-Übersicht:
   - Grid passt zur 100rem-Seitenbreite.
   - Karten orientieren sich optisch am Seitenlayout.
   - Bilder behalten in allen Ansichten ein einheitliches Format.
   - Bilder bleiben randlos und ohne helle Innenflächen.
   - In schmalen Ansichten sitzt die einzelne Karte sauber mittig.
   - Schriftgrößen passen sich an die jeweilige Kachelbreite an.
   - Namen, Tätigkeit, Telefon und E-Mail sind sauber gegliedert.
   - lange E-Mail-Adressen umbrechen, ohne die Karte zu sprengen.

   Wichtig:
   Die Bildhöhe wird nicht fest in rem gesetzt.
   Stattdessen steuert aspect-ratio das Format.
   Dadurch wächst das Bild proportional mit der Kartenbreite:
   - Desktop: 3 Spalten
   - Tablet: 2 Spalten
   - Smartphone: 1 Spalte

   Für die Schriftgrößen nutzt die Teamkarte Container Queries.
   Dadurch orientieren sich Name, Info und Kontakt nicht an der
   gesamten Bildschirmbreite, sondern an der tatsächlichen Breite
   der jeweiligen Team-Kachel.
*/

/* ==================================================
   16-01 TEAM-GRID / AUSSENLAYOUT
================================================== */

/*
   Team-PostGrid-Außenwrapper
   --------------------------------------------------
   Der äußere PostGrid-Block .pg66bcd41cea47 wird von allgemeinen
   WordPress-/Theme-Regeln teilweise auf 58rem oder mobile Sonderbreiten
   begrenzt.

   Diese gezielte Regel hebt das für die Teamübersicht auf.

   Wichtig:
   Das Team-Layout nutzt bewusst Flexbox statt CSS-Grid.
   Dadurch können einzelne Karten in der letzten Reihe sauber mittig
   stehen und freie Zwischenräume gleichmäßig genutzt werden.
*/
.entry-content .pg66bcd41cea47.PGBlockPostGrid,
.entry-content [class*="__inner-container"] > .pg66bcd41cea47.PGBlockPostGrid {
  box-sizing: border-box;

  width: 100% !important;
  max-width: var(--kl-layout-width) !important;

  margin-left: auto !important;
  margin-right: auto !important;
}

/*
   Eigentliches Team-Layout

   Flexbox statt Grid:
   - 3 Karten passen sauber nebeneinander.
   - Wenn in der letzten Reihe nur 1 oder 2 Karten stehen,
     werden sie mittig ausgerichtet.
   - align-items: stretch sorgt dafür, dass Karten innerhalb
     einer Reihe gleich hoch werden.
*/
#items-loop-pg66bcd41cea47 {
  display: flex !important;
  flex-wrap: wrap;
  justify-content: center;
  align-items: stretch;

  gap: 2.4rem;

  box-sizing: border-box;
  max-width: var(--kl-layout-width);
  width: 100%;

  margin-left: auto;
  margin-right: auto;
}

/*
   Desktop: 3 Karten pro Reihe

   Die Karten bekommen dieselbe Breite und werden innerhalb
   der Reihe auf gleiche Höhe gestreckt.
*/
#items-loop-pg66bcd41cea47 .item.mix {
  flex: 0 1 calc((100% - 4.8rem) / 3);
  width: calc((100% - 4.8rem) / 3);
  max-width: calc((100% - 4.8rem) / 3);
}

/* ==================================================
   16-02 TEAM-KARTEN / GRUNDSTRUKTUR
================================================== */

/*
   Einzelne Team-Karte
   --------------------------------------------------
   Die Karte erhält eine ruhige, helle Fläche passend zum Seitenlayout.

   Wichtig:
   - display:flex und align-self:stretch sorgen dafür, dass Karten
     innerhalb einer Reihe gleich hoch sind.
   - min-height verhindert, dass Karten mit weniger Inhalt sichtbar
     kürzer werden.
   - height:auto ist bewusst gesetzt, damit längerer Inhalt die Karte
     bei Bedarf wachsen lassen kann.
*/
#items-loop-pg66bcd41cea47 .item.mix {
  box-sizing: border-box;
  display: flex !important;
  flex-direction: column;

  container-type: inline-size;

  min-width: 0;
  height: auto;
  min-height: 54rem;

  align-self: stretch;

  margin-left: 0 !important;
  margin-right: 0 !important;

  border: 2px solid var(--kl-color-brown);
  border-radius: 25px;
  background-color: var(--kl-color-surface-card);
  box-shadow: 0 4px 8px var(--kl-alpha-shadow-010);

  overflow: hidden;
}

/*
   Leere Absätze am Kartenende
   --------------------------------------------------
   PostGrid hängt teilweise leere <p>-Elemente an.
   Diese sollen keine zusätzliche Höhe erzeugen.
*/
#items-loop-pg66bcd41cea47 .item.mix > p.wp-block-paragraph:empty {
  display: none;
  margin: 0 !important;
  padding: 0 !important;
}

/*
   Innerer Team-Block
   --------------------------------------------------
   Der innere Block füllt die komplette Kartenhöhe.
   Dadurch bleiben Bild, Name, Info und Kontakt sauber innerhalb
   gleich hoher Karten angeordnet.
*/
#items-loop-pg66bcd41cea47 .team-block,
#items-loop-pg66bcd41cea47 .team-block > .wp-block-group__inner-container {
  display: flex !important;
  flex-direction: column;
  flex: 1 1 auto;

  min-height: 100%;
  height: 100%;

  box-sizing: border-box;
  max-width: none !important;
  width: 100%;

  margin: 0 !important;
  padding: 0 !important;
}

/* ==================================================
   16-03 TEAM-BILDER
================================================== */

/*
   Team-Bildbereich
   --------------------------------------------------
   Das Bild füllt die Breite der Karte bündig aus.

   Wichtig:
   Kein padding im Bildbereich.
   Kein object-fit: contain.
   Kein heller Innenrand.

   Stattdessen:
   - object-fit: cover
   - kontrollierter Bildausschnitt über object-position
   - gleichmäßige Bildfläche über aspect-ratio
*/
#items-loop-pg66bcd41cea47 .team-block .pg34109fc44c7b {
  width: 100%;
  max-width: 100%;

  aspect-ratio: 1.12 / 1;

  margin: 0;
  padding: 0;

  overflow: hidden;
  flex-shrink: 0;

  background-color: transparent;
}

/*
   Team-Bilder
   --------------------------------------------------
   Das Bild füllt den Bildbereich vollständig.
   object-position sitzt etwas unterhalb von "top", damit Porträts
   ruhiger wirken und nicht zu hart am oberen Rand kleben.
*/
#items-loop-pg66bcd41cea47 .team-block .pg34109fc44c7b img {
  display: block;

  width: 100% !important;
  height: 100% !important;
  max-width: 100%;

  object-fit: cover;
  object-position: center 18%;

  margin: 0 !important;
  padding: 0 !important;

  border-radius: 23px 23px 0 0;
}

/* ==================================================
   16-04 NAME
================================================== */

/*
   Name
   --------------------------------------------------
   Der Name steht direkt unter dem Bild.
   Der Abstand zur Tätigkeit ist bewusst kompakt.
*/
#items-loop-pg66bcd41cea47 .team-name {
  margin: 0 !important;
  padding: clamp(0.9rem, 3.2cqw, 1.2rem) clamp(1.2rem, 4.2cqw, 1.6rem) 0.15rem;
}

#items-loop-pg66bcd41cea47 .team-name > .wp-block-group__inner-container {
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

#items-loop-pg66bcd41cea47 .team-name h2 {
  display: flex;
  align-items: flex-start;

  min-height: 3rem;

  margin: 0 !important;

  color: var(--kl-color-text);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-card-title-fluid-small);
  line-height: 1.18;
  letter-spacing: 0.02em;
  text-align: left;
}

/* ==================================================
   16-05 TEAM-INFOS / TÄTIGKEIT
================================================== */

/*
   Info-Bereich
   --------------------------------------------------
   Tätigkeit, Telefon und E-Mail werden kompakt dargestellt.
   Der Abstand direkt unter dem Namen ist reduziert.

   Die Schriftgröße reagiert auf die Breite der Team-Kachel.
*/
#items-loop-pg66bcd41cea47 .team-info {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;

  margin: 0 !important;
  padding: 0.15rem clamp(1.2rem, 4.2cqw, 1.6rem) clamp(1.15rem, 4cqw, 1.45rem);

  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-fluid-145-180);
  line-height: 1.4;
}

#items-loop-pg66bcd41cea47 .team-info > .wp-block-group__inner-container {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;

  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

/*
   Tätigkeit
   --------------------------------------------------
   Der Tätigkeitsbereich ist bewusst auf 3 Zeilen geplant.
   Der Abstand zum Telefonbereich ist kompakter als vorher.
*/
#items-loop-pg66bcd41cea47 .pgff6de10e7d4a {
  min-height: calc(3 * 1.4em + 1.65rem);
  margin: 0 0 0.45rem;
}

/*
   Tätigkeit: Titel
*/
#items-loop-pg66bcd41cea47 .team-department-titel {
  margin-bottom: 0.1rem;

  font-family: var(--kl-font-bold) !important;
  font-weight: bold;
  font-size: var(--kl-font-size-fluid-145-180);
  color: var(--kl-color-text);
}

/*
   Tätigkeit: Text
   --------------------------------------------------
   Der Tätigkeitstext wird auf maximal 3 Zeilen begrenzt.
   Längere Texte werden abgeschnitten, damit die Karten
   optisch gleichmäßig bleiben.
*/
#items-loop-pg66bcd41cea47 .team-department {
  height: calc(3 * 1.4em);
  min-height: calc(3 * 1.4em);

  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;

  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-fluid-145-180);
  line-height: 1.4;
  color: var(--kl-color-text);
}

/* ==================================================
   16-06 KONTAKT / TELEFON / E-MAIL
================================================== */

/*
   Kontaktbereiche: Telefon und E-Mail
   --------------------------------------------------
   Telefon und E-Mail nutzen in der Ausgabe dieselbe Klasse.
   Deshalb wird die Klasse allgemein als Kontaktzeile behandelt.

   Wichtig:
   Kein margin-top:auto mehr — dadurch rücken Telefon und E-Mail
   näher an die Tätigkeit.
*/
#items-loop-pg66bcd41cea47 .pg74664ec03d42 {
  margin-top: 0.35rem;
  padding-top: 0;
  font-size: var(--kl-font-size-fluid-145-180);
}

/*
   Abstand zwischen Telefon und E-Mail
   --------------------------------------------------
   Wenn zwei Kontaktzeilen aufeinander folgen,
   bleibt der Abstand klein und gleichmäßig.
*/
#items-loop-pg66bcd41cea47 .pg74664ec03d42 + .pg74664ec03d42 {
  margin-top: 0.35rem;
}

/*
   Leere Kontaktzeilen ausblenden
   --------------------------------------------------
   Falls bei Telefon kein Wert vorhanden ist, gibt PostGrid aktuell
   trotzdem einen leeren Link aus. Diese komplette Kontaktzeile wird
   ausgeblendet, damit keine leeren "Telefon:"-Blöcke sichtbar bleiben.
*/
#items-loop-pg66bcd41cea47 .pg74664ec03d42:has(a[href="mailto:"]:empty),
#items-loop-pg66bcd41cea47 .pg74664ec03d42:has(a[href="tel:"]:empty) {
  display: none;
}

/*
   Zusätzliche Sicherheit:
   Falls ein leerer Link nur Leerraum enthält, wird der Link selbst
   unsichtbar gemacht.
*/
#items-loop-pg66bcd41cea47 .pg74664ec03d42 a[href="mailto:"],
#items-loop-pg66bcd41cea47 .pg74664ec03d42 a[href="tel:"] {
  display: none !important;
}

/*
   Kontakt-Titel
   --------------------------------------------------
   Gilt für Telefon und E-Mail, da beide aktuell dieselbe Titelklasse nutzen.
*/
#items-loop-pg66bcd41cea47 .team-contact-email-titel {
  margin-bottom: 0.1rem;

  font-family: var(--kl-font-bold) !important;
  font-weight: bold;
  font-size: var(--kl-font-size-fluid-145-180);
  color: var(--kl-color-text);
}

/*
   Kontakt-Link
   --------------------------------------------------
   Gilt für Telefon und E-Mail, da beide aktuell dieselbe Linkklasse nutzen.
   Lange E-Mail-Adressen dürfen umbrechen.
*/
#items-loop-pg66bcd41cea47 .team-contact-email {
  color: var(--kl-color-magenta);
  text-decoration: underline;
  text-decoration-color: var(--kl-color-magenta);

  font-size: var(--kl-font-size-fluid-145-180);

  overflow-wrap: anywhere;
  word-break: break-word;
}

/*
   Kontakt-Link Hover/Fokus
*/
#items-loop-pg66bcd41cea47 .team-contact-email:hover,
#items-loop-pg66bcd41cea47 .team-contact-email:focus {
  color: var(--kl-color-text);
  text-decoration-color: var(--kl-color-text);
}

/* ==================================================
   16-07 ALTE TEAM-REGELN / ALLGEMEINE TEAM-BEREICHE
================================================== */

/*
   Alte Team-Regeln / allgemeine Team-Bereiche
   --------------------------------------------------
   Diese bestehenden Klassen bleiben erhalten, werden aber so gesetzt,
   dass sie das neue Team-Grid nicht stören.
*/
.team-bufdi-block {
  padding-top: 2em;
}

.team-typ-titel {
  color: var(--kl-color-text);
  text-align: left;
  font-size: var(--kl-font-size-em-180);
  border-bottom: 0.2rem solid var(--kl-color-brown);
}

.team-directors-block div,
.team-worker-block div,
.team-bufdi-block div {
  max-width: none !important;
  font-family: var(--kl-font-main);
}

.team-department-titel,
.team-contact-tel-titel,
.team-location-titel,
.team-contact-email-titel,
.team-description-titel {
  font-weight: bold;
}

.team-contact-email {
  text-decoration-color: var(--kl-color-magenta);
}

.team-stars-block div {
  min-width: 15em;
}

/* ==================================================
   16-08 RESPONSIVE / BILDAUSSCHNITT UND MOBILE KANTE
================================================== */

/*
   Tablet / schmale Desktop-Ansicht
   --------------------------------------------------
   Von 1299px bis 1060px: 2 Karten pro Reihe.

   Durch justify-content:center im Flex-Container steht eine einzelne
   Karte in der letzten Reihe automatisch mittig.

   align-items:stretch und min-height sorgen dafür, dass Karten in
   einer Reihe gleich hoch bleiben.
*/
@media (max-width: 1299px) and (min-width: 1060px) {
  .entry-content .pg66bcd41cea47.PGBlockPostGrid,
  .entry-content [class*="__inner-container"] > .pg66bcd41cea47.PGBlockPostGrid {
    width: 100% !important;
    max-width: var(--kl-layout-width) !important;

    margin-left: auto !important;
    margin-right: auto !important;

    padding-left: 0 !important;
    padding-right: 0 !important;

    box-sizing: border-box !important;
  }

  #items-loop-pg66bcd41cea47 {
    display: flex !important;
    flex-wrap: wrap;
    justify-content: center;
    align-items: stretch;

    gap: 2.2rem !important;

    width: 100% !important;
    max-width: var(--kl-layout-width) !important;

    margin-left: auto !important;
    margin-right: auto !important;

    padding-left: 0 !important;
    padding-right: 0 !important;

    box-sizing: border-box !important;
  }

  #items-loop-pg66bcd41cea47 .item.mix {
    flex: 0 1 calc((100% - 2.2rem) / 2) !important;
    width: calc((100% - 2.2rem) / 2) !important;
    max-width: calc((100% - 2.2rem) / 2) !important;

    min-height: 58rem;

    align-self: stretch;

    margin-left: 0 !important;
    margin-right: 0 !important;

    box-sizing: border-box !important;
  }

  #items-loop-pg66bcd41cea47 .team-block,
  #items-loop-pg66bcd41cea47 .team-block > .wp-block-group__inner-container {
    height: 100%;
    min-height: 100%;
  }

  #items-loop-pg66bcd41cea47 .team-block .pg34109fc44c7b {
    aspect-ratio: 1.12 / 1 !important;
  }

  #items-loop-pg66bcd41cea47 .team-block .pg34109fc44c7b img {
    object-fit: cover !important;
    object-position: center 18% !important;
    padding: 0 !important;
  }
}

/*
   Einzelansicht
   --------------------------------------------------
   Ab 1059px und kleiner wird das Team einspaltig.

   Wichtig:
   Die Mitarbeiterkarte bekommt eine maximale Breite und wird
   über den Flex-Container sauber mittig ausgerichtet.
*/
@media (max-width: 1059px) {
  .entry-content .pg66bcd41cea47.PGBlockPostGrid,
  .entry-content [class*="__inner-container"] > .pg66bcd41cea47.PGBlockPostGrid {
    width: min(42rem, calc(100% - 2rem)) !important;
    max-width: min(42rem, calc(100% - 2rem)) !important;

    margin-left: auto !important;
    margin-right: auto !important;

    padding-left: 0 !important;
    padding-right: 0 !important;

    box-sizing: border-box !important;
  }

  #items-loop-pg66bcd41cea47 {
    display: flex !important;
    flex-wrap: wrap;
    justify-content: center;
    align-items: stretch;

    gap: 1.8rem !important;

    width: 100% !important;
    max-width: 42rem !important;

    margin-left: auto !important;
    margin-right: auto !important;

    padding-left: 0 !important;
    padding-right: 0 !important;

    box-sizing: border-box !important;
  }

  #items-loop-pg66bcd41cea47 .item.mix {
    flex: 0 1 42rem !important;
    width: 100% !important;
    max-width: 42rem !important;

    min-height: 56rem;

    align-self: stretch;

    margin-left: auto !important;
    margin-right: auto !important;

    box-sizing: border-box !important;
  }

  #items-loop-pg66bcd41cea47 .team-block,
  #items-loop-pg66bcd41cea47 .team-block > .wp-block-group__inner-container {
    height: 100%;
    min-height: 100%;
  }

  #items-loop-pg66bcd41cea47 .team-block .pg34109fc44c7b {
    width: 100% !important;
    max-width: 100% !important;

    aspect-ratio: 4 / 3 !important;

    margin: 0 !important;
    padding: 0 !important;

    overflow: hidden !important;
    box-sizing: border-box !important;
  }

  #items-loop-pg66bcd41cea47 .team-block .pg34109fc44c7b img {
    display: block !important;

    width: 100% !important;
    height: 100% !important;
    max-width: 100% !important;

    object-fit: cover !important;
    object-position: center 18% !important;

    margin: 0 !important;
    padding: 0 !important;
  }

  #items-loop-pg66bcd41cea47 .team-name h2 {
    min-height: 0;
  }

  #items-loop-pg66bcd41cea47 .pgff6de10e7d4a {
    min-height: calc(3 * 1.4em + 1.65rem);
    margin-bottom: 0.45rem;
  }
}

/*
   Sehr kleine Displays
   --------------------------------------------------
   Gleiche Einspaltenlogik, aber mit kleinerer Kartenrundung.
*/
@media (max-width: 480px) {
  .entry-content .pg66bcd41cea47.PGBlockPostGrid,
  .entry-content [class*="__inner-container"] > .pg66bcd41cea47.PGBlockPostGrid,
  #items-loop-pg66bcd41cea47 {
    width: min(42rem, calc(100% - 2rem)) !important;
    max-width: min(42rem, calc(100% - 2rem)) !important;

    margin-left: auto !important;
    margin-right: auto !important;

    box-sizing: border-box !important;
  }

  #items-loop-pg66bcd41cea47 .item.mix {
    flex: 0 1 42rem !important;
    width: 100% !important;
    max-width: 42rem !important;

    min-height: 56rem;

    margin-left: auto !important;
    margin-right: auto !important;

    border-radius: 18px !important;
  }

  #items-loop-pg66bcd41cea47 .team-block .pg34109fc44c7b {
    aspect-ratio: 4 / 3 !important;
  }

  #items-loop-pg66bcd41cea47 .team-block .pg34109fc44c7b img {
    object-fit: cover !important;
    object-position: center 18% !important;
    border-radius: 16px 16px 0 0 !important;
    padding: 0 !important;
  }
}


/* ==================================================
   17 ACCORDIONS / ARCHIVE / ADRESSEN
================================================== */

/* Förder, Sponsoren, Partner + Pressearchiv News Archiv - Accordions */
.pg1affe9253c1c .accordion-header,
.pg9d799e0667ee .accordion-header,
.accordion-location-block .accordion-header {
  background-color: var(--kl-color-brown) !important;
  font-family: var(--kl-font-main);
  font-size: var(--kl-font-size-280);
}

.pg9d799e0667ee .accordion-header {
  font-family: var(--kl-font-main);
  font-size: var(--kl-font-size-280);
  box-shadow: var(--kl-alpha-shadow-015) 0 5px 15px 0,
              0 0 0 3px var(--kl-color-white);
  border-radius: 50px 50px 15px 15px;
  cursor: pointer;
  text-transform: uppercase;
  border-inline: solid var(--kl-color-magenta-vivid) 0.75rem;
  border-top: solid var(--kl-color-magenta-vivid) 2px;
  border-bottom: solid var(--kl-color-magenta-vivid) 2px;
}

/* Förder, Sponsoren, Partner */
.pg1affe9253c1c .accordion-header:after {
  color: var(--kl-color-white);
  content: "Diesen Bereich - Öffnen";
}

.pg1affe9253c1c .ui-accordion-header-active:after {
  content: "Diesen Bereich - Schließen";
}

/* Pressearchiv - Accordions */
.press-block .pg9d799e0667ee .accordion-header:before {
  color: var(--kl-color-white);
  white-space: nowrap;
  content: 'Das Jahr\00a0';
}

.press-block .pg9d799e0667ee .accordion-header:after {
  color: var(--kl-color-white);
  content: '\00a0- Öffnen';
}

.press-block .pg9d799e0667ee .ui-accordion-header-active:after {
  content: '\00a0- Schließen';
}

/* Adressen - Accordions */
.accordion-location-block .accordion-header:before {
  color: var(--kl-color-white);
  white-space: nowrap;
  content: 'Den Bezirk\00a0';
}

.accordion-location-block .accordion-icon {
  padding-right: 0.5rem;
}

.accordion-location-block .accordion-header:after {
  color: var(--kl-color-white);
  content: '\00a0- Öffnen';
}

.accordion-location-block .accordion-header-active:after {
  content: '\00a0- Schließen';
}

/* Accordion Rahmen */
.press-block .ui-accordion,
.news-archiv-block .ui-accordion,
.accordion-location-block .ui-accordion {
  border-color: var(--kl-color-text);
  border-left: solid var(--kl-color-text) 0.5rem;
  border-right: solid var(--kl-color-text) 0.5rem;
  border-bottom: solid var(--kl-color-text) 0.5rem;
}

/* Accordion Innenabstand */
.news-archiv-block .items-loop,
.press-block .items-loop {
  margin: 1rem;
}

/* News Archiv - Accordions */
.news-archiv-block .pg9d799e0667ee .accordion-header:before {
  color: var(--kl-color-white);
  white-space: nowrap;
  content: 'Das News\00a0';
}

.news-archiv-block .pg9d799e0667ee .accordion-header:after {
  color: var(--kl-color-white);
  content: '\00a0Öffnen';
}

.news-archiv-block .pg9d799e0667ee .ui-accordion-header-active:after {
  content: '\00a0Schließen';
}

/* ==================================================
   18 KONTAKT / ADRESSBLOCK / GÄSTETELEFON
================================================== */

/* Zweigstellen Block */
.branchoffice .wp-block-group {
  width: 21em;
}

/* Hauptcontainer für Gästetelefon und Adressblock */
.guestphone,
.adress-block {
  padding: 2rem;
  background: none;
  border: none;
  box-shadow: none;
}

/* Post Grid Block innerhalb von guestphone */
.guestphone .PGBlockPostGrid {
  margin-top: 1rem;
}

/* Ladeanzeige für dynamische Inhalte */
.guestphone .loop-loading {
  text-align: center;
}

/* Filterformular-Gruppenlayout */
.guestphone .filterable-group-wrap {
  display: flex;
  gap: 1rem;
  margin-bottom: 1rem;
}

/* Container für die einzelnen Einträge */
.guestphone .items-loop {
  display: flex;
  flex-wrap: wrap;
  gap: 2rem;
}

/* Einzelner Eintrag */
.guestphone .item,
.adress-block .item {
  padding: 1rem;
  flex: 1 1 calc(50% - 2rem);
  box-shadow: none;
  background: none;
  border: none;
}

/* Adressblock innerhalb eines Eintrags */
.guestphone .adress-block,
.adress-block .adress-block {
  padding: 1rem;
}

/* Spaltenlayout für Bild und Text nebeneinander */
.guestphone .wp-block-columns,
.adress-block .wp-block-columns {
  display: flex;
  gap: 1rem;
}

.guestphone .wp-block-column,
.adress-block .wp-block-column {
  padding: 0.5rem;
}

/* Bildgestaltung im linken Bereich */
.guestphone .pg3e57a1adcfa8,
.adress-block .pg3e57a1adcfa8 {
  text-align: center;
}

.guestphone .pg3e57a1adcfa8 img,
.adress-block .pg3e57a1adcfa8 img {
  max-width: 100%;
  height: auto;
  border-radius: 4px;
}

/* Telefonnummern, Fax, E-Mail, Zeiten */
.guestphone .pgbe4873ee750c,
.adress-block .pgbe4873ee750c {
  margin-bottom: 1rem;
}

.guestphone .pgbe4873ee750c a,
.adress-block .pgbe4873ee750c a {
  text-decoration: none;
  font-weight: bold;
}

.guestphone .pgbe4873ee750c a:hover,
.adress-block .pgbe4873ee750c a:hover {
  text-decoration: underline;
}

/* Titel wie Telefon oder Partnerkontakt */
.guestphone .team-location-titel,
.adress-block .location-typ {
  font-weight: bold;
  margin-bottom: 0.5rem;
}

/* Zusatzinfo unterhalb der Kontaktzeiten */
.guestphone .pg98132e66c1b5 .location-info,
.adress-block .location-info {
  font-size: var(--kl-font-size-150);
  margin-top: 0.5rem;
}

/* Paginierung */
.guestphone .pagination {
  text-align: center;
  margin-top: 2rem;
}

.guestphone .pagination .pager-list {
  display: inline-block;
  padding: 0.5rem 1rem;
  border-radius: 4px;
}

/* Geschäftsstellen Block */
.projectrooms .adress-block {
  width: 75rem;
}

/* Kontakt und Anmeldestellen */
.branchoffice .wp-block-group,
.pg0b31a0873c0d .wp-block-group {
  margin: 0 !important;
  font-size: var(--kl-font-size-200);
}

.location-time h4 {
  margin-bottom: 0;
  font-size: var(--kl-font-size-300);
}

.branchoffice .wp-block-group,
.pg0b31a0873c0d .wp-block-group h2 {
  font-size: var(--kl-font-size-220);
  font-weight: normal;
}

.location-info {
  color: red;
  font-weight: bold;
}

/* Büros */
.adress-block .wp-block-group {
  display: block;
  border: solid var(--kl-color-white) 0.1rem;
  padding: 10px;
}

.location-typ {
  font-weight: bold;
}

.adress-block h2 {
  font-size: var(--kl-font-size-280);
}

#items-loop-pg47ee8e3840ec > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) {
  margin-top: 1rem;
}

/* ==================================================
   19 SEITE - DER VEREIN
================================================== */

.has-background-color p,
.has-background-color .wp-block-heading {
  color: var(--kl-color-white);
}

/* ==================================================
   20 BUTTONS
================================================== */

/* Buttons vom Modul Verein */
#verein h5 {
  text-align: center;
  color: var(--kl-color-brown);
  background: var(--kl-color-white);
  border: solid var(--kl-color-white) 15px;
  border-top: solid var(--kl-color-white) 20px;
  margin-bottom: 0;
}

#verein h5,
#verein .wp-block-group.tpfs-block {
  -webkit-box-shadow: 4px 4px 3px 0 var(--kl-color-black);
  box-shadow: 4px 4px 3px 0 var(--kl-color-black);
}

.wp-block-group .tpfs-block {
  border: solid var(--kl-color-white) 10px;
  border-top: solid var(--kl-color-white) 0.5em;
  border-bottom: solid var(--kl-color-white) 40px;
  background: var(--kl-color-white);
}

.vpfs-block .wp-block-button__link,
.tpfs-block .wp-block-button .wp-block-button__link {
  width: 35rem !important;
}

.vpfs-block .wp-block-button .wp-element-button,
.tpfs-block .wp-block-button .wp-element-button {
  font-size: var(--kl-font-size-em-100);
  color: var(--kl-color-brown);
  background-color: var(--kl-color-white);
  padding: 10px 30px;
  box-shadow: var(--kl-alpha-shadow-015) 0 5px 15px 0,
              0 0 0 1px var(--kl-color-white);
  border-radius: 3px;
  cursor: pointer;
  border-inline: solid var(--kl-color-magenta-vivid) 2px;
  border-top: solid var(--kl-color-magenta-vivid) 2px;
  border-bottom: solid var(--kl-color-magenta-vivid) 2px;
  max-width: 20em;
}

.vpfs-block .wp-block-button .wp-element-button:hover,
.tpfs-block .wp-block-button .wp-element-button:hover {
  color: var(--kl-color-magenta-vivid);
  background-color: var(--kl-color-white);
  border-inline: solid var(--kl-color-brown) 4px;
  border-top: solid var(--kl-color-brown) 2px;
  border-bottom: solid var(--kl-color-brown) 2px;
  text-decoration: none;
}

.vpfs-block .wp-block-button .wp-element-button:active,
.tpfs-block .wp-block-button .wp-element-button:active {
  color: var(--kl-color-magenta-vivid);
  background-color: var(--kl-color-white);
  border-inline: solid var(--kl-color-brown) 4px;
  border-top: solid var(--kl-color-brown) 2px;
  border-bottom: solid var(--kl-color-brown) 2px;
  text-decoration: none;
}

/* ==================================================
   21 FILE / DOWNLOAD BLOCKS
================================================== */

.gb-download-files h5,
.org-download-files h5 {
  padding-top: 4rem;
}

.pdf-file .wp-block-media-text__content,
.gb-download-files,
.org-download-files {
  padding: 0 !important;
}


/* ==================================================
22 PRESSE / PRESSEKONTAKT
================================================== */

/*
Pressekontakt / Mitarbeiter-Kontakt-Teaser

Gilt für PostGrid-/Kontaktblöcke mit:
- .Team-side-block
- Bild links
- Name und Kontaktinformationen rechts

Ziel:
- passt optisch zum allgemeinen Seitenlayout
- bleibt bis in kleine Ansichten nebeneinander
- erst in sehr schmaler Ansicht untereinander
- Bild/Text-Verhältnis stabil
- Bild beginnt in der Nebeneinander-Ansicht etwas unterhalb der Namensoberkante
- Bild ist etwas größer als vorher
- in der kleinsten Ansicht ist das Bild etwas nach rechts eingerückt
- keine übergroßen Namen
- keine seitlichen Ausbrüche
- lange E-Mail-Adressen brechen sauber
- Abstand zwischen "Telefon:" und Telefonnummer entspricht E-Mail-Abstand
- komische alleinstehende tel-Links mit Umbruch werden ausgeblendet
- funktioniert auch für weitere ähnliche Mitarbeiter-Kontaktblöcke
*/

/* ==================================================
22-01 AUSSENBEREICH / ÜBERSCHRIFT
================================================== */

/*
Container, in dem ein Team-side-block liegt.
Damit wird der gesamte Pressekontaktbereich an die normale
100rem-Seitenbreite angebunden.
*/
.entry-content .wp-block-group:has(.Team-side-block),
.entry-content .PGBlockPostGrid:has(.Team-side-block) {
  box-sizing: border-box;
  max-width: var(--kl-layout-width);
  width: 100%;
  margin-left: auto;
  margin-right: auto;
}

/*
Überschrift wie "Pressekontakt"

Der Block enthält teilweise ein <br> am Anfang der Überschrift.
Das wird optisch abgefangen, indem die Überschrift sauber
kompakt gesetzt wird.
*/
.entry-content .wp-block-group:has(.Team-side-block) h3.wp-block-heading {
  margin-top: 0 !important;
  margin-bottom: 1.8rem !important;

  color: var(--kl-color-text);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-fluid-240-340);
  line-height: 1.15;
  letter-spacing: 0.01em;
  text-align: left;
}

/*
Falls in der Überschrift ein einzelnes <br> als Abstand steckt,
soll es keine riesige Lücke erzeugen.
*/
.entry-content .wp-block-group:has(.Team-side-block) h3.wp-block-heading br:first-child {
  display: none;
}

/* ==================================================
22-02 POSTGRID-GRUNDSTRUKTUR
================================================== */

/*
PostGrid-Listen mit Team-side-blocks neutralisieren.
*/
.entry-content .PGBlockPostGrid:has(.Team-side-block),
.entry-content .PGBlockPostGrid:has(.Team-side-block) .items-loop {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;

  margin-left: auto;
  margin-right: auto;

  overflow: visible;
}

/*
Items in diesen Kontakt-PostGrids.
*/
.entry-content .PGBlockPostGrid:has(.Team-side-block) .items-loop {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 2rem;
}

.entry-content .PGBlockPostGrid:has(.Team-side-block) .item {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;

  margin: 0 !important;
  padding: 0 !important;

  overflow: visible;
}

/*
Leere Pagination bei diesen Kontaktblöcken ausblenden.
*/
.entry-content .PGBlockPostGrid:has(.Team-side-block) .pagination {
  display: none !important;
}

/* ==================================================
22-03 KONTAKTKARTE / LAYOUT
================================================== */

/*
Hauptkarte

Wichtig:
WordPress setzt hier teilweise is-nowrap / Flex-Klassen.
Diese werden gezielt überschrieben, damit Bild und Text stabil
nebeneinander stehen.

align-items:flex-start sorgt dafür, dass Bild und Text oben geführt werden.
Die Bildspalte bekommt ihre Feinausrichtung in 22-04.
*/
.Team-side-block {
  box-sizing: border-box;

  width: 100%;
  max-width: 100%;

  display: grid !important;
  grid-template-columns: clamp(14rem, 24vw, 21rem) minmax(0, 1fr);
  align-items: flex-start;
  column-gap: clamp(2rem, 4.2vw, 3.8rem);
  row-gap: 1.4rem;

  margin: 0 0 3rem 0 !important;
  padding: clamp(1.4rem, 3vw, 2.2rem);

  border-left: 0.2rem solid var(--kl-alpha-magenta-080);
  border-right: 0.2rem solid var(--kl-alpha-magenta-080);

  background: transparent;
  box-shadow: none;

  overflow: visible;
}

/*
Direkte Kind-Elemente der Karte dürfen nicht ausbrechen.
*/
.Team-side-block > * {
  box-sizing: border-box;
  min-width: 0;
  max-width: 100%;
}

/*
WordPress-Inner-Container innerhalb des Textbereichs neutralisieren.
*/
.Team-side-block .wp-block-group,
.Team-side-block .wp-block-group__inner-container {
  box-sizing: border-box;

  max-width: none !important;
  width: 100%;

  margin: 0 !important;
  padding: 0 !important;
}

/* ==================================================
22-04 BILD
================================================== */

/*
Bildspalte

Achtung:
.pg74664ec03d42 kommt auch bei E-Mail-/Kontaktzeilen vor.
Deshalb wird für das Bild nur der direkte Kind-Wrapper
von .Team-side-block angesprochen.

Das Bild wird in den Nebeneinander-Ansichten etwas tiefer gesetzt,
damit es ruhiger neben dem Namen/Text steht.
*/
.Team-side-block > .pg74664ec03d42 {
  box-sizing: border-box;

  width: 100% !important;
  max-width: 100%;

  display: flex;
  align-items: flex-start;
  justify-content: center;

  margin: 0 !important;
  padding: 0.95rem 0 0 0 !important;
}

/*
Bild selbst

Das Bild bleibt kontrolliert groß, quadratisch und läuft nicht aus.
*/
.Team-side-block > .pg74664ec03d42 img {
  display: block;

  width: 100% !important;
  max-width: clamp(13rem, 24vw, 21rem) !important;

  aspect-ratio: 1 / 1;
  height: auto !important;

  object-fit: cover;
  object-position: center center;

  margin: 0 !important;

  border: 2px solid var(--kl-color-brown);
  border-radius: 18px;
  box-shadow: 0 4px 8px var(--kl-alpha-shadow-010);

  filter: none;
}

/* ==================================================
22-05 NAME / TEXT / KONTAKTINFOS
================================================== */

/*
Name-Block.
*/
.Team-side-block .team-name {
  margin: 0 0 0.75rem 0 !important;
  padding: 0 !important;
}

/*
Name / H2

Nicht so riesig wie vorher, aber deutlich sichtbar.
*/
.Team-side-block .team-name h2,
.Team-side-block .team-name .pgd28067c72f91 {
  display: block;

  margin: 0 !important;
  padding: 0 !important;

  color: var(--kl-color-text);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-fluid-260-380) !important;
  line-height: 1.12;
  letter-spacing: 0.01em;
  text-align: left;

  min-height: 0;
  height: auto;

  overflow-wrap: normal;
  word-break: normal;
}

/*
Info-Bereich.
*/
.Team-side-block .team-info {
  margin: 0 !important;
  padding: 0 !important;

  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-fluid-155-190);
  line-height: 1.38;
}

/*
Inner-Container des Info-Bereichs.
*/
.Team-side-block .team-info > .wp-block-group__inner-container {
  display: block;
}

/*
Einzelne Infozeilen.

Grundsätzlich kompakt, damit Labels und Werte nah zusammenbleiben.
*/
.Team-side-block .team-info .pgff6de10e7d4a,
.Team-side-block .team-info .pg7d614b4b65c2,
.Team-side-block .team-info .pg74664ec03d42 {
  box-sizing: border-box;

  width: 100%;
  max-width: 100%;

  margin: 0 0 0.38rem 0 !important;
  padding: 0 !important;

  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;

  overflow-wrap: anywhere;
  word-break: normal;
}

/*
Labels wie Abteilung, Standort, Telefon, E-Mail.
*/
.Team-side-block .team-department-titel,
.Team-side-block .team-location-titel,
.Team-side-block .team-contact-email-titel {
  display: block;

  margin: 0 0 0.06rem 0 !important;

  color: var(--kl-color-text);
  font-family: var(--kl-font-bold) !important;
  font-weight: bold;
  font-size: var(--kl-font-size-em-100);
  line-height: 1.25;
}

/*
Textwerte.
*/
.Team-side-block .team-department,
.Team-side-block .team-location {
  display: block;

  margin: 0 !important;
  padding: 0 !important;

  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-em-100);
  line-height: 1.38;

  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;

  overflow: visible !important;
  -webkit-line-clamp: unset;
  -webkit-box-orient: initial;

  overflow-wrap: anywhere;
  word-break: normal;
}

/*
Telefon- und E-Mail-Links.
*/
.Team-side-block .team-info a,
.Team-side-block .team-contact-email {
  color: var(--kl-color-magenta);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-em-100);
  line-height: 1.35;

  text-decoration: underline;
  text-decoration-color: var(--kl-color-magenta);
  text-underline-offset: 0.18em;

  overflow-wrap: anywhere;
  word-break: normal;
}

.Team-side-block .team-info a:hover,
.Team-side-block .team-info a:focus,
.Team-side-block .team-contact-email:hover,
.Team-side-block .team-contact-email:focus {
  color: var(--kl-color-text);
  text-decoration-color: var(--kl-color-text);
}

/*
Komische / leere Telefonlinks aus PostGrid entfernen.

Wichtig:
PostGrid erzeugt teilweise:
- einen leeren tel-Link direkt im Telefon-Label-Block
- zusätzlich einen alleinstehenden tel-Link als direktes Kind
  des Inner-Containers
- danach erst die eigentliche Telefonnummer in einem eigenen Block

Der alleinstehende Link enthält oft nur Leerzeichen/Zeilenumbrüche.
:empty greift dann nicht zuverlässig. Deshalb werden direkte tel-Links
im Inner-Container grundsätzlich ausgeblendet. Die echte Telefonnummer
liegt weiterhin innerhalb .pg7d614b4b65c2 und bleibt sichtbar.
*/
.Team-side-block .team-info > .wp-block-group__inner-container > a[href^="tel:"] {
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  min-height: 0 !important;
  max-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 0 !important;
  font-size: var(--kl-font-size-zero) !important;
  overflow: hidden !important;
}

/*
Leere tel-Links innerhalb des Telefon-Label-Blocks entfernen.
*/
.Team-side-block .team-info .pg7d614b4b65c2:has(.team-location-titel) > a[href^="tel:"] {
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  min-height: 0 !important;
  max-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 0 !important;
  font-size: var(--kl-font-size-zero) !important;
  overflow: hidden !important;
}

/*
Zusätzliche Sicherheit für tatsächlich leere Links.
*/
.Team-side-block .team-info a[href^="tel:"]:empty {
  display: none !important;
}

/*
Telefonbereich kompakter machen.

Die Label-Zeile "Telefon:" und die Telefonnummer-Zeile bekommen
denselben engen Abstand wie "E-Mail:" und die E-Mail-Adresse.
*/
.Team-side-block .team-info .pg7d614b4b65c2:has(.team-location-titel):has(a[href^="tel:"]) {
  margin-bottom: 0.06rem !important;
}

.Team-side-block .team-info .pg7d614b4b65c2:has(.team-location-titel):has(a[href^="tel:"]) + .pg7d614b4b65c2,
.Team-side-block .team-info .pg7d614b4b65c2:has(.team-location-titel):has(a[href^="tel:"]) ~ .pg7d614b4b65c2:has(a[href^="tel:"]) {
  margin-top: 0 !important;
  margin-bottom: 0.38rem !important;
}

.Team-side-block .team-info .pg7d614b4b65c2:has(a[href^="tel:"]) {
  margin-top: 0 !important;
}

.Team-side-block .team-info .pg7d614b4b65c2 a[href^="tel:"] {
  display: inline-block;
  margin-top: 0 !important;
}

/*
E-Mail-Bereich etwas dichter an die Telefonnummer führen.
*/
.Team-side-block .team-info .pg7d614b4b65c2:has(a[href^="tel:"]) ~ .pg74664ec03d42 {
  margin-top: 0.05rem !important;
}

/*
E-Mail-Label und E-Mail-Adresse behalten ebenfalls den kompakten Abstand.
*/
.Team-side-block .team-info .pg74664ec03d42:has(.team-contact-email-titel) {
  margin-top: 0.05rem !important;
}

.Team-side-block .team-contact-email-titel + .team-contact-email {
  display: inline-block;
  margin-top: 0 !important;
}

/* ==================================================
22-06 RESPONSIVE
================================================== */

/*
Mittlere Breiten:
Bild und Text bleiben nebeneinander.
Das Bild wird etwas tiefer geführt und bleibt größer als vorher.
*/
@media (max-width: 760px) {
  .Team-side-block {
    grid-template-columns: clamp(10.5rem, 24vw, 15rem) minmax(0, 1fr);
    align-items: flex-start;
    column-gap: 1.7rem;

    padding: 1.4rem 1.2rem;
  }

  .Team-side-block > .pg74664ec03d42 {
    align-items: flex-start;
    justify-content: center;
    padding-top: 0.85rem !important;
  }

  .Team-side-block > .pg74664ec03d42 img {
    max-width: clamp(10.5rem, 24vw, 15rem) !important;
    border-radius: 14px;
  }

  .Team-side-block .team-name h2,
  .Team-side-block .team-name .pgd28067c72f91 {
    font-size: var(--kl-font-size-fluid-235-310) !important;
    line-height: 1.1;
  }

  .Team-side-block .team-info {
    font-size: var(--kl-font-size-fluid-148-170);
    line-height: 1.36;
  }
}

/*
Schmale, aber noch nebeneinander sinnvolle Ansicht:
Bild bleibt links, wird nicht winzig, Text bleibt rechts.
*/
@media (max-width: 620px) {
  .Team-side-block {
    grid-template-columns: clamp(9.5rem, 25vw, 12.5rem) minmax(0, 1fr);
    column-gap: 1.4rem;

    padding: 1.3rem 1rem;
  }

  .Team-side-block > .pg74664ec03d42 {
    padding-top: 0.78rem !important;
  }

  .Team-side-block > .pg74664ec03d42 img {
    max-width: clamp(9.5rem, 25vw, 12.5rem) !important;
  }

  .Team-side-block .team-name h2,
  .Team-side-block .team-name .pgd28067c72f91 {
    font-size: var(--kl-font-size-fluid-215-280) !important;
  }

  .Team-side-block .team-info {
    font-size: var(--kl-font-size-150);
  }
}

/*
Sehr kleine Ansicht:
Erst hier wird untereinander gestapelt.
Das Bild steht dann über dem Text und wird etwas nach rechts eingerückt.
*/
@media (max-width: 520px) {
  .Team-side-block {
    grid-template-columns: 1fr;
    align-items: flex-start;

    row-gap: 1.2rem;

    padding: 1.3rem 1rem;
  }

  .Team-side-block > .pg74664ec03d42 {
    justify-content: flex-start;
    padding-top: 0 !important;
    padding-left: 1.7rem !important;
  }

  .Team-side-block > .pg74664ec03d42 img {
    width: clamp(11rem, 42vw, 15rem) !important;
    max-width: clamp(11rem, 42vw, 15rem) !important;
    border-radius: 14px;
  }

  .Team-side-block .team-name h2,
  .Team-side-block .team-name .pgd28067c72f91 {
    font-size: var(--kl-font-size-fluid-210-280) !important;
  }

  .Team-side-block .team-info {
    font-size: var(--kl-font-size-155);
  }
}

/* ==================================================
   23 COUNTER
================================================== */

.wpsm_counter_b_row {
  min-height: 40rem;
  background-position: center center;
  background-image: url('/wp-content/uploads/2023/04/auditorium-2584269-counter.png');
}

/* Counter Zentrierung */
.wpsm_row {
  margin-top: 4%;
  display: flex !important;
  flex-wrap: wrap;
  justify-content: space-around;
}

/* Zähler Counter */
.wpsm_counterbox .counter {
  color: var(--kl-color-magenta-alt);
  font-size: var(--kl-font-size-em-400);
  text-shadow: 1px 1px 1px var(--kl-color-white),
               1px -1px 1px var(--kl-color-white),
               -1px 1px 1px var(--kl-color-white),
               -1px -1px 1px var(--kl-color-white);
}

/* Titel Counter */
.wpsm_counterbox .wpsm_count-title {
  color: var(--kl-color-white) !important;
  font-size: var(--kl-font-size-em-110) !important;
  text-shadow: 1px 1px 1px black,
               1px -1px 1px black,
               -1px 1px 1px black,
               -1px -1px 1px black;
}

/* Counter - Abstände entfernen */
.wpsm_counterbox {
  margin: 0 !important;
}

/* ==================================================
   24 KSK INFO
================================================== */

.ksk-info {
  max-height: 7em;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* KSK - Schrift */
.ksk-teaser p {
  color: var(--kl-color-blue-brand);
}

/* KSK - Icon - Bildgröße ändern */
.ksk-img img {
  max-width: 7.5em;
  margin-left: 0.5em;
}

/* ==================================================
25 PDF SYMBOL / INLINE LINK
================================================== */

/*
PDF-Link mit Inline-Icon

Ziel:
- Lange Linktexte dürfen umbrechen.
- Der Link darf nicht nach rechts ausbrechen.
- Der Text steht in .pdf-link-text.
- Das PDF-Symbol steht rechts neben dem Textblock.
- Bei mehrzeiligen Links sitzt das Symbol vertikal mittig zu allen Zeilen.
- Horizontal sitzt das Symbol am Ende der längsten sichtbaren Textzeile.
*/
.pdf-link {
  display: inline-flex !important;
  align-items: center;
  justify-content: flex-start;
  gap: 0.35em;

  width: fit-content;
  max-width: 100%;
  box-sizing: border-box;

  white-space: normal !important;

  text-decoration: none;
  vertical-align: middle;
}

/*
Textteil des PDF-Links

Der Text darf umbrechen.
Der Textblock darf kleiner werden, damit das Icon rechts daneben
im sichtbaren Bereich bleibt.
*/
.pdf-link-text {
  display: inline;

  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;

  white-space: normal !important;
  overflow-wrap: anywhere;
  word-break: normal;

  text-decoration: underline;
  text-decoration-color: currentColor;
  text-underline-offset: 0.15em;
}

/*
PDF-Icon im Link

Das Icon bleibt rechts neben dem Textblock.
align-items:center auf .pdf-link sorgt dafür, dass das Icon bei
mehrzeiligem Text vertikal mittig neben allen Zeilen steht.
*/
.pdf-inline-icon {
  display: inline-block !important;

  width: 24px;
  max-width: 24px;
  height: auto;

  flex: 0 0 auto;

  margin-left: 0;
  vertical-align: middle;
}

/*
Absätze mit PDF-Links dürfen nicht nach rechts ausbrechen.
*/
.wp-block-paragraph:has(.pdf-link),
p:has(.pdf-link) {
  max-width: 100%;
  box-sizing: border-box;

  overflow-wrap: anywhere;
  word-break: normal;
}

/*
Links in farbigen WordPress-Gruppen stabilisieren.

Das betrifft z.B. rosa Infoboxen mit langen Formular-/PDF-Links.
*/
.wp-block-group.has-background a,
.wp-block-group.has-background p,
.wp-block-group.has-background li {
  max-width: 100%;
  box-sizing: border-box;

  overflow-wrap: anywhere;
  word-break: normal;
}

/*
Bilder, Diagramme, SVGs und Figures in farbigen Gruppen
dürfen nicht rechts aus dem Inhaltsbereich herauslaufen.

Wichtig:
.pdf-inline-icon wird ausgenommen, damit das kleine PDF-Symbol
nicht versehentlich wie ein normales Inhaltsbild skaliert wird.
*/
.wp-block-group.has-background img:not(.pdf-inline-icon),
.wp-block-group.has-background svg,
.wp-block-group.has-background figure,
.wp-block-group.has-background .wp-block-image {
  max-width: 100% !important;
  height: auto !important;
  box-sizing: border-box;
}

/*
Falls ein sehr breites Bild/Diagramm bewusst groß ist,
wird es innerhalb der Gruppe scrollbar statt die ganze Seite
nach rechts aufzuziehen.
*/
.wp-block-group.has-background figure,
.wp-block-group.has-background .wp-block-image {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

/*
Zusätzliche Sicherheit für direkte Inhalte in farbigen Gruppen.
*/
.wp-block-group.has-background .wp-block-group__inner-container {
  max-width: 100%;
  box-sizing: border-box;

  overflow-wrap: anywhere;
  word-break: normal;
}

/* ==================================================
   26 BREITEN-FIX FÜR FULL-WIDTH TEMPLATE
================================================== */

body.template-full-width .entry-content > *:not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright):not(.is-style-wide),
body.template-full-width [class*="__inner-container"] > *:not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright):not(.is-style-wide) {
  max-width: var(--kl-layout-width);
}

/* ==================================================
   27 SPENDENBLOCK
================================================== */

/*
   Grundbox für den gesamten Spendenblock
   --------------------------------------------------
   .klsp-box ist vermutlich als Link oder klickbare Fläche gedacht.
   Deshalb:
   - display:block für saubere Blockdarstellung
   - cursor:pointer für klickbare Wirkung
   - text-decoration:none, damit Link-Unterstreichungen entfernt werden
   - text-align:center für zentrierte Inhalte

   Typografie:
   Der Block übernimmt bewusst die allgemeine Seitenschrift.
*/
.klsp-box,
.klsp-box * {
  box-sizing: border-box;
}

.klsp-box {
  display: block;
  margin: 32px 0 30px;
  cursor: pointer;
  text-align: center;
  color: var(--kl-color-text);
  text-decoration: none;
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-180);
  line-height: 1.5;
}

/*
   Überschrift im Spendenblock
   --------------------------------------------------
   Die Überschrift ist etwas kräftiger und größer als der Fließtext,
   bleibt aber optisch im Stil der übrigen Seite.
*/
.klsp-title {
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-240);
  line-height: 1.25;
  font-weight: bold;
  color: var(--kl-color-text);
  margin-bottom: 1.5rem;
}

/*
   Beschreibungstext im Spendenblock
   --------------------------------------------------
   Normaler Erklärungstext unterhalb der Überschrift.
   Schriftgröße und Zeilenhöhe orientieren sich am allgemeinen Inhalt.
*/
.klsp-text {
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-180);
  line-height: 1.5;
  color: var(--kl-color-text);
  margin: 0;
}

/*
   Bereich um den Fortschrittsbalken
   --------------------------------------------------
   Sorgt für Abstand oberhalb und unterhalb des Balkens.
*/
.klsp-bar-zone {
  padding: 28px 0 10px;
}

/*
   Wrapper des Fortschrittsbalkens
   --------------------------------------------------
   position:relative ist notwendig, damit Pulse-Effekt,
   Balken und Label sauber innerhalb dieses Bereichs
   positioniert werden können.
*/
.klsp-bar-wrap {
  position: relative;
  width: 78%;
  margin: 0 auto;
}

/*
   Puls-Rahmen um den Spendenbalken
   --------------------------------------------------
   Dieser Rahmen liegt absolut um den Balken herum.
   Standardmäßig ist er unsichtbar.
   Aktiviert wird die Animation erst über .is-active.
*/
.klsp-pulse {
  position: absolute;
  inset: -16px;
  border: 2px solid var(--kl-alpha-pink-glow);
  border-radius: 999px;
  opacity: 0;
  transform: scale(1.12);
}

/*
   Aktiver Puls-Effekt
   --------------------------------------------------
   Die Klasse .is-active startet die dezente Puls-Animation.
*/
.klsp-pulse.is-active {
  animation: klspPulseIn 2.6s ease-in-out infinite;
}

/*
   Animation für den Puls-Rahmen
   --------------------------------------------------
   Der Rahmen wird langsam kleiner und blendet dabei aus.
*/
@keyframes klspPulseIn {
  0% {
    opacity: 0.42;
    transform: scale(1.12);
  }

  100% {
    opacity: 0;
    transform: scale(1);
  }
}

/*
   Äußerer Fortschrittsbalken
   --------------------------------------------------
   Helle rosa Grundfläche.
   overflow:hidden sorgt dafür, dass die innere Füllung
   sauber innerhalb der Rundung bleibt.
*/
.klsp-bar {
  position: relative;
  height: 46px;
  background: var(--kl-color-magenta-soft-2);
  border: 1px solid var(--kl-color-border-soft);
  border-radius: 999px;
  overflow: hidden;
}

/*
   Innere Füllung des Fortschrittsbalkens
   --------------------------------------------------
   Die Breite wird vermutlich per JavaScript gesetzt.
   Startwert ist 0%.
*/
.klsp-fill {
  height: 100%;
  width: 0%;
  border-radius: 999px;
  background: linear-gradient(135deg,var(--kl-color-magenta-light) 0%,var(--kl-color-magenta-light-2) 45%,var(--kl-color-magenta-light) 100%);
  transition: width 2s cubic-bezier(0.4,0,0.2,1);
  position: relative;
}

/*
   Glanz-Effekt auf der Füllung
   --------------------------------------------------
   Wird nur aktiv, wenn .is-shimmer gesetzt ist.
*/
.klsp-fill.is-shimmer::after {
  content: "";
  position: absolute;
  top: 0;
  left: -40%;
  width: 40%;
  height: 100%;
  background: linear-gradient(
    90deg,
    var(--kl-alpha-white-000) 0%,
    var(--kl-alpha-white-280) 50%,
    var(--kl-alpha-white-000) 100%
  );
  animation: klspShine 3.4s linear infinite;
}

/*
   Animation für den Glanz-Effekt
   --------------------------------------------------
   Der helle Streifen wandert von links nach rechts
   über den Fortschrittsbalken.
*/
@keyframes klspShine {
  from {
    left: -40%;
  }

  to {
    left: 120%;
  }
}

/*
   Beschriftung im Fortschrittsbalken
   --------------------------------------------------
   Das Label liegt absolut über dem gesamten Balken
   und wird horizontal sowie vertikal zentriert.
   Schriftart und Farbe sind an die allgemeine Seite angepasst.
*/
.klsp-label {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;

  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-170);
  line-height: 1;
  font-weight: bold;
  color: var(--kl-color-text);
}

/*
   Mobile Anpassung
   --------------------------------------------------
   Auf kleinen Displays wird die Schrift etwas reduziert
   und der Balken bekommt mehr Breite.
*/
@media (max-width: 700px) {
  .klsp-box {
    font-size: var(--kl-font-size-160);
  }

  .klsp-title {
    font-size: var(--kl-font-size-210);
  }

  .klsp-text {
    font-size: var(--kl-font-size-160);
  }

  .klsp-bar-wrap {
    width: 92%;
  }

  .klsp-label {
    font-size: var(--kl-font-size-150);
  }
}

/* ==================================================
   28 FORMULARE (KONTAKT + NEWSLETTER)
================================================== */

/*
   Formular-Außencontainer
   --------------------------------------------------
   Der dezente Rahmen liegt bewusst auf den WordPress-Gruppen:
   - .contact-form.wp-block-group
   - .newsletter-form.wp-block-group

   Beide Formulare sind gleich breit und sitzen mittig im 100rem-Layout.
*/
.contact-form.wp-block-group,
.newsletter-form.wp-block-group {
  max-width: 60rem;
  margin-left: auto;
  margin-right: auto;

  padding: 2.2rem 3rem;

  border-left: 0.2rem solid var(--kl-alpha-magenta-080);
  border-right: 0.2rem solid var(--kl-alpha-magenta-080);

  font-family: var(--kl-font-main) !important;
  color: var(--kl-color-text);
}

/*
   Formular-Grundabstände
   --------------------------------------------------
   Entfernt unnötige Außenabstände der Formular-Plugins.
*/
.contact-form.wp-block-group form,
.newsletter-form.wp-block-group form {
  margin: 0;
}

/*
   Absätze in Formularen
   --------------------------------------------------
   Contact Form 7 erzeugt viele <p>-Blöcke.
   Diese werden grundsätzlich kompakter gesetzt.
*/
.contact-form.wp-block-group form p,
.newsletter-form.wp-block-group form p {
  margin-top: 0;
  margin-bottom: 1.05rem;
}

/*
   Überflüssige Zeilenumbrüche kompakter behandeln
   --------------------------------------------------
   In beiden Formularen stehen viele <br>-Elemente.
   Die Felder selbst werden über display:block sauber gesetzt,
   deshalb dürfen die <br>-Abstände reduziert werden.
*/
.contact-form.wp-block-group form br,
.newsletter-form.wp-block-group form br {
  display: none;
}

/*
   Überschriften im Formularbereich
*/
.contact-form.wp-block-group h3,
.newsletter-form.wp-block-group h3 {
  margin-top: 0;
  margin-bottom: 1.5rem;
  color: var(--kl-color-text);
}

/*
   Feld-Labels
   --------------------------------------------------
   Normale Feldbeschriftungen stehen klar über dem jeweiligen Eingabefeld.
*/
.contact-form.wp-block-group label,
.newsletter-form.wp-block-group form > label {
  display: block;
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-form-label);
  line-height: 1.35;
  color: var(--kl-color-text);
  margin-bottom: 0.25rem;
}

/*
   Contact Form 7 Feld-Wrappers
   --------------------------------------------------
   Damit Eingabefelder trotz ausgeblendeter <br>-Tags sauber
   unter dem Label stehen.
*/
.contact-form.wp-block-group .wpcf7-form-control-wrap {
  display: block;
}

/*
   Eingabefelder
   --------------------------------------------------
   Einheitliches Feldlayout für Kontaktformular und Newsletter.
*/
.contact-form.wp-block-group input[type="text"],
.contact-form.wp-block-group input[type="email"],
.contact-form.wp-block-group input[type="tel"],
.contact-form.wp-block-group textarea,
.newsletter-form.wp-block-group input[type="text"],
.newsletter-form.wp-block-group input[type="email"] {
  width: 100%;
  max-width: 100%;

  margin-top: 0.25rem;
  margin-bottom: 0.65rem;

  padding: 0.85rem 1rem;

  border: 0.1rem solid var(--kl-alpha-brown-border);
  border-radius: 0;
  background-color: var(--kl-color-white);

  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-form-field);
  line-height: 1.35;
  color: var(--kl-color-text);
}

/*
   Fokuszustand
   --------------------------------------------------
   Ruhige Orientierung beim Ausfüllen.
*/
.contact-form.wp-block-group input[type="text"]:focus,
.contact-form.wp-block-group input[type="email"]:focus,
.contact-form.wp-block-group input[type="tel"]:focus,
.contact-form.wp-block-group textarea:focus,
.newsletter-form.wp-block-group input[type="text"]:focus,
.newsletter-form.wp-block-group input[type="email"]:focus {
  outline: none;
  border-color: var(--kl-color-magenta);
}

/*
   Nachrichtentextfeld
   --------------------------------------------------
   Kompakter Start, aber weiterhin vertikal vergrößerbar.
*/
.contact-form.wp-block-group textarea {
  min-height: 12rem;
  height: 12rem;
  resize: vertical;
}

/*
   Datenschutz- und Hinweistexte
*/
.contact-form.wp-block-group .datenschutz,
.newsletter-form.wp-block-group em,
.newsletter-form.wp-block-group p {
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-form-note);
  line-height: 1.45;
  color: var(--kl-color-text);
}

/*
   Links in Formulartexten
*/
.contact-form.wp-block-group a,
.newsletter-form.wp-block-group a {
  color: var(--kl-color-magenta);
  text-decoration: underline;
  text-decoration-color: var(--kl-color-magenta);
}

/*
   Checkboxen allgemein
   --------------------------------------------------
   Checkboxen bekommen etwas mehr Luft und bleiben sauber
   am Text ausgerichtet.
*/
.contact-form.wp-block-group input[type="checkbox"],
.newsletter-form.wp-block-group input[type="checkbox"] {
  margin-right: 0.75rem;
  vertical-align: middle;
}

/*
   Kontaktformular: Datenschutzbereich
   --------------------------------------------------
   Der Datenschutzbereich bekommt mehr vertikalen Abstand,
   damit Checkbox-Zeile und Datenschutz-Link auf Touch-Geräten
   nicht zu dicht beieinander liegen.
*/
.contact-form.wp-block-group label.datenschutz {
  display: block;
  margin-top: 1.2rem;
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-form-note);
  line-height: 1.5;
}

/*
   Contact Form 7 Checkbox-Zeile
   --------------------------------------------------
   Die gesamte Checkbox-Zeile wird höher und besser anklickbar.
*/
.contact-form.wp-block-group .wpcf7-checkbox .wpcf7-list-item {
  display: inline-flex;
  align-items: center;
  margin-left: 0;
  margin-bottom: 0.9rem;
  line-height: 1.45;
}

/*
   Datenschutz-Link im Kontaktformular
   --------------------------------------------------
   Der Link steht mit ausreichend Abstand unter der Checkbox-Zeile.
   Dadurch ist er mit Touchscreen besser separat anklickbar.
*/
.contact-form.wp-block-group label.datenschutz a {
  display: inline-block;
  margin-top: 0.75rem;
  padding-top: 0.15rem;
}

/*
   Newsletter-Listen-Auswahl
   --------------------------------------------------
   Die Newsletter-Optionen werden als eigene, größere Klickzeilen
   dargestellt. Dadurch sind "Newsletter von KulturLeben Berlin"
   und "Newsletter der Werkstatt Utopia" auf Touch-Geräten besser
   getrennt und einfacher anwählbar.
*/
.newsletter-form.wp-block-group .lm-lists,
.newsletter-form.wp-block-group .lm-lists + div {
  display: flex;
  align-items: flex-start;

  margin-top: 0.95rem;
  margin-bottom: 0.95rem;

  padding-top: 0.25rem;
  padding-bottom: 0.25rem;

  font-size: var(--kl-font-size-form-note);
  line-height: 1.45;
}

/*
   Newsletter-Checkboxen
   --------------------------------------------------
   Leicht nach unten gesetzt, damit Checkbox und Text optisch
   sauber auf einer Linie sitzen.
*/
.newsletter-form.wp-block-group .lm-lists input[type="checkbox"],
.newsletter-form.wp-block-group .lm-lists + div input[type="checkbox"] {
  flex: 0 0 auto;
  margin-top: 0.25rem;
  margin-right: 0.75rem;
}

/*
   Newsletter-Checkbox-Labels
   --------------------------------------------------
   Die Labels dürfen nicht als große Feldlabels erscheinen.
   Sie bleiben neben der Checkbox, erhalten aber genug Zeilenhöhe.
*/
.newsletter-form.wp-block-group .lm-lists label,
.newsletter-form.wp-block-group .lm-lists + div label {
  display: inline-block;
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-form-note);
  line-height: 1.45;
  color: var(--kl-color-text);
}

/*
   Newsletter-Hinweistext
   --------------------------------------------------
   Der Einverständnistext bekommt etwas Abstand nach oben,
   damit er nicht direkt an der letzten Checkbox klebt.
*/
.newsletter-form.wp-block-group .lm-lists + div + p {
  margin-top: 1.35rem;
}

/*
   Einheitlicher Button für Senden und Abonnieren
   --------------------------------------------------
   Dieser Button ist bewusst gut lesbar:
   - moderater Buchstabenabstand
   - klare KulturLeben-Farben
   - keine Unterstreichung
   - ruhiger, stabiler Button-Look
*/
.contact-form.wp-block-group input[type="submit"],
.newsletter-form.wp-block-group input[type="submit"] {
  display: inline-block;

  margin-top: 0.9rem;
  padding: 1rem 2.4rem;

  border: 0.2rem solid var(--kl-color-magenta);
  border-radius: 0;
  background-color: var(--kl-color-brown);

  color: var(--kl-color-white);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-form-button);
  line-height: 1.2;
  letter-spacing: 0.045em;

  text-decoration: none !important;
  text-transform: none;

  cursor: pointer;
}

/*
   Newsletter: Abstand nach unten
   --------------------------------------------------
   Gibt dem gesamten Newsletter-Block mehr Luft zum nachfolgenden Inhalt.
*/
.newsletter-form.wp-block-group {
  margin-bottom: 4rem !important;
}



/*
   Button Hover/Fokus
   --------------------------------------------------
   Gleiche Größe, kein Springen, keine Unterstreichung.
   Nur ruhiger Farbwechsel.
*/
.contact-form.wp-block-group input[type="submit"]:hover,
.contact-form.wp-block-group input[type="submit"]:focus,
.newsletter-form.wp-block-group input[type="submit"]:hover,
.newsletter-form.wp-block-group input[type="submit"]:focus {
  background-color: var(--kl-color-magenta);
  border-color: var(--kl-color-brown);
  color: var(--kl-color-white);

  text-decoration: none !important;
  outline: none;
}

/*
   Contact Form 7 Spinner
*/
.contact-form.wp-block-group .wpcf7-spinner {
  vertical-align: middle;
  margin-left: 1rem;
}

/*
   Contact Form 7 Rückmeldungen
*/
.contact-form.wp-block-group .wpcf7-response-output {
  margin: 1.4rem 0 0;
  padding: 1rem 1.2rem;

  font-size: var(--kl-font-size-form-note);
  line-height: 1.4;
}

/*
   Versteckte Honeypot-Felder
   --------------------------------------------------
   Diese Felder sollen keinen sichtbaren Platz erzeugen.
*/
.contact-form.wp-block-group .hp-message,
.contact-form.wp-block-group [class*="-wrap"][style*="width: 0px"] {
  margin: 0 !important;
  padding: 0 !important;
}

/*
   Mobile Ansicht
   --------------------------------------------------
   Auf kleinen Displays nutzen die Formulare wieder die volle Breite
   innerhalb des normalen Seitenabstands. Touch-Abstände bleiben erhalten.
*/
@media (max-width: 700px) {
  .contact-form.wp-block-group,
  .newsletter-form.wp-block-group {
    max-width: none;
    padding: 1.6rem 1.4rem;

    border-left-width: 0.15rem;
    border-right-width: 0.15rem;
  }

  .contact-form.wp-block-group form p,
  .newsletter-form.wp-block-group form p {
    margin-bottom: 1rem;
  }

  .contact-form.wp-block-group label,
  .newsletter-form.wp-block-group form > label {
    font-size: var(--kl-font-size-150);
  }

  .contact-form.wp-block-group input[type="text"],
  .contact-form.wp-block-group input[type="email"],
  .contact-form.wp-block-group input[type="tel"],
  .contact-form.wp-block-group textarea,
  .newsletter-form.wp-block-group input[type="text"],
  .newsletter-form.wp-block-group input[type="email"] {
    font-size: var(--kl-font-size-150);
    padding: 0.8rem 0.9rem;
  }

  .contact-form.wp-block-group textarea {
    min-height: 11rem;
    height: 11rem;
  }

  .contact-form.wp-block-group .wpcf7-checkbox .wpcf7-list-item {
    margin-bottom: 1rem;
  }

  .contact-form.wp-block-group label.datenschutz a {
    margin-top: 0.9rem;
  }

  .newsletter-form.wp-block-group .lm-lists,
  .newsletter-form.wp-block-group .lm-lists + div {
    margin-top: 1rem;
    margin-bottom: 1rem;
    padding-top: 0.35rem;
    padding-bottom: 0.35rem;
  }

  .contact-form.wp-block-group input[type="submit"],
  .newsletter-form.wp-block-group input[type="submit"] {
    font-size: var(--kl-font-size-155);
    letter-spacing: 0.035em;
    padding: 0.9rem 2rem;
  }
}

/* ==================================================
   29 STANDORTE / ZEITEN / TELEFON
================================================== */

/* ==================================================
   29-01 GRUNDLAYOUT / VARIABLEN
================================================== */

.kl-standorte {
  --accent-blue: var(--kl-color-blue);
  --magenta: var(--kl-color-magenta);
  --braun: var(--kl-color-brown-soft);
  --braun-hell: var(--kl-color-brown-muted);
  --hell: var(--kl-color-surface-page);
  --weiss: var(--kl-color-white);
  --schatten: 0 2px 6px var(--kl-alpha-shadow-012);
  --schatten-strong: 0 10px 26px var(--kl-alpha-shadow-018);
  --accent-base: var(--magenta);
  --accent-hover: var(--accent-blue);
  --accent-active: var(--magenta);

  font-family: var(--kl-font-main);
  color: var(--kl-color-black);
  font-size: var(--kl-font-size-122);
  line-height: 1.65;
}

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

.kl-standorte .is-hidden {
  display: none !important;
}

.kl-standorte button {
  min-height: 44px;
  font: inherit;
  text-transform: none !important;
  letter-spacing: normal !important;
}

.kl-standorte button:focus-visible,
.kl-standorte a:focus-visible {
  outline: 4px solid var(--kl-alpha-magenta-350);
  outline-offset: 2px;
}

/* ==================================================
   29-02 SYSTEMMELDUNGEN / LADEZUSTAND
================================================== */

.kl-standorte .sysbox {
  display: none;
  background: var(--hell);
  border: 2px solid var(--magenta);
  border-left-width: 8px;
  padding: .7rem .9rem;
  margin: 0 0 .7rem 0;
  border-radius: 14px;
  box-shadow: 0 6px 16px var(--kl-alpha-shadow-010);
}

.kl-standorte .sysbox.is-show {
  display: block;
}

.kl-standorte .loading {
  display: block;
  margin: .6rem 0 .8rem;
  color: var(--kl-alpha-shadow-075);
  padding: .65rem .8rem;
  background: var(--kl-alpha-blue-080);
  border: 1px solid var(--kl-alpha-blue-180);
  border-radius: 14px;
  font-weight: 800;
}

/* ==================================================
   29-03 ÜBERSCHRIFTEN / SECTION-HEADINGS
================================================== */

.kl-standorte .section-heading {
  margin: 1.35rem 0 .9rem;
  padding: .55rem .75rem .62rem 1rem;
  border-left: 8px solid var(--accent-base);
  border-radius: 12px;
  background: var(--kl-alpha-surface-950);
  box-shadow: 0 2px 10px var(--kl-alpha-shadow-060);
  font-weight: 900;
  display: flex;
  align-items: center;
  gap: .85rem;
  color: var(--kl-color-brown-dark);
}

.kl-standorte .section-logo {
  width: 5.6rem;
  height: 5.6rem;
  object-fit: contain;
  border-radius: 10px;
  background: var(--kl-alpha-white-180);
  padding: .18rem;
  box-shadow: inset 0 0 0 1px var(--kl-alpha-white-220);
}

/* ==================================================
   29-04 DETAILS / AKKORDEONS (FIX: ACTION IMMER RECHTS + BEZIRKSWAPPEN)
================================================== */

.kl-standorte .toggle-details {
  margin: 1rem 0 1.25rem;
  border-radius: 18px;
}

.kl-standorte .toggle-details.gap-before {
  margin-top: 2.7rem;
}

/*
   Akkordeon-Kopf / Summary
   --------------------------------------------------
   Wichtig:
   - Der Button bleibt rechts.
   - Der linke Titelbereich darf schrumpfen.
   - Bezirkswappen dürfen den geschlossenen Kopf nicht aufziehen.
*/
.kl-standorte .toggle-details > summary {
  list-style: none;
  cursor: pointer;
  margin: 0;
  padding: .78rem .95rem;

  background: var(--braun);
  color: var(--kl-color-white);

  border-left: 6px solid var(--accent-base);
  border-radius: 18px;
  box-shadow: 0 8px 22px var(--kl-alpha-shadow-012);

  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: space-between;
  gap: .85rem;

  min-height: 4.8rem;
  box-sizing: border-box;

  font-weight: 900;

  transition:
    border-radius .24s ease,
    background-color .24s ease,
    box-shadow .24s ease;
}

.kl-standorte .toggle-details > summary::-webkit-details-marker {
  display: none;
}

.kl-standorte .toggle-details > summary:hover {
  background: var(--braun-hell);
  box-shadow: 0 12px 28px var(--kl-alpha-shadow-016);
}

.kl-standorte .toggle-details[open] > summary {
  border-radius: 18px 18px 0 0;
}

.kl-standorte .toggle-details[open] {
  box-shadow: 0 10px 24px var(--kl-alpha-shadow-010);
}

/*
   Linker Bereich
   --------------------------------------------------
   Enthält entweder:
   - .toggle-icon bei normalen Akkordeons
   - .district-logo bei Bezirks-Akkordeons
   - danach den Titeltext
*/
.kl-standorte .toggle-title {
  display: flex;
  align-items: center;
  gap: .75rem;

  flex: 1 1 auto;
  min-width: 0;
  max-width: 100%;
}

/*
   Titeltext im linken Bereich
   --------------------------------------------------
   Lange Namen dürfen umbrechen, aber nicht den Button verdrängen.
*/
.kl-standorte .toggle-title > span:last-child {
  min-width: 0;
  max-width: 100%;
  line-height: 1.2;
  word-break: normal;
  overflow-wrap: anywhere;
}

/*
   Rundes Standard-Icon für normale Akkordeons
   --------------------------------------------------
   Betrifft z.B.:
   - Nächste Öffnung
   - Unsere Büros
   - Unser Gästetelefon
*/
.kl-standorte .toggle-icon {
  width: 4.7rem;
  min-width: 4.7rem;
  height: 4.7rem;

  display: inline-flex;
  align-items: center;
  justify-content: center;

  flex: 0 0 auto;

  border-radius: 999px;
  background: var(--kl-alpha-white-180);
  box-shadow: inset 0 0 0 1px var(--kl-alpha-white-240);

  font-size: var(--kl-font-size-290);
  line-height: 1;
}

/*
   Bezirkswappen im Akkordeon-Kopf
   --------------------------------------------------
   Bugfix:
   Ohne feste Begrenzung werden die PNG-Wappen in Originalgröße
   angezeigt und ziehen den geschlossenen Akkordeon-Kopf riesig hoch.
*/
.kl-standorte .district-details > summary .district-logo {
  display: block;
  flex: 0 0 auto;

  width: 3.2rem !important;
  min-width: 3.2rem !important;
  height: 3.2rem !important;

  max-width: 3.2rem !important;
  max-height: 3.2rem !important;

  object-fit: contain;
  object-position: center;
}

/*
   Bezirks-Akkordeons etwas kompakter halten
*/
.kl-standorte .district-details > summary {
  min-height: 4.8rem;
}

/*
   Button immer rechts
*/
.kl-standorte .toggle-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  gap: .38rem;

  border-radius: 999px;
  background: var(--kl-color-white);
  color: var(--kl-color-dark);

  padding: .38rem .82rem;

  font-weight: 900;

  box-shadow: 0 2px 8px var(--kl-alpha-shadow-020);

  transition:
    transform .18s ease,
    box-shadow .18s ease;

  white-space: nowrap;

  margin-left: auto;
  flex: 0 0 auto;
}

/*
   Hover bleibt ruhig und sichtbar
*/
.kl-standorte .toggle-details > summary:hover .toggle-action {
  transform: translateY(-1px);
  box-shadow: 0 6px 14px var(--kl-alpha-shadow-022);
}

/*
   Umschalten: Aufklappen / Zuklappen
*/
.kl-standorte .toggle-action .is-open {
  display: none;
}

.kl-standorte .toggle-action .is-closed::before {
  content: "+";
  margin-right: .35rem;
  font-weight: 900;
}

.kl-standorte .toggle-action .is-open::before {
  content: "–";
  margin-right: .35rem;
  font-weight: 900;
}

.kl-standorte .toggle-details[open] .toggle-action .is-closed {
  display: none;
}

.kl-standorte .toggle-details[open] .toggle-action .is-open {
  display: inline;
}

/*
   Details-Body
   --------------------------------------------------
   Wird vom JavaScript animiert.
   Diese Grundregel verhindert Layout-Ausreißer.
*/
.kl-standorte .details-body {
  box-sizing: border-box;
}

/*
   Mobile Anpassungen
   --------------------------------------------------
   Auf kleineren Displays:
   - Summary etwas kompakter
   - Standard-Icons kleiner
   - Bezirkswappen kleiner
   - Button bleibt rechts, darf aber kompakter werden
*/
@media (max-width: 700px) {
  .kl-standorte .toggle-details > summary {
    min-height: 4.4rem;
    padding: .65rem .8rem;
    gap: .7rem;
  }

  .kl-standorte .toggle-title {
    gap: .65rem;
  }

  .kl-standorte .toggle-icon {
    width: 3.8rem;
    min-width: 3.8rem;
    height: 3.8rem;
    font-size: var(--kl-font-size-225);
  }

  .kl-standorte .district-details > summary .district-logo {
    width: 2.8rem !important;
    min-width: 2.8rem !important;
    height: 2.8rem !important;

    max-width: 2.8rem !important;
    max-height: 2.8rem !important;
  }

  .kl-standorte .toggle-action {
    padding: .32rem .62rem;
    font-size: var(--kl-font-size-115);
  }
}

/*
   Sehr kleine Displays
   --------------------------------------------------
   Wenn Bezirkstitel sehr lang sind, bleibt der Button rechts.
   Der Titel darf links sauber umbrechen.
*/
@media (max-width: 420px) {
  .kl-standorte .toggle-details > summary {
    align-items: center;
    gap: .55rem;
  }

  .kl-standorte .toggle-title {
    gap: .55rem;
  }

  .kl-standorte .toggle-title > span:last-child {
    font-size: var(--kl-font-size-135);
    line-height: 1.15;
  }

  .kl-standorte .toggle-action {
    padding: .28rem .5rem;
    font-size: var(--kl-font-size-105);
  }
}
/* ==================================================
   29-05 LISTEN / KARTEN
================================================== */

.kl-standorte .quick-list,
.kl-standorte .location-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: .85rem;
}

.kl-standorte .quick-card,
.kl-standorte .location-card {
  width: 100%;
  background: var(--kl-color-surface-cream);
  border: 1px solid var(--kl-alpha-shadow-070);
  border-left: 8px solid var(--accent-base);
  border-radius: 12px;
  box-shadow: 0 3px 8px var(--kl-alpha-shadow-045);
}

.kl-standorte .quick-card {
  padding: .85rem 1rem .95rem;
}

.kl-standorte .location-card {
  padding: .95rem 1rem 1.05rem;
}

.kl-standorte .paged-item.is-hidden {
  display: none !important;
}

.kl-standorte .quick-card.type-buero,
.kl-standorte .location-card.type-buero {
  border-left-color: var(--magenta);
}

.kl-standorte .quick-card.type-anmeldestelle,
.kl-standorte .location-card.type-anmeldestelle {
  border-left-color: var(--accent-blue);
}

.kl-standorte .quick-card.type-sozialpartner,
.kl-standorte .location-card.type-sozialpartner {
  border-left-color: var(--kl-color-green-light);
}

.kl-standorte .quick-card.type-telefonservice,
.kl-standorte .location-card.type-telefonservice {
  border-left-color: var(--kl-color-orange-light);
}

.kl-standorte .location-top {
  display: flex;
  justify-content: flex-start;
  gap: .6rem;
  align-items: flex-start;
  margin-bottom: .55rem;
  flex-wrap: wrap;
}

.kl-standorte .location-tag {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .42rem 1rem;
  border-radius: 2px;
  font-weight: 900;
  font-size: var(--kl-font-size-115);
  border: 0;
  border-bottom: 1px solid var(--kl-alpha-shadow-010);
  background: var(--kl-color-yellow-soft);
  color: var(--kl-color-dark);
  white-space: nowrap;
  box-shadow: none;
  min-height: 1.55rem;
}

.kl-standorte .type-icon {
  display: inline-block;
  font-size: var(--kl-font-size-em-220);
  line-height: 1;
}

.kl-standorte .quick-title {
  font-weight: 900;
  font-size: var(--kl-font-size-135);
  line-height: 1.25;
  margin: .1rem 0 .5rem;
}

.kl-standorte .location-name {
  font-weight: 900;
  font-size: var(--kl-font-size-140);
  line-height: 1.25;
  margin: .2rem 0 .75rem;
}

.kl-standorte .location-line {
  margin: .35rem 0;
  line-height: 1.5;
}

.kl-standorte .location-line .lbl {
  display: inline-block;
  min-width: 8.5ch;
  color: var(--kl-alpha-shadow-072);
  font-weight: 800;
}

.kl-standorte .location-muted {
  color: var(--kl-alpha-shadow-072);
}

.kl-standorte .empty-card {
  padding: .85rem 1rem;
  background: var(--kl-color-white);
  border: 1px dashed var(--kl-alpha-shadow-018);
  border-radius: 12px;
  color: var(--kl-alpha-shadow-072);
  font-weight: 800;
}

/* ==================================================
   29-06 BUTTONS / LINKS / KOPIEREN
================================================== */

.kl-standorte a,
.kl-standorte a:hover,
.kl-standorte a:focus,
.kl-standorte a *,
.kl-standorte a:hover * {
  text-decoration: none !important;
}

.kl-standorte .link-line {
  display: flex;
  align-items: flex-start;
  gap: .45rem;
  flex-wrap: wrap;
}

.kl-standorte .link-buttons {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
}

.kl-standorte .soft-link {
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--kl-alpha-shadow-013);
  border-radius: 999px;
  background: var(--kl-alpha-white-780);
  color: var(--kl-color-dark);
  text-decoration: none;
  font-weight: 800;
  line-height: 1.25;
  box-shadow: 0 1px 5px var(--kl-alpha-shadow-060);
  transition:
    background-color .18s ease,
    box-shadow .18s ease,
    transform .18s ease,
    border-color .18s ease;
}

.kl-standorte .soft-link:hover {
  background: var(--kl-color-white);
  box-shadow: 0 4px 10px var(--kl-alpha-shadow-012);
  transform: translateY(-1px);
  border-color: var(--kl-alpha-magenta-280);
}

.kl-standorte .details-body a,
.kl-standorte .quick-card a,
.kl-standorte .location-card a {
  color: var(--kl-color-blue-dark);
  font-weight: 800;
  text-decoration: none;
}

.kl-standorte .details-body a:hover,
.kl-standorte .quick-card a:hover,
.kl-standorte .location-card a:hover {
  color: var(--kl-color-blue-darker);
  text-decoration: none;
}

.kl-standorte .phone-link {
  display: inline-flex;
  align-items: center;
  gap: .32rem;
  padding: .18rem .6rem;
  border: 1px solid var(--kl-alpha-blue-dark-180);
  border-radius: 999px;
  background: var(--kl-alpha-white-820);
  color: var(--kl-color-blue-dark) !important;
  font-weight: 900 !important;
  text-decoration: none !important;
  line-height: 1.25;
  box-shadow: 0 1px 5px var(--kl-alpha-shadow-070);
  transition:
    background-color .18s ease,
    box-shadow .18s ease,
    transform .18s ease,
    border-color .18s ease;
}

.kl-standorte .phone-link:hover,
.kl-standorte .phone-link:focus {
  background: var(--kl-color-white);
  color: var(--kl-color-blue-darker) !important;
  box-shadow: 0 4px 10px var(--kl-alpha-shadow-012);
  transform: translateY(-1px);
  border-color: var(--kl-alpha-blue-340);
  text-decoration: none !important;
}

.kl-standorte .phone-icon {
  display: inline-block;
  font-size: var(--kl-font-size-em-135);
  line-height: 1;
  transform: translateY(-.02em);
}

.kl-standorte .address-copy {
  appearance: none;
  border: 0 !important;
  background: transparent !important;
  padding: 0 !important;
  margin: 0 !important;
  color: inherit !important;
  text-align: left !important;
  font: inherit;
  text-decoration: none !important;
  cursor: pointer;
  min-height: 0;
  text-transform: none !important;
  letter-spacing: normal !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  font-weight: inherit !important;
}

.kl-standorte .address-copy:hover {
  color: var(--accent-base);
  text-decoration: none;
}

.kl-standorte .copy-feedback {
  display: inline-block;
}

/* ==================================================
   29-07 QUICK-ZEITEN / BADGES
================================================== */

.kl-standorte .quick-time {
  display: inline-block;
  margin: .18rem .45rem .62rem 0;
  padding: .34rem .82rem .34rem .72rem;
  border-radius: 0 14px 14px 0;
  background: var(--kl-color-warning-soft);
  border-left: 8px solid var(--kl-color-orange);
  color: var(--kl-color-dark);
  font-size: var(--kl-font-size-112);
  line-height: 1.35;
  font-weight: 900;
  box-shadow:
    inset 0 0 0 1px var(--kl-alpha-orange-240),
    0 1px 4px var(--kl-alpha-shadow-060);
}

.kl-standorte .quick-time-list {
  display: flex;
  align-items: center;
  gap: .55rem;
  flex-wrap: wrap;
  margin: .3rem 0 .75rem;
}

.kl-standorte .quick-time-badge {
  display: inline-flex;
  align-items: center;
  padding: .34rem .82rem .34rem .72rem;
  border-radius: 0 14px 14px 0;
  background: var(--kl-color-warning-soft);
  border-left: 8px solid var(--kl-color-orange);
  color: var(--kl-color-dark);
  font-size: var(--kl-font-size-112);
  line-height: 1.35;
  font-weight: 900;
  box-shadow:
    inset 0 0 0 1px var(--kl-alpha-shadow-010),
    0 1px 4px var(--kl-alpha-shadow-060);
  white-space: nowrap;
}

.kl-standorte .quick-time-badge.is-today {
  background: var(--kl-color-green-soft);
  border-left-color: var(--kl-color-green);
}

.kl-standorte .quick-time-badge.is-tomorrow {
  background: var(--kl-color-warning-soft);
  border-left-color: var(--kl-color-orange);
}

.kl-standorte .quick-time-badge.is-after-tomorrow {
  background: var(--kl-color-blue-soft);
  border-left-color: var(--kl-color-blue);
}

.kl-standorte .quick-time-badge.is-plus-3 {
  background: var(--kl-color-accent-soft-bg);
  border-left-color: var(--kl-color-magenta);
}

.kl-standorte .quick-time-badge.is-plus-4 {
  background: var(--kl-color-turquoise-soft);
  border-left-color: var(--kl-color-turquoise);
}

.kl-standorte .quick-time-badge.is-plus-5 {
  background: var(--kl-color-purple-soft);
  border-left-color: var(--kl-color-purple);
}

.kl-standorte .quick-time-badge.is-plus-6 {
  background: var(--kl-color-orange-soft);
  border-left-color: var(--kl-color-orange-strong);
}

.kl-standorte .quick-time-badge.is-plus-7 {
  background: var(--kl-color-surface-cool);
  border-left-color: var(--kl-color-muted-bluegrey);
}

/* ==================================================
   29-08 ZEITENLISTEN
================================================== */

.kl-standorte .time-block {
  margin-top: .85rem;
  padding-top: .75rem;
  border-top: 1px solid var(--kl-alpha-shadow-012);
}

.kl-standorte .time-groups {
  display: grid;
  grid-template-columns: 1fr;
  gap: .9rem 1.4rem;
}

.kl-standorte .time-groups.is-multi {
  grid-template-columns: repeat(2,minmax(0,1fr));
}

.kl-standorte .time-title {
  font-weight: 900;
  margin: .4rem 0 .35rem;
}

.kl-standorte .time-list {
  margin: .25rem 0 0 0;
  padding-left: 1.15rem;
}

.kl-standorte .time-list li {
  margin: .22rem 0;
  line-height: 1.45;
}

.kl-standorte .time-list li.time-row-continuation {
  list-style: none;
}

.kl-standorte .time-row {
  display: grid;
  grid-template-columns: minmax(14.8rem,max-content) max-content max-content 1fr;
  column-gap: 1rem;
  align-items: baseline;
}

.kl-standorte .time-day {
  font-weight: 800;
  white-space: nowrap !important;
}

.kl-standorte .time-hours {
  white-space: nowrap !important;
  word-break: keep-all !important;
  overflow-wrap: normal !important;
}

.kl-standorte .time-rel {
  white-space: nowrap;
  font-weight: inherit;
  font-size: inherit;
  color: inherit;
}

.kl-standorte .time-rel-word {
  font-weight: inherit;
  font-size: inherit;
}

.kl-standorte .time-rel-today {
  color: var(--kl-color-green);
}

.kl-standorte .time-rel-tomorrow {
  color: var(--kl-color-warning-brown);
}

.kl-standorte .time-rel-after-tomorrow {
  color: var(--kl-color-blue);
}

.kl-standorte .time-note {
  margin: .12rem 0 .25rem 1.15rem;
  color: var(--kl-alpha-shadow-068);
  font-style: italic;
}

.kl-standorte .time-note-inline {
  color: var(--kl-alpha-shadow-068);
  font-style: italic;
  white-space: nowrap;
}

/* ==================================================
   29-09 MEHR-ANZEIGEN / PAGING
================================================== */

.kl-standorte .quick-more {
  justify-self: center;
  margin: .35rem auto 0;
  border: 2px solid var(--kl-alpha-shadow-016);
  border-radius: 999px;
  background: var(--kl-color-white);
  color: var(--kl-color-dark);
  font-weight: 900;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .55rem;
  box-shadow: 0 3px 10px var(--kl-alpha-shadow-010);
  transition:
    transform .18s ease,
    box-shadow .18s ease,
    border-color .18s ease,
    background-color .18s ease;
}

.kl-standorte .quick-more:hover {
  transform: translateY(-1px);
  box-shadow: 0 7px 16px var(--kl-alpha-shadow-016);
  border-color: var(--kl-alpha-magenta-420);
  background: var(--kl-alpha-surface-950);
}

.kl-standorte .quick-more .more-arrow {
  font-weight: 900;
  transform: translateY(-.03em);
}

/* ==================================================
   29-10 ERWEITERUNG V17.12 / SCHLIESSHINWEISE / TOUCH
================================================== */

.kl-standorte .details-body,
.kl-standorte .sysbox,
.kl-standorte .loading {
  font-size: var(--kl-font-size-em-130);
}

.kl-standorte .toggle-title {
  font-size: var(--kl-font-size-fluid-185-245);
  line-height: 1.12;
}

.kl-standorte .section-heading {
  font-size: var(--kl-font-size-fluid-185-245);
  line-height: 1.12;
}

.kl-standorte .location-name,
.kl-standorte .quick-title {
  font-size: var(--kl-font-size-200);
  line-height: 1.25;
  margin: .48rem 0 1rem;
}

.kl-standorte .toggle-action {
  font-size: var(--kl-font-size-160);
  line-height: 1.1;
  min-width: 9.4rem;
}

.kl-standorte .toggle-action .is-closed::before,
.kl-standorte .toggle-action .is-open::before {
  font-size: var(--kl-font-size-160);
  line-height: 1;
  color: var(--magenta);
}

.kl-standorte .link-buttons {
  gap: .72rem;
  row-gap: .55rem;
}

.kl-standorte .location-line.link-line {
  position: relative;
  margin: .58rem 0;
}

.kl-standorte .location-line.link-line + .location-line.link-line {
  margin-top: .85rem;
}

.kl-standorte .soft-link {
  padding: .24rem .68rem;
  font-size: var(--kl-font-size-em-086);
  gap: .34rem;
}

.kl-standorte .soft-link .route-icon {
  display: inline-block;
  font-size: var(--kl-font-size-em-155);
  line-height: 1;
  transform: translateY(.02em);
}

.kl-standorte .soft-link .route-label {
  display: inline-block;
  line-height: 1.15;
}

.kl-standorte .quick-more {
  padding: .72rem 1.45rem;
  font-size: var(--kl-font-size-135);
  line-height: 1.12;
  border-width: 3px;
}

.kl-standorte .quick-more .more-arrow {
  font-size: var(--kl-font-size-195);
  color: var(--magenta);
  line-height: .7;
}

.kl-standorte .time-closure-note {
  display: block;
  margin: .12rem 0 .16rem -1.02rem;
  padding: .05rem .52rem .05rem .46rem;
  border-left: 4px solid var(--kl-alpha-red-dark-350);
  border-radius: 0 7px 7px 0;
  background: var(--kl-alpha-white-380);
  color: var(--kl-color-alert-red);
  font-size: var(--kl-font-size-em-096);
  line-height: 1.35;
  font-weight: 500;
  box-shadow: none;
}

.kl-standorte .time-closure-note .closure-date {
  font-weight: 600;
  color: var(--kl-color-alert-red);
}

.kl-standorte .copy-feedback {
  position: absolute;
  left: 9rem;
  top: 100%;
  transform: translateY(.18rem);
  margin-left: 0;
  padding: .18rem .62rem;
  border-radius: 999px;
  background: var(--kl-color-green-soft);
  color: var(--kl-color-green-dark);
  font-size: var(--kl-font-size-108);
  font-weight: 900;
  line-height: 1.15;
  box-shadow: 0 3px 10px var(--kl-alpha-shadow-014);
  white-space: nowrap;
  z-index: 20;
  pointer-events: none;
  opacity: 0;
  transition: opacity .12s ease;
}

.kl-standorte .copy-feedback:not(:empty) {
  opacity: 1;
}

/* ==================================================
   29-11 RESPONSIVE
================================================== */

@media (max-width: 700px) {
  .kl-standorte .toggle-details > summary {
    align-items: flex-start;
    flex-direction: column;
  }

  .kl-standorte .toggle-action {
    align-self: flex-start;
    min-width: 0;
  }

  .kl-standorte .time-groups.is-multi {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 560px) {
  .kl-standorte .quick-time {
    display: block;
    width: fit-content;
    max-width: 100%;
  }

  .kl-standorte .time-row {
    grid-template-columns: minmax(13.5rem,max-content) max-content max-content 1fr;
    column-gap: .85rem;
    overflow-x: auto;
  }

  .kl-standorte .location-line .lbl {
    display: block;
    min-width: 0;
  }

  .kl-standorte .link-line {
    display: block;
  }

  .kl-standorte .link-buttons {
    margin-top: .25rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .kl-standorte * {
    transition: none !important;
    animation: none !important;
  }
}

/* ######################################################## */
/* #### 29-12 GRID-/READMORE-LINKS ########################### */
/* ######################################################## */

/* Mehr-Link in Grid-Karten:
   langer Domaintext darf umbrechen, Pfeil bleibt mittig */
.grid-readmore-link {
    display: inline-flex;
    align-items: center;
    gap: 0.35em;
    max-width: 100%;
    line-height: 1.25;
}

.grid-readmore-text {
    display: inline-block;
    max-width: 100%;
    overflow-wrap: anywhere;
    word-break: normal;
}

.grid-readmore-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    line-height: 1;
}
/* ==================================================
   30 Willkommes Text
================================================== */

.kl-welcome-text,
.entry-content .kl-welcome-text {
    box-sizing: border-box;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;

    max-width: var(--kl-layout-width);
    width: calc(100% - (var(--kl-layout-side-gap) * 2));

    margin: 0 auto 1.6rem auto;
    padding: 0;

    color: var(--kl-color-text);
    font-family: var(--kl-font-main);
    text-align: center;
}

/* Wenn der Shortcode in einer Spalte / Willkommensspalte sitzt:
   Spaltenbreite nutzen, nicht auf volle 100rem ziehen. */
.wp-block-column .kl-welcome-text,
.wp-block-group .kl-welcome-text,
.welcome-colum .kl-welcome-text,
.entry-content .wp-block-column .kl-welcome-text,
.entry-content .welcome-colum .kl-welcome-text {
    max-width: 100%;
    width: 100%;
    margin-left: 0;
    margin-right: 0;
}

/* Fester Willkommenstitel */
.kl-welcome-text > .kl-welcome-heading,
.entry-content .kl-welcome-text > .kl-welcome-heading,
h2.kl-welcome-heading {
    box-sizing: border-box;
    display: block !important;
    flex: 0 0 auto !important;

    width: 100% !important;
    max-width: 100% !important;

    margin: 0 0 0.55rem 0 !important;
    padding: 0 !important;

    color: var(--kl-color-text);
    font-family: var(--kl-font-bold) !important;
    font-size: var(--kl-font-size-h2);
    font-weight: 700;
    line-height: 1.12;
    letter-spacing: normal;
    text-align: center !important;

    white-space: normal;
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
}

/* Dynamischer Wetter-/Kulturtext darunter – kleiner als h2, nicht fett, keine Worttrennung */
.kl-welcome-text > .kl-welcome-message,
.entry-content .kl-welcome-text > .kl-welcome-message,
p.kl-welcome-message {
    box-sizing: border-box;
    display: block !important;
    flex: 0 0 auto !important;
    clear: both;

    width: 100% !important;
    max-width: 100% !important;

    margin: 0 !important;
    padding: 0 !important;

    color: var(--kl-color-text);
    font-family: var(--kl-font-main) !important;
    font-size: var(--kl-font-size-fluid-142-168);
    font-weight: 400 !important;
    line-height: 1.42;
    letter-spacing: normal;
    text-align: center !important;

    white-space: normal;
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
}

/* Tablet */
@media (max-width: 900px) {
    .kl-welcome-text,
    .entry-content .kl-welcome-text {
        margin-bottom: 1.4rem;
    }

    .kl-welcome-text > .kl-welcome-heading,
    .entry-content .kl-welcome-text > .kl-welcome-heading,
    h2.kl-welcome-heading {
        font-size: clamp(2.35rem, 5.2vw, var(--kl-font-size-h2));
        line-height: 1.14;
        margin-bottom: 0.45rem !important;

        overflow-wrap: normal;
        word-break: normal;
        hyphens: none;
    }

    .kl-welcome-text > .kl-welcome-message,
    .entry-content .kl-welcome-text > .kl-welcome-message,
    p.kl-welcome-message {
        font-family: var(--kl-font-main) !important;
        font-size: var(--kl-font-size-fluid-134-152);
        font-weight: 400 !important;
        line-height: 1.43;
        text-align: center !important;

        overflow-wrap: normal;
        word-break: normal;
        hyphens: none;
    }
}

/* Kleine Displays: sauber gestapelt und mittig */
@media (max-width: 700px) {
    .kl-welcome-text,
    .entry-content .kl-welcome-text {
        width: calc(100% - 4rem);
        max-width: calc(100% - 4rem);
        margin: 0 auto 1.25rem auto;
        align-items: center !important;
        text-align: center;
    }

    .wp-block-column .kl-welcome-text,
    .wp-block-group .kl-welcome-text,
    .welcome-colum .kl-welcome-text,
    .entry-content .wp-block-column .kl-welcome-text,
    .entry-content .welcome-colum .kl-welcome-text {
        width: 100%;
        max-width: 100%;
        margin-left: 0;
        margin-right: 0;
    }

    .kl-welcome-text > .kl-welcome-heading,
    .entry-content .kl-welcome-text > .kl-welcome-heading,
    h2.kl-welcome-heading {
        font-size: var(--kl-font-size-fluid-205-255);
        line-height: 1.15;
        margin: 0 0 0.4rem 0 !important;
        text-align: center !important;

        overflow-wrap: normal;
        word-break: normal;
        hyphens: none;
    }

    .kl-welcome-text > .kl-welcome-message,
    .entry-content .kl-welcome-text > .kl-welcome-message,
    p.kl-welcome-message {
        font-family: var(--kl-font-main) !important;
        font-size: var(--kl-font-size-fluid-124-143);
        font-weight: 400 !important;
        line-height: 1.45;
        text-align: center !important;

        overflow-wrap: normal;
        word-break: normal;
        hyphens: none;
    }
}

/* Sehr kleine Displays */
@media (max-width: 420px) {
    .kl-welcome-text,
    .entry-content .kl-welcome-text {
        width: calc(100% - 3rem);
        max-width: calc(100% - 3rem);
    }

    .wp-block-column .kl-welcome-text,
    .wp-block-group .kl-welcome-text,
    .welcome-colum .kl-welcome-text,
    .entry-content .wp-block-column .kl-welcome-text,
    .entry-content .welcome-colum .kl-welcome-text {
        width: 100%;
        max-width: 100%;
    }

    .kl-welcome-text > .kl-welcome-heading,
    .entry-content .kl-welcome-text > .kl-welcome-heading,
    h2.kl-welcome-heading {
        font-size: var(--kl-font-size-fluid-190-225);
        line-height: 1.16;

        overflow-wrap: normal;
        word-break: normal;
        hyphens: none;
    }

    .kl-welcome-text > .kl-welcome-message,
    .entry-content .kl-welcome-text > .kl-welcome-message,
    p.kl-welcome-message {
        font-family: var(--kl-font-main) !important;
        font-size: var(--kl-font-size-fluid-116-132);
        font-weight: 400 !important;
        line-height: 1.46;

        overflow-wrap: normal;
        word-break: normal;
        hyphens: none;
    }
}

/* ==================================================
31 MULTISITE / FARBVARIANTE BLAU
================================================== */

/*
Utopia / blaue Multisite-Variante

Die Klasse .kl-theme-blue wird per Blog-ID in functions.php auf dem body gesetzt.

Grundprinzip:
- KulturLeben bleibt standardmäßig Magenta.
- Utopia überschreibt zentrale Akzentwerte lokal auf Blau.
- Bestehende Regeln mit var(--kl-color-magenta) werden automatisch blau.
- Gutenberg-/TwentyTwenty-Akzentklassen wie .has-accent-color und
  .has-accent-background-color werden ebenfalls überschrieben.
- Separatoren mit currentColor werden dadurch auf Utopia blau.
- Pfeil-Icons, die den magenta Pfeil nutzen, werden auf Utopia auf den
  blauen Pfeil umgeleitet.
- Pink-/Glow-Effekte werden für Utopia auf ein weiches Blau umgestellt.
*/

body.kl-theme-blue {
  /* Hauptakzent: Magenta wird für Utopia lokal zu Blau */
  --kl-color-magenta: rgb(1, 125, 199);
  --kl-color-magenta-alt: rgb(1, 125, 199);
  --kl-color-magenta-vivid: rgb(1, 125, 199);
  --kl-color-magenta-light: rgb(72, 166, 220);
  --kl-color-magenta-light-2: rgb(105, 186, 230);

  /* Weiche Utopia-Flächen */
  --kl-color-magenta-soft: rgb(230, 244, 252);
  --kl-color-magenta-soft-2: rgb(208, 233, 248);
  --kl-color-active-underline: rgb(122, 195, 234);
  --kl-color-accent-soft-bg: rgb(230, 244, 252);

  /*
  WordPress/Gutenberg-Akzentvariable.
  Wichtig für Block-Klassen wie:
  .has-accent-color
  .has-accent-background-color
  */
  --wp--preset--color--accent: rgb(1, 125, 199);

  /*
  Bestehende ältere/zusätzliche Akzent-Aliase.
  Diese bleiben hier bewusst erhalten, damit ältere Regeln oder Plugin-Ausgaben,
  die noch auf diese Variablen zugreifen, automatisch Utopia-Blau nutzen.
  */
  --magenta: rgb(1, 125, 199);
  --accent-base: rgb(1, 125, 199);
  --accent-blue: rgb(1, 125, 199);

  /* Transparente Utopia-Akzentwerte */
  --kl-alpha-magenta-080: rgba(1, 125, 199, .08);
  --kl-alpha-magenta-180: rgba(1, 125, 199, .18);
  --kl-alpha-magenta-280: rgba(1, 125, 199, .28);
  --kl-alpha-magenta-350: rgba(1, 125, 199, .35);
  --kl-alpha-magenta-420: rgba(1, 125, 199, .42);
  --kl-alpha-magenta-450: rgba(1, 125, 199, .45);
  --kl-alpha-magenta-620: rgba(1, 125, 199, .62);
  --kl-alpha-magenta-820: rgba(1, 125, 199, .82);

  /*
  Utopia-Glow:
  Ersetzt den pinken Glow, z.B. beim Spendenbalken .klsp-pulse,
  durch ein weiches Blau.
  */
  --kl-alpha-pink-glow: rgba(1, 125, 199, .35);

  /*
  Pfeil-Icons:
  Alle bestehenden Regeln, die den magenta Pfeil verwenden,
  bekommen auf Utopia automatisch den blauen Pfeil.
  */
  --kl-icon-pfeil-magenta: var(--kl-icon-pfeil-blau);
}

/* --------------------------------------------------
31-01 UTOPIA / WORDPRESS-AKZENTFARBEN
-------------------------------------------------- */

/*
TwentyTwenty und Gutenberg setzen Akzentfarben teilweise direkt über:
:root .has-accent-color
:root .has-accent-background-color

Diese Regeln überschreiben das gezielt nur auf Utopia.
*/

body.kl-theme-blue .has-accent-color,
body.kl-theme-blue :where(.has-accent-color),
body.kl-theme-blue .color-accent,
body.kl-theme-blue .color-accent-hover:hover,
body.kl-theme-blue .color-accent-hover:focus,
body.kl-theme-blue .has-drop-cap:not(:focus)::first-letter,
body.kl-theme-blue .wp-block-button.is-style-outline,
body.kl-theme-blue .entry-content .has-accent-color {
  color: var(--kl-color-magenta) !important;
}

body.kl-theme-blue .has-accent-background-color,
body.kl-theme-blue :where(.has-accent-background-color),
body.kl-theme-blue .bg-accent,
body.kl-theme-blue .bg-accent-hover:hover,
body.kl-theme-blue .bg-accent-hover:focus,
body.kl-theme-blue .wp-block-button__link,
body.kl-theme-blue .wp-block-file .wp-block-file__button,
body.kl-theme-blue .comment-reply-link,
body.kl-theme-blue .entry-content .has-accent-background-color {
  background-color: var(--kl-color-magenta) !important;
}

/*
Wenn ein Block gleichzeitig has-accent-background-color nutzt,
soll der Text wie bei KulturLeben weiß bleiben.
*/
body.kl-theme-blue .has-accent-background-color,
body.kl-theme-blue .entry-content .has-accent-background-color {
  color: var(--kl-color-white) !important;
}

/* --------------------------------------------------
31-02 UTOPIA / SEPARATOREN UND TRENNLINIEN
-------------------------------------------------- */

/*
Gutenberg-/TwentyTwenty-Separatoren nutzen currentColor.
Darum muss die Farbe des hr selbst auf Utopia blau gesetzt werden.

Betrifft z.B.:
<hr class="wp-block-separator has-text-color has-accent-color
has-alpha-channel-opacity has-accent-background-color has-background">
*/

body.kl-theme-blue .entry-content hr.has-accent-color,
body.kl-theme-blue .entry-content hr.has-accent-background-color,
body.kl-theme-blue .entry-content hr.wp-block-separator.has-accent-color,
body.kl-theme-blue .entry-content hr.wp-block-separator.has-accent-background-color,
body.kl-theme-blue hr.wp-block-separator.has-accent-color,
body.kl-theme-blue hr.wp-block-separator.has-accent-background-color,
body.kl-theme-blue hr.styled-separator.has-accent-color,
body.kl-theme-blue hr.styled-separator.has-accent-background-color {
  color: var(--kl-color-magenta) !important;
  background-color: transparent !important;
  border-color: var(--kl-color-magenta) !important;
}

/*
TwentyTwenty zeichnet die Separator-Linie über currentColor als Gradient.
Diese Regel stellt sicher, dass Linie und Mittelzeichen auf Utopia blau sind.
*/
body.kl-theme-blue .entry-content hr,
body.kl-theme-blue hr.styled-separator {
  color: var(--kl-color-magenta);
}

/*
Falls ein Separator durch Gutenberg eine Accent-Hintergrundfarbe bekommt,
darf diese nicht als gefüllter Balken erscheinen.
Die eigentliche Linie bleibt über currentColor/Gradient sichtbar.
*/
body.kl-theme-blue .entry-content hr.wp-block-separator.has-accent-background-color,
body.kl-theme-blue hr.wp-block-separator.has-accent-background-color {
  background-color: transparent !important;
}

/*
Pseudo-Elemente der TwentyTwenty-Separatoren:
Sie nutzen background: currentColor.
Diese Zusatzregel erzwingt auf Utopia Blau.
*/
body.kl-theme-blue .entry-content hr::before,
body.kl-theme-blue .entry-content hr::after,
body.kl-theme-blue hr.styled-separator::before,
body.kl-theme-blue hr.styled-separator::after {
  background: var(--kl-color-magenta) !important;
}

/* --------------------------------------------------
31-03 UTOPIA / COOKIE-HINWEIS BLAU
-------------------------------------------------- */

/*
BST DSGVO Cookie Hinweis:
Das Plugin setzt die Hintergrundfarbe teilweise direkt als Inline-Style.
Deshalb braucht Utopia hier ein gezieltes !important-Override.

Betrifft:
<div class="bst-panel group bst-panel-fixed-top" style="background: rgb(229, 0, 126); ...">
*/

body.kl-theme-blue .bst-panel,
body.kl-theme-blue .bst-panel.group,
body.kl-theme-blue .bst-panel-fixed-top,
body.kl-theme-blue .bst-panel.group.bst-panel-fixed-top {
  background: var(--kl-color-magenta) !important;
  background-color: var(--kl-color-magenta) !important;
  border-bottom-color: var(--kl-color-magenta) !important;
}

/*
Cookie-Hinweis Text und Links:
Text bleibt weiß, damit der Kontrast auf Blau erhalten bleibt.
*/

body.kl-theme-blue .bst-panel,
body.kl-theme-blue .bst-panel .bst-msg,
body.kl-theme-blue .bst-panel .bst-links,
body.kl-theme-blue .bst-panel .bst-links a,
body.kl-theme-blue .bst-panel .bst-info-btn {
  color: var(--kl-color-white) !important;
}

/*
Cookie-Hinweis Button:
Normalzustand:
- Button im Utopia-Blau
- Rahmen weiß
- Schrift weiß

Wichtig:
Der Text "Verstanden" muss im Normalzustand weiß bleiben,
weil Blau auf Weiß sonst zu schwach wirkt bzw. schlechter lesbar ist.
*/

body.kl-theme-blue .bst-panel .bst-accept,
body.kl-theme-blue .bst-panel .bst-accept-btn,
body.kl-theme-blue .bst-panel button,
body.kl-theme-blue .bst-panel .btn {
  background-color: var(--kl-color-magenta) !important;
  border-color: var(--kl-color-white) !important;
  color: var(--kl-color-white) !important;
}

/*
Link im Button:
Viele Cookie-Plugins setzen den Button-Text als <a> innerhalb des Buttons.
Darum muss auch dieser Link separat überschrieben werden.

Normalzustand:
- Schrift weiß
- Unterstreichung weiß bzw. transparent je nach Plugin-Stil
*/

body.kl-theme-blue .bst-panel .bst-accept a,
body.kl-theme-blue .bst-panel .bst-accept-btn a,
body.kl-theme-blue .bst-panel button a,
body.kl-theme-blue .bst-panel .btn a {
  color: var(--kl-color-white) !important;
  text-decoration-color: var(--kl-color-white) !important;
}

/*
Hover/Fokus:
Ruhiger Hover mit weiß/blauer Umkehrung.

Hoverzustand:
- Hintergrund weiß
- Schrift blau
- Rahmen weiß

Das Plugin setzt Hover teilweise per JavaScript,
deshalb ebenfalls mit hoher Spezifität und !important.
*/

body.kl-theme-blue .bst-panel .bst-accept:hover,
body.kl-theme-blue .bst-panel .bst-accept:focus,
body.kl-theme-blue .bst-panel .bst-accept-btn:hover,
body.kl-theme-blue .bst-panel .bst-accept-btn:focus,
body.kl-theme-blue .bst-panel button:hover,
body.kl-theme-blue .bst-panel button:focus,
body.kl-theme-blue .bst-panel .btn:hover,
body.kl-theme-blue .bst-panel .btn:focus {
  background-color: var(--kl-color-white) !important;
  border-color: var(--kl-color-white) !important;
  color: var(--kl-color-magenta) !important;
}

body.kl-theme-blue .bst-panel .bst-accept:hover a,
body.kl-theme-blue .bst-panel .bst-accept:focus a,
body.kl-theme-blue .bst-panel .bst-accept-btn:hover a,
body.kl-theme-blue .bst-panel .bst-accept-btn:focus a,
body.kl-theme-blue .bst-panel button:hover a,
body.kl-theme-blue .bst-panel button:focus a,
body.kl-theme-blue .bst-panel .btn:hover a,
body.kl-theme-blue .bst-panel .btn:focus a {
  color: var(--kl-color-magenta) !important;
  text-decoration-color: var(--kl-color-magenta) !important;
}

/*
Weitere-Informationen-Link:
Der Link bleibt auf dem blauen Cookie-Balken weiß.
Bei Hover/Fokus bleibt er ebenfalls weiß, bekommt aber eine klare
weiße Unterstreichung.
*/

body.kl-theme-blue .bst-panel .bst-info-btn,
body.kl-theme-blue .bst-panel .bst-info-btn:visited {
  color: var(--kl-color-white) !important;
  text-decoration-color: var(--kl-color-white) !important;
}

body.kl-theme-blue .bst-panel .bst-info-btn:hover,
body.kl-theme-blue .bst-panel .bst-info-btn:focus {
  color: var(--kl-color-white) !important;
  text-decoration: underline !important;
  text-decoration-color: var(--kl-color-white) !important;
}
/* --------------------------------------------------
31-05 UTOPIA / LOGO TAUSCH
-------------------------------------------------- */

/*
Utopia:
Auf der Utopia-Subsite wird das geklonte KulturLeben-Logo
visuell durch das Werkstatt-Utopia-Logo aus dem Child-Theme ersetzt.

Voraussetzung:
<body> enthält .kl-theme-blue

Logo-Datei:
/wp-content/themes/twentytwenty-child/Logo_WerkstattUtopia_web.jpg
*/

body.kl-theme-blue .site-logo img.custom-logo,
body.kl-theme-blue .header-titles-wrapper .site-logo img,
body.kl-theme-blue .custom-logo-link img,
body.kl-theme-blue img.custom-logo {
  content: url("Logo_WerkstattUtopia_web.jpg");
  width: auto !important;
  height: auto !important;
  max-width: 34rem !important;
  max-height: 11rem !important;
  object-fit: contain;
}

/*
Hover-Verhalten vom allgemeinen Header bleibt erhalten,
aber das Logo soll nicht verzerrt oder gequetscht werden.
*/

body.kl-theme-blue .custom-logo-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/*
Mobile:
Logo etwas kompakter halten.
*/

@media (max-width: 700px) {
  body.kl-theme-blue .site-logo img.custom-logo,
  body.kl-theme-blue .header-titles-wrapper .site-logo img,
  body.kl-theme-blue .custom-logo-link img,
  body.kl-theme-blue img.custom-logo {
    max-width: 24rem !important;
    max-height: 8rem !important;
  }
}

@media (max-width: 420px) {
  body.kl-theme-blue .site-logo img.custom-logo,
  body.kl-theme-blue .header-titles-wrapper .site-logo img,
  body.kl-theme-blue .custom-logo-link img,
  body.kl-theme-blue img.custom-logo {
    max-width: calc(100vw - 4rem) !important;
    max-height: 7rem !important;
  }
}
/* --------------------------------------------------
31-06 UTOPIA / SPRACH-ICONS EINZELN AUSBLENDEN
-------------------------------------------------- */

/*
Utopia:
Die Icons bzw. Kacheln für Einfache/Leichte Sprache und Gebärdensprache
können einzeln ausgeblendet werden.

Unterschied Desktop / Mobile:

Desktop:
- Der Platz soll erhalten bleiben.
- Deshalb NICHT display:none verwenden.
- visibility:hidden erhält den Layout-Platz.
- pointer-events:none verhindert Klicks auf unsichtbare Links.

Mobile:
- Wenn nur ein Icon ausgeblendet wird, bleibt der Platz ebenfalls erhalten.
- Wenn beide Icons ausgeblendet werden, fällt der komplette mobile
  Sprachbereich weg, damit kein leerer Abstand im mobilen Menü bleibt.

Aktueller Wunsch:
- Einfache/Leichte Sprache bleibt sichtbar.
- Gebärdensprache wird ausgeblendet.
*/

/* Grundsicherheit: Sprachschalter bleibt als Layout-Block erhalten */
body.kl-theme-blue .language-switch {
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Grundsicherheit: mobile Sprach-Widgets behalten ihr Raster */
body.kl-theme-blue .menu-modal .mobile-widgets {
  display: grid;
}

/* --------------------------------------------------
AKTIV:
Gebärdensprache auf Utopia ausblenden
Desktop + Mobile

Desktop:
- Platz bleibt erhalten.

Mobile:
- Platz der Gebärdensprache-Kachel bleibt erhalten,
  weil nur ein Icon ausgeblendet wird.
-------------------------------------------------- */

/* Desktop: Gebärdensprache ausblenden, Platz erhalten */
body.kl-theme-blue .language-switch a[href="/gebaerdensprache/"],
body.kl-theme-blue .language-switch a[href*="gebaerdensprache"] {
  visibility: hidden !important;
  pointer-events: none !important;
}

/* Mobile: Gebärdensprache-Kachel ausblenden, Platz erhalten */
body.kl-theme-blue .menu-modal .mobile-widgets .widget:has(a[href*="gebaerdensprache"]),
body.kl-theme-blue .menu-modal .mobile-widgets .widget-content:has(a[href*="gebaerdensprache"]) {
  visibility: hidden !important;
  pointer-events: none !important;
}

/* --------------------------------------------------
OPTION A:
Einfache/Leichte Sprache auf Utopia ausblenden
Desktop + Mobile

Wenn NUR Einfache/Leichte Sprache ausgeblendet wird:
- Desktop: Platz bleibt erhalten.
- Mobile: Platz bleibt erhalten.

Zum Aktivieren Kommentarzeichen entfernen.
-------------------------------------------------- */

/*
body.kl-theme-blue .language-switch a[href="/einfache-sprache/"],
body.kl-theme-blue .language-switch a[href*="einfache-sprache"] {
  visibility: hidden !important;
  pointer-events: none !important;
}

body.kl-theme-blue .menu-modal .mobile-widgets .widget:has(a[href*="einfache-sprache"]),
body.kl-theme-blue .menu-modal .mobile-widgets .widget-content:has(a[href*="einfache-sprache"]) {
  visibility: hidden !important;
  pointer-events: none !important;
}
*/

/* --------------------------------------------------
OPTION B:
Beide Sprach-Icons/Kacheln auf Utopia ausblenden

Desktop:
- Beide Icon-Plätze bleiben erhalten.

Mobile:
- Der gesamte Sprach-Widget-Bereich fällt weg.
- Dadurch entsteht im mobilen Menü kein leerer Abstand.

Zum Aktivieren Kommentarzeichen entfernen.
Wichtig:
Wenn diese Option aktiv ist, die Einzelregeln oben können bleiben.
-------------------------------------------------- */

/*
body.kl-theme-blue .language-switch a[href="/einfache-sprache/"],
body.kl-theme-blue .language-switch a[href="/gebaerdensprache/"],
body.kl-theme-blue .language-switch a[href*="einfache-sprache"],
body.kl-theme-blue .language-switch a[href*="gebaerdensprache"] {
  visibility: hidden !important;
  pointer-events: none !important;
}

body.kl-theme-blue .menu-modal .mobile-widgets {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
  height: 0 !important;
  min-height: 0 !important;
  overflow: hidden !important;
}
*/

/* --------------------------------------------------
OPTION C:
Beide Sprach-Icons/Kacheln auf Utopia ausblenden,
aber auch im mobilen Menü den Platz erhalten.

Diese Option ist nur als Alternative gedacht.
Nicht gleichzeitig mit OPTION B aktivieren.

Zum Aktivieren Kommentarzeichen entfernen.
-------------------------------------------------- */

/*
body.kl-theme-blue .language-switch a[href="/einfache-sprache/"],
body.kl-theme-blue .language-switch a[href="/gebaerdensprache/"],
body.kl-theme-blue .language-switch a[href*="einfache-sprache"],
body.kl-theme-blue .language-switch a[href*="gebaerdensprache"] {
  visibility: hidden !important;
  pointer-events: none !important;
}

body.kl-theme-blue .menu-modal .mobile-widgets .widget:has(a[href*="einfache-sprache"]),
body.kl-theme-blue .menu-modal .mobile-widgets .widget:has(a[href*="gebaerdensprache"]),
body.kl-theme-blue .menu-modal .mobile-widgets .widget-content:has(a[href*="einfache-sprache"]),
body.kl-theme-blue .menu-modal .mobile-widgets .widget-content:has(a[href*="gebaerdensprache"]) {
  visibility: hidden !important;
  pointer-events: none !important;
}
*/

/* --------------------------------------------------
SICHERHEIT:
Falls Bilder direkt über ihre WordPress-Bildklassen erkannt werden müssen.

Leichte Sprache: wp-image-15447
Gebärdensprache: wp-image-15448

Diese Regeln sind bewusst deaktiviert und nur als Fallback gedacht.
-------------------------------------------------- */

/*
body.kl-theme-blue .language-switch img.wp-image-15447,
body.kl-theme-blue .menu-modal .mobile-widgets img.wp-image-15447 {
  visibility: hidden !important;
  pointer-events: none !important;
}

body.kl-theme-blue .language-switch img.wp-image-15448,
body.kl-theme-blue .menu-modal .mobile-widgets img.wp-image-15448 {
  visibility: hidden !important;
  pointer-events: none !important;
}
*/

/* ==================================================
32 ADMIN / GUTENBERG METABOXEN
================================================== */

/* KL_ADMIN_METABOX_LAYOUT_CSS_START */

/*
 * KulturLeben Admin Metabox Layout
 * --------------------------------------------------
 * Dieser Block wird von functions.php gezielt aus der style.css gelesen
 * und nur im WordPress-Editor ausgegeben.
 *
 * Ziel:
 * - Metabox-Bereich optisch kompakter darstellen
 * - ACF-/Metabox-Felder etwas dichter darstellen
 * - sehr breite ACF-Felder begrenzen
 *
 * Wichtig:
 * Hier wird bewusst KEINE feste Höhe gesetzt.
 * Die Start-Höhe wird einmalig per JavaScript gesetzt,
 * damit der Gutenberg-Regler danach weiterhin verschiebbar bleibt.
 */

body.block-editor-page .edit-post-meta-boxes-main__liner {
  overflow: auto !important;
}

body.block-editor-page .edit-post-meta-boxes-area,
body.block-editor-page .edit-post-layout__metaboxes {
  margin-top: 0 !important;
}

body.block-editor-page .editor-resizable-editor,
body.block-editor-page .editor-visual-editor {
  min-height: 90px !important;
}

body.block-editor-page .edit-post-meta-boxes-area .postbox {
  margin-bottom: 10px !important;
}

body.block-editor-page .edit-post-meta-boxes-area .postbox-header {
  min-height: 36px !important;
}

body.block-editor-page .edit-post-meta-boxes-area .inside {
  padding-top: 10px !important;
}

body.block-editor-page .acf-postbox .acf-fields > .acf-field {
  padding-top: 10px !important;
  padding-bottom: 10px !important;
}

body.block-editor-page .acf-postbox .acf-label {
  margin-bottom: 4px !important;
}

body.block-editor-page .acf-postbox .acf-label label {
  margin-bottom: 3px !important;
}

body.block-editor-page .acf-postbox .description {
  margin-top: 3px !important;
}

body.block-editor-page .acf-postbox input[type="text"],
body.block-editor-page .acf-postbox input[type="url"],
body.block-editor-page .acf-postbox input[type="email"],
body.block-editor-page .acf-postbox textarea,
body.block-editor-page .acf-postbox select {
  margin-top: 0 !important;
}

/*
 * ACF-Felder mit width:200% begrenzen.
 */
body.block-editor-page .edit-post-meta-boxes-main .acf-field {
  max-width: 100% !important;
}

body.block-editor-page .edit-post-meta-boxes-main .acf-field[style*="width:200%"],
body.block-editor-page .edit-post-meta-boxes-main .acf-field[style*="width: 200%"] {
  width: 100% !important;
}

/*
 * Kleine optische Korrektur für den Metabox-Kopf.
 */
body.block-editor-page .edit-post-meta-boxes-main__presenter {
  border-top: 1px solid #dcdcde;
}

/* KL_ADMIN_METABOX_LAYOUT_CSS_END */


/* ==================================================
33 CROSS-SITE ZURÜCK-BUTTON
================================================== */

/*
Schwebender Cross-Site-Zurück-Button für KulturLeben Berlin
und Werkstatt Utopia.

Wichtig:
- PHP-/JS-Logik liegt in /partials/cross-site-back-button.php.
- Kein Footer-Balken.
- Keine volle Breite.
- Kompakte Floating-Pill innerhalb der Inhaltsbreite.
- Pfeil wird über bestehende Icon-Variablen geladen.
- Link-Text ist normal unterstrichen.
- Unterstreichung verschwindet bei Hover/Fokus.
- Das Schließen-X bekommt niemals eine Unterstreichung.
*/

.kl-cross-site-back {
    --kl-cross-site-accent: var(--kl-color-magenta);
    --kl-cross-site-accent-soft: var(--kl-alpha-magenta-180);
    --kl-cross-site-icon: var(--kl-icon-pfeil-magenta);
    --kl-cross-site-bg: var(--kl-color-white);
    --kl-cross-site-text: var(--kl-cross-site-accent);
    --kl-cross-site-base-bottom: 3.2rem;
    --kl-cross-site-footer-lift: 0px;

    position: fixed;

    right: max(2rem, calc((100vw - var(--kl-layout-width)) / 2 + 2rem));
    bottom: calc(var(--kl-cross-site-base-bottom) + var(--kl-cross-site-footer-lift));
    z-index: 8500;

    display: inline-flex;
    align-items: stretch;
    justify-content: flex-start;

    width: auto;
    max-width: min(36rem, calc(100vw - 4rem));

    border: 0.18rem solid var(--kl-cross-site-accent);
    border-radius: 999px;
    background: var(--kl-cross-site-bg);
    box-shadow:
        0 0.55rem 1.4rem var(--kl-alpha-shadow-018),
        0 0.12rem 0.35rem var(--kl-alpha-shadow-010);

    overflow: hidden;
    opacity: 0;
    transform: translateY(0.5rem);
    pointer-events: none;

    transition:
        opacity 0.16s ease,
        transform 0.16s ease,
        box-shadow 0.16s ease,
        bottom 0.12s ease;
}

.kl-cross-site-back.is-visible {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

.kl-cross-site-back[hidden] {
    display: none !important;
}

.kl-cross-site-back:hover,
.kl-cross-site-back:focus-within {
    box-shadow:
        0 0.7rem 1.7rem var(--kl-alpha-shadow-022),
        0 0.14rem 0.4rem var(--kl-alpha-shadow-012);
}

.kl-cross-site-back-link {
    box-sizing: border-box;

    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.55rem;

    width: auto;
    min-height: 4.1rem;
    padding: 0.72rem 1.18rem 0.78rem 1.25rem;

    background: var(--kl-cross-site-bg);
    color: var(--kl-cross-site-text);

    font-family: var(--kl-font-bold) !important;
    font-size: var(--kl-font-size-140);
    line-height: 1.18;
    letter-spacing: 0.018em;
    text-align: left;

    text-decoration: none !important;
    text-decoration-line: none !important;

    white-space: normal;
    word-break: normal;
    overflow-wrap: normal;
    hyphens: none;
    text-wrap: balance;
}

.kl-cross-site-back-link:hover,
.kl-cross-site-back-link:focus,
.kl-cross-site-back-link:focus-visible {
    background: var(--kl-cross-site-accent);
    color: var(--kl-color-white);

    text-decoration: none !important;
    text-decoration-line: none !important;

    outline: none;
}

.kl-cross-site-back-arrow {
    display: inline-block;
    flex: 0 0 auto;

    width: 1.15em;
    height: 1.15em;

    background-image: var(--kl-cross-site-icon);
    background-repeat: no-repeat;
    background-position: center center;
    background-size: contain;

    /* Ausgangspunkt: Pfeil zeigt nach links. */
    transform: rotate(180deg);
    transform-origin: center center;
    will-change: transform;

    text-decoration: none !important;
    text-decoration-line: none !important;

    transition:
        transform 0.32s ease,
        background-image 0.18s ease;
}

.kl-cross-site-back-link:hover .kl-cross-site-back-arrow,
.kl-cross-site-back-link:focus .kl-cross-site-back-arrow,
.kl-cross-site-back-link:focus-visible .kl-cross-site-back-arrow {
    background-image: var(--kl-icon-pfeil-weiss);

    /*
    Hover/Fokus:
    Pfeil zeigt nach oben links.

    Wichtig:
    225deg wird bewusst statt -135deg genutzt,
    damit die Drehung optisch in die richtige Richtung läuft.
    */
    transform: rotate(225deg);

    text-decoration: none !important;
    text-decoration-line: none !important;
}

.kl-cross-site-back-label {
    display: inline-block;
    max-width: 25rem;

    white-space: normal;
    word-break: normal;
    overflow-wrap: normal;
    hyphens: none;
    text-wrap: balance;

    text-decoration-line: underline;
    text-decoration-color: currentColor;
    text-decoration-thickness: 0.08em;
    text-underline-offset: 0.18em;
}

.kl-cross-site-back-link:hover .kl-cross-site-back-label,
.kl-cross-site-back-link:focus .kl-cross-site-back-label,
.kl-cross-site-back-link:focus-visible .kl-cross-site-back-label {
    text-decoration: none !important;
    text-decoration-line: none !important;
}

.kl-cross-site-back-close {
    box-sizing: border-box;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    width: 3.7rem;
    min-width: 3.7rem;
    min-height: 4.1rem;
    margin: 0;
    padding: 0 0 0.1rem 0;

    border: none;
    border-left: 0.1rem solid var(--kl-cross-site-accent-soft);
    border-radius: 0;
    background: var(--kl-cross-site-bg);

    color: var(--kl-cross-site-accent);
    font-family: var(--kl-font-bold) !important;
    font-size: 2rem;
    line-height: 1;

    text-decoration: none !important;
    text-decoration-line: none !important;
    text-decoration-color: transparent !important;

    cursor: pointer;

    transition:
        background-color 0.16s ease,
        color 0.16s ease;
}

.kl-cross-site-back-close:hover,
.kl-cross-site-back-close:focus,
.kl-cross-site-back-close:focus-visible,
.kl-cross-site-back-close:active {
    background: var(--kl-cross-site-accent);
    color: var(--kl-color-white);
    outline: none;

    text-decoration: none !important;
    text-decoration-line: none !important;
    text-decoration-color: transparent !important;
}

.kl-cross-site-back-close *,
.kl-cross-site-back-close:hover *,
.kl-cross-site-back-close:focus *,
.kl-cross-site-back-close:focus-visible *,
.kl-cross-site-back-close:active * {
    text-decoration: none !important;
    text-decoration-line: none !important;
    text-decoration-color: transparent !important;
}

/* Utopia: Blau statt Magenta */
body.kl-theme-blue .kl-cross-site-back {
    --kl-cross-site-accent: var(--kl-color-blue-brand);
    --kl-cross-site-accent-soft: var(--kl-alpha-blue-180);
    --kl-cross-site-icon: var(--kl-icon-pfeil-blau);
    --kl-cross-site-text: var(--kl-color-blue-brand);
}

/*
Tablet / kleinere Breiten:
Weiterhin keine volle Breite, sondern kompakt.
*/
@media (max-width: 1000px) {
    .kl-cross-site-back {
        --kl-cross-site-base-bottom: 2.8rem;

        right: 2rem;
        max-width: min(34rem, calc(100vw - 4rem));
    }
}

/*
Mobil:
Nicht als Full-Width-Leiste.
Der Button bleibt eine kompakte Floating-Pill/Card.
*/
@media (max-width: 700px) {
    .kl-cross-site-back {
        --kl-cross-site-base-bottom: 2.2rem;

        right: 1.2rem;
        max-width: min(29rem, calc(100vw - 2.4rem));
        border-radius: 1.8rem;
    }

    .kl-cross-site-back-link {
        min-height: 4.2rem;
        padding: 0.72rem 0.95rem 0.78rem 1rem;
        gap: 0.45rem;

        font-size: var(--kl-font-size-130);
        line-height: 1.16;
        text-align: left;
    }

    .kl-cross-site-back-arrow {
        width: 1.08em;
        height: 1.08em;
    }

    .kl-cross-site-back-label {
        max-width: 19rem;
    }

    .kl-cross-site-back-close {
        width: 3.6rem;
        min-width: 3.6rem;
        min-height: 4.2rem;
        font-size: 1.9rem;
    }
}

/*
Sehr kleine Displays:
Etwas kompakter, aber weiterhin keine Browserbreite.
*/
@media (max-width: 420px) {
    .kl-cross-site-back {
        --kl-cross-site-base-bottom: 1.8rem;

        right: 1rem;
        max-width: min(26rem, calc(100vw - 2rem));
        border-radius: 1.6rem;
    }

    .kl-cross-site-back-link {
        min-height: 4rem;
        padding: 0.68rem 0.82rem 0.72rem 0.9rem;

        font-size: var(--kl-font-size-125);
    }

    .kl-cross-site-back-label {
        max-width: 16.8rem;
    }

    .kl-cross-site-back-close {
        width: 3.4rem;
        min-width: 3.4rem;
        min-height: 4rem;
        font-size: 1.8rem;
    }
}
