

/*
Theme Name: Twenty Twenty KL
Template: twentytwenty
Version: 2026.06.20
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 UTOPIA / FARBVARIANTE BLAU
   32 ADMIN / GUTENBERG METABOXEN
   33 CROSS-SITE ZURÜCK-BUTTON
   34 SINGLE-SEITEN / PROJEKTE & VERANSTALTUNGEN
*/

/* ==================================================
   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;
}


/*
   Hinweis gemeinsame Suche
   --------------------------------------------------
   Kurzer Erklärungstext oberhalb der Suchüberschrift.
   Bewusst schlicht als Text-Hinweis, ohne Box oder Button-Optik.
*/
body.search.search-results .kl-cross-site-search-explanation,
body.search.search-no-results .kl-cross-site-search-explanation {
  max-width: none !important;
  width: 100% !important;

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

  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-160);
  line-height: 1.42;
  text-align: left;
}

/*
   Suchumfang-Umschalter
   --------------------------------------------------
   Der Umschalter erscheint auf KulturLeben und Utopia.
   Der aktive Zustand ist bewusst klar markiert.
   Die Trefferanzahl steht darunter in .archive-subtitle.
*/
body.search .kl-cross-site-search-mode-switch {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.55rem;

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

  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-145);
  line-height: 1.35;
  text-align: left;
}

body.search .kl-cross-site-search-mode-label {
  margin-right: 0.15rem;
  font-family: var(--kl-font-bold) !important;
}

body.search .kl-cross-site-search-mode-switch a,
body.search .kl-cross-site-search-mode-current {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  min-height: 2.6rem;
  padding: 0.28rem 0.85rem;

  border: 0.16rem solid var(--kl-color-magenta);
  border-radius: 999px;

  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-135);
  line-height: 1.2;
  letter-spacing: 0.02em;
  text-decoration: none !important;
}

body.search .kl-cross-site-search-mode-switch a {
  background-color: transparent;
  color: var(--kl-color-magenta);
}

body.search .kl-cross-site-search-mode-current {
  background-color: var(--kl-color-magenta);
  color: var(--kl-color-white);
  cursor: default;
}

body.search .kl-cross-site-search-mode-switch a:hover,
body.search .kl-cross-site-search-mode-switch a:focus {
  background-color: var(--kl-color-magenta);
  color: var(--kl-color-white);
  outline: none;
}

body.search .kl-cross-site-search-mode-switch a:focus-visible {
  outline: 0.18rem solid var(--kl-color-magenta);
  outline-offset: 0.18rem;
}

/*
   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: attr(data-kl-readmore-label);

  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;
  }
}
/* ==================================================
   04-09 SUCHERGEBNISSE / CROSS-SITE-QUELLENHINWEIS
================================================== */

/*
   Cross-Site-Quellenhinweis
   --------------------------------------------------
   Ergänzung für die kombinierte KulturLeben-/Utopia-Suche.
   Der Quellenhinweis steht direkt unter dem Kartentitel.

   Farbregel:
   Es wird bewusst var(--kl-color-magenta) genutzt.
   Auf Utopia wird diese Variable in Abschnitt 31 automatisch zu Blau.

   Wichtig:
   Der Quellenlink bleibt bewusst ein ruhiger Textlink.
   Keine Pill, keine Bubble, kein Button-Hintergrund.
*/
body.search.search-results #site-content > article .entry-header-inner {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

body.search.search-results #site-content > article .entry-title {
  order: 1;
}

body.search.search-results #site-content > article .kl-cross-site-search-source-note {
  order: 2;
  position: relative;
  z-index: 8;

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

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

body.search.search-results #site-content > article .kl-cross-site-search-source-note a {
  position: relative;
  z-index: 9;

  color: var(--kl-color-text);
  text-decoration: underline;
  text-decoration-color: var(--kl-alpha-magenta-420);
  text-decoration-thickness: 0.09em;
  text-underline-offset: 0.22em;

  transition:
    color 0.16s ease,
    text-decoration-color 0.16s ease;
}

body.search.search-results #site-content > article .kl-cross-site-search-source-note a:hover,
body.search.search-results #site-content > article .kl-cross-site-search-source-note a:focus {
  color: var(--kl-color-magenta);
  text-decoration-color: var(--kl-color-magenta);
  outline: none;
}

body.search.search-results #site-content > article .kl-cross-site-search-source-note a:focus-visible {
  outline: 0.16rem solid var(--kl-color-magenta);
  outline-offset: 0.18rem;
}

/* ==================================================
   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
================================================== */

/*
   Abschnittsübersicht
   --------------------------------------------------
   06-01 Header-Raster
   06-02 Logo-Positionierung
   06-03 Einheitliche Logo-Größe
   06-04 Sicherheitsregel für sehr kleine Bildschirme
   06-05 Header-Icons / rechte Header-Seite
   06-06 Sprachwechsel im Header
   06-07 Hover- und Fokus-Effekte
   06-08 Header-Rahmen entfernen
*/

/* --------------------------------------------------
   06-01 Header-Raster
   --------------------------------------------------
   1fr auto 1fr sorgt dafür, dass das Logo optisch exakt
   mittig sitzt. Rechte Header-Elemente wie Suche,
   Leichte Sprache oder Gebärdensprache verschieben das
   Logo dadurch nicht.
-------------------------------------------------- */

.header-inner.section-inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  position: relative;
  padding: 0;
}

/* --------------------------------------------------
   06-02 Logo-Positionierung
   --------------------------------------------------
   Je nach Theme-Struktur liegt das Logo direkt in
   .site-logo oder innerhalb von .header-titles-wrapper.
   Beide Varianten werden sauber mittig gesetzt.
-------------------------------------------------- */

.header-titles-wrapper,
.site-logo {
  grid-column: 2;
  justify-self: center;
  align-self: center;
}

/* --------------------------------------------------
   06-03 Einheitliche Logo-Größe
   --------------------------------------------------
   Das Logo erhält eine feste visuelle Höhe über alle
   Ansichten hinweg. max-width: none verhindert, dass das
   Theme das Desktop-Logo kleiner skaliert als Tablet-
   oder Mobil-Varianten.
-------------------------------------------------- */

.site-logo img,
.header-titles-wrapper .site-logo img,
.custom-logo-link img,
img.custom-logo {
  display: block;
  width: auto;
  height: var(--kl-header-logo-height);
  max-width: none;
  max-height: var(--kl-header-logo-height);
  margin: 1rem 0;
}

/* --------------------------------------------------
   06-04 Sicherheitsregel für sehr kleine Bildschirme
   --------------------------------------------------
   Das Logo bleibt grundsätzlich gleich groß. Nur auf sehr
   schmalen Displays darf es kleiner werden, damit es nicht
   aus dem sichtbaren Bereich herausläuft.
-------------------------------------------------- */

@media (max-width: 420px) {
  .site-logo img,
  .header-titles-wrapper .site-logo img,
  .custom-logo-link img,
  img.custom-logo {
    width: auto;
    height: auto;
    max-width: calc(100vw - 4rem);
    max-height: var(--kl-header-logo-height);
  }
}

/* --------------------------------------------------
   06-05 Header-Icons / rechte Header-Seite
   --------------------------------------------------
   Die Header-Toggles sitzen rechts in der dritten
   Grid-Spalte. Es werden keine festen rechten Abstände
   gesetzt, damit die Icons sauber an der Layoutkante enden.
-------------------------------------------------- */

.header-toggles {
  grid-column: 3;
  justify-self: end;
  align-self: center;
  position: static;
  top: auto;
  right: auto;
  transform: none;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 1.5rem;
  margin-right: 0;
}

/* --------------------------------------------------
   06-06 Sprachwechsel im Header
   --------------------------------------------------
   Falls der Sprach-/Symbol-Umschalter separat im Header
   liegt, wird er ebenfalls rechts ausgerichtet.
-------------------------------------------------- */

.header-inner.section-inner .language-switch {
  grid-column: 3;
  justify-self: end;
  align-self: center;
}

.language-switch {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2rem;
}

.language-switch img {
  display: block;
  margin-left: 0;
}

/* --------------------------------------------------
   06-07 Hover- und Fokus-Effekte
   --------------------------------------------------
   Ruhiger Hover-Effekt für Logo, Buttons und Sprachicons.
   Fokus bleibt sichtbar und barrierefreundlich.
-------------------------------------------------- */

.header-inner.section-inner img,
.header-inner.section-inner button {
  transition: opacity 0.3s linear;
}

.header-inner.section-inner img:hover,
.header-inner.section-inner button:hover {
  opacity: 0.6;
}

.header-inner.section-inner a:focus-visible,
.header-inner.section-inner button:focus-visible {
  outline: 0.2rem solid var(--kl-color-magenta);
  outline-offset: 0.35rem;
}

/* --------------------------------------------------
   06-08 Header-Rahmen entfernen
   --------------------------------------------------
   Entfernt den Theme-Rahmen unterhalb der Header-Gruppe.
-------------------------------------------------- */

.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);
}

/* Submenü: weiße Rahmenlinie links, rechts und unten */
.primary-menu ul.sub-menu,
.primary-menu .sub-menu {
  border-left: 2px solid var(--kl-color-white);
  border-right: 2px solid var(--kl-color-white);
  border-bottom: 2px solid var(--kl-color-white);
}


/* ==================================================
   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 robust ausgeblendet, damit das Logo nicht doppelt erscheint.

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

   Wichtig:
   TwentyTwenty kann beim Öffnen, Schließen oder Browser-Resize
   DOM-Zustände und Klassen neu setzen. Deshalb wird das zusätzliche
   Logo nicht nur über first-child, sondern zusätzlich über Bild-ID,
   Widget-Kontext und Bildcontainer ausgeblendet.
*/
.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ü robust ausblenden
-------------------------------------------------- */

