/*
Theme Name: Medienlabor Starter
Theme URI: https://www.agentur-medienlabor.de
Author: Agentur Medienlabor
Author URI: https://www.agentur-medienlabor.de
Description: Starter-Theme mit Gutenberg- und ACF-Unterstützung inkl. Designsystem und Blockstruktur.
Version: 1.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: mltheme
*/

*{
  box-sizing: border-box;
  padding: 0;
  margin: 0;
}

:root {
  /* Farben */
  color-scheme: light;
  color: var(--color-secondary-a, #111111);
  font-family: var(--font-base, Arial);
  font-size: var(--font-size-base, 16px);
  line-height: var(--line-height-base, 1.4);
}

/* Spacing Utility Classes */
.space-base {
  margin-bottom: var(--space-base, 8px);
}
.space-small {
  margin-bottom: var(--space-small, 16px);
}
.space-large {
  margin-bottom: var(--space-large, 36px);
}

/* Überschriften */
h1, h2, h3, h4 {
  line-height: var(--h1-line-height, 1.2);
  margin-bottom: var(--h1-margin-bottom, 32px);
  color: var(--h1-color, inherit);
  text-transform: var(--h1-transform, none);
}

h1 {
  font-family: var(--h1-font-family, var(--font-base, Arial));
  font-size: var(--h1-font-size, 48px);
  font-weight: var(--h1-font-weight, 700);
  margin-top: var(--h1-margin-top, 0px);
}
h2 {
  font-family: var(--h2-font-family, var(--font-base, Arial));
  font-size: var(--h2-font-size, 38px);
  font-weight: var(--h2-font-weight, 700);
  line-height: var(--h2-line-height, 1.2);
  margin-top: var(--h2-margin-top, 0px);
  margin-bottom: var(--h2-margin-bottom, 24px);
  color: var(--h2-color, inherit);
  text-transform: var(--h2-transform, none);
}
h3 {
  font-family: var(--h3-font-family, var(--font-base, Arial));
  font-size: var(--h3-font-size, 32px);
  font-weight: var(--h3-font-weight, 700);
  line-height: var(--h3-line-height, 1.2);
  margin-top: var(--h3-margin-top, 0px);
  margin-bottom: var(--h3-margin-bottom, 16px);
  color: var(--h3-color, inherit);
  text-transform: var(--h3-transform, none);
}
h4 {
  font-family: var(--h4-font-family, var(--font-base, Arial));
  font-size: var(--h4-font-size, 26px);
  font-weight: var(--h4-font-weight, 700);
  line-height: var(--h4-line-height, 1.2);
  margin-top: var(--h4-margin-top, 0px);
  margin-bottom: var(--h4-margin-bottom, 12px);
  color: var(--h4-color, inherit);
  text-transform: var(--h4-transform, none);
}

/* Absätze */
p {
  font-family: var(--p-font-family, var(--font-base, Arial));
  font-size: var(--p-font-size, var(--font-size-base, 16px));
  font-weight: var(--p-font-weight, 400);
  line-height: var(--p-line-height, var(--line-height-base, 1.4));
  color: var(--p-color, inherit);
  margin-bottom: var(--p-margin-bottom, 1rem);
}
p:last-child {
  margin-bottom: 0;
}

/* Links */
a {
  color: var(--link-color, #0066cc);
  text-decoration-line: var(--link-decoration-line, underline);
  text-decoration-thickness: var(--link-decoration-thickness, 1px);
  text-decoration-style: var(--link-decoration-style, solid);
  text-decoration-color: var(--link-decoration-color, currentColor);
  transition: .3s all;
}

a:hover {
  color: var(--link-color-hover, #004499);
  opacity: .65;
  transition: .3s all;
}

*:focus {
  color: var(--link-color-focus, #ffffff);
  background-color: var(--link-bg-focus, #000000);
  border-radius: 2px;
  outline: var(--link-border-width-focus, 2px) var(--link-border-style-focus, solid) var(--link-border-color-focus, currentColor);
  outline-offset: 2px;
}

.nomargintop {
  margin-top: 0;
}


/* ================================
   1. Allgemeine Header-Basis
================================= */
header {
  background-color: var(--header-bg-color, #ffffff);
  padding: var(--header-padding-top, 32px) var(--header-padding-right, 0px)
           var(--header-padding-bottom, 32px) var(--header-padding-left, 0px);
  box-shadow: var(--header-box-shadow, none);
}

/* Logo */
.site-logo img {
  height: 60px;
}

/* CTA Button */
.header-cta .btn {
  padding: var(--cta-padding-top, 10px) var(--cta-padding-right, 20px)
           var(--cta-padding-bottom, 10px) var(--cta-padding-left, 20px);
  font-size: var(--cta-font-size, 16px);
  color: var(--cta-color, #ffffff);
  background-color: var(--cta-bg-color, #fb5607);
  /* border-radius: 4px; */
  font-weight: 400;
  text-decoration: none;
  transition: color 0.3s ease, background-color 0.3s ease;
}

/* Kontaktinformationen */
.header-contact-info {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  font-size: 0.875rem;
  gap: 0.5rem;
  white-space: nowrap;
}
.header-contact-info .contact-line::after {
  content: "|";
  margin: 0 0.5rem;
  color: #999;
}
.header-contact-info .contact-line:last-of-type::after {
  content: "";
}

/* Social Media Icons (Header Social & Shared Styles) */
.header-social,
.social-icons {
  display: flex;
  gap: 0.5rem;
  list-style: none;
  padding: 0;
  margin: 0;
}
.header-social a.social-link,
.social-icons a {
  font-size: var(--sml-font-size, 14px);
  width: calc(var(--sml-font-size, 14px) * 2);
  height: calc(var(--sml-font-size, 14px) * 2);
  background-color: var(--sml-bg-color, #333);
  color: var(--sml-color, #fff);
  border-radius: var(--sml-border-radius, 6px);

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

  transition: all 0.3s ease;
  text-decoration: none;
}
.header-social a.social-link:hover,
.social-icons a:hover,
.header-social a.social-link:focus,
.social-icons a:focus {
  background-color: var(--sml-bg-color-hover, #000);
  color: var(--sml-color-hover, #fff);
}

/* Suche */
.search-overlay {
  position: fixed;
  inset: 0;
  background-color: rgba(0, 0, 0, 0.75);
  z-index: 9999;
  display: flex;
  justify-content: center;
  align-items: center;

  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}
.search-overlay[aria-hidden="false"] {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}
.search-toggle {
  background: none;
  border: 0;
}
.search-toggle i {
  font-size: 20px;
}
.search-overlay-content {
  background: #fff;
  padding: 2rem;
  max-width: 750px;
  width: 90%;
  border-radius: 8px;
  position: relative;
}
.search-overlay-content h2 {
  margin-bottom: 1rem;
  font-size: 1.5rem;
}
.search-overlay-content input[type="search"] {
  width: 100%;
  padding: 0.75rem;
  margin-bottom: 1rem;
  font-size: 1rem;
  border: 1px solid #ccc;
  border-radius: 4px;
}
.search-overlay-content button[type="submit"] {
  padding: 0.6rem 1.2rem;
  font-size: 1rem;
  background: var(--color-primary);
  color: #fff;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}
.search-overlay-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  background: none;
  border: none;
  color: #333;
  font-size: 1.5rem;
  cursor: pointer;
}

/* Gemeinsame Burger Toggle Styles */
.burger-toggle {
  background: none;
  border: none;
  cursor: pointer;
  width: 32px;
  height: 24px;
  position: relative;
}
.burger-toggle .burger-icon,
.burger-toggle .burger-icon::before,
.burger-toggle .burger-icon::after {
  display: block;
  background-color: var(--color-secondary-a, #111);
  height: 2px;
  width: 100%;
  position: absolute;
  content: '';
  transition: all 0.3s ease;
}
.burger-toggle .burger-icon::before {
  top: -8px;
}
.burger-toggle .burger-icon::after {
  bottom: -8px;
}

/* Navigation */
nav.main-navigation {
  position: relative;
  font-size: 1rem;
}
nav.main-navigation ul#menu-main-menu {
  display: flex;
  gap: 2rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
nav.main-navigation ul#menu-main-menu li {
  position: relative;
}
nav.main-navigation ul#menu-main-menu li a {
  text-decoration: none;
  color: var(--nav-link-color);
  font-size: var(--nav-font-size, 16px);
  font-weight: var(--nav-font-weight, 400);
  line-height: var(--nav-line-height, 1.4);
  padding: 0.5rem 0;
  display: inline-block;
  transition: color 0.3s ease;
}
nav.main-navigation ul#menu-main-menu li a:hover,
nav.main-navigation ul#menu-main-menu li a:focus {
  color: var(--nav-link-hover);
}
nav.main-navigation ul#menu-main-menu li.current-menu-item > a {
  font-weight: bold;
  color: var(--nav-link-active);
}
/* Submenüs – Basiszustand */
nav.main-navigation li.menu-item-has-children .sub-menu {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  background: var(--nav-sub-bg, #fff);
  padding: 0.5rem 0.5rem;
  box-shadow: 0 4px 8px rgba(0,0,0,0.1);
  list-style: none;
  z-index: 1000;
}
nav.main-navigation li.menu-item-has-children:hover > .sub-menu {
  display: block;
}
/* Submenu-Links */
nav.main-navigation li.menu-item-has-children .sub-menu li a {
  display: block;
  padding: 0.5rem 1rem;
  color: var(--nav-sub-color);
  font-size: var(--nav-sub-font-size, 16px);
  font-weight: var(--nav-sub-font-weight, 400);
  line-height: var(--nav-sub-line-height, 1.4);
}
nav.main-navigation li.menu-item-has-children .sub-menu li a:hover,
nav.main-navigation li.menu-item-has-children .sub-menu li a:focus {
  background-color: var(--nav-sub-hover-bg);
  color: var(--nav-sub-hover-color);
}
nav.main-navigation li .sub-menu li.current-menu-item > a {
  font-weight: bold;
  color: var(--nav-link-active);
}
/* Toggle-Button für Tastatursteuerung */
.submenu-toggle {
  background: none;
  border: none;
  padding: 0.25rem;
  margin-left: 0.4rem;
  cursor: pointer;
  font-size: 0.8rem;
  color: inherit;
}
.submenu-toggle:focus {
  outline: 2px solid var(--nav-link-active);
  outline-offset: 2px;
}

/* - - - - - Burger-Menu - - - - - */
.mobile-nav {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  background-color: var(--color-secondary-a, #111);
  padding: 7vh;
  z-index: 1000;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  overflow-y: auto;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}
.mobile-nav.open {
  opacity: 1;
  visibility: visible;
}
@media (prefers-reduced-motion: reduce) {
  .mobile-nav {
    transition: none !important;
    transform: none !important;
  }
  .wp-block-button__link {
    transition: none !important;
  }
  .header-cta .btn {
    transition: none !important;
  }
}
.mobile-nav .wrapper {
  max-width: var(--breakpoint-wrapper, 1440px);
  width: 100%;
  margin: 0 auto;
  position: relative;
}
.mobile-menu-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.mobile-menu-list li {
  margin-bottom: 1rem;
}
.mobile-menu-list li a {
  color: #fff;
  font-size: 2rem;
  line-height: 2.5rem;
  text-decoration: none;
  transition: color 0.2s ease;
}
.mobile-menu-list li a:hover,
.mobile-menu-list li a:focus {
  color: var(--color-primary, #FB5607);
  outline: none;
}
.mobile-menu-list li.menu-item-has-children > a::after {
  content: "\f078"; /* Font Awesome chevron-down */
  font-family: "Font Awesome 5 Free";
  font-weight: 900;
  margin-left: 0.5rem;
  font-size: 0.8em;
}
.mobile-menu-list .sub-menu {
  margin-top: 0.5rem;
  padding-left: 1rem;
}
.mobile-menu-list .sub-menu li {
  margin-bottom: 0.5rem;
}
.mobile-menu-list .sub-menu a {
  font-size: 1.5rem;
  color: rgba(255, 255, 255, 0.7);
}
.mobile-menu-list .sub-menu a:hover,
.mobile-menu-list .sub-menu a:focus {
  color: var(--color-accent, #f0c);
}
.mobile-nav-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  background: none;
  border: none;
  font-size: 1.5rem;
  color: #fff;
  cursor: pointer;
  z-index: 1001;
}
.mobile-nav-close:hover,
.mobile-nav-close:focus {
  outline: 2px solid #fff;
  outline-offset: 2px;
}

/* Button */
.header-cta:hover .btn {
  background-color: var(--cta-bg-color-hover, #111111);
  color: var(--cta-color-hover, #ffffff);
}
.buttom-style-primary {
  background-color: var(--color-primary, #333);
  color: #fff;
}
.buttom-style-secondary-a {
  background-color: var(--color-secondary-a, #333);
  color: #fff;
}
.header-cta:hover .btn.buttom-style-secondary-a {
  background-color: var(--color-primary, #333);
  color: #fff;
}
.buttom-style-secondary-b {
  background-color: #fff;
  color: var(--color-secondary-a, #333);
  border: 2px solid var(--color-secondary-a, #333);
}



/* Wrapper */
.wrapper {
  max-width: var(--breakpoint-wrapper, 1440px);
  margin: 0 auto;
  padding: 0 var(--space-small, 16px);
}

/* Gutenberg Align Wide / Full */
.alignwide {
  max-width: var(--breakpoint-wrapper, 1440px);
  margin-left: auto;
  margin-right: auto;
  width: 100%;
  padding-left: var(--space-small, 16px);
  padding-right: var(--space-small, 16px);
}
.alignfull {
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  width: 100vw;
  max-width: 100vw;
}

/* ================================
   Gutenberg Basic-Blöcke
   Gestaltungsneutrale Grundausstattung für alle WordPress-Core-Blocks
================================= */

/* Innenabstand für Blöcke mit Hintergrundfarbe */
.has-background {
  padding: var(--has-background-padding-top, 24px) var(--has-background-padding-right, 24px)
           var(--has-background-padding-bottom, 24px) var(--has-background-padding-left, 24px);
}

/* Vollflächiges Bild als erstes Kind in Blöcken mit Hintergrundfarbe (z.B. Karten) */
.has-background > .wp-block-image:first-child {
  margin-top: calc(var(--has-background-padding-top, 24px) * -1);
  margin-left: calc(var(--has-background-padding-left, 24px) * -1);
  margin-right: calc(var(--has-background-padding-right, 24px) * -1);
}

/* Listen */
.wp-block-list {
  margin-bottom: var(--space-small, 16px);
  padding-left: 1.5em;
}
.wp-block-list li {
  margin-bottom: calc(var(--space-base, 8px) / 2);
}
.wp-block-list li:last-child {
  margin-bottom: 0;
}

/* Zitat */
.wp-block-quote {
  margin: 0 0 var(--space-small, 16px);
  padding-left: var(--space-small, 16px);
  border-left: 4px solid var(--color-secondary-b, #ccc);
}
.wp-block-quote p {
  font-style: italic;
}
.wp-block-quote cite {
  display: block;
  margin-top: var(--space-base, 8px);
  font-style: normal;
  font-size: 0.875rem;
  color: var(--color-secondary-a, #555);
}

/* Pullquote */
.wp-block-pullquote {
  margin: 0 0 var(--space-large, 36px);
  padding: var(--space-small, 16px) 0;
  border-top: 2px solid var(--color-secondary-b, #ccc);
  border-bottom: 2px solid var(--color-secondary-b, #ccc);
  text-align: center;
}
.wp-block-pullquote blockquote {
  margin: 0;
}
.wp-block-pullquote p {
  font-size: 1.25rem;
  font-style: italic;
}
.wp-block-pullquote cite {
  display: block;
  margin-top: var(--space-base, 8px);
  font-style: normal;
  font-size: 0.875rem;
}

/* Vers */
.wp-block-verse {
  margin-bottom: var(--space-small, 16px);
  font-family: inherit;
  white-space: pre-wrap;
}

/* Tabelle */
.wp-block-table {
  margin-bottom: var(--space-small, 16px);
  overflow-x: auto;
}
.wp-block-table table {
  width: 100%;
  border-collapse: collapse;
}
.wp-block-table th,
.wp-block-table td {
  padding: var(--space-base, 8px);
  border: 1px solid var(--color-secondary-b, #ddd);
  text-align: left;
}
.wp-block-table.is-style-stripes tbody tr:nth-child(odd) {
  background-color: rgba(0, 0, 0, 0.03);
}

/* Bild, Galerie & Embed */
.wp-block-image {
  /* margin-bottom: var(--space-small, 16px); */
  margin-bottom: calc(var(--space-small, 16px) * 1.5);
}
.wp-block-image img {
  max-width: 100%;
  height: auto;
  display: block;
}
.wp-block-image figcaption,
.wp-block-gallery figcaption,
.wp-block-embed figcaption {
  margin-top: var(--space-base, 8px);
  font-size: 0.875rem;
  text-align: center;
  color: var(--color-secondary-a, #666);
}
/* Gap fest an das Spacing-System gebunden (Vielfaches von --space-base).
   !important nötig, da WordPress pro Block eine eigene Inline-Style-Regel
   ("core-block-supports-inline-css") mit der im Editor gewählten
   Block-Abstand-Einstellung ausgibt, die sonst Vorrang hätte. */
.wp-block-gallery {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--space-small, 16px) * 1.5) !important;
  margin-bottom: var(--space-small, 16px);
}
.wp-block-gallery .wp-block-image {
  margin-bottom: 0;
  flex: 1 1 200px;
}
.wp-block-embed {
  margin-bottom: var(--space-small, 16px);
}
.wp-block-embed iframe {
  max-width: 100%;
}

/* Trennlinie */
hr.wp-block-separator {
  margin: var(--space-large, 36px) 0;
  border: none;
  border-top: 1px solid var(--color-secondary-b, #ccc);
}

/* Buttons */
.wp-block-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-base, 8px);
  margin-bottom: var(--space-small, 16px);
}
.wp-block-button__link {
  display: inline-block;
  padding: 0.6rem 1.2rem;
  border-radius: 4px;
  background-color: var(--color-primary, #333);
  color: #fff;
  text-decoration: none;
  font-weight: 600;
  transition: all 0.3s ease;
}
.wp-block-button__link:hover {
  opacity: 0.85;
}
.wp-block-button.is-style-outline .wp-block-button__link {
  background-color: transparent;
  color: var(--color-primary, #333);
  border: 2px solid var(--color-primary, #333);
}

/* Code & Vorformatiert */
.wp-block-code,
.wp-block-preformatted {
  margin-bottom: var(--space-small, 16px);
  padding: var(--space-small, 16px);
  background-color: var(--color-secondary-b, #f5f5f5);
  border-radius: 4px;
  overflow-x: auto;
  font-family: monospace;
  font-size: 0.9rem;
  white-space: pre-wrap;
}

/* Spalten */
.wp-block-columns {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--space-small, 16px) * 1.5);
  margin-bottom: calc(var(--space-small, 16px) * 1.5);
}
.wp-block-column {
  flex: 1;
  margin-bottom: 0;
}

/* Gruppe & Cover */
/* .wp-block-group {
  margin-bottom: var(--space-small, 16px);
} */
.wp-block-cover {
  margin-bottom: var(--space-small, 16px);
  padding: var(--space-large, 36px) var(--space-small, 16px);
}

/* Medien & Text */
.wp-block-media-text {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-small, 16px);
  margin-bottom: var(--space-small, 16px);
  align-items: center;
}
.wp-block-media-text__media {
  order: 1;
}
.wp-block-media-text__content {
  order: 2;
  padding: var(--space-small, 16px);
}
.wp-block-media-text.has-media-on-the-right .wp-block-media-text__media {
  order: 2;
}
.wp-block-media-text.has-media-on-the-right .wp-block-media-text__content {
  order: 1;
}

/* Datei, Audio & Video */
.wp-block-file,
.wp-block-audio,
.wp-block-video {
  margin-bottom: var(--space-small, 16px);
}
.wp-block-video video,
.wp-block-audio audio {
  width: 100%;
}
.wp-block-file__button {
  display: inline-block;
  padding: 0.5rem 1rem;
  margin-left: var(--space-base, 8px);
  background-color: var(--color-primary, #333);
  color: #fff;
  border-radius: 4px;
  text-decoration: none;
}

/* Suche */
.wp-block-search {
  margin-bottom: var(--space-small, 16px);
}
.wp-block-search__input {
  padding: 0.5rem;
  border: 1px solid var(--color-secondary-b, #ccc);
  border-radius: 4px;
}
.wp-block-search__button {
  padding: 0.5rem 1rem;
  margin-left: var(--space-base, 8px);
  background-color: var(--color-primary, #333);
  color: #fff;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}

.hidden {
  display: none !important;
}

main section:last-child {
  margin-bottom: 0;
}


.section-news {
  margin-bottom: calc(var(--space-base) * 10);
}
.news-item .news-thumb img {
  width: 100%;
  display: block;
  border-radius: calc(var(--space-base) * 2);
}
.news-item .news-meta {
  margin: calc(var(--space-base) * 2) 0 calc(var(--space-base) * 1);
}
.news-item .news-meta * {
  font-size: 1rem;
  text-transform: uppercase;
}
.news-item .news-meta .news-category {
  margin-right: calc(var(--space-base) * 2);
  color: var(--color-secondary-a);
}
.news-item .news-meta .news-category a {
  text-decoration: none;
}
.news-item .news-meta time {
  color: #777;
  margin-bottom: var(--space-base);
}
.news-item .news-title {
  font-size: var(--h3-font-size);
  margin: 0 0 var(--h3-margin-bottom) 0;
  color: var(--h3-color);
  font-weight: var(--h3-font-weight);
}
.news-item .news-title a {
  text-decoration: none;
}
.news-item .news-excerpt {
  font-size: var(--font-size-base);
  margin-bottom: calc(var(--space-base) *3);
}
.news-item .news-link a.read-more {
  text-decoration: var(--link-decoration-line);
  color: var(--link-color);
}
.news-item .news-link a.read-more:hover {
  text-decoration: var(--link-decoration-line);
  color: var(--link-color-hover);
}


.section-hero {
  margin-bottom: calc(var(--space-base) * 10);
}

a[class*="_linkstil_a"],
a[class*="_linkstil_b"],
a[class*="_linkstil_c"] {
  display: inline-block !important;
  padding: calc(var(--space-base) * 1.5) calc(var(--space-base) * 4);
  border-radius: calc(var(--space-base) * 1);
  margin-right: calc(var(--space-base) * 1) !important;
}
a[class*="_linkstil_a"] {
  background-color: var(--color-secondary-a);
  color: #fff;
}
a[class*="_linkstil_a"]:hover {
  background-color: #fff;
  color: var(--color-secondary-a);
}
a[class*="_linkstil_b"] {
  background-color: none;
  color: var(--color-secondary-a);
  border: 2px solid var(--color-secondary-a);
}
a[class*="_linkstil_b"]:hover {
  background-color: var(--color-secondary-a);
  color: #fff;
}
a[class*="_linkstil_c"] {
  background-color: var(--color-secondary-b);
  color: var(--color-secondary-a);
}
a[class*="_linkstil_c"]:hover {
  background-color: var(--color-secondary-a);
  color: #fff;
}


.section-events {
  margin-bottom: calc(var(--space-base) * 10);
}
.section-events .em-item {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(20, 1fr);
  background-color: var(--color-secondary-b);
  grid-template-rows: repeat(2, 1fr);
  margin-bottom: calc(var(--space-base) * 2);
  border-radius: calc(var(--space-base) * 2);
  gap: calc(var(--space-base) * 2);
  overflow: hidden;
}
.section-events .em-item .event-categories {
  list-style: none;
}


.section-page {
  margin-bottom: calc(var(--space-base) * 10);
}


/* Einzelseiten */
.section-article {
  /* margin-top: calc(var(--space-base) * 8); */
  margin-bottom: calc(var(--space-base) * 10);
}

/* ================================
   Unterseiten (Einzelseiten & Blogeinzelseiten)
================================= */

.breadcrumbs {
  margin-bottom: calc(var(--space-base) * 3);
}
.breadcrumbs ol {
  display: flex;
  flex-wrap: wrap;
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 0.9rem;
  color: var(--color-secondary-a, #777);
}
.breadcrumbs li:not(:last-child)::after {
  content: "/";
  display: inline-block;
  margin: 0 0.5em;
  opacity: 0.5;
}
.breadcrumbs a {
  color: inherit;
  text-decoration: underline;
}
.breadcrumbs [aria-current="page"] {
  font-weight: 600;
}

/* Kopfbereich-Layout "Bild neben Titel" (per-Seite/-Beitrag aktivierbar) */
.entry-header-split {
  background-color: var(--kopfbereich-bg, #EAF3F7);
  padding: calc(var(--space-base) * 8) 0;
  margin-bottom: calc(var(--space-base) * 8);
}
.entry-header-split .wrapper {
  display: flex;
  align-items: center;
  gap: calc(var(--space-base) * 6);
  flex-wrap: wrap;
}
.entry-header-split-text {
  flex: 1 1 280px;
}
.entry-header-split-text .entry-title {
  margin-bottom: calc(var(--space-base) * 2);
}
.entry-header-split-subtitle {
  font-size: 1.15rem;
  color: var(--color-secondary-a, #555);
}
.entry-header-split-image {
  flex: 1 1 280px;
}
.entry-header-split-image.width-30 { flex-basis: 30%; }
.entry-header-split-image.width-40 { flex-basis: 40%; }
.entry-header-split-image.width-50 { flex-basis: 50%; }
.entry-header-split-image.width-60 { flex-basis: 60%; }
.entry-header-split-image img {
  width: 100%;
  display: block;
  border-radius: calc(var(--space-base) * 2);
}
@media (max-width: 768px) {
  .entry-header-split-image {
    flex-basis: 100% !important;
    order: -1;
  }
  .entry-header-split-text {
    flex-basis: 100%;
  }
}

.entry-thumbnail {
  margin-bottom: calc(var(--space-base) * 3);
}
.entry-thumbnail img {
  width: 100%;
  display: block;
  border-radius: calc(var(--space-base) * 2);
}

.content-layout {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
}
.content-layout.has-sidebar {
  gap: calc(var(--space-base) * 6);
}
.content-layout .content-col {
  flex: 1 1 0;
  min-width: 0;
}
.content-layout .sidebar-col {
  flex: 0 0 300px;
}
.content-layout.has-sidebar.sidebar-links {
  flex-direction: row-reverse;
}

/* Begrenzte Inhaltsbreite (alles außer "Volle Breite"): das gesamte
   Layout (Inhalt + ggf. Sidebar) schrumpft auf seine tatsächliche
   Gesamtbreite und wird als Block ausgerichtet (links/mittig/rechts),
   statt dass der Inhalt den verfügbaren Platz neben der Sidebar füllt. */
.content-layout.is-constrained.align-links {
  justify-content: flex-start;
}
.content-layout.is-constrained.align-mittig {
  justify-content: center;
}
.content-layout.is-constrained.align-rechts {
  justify-content: flex-end;
}
.content-layout.is-constrained .content-col {
  flex: 0 1 auto;
  width: var(--content-width);
  max-width: 100%;
  min-width: 0;
}
/* Bei aktiver Sidebar zusätzlich auf den tatsächlich verfügbaren Platz
   begrenzen (Container-Breite minus Sidebar minus Lücke) – verhindert,
   dass z.B. "Breit" (1140px) + Sidebar (300px) zusammen umbrechen,
   weil Flexbox Zeilenumbrüche anhand der ungeschrumpften Breite
   entscheidet, nicht erst nach dem Schrumpfen. */
.content-layout.has-sidebar.is-constrained .content-col {
  max-width: calc(100% - 300px - calc(var(--space-base) * 6));
}
.site-sidebar .widget {
  margin-bottom: calc(var(--space-base) * 4);
}

.entry-content {
  font-size: var(--content-font-size, 16px);
  line-height: var(--content-line-height, 28px);
}

.post-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  color: var(--blog-meta-color, #777777);
  font-size: 0.9rem;
  margin-bottom: calc(var(--space-base) * 3);
}
.post-meta > *:not(:last-child)::after {
  content: var(--blog-meta-separator, " | ");
  display: inline-block;
  margin: 0 0.2em;
}
.post-meta a {
  color: inherit;
}

.post-nav {
  display: flex;
  justify-content: space-between;
  gap: calc(var(--space-base) * 3);
  margin-top: calc(var(--space-base) * 8);
  padding-top: calc(var(--space-base) * 4);
  border-top: 1px solid var(--color-secondary-b, #eee);
}
.post-nav > div {
  flex: 1 1 0;
}
.post-nav-next {
  text-align: right;
}
.post-nav a {
  text-decoration: none;
  font-weight: 600;
}

.related-posts {
  margin-top: calc(var(--space-base) * 10);
}
.related-posts-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: calc(var(--space-base) * 4);
}

/* ================================
   Archivseiten (Blog-Übersicht, Kategorie/Schlagwort-Archive, Suche)
================================= */

.archiv-header {
  margin-bottom: calc(var(--space-base) * 6);
}

.archiv-grid {
  display: grid;
  gap: calc(var(--space-base) * 4);
}
.archiv-grid-1 { grid-template-columns: 1fr; }
.archiv-grid-2 { grid-template-columns: repeat(2, 1fr); }
.archiv-grid-3 { grid-template-columns: repeat(3, 1fr); }

.archiv-karte,
.related-post-card {
  display: flex;
  flex-direction: column;
  background-color: var(--archiv-karte-bg, #ffffff);
  border-radius: var(--archiv-karte-radius, 12px);
  overflow: hidden;
}
.archiv-karte-image {
  display: block;
}
.archiv-karte-image img {
  width: 100%;
  display: block;
  object-fit: cover;
}

/* Beitragsbild-Seitenverhältnisse (Beschnitt via object-fit: cover) –
   gemeinsam genutzt von Archivkarten, Einzelseiten/Blogeinzelseiten und
   der Startseiten-News-Sektion. Klasse zusammen mit dem jeweiligen
   Bild-/Link-Wrapper vergeben, z.B. class="entry-thumbnail img-ratio-16-9" */
.img-ratio-3-2 img,
.img-ratio-4-3 img,
.img-ratio-2-1 img,
.img-ratio-3-1 img,
.img-ratio-16-9 img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}
.img-ratio-3-2  { aspect-ratio: 3 / 2; }
.img-ratio-4-3  { aspect-ratio: 4 / 3; }
.img-ratio-2-1  { aspect-ratio: 2 / 1; }
.img-ratio-3-1  { aspect-ratio: 3 / 1; }
.img-ratio-16-9 { aspect-ratio: 16 / 9; }

.archiv-karte-body {
  padding: calc(var(--space-base) * 3);
  display: flex;
  flex-direction: column;
  flex-grow: 1;
}
.archiv-karte-meta {
  color: var(--archiv-karte-meta-color, #777777);
  font-size: 0.85rem;
  margin-bottom: calc(var(--space-base) * 1);
}
.archiv-karte-meta > *:not(:last-child)::after {
  content: " · ";
}
.archiv-karte-titel {
  font-size: var(--archiv-karte-titel-font-size, 20px);
  color: var(--archiv-karte-titel-color, #111111);
  margin: 0 0 calc(var(--space-base) * 1.5) 0;
}
.archiv-karte-titel a {
  color: inherit;
  text-decoration: none;
}
.archiv-karte-excerpt {
  flex-grow: 1;
  margin-bottom: calc(var(--space-base) * 2);
}
.archiv-karte-weiterlesen {
  text-decoration: var(--link-decoration-line);
  color: var(--link-color);
  align-self: flex-start;
}

.archiv-pagination {
  display: flex;
  justify-content: center;
  gap: calc(var(--space-base) * 1);
  margin-top: calc(var(--space-base) * 8);
}
.archiv-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: calc(var(--space-base) * 5);
  height: calc(var(--space-base) * 5);
  padding: 0 calc(var(--space-base) * 1.5);
  border-radius: calc(var(--space-base) * 1);
  text-decoration: none;
  color: var(--color-secondary-a);
}
.archiv-pagination .page-numbers.current {
  background-color: var(--color-secondary-a);
  color: #fff;
}
.archiv-load-more {
  display: flex;
  justify-content: center;
  margin-top: calc(var(--space-base) * 8);
}

@media (max-width: 768px) {
  .archiv-grid-2,
  .archiv-grid-3 {
    grid-template-columns: 1fr;
  }
  .related-posts-grid {
    grid-template-columns: 1fr;
  }
  .content-layout .sidebar-col {
    flex: 1 1 100%;
  }
  .content-layout.is-constrained {
    justify-content: flex-start;
  }
  .content-layout.is-constrained .content-col {
    flex: 1 1 100%;
    width: auto;
    max-width: 100%;
  }
}

/* Inhalts-Links mit Pfeil-Icon (intern schräg / extern gerade) – Klasse "link-pfeil" manuell vergeben */
.link-pfeil {
  text-decoration: none;
}
.link-pfeil::after {
  content: "";
  display: inline-block;
  width: 0.85em;
  height: 0.85em;
  margin-left: 0.35em;
  vertical-align: -0.1em;
  background-color: currentColor;
  -webkit-mask: url('assets/img/pfeil-schraeg.svg') no-repeat center / contain;
  mask: url('assets/img/pfeil-schraeg.svg') no-repeat center / contain;
}
.link-pfeil[target="_blank"]::after {
  -webkit-mask-image: url('assets/img/pfeil-gerade.svg');
  mask-image: url('assets/img/pfeil-gerade.svg');
}



footer {
  background-color: var(--footer-bg, #222);
  color: var(--footer-text, #fff);
  padding-top: var(--footer-padding-top, 40px);
  padding-bottom: var(--footer-padding-bottom, 40px);
  font-size: var(--footer-font-size, 16px);
  line-height: var(--footer-line-height, 1.6);
  margin-top: var(--footer-abstand-oben, 60px);
}
footer a {
  color: var(--footer-link, #ccc);
}
footer a:hover {
  color: var(--footer-link-hover, #fff);
}
footer h2, footer h3, footer h4 {
  color: var(--footer-heading-color, #fff);
}

.footer-menu {
  display: flex;
  flex-wrap: wrap;
  list-style: none;
  margin: 0;
  padding: 0;
}
.footer-menu li {
  position: relative;
}
.footer-menu li:not(:last-child)::after {
  content: var(--footer-menu-separator, "");
  display: inline-block;
  margin: 0 calc(var(--footer-menu-gap, 24px) / 2);
}
.footer-menu li a {
  color: var(--footer-menu-color, var(--color-secondary-a));
  font-size: var(--footer-menu-font-size, inherit);
  font-weight: var(--footer-menu-font-weight, 600);
  text-decoration: none;
}
.footer-menu li a:hover,
.footer-menu li a:focus {
  color: var(--footer-menu-hover-color, var(--color-secondary-a)) !important;
  opacity: 1;
}


/* ================================
   WPForms – Formular-Basis-Gestaltung
   Deckt die Felder des WPForms-Basis-Pakets ab: Text, Textarea,
   E-Mail, Number, URL, Telefon, Name, Adresse, Passwort,
   Select (classic), Checkbox/Radio, GDPR, Datum/Zeit, Datei-Upload,
   HTML, Trennlinie, Seitenumbruch sowie Submit-Button & Fehlertexte.
================================= */

.wpforms-container {
  margin-bottom: var(--space-small, 16px);
}

/* Abstand zwischen den Feldern (Positionierung/Spalten erfolgt im WPForms-Backend) */
.wpforms-field {
  margin-bottom: var(--form-row-gap, var(--space-small, 16px)) !important;
}
.wpforms-field:last-child {
  margin-bottom: 0 !important;
}

/* Labels, Sublabels & Beschreibungen */
.wpforms-field-label {
  display: block;
  margin-bottom: var(--form-label-margin, 8px);
  font-weight: var(--form-label-font-weight, 600);
  color: var(--form-label-color, var(--color-secondary-a, #111111));
}
.wpforms-field-sublabel {
  display: block;
  margin-top: 4px;
  font-size: 0.8125rem;
  font-weight: 400;
  color: var(--form-sublabel-color, #666666);
}
.wpforms-required-label {
  margin-left: 2px;
  color: var(--form-required-color, var(--color-primary, #fb5607));
}
.wpforms-field-description {
  margin-top: 6px;
  font-size: 0.875rem;
  color: var(--form-description-color, #666666);
}

/* Unterfelder in einer Zeile (Name, Adresse, Passwort) */
.wpforms-field-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-base, 8px);
}
.wpforms-field-row-block {
  flex: 1 1 auto;
}
.wpforms-one-half { flex-basis: calc(50% - var(--space-base, 8px) / 2); }
.wpforms-one-third { flex-basis: calc(33.333% - var(--space-base, 8px) * 2 / 3); }
.wpforms-two-thirds { flex-basis: calc(66.666% - var(--space-base, 8px) / 3); }
.wpforms-one-fourth { flex-basis: calc(25% - var(--space-base, 8px) * 3 / 4); }
.wpforms-three-fourth { flex-basis: calc(75% - var(--space-base, 8px) / 4); }

/* Eingabefelder – Basis für alle textbasierten Feldtypen */
.wpforms-field input[type="text"],
.wpforms-field input[type="email"],
.wpforms-field input[type="url"],
.wpforms-field input[type="tel"],
.wpforms-field input[type="number"],
.wpforms-field input[type="password"],
.wpforms-field input[type="date"],
.wpforms-field input[type="time"],
.wpforms-field select,
.wpforms-field textarea {
  display: block;
  width: 100%;
  max-width: 100%;
  padding: var(--form-input-padding-y, 12px) var(--form-input-padding-x, 16px);
  font-family: inherit;
  font-size: var(--form-input-font-size, 16px);
  line-height: 1.4;
  color: var(--form-input-color, var(--color-secondary-a, #111111));
  background-color: var(--form-input-bg, #ffffff);
  border: var(--form-input-border-width, 2px) solid var(--form-input-border-color, var(--color-primary, #fb5607));
  border-radius: var(--form-input-radius, 0px);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
/* Größen-Klassen von WPForms (small/medium/large) auf volle Breite des Layout-Slots zwingen */
.wpforms-field-small,
.wpforms-field-medium,
.wpforms-field-large {
  width: 100%;
  max-width: 100%;
}
.wpforms-field textarea {
  min-height: var(--form-textarea-height, 160px);
  resize: vertical;
}
.wpforms-field input::placeholder,
.wpforms-field textarea::placeholder {
  color: var(--form-placeholder-color, #a3a3a3);
  opacity: 1;
}
.wpforms-field input:focus,
.wpforms-field select:focus,
.wpforms-field textarea:focus {
  outline: none;
  border-color: var(--form-input-border-color-focus, var(--color-primary, #fb5607));
  box-shadow: 0 0 0 3px var(--form-input-shadow-focus, rgba(251, 86, 7, 0.15));
}

/* Select (classic) – eigener Pfeil statt System-Default */
.wpforms-field select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  padding-right: 44px;
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 12px 16px;
  background-image: var(--form-select-arrow-icon, url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fb5607' d='M12 7l-5 5h10l-5-5zM12 17l5-5H7l5 5z'/%3E%3C/svg%3E"));
}

/* Checkboxen, Radiobuttons & GDPR-Einverständnis */
.wpforms-field-checkbox ul,
.wpforms-field-radio ul,
.wpforms-field-gdpr-checkbox ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-base, 8px);
}
.wpforms-field-checkbox ul.wpforms-list-inline,
.wpforms-field-radio ul.wpforms-list-inline {
  flex-direction: row;
  flex-wrap: wrap;
  gap: var(--space-small, 16px);
}
.wpforms-field-checkbox li,
.wpforms-field-radio li,
.wpforms-field-gdpr-checkbox li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.wpforms-field-checkbox input[type="checkbox"],
.wpforms-field-radio input[type="radio"],
.wpforms-field-gdpr-checkbox input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  margin: 2px 0 0;
  background-color: var(--form-input-bg, #ffffff);
  border: var(--form-input-border-width, 2px) solid var(--form-input-border-color, var(--color-primary, #fb5607));
  cursor: pointer;
  position: relative;
  transition: border-color 0.2s ease, background-color 0.2s ease;
}
.wpforms-field-checkbox input[type="checkbox"],
.wpforms-field-gdpr-checkbox input[type="checkbox"] {
  border-radius: 3px;
}
.wpforms-field-radio input[type="radio"] {
  border-radius: 50%;
}
.wpforms-field-checkbox input[type="checkbox"]:checked,
.wpforms-field-gdpr-checkbox input[type="checkbox"]:checked,
.wpforms-field-radio input[type="radio"]:checked {
  background-color: var(--form-input-border-color, var(--color-primary, #fb5607));
}
.wpforms-field-checkbox input[type="checkbox"]:checked::after,
.wpforms-field-gdpr-checkbox input[type="checkbox"]:checked::after {
  content: "";
  position: absolute;
  left: 6px;
  top: 2px;
  width: 6px;
  height: 11px;
  border: solid #ffffff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.wpforms-field-radio input[type="radio"]:checked::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 10px;
  height: 10px;
  background-color: #ffffff;
  border-radius: 50%;
  transform: translate(-50%, -50%);
}
.wpforms-field-checkbox input[type="checkbox"]:focus-visible,
.wpforms-field-radio input[type="radio"]:focus-visible,
.wpforms-field-gdpr-checkbox input[type="checkbox"]:focus-visible {
  outline: var(--form-input-border-width, 2px) solid var(--color-primary, #fb5607);
  outline-offset: 2px;
}
.wpforms-field-label-inline {
  font-weight: 400;
  line-height: 1.4;
  cursor: pointer;
}

/* Datei-Upload */
.wpforms-field-file-upload input[type="file"] {
  display: block;
  width: 100%;
  padding: 10px;
  font-size: 0.9375rem;
  background-color: var(--form-input-bg, #ffffff);
  border: var(--form-input-border-width, 2px) dashed var(--form-input-border-color, var(--color-primary, #fb5607));
  border-radius: var(--form-input-radius, 0px);
}
.wpforms-file-upload-add {
  display: inline-block;
  margin-top: 8px;
  padding: 8px 16px;
  background-color: var(--color-secondary-b, #f5f5f5);
  border: 1px solid var(--color-secondary-a, #111111);
  border-radius: 4px;
  cursor: pointer;
}

/* HTML-Feld & Trennlinie */
.wpforms-field-divider hr {
  margin: var(--space-base, 8px) 0;
  border: none;
  border-top: 1px solid var(--color-secondary-b, #cccccc);
}

/* Seitenumbruch (mehrseitige Formulare) */
.wpforms-page-indicator {
  margin-bottom: var(--space-small, 16px);
}
.wpforms-page-indicator.progress .wpforms-page-indicator-page-progress-fill {
  background-color: var(--color-primary, #fb5607);
}
.wpforms-page-button {
  padding: 10px 24px;
  font-weight: 600;
  color: var(--color-secondary-a, #111111);
  background-color: transparent;
  border: 2px solid var(--color-secondary-a, #111111);
  border-radius: var(--form-submit-radius, 0px);
  cursor: pointer;
  transition: background-color 0.2s ease, color 0.2s ease;
}
.wpforms-page-button:hover,
.wpforms-page-button:focus {
  color: #ffffff;
  background-color: var(--color-secondary-a, #111111);
}

/* Fehlertexte & ungültige Felder */
.wpforms-field input.wpforms-error,
.wpforms-field select.wpforms-error,
.wpforms-field textarea.wpforms-error,
.wpforms-field-required-error {
  border-color: var(--form-error-color, #d63638) !important;
}
label.wpforms-error,
.wpforms-error-noscript {
  display: block;
  margin-top: 6px;
  font-size: 0.8125rem;
  color: var(--form-error-color, #d63638);
}

/* Submit-Button & Ladeindikator */
.wpforms-submit-container {
  margin-top: var(--space-small, 16px);
}
button.wpforms-submit {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: var(--form-submit-padding-y, 12px) var(--form-submit-padding-x, 32px);
  font-size: var(--form-submit-font-size, 16px);
  font-weight: var(--form-submit-font-weight, 600);
  color: var(--form-submit-color, var(--color-secondary-b, #cccccc));
  background-color: var(--form-submit-bg, #ffffff);
  border: var(--form-submit-border-width, 2px) solid var(--form-submit-border-color, var(--color-secondary-b, #cccccc));
  border-radius: var(--form-submit-radius, 0px);
  cursor: pointer;
  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
button.wpforms-submit:hover,
button.wpforms-submit:focus {
  color: var(--form-submit-color-hover, #ffffff);
  background-color: var(--form-submit-bg-hover, var(--color-primary, #fb5607));
  border-color: var(--form-submit-border-color-hover, var(--color-primary, #fb5607));
}
.wpforms-submit-spinner {
  width: 20px;
  height: 20px;
}