/*
   Das erste Widget ist normalerweise das zusätzliche KulturLeben-Logo
   im mobilen 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;
  visibility: hidden !important;
  width: 0 !important;
  height: 0 !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: 0 !important;
  max-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  pointer-events: none !important;
}

/*
   Sicherheit:
   Falls das Logo-Bild beim Resize nicht mehr ü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,
.menu-modal .mobile-widgets img.wp-image-15449,
.menu-modal .mobile-widgets .wp-image-15449,
body .menu-modal .mobile-widgets img.wp-image-15449,
body.showing-menu-modal .menu-modal .mobile-widgets img.wp-image-15449,
body.showing-menu-modal .menu-modal .mobile-widgets .wp-image-15449 {
  display: none !important;
  visibility: hidden !important;
  width: 0 !important;
  height: 0 !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: 0 !important;
  max-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  pointer-events: none !important;
}

/*
   Falls das Logo in einem Figure-/Image-Block oder Widgetcontainer steckt,
   wird der komplette Container ausgeblendet.
*/
.menu-modal .mobile-widgets figure:has(img.wp-image-15449),
.menu-modal .mobile-widgets .wp-block-image:has(img.wp-image-15449),
.menu-modal .mobile-widgets .widget_media_image:has(img.wp-image-15449),
.menu-modal .mobile-widgets .widget:has(img.wp-image-15449),
body.showing-menu-modal .menu-modal .mobile-widgets figure:has(img.wp-image-15449),
body.showing-menu-modal .menu-modal .mobile-widgets .wp-block-image:has(img.wp-image-15449),
body.showing-menu-modal .menu-modal .mobile-widgets .widget_media_image:has(img.wp-image-15449),
body.showing-menu-modal .menu-modal .mobile-widgets .widget:has(img.wp-image-15449) {
  display: none !important;
  visibility: hidden !important;
  width: 0 !important;
  height: 0 !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: 0 !important;
  max-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  pointer-events: 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
-------------------------------------------------- */

.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
-------------------------------------------------- */

.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
-------------------------------------------------- */

.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 Utopia / Mobile-Menü-Button Abstand
-------------------------------------------------- */

/*
   Utopia:
   Durch das Ausblenden des zusätzlichen Logos und durch andere Icon-
   Konstellationen kann der mobile Menübutton optisch zu nah am unteren
   Rand sitzen. Deshalb bekommt der Button auf Utopia mehr klickbare Fläche
   und einen stabileren Abstand.
*/
@media (max-width: 1000px) {
  body.kl-theme-blue .toggle.nav-toggle.mobile-nav-toggle {
    min-width: 5.8rem;
    min-height: 5.8rem;

    margin-top: 7.2rem;
    margin-bottom: 2.4rem;

    padding: 1rem 1.35rem !important;

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

  body.kl-theme-blue .toggle.nav-toggle.mobile-nav-toggle .toggle-inner {
    min-width: 3.8rem;
    min-height: 3.8rem;

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

/* --------------------------------------------------
   09-02-09 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);
  }

  body.kl-theme-blue .toggle.nav-toggle.mobile-nav-toggle {
    min-width: 5.6rem;
    min-height: 5.6rem;

    margin-top: 6.8rem;
    margin-bottom: 2.2rem;

    padding: 0.95rem 1.25rem !important;
  }
}

/* ==================================================
   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ü / 3-Punkte-Button

     Der Button bekommt eine stabile klickbare Fläche und wird nicht mehr
     über prozentuale margin-bottom-Werte nach unten gezogen.

     Wichtig:
     Utopia bekommt in 09-02-08 zusätzlich einen eigenen Feinschliff.
  */
  .toggle.nav-toggle.mobile-nav-toggle {
    min-width: 5.6rem;
    min-height: 5.6rem;

    margin-top: 7.2rem;
    margin-bottom: 2.4rem;

    padding: 1rem 1.35rem !important;

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

    box-sizing: border-box;
  }

  .toggle.nav-toggle.mobile-nav-toggle .toggle-inner {
    min-width: 3.6rem;
    min-height: 3.6rem;

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

  /*
     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) {
  .toggle.nav-toggle.mobile-nav-toggle {
    min-width: 5.4rem;
    min-height: 5.4rem;

    margin-top: 6.8rem;
    margin-bottom: 2.2rem;

    padding: 0.95rem 1.25rem !important;
  }

  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);
}

.kl-grid-head.kl-head-events,
.kl-grid-head.home-event-heading,
body.kl-theme-blue .kl-grid-head.kl-head-events,
body.kl-theme-blue .kl-grid-head.home-event-heading {
  background-color: var(--kl-color-muted-bluegrey);
}

/* --------------------------------------------------
   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,
.kl-grids.grid-events .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):not(.home-event-icon):not(.grid-event-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,
.kl-grids.grid-events .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);
}

.kl-grids.grid-events .grid-keyword div,
body.kl-theme-blue .kl-grids.grid-events .grid-keyword div {
  background-color: var(--kl-color-muted-bluegrey);
}

/* ==================================================
   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,
.kl-grids.grid-events .grid-item > h2,
.kl-grids.grid-events .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);
}

.kl-grids.grid-events h2,
.kl-grids.grid-events .grid-title,
body.kl-theme-blue .kl-grids.grid-events h2,
body.kl-theme-blue .kl-grids.grid-events .grid-title {
  color: var(--kl-color-muted-bluegrey);
}

/*
   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,
.kl-grids.grid-events {
  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-08-03 Event-Karten
-------------------------------------------------- */

/*
   Event-Karten
   --------------------------------------------------
   Veranstaltungen nutzen den blaugrauen Bereichston der Event-Singles.
   Dadurch sind Event-Heading, Event-Badges und Event-Cards auf Home,
   Archiv und Single-Seiten farblich konsistent.
*/
.kl-grids.grid-events .grid-item {
  border: 2px solid var(--kl-color-muted-bluegrey);
  border-radius: 25px;
  background-color: var(--kl-color-surface-card);
  box-shadow: 0 4px 8px var(--kl-alpha-shadow-010);

  overflow: hidden;
}

body.kl-theme-blue .kl-grids.grid-events .grid-item {
  border-color: var(--kl-color-muted-bluegrey);
}

.kl-grids.grid-events .home-event-icon,
.kl-grids.grid-events .grid-event-icon {
  width: 100%;
  min-height: 0.45rem;
  height: 0.45rem;
  padding: 0 !important;
  margin: 0 !important;
  background-color: var(--kl-color-muted-bluegrey);
}

body.kl-theme-blue .kl-grids.grid-events .home-event-icon,
body.kl-theme-blue .kl-grids.grid-events .grid-event-icon {
  background-color: var(--kl-color-muted-bluegrey);
}

.kl-grids.grid-events .grid-meta {
  margin-top: 0.15em;
  margin-bottom: 0.15em;
}

.kl-grids.grid-events .grid-meta-title {
  color: var(--kl-color-text);
}

body.kl-theme-blue .kl-grids.grid-events .grid-meta-title {
  color: var(--kl-color-magenta);
}

.kl-grids.grid-events .grid-description {
  margin-top: 0.35em;
}

/* ==================================================
   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,
  .kl-grids.grid-events .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;
  }
}
 


/* ==================================================
   11-99 CARD-ZONEN / EINHEITLICHER CARD-AUFBAU
================================================== */

/*
   Einheitliche Card-Zonen
   --------------------------------------------------
   Referenz für Home-, Archiv- und Single-Grids.
   Ziel: gleiche Zonen, gleiche Schriftlogik, gleiche Meta-Einrückung,
   gleiche Linien- und Readmore-Logik in News, Projekten und Veranstaltungen.
*/
.kl-grids .grid-item a,
.kl-grids .grid-item a:hover,
.kl-grids .grid-item a:focus,
.kl-grids .grid-item a:visited {
  text-decoration: none !important;
  text-decoration-line: none !important;
}

.kl-grids .grid-card-head {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  height: 12.8rem;
  min-height: 12.8rem;
  margin: 0;
  padding-top: 1.15rem;
  padding-bottom: 0.7rem;
  overflow: hidden;
}

.kl-grids .grid-card-head .grid-title,
.kl-grids .grid-item > .grid-title,
.kl-grids .grid-item > h2 {
  min-height: 0 !important;
  margin: 0 0 0.14em !important;
  padding: 0;
  font-family: var(--kl-font-bold) !important;
  font-weight: 700 !important;
  line-height: 1.12;
}

.kl-grids .grid-card-head .grid-subtitle,
.kl-grids .grid-card-head .grid-subtitle .subtitel,
.kl-grids .grid-card-head .grid-subtitle .home-subtitel {
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: none;
  font-family: var(--kl-font-bold) !important;
  font-size: clamp(1.18rem, 4.1cqw, 1.42rem);
  line-height: 1.18;
  letter-spacing: 0.01em;
}

.kl-grids.grid-news .grid-card-head .grid-subtitle,
.kl-grids.grid-news .grid-card-head .grid-subtitle .subtitel,
.kl-grids.grid-news .grid-card-head .grid-subtitle .home-subtitel { color: var(--kl-color-magenta); }
.kl-grids.grid-projekte .grid-card-head .grid-subtitle,
.kl-grids.grid-projekte .grid-card-head .grid-subtitle .subtitel,
.kl-grids.grid-projekte .grid-card-head .grid-subtitle .home-subtitel { color: var(--kl-color-brown); }
.kl-grids.grid-events .grid-card-head .grid-subtitle,
.kl-grids.grid-events .grid-card-head .grid-subtitle .subtitel,
.kl-grids.grid-events .grid-card-head .grid-subtitle .home-subtitel,
body.kl-theme-blue .kl-grids.grid-events .grid-card-head .grid-subtitle,
body.kl-theme-blue .kl-grids.grid-events .grid-card-head .grid-subtitle .subtitel,
body.kl-theme-blue .kl-grids.grid-events .grid-card-head .grid-subtitle .home-subtitel { color: var(--kl-color-muted-bluegrey); }

.kl-grids .grid-card-meta {
  display: flex;
  flex-direction: column;
  gap: 0.48em;
  margin: 0;
  padding-top: 1rem;
  padding-bottom: 1.3rem;
  overflow: visible;
}

.kl-grids.grid-news .grid-card-meta,
.kl-grids.grid-news .news-card-meta { height: 19rem; min-height: 19rem; }
.kl-grids.grid-events .grid-card-meta,
.kl-grids.grid-events .event-card-meta { height: 19rem; min-height: 19rem; }
.kl-grids.grid-projekte .grid-card-meta,
.kl-grids.grid-projekte .project-card-meta { height: 29rem; min-height: 29rem; }

.kl-grids .grid-card-meta .grid-meta,
.kl-grids .grid-card-meta .grid-meta-row,
.kl-grids .grid-card-meta .event-date-wrap,
.kl-grids .grid-card-meta .event-time-wrap,
.kl-grids .grid-card-meta .event-location-wrap,
.kl-grids .grid-card-meta .event-project-wrap,
.kl-grids .grid-card-meta .project-time,
.kl-grids .grid-card-meta .project-location,
.kl-grids .grid-card-meta .news-timeline,
.kl-grids .grid-card-meta .news-location {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  column-gap: 0.38em;
  align-items: baseline;
  margin: 0;
  padding: 0;
  min-height: 0;
  line-height: 1.28;
}

.kl-grids.grid-projekte .project-card-meta .project-time {
  min-height: 3.15em;
  margin-bottom: 0.95rem;
}

.kl-grids.grid-projekte .project-card-meta .project-location {
  min-height: 6.4em;
  margin-bottom: 0.85rem;
}

.kl-grids.grid-news .news-card-meta .news-timeline { margin-bottom: 1.45rem; }
.kl-grids.grid-events .event-card-meta .event-location-wrap { margin-bottom: 1.25rem; }

.kl-grids .grid-card-meta .grid-meta-label,
.kl-grids .grid-card-meta .grid-meta-title,
.kl-grids .grid-card-meta .event-meta-label,
.kl-grids .grid-card-meta .grid-time-title,
.kl-grids .grid-card-meta .grid-location-title,
.kl-grids .grid-card-meta .grid-timeline-title,
.kl-grids .grid-sponsor-title,
.kl-grids .home-sponsor-titel,
.kl-grids .event-sponsor-title {
  display: block;
  margin: 0;
  padding: 0;
  color: var(--kl-color-text);
  background: transparent;
  font-family: var(--kl-font-bold) !important;
  font-weight: 700 !important;
  font-size: var(--kl-font-size-card-meta-fluid);
  line-height: 1.28;
}

.kl-grids .grid-card-meta .grid-meta-text,
.kl-grids .grid-card-meta .grid-meta-value,
.kl-grids .grid-card-meta .event-date,
.kl-grids .grid-card-meta .event-time,
.kl-grids .grid-card-meta .event-location,
.kl-grids .grid-card-meta .grid-time-value,
.kl-grids .grid-card-meta .grid-location-value,
.kl-grids .grid-card-meta .grid-timeline-value {
  display: block;
  min-width: 0;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  font-weight: 400 !important;
  font-size: var(--kl-font-size-card-meta-fluid);
  line-height: 1.28;
  overflow-wrap: anywhere;
  word-break: normal;
}

.kl-grids .grid-card-meta .grid-location-link,
.kl-grids .grid-card-meta .news-location-link,
.kl-grids .grid-card-meta .project-location-link,
.kl-grids .grid-card-meta .event-location-link,
.kl-grids .grid-card-meta .event-project-link {
  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  font-weight: 600 !important;
  text-decoration: none !important;
  text-decoration-line: none !important;
}

.kl-grids .grid-card-meta .grid-location-link:hover,
.kl-grids .grid-card-meta .grid-location-link:focus,
.kl-grids .grid-card-meta .news-location-link:hover,
.kl-grids .grid-card-meta .news-location-link:focus,
.kl-grids .grid-card-meta .project-location-link:hover,
.kl-grids .grid-card-meta .project-location-link:focus,
.kl-grids .grid-card-meta .event-location-link:hover,
.kl-grids .grid-card-meta .event-location-link:focus,
.kl-grids .grid-card-meta .event-project-link:hover,
.kl-grids .grid-card-meta .event-project-link:focus { color: var(--kl-color-magenta); }

.kl-grids.grid-projekte .grid-card-meta .grid-sponsor-title,
.kl-grids.grid-projekte .grid-card-meta .home-sponsor-titel {
  margin-top: auto !important;
  margin-bottom: 0.42em !important;
}

.kl-grids.grid-events .event-sponsor-title {
  margin-top: 0.9rem !important;
  margin-bottom: 0.42em !important;
  padding-left: clamp(0.85em, 3.2cqw, 1.35em) !important;
  padding-right: clamp(0.85em, 3.2cqw, 1.35em) !important;
}

.kl-grids.grid-projekte .grid-card-meta .grid-sponsor-logos,
.kl-grids.grid-projekte .grid-card-meta .project-sponsor-colum,
.kl-grids.grid-events .event-sponsors.grid-sponsor-logos {
  display: flex;
  align-items: center !important;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 0.55rem 0.8rem;
  min-height: 4.2rem !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: visible;
}

.kl-grids.grid-events .event-sponsors.grid-sponsor-logos {
  padding-left: clamp(0.85em, 3.2cqw, 1.35em) !important;
  padding-right: clamp(0.85em, 3.2cqw, 1.35em) !important;
}

.kl-grids.grid-projekte .grid-card-meta .project-sponsor-logo,
.kl-grids.grid-projekte .grid-card-meta .grid-sponsor-logo,
.kl-grids.grid-projekte .grid-card-meta .project-sponsor-icon img,
.kl-grids.grid-projekte .grid-card-meta .grid-sponsor-icon img,
.kl-grids.grid-events .event-sponsor-logo-img,
.kl-grids.grid-events .event-sponsors .grid-sponsor-logo,
.kl-grids.grid-events .event-sponsor-logo img,
.kl-grids.grid-events .event-sponsors .grid-sponsor-icon img {
  display: block;
  width: auto;
  height: auto;
  max-width: 8.8rem !important;
  max-height: 3.1rem !important;
  object-fit: contain;
  object-position: left center;
  position: static !important;
  transform: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

.kl-grids .grid-card-body,
.kl-grids .grid-description.grid-card-body {
  margin-top: 0;
  padding-top: 1.2em;
  border-top: 1px solid rgba(101, 76, 56, .16);
}

.kl-grids .grid-card-body .grid-description-text,
.kl-grids .grid-description.grid-card-body,
.kl-grids .home-post-description {
  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  font-weight: 400 !important;
  line-height: 1.42;
}

@media (max-width: 880px) {
  .kl-grids .grid-card-head,
  .kl-grids.grid-news .grid-card-meta,
  .kl-grids.grid-news .news-card-meta,
  .kl-grids.grid-events .grid-card-meta,
  .kl-grids.grid-events .event-card-meta,
  .kl-grids.grid-projekte .grid-card-meta,
  .kl-grids.grid-projekte .project-card-meta {
    height: auto;
    min-height: 0;
    overflow: visible;
  }

  .kl-grids.grid-projekte .grid-card-meta .grid-sponsor-title,
  .kl-grids.grid-projekte .grid-card-meta .home-sponsor-titel {
    margin-top: 0.18em !important;
  }
}

/* ==================================================
   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;
}

/* Footer-Spalte 1: Logo/Bild Hover */
.footer-widgets.column-one .widget_media_image a img {
  transition: opacity 0.3s linear;
}

.footer-widgets.column-one .widget_media_image a:hover img,
.footer-widgets.column-one .widget_media_image a:focus img {
  opacity: 0.72;
}
/* ==================================================
   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 ausschließlich für das neue Shortcode-Team-Grid:

   [kl-team]
   [kl-team-kl]
   [kl-team-ut]
   [kl-team-all]

   Ziel:
   - Desktop: 3 Karten pro Reihe
   - Tablet: 2 Karten pro Reihe
   - Mobil: 1 Karte pro Reihe
   - keine gequetschten Karten
   - keine Full-Width-Karten im Desktop
   - Karten optisch passend zum bisherigen Team-Layout
   - Standort wird im Team-Grid ausgeblendet
   - Vita und Beschreibung werden nur angezeigt, wenn befüllt
   - Bilder bleiben randlos und gleichmäßig beschnitten
*/

/* ==================================================
   16-01 TEAM-GRID / AUSSENLAYOUT
================================================== */

.entry-content .grid-team,
.entry-content [class*="__inner-container"] > .grid-team {
  box-sizing: border-box !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;
}

/*
   Eigentliches Team-Layout.
*/
.grid-team .team-loop,
.grid-team .grid-loop.team-loop,
.entry-content .grid-team .team-loop,
.entry-content .grid-team .grid-loop.team-loop {
  display: flex !important;
  flex-wrap: wrap !important;
  justify-content: center !important;
  align-items: stretch !important;

  gap: 2.4rem !important;

  box-sizing: border-box !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;
}

/*
   Desktop: 3 Karten pro Reihe.
*/
.grid-team .team-loop > .grid-team-item,
.grid-team .grid-loop.team-loop > .grid-team-item,
.entry-content .grid-team .team-loop > article.grid-team-item,
.entry-content .grid-team .grid-loop.team-loop > article.grid-team-item {
  flex: 0 1 calc((100% - 4.8rem) / 3) !important;
  width: calc((100% - 4.8rem) / 3) !important;
  max-width: calc((100% - 4.8rem) / 3) !important;
  min-width: 0 !important;

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

/* ==================================================
   16-02 TEAM-KARTEN / GRUNDSTRUKTUR
================================================== */

.grid-team .team-loop > .grid-team-item,
.grid-team .grid-loop.team-loop > .grid-team-item,
.entry-content .grid-team .team-loop > article.grid-team-item,
.entry-content .grid-team .grid-loop.team-loop > article.grid-team-item {
  box-sizing: border-box !important;

  display: flex !important;
  flex-direction: column !important;

  container-type: inline-size;

  height: auto !important;
  min-height: 54rem;

  align-self: stretch !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.
*/
.grid-team .team-loop > .grid-team-item > p.wp-block-paragraph:empty,
.grid-team .grid-loop.team-loop > .grid-team-item > p.wp-block-paragraph:empty {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

/*
   Teamkarte selbst.
*/
.grid-team .team-loop > .grid-team-item.team-block,
.grid-team .grid-loop.team-loop > .grid-team-item.team-block,
.entry-content .grid-team article.grid-team-item.team-block {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;

  min-height: 100% !important;
  height: 100% !important;

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

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

/* ==================================================
   16-03 TEAM-BILDER
================================================== */

.grid-team .team-block .team-image,
.grid-team .team-block .pg34109fc44c7b,
.entry-content .grid-team .team-block .team-image.pg34109fc44c7b {
  display: block !important;

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

  aspect-ratio: 1.12 / 1;

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

  overflow: hidden !important;
  flex-shrink: 0 !important;

  background-color: transparent !important;
}

.grid-team .team-block .team-image img,
.grid-team .team-block .pg34109fc44c7b img,
.entry-content .grid-team .team-block .team-image.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;

  border-radius: 23px 23px 0 0 !important;
}

/* ==================================================
   16-04 NAME
================================================== */

.grid-team .team-name,
.entry-content .grid-team .team-name {
  margin: 0 !important;
  padding: clamp(0.9rem, 3.2cqw, 1.2rem) clamp(1.2rem, 4.2cqw, 1.6rem) 0.15rem !important;
}

.grid-team .team-name > .wp-block-group__inner-container {
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

.grid-team .team-name h2,
.grid-team .team-name .team-title,
.entry-content .grid-team .team-name h2.team-title {
  display: flex !important;
  align-items: flex-start !important;

  min-height: 3rem;

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

  color: var(--kl-color-text) !important;
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-card-title-fluid-small) !important;
  line-height: 1.18 !important;
  letter-spacing: 0.02em;
  text-align: left !important;
}

/* ==================================================
   16-05 TEAM-INFOS / TÄTIGKEIT
================================================== */

.grid-team .team-info,
.entry-content .grid-team .team-info {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;

  margin: 0 !important;
  padding: 0.15rem clamp(1.2rem, 4.2cqw, 1.6rem) clamp(1.15rem, 4cqw, 1.45rem) !important;

  color: var(--kl-color-text) !important;
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-fluid-145-180) !important;
  line-height: 1.4 !important;
}

.grid-team .team-info > .wp-block-group__inner-container {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;

  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

/*
   Tätigkeit.
*/
.grid-team .team-department-wrap,
.entry-content .grid-team .team-department-wrap {
  min-height: calc(3 * 1.4em + 1.65rem);
  margin: 0 0 0.45rem !important;
}

.grid-team .team-department-titel,
.entry-content .grid-team .team-department-titel {
  margin-bottom: 0.1rem !important;

  font-family: var(--kl-font-bold) !important;
  font-weight: bold !important;
  font-size: var(--kl-font-size-fluid-145-180) !important;
  color: var(--kl-color-text) !important;
}

.grid-team .team-department,
.entry-content .grid-team .team-department {
  height: calc(3 * 1.4em);
  min-height: calc(3 * 1.4em);

  overflow: hidden !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;

  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-fluid-145-180) !important;
  line-height: 1.4 !important;
  color: var(--kl-color-text) !important;
}

/* ==================================================
   16-06 STANDORT AUSBLENDEN
================================================== */

/*
   Standort wird im Team-Grid bewusst nicht angezeigt,
   damit das Shortcode-Grid dem bisherigen sichtbaren Team-Layout entspricht.
*/
.grid-team .team-location-wrap,
.entry-content .grid-team .team-location-wrap {
  display: none !important;
}

/* ==================================================
   16-07 KONTAKT / TELEFON / E-MAIL
================================================== */

.grid-team .team-contact-tel-wrap,
.grid-team .team-contact-email-wrap,
.entry-content .grid-team .team-contact-tel-wrap,
.entry-content .grid-team .team-contact-email-wrap {
  margin-top: 0.35rem !important;
  padding-top: 0 !important;
  font-size: var(--kl-font-size-fluid-145-180) !important;
}

.grid-team .team-contact-tel-wrap + .team-contact-email-wrap,
.grid-team .team-contact-email-wrap + .team-contact-email-wrap,
.grid-team .team-contact-tel-wrap + .team-contact-tel-wrap {
  margin-top: 0.35rem !important;
}

/*
   Leere Kontaktzeilen ausblenden.
*/
.grid-team .team-contact-tel-wrap:has(a[href="tel:"]:empty),
.grid-team .team-contact-email-wrap:has(a[href="mailto:"]:empty) {
  display: none !important;
}

.grid-team .team-contact-tel-wrap a[href="tel:"],
.grid-team .team-contact-email-wrap a[href="mailto:"] {
  display: none !important;
}

/*
   Kontakt-Titel.
*/
.grid-team .team-contact-email-titel,
.grid-team .team-contact-tel-titel,
.entry-content .grid-team .team-contact-email-titel,
.entry-content .grid-team .team-contact-tel-titel {
  margin-bottom: 0.1rem !important;

  font-family: var(--kl-font-bold) !important;
  font-weight: bold !important;
  font-size: var(--kl-font-size-fluid-145-180) !important;
  color: var(--kl-color-text) !important;
}

/*
   Kontakt-Link.
*/
.grid-team .team-contact-email,
.grid-team .team-contact-tel,
.entry-content .grid-team .team-contact-email,
.entry-content .grid-team .team-contact-tel {
  color: var(--kl-color-magenta) !important;
  text-decoration: underline !important;
  text-decoration-color: var(--kl-color-magenta) !important;

  font-size: var(--kl-font-size-fluid-145-180) !important;

  overflow-wrap: anywhere;
  word-break: break-word;
}

.grid-team .team-contact-email:hover,
.grid-team .team-contact-email:focus,
.grid-team .team-contact-tel:hover,
.grid-team .team-contact-tel:focus {
  color: var(--kl-color-text) !important;
  text-decoration-color: var(--kl-color-text) !important;
}

/* Utopia: Kontaktlinks blau */
body.kl-theme-blue .grid-team .team-contact-email,
body.kl-theme-blue .grid-team .team-contact-tel {
  color: var(--kl-color-blue-brand) !important;
  text-decoration-color: var(--kl-color-blue-brand) !important;
}

body.kl-theme-blue .grid-team .team-contact-email:hover,
body.kl-theme-blue .grid-team .team-contact-email:focus,
body.kl-theme-blue .grid-team .team-contact-tel:hover,
body.kl-theme-blue .grid-team .team-contact-tel:focus {
  color: var(--kl-color-text) !important;
  text-decoration-color: var(--kl-color-text) !important;
}

/* ==================================================
   16-08 VITA / BESCHREIBUNG
================================================== */

/*
   Vita und Beschreibung sind optionale Zusatzfelder.
   Sie werden nur vom PHP ausgegeben, wenn sie befüllt sind.
   Das CSS hält sie kompakt, damit das Teamkarten-Layout ruhig bleibt.
*/

.grid-team .team-vita-wrap,
.grid-team .team-description-wrap,
.entry-content .grid-team .team-vita-wrap,
.entry-content .grid-team .team-description-wrap {
  margin-top: 0.75rem !important;
  padding-top: 0.65rem !important;

  border-top: 0.1rem solid var(--kl-alpha-brown-border);

  color: var(--kl-color-text) !important;
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-fluid-145-180) !important;
  line-height: 1.42 !important;
}

/*
   Wenn direkt nach Kontakt ein Zusatzfeld kommt,
   bleibt der Abstand bewusst ruhig und nicht zu groß.
*/
.grid-team .team-contact-tel-wrap + .team-vita-wrap,
.grid-team .team-contact-email-wrap + .team-vita-wrap,
.grid-team .team-contact-tel-wrap + .team-description-wrap,
.grid-team .team-contact-email-wrap + .team-description-wrap {
  margin-top: 0.8rem !important;
}

/*
   Wenn Beschreibung direkt nach Vita kommt,
   soll keine doppelte Trennlinie wie zwei harte Blöcke wirken.
*/
.grid-team .team-vita-wrap + .team-description-wrap,
.entry-content .grid-team .team-vita-wrap + .team-description-wrap {
  margin-top: 0.6rem !important;
  padding-top: 0.55rem !important;
}

/*
   Titel für Vita.
*/
.grid-team .team-vita-titel,
.entry-content .grid-team .team-vita-titel {
  margin-bottom: 0.12rem !important;

  font-family: var(--kl-font-bold) !important;
  font-weight: bold !important;
  font-size: var(--kl-font-size-fluid-145-180) !important;
  color: var(--kl-color-text) !important;
}

/*
   Vita-Text kompakt halten.
*/
.grid-team .team-vita,
.entry-content .grid-team .team-vita {
  display: -webkit-box !important;
  -webkit-line-clamp: 5;
  -webkit-box-orient: vertical;

  overflow: hidden !important;

  color: var(--kl-color-text) !important;
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-fluid-145-180) !important;
  line-height: 1.42 !important;
}

/*
   Beschreibung als kurzer Zusatztext.
*/
.grid-team .team-description,
.entry-content .grid-team .team-description {
  display: -webkit-box !important;
  -webkit-line-clamp: 5;
  -webkit-box-orient: vertical;

  overflow: hidden !important;

  color: var(--kl-color-text) !important;
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-fluid-145-180) !important;
  line-height: 1.42 !important;
}

/*
   Leere optionale Zusatzblöcke sicher ausblenden.
*/
.grid-team .team-vita-wrap:empty,
.grid-team .team-description-wrap:empty,
.grid-team .team-vita:empty,
.grid-team .team-description:empty {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
}

/* ==================================================
   16-09 ALLGEMEINE TEAM-BEREICHE
================================================== */

.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,
.team-vita-titel {
  font-weight: bold;
}

.team-contact-email,
.team-contact-tel {
  text-decoration-color: var(--kl-color-magenta);
}

.team-stars-block div {
  min-width: 15em;
}

/* ==================================================
   16-10 RESPONSIVE / TABLET: 2 KARTEN
================================================== */

/*
   Wenn 3 Karten zu eng werden:
   2 Karten pro Reihe.
*/
@media (max-width: 1059px) {
  .entry-content .grid-team,
  .entry-content [class*="__inner-container"] > .grid-team {
    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;
  }

  .grid-team .team-loop,
  .grid-team .grid-loop.team-loop {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    align-items: stretch !important;

    gap: 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;
  }

  .grid-team .team-loop > .grid-team-item,
  .grid-team .grid-loop.team-loop > .grid-team-item,
  .entry-content .grid-team .team-loop > article.grid-team-item,
  .entry-content .grid-team .grid-loop.team-loop > article.grid-team-item {
    flex: 0 1 calc((100% - 2rem) / 2) !important;
    width: calc((100% - 2rem) / 2) !important;
    max-width: calc((100% - 2rem) / 2) !important;

    min-height: 56rem;

    align-self: stretch !important;

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

    box-sizing: border-box !important;
  }

  .grid-team .team-loop > .grid-team-item.team-block,
  .grid-team .grid-loop.team-loop > .grid-team-item.team-block {
    height: 100% !important;
    min-height: 100% !important;
  }

  .grid-team .team-block .team-image,
  .grid-team .team-block .pg34109fc44c7b {
    aspect-ratio: 1.12 / 1 !important;
  }

  .grid-team .team-block .team-image img,
  .grid-team .team-block .pg34109fc44c7b img {
    object-fit: cover !important;
    object-position: center 18% !important;
    padding: 0 !important;
  }
}

/* ==================================================
   16-11 RESPONSIVE / MOBIL: 1 KARTE
================================================== */

/*
   Wenn 2 Karten zu eng werden:
   1 Karte pro Reihe.
*/
@media (max-width: 700px) {
  .entry-content .grid-team,
  .entry-content [class*="__inner-container"] > .grid-team {
    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;
  }

  .grid-team .team-loop,
  .grid-team .grid-loop.team-loop {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    align-items: stretch !important;

    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;
  }

  .grid-team .team-loop > .grid-team-item,
  .grid-team .grid-loop.team-loop > .grid-team-item,
  .entry-content .grid-team .team-loop > article.grid-team-item,
  .entry-content .grid-team .grid-loop.team-loop > article.grid-team-item {
    flex: 0 1 42rem !important;
    width: 100% !important;
    max-width: 42rem !important;

    min-height: 56rem;

    align-self: stretch !important;

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

    box-sizing: border-box !important;
  }

  .grid-team .team-loop > .grid-team-item.team-block,
  .grid-team .grid-loop.team-loop > .grid-team-item.team-block {
    height: 100% !important;
    min-height: 100% !important;
  }

  .grid-team .team-block .team-image,
  .grid-team .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;
  }

  .grid-team .team-block .team-image img,
  .grid-team .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;
  }

  .grid-team .team-name h2,
  .grid-team .team-name .team-title {
    min-height: 0;
  }

  .grid-team .team-department-wrap {
    min-height: calc(3 * 1.4em + 1.65rem);
    margin-bottom: 0.45rem !important;
  }

  .grid-team .team-vita,
  .entry-content .grid-team .team-vita,
  .grid-team .team-description,
  .entry-content .grid-team .team-description {
    -webkit-line-clamp: 6;
  }
}

/* ==================================================
   16-12 RESPONSIVE / SEHR KLEINE DISPLAYS
================================================== */

@media (max-width: 480px) {
  .entry-content .grid-team,
  .entry-content [class*="__inner-container"] > .grid-team,
  .grid-team .team-loop,
  .grid-team .grid-loop.team-loop {
    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;
  }

  .grid-team .team-loop > .grid-team-item,
  .grid-team .grid-loop.team-loop > .grid-team-item,
  .entry-content .grid-team .team-loop > article.grid-team-item,
  .entry-content .grid-team .grid-loop.team-loop > article.grid-team-item {
    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;
  }

  .grid-team .team-block .team-image,
  .grid-team .team-block .pg34109fc44c7b {
    aspect-ratio: 4 / 3 !important;
  }

  .grid-team .team-block .team-image img,
  .grid-team .team-block .pg34109fc44c7b img {
    object-fit: cover !important;
    object-position: center 18% !important;
    border-radius: 16px 16px 0 0 !important;
    padding: 0 !important;
  }

  .grid-team .team-vita,
  .entry-content .grid-team .team-vita,
  .grid-team .team-description,
  .entry-content .grid-team .team-description {
    -webkit-line-clamp: 7;
  }
}
/* ==================================================
   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 UTOPIA / FARBVARIANTE BLAU
================================================== */

/*
   Bereichsübersicht
   --------------------------------------------------
   31-00 Utopia-Grundvariablen / blaue Multisite-Variante
   31-01 Utopia / WordPress-Akzentfarben
   31-02 Utopia / Separatoren und Trennlinien
   31-03 Utopia / Cookie-Hinweis blau
   31-04 Utopia / Logo-Tausch
   31-05 Utopia / Mobile Header- und Logo-Korrektur
   31-06 Utopia / Sprach-Icons einzeln ausblenden
*/

/* --------------------------------------------------
   31-00 Utopia-Grundvariablen / 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-04 Utopia / Logo-Tausch
   --------------------------------------------------
   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.png

   Wichtig:
   Die mobile Größe wird in 31-05 nochmals gezielt überschrieben,
   damit der Utopia-Header mobil unabhängig von KulturLeben sauber
   ausbalanciert werden kann.
-------------------------------------------------- */

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.png");
  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;
}

/* --------------------------------------------------
   31-05 Utopia / Mobile Header- und Logo-Korrektur
   --------------------------------------------------
   Diese Regeln korrigieren ausschließlich den mobilen Utopia-Header.

   Ziel:
   - Das Werkstatt-Utopia-Logo wird mobil deutlich größer dargestellt.
   - Der Header wird vertikal sauber ausbalanciert.
   - Der 3-Punkte-Menübutton sitzt rechts, aber nicht direkt am Rand.
   - Der 3-Punkte-Menübutton wird nicht mehr unter bzw. über das Logo
     in die Mitte gezogen.
   - KulturLeben wird nicht verändert, weil alles auf
     body.kl-theme-blue begrenzt ist.

   Hinweis:
   Diese Regeln stehen bewusst im Utopia-Bereich und nicht in Abschnitt 06,
   damit alle Utopia-spezifischen Abweichungen an einer Stelle bleiben.
-------------------------------------------------- */

@media (max-width: 700px) {
  body.kl-theme-blue .header-inner.section-inner {
    min-height: 15.5rem;
    display: grid;
    grid-template-columns: minmax(6rem, 1fr) auto minmax(6rem, 1fr);
    align-items: center;
    position: relative;
    padding-top: 0;
    padding-right: 0;
    padding-bottom: 0;
    padding-left: 0;
  }

  body.kl-theme-blue .header-titles-wrapper,
  body.kl-theme-blue .site-logo {
    grid-column: 2;
    justify-self: center;
    align-self: center;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  body.kl-theme-blue .custom-logo-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    max-width: calc(100vw - 15rem);
  }

  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 {
    width: min(34rem, calc(100vw - 15rem)) !important;
    height: auto !important;
    max-width: min(34rem, calc(100vw - 15rem)) !important;
    max-height: 12.5rem !important;
    margin: 0 !important;
    object-fit: contain;
  }

  /*
     Rechte Header-Seite:
     Der Toggle-Bereich wird absolut gesetzt, damit er nicht vom
     mittigen Logo-Raster verschoben wird.

     right: 2.4rem sorgt dafür, dass der Button rechts sitzt,
     aber nicht direkt am Bildschirmrand klebt.
  */

  body.kl-theme-blue .header-toggles {
    grid-column: auto;
    justify-self: auto;
    align-self: auto;
    position: absolute;
    top: 50%;
    right: 2.4rem;
    bottom: auto;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
    justify-content: center;
    width: auto;
    height: auto;
    margin: 0;
    z-index: 20;
  }

  /*
     Wichtig:
     Hier bewusst NICHT allgemein .nav-toggle oder .menu-toggle außerhalb
     von .header-toggles ansprechen. Sonst können andere 3-Punkte-Elemente
     oder Slider-/Carousel-Punkte versehentlich mitverschoben werden.
  */

  body.kl-theme-blue .header-toggles .toggle,
  body.kl-theme-blue .header-toggles button,
  body.kl-theme-blue .header-toggles .nav-toggle,
  body.kl-theme-blue .header-toggles .menu-toggle {
    position: static;
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    transform: none;
    margin: 0;
  }

  body.kl-theme-blue .header-inner.section-inner .language-switch {
    grid-column: 3;
    justify-self: end;
    align-self: center;
  }
}

@media (max-width: 420px) {
  body.kl-theme-blue .header-inner.section-inner {
    min-height: 15rem;
    grid-template-columns: minmax(5.5rem, 1fr) auto minmax(5.5rem, 1fr);
  }

  body.kl-theme-blue .custom-logo-link {
    max-width: calc(100vw - 13rem);
  }

  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 {
    width: min(31rem, calc(100vw - 13rem)) !important;
    max-width: min(31rem, calc(100vw - 13rem)) !important;
    max-height: 11.5rem !important;
  }

  body.kl-theme-blue .header-toggles {
    right: 2rem;
  }
}

/* --------------------------------------------------
   31-06 Utopia / Sprach-Icons einzeln ausblenden
   --------------------------------------------------
   Die Icons bzw. Kacheln für Einfache/Leichte Sprache und Gebärdensprache
   können auf Utopia einzeln ausgeblendet werden.

   Bereichsübersicht:
   31-06-01 Grundlayout Sprachschalter und mobile Sprach-Widgets
   31-06-02 Mobile Menüansicht: abgeschnittene Beschriftung verhindern
   31-06-03 Aktiv: Gebärdensprache auf Utopia ausblenden
   31-06-04 Option A: Einfache/Leichte Sprache ausblenden
   31-06-05 Option B: Beide Sprach-Icons ausblenden, mobilen Platz entfernen
   31-06-06 Option C: Beide Sprach-Icons ausblenden, mobilen Platz erhalten
   31-06-07 Sicherheit: Fallback über WordPress-Bildklassen

   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 optional weg, damit kein leerer Abstand im mobilen Menü bleibt.

   Aktueller Wunsch:
   - Einfache/Leichte Sprache bleibt sichtbar.
   - Gebärdensprache wird ausgeblendet.
-------------------------------------------------- */

/* --------------------------------------------------
   31-06-01 Grundlayout Sprachschalter und mobile Sprach-Widgets
-------------------------------------------------- */

/* 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;
}

/* --------------------------------------------------
   31-06-02 Mobile Menüansicht: abgeschnittene Beschriftung verhindern
   --------------------------------------------------
   Auf Utopia kann im geöffneten mobilen Menü der Text oberhalb der
   Sprach-Icons angeschnitten werden. Ursache ist die abweichende
   mobile Widget-/Icon-Konstellation im Utopia-Menü.

   Deshalb bekommt der mobile Widget-Bereich nur auf Utopia etwas mehr
   oberen Innenabstand. Zusätzlich werden Overflow-Beschränkungen
   gelockert, damit Beschriftungen nicht abgeschnitten werden.
-------------------------------------------------- */

@media (max-width: 700px) {
  body.kl-theme-blue .menu-modal .mobile-widgets {
    padding-top: 3.2rem;
    overflow: visible;
  }

  body.kl-theme-blue .menu-modal .mobile-widgets .widget,
  body.kl-theme-blue .menu-modal .mobile-widgets .widget-content {
    overflow: visible;
  }

  body.kl-theme-blue .menu-modal .mobile-widgets .widget-title,
  body.kl-theme-blue .menu-modal .mobile-widgets p,
  body.kl-theme-blue .menu-modal .mobile-widgets a {
    line-height: 1.25;
    overflow: visible;
  }
}

/* --------------------------------------------------
   31-06-03 Aktiv: Gebärdensprache auf Utopia ausblenden
   --------------------------------------------------
   Gebärdensprache wird auf Utopia ausgeblendet.

   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;
}

/* --------------------------------------------------
   31-06-04 Option A: Einfache/Leichte Sprache ausblenden
   --------------------------------------------------
   Einfache/Leichte Sprache auf Utopia ausblenden.

   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;
}
*/

/* --------------------------------------------------
   31-06-05 Option B: Beide Sprach-Icons ausblenden, mobilen Platz entfernen
   --------------------------------------------------
   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, können die Einzelregeln oben 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;
}
*/

/* --------------------------------------------------
   31-06-06 Option C: Beide Sprach-Icons ausblenden, mobilen Platz erhalten
   --------------------------------------------------
   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;
}
*/

/* --------------------------------------------------
   31-06-07 Sicherheit: Fallback über WordPress-Bildklassen
   --------------------------------------------------
   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 */

/* --------------------------------------------------
32-03 ADMIN / ÜBERSICHTSTABELLEN CPTS
-------------------------------------------------- */

/* KL_ADMIN_COLUMNS_CSS_START */

/*
 * KulturLeben Admin-Tabellen
 * --------------------------------------------------
 * Gehört zu /partials/kl-admin-columns.php.
 *
 * Aufgabe:
 * - gestaltet die WordPress-Listenansichten im Backend
 * - regelt Spaltenbreiten, Badges, Zuordnungen und Quick Edit
 * - zeigt Statushinweise nur über Schriftfarben
 *
 * Wichtig:
 * - PHP erzeugt Spalten, Inhalte und Zeilen-Klassen.
 * - CSS gestaltet nur die Darstellung.
 * - Die Inline-CSS-Funktion in kl-admin-columns.php kann nach Einbau
 *   dieses Blocks entfernt werden, wenn diese CSS-Datei im Admin geladen wird.
 */

.wp-list-table.fixed,
.wp-list-table.widefat.fixed.posts {
  table-layout: fixed;
}

.wp-list-table th,
.wp-list-table td {
  vertical-align: top;
}

.wp-list-table td {
  overflow-wrap: break-word;
  word-break: normal;
}

.wp-list-table .column-cb {
  width: 2.2rem;
}

/*
 * Native WordPress-Titelspalte.
 * Wichtig: nicht durch kl_title ersetzen, sonst kann Quick Edit kaputtgehen.
 */
.wp-list-table .column-title,
.wp-list-table .column-kl_title {
  width: 11rem;
}

.wp-list-table .column-date {
  width: 7.5rem;
}

.wp-list-table .column-kl_event_datetime {
  width: 8.5rem;
}

.wp-list-table .column-kl_image,
.wp-list-table.widefat.fixed.posts .column-kl_image,
.wp-list-table.widefat.fixed.posts td.column-kl_image {
  width: 5.2rem !important;
  max-width: 5.2rem !important;
  text-align: center;
}

.wp-list-table .column-kl_site_scope,
.wp-list-table .column-kl_news_type,
.wp-list-table .column-kl_event_type,
.wp-list-table .column-kl_team_type,
.wp-list-table .column-kl_project_type,
.wp-list-table .column-kl_sponsor_type,
.wp-list-table .column-kl_completed,
.wp-list-table .column-kl_active {
  width: 8.8rem;
}

.wp-list-table .column-kl_subtitle,
.wp-list-table .column-kl_keyword,
.wp-list-table .column-kl_event_location,
.wp-list-table .column-kl_project_location,
.wp-list-table .column-kl_location_ref,
.wp-list-table .column-kl_project_time,
.wp-list-table .column-kl_timeline,
.wp-list-table .column-kl_location_address,
.wp-list-table .column-kl_location_hint,
.wp-list-table .column-kl_comment,
.wp-list-table .column-kl_location_type,
.wp-list-table .column-kl_department,
.wp-list-table .column-kl_vita {
  width: 8.8rem;
}

.wp-list-table .column-kl_location_external_managed {
  width: 7.4rem;
}

.wp-list-table .column-kl_location_coords {
  width: 7.2rem;
}

.wp-list-table .column-kl_description,
.wp-list-table .column-kl_info {
  width: 11.5rem;
}

.wp-list-table .column-kl_project_sponsors,
.wp-list-table .column-kl_event_sponsors {
  width: 10rem;
}

.wp-list-table .column-kl_related_project,
.wp-list-table .column-kl_used_in_projects,
.wp-list-table .column-kl_used_in_events,
.wp-list-table .column-kl_used_in_news {
  width: 9.5rem;
}

.wp-list-table .column-kl_link,
.wp-list-table .column-kl_project_url,
.wp-list-table .column-kl_url,
.wp-list-table .column-kl_email {
  width: 7.5rem;
}

.wp-list-table .column-kl_phone {
  width: 6.8rem;
}

/* Inhalt/Auszug unter Titel ausblenden */
.wp-list-table .column-title > p,
.wp-list-table .column-title .post-excerpt,
.wp-list-table .column-title .excerpt {
  display: none !important;
}

.wp-list-table .kl-admin-text,
.wp-list-table .kl-admin-link,
.wp-list-table .kl-admin-title-link {
  display: inline-block;
  max-width: 100%;
  line-height: 1.35;
  overflow-wrap: break-word;
  word-break: normal;
}

.wp-list-table .kl-admin-link {
  max-height: 3.9em;
  overflow: hidden;
}

.kl-admin-title-link,
.wp-list-table .row-title {
  font-weight: 600;
}

.wp-list-table.widefat.fixed.posts .kl-admin-thumb,
.wp-list-table.widefat.fixed.posts .kl-admin-thumb a,
.kl-admin-thumb {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4.5rem;
  max-width: 4.5rem;
  height: 3.8rem;
  border-radius: 8px;
  background: #f3f3f3;
  overflow: hidden;
  line-height: 0;
  box-shadow: 0 1px 4px rgba(0, 0, 0, .12);
}

.wp-list-table.widefat.fixed.posts .kl-admin-thumb img,
.wp-list-table.widefat.fixed.posts td.column-kl_image img,
.kl-admin-thumb img {
  display: block;
  width: auto !important;
  max-width: 4.5rem !important;
  height: auto !important;
  max-height: 3.8rem !important;
  object-fit: contain;
}

.kl-admin-empty {
  color: #777;
}

.kl-admin-location-address,
.kl-admin-location-fallback {
  display: block;
  margin-top: 0.2rem;
  color: #646970;
  font-size: 11px;
  line-height: 1.25;
}

/* Orte / Adressen: externe und lokale Standortwerte */
.wp-list-table .column-kl_location_address { width: 13.5rem; }
.wp-list-table .column-kl_location_hint { width: 13rem; }
.wp-list-table .column-kl_location_external_managed { width: 6.2rem; }
.wp-list-table .column-kl_location_coords { width: 7.4rem; }
.wp-list-table .kl-admin-location-line { display: block; margin: 0 0 0.22rem; line-height: 1.25; }
.wp-list-table .kl-admin-location-label { color: #50575e; font-weight: 600; }
.wp-list-table .kl-admin-location-value { color: #50575e; font-weight: 400; }
.wp-list-table .kl-admin-location-value-external,
.wp-list-table a .kl-admin-location-value-external,
.wp-list-table .kl-admin-location-external-yes { color: #1f7a32; font-weight: 700; }
.wp-list-table .kl-admin-location-value-wp,
.wp-list-table .kl-admin-location-value-fallback,
.wp-list-table .kl-admin-location-value-legacy { color: #646970; font-weight: 400; }
.wp-list-table .kl-admin-location-external-no { color: #646970; font-weight: 600; }
.wp-list-table .kl-admin-location-external-id { display:block; margin-top:.18rem; color:#1f7a32; font-size:11px; line-height:1.2; font-weight:600; }
.wp-list-table .kl-admin-location-external-missing { display:block; margin-top:.24rem; color:#b35a00; font-size:11px; line-height:1.2; font-weight:600; }
.wp-list-table .kl-admin-location-link { display:inline-block; max-width:100%; line-height:1.25; }


/* --------------------------------------------------
32-03-01 STATUSFARBEN / NUR SCHRIFT
-------------------------------------------------- */

/*
 * Statusfarben in Admin-Tabellen.
 * --------------------------------------------------
 * Es wird bewusst nur die Schrift gefärbt.
 * Keine Zellflächen, keine Hintergrundfarben.
 * WordPress-Aktionslinks wie „Papierkorb“ behalten ihre eigenen Farben.
 */

.wp-list-table.widefat.fixed.posts tr.kl-admin-location-external-managed > th.check-column {
  color: #1f7a32;
}

.wp-list-table.widefat.fixed.posts tr.kl-admin-partner-inactive > th.check-column,
.wp-list-table.widefat.fixed.posts tr.kl-admin-partner-inactive > td,
.wp-list-table.widefat.fixed.posts tr.kl-admin-partner-inactive > td a:not(.submitdelete) {
  color: #7a3fa1;
}

.wp-list-table.widefat.fixed.posts tr.kl-admin-event-past > th.check-column,
.wp-list-table.widefat.fixed.posts tr.kl-admin-event-past > td,
.wp-list-table.widefat.fixed.posts tr.kl-admin-event-past > td a:not(.submitdelete) {
  color: #b35a00;
}

.wp-list-table.widefat.fixed.posts tr.kl-admin-event-upcoming > th.check-column,
.wp-list-table.widefat.fixed.posts tr.kl-admin-event-upcoming > td,
.wp-list-table.widefat.fixed.posts tr.kl-admin-event-upcoming > td a:not(.submitdelete) {
  color: #1f7a32;
}

/*
 * WordPress-Aktionslinks.
 * --------------------------------------------------
 * Normale Aktionen dürfen die Zeilenfarbe erben.
 * Papierkorb bleibt rot, damit die kritische Aktion erkennbar bleibt.
 */
.wp-list-table.widefat.fixed.posts tr .row-actions,
.wp-list-table.widefat.fixed.posts tr .row-actions a,
.wp-list-table.widefat.fixed.posts tr .row-actions span {
  color: inherit;
}

.wp-list-table.widefat.fixed.posts tr .row-actions .trash a,
.wp-list-table.widefat.fixed.posts tr .row-actions .submitdelete {
  color: #b32d2e;
}

.wp-list-table.widefat.fixed.posts .kl-admin-location-external-yes {
  display: inline-block;
  font-weight: 700;
  color: #1f7a32;
  line-height: 1.35;
}

/* --------------------------------------------------
32-03-02 BADGES / HINWEISMARKEN
-------------------------------------------------- */

.kl-admin-badges {
  display: flex;
  flex-wrap: wrap;
  gap: .25rem;
  align-items: flex-start;
}

.kl-admin-badge {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  padding: .15rem .48rem;
  border-radius: 999px;
  font-size: 11px;
  line-height: 1.45;
  font-weight: 600;
  white-space: nowrap;
  color: #4a4a4a;
  background: #eeeeee;
  border: 1px solid rgba(0, 0, 0, .06);
}

/* Sichtbarkeit */
.kl-admin-badge-kulturleben {
  color: #9b0056;
  background: #ffe2f1;
  border-color: #f3a4ce;
}

.kl-admin-badge-utopia {
  color: #005a9c;
  background: #dcecff;
  border-color: #99c9ff;
}

/* News-Typen */
.kl-admin-badge-eigene {
  color: #0f5132;
  background: #d1e7dd;
  border-color: #9fd5b5;
}

.kl-admin-badge-extern {
  color: #842029;
  background: #f8d7da;
  border-color: #f1aeb5;
}

/* Fallback Typ-Badges */
.kl-admin-badge-type {
  color: #4b3a00;
  background: #fff0bf;
  border-color: #eed37b;
}

/* Team-Typen */
.kl-admin-badge-vorstand {
  color: #ffffff;
  background: #5b2a86;
  border-color: #5b2a86;
}

.kl-admin-badge-geschaeftsfuehrung {
  color: #ffffff;
  background: #005ea8;
  border-color: #005ea8;
}

.kl-admin-badge-mitarbeiter {
  color: #0f5132;
  background: #d1e7dd;
  border-color: #9fd5b5;
}

.kl-admin-badge-freiwillige {
  color: #005f73;
  background: #d8f3f5;
  border-color: #9bdde4;
}

.kl-admin-badge-orchester {
  color: #7a3b00;
  background: #ffe0b2;
  border-color: #f5bc72;
}

.kl-admin-badge-schirmherr-botschafter {
  color: #664d03;
  background: #fff3cd;
  border-color: #ffda6a;
}

/* Unterstützer-Typen */
.kl-admin-badge-hauptfoerderer {
  color: #5c4200;
  background: #ffe08a;
  border-color: #e5b900;
}

.kl-admin-badge-foerderer {
  color: #6b5200;
  background: #fff4b8;
  border-color: #e8cf64;
}

.kl-admin-badge-sponsor {
  color: #8a3b00;
  background: #ffd8b5;
  border-color: #f0a45d;
}

.kl-admin-badge-kulturpartner {
  color: #5a2375;
  background: #ead7f5;
  border-color: #cba2df;
}

.kl-admin-badge-sozialpartner {
  color: #155724;
  background: #d9f2df;
  border-color: #9fd5aa;
}

.kl-admin-badge-mitglied-bei {
  color: #084298;
  background: #d6e9ff;
  border-color: #9ec5fe;
}

.kl-admin-badge-ausgezeichnet {
  color: #343a40;
  background: #e9ecef;
  border-color: #c6cbd1;
}

/* Projekt-Typen */
.kl-admin-badge-angebot {
  color: #084298;
  background: #d6e9ff;
  border-color: #9ec5fe;
}

.kl-admin-badge-projekt {
  color: #ffffff;
  background: #174a7c;
  border-color: #174a7c;
}

.kl-admin-badge-kulturformat {
  color: #5a2375;
  background: #ead7f5;
  border-color: #cba2df;
}

.kl-admin-badge-kulturgruppe {
  color: #9b0056;
  background: #ffe2f1;
  border-color: #f3a4ce;
}

.kl-admin-badge-werkstatt {
  color: #7a3b00;
  background: #ffe0b2;
  border-color: #f5bc72;
}

.kl-admin-badge-workshopreihe {
  color: #8a3b00;
  background: #ffd8b5;
  border-color: #f0a45d;
}

.kl-admin-badge-chor {
  color: #005f73;
  background: #d8f3f5;
  border-color: #9bdde4;
}

.kl-admin-badge-ensemble {
  color: #155724;
  background: #d9f2df;
  border-color: #9fd5aa;
}

.kl-admin-badge-musikgruppe {
  color: #004c4c;
  background: #d2f4ea;
  border-color: #8bdac7;
}

.kl-admin-badge-theatergruppe {
  color: #842029;
  background: #f8d7da;
  border-color: #f1aeb5;
}

/* Veranstaltungstypen */
.kl-admin-badge-auffuehrung {
  color: #5a2375;
  background: #ead7f5;
  border-color: #cba2df;
}

.kl-admin-badge-konzert {
  color: #004c4c;
  background: #d2f4ea;
  border-color: #8bdac7;
}

.kl-admin-badge-kulturveranstaltung {
  color: #9b0056;
  background: #ffe2f1;
  border-color: #f3a4ce;
}

.kl-admin-badge-lesung {
  color: #084298;
  background: #d6e9ff;
  border-color: #9ec5fe;
}

.kl-admin-badge-probe {
  color: #334155;
  background: #e2e8f0;
  border-color: #bac4d1;
}

.kl-admin-badge-theater {
  color: #842029;
  background: #f8d7da;
  border-color: #f1aeb5;
}

.kl-admin-badge-workshop {
  color: #8a3b00;
  background: #ffd8b5;
  border-color: #f0a45d;
}

.tablenav .actions select[name^="kl_filter_"],
.tablenav .actions select[name^="kl_filter_meta_"] {
  max-width: 14rem;
}

/* --------------------------------------------------
32-03-03 QUICK EDIT KOMPAKT
-------------------------------------------------- */

.inline-edit-row .inline-edit-wrapper {
  padding: 0.75rem 0.9rem 0.85rem !important;
}

.inline-edit-row fieldset {
  margin: 0 !important;
}

.inline-edit-row fieldset.inline-edit-col-left,
.inline-edit-row fieldset.inline-edit-col-center,
.inline-edit-row fieldset.inline-edit-col-right {
  box-sizing: border-box;
  padding: 0 0.9rem 0 0 !important;
}

.inline-edit-row .inline-edit-col-left {
  width: 43% !important;
}

.inline-edit-row .inline-edit-col-center {
  width: 42% !important;
}

.inline-edit-row .inline-edit-col-right {
  width: 15% !important;
}

.inline-edit-row .inline-edit-legend {
  margin: 0 0 0.35rem !important;
  font-weight: 700;
}

.inline-edit-row label {
  margin-bottom: 0.28rem !important;
}

.inline-edit-row label .title,
.inline-edit-row fieldset.inline-edit-date legend .title,
.inline-edit-row .inline-edit-categories-label {
  width: 5.8rem !important;
  font-weight: 600;
}

.inline-edit-row .input-text-wrap input[type="text"] {
  min-height: 28px !important;
}

.inline-edit-row .inline-edit-date {
  margin-top: 0.15rem !important;
}

.inline-edit-row .timestamp-wrap input,
.inline-edit-row .timestamp-wrap select {
  min-height: 26px !important;
}

/* Passwort/Privat ausblenden */
.inline-edit-row .inline-edit-group:has(input[name="post_password"]),
.inline-edit-row label:has(input[name="post_password"]),
.inline-edit-row .inline-edit-or,
.inline-edit-row .inline-edit-private {
  display: none !important;
}

/* Taxonomie-Boxen kompakt */
.inline-edit-row .inline-edit-categories .title,
.inline-edit-row .inline-edit-categories-label {
  display: block !important;
  margin: 0.05rem 0 0.2rem !important;
}

.inline-edit-row .cat-checklist,
.inline-edit-row .kl-admin-qe-checklist {
  max-height: 8.5rem;
  overflow: auto;
  margin: 0;
  padding: 0.45rem 0.6rem;
  border: 1px solid #c3c4c7;
  background: #fff;
}

.inline-edit-row .cat-checklist li,
.inline-edit-row .kl-admin-qe-checklist li {
  margin: 0 0 0.25rem;
}

.inline-edit-row .inline-edit-status select,
.inline-edit-row .kl-admin-qe-location-select {
  width: 100%;
  max-width: 100%;
}

.inline-edit-row .kl-admin-qe-fieldset {
  clear: both;
  margin-top: 0.75rem;
}

.inline-edit-row .kl-admin-qe-fieldset h4 {
  margin: 0.2rem 0 0.55rem;
  font-size: 13px;
  font-weight: 600;
}

.inline-edit-row .kl-admin-qe-field {
  margin-bottom: 0.75rem;
}

.inline-edit-row .kl-admin-qe-field > .title,
.inline-edit-row .kl-admin-qe-location-field .title {
  display: block;
  float: none;
  width: auto;
  margin: 0 0 0.3rem;
  font-weight: 600;
}

.inline-edit-row .kl-admin-qe-empty,
.inline-edit-row .kl-admin-qe-field .description {
  color: #646970;
  font-size: 12px;
}

.inline-edit-row .submit.inline-edit-save {
  margin-top: 0.45rem !important;
  padding-top: 0.6rem !important;
  border-top: 1px solid #dcdcde;
}

.inline-edit-row .button,
.inline-edit-row .button-primary {
  min-height: 30px !important;
}

@media (max-width: 1200px) {
  .inline-edit-row .inline-edit-col-left,
  .inline-edit-row .inline-edit-col-center,
  .inline-edit-row .inline-edit-col-right {
    width: 100% !important;
    padding-right: 0 !important;
    margin-bottom: 0.65rem !important;
  }
}

/* KL_ADMIN_COLUMNS_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;
    }
}
//* ==================================================
   34 SINGLE-SEITEN / NEWS / PROJEKTE / VERANSTALTUNGEN
================================================== */

/*
   Abschnittsübersicht
   --------------------------------------------------
   34-01 Grundrahmen / Gesamtkarte / Bereichslogik
   34-02 Kopfbereich / Titel / Typ-Labels
   34-03 Hero-Bild / große Hero-Schlagwörter
   34-04 Meta / Projektlaufzeit / Orte
   34-05 Inhalt / Aktionen / Projekt-Zusatzlink
   34-06 Abschnittsüberschriften / obere und untere Mehr-Links
   34-07 Untere Grids / Cards / Readmore-Abstände
   34-08 Card-Schlagwörter und Card-Orte
   34-09 Projektkontakte / Team
   34-10 Fördererlogos
   34-11 Responsive Regeln
   34-12 Utopia / Blauvariante

   Grundsatz:
   - Abschnitt 34 gestaltet ausschließlich Single-Seiten für News, Projekte und Veranstaltungen.
   - Grid-Grundlogik aus Abschnitt 11 bleibt führend und wird nur gezielt ergänzt.
   - Schriftgrößen nutzen Variablen aus Abschnitt 00.
   - Untere Mehr-/Archivlinks erscheinen nur in der mobilen Einspaltenansicht.
   - Obere Mehr-Links setzen das Markup aus partials/grids/kl-grid-single-headings.php voraus.
*/

/* ==================================================
   34-01 GRUNDRAHMEN / GESAMTKARTE / BEREICHSLOGIK
================================================== */

/* 34-01-01 Single-Scope und 100rem-Gesamtbreite */
#site-content.kl-single {
  box-sizing: border-box;
  width: calc(100% - (var(--kl-layout-side-gap) * 2));
  max-width: var(--kl-layout-width);
  margin-left: auto;
  margin-right: auto;
  padding-top: 3rem;
  padding-bottom: 5.8rem;
  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  overflow-x: clip;
}

#site-content.kl-single,
#site-content.kl-single *,
#site-content.kl-single *::before,
#site-content.kl-single *::after {
  box-sizing: border-box;
}

#site-content.kl-single img,
#site-content.kl-single svg,
#site-content.kl-single iframe,
#site-content.kl-single video {
  max-width: 100%;
}

/* 34-01-02 Zusammenhängende Single-Gesamtkarte mit Abstand zum Footer */
#site-content.kl-single .kl-single-card {
  position: relative;
  width: 100%;
  max-width: var(--kl-layout-width);
  margin-left: auto;
  margin-right: auto;
  margin-top: 1rem;
  margin-bottom: 1.8rem;
  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;
}

#site-content.kl-single-news .kl-single-card,
#site-content.kl-single .kl-news-single-card {
  border-color: var(--kl-color-magenta);
}

#site-content.kl-single-project .kl-single-card,
#site-content.kl-single .kl-project-single-card {
  border-color: var(--kl-color-brown);
}

#site-content.kl-single-event .kl-single-card,
#site-content.kl-single .kl-event-single-card {
  border-color: var(--kl-color-muted-bluegrey);
}

/* 34-01-03 Obere Template-Artikel nicht als zweite Karte behandeln */
#site-content.kl-single .kl-news-single-top,
#site-content.kl-single .kl-event-single-top,
#site-content.kl-single .kl-project-hub-top {
  width: 100%;
  max-width: 100%;
  margin: 0;
  padding: 0 0 2.4rem;
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  overflow: visible;
}

#site-content.kl-single .kl-project-hub-bottom,
#site-content.kl-single .kl-single-section {
  width: 100%;
  max-width: 100%;
}

/* ==================================================
   34-02 KOPFBEREICH / TITEL / TYP-LABELS
================================================== */

/* 34-02-01 Kopfbereich nach Single-Typ */
#site-content.kl-single .kl-single-header {
  width: 100%;
  margin: 0;
  padding: 2.4rem 2.6rem 2.15rem;
  background-color: var(--kl-color-brown);
  color: var(--kl-color-white);
  border-radius: 0;
}

#site-content.kl-single-news .kl-single-header,
#site-content.kl-single .kl-news-single-card .kl-single-header {
  background-color: var(--kl-color-magenta);
  color: var(--kl-color-white);
}

#site-content.kl-single-project .kl-single-header,
#site-content.kl-single .kl-project-single-card .kl-single-header {
  background-color: var(--kl-color-brown);
  color: var(--kl-color-white);
}

#site-content.kl-single-event .kl-single-header,
#site-content.kl-single .kl-event-single-card .kl-single-header {
  background-color: var(--kl-color-muted-bluegrey);
  color: var(--kl-color-white);
}

/* 34-02-02 Typ-Labels oben im Header: größer und kontrastierend */
#site-content.kl-single .kl-single-badges {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.8rem;
  margin: 0 0 1.1rem;
  padding: 0;
}

#site-content.kl-single .kl-single-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.55rem;
  padding: 0.38rem 0.95rem 0.44rem;
  border: 0.16rem solid currentColor;
  border-radius: 0;
  background-color: var(--kl-color-magenta);
  color: var(--kl-color-white);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-140);
  line-height: 1.1;
  letter-spacing: 0.035em;
  text-decoration: none;
}

#site-content.kl-single-project .kl-single-badge,
#site-content.kl-single .kl-project-single-card .kl-single-badge {
  border-color: var(--kl-color-magenta);
  background-color: var(--kl-color-magenta);
  color: var(--kl-color-white);
}

#site-content.kl-single-news .kl-single-badge,
#site-content.kl-single .kl-news-single-card .kl-single-badge {
  border-color: var(--kl-color-muted-bluegrey);
  background-color: var(--kl-color-muted-bluegrey);
  color: var(--kl-color-white);
}

#site-content.kl-single-event .kl-single-badge,
#site-content.kl-single .kl-event-single-card .kl-single-badge {
  border-color: var(--kl-color-brown);
  background-color: var(--kl-color-brown);
  color: var(--kl-color-white);
}

/* 34-02-03 Titel und Untertitel */
#site-content.kl-single .kl-single-title {
  margin: 0;
  color: inherit;
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-entry-title);
  line-height: 1.08;
  letter-spacing: normal;
  text-align: left;
  word-break: normal;
  overflow-wrap: normal;
  hyphens: none;
}

#site-content.kl-single .kl-single-subtitle {
  max-width: 78rem;
  margin: 0.95rem 0 0;
  color: inherit;
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-170);
  line-height: 1.35;
}

/* 34-02-04 Event-Kalenderlink: rechts im Kopfbereich, als Textlink */
#site-content.kl-single-event .kl-event-header,
#site-content.kl-single .kl-event-single-card .kl-event-header { position: relative; }
#site-content.kl-single .kl-single-header-actions,
#site-content.kl-single .kl-event-header-actions {
  display:flex !important; justify-content:flex-end !important; align-items:center;
  width:100% !important; margin:1rem 0 0 !important; padding:0; text-align:right;
}
#site-content.kl-single .kl-event-calendar-link {
  display:inline-flex !important; align-items:center !important; gap:.48em !important;
  color:var(--kl-color-white) !important; font-family:var(--kl-font-bold) !important;
  font-size:var(--kl-font-size-150); line-height:1.25; letter-spacing:.02em;
  text-decoration:underline !important; text-decoration-color:var(--kl-alpha-white-780) !important;
  text-decoration-thickness:.075em; text-underline-offset:.22em; background:transparent; border:0; box-shadow:none;
}
#site-content.kl-single .kl-event-calendar-link:hover,
#site-content.kl-single .kl-event-calendar-link:focus { text-decoration-color:var(--kl-color-white) !important; outline:none; }
#site-content.kl-single .kl-event-calendar-link:focus-visible { outline:.18rem solid var(--kl-color-white); outline-offset:.28rem; }

/* ==================================================
   34-03 HERO-BILD / GROSSE HERO-SCHLAGWÖRTER
================================================== */

/* 34-03-01 Hero-Bild */
#site-content.kl-single .kl-single-hero,
#site-content.kl-single .kl-single-image {
  position: relative;
  display: block;
  width: 100%;
  height: clamp(27rem, 42vw, 43rem);
  margin: 0;
  padding: 0;
  overflow: hidden;
  background-color: var(--kl-color-brown);
  border-radius: 0;
}

#site-content.kl-single .kl-single-hero img,
#site-content.kl-single .kl-single-image img {
  display: block;
  width: 100% !important;
  min-width: 100%;
  height: 100% !important;
  min-height: 100%;
  max-width: none !important;
  object-fit: cover !important;
  object-position: center center;
  margin: 0 !important;
  padding: 0 !important;
  border-radius: 0 !important;
  transform: scale(1.015);
  transform-origin: center center;
}

/* 34-03-02 Große Hero-Schlagwörter: rechteckig, oben bündig, kontrastierend */
#site-content.kl-single .kl-single-hero > .kl-single-hero-keyword,
#site-content.kl-single .kl-single-image > .kl-single-hero-keyword,
#site-content.kl-single .kl-single-hero > .project-keyword,
#site-content.kl-single .kl-single-image > .project-keyword,
#site-content.kl-single .kl-single-hero > .event-keyword,
#site-content.kl-single .kl-single-image > .event-keyword,
#site-content.kl-single .kl-single-hero > .news-keyword,
#site-content.kl-single .kl-single-image > .news-keyword {
  position: absolute;
  z-index: 4;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  max-width: calc(100% - 2.4rem);
  margin: 0;
  padding: 0.48rem 1.15rem 0.56rem;
  border: none;
  border-radius: 0;
  background-color: var(--kl-color-magenta);
  color: var(--kl-color-white);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-fluid-178-212);
  line-height: 1.08;
  letter-spacing: 0.025em;
  text-align: center;
  text-decoration: none;
  box-shadow: none;
}

#site-content.kl-single .kl-single-hero > .kl-single-hero-keyword span,
#site-content.kl-single .kl-single-image > .kl-single-hero-keyword span,
#site-content.kl-single .kl-single-hero > .project-keyword span,
#site-content.kl-single .kl-single-image > .project-keyword span,
#site-content.kl-single .kl-single-hero > .event-keyword span,
#site-content.kl-single .kl-single-image > .event-keyword span,
#site-content.kl-single .kl-single-hero > .news-keyword span,
#site-content.kl-single .kl-single-image > .news-keyword span {
  display: block;
  margin: 0;
  padding: 0;
  background: transparent;
  color: inherit;
  border: none;
  border-radius: 0;
  box-shadow: none;
  font: inherit;
  line-height: inherit;
}

#site-content.kl-single-project .kl-single-hero > .kl-single-hero-keyword,
#site-content.kl-single-project .kl-single-hero > .project-keyword,
#site-content.kl-single .kl-project-single-card .kl-single-hero > .kl-single-hero-keyword,
#site-content.kl-single .kl-project-single-card .kl-single-hero > .project-keyword {
  background-color: var(--kl-color-magenta);
  color: var(--kl-color-white);
}

#site-content.kl-single-news .kl-single-hero > .kl-single-hero-keyword,
#site-content.kl-single-news .kl-single-hero > .news-keyword,
#site-content.kl-single .kl-news-single-card .kl-single-hero > .kl-single-hero-keyword,
#site-content.kl-single .kl-news-single-card .kl-single-hero > .news-keyword {
  background-color: var(--kl-color-muted-bluegrey);
  color: var(--kl-color-white);
}

#site-content.kl-single-event .kl-single-hero > .kl-single-hero-keyword,
#site-content.kl-single-event .kl-single-hero > .event-keyword,
#site-content.kl-single .kl-event-single-card .kl-single-hero > .kl-single-hero-keyword,
#site-content.kl-single .kl-event-single-card .kl-single-hero > .event-keyword {
  background-color: var(--kl-color-brown);
  color: var(--kl-color-white);
}

/* ==================================================
   34-04 META / PROJEKTLAUFZEIT / ORTE
================================================== */

/* 34-04-01 Allgemeine Meta-Infoblöcke oben auf Singles */
#site-content.kl-single .kl-single-meta-box,
#site-content.kl-single .project-time,
#site-content.kl-single .kl-project-hub-time,
#site-content.kl-single .kl-event-meta-box,
#site-content.kl-single .kl-news-timeline-box {
  width: auto;
  max-width: calc(100% - 5.2rem);
  margin: 2rem 2.6rem 0;
  padding: 1.15rem 1.3rem;
  border: 1px solid var(--kl-color-border-soft);
  border-left: none;
  border-right: none;
  background-color: var(--kl-alpha-white-780);
  color: var(--kl-color-text);
  box-shadow: none;
}

#site-content.kl-single .kl-single-meta-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.45rem 0.75rem;
  margin: 0;
  padding: 0.35rem 0;
  border-bottom: 1px solid var(--kl-color-border-soft);
}

#site-content.kl-single .kl-single-meta-row:last-child {
  border-bottom: none;
}

#site-content.kl-single .kl-single-meta-label,
#site-content.kl-single .grid-meta-title {
  color: var(--kl-color-brown);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-145);
  line-height: 1.35;
}

#site-content.kl-single .kl-single-meta-value,
#site-content.kl-single .grid-meta-value {
  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-145);
  line-height: 1.35;
}

#site-content.kl-single .kl-single-meta-value a {
  color: var(--kl-color-magenta);
  font-family: inherit;
  text-decoration: underline;
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.18em;
}

/* 34-04-02 Projektlaufzeit als ruhiger Infoblock analog zum Ortsblock */
#site-content.kl-single .project-time.kl-single-meta-box,
#site-content.kl-single .kl-project-hub-time {
  display: block;
  width: auto;
  max-width: calc(100% - 5.2rem);
  margin: 1.35rem 2.6rem 0;
  padding: 1.15rem 1.3rem;
  border: 1px solid var(--kl-color-border-soft);
  border-left: none;
  border-right: none;
  background-color: var(--kl-alpha-white-780);
  color: var(--kl-color-text);
  box-shadow: none;
}

#site-content.kl-single .project-time.kl-single-meta-box .grid-meta-title,
#site-content.kl-single .kl-project-hub-time .grid-meta-title {
  display: inline;
  margin: 0 0.35rem 0 0;
  color: var(--kl-color-brown);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-145);
  line-height: 1.35;
}

#site-content.kl-single .project-time.kl-single-meta-box .grid-meta-value,
#site-content.kl-single .kl-project-hub-time .grid-meta-value {
  display: inline;
  margin: 0;
  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-145);
  line-height: 1.35;
}

/* 34-04-03 Adressblöcke auf Singles: Aufbau analog Homepage-Bürokarte */
#site-content.kl-single .kl-location-card,
#site-content.kl-single .kl-project-location,
#site-content.kl-single .kl-event-location,
#site-content.kl-single .kl-news-location,
#site-content.kl-single .project-location,
#site-content.kl-single .event-location-block,
#site-content.kl-single .news-location-block {
  position: relative;
  width: auto;
  max-width: calc(100% - 5.2rem);
  margin: 1.55rem 2.6rem 1.55rem;
  padding: 1.25rem 1.45rem 1.35rem;
  border: 1px solid var(--kl-color-border-soft);
  border-radius: 14px;
  background-color: var(--kl-color-white);
  color: var(--kl-color-text);
  box-shadow: 0 2px 8px var(--kl-alpha-shadow-060);
  overflow: hidden;
}

/* Die frühere Zusatzüberschrift „Ort / Adresse“ wird nicht mehr angezeigt. */
#site-content.kl-single .kl-location-block-title,
#site-content.kl-single .project-location-title,
#site-content.kl-single .event-location-title,
#site-content.kl-single .news-location-title,
#site-content.kl-single .kl-project-location-title,
#site-content.kl-single .kl-event-location-title,
#site-content.kl-single .kl-news-location-title {
  display: none !important;
}

#site-content.kl-single .kl-location-type-badge,
#site-content.kl-single .project-location-badge,
#site-content.kl-single .event-location-badge,
#site-content.kl-single .news-location-badge,
#site-content.kl-single .kl-project-location-badge,
#site-content.kl-single .kl-event-location-badge,
#site-content.kl-single .kl-news-location-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: max-content;
  max-width: 100%;
  margin: 0 0 0.9rem;
  padding: 0.42rem 0.95rem 0.48rem;
  border-radius: 4px;
  background-color: var(--kl-color-surface-cream);
  color: var(--kl-color-brown);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-135);
  line-height: 1.1;
}

#site-content.kl-single .kl-location-name,
#site-content.kl-single .project-location-name,
#site-content.kl-single .event-location-name,
#site-content.kl-single .news-location-name,
#site-content.kl-single .kl-project-location-name,
#site-content.kl-single .kl-event-location-name,
#site-content.kl-single .kl-news-location-name {
  display: block;
  margin: 0 0 0.9rem;
  color: var(--kl-color-black);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-200);
  line-height: 1.18;
}

#site-content.kl-single .location-line {
  display: grid;
  grid-template-columns: 7.4rem minmax(0, 1fr);
  column-gap: 0.95rem;
  align-items: baseline;
  margin: 0.48rem 0 0;
  color: var(--kl-color-black);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-150);
  line-height: 1.38;
}

#site-content.kl-single .kl-location-line-label,
#site-content.kl-single .location-line .lbl {
  display: inline-block;
  color: var(--kl-color-brown);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-150);
  line-height: 1.38;
  white-space: nowrap;
}

#site-content.kl-single .kl-location-address,
#site-content.kl-single .kl-location-hint,
#site-content.kl-single .kl-location-accessibility,
#site-content.kl-single .project-location-address,
#site-content.kl-single .event-location-address,
#site-content.kl-single .news-location-address,
#site-content.kl-single .kl-project-location-address,
#site-content.kl-single .kl-event-location-address,
#site-content.kl-single .kl-news-location-address {
  display: inline;
  margin: 0;
  color: var(--kl-color-black);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-150);
  line-height: 1.38;
}

#site-content.kl-single .kl-location-route-links,
#site-content.kl-single .project-location-links,
#site-content.kl-single .event-location-links,
#site-content.kl-single .news-location-links,
#site-content.kl-single .kl-project-location-links,
#site-content.kl-single .kl-event-location-links,
#site-content.kl-single .kl-news-location-links {
  display: block;
  margin-top: 0.55rem;
  color: var(--kl-color-black);
  font-size: var(--kl-font-size-145);
  line-height: 1.35;
}

#site-content.kl-single .kl-location-link-buttons,
#site-content.kl-single .link-buttons {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.42rem 0.55rem;
  min-width: 0;
}

#site-content.kl-single .soft-link,
#site-content.kl-single .kl-location-route-link,
#site-content.kl-single .project-location-links a,
#site-content.kl-single .event-location-links a,
#site-content.kl-single .news-location-links a,
#site-content.kl-single .kl-project-location-links a,
#site-content.kl-single .kl-event-location-links a,
#site-content.kl-single .kl-news-location-links a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  max-width: 100%;
  min-height: 2.45rem;
  padding: 0.24rem 0.7rem 0.32rem;
  border: 1px solid var(--kl-color-border-soft);
  border-radius: 999px;
  background-color: var(--kl-color-surface-cool);
  color: var(--kl-color-magenta);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-130);
  line-height: 1.2;
  text-decoration: none !important;
  box-shadow: 0 1px 3px var(--kl-alpha-shadow-060);
  transition: background-color .16s ease, border-color .16s ease, color .16s ease;
}

/* Telefon-Pill bewusst globaler, damit derselbe Hörer auch in Grids greift. */
#site-content.kl-single .kl-location-phone-pill,
.kl-location-phone-pill {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: 0.38rem;
  width: max-content;
  max-width: 100%;
  min-width: 0;
  min-height: 2.35rem;
  padding: 0.18rem 0.55rem 0.24rem;
  border: 1px solid var(--kl-color-border-soft);
  border-radius: 999px;
  background-color: var(--kl-color-surface-cool);
  color: var(--kl-color-brown);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-130);
  line-height: 1.15;
  white-space: nowrap;
  text-decoration: none !important;
  box-shadow: 0 1px 3px var(--kl-alpha-shadow-060);
}

#site-content.kl-single .kl-location-phone-number,
#site-content.kl-single .kl-location-phone-icon,
.kl-location-phone-number,
.kl-location-phone-icon {
  display: inline-block;
  line-height: 1;
}

#site-content.kl-single .kl-location-phone-icon,
.kl-location-phone-icon {
  font-size: 1.12em;
  transform: translateY(0.04em);
}

#site-content.kl-single .soft-link:hover,
#site-content.kl-single .soft-link:focus,
#site-content.kl-single .kl-location-phone-pill:hover,
#site-content.kl-single .kl-location-phone-pill:focus,
#site-content.kl-single .kl-location-route-link:hover,
#site-content.kl-single .kl-location-route-link:focus,
.kl-location-phone-pill:hover,
.kl-location-phone-pill:focus {
  border-color: var(--kl-color-magenta);
  background-color: var(--kl-color-magenta);
  color: var(--kl-color-white);
  text-decoration: none !important;
  outline: none;
}

#site-content.kl-single .kl-location-empty-notice {
  margin-top: 0.6rem;
  color: var(--kl-color-muted-bluegrey);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-140);
  line-height: 1.35;
}

/* ==================================================
   34-05 INHALT / AKTIONEN / PROJEKT-ZUSATZLINK
================================================== */

/* 34-05-01 Fließinhalt */
#site-content.kl-single .kl-single-content,
#site-content.kl-single .project-content,
#site-content.kl-single .kl-project-content,
#site-content.kl-single .kl-event-content,
#site-content.kl-single .kl-news-content {
  width: auto;
  max-width: calc(100% - 5.2rem);
  margin: 2.2rem 2.6rem 0;
  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-165);
  line-height: 1.55;
}

#site-content.kl-single .kl-single-content p,
#site-content.kl-single .project-content p,
#site-content.kl-single .kl-project-content p,
#site-content.kl-single .kl-event-content p,
#site-content.kl-single .kl-news-content p {
  margin-top: 0;
  margin-bottom: 1.25rem;
  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
  font-size: var(--kl-font-size-165);
  line-height: 1.55;
}

#site-content.kl-single .kl-single-content a {
  color: var(--kl-color-magenta);
  text-decoration: underline;
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.18em;
}

/* 34-05-02 Aktionsbuttons */
#site-content.kl-single .kl-single-actions,
#site-content.kl-single .kl-news-actions,
#site-content.kl-single .kl-event-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 1.2rem;
  margin: 2.4rem 2.6rem 0;
}

#site-content.kl-single .kl-single-button,
#site-content.kl-single .kl-news-project-button,
#site-content.kl-single .kl-event-url-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 4.6rem;
  padding: 1rem 1.55rem;
  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-150);
  line-height: 1.2;
  letter-spacing: 0.04em;
  text-align: center;
  text-decoration: none !important;
}

#site-content.kl-single .kl-single-button:hover,
#site-content.kl-single .kl-single-button:focus,
#site-content.kl-single .kl-news-project-button:hover,
#site-content.kl-single .kl-news-project-button:focus,
#site-content.kl-single .kl-event-url-button:hover,
#site-content.kl-single .kl-event-url-button:focus {
  background-color: var(--kl-color-magenta);
  border-color: var(--kl-color-brown);
  color: var(--kl-color-white);
  text-decoration: none !important;
}

/* 34-05-03 Projekt-Zusatzlink nach Orts-/Adressblock */
#site-content.kl-single .kl-project-hub-top > .grid-readmore {
  display: flex;
  justify-content: flex-end;
  width: auto;
  max-width: calc(100% - 5.2rem);
  margin: 1.4rem 2.6rem 2.4rem;
  padding: 0;
  text-align: right;
}

#site-content.kl-single .kl-project-hub-top > .grid-readmore .grid-readmore-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  min-height: 3.8rem;
  padding: 0.55rem 3.2rem 0.55rem 0.2rem;
  color: var(--kl-color-magenta);
  background: transparent;
  border: none;
  box-shadow: none;
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-145);
  line-height: 1.2;
  letter-spacing: 0.03em;
  text-align: right;
  text-decoration: none !important;
}

#site-content.kl-single .kl-project-hub-top > .grid-readmore .grid-readmore-link::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  width: 2.35rem;
  height: 2.35rem;
  background-image: var(--kl-icon-pfeil-magenta);
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;
  transform: translateY(-50%) rotate(0deg);
  transform-origin: center center;
  transition: transform 0.16s ease;
}

#site-content.kl-single .kl-project-hub-top > .grid-readmore .grid-readmore-link:hover,
#site-content.kl-single .kl-project-hub-top > .grid-readmore .grid-readmore-link:focus {
  color: var(--kl-color-brown);
  text-decoration: none !important;
}

#site-content.kl-single .kl-project-hub-top > .grid-readmore .grid-readmore-link:hover::after,
#site-content.kl-single .kl-project-hub-top > .grid-readmore .grid-readmore-link:focus::after {
  transform: translateY(-50%) rotate(-45deg);
}

/* ==================================================
   34-06 ABSCHNITTSÜBERSCHRIFTEN / MEHR-LINKS
================================================== */

/* 34-06-01 Unterbereiche */
#site-content.kl-single .kl-single-section {
  position: relative;
  margin: 0;
  padding: 0 0 3rem;
  border-top: 1px solid var(--kl-alpha-brown-border);
  background: transparent;
}

#site-content.kl-single .kl-project-hub-bottom .kl-single-section:first-child,
#site-content.kl-single .kl-single-card > .kl-single-section:first-of-type {
  border-top: none;
}

/* 34-06-02 Normale Überschrift ohne oberen Mehr-Link */
#site-content.kl-single .kl-single-section-title,
#site-content.kl-single .grid-sponsor-title {
  display: block;
  width: 100%;
  margin: 0 0 1.35rem;
  padding: 0.45rem 0.8rem 0.55rem;
  background-color: var(--kl-color-brown);
  color: var(--kl-color-white);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-220);
  line-height: 1.15;
  letter-spacing: 0.01em;
  text-align: left;
}

/* 34-06-03 Überschrift mit oberem Mehr-Link aus kl-grid-single-headings.php */
#site-content.kl-single .kl-single-section-heading {
  display: flex;
  align-items: stretch;
  justify-content: space-between;
  gap: 1rem;
  width: 100%;
  margin: 0 0 1.35rem;
  background-color: var(--kl-color-brown);
}

#site-content.kl-single .kl-single-section-heading .kl-single-section-title {
  flex: 1 1 auto;
  margin: 0;
}

#site-content.kl-single .kl-single-section-heading-news,
#site-content.kl-single .kl-single-section-heading-news .kl-single-section-title {
  background-color: var(--kl-color-magenta);
  color: var(--kl-color-white);
}

#site-content.kl-single .kl-single-section-heading-project,
#site-content.kl-single .kl-single-section-heading-project .kl-single-section-title,
#site-content.kl-single .kl-single-section-heading-team,
#site-content.kl-single .kl-single-section-heading-team .kl-single-section-title,
#site-content.kl-single .kl-single-section-heading-sponsor,
#site-content.kl-single .kl-single-section-heading-sponsor .kl-single-section-title {
  background-color: var(--kl-color-brown);
  color: var(--kl-color-white);
}

#site-content.kl-single .kl-single-section-heading-event,
#site-content.kl-single .kl-single-section-heading-event .kl-single-section-title {
  background-color: var(--kl-color-muted-bluegrey);
  color: var(--kl-color-white);
}

#site-content.kl-single .kl-single-section-head-more-link {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  flex: 0 0 auto;
  min-width: max-content;
  padding: 0.45rem 0.8rem 0.55rem;
  color: var(--kl-color-white);
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-170);
  line-height: 1.15;
  text-decoration: none !important;
}

#site-content.kl-single .kl-single-section-head-more-arrow {
  display: inline-block;
  width: 2.4rem;
  height: 2.4rem;
  margin-left: 0.65rem;
  font-size: var(--kl-font-size-zero);
  line-height: 0;
  background-image: var(--kl-icon-pfeil-weiss);
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;
  transform: rotate(0deg);
  transform-origin: center center;
  transition: transform 0.16s ease;
}

#site-content.kl-single .kl-single-section-head-more-link:hover .kl-single-section-head-more-arrow,
#site-content.kl-single .kl-single-section-head-more-link:focus .kl-single-section-head-more-arrow {
  transform: rotate(-45deg);
}

/* 34-06-04 Untere Mehr-/Archivlinks: auf Desktop/mehrspaltig hart ausblenden */
#site-content.kl-single .kl-single-section > .kl-single-section-more,
#site-content.kl-single .kl-single-section > .kl-single-section-more-right,
#site-content.kl-single .kl-single-section > .kl-single-section-more.grid-readmore,
#site-content.kl-single .kl-single-section > .grid-readmore.kl-single-section-more {
  display: none !important;
}

#site-content.kl-single .kl-single-section-more-link {
  position: relative;
  align-items: center;
  justify-content: flex-end;
  min-height: 3.8rem;
  padding: 0.55rem 3.1rem 0.55rem 0.2rem;
  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.03em;
  text-align: right;
  text-decoration: none !important;
}

#site-content.kl-single .kl-single-section-more-link::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  width: 2.25rem;
  height: 2.25rem;
  background-image: var(--kl-icon-pfeil-magenta);
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;
  transform: translateY(-50%) rotate(0deg);
  transform-origin: center center;
  transition: transform 0.16s ease;
}

#site-content.kl-single .kl-single-section-more-link:hover::after,
#site-content.kl-single .kl-single-section-more-link:focus::after {
  transform: translateY(-50%) rotate(-45deg);
}

/* ==================================================
   34-07 UNTERE GRIDS / CARDS / READMORE-ABSTÄNDE
================================================== */

/* 34-07-01 Innenkante der unteren Gridbereiche */
#site-content.kl-single .kl-single-section .alignwide,
#site-content.kl-single .kl-single-section .kl-grids {
  width: auto;
  max-width: none;
  margin-left: 2.4rem;
  margin-right: 2.4rem;
}

#site-content.kl-single .kl-single-section .grid-loop,
#site-content.kl-single .kl-single-section .items-loop {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 2.4rem;
  align-items: stretch;
  width: 100%;
  max-width: 100%;
}

/* 34-07-02 Cards als Flex-Spalten mit Abstand vor Readmore */
#site-content.kl-single .kl-single-section .grid-item {
  display: flex;
  flex-direction: column;
  min-width: 0;
  height: 100%;
  background-color: var(--kl-color-surface-card);
}

#site-content.kl-single .kl-single-section .grid-item .grid-content {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-width: 0;
}

#site-content.kl-single .kl-single-section .grid-item .grid-description,
#site-content.kl-single .kl-single-section .grid-item .news-description,
#site-content.kl-single .kl-single-section .grid-item .event-description,
#site-content.kl-single .kl-single-section .grid-item .grid-meta,
#site-content.kl-single .kl-single-section .grid-item .event-meta {
  margin-bottom: 1.2rem;
}

#site-content.kl-single .kl-single-section .grid-item > .grid-readmore,
#site-content.kl-single .kl-single-section .grid-item .grid-content + .grid-readmore,
#site-content.kl-single .kl-single-section .grid-item .grid-readmore {
  margin-top: auto;
  padding-top: 1.25rem;
}

/* ==================================================
   34-08 CARD-SCHLAGWÖRTER UND CARD-ORTE
================================================== */

/* 34-08-01 Card-Schlagwörter folgen der jeweiligen Bereichsfarbe */
#site-content.kl-single .kl-single-section .grid-item .grid-keyword,
#site-content.kl-single .kl-single-section .grid-item .news-keyword,
#site-content.kl-single .kl-single-section .grid-item .event-keyword,
#site-content.kl-single .kl-single-section .grid-item .event-type,
#site-content.kl-single .kl-single-section .grid-item .project-keyword {
  z-index: 3;
  border-radius: 0;
  box-shadow: none;
}

#site-content.kl-single .kl-project-news-section .grid-item .grid-keyword,
#site-content.kl-single .kl-event-related-news-section .grid-item .grid-keyword,
#site-content.kl-single .kl-project-news-section .grid-item .news-keyword,
#site-content.kl-single .kl-event-related-news-section .grid-item .news-keyword,
#site-content.kl-single .kl-project-news-section .grid-item .event-keyword,
#site-content.kl-single .kl-event-related-news-section .grid-item .event-keyword {
  background-color: var(--kl-color-magenta);
  color: var(--kl-color-white);
}

#site-content.kl-single .kl-project-events-upcoming-section .grid-item,
#site-content.kl-single .kl-project-events-past-section .grid-item,
#site-content.kl-single .kl-event-related-events-upcoming-section .grid-item,
#site-content.kl-single .kl-event-related-events-past-section .grid-item {
  border-color: var(--kl-color-muted-bluegrey);
}

#site-content.kl-single .kl-project-events-upcoming-section .grid-item .grid-keyword,
#site-content.kl-single .kl-project-events-past-section .grid-item .grid-keyword,
#site-content.kl-single .kl-event-related-events-upcoming-section .grid-item .grid-keyword,
#site-content.kl-single .kl-event-related-events-past-section .grid-item .grid-keyword,
#site-content.kl-single .kl-project-events-upcoming-section .grid-item .event-keyword,
#site-content.kl-single .kl-project-events-past-section .grid-item .event-keyword,
#site-content.kl-single .kl-event-related-events-upcoming-section .grid-item .event-keyword,
#site-content.kl-single .kl-event-related-events-past-section .grid-item .event-keyword,
#site-content.kl-single .kl-project-events-upcoming-section .grid-item .event-type,
#site-content.kl-single .kl-project-events-past-section .grid-item .event-type,
#site-content.kl-single .kl-event-related-events-upcoming-section .grid-item .event-type,
#site-content.kl-single .kl-event-related-events-past-section .grid-item .event-type {
  background-color: var(--kl-color-muted-bluegrey);
  color: var(--kl-color-white);
}

/* 34-08-02 News-Cards im Single-Kontext: einheitliche Innenkante und kompakterer Rhythmus */
#site-content.kl-single .kl-project-news-section .grid-item > :not(.grid-image):not(.news-img):not(.grid-keyword):not(.news-keyword):not(.grid-readmore),
#site-content.kl-single .kl-event-related-news-section .grid-item > :not(.grid-image):not(.news-img):not(.grid-keyword):not(.news-keyword):not(.grid-readmore) {
  margin-left: 1.2rem;
  margin-right: 1.2rem;
}

#site-content.kl-single .kl-project-news-section .grid-item .grid-title,
#site-content.kl-single .kl-project-news-section .grid-item .news-titel,
#site-content.kl-single .kl-project-news-section .grid-item .news-title,
#site-content.kl-single .kl-event-related-news-section .grid-item .grid-title,
#site-content.kl-single .kl-event-related-news-section .grid-item .news-titel,
#site-content.kl-single .kl-event-related-news-section .grid-item .news-title {
  margin-top: 0.95rem;
  margin-bottom: 0.75rem;
}

#site-content.kl-single .kl-project-news-section .grid-item .grid-subtitle,
#site-content.kl-single .kl-project-news-section .grid-item .news-subtitle,
#site-content.kl-single .kl-event-related-news-section .grid-item .grid-subtitle,
#site-content.kl-single .kl-event-related-news-section .grid-item .news-subtitle {
  margin-top: 0;
  margin-bottom: 0.9rem;
}

#site-content.kl-single .kl-project-news-section .grid-item .news-timeline,
#site-content.kl-single .kl-project-news-section .grid-item .grid-timeline,
#site-content.kl-single .kl-project-news-section .grid-item .news-location,
#site-content.kl-single .kl-project-news-section .grid-item .grid-location,
#site-content.kl-single .kl-event-related-news-section .grid-item .news-timeline,
#site-content.kl-single .kl-event-related-news-section .grid-item .grid-timeline,
#site-content.kl-single .kl-event-related-news-section .grid-item .news-location,
#site-content.kl-single .kl-event-related-news-section .grid-item .grid-location {
  margin-top: 0.55rem;
  margin-bottom: 0;
}

#site-content.kl-single .kl-project-news-section .grid-item .news-description,
#site-content.kl-single .kl-project-news-section .grid-item .grid-description,
#site-content.kl-single .kl-event-related-news-section .grid-item .news-description,
#site-content.kl-single .kl-event-related-news-section .grid-item .grid-description {
  margin-top: 1.05rem;
  margin-bottom: 1.2rem;
}

#site-content.kl-single .kl-project-news-section .grid-item .grid-readmore,
#site-content.kl-single .kl-event-related-news-section .grid-item .grid-readmore {
  margin-left: 1.2rem;
  margin-right: 1.2rem;
}

/* 34-08-03 Card-Meta und Card-Orte ruhig strukturieren */
#site-content.kl-single .kl-single-section .grid-item .grid-meta,
#site-content.kl-single .kl-single-section .grid-item .event-meta,
#site-content.kl-single .kl-single-section .grid-item .news-timeline,
#site-content.kl-single .kl-single-section .grid-item .news-location,
#site-content.kl-single .kl-single-section .grid-item .event-location,
#site-content.kl-single .kl-single-section .grid-item .event-location-wrap,
#site-content.kl-single .kl-single-section .grid-item .news-location-title-wrap,
#site-content.kl-single .kl-single-section .grid-item .grid-location-title-wrap,
#site-content.kl-single .kl-single-section .grid-item .grid-location {
  background: transparent;
  border: none;
  box-shadow: none;
  color: var(--kl-color-text);
}

#site-content.kl-single .kl-single-section .grid-item .event-meta {
  display: block;
  margin-top: 1.1rem;
}

#site-content.kl-single .kl-single-section .grid-item .event-date-wrap,
#site-content.kl-single .kl-single-section .grid-item .event-time-wrap,
#site-content.kl-single .kl-single-section .grid-item .event-location-wrap,
#site-content.kl-single .kl-single-section .grid-item .news-timeline,
#site-content.kl-single .kl-single-section .grid-item .news-location {
  display: block;
  margin: 0.35rem 0 0;
  padding: 0;
  font-size: inherit;
  line-height: 1.35;
}

#site-content.kl-single .kl-single-section .grid-item .event-meta-label,
#site-content.kl-single .kl-single-section .grid-item .grid-meta-title,
#site-content.kl-single .kl-single-section .grid-item .news-location-title-wrap,
#site-content.kl-single .kl-single-section .grid-item .grid-location-title-wrap {
  display: inline;
  color: var(--kl-color-brown);
  font-family: var(--kl-font-bold) !important;
}

#site-content.kl-single .kl-single-section .grid-item .event-location,
#site-content.kl-single .kl-single-section .grid-item .news-location,
#site-content.kl-single .kl-single-section .grid-item .grid-location {
  color: var(--kl-color-text);
  font-family: var(--kl-font-main) !important;
}

#site-content.kl-single .kl-single-section .grid-item .grid-meta a,
#site-content.kl-single .kl-single-section .grid-item .event-meta a,
#site-content.kl-single .kl-single-section .grid-item .news-location a,
#site-content.kl-single .kl-single-section .grid-item .event-location a {
  color: var(--kl-color-magenta);
  font-family: inherit;
  text-decoration: underline;
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.16em;
}

/* ==================================================
   34-08-99 SINGLE-GRIDS / ANGLEICHUNG AN HOME-GRIDS
================================================== */

/* Single-Grids übernehmen die Card-Zonenlogik aus Abschnitt 11. */
#site-content.kl-single .kl-single-section .kl-grids .grid-item {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: var(--kl-card-min-height);
  height: auto;
  background-color: var(--kl-color-surface-card);
}

#site-content.kl-single .kl-single-section .kl-grids .grid-content {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-width: 0;
}

#site-content.kl-single .kl-single-section .kl-grids .grid-card-head {
  height: 12.8rem;
  min-height: 12.8rem;
}

#site-content.kl-single .kl-single-section .kl-grids.grid-news .grid-card-meta,
#site-content.kl-single .kl-single-section .kl-grids.grid-news .news-card-meta {
  height: 19rem;
  min-height: 19rem;
}

#site-content.kl-single .kl-single-section .kl-grids.grid-events .grid-card-meta,
#site-content.kl-single .kl-single-section .kl-grids.grid-events .event-card-meta {
  height: 19rem;
  min-height: 19rem;
}

#site-content.kl-single .kl-single-section .kl-grids.grid-projekte .grid-card-meta,
#site-content.kl-single .kl-single-section .kl-grids.grid-projekte .project-card-meta {
  height: 29rem;
  min-height: 29rem;
}

#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .grid-meta,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .grid-meta-row,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .event-date-wrap,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .event-time-wrap,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .event-location-wrap,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .event-project-wrap,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .project-time,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .project-location,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .news-timeline,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .news-location {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  column-gap: 0.38em;
  align-items: baseline;
  margin: 0;
  padding: 0;
  min-height: 0;
  line-height: 1.28;
}

#site-content.kl-single .kl-single-section .kl-grids.grid-news .news-card-meta .news-timeline { margin-bottom: 1.45rem; }
#site-content.kl-single .kl-single-section .kl-grids.grid-events .event-card-meta .event-location-wrap { margin-bottom: 1.25rem; }

#site-content.kl-single .kl-single-section .kl-grids.grid-projekte .project-card-meta .project-time {
  min-height: 3.15em;
  margin-bottom: 0.95rem;
}

#site-content.kl-single .kl-single-section .kl-grids.grid-projekte .project-card-meta .project-location {
  min-height: 6.4em;
  margin-bottom: 0.85rem;
}

/* Single-Grid-Card-Meta-Links wie Home-Grids: erst Hover/Fokus wird magenta. */
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .grid-location-link,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .news-location-link,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .project-location-link,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .event-location-link,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .event-project-link,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .grid-location a,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .event-location a,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .news-location a,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .project-location a {
  color: var(--kl-color-text) !important;
  font-family: var(--kl-font-main) !important;
  font-weight: 600 !important;
  text-decoration: none !important;
}

#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .grid-location-link:hover,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .grid-location-link:focus,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .news-location-link:hover,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .news-location-link:focus,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .project-location-link:hover,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .project-location-link:focus,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .event-location-link:hover,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .event-location-link:focus,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .event-project-link:hover,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .event-project-link:focus,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .grid-location a:hover,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .grid-location a:focus,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .event-location a:hover,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .event-location a:focus,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .news-location a:hover,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .news-location a:focus,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .project-location a:hover,
#site-content.kl-single .kl-single-section .kl-grids .grid-card-meta .project-location a:focus {
  color: var(--kl-color-magenta) !important;
  text-decoration: none !important;
}

#site-content.kl-single .kl-single-section .kl-grids .grid-card-body,
#site-content.kl-single .kl-single-section .kl-grids .grid-description.grid-card-body {
  margin-top: 0;
  padding-top: 1.2em;
  border-top: 1px solid rgba(101, 76, 56, .16);
}

#site-content.kl-single .kl-single-section .grid-item .grid-sponsor-title,
#site-content.kl-single .kl-single-section .grid-item .event-sponsor-title {
  display: block;
  width: auto;
  margin: 0.9rem 0 0.42em !important;
  padding-left: clamp(0.85em, 3.2cqw, 1.35em) !important;
  padding-right: clamp(0.85em, 3.2cqw, 1.35em) !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  background: transparent !important;
  color: var(--kl-color-text) !important;
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-card-meta-fluid) !important;
  line-height: 1.22;
  letter-spacing: normal;
  text-align: left;
}

#site-content.kl-single .kl-single-section .grid-item .event-sponsors.grid-sponsor-logos {
  padding-left: clamp(0.85em, 3.2cqw, 1.35em) !important;
  padding-right: clamp(0.85em, 3.2cqw, 1.35em) !important;
  background: transparent !important;
}

/* News- und Event-Single Extra-Link: rechtsbündig wie Grid-Readmore mit drehendem Pfeil. */
#site-content.kl-single .kl-event-extra-readmore,
#site-content.kl-single .kl-news-extra-readmore {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  max-width: calc(100% - 5.2rem);
  margin: 0.85rem auto 1.4rem;
  padding: 0;
  text-align: right;
}

#site-content.kl-single .kl-event-extra-readmore .grid-readmore-link,
#site-content.kl-single .kl-news-extra-readmore .grid-readmore-link {
  position: relative;
  display: inline-flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: center;
  min-height: 2.6rem;
  padding-right: 3rem;
  color: var(--kl-color-magenta);
  background: transparent;
  border: none;
  box-shadow: none;
  font-family: var(--kl-font-bold) !important;
  font-size: var(--kl-font-size-145);
  line-height: 1.2;
  letter-spacing: 0.03em;
  text-align: right;
  text-decoration: none !important;
}

#site-content.kl-single .kl-event-extra-readmore .grid-readmore-link::after,
#site-content.kl-single .kl-news-extra-readmore .grid-readmore-link::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  width: 2.35rem;
  height: 2.35rem;
  background-image: var(--kl-icon-pfeil-magenta);
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;
  transform: translateY(-50%) rotate(0deg);
  transform-origin: center center;
  transition: transform 0.16s ease;
}

#site-content.kl-single .kl-event-extra-readmore .grid-readmore-link:hover,
#site-content.kl-single .kl-event-extra-readmore .grid-readmore-link:focus,
#site-content.kl-single .kl-news-extra-readmore .grid-readmore-link:hover,
#site-content.kl-single .kl-news-extra-readmore .grid-readmore-link:focus {
  color: var(--kl-color-brown);
  text-decoration: none !important;
  outline: none;
}

#site-content.kl-single .kl-event-extra-readmore .grid-readmore-link:hover::after,
#site-content.kl-single .kl-event-extra-readmore .grid-readmore-link:focus::after,
#site-content.kl-single .kl-news-extra-readmore .grid-readmore-link:hover::after,
#site-content.kl-single .kl-news-extra-readmore .grid-readmore-link:focus::after {
  transform: translateY(-50%) rotate(-45deg);
}

body.kl-theme-blue #site-content.kl-single .kl-event-extra-readmore .grid-readmore-link,
body.kl-theme-blue #site-content.kl-single .kl-news-extra-readmore .grid-readmore-link { color: var(--kl-color-blue-brand); }
body.kl-theme-blue #site-content.kl-single .kl-event-extra-readmore .grid-readmore-link::after,
body.kl-theme-blue #site-content.kl-single .kl-news-extra-readmore .grid-readmore-link::after { background-image: var(--kl-icon-pfeil-blau); }

/* ==================================================
   34-09 PROJEKTKONTAKTE / TEAM
================================================== */

/* 34-09-01 Kontaktbereich: maximal 3 Kontakte, 3 / 2 / 1, ohne Riesenkarte */
#site-content.kl-single .kl-project-contacts-section .kl-project-contacts-grid {
  width: auto;
  max-width: none;
  margin-left: 2.4rem;
  margin-right: 2.4rem;
}

#site-content.kl-single .kl-project-contacts-loop {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 2rem;
  align-items: stretch;
  width: 100% !important;
  max-width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

#site-content.kl-single .kl-project-contact-card {
  display: flex;
  flex-direction: column;
  width: 100% !important;
  max-width: 100% !important;
  height: 100%;
  min-width: 0;
  overflow: hidden;
}

/* 34-09-02 Kontaktbild begrenzen */
#site-content.kl-single .kl-project-contact-image,
#site-content.kl-single .kl-project-contact-card .team-image,
#site-content.kl-single .kl-project-contact-card .grid-image {
  width: 100% !important;
  height: clamp(20rem, 22vw, 27rem);
  max-height: 27rem;
  margin: 0 !important;
  overflow: hidden;
}

#site-content.kl-single .kl-project-contact-image img,
#site-content.kl-single .kl-project-contact-card .team-image img,
#site-content.kl-single .kl-project-contact-card .grid-image img {
  display: block;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  object-fit: cover;
  object-position: center center;
  margin: 0 !important;
}

#site-content.kl-single .kl-project-contact-name-wrap,
#site-content.kl-single .kl-project-contact-info {
  padding-left: 1.2rem;
  padding-right: 1.2rem;
}

#site-content.kl-single .kl-project-contact-info {
  padding-bottom: 1.4rem;
}

#site-content.kl-single .kl-project-contact-info > * + * {
  margin-top: 1rem;
}

/* ==================================================
   34-10 FÖRDERERLOGOS
================================================== */

/* 34-10-01 Fördererlogos wie Home: ruhig, ohne Einzelkarten */
#site-content.kl-single .kl-project-sponsors-section,
#site-content.kl-single .kl-event-sponsors-section,
#site-content.kl-single .kl-event-project-sponsors-section,
#site-content.kl-single .kl-news-project-sponsors-section {
  padding-bottom: 2.4rem;
}

#site-content.kl-single .kl-single-logo-grid,
#site-content.kl-single .kl-project-sponsors-grid,
#site-content.kl-single .kl-news-project-sponsors-grid,
#site-content.kl-single .grid-sponsor-logos {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.8rem 2.4rem;
  align-items: center;
  width: auto;
  max-width: none;
  margin: 0 2.4rem;
  padding: 1.4rem 0;
  border: none;
  background: transparent;
  box-shadow: none;
}

#site-content.kl-single .kl-single-logo-item,
#site-content.kl-single .project-sponsor-logo-wrap,
#site-content.kl-single .event-sponsor-logo-wrap,
#site-content.kl-single .news-project-sponsor-logo-wrap,
#site-content.kl-single .grid-sponsor-logo-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  min-height: 5.2rem;
  margin: 0;
  padding: 0.25rem;
  border: none;
  background: transparent;
  box-shadow: none;
}

#site-content.kl-single .kl-single-logo-item a,
#site-content.kl-single .project-sponsor-logo-wrap a,
#site-content.kl-single .event-sponsor-logo-wrap a,
#site-content.kl-single .news-project-sponsor-logo-wrap a,
#site-content.kl-single .grid-sponsor-logo-wrap a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  border: none;
  background: transparent;
  box-shadow: none;
  text-decoration: none;
}

#site-content.kl-single .kl-single-logo-grid img,
#site-content.kl-single .project-sponsor-logo,
#site-content.kl-single .event-sponsor-logo,
#site-content.kl-single .news-project-sponsor-logo,
#site-content.kl-single .grid-sponsor-logo {
  display: block;
  width: auto;
  max-width: 14rem;
  height: auto;
  max-height: 5rem;
  margin: 0 auto;
  padding: 0;
  object-fit: contain;
  border: none;
  background: transparent;
  box-shadow: none;
}

/* 34-10-02 Sicherheit: Logo-Links bekommen keine externen Pfeile */
#site-content.kl-single .kl-single-logo-grid a::before,
#site-content.kl-single .kl-single-logo-grid a::after,
#site-content.kl-single .grid-sponsor-logo-link::before,
#site-content.kl-single .grid-sponsor-logo-link::after {
  content: none !important;
  display: none !important;
}

/* ==================================================
   34-11 RESPONSIVE REGELN
================================================== */

/* 34-11-01 Tablet / zweispaltige Ansicht */
@media (max-width: 900px) {
  #site-content.kl-single {
    width: calc(100% - 4rem);
    padding-top: 2rem;
    padding-bottom: 4.8rem;
  }

  #site-content.kl-single .kl-single-title {
    font-size: var(--kl-font-size-title-mobile);
  }

  #site-content.kl-single .kl-single-hero,
  #site-content.kl-single .kl-single-image {
    height: clamp(24rem, 48vw, 36rem);
  }

  #site-content.kl-single .kl-single-section .grid-loop,
  #site-content.kl-single .kl-single-section .items-loop,
  #site-content.kl-single .kl-project-contacts-loop {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 2rem;
  }

  #site-content.kl-single .kl-single-logo-grid,
  #site-content.kl-single .kl-project-sponsors-grid,
  #site-content.kl-single .kl-news-project-sponsors-grid,
  #site-content.kl-single .grid-sponsor-logos {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* 34-11-02 Mobile / einspaltige Ansicht */
@media (max-width: 700px) {
  #site-content.kl-single {
    width: calc(100% - 2rem);
    padding-top: 1.6rem;
    padding-bottom: 4rem;
  }

  #site-content.kl-single .kl-single-card {
    border-radius: 20px;
    margin-bottom: 2rem;
  }

  #site-content.kl-single .kl-single-header {
    padding: 2rem 1.6rem 1.8rem;
  }

  #site-content.kl-single .kl-single-title {
    font-size: var(--kl-font-size-title-small);
  }

  #site-content.kl-single .kl-single-subtitle {
    font-size: var(--kl-font-size-160);
  }

  #site-content.kl-single .kl-single-hero,
  #site-content.kl-single .kl-single-image {
    height: clamp(21rem, 62vw, 28rem);
  }

  #site-content.kl-single .kl-single-hero > .kl-single-hero-keyword,
  #site-content.kl-single .kl-single-image > .kl-single-hero-keyword,
  #site-content.kl-single .kl-single-hero > .project-keyword,
  #site-content.kl-single .kl-single-image > .project-keyword,
  #site-content.kl-single .kl-single-hero > .event-keyword,
  #site-content.kl-single .kl-single-image > .event-keyword,
  #site-content.kl-single .kl-single-hero > .news-keyword,
  #site-content.kl-single .kl-single-image > .news-keyword {
    max-width: calc(100% - 2rem);
    font-size: var(--kl-font-size-fluid-155-190);
  }

  #site-content.kl-single .kl-single-meta-box,
  #site-content.kl-single .project-time,
  #site-content.kl-single .kl-project-hub-time,
  #site-content.kl-single .kl-event-meta-box,
  #site-content.kl-single .kl-news-timeline-box,
  #site-content.kl-single .kl-project-location,
  #site-content.kl-single .kl-event-location,
  #site-content.kl-single .kl-news-location,
  #site-content.kl-single .project-location,
  #site-content.kl-single .event-location-block,
  #site-content.kl-single .news-location-block,
  #site-content.kl-single .kl-single-content,
  #site-content.kl-single .project-content,
  #site-content.kl-single .kl-project-content,
  #site-content.kl-single .kl-event-content,
  #site-content.kl-single .kl-news-content,
  #site-content.kl-single .kl-single-actions,
  #site-content.kl-single .kl-news-actions,
  #site-content.kl-single .kl-event-actions,
  #site-content.kl-single .kl-project-hub-top > .grid-readmore {
    max-width: calc(100% - 3.2rem);
    margin-left: 1.6rem;
    margin-right: 1.6rem;
  }

  #site-content.kl-single .kl-single-section .alignwide,
  #site-content.kl-single .kl-single-section .kl-grids,
  #site-content.kl-single .kl-project-contacts-section .kl-project-contacts-grid,
  #site-content.kl-single .kl-single-logo-grid,
  #site-content.kl-single .kl-project-sponsors-grid,
  #site-content.kl-single .kl-news-project-sponsors-grid,
  #site-content.kl-single .grid-sponsor-logos {
    margin-left: 1.6rem;
    margin-right: 1.6rem;
  }

  #site-content.kl-single .kl-single-section .grid-loop,
  #site-content.kl-single .kl-single-section .items-loop,
  #site-content.kl-single .kl-project-contacts-loop,
  #site-content.kl-single .kl-single-logo-grid,
  #site-content.kl-single .kl-project-sponsors-grid,
  #site-content.kl-single .kl-news-project-sponsors-grid,
  #site-content.kl-single .grid-sponsor-logos {
    grid-template-columns: 1fr !important;
    gap: 1.6rem;
  }

  #site-content.kl-single .kl-project-contact-image,
  #site-content.kl-single .kl-project-contact-card .team-image,
  #site-content.kl-single .kl-project-contact-card .grid-image {
    height: clamp(18rem, 58vw, 24rem);
  }

  #site-content.kl-single .kl-single-section-heading {
    gap: 0.6rem;
  }

  #site-content.kl-single .kl-single-section-head-more-link {
    font-size: var(--kl-font-size-145);
  }

  #site-content.kl-single .kl-single-section-head-more-arrow {
    width: 2rem;
    height: 2rem;
    margin-left: 0.45rem;
  }

  #site-content.kl-single .kl-single-section > .kl-single-section-more,
  #site-content.kl-single .kl-single-section > .kl-single-section-more-right,
  #site-content.kl-single .kl-single-section > .kl-single-section-more.grid-readmore,
  #site-content.kl-single .kl-single-section > .grid-readmore.kl-single-section-more {
    display: flex !important;
    justify-content: flex-end;
    width: auto;
    max-width: calc(100% - 3.2rem);
    margin: 1.15rem 1.6rem 0;
    padding: 0;
    text-align: right;
  }

  #site-content.kl-single .kl-location-card,
  #site-content.kl-single .kl-project-location,
  #site-content.kl-single .kl-event-location,
  #site-content.kl-single .kl-news-location,
  #site-content.kl-single .project-location,
  #site-content.kl-single .event-location-block,
  #site-content.kl-single .news-location-block {
    padding: 1.15rem 1.1rem 1.2rem;
    border-radius: 12px;
    margin-bottom: 1.55rem;
  }

  #site-content.kl-single .location-line {
    display: block;
    margin-top: 0.62rem;
    font-size: var(--kl-font-size-140);
  }

  #site-content.kl-single .kl-location-line-label,
  #site-content.kl-single .location-line .lbl {
    display: block;
    margin-bottom: 0.12rem;
  }

  #site-content.kl-single .kl-location-link-buttons,
  #site-content.kl-single .link-buttons {
    display: flex;
    width: 100%;
  }

  #site-content.kl-single .kl-single-header-actions,
  #site-content.kl-single .kl-event-header-actions {
    justify-content: flex-start !important;
    text-align: left;
  }

  #site-content.kl-single .kl-single-section-more-link {
    display: inline-flex;
  }
}

/* ==================================================
   34-12 UTOPIA / BLAUVARIANTE
================================================== */

/* 34-12-01 Blaue Akzente nur im Utopia-Kontext */
body.kl-theme-blue #site-content.kl-single .kl-single-button,
body.kl-theme-blue #site-content.kl-single .kl-news-project-button,
body.kl-theme-blue #site-content.kl-single .kl-event-url-button {
  border-color: var(--kl-color-blue-brand);
}

body.kl-theme-blue #site-content.kl-single .kl-single-button:hover,
body.kl-theme-blue #site-content.kl-single .kl-single-button:focus,
body.kl-theme-blue #site-content.kl-single .kl-news-project-button:hover,
body.kl-theme-blue #site-content.kl-single .kl-news-project-button:focus,
body.kl-theme-blue #site-content.kl-single .kl-event-url-button:hover,
body.kl-theme-blue #site-content.kl-single .kl-event-url-button:focus {
  background-color: var(--kl-color-blue-brand);
  border-color: var(--kl-color-brown);
}

body.kl-theme-blue #site-content.kl-single .kl-project-hub-top > .grid-readmore .grid-readmore-link,
body.kl-theme-blue #site-content.kl-single .kl-single-section-more-link,
body.kl-theme-blue #site-content.kl-single .kl-single-content a,
body.kl-theme-blue #site-content.kl-single .kl-single-meta-value a,
body.kl-theme-blue #site-content.kl-single .grid-meta a {
  color: var(--kl-color-blue-brand);
}

body.kl-theme-blue #site-content.kl-single .kl-project-hub-top > .grid-readmore .grid-readmore-link::after,
body.kl-theme-blue #site-content.kl-single .kl-single-section-more-link::after {
  background-image: var(--kl-icon-pfeil-blau);
}
