/* PPW Veranstaltungen
   Kleine pluginseitige Ergänzungen zur zentralen Website-Gestaltung. */
.ppw-events-section {
  --ppw-event-terms-top-gap: clamp(3.5rem, 4.5vw, 4.5rem);
}

/*
 * Kopfbereich, Meta-Zeile, Titel, Lead, Einleitung und Veranstaltungsbild werden vollständig
 * durch die gemeinsame .ppw-editorial-single-* Komponente im Gesamt-CSS
 * gesteuert. Plugin-CSS beginnt deshalb erst bei der veranstaltungsspezifischen
 * Detail- und Faktenlogik.
 */

/*
 * Einzelveranstaltung: Titel, Lead und Einleitung bilden den redaktionellen
 * Einstieg. Danach folgt «Auf einen Blick» ueber die gesamte Inhaltsbreite.
 * Ein vorhandenes Veranstaltungsbild folgt erst nach den organisatorischen
 * Kerndaten; darunter beginnt der ausfuehrliche Veranstaltungstext.
 * Dadurch erhaelt die Informationsbox genuegend Raum und lange Werte muessen
 * nicht in einer schmalen Seitenspalte umbrechen.
 */
.single-ppw_event .ppw-event-single .ppw-event-single-summary {
  width: 100% !important;
  max-width: var(--ppw-editorial-single-width, 1120px) !important;
  margin: 0 auto clamp(3.5rem, 5vw, 5rem) !important;
}

.single-ppw_event .ppw-event-single .ppw-event-single-summary--has-registration-shortcut {
  margin-bottom: clamp(2.5rem, 3.5vw, 3.25rem) !important;
}

/* Version 1.0.125: Die Schnellaktion «Zur Anmeldung» folgt innerhalb des
 * Veranstaltungssystems derselben räumlichen Bedienlogik wie in der Übersicht:
 * Anmeldeaktionen liegen rechts. Die Buttonbreite verwendet dieselbe kontinuierliche
 * Formel wie der rechte Button der Übersicht, damit Position und Geometrie auf
 * Desktop und Mobil konsistent bleiben.
 *
 * Version 1.0.119: Direkter, aber bewusst nachgeordneter Zugang zur Anmeldung.
 * Die Faktenbox bleibt reine Information. Erst unmittelbar darunter erscheint
 * fuer anmeldbare Veranstaltungen die Aktion «Zur Anmeldung». Der Sprung nutzt
 * den bestehenden Abschnitt #anmeldung; die normale Informationsreihenfolge
 * der Einzelveranstaltung bleibt unveraendert. */
.single-ppw_event .ppw-event-single .ppw-event-single-registration-shortcut {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: flex-end !important;
  width: 100% !important;
  margin: 1.35rem 0 0 !important;
  padding: 0 !important;
}

/* Die Schnellaktion definiert nur ihre Position und Breite.
 * Buttonhoehe, Innenabstand, Rahmen, Farben, Typografie und Zustaende
 * stammen vollstaendig aus dem websiteweiten Button-System. */
.single-ppw_event .ppw-event-single .ppw-event-single-registration-button {
  width: min(14rem, calc((100% - 0.9rem) / 2)) !important;
  min-width: 0 !important;
  max-width: min(14rem, calc((100% - 0.9rem) / 2)) !important;
  margin: 0 !important;
}

/* Der Zielabschnitt bleibt nach dem direkten Ankersprung unter dem sticky
 * Header sichtbar. Der bereits websiteweit verwendete Ankerabstand dient als
 * gemeinsame Referenz; der Fallback entspricht dem Standardwert. */
.single-ppw_event #anmeldung {
  scroll-margin-top: var(--ppw-toc-anchor-offset, 7rem);
}

.single-ppw_event .ppw-event-single .ppw-event-single-body {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  min-width: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-event-single-body > :first-child {
  margin-top: 0 !important;
  margin-block-start: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-event-single-body > p,
.single-ppw_event .ppw-event-single .ppw-event-single-body > h2,
.single-ppw_event .ppw-event-single .ppw-event-single-body > h3,
.single-ppw_event .ppw-event-single .ppw-event-single-body > h4,
.single-ppw_event .ppw-event-single .ppw-event-single-body > ul,
.single-ppw_event .ppw-event-single .ppw-event-single-body > ol,
.single-ppw_event .ppw-event-single .ppw-event-single-body > blockquote,
.single-ppw_event .ppw-event-single .ppw-event-single-body > .wp-block-group {
  width: 100% !important;
  max-width: none !important;
}

.single-ppw_event .ppw-event-single .ppw-event-single-facts {
  float: none !important;
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  margin: 0 !important;
}

/* Der Veranstaltungstext behaelt eine ruhige Lesebreite und beginnt erst nach
 * der vollbreiten Faktenbox. */
.single-ppw_event .ppw-event-single .ppw-event-single-details {
  width: 100% !important;
  max-width: var(--ppw-editorial-single-width, 1120px) !important;
  margin: 0 auto !important;
}

.single-ppw_event .ppw-event-single .ppw-event-single-details-label {
  margin: 0 0 1.15rem !important;
}

.single-ppw_event .ppw-event-single .ppw-event-single-details .ppw-event-single-body {
  width: 100% !important;
  max-width: var(--ppw-event-details-width, 900px) !important;
  margin: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-event-single-body h2,
.single-ppw_event .ppw-event-single .ppw-event-single-body h3 {
  text-wrap: balance;
}

@media (max-width: 1100px) {
  .single-ppw_event .ppw-event-single .ppw-event-single-details .ppw-event-single-body {
    max-width: 100% !important;
  }
}

/*
 * Sicherheitsnetz für Themes/GeneratePress-Konfigurationen, die das
 * Beitragsbild ausserhalb des normalen GeneratePress-Filters ausgeben.
 * Das pluginseitige Bild .ppw-event-single-image bleibt davon unberührt.
 */
.single-ppw_event .page-header-image-single,
.single-ppw_event .featured-image:not(.ppw-event-single-image),
.single-ppw_event .post-image:not(.ppw-event-single-image) {
  display: none !important;
}

/* Version 1.0.149: Suche, Veranstaltungsarten, aktive Auswahl und
 * Zuruecksetzen verwenden die gemeinsame globale PPW-Filterkomponente.
 * Pluginseitige visuelle Sonderregeln sind bewusst entfernt. */

/* Version 1.0.29: Such- und Filterbereich bleibt nach einer Aktion an einer
 * stabilen, bewusst eingerueckten Position im Viewport. Der Browser springt
 * weiterhin direkt zur Bedienzone, aber nicht mehr bis an den oberen Rand.
 * Bei einer leeren Ergebnismenge reserviert die Sektion genuegend Hoehe, damit
 * dieselbe Scrollposition nicht am Dokumentende technisch nach unten begrenzt
 * wird. */
.ppw-events-section {
  scroll-margin-top: clamp(7rem, 10vh, 9rem);
}

.ppw-events-section--empty {
  min-height: calc(100svh - 8rem);
}

@media (max-width: 640px) {
  .ppw-events-section {
    scroll-margin-top: 5.5rem;
  }

  .ppw-events-section--empty {
    min-height: calc(100svh - 6rem);
  }
}


/* Version 1.0.30: Die dynamische Filterung veraendert die Darstellung nicht.
 * aria-busy kennzeichnet den laufenden Nachladevorgang nur semantisch.
 * Bestehende Ergebnisse bleiben bis zum Eintreffen der neuen Antwort sichtbar,
 * damit kein weisser Zwischenzustand und kein visuelles Flackern entsteht. */
.ppw-events-section[aria-busy="true"] {
  cursor: progress;
}

.ppw-events-section[aria-busy="true"] .ppw-filter-tools,
.ppw-events-section[aria-busy="true"] .ppw-filter-nav,
.ppw-events-section[aria-busy="true"] .ppw-filter-reset-form {
  cursor: progress;
}

/* Die erste Veranstaltung steuert keine eigene obere Trennlinie. Die Grenze
 * zwischen Bedienbereich und Ergebnissen gehoert ausschliesslich zur globalen
 * PPW-Filterkomponente. */
.ppw-events-list > .ppw-event-card:first-child {
  padding-top: 0 !important;
  border-top: 0 !important;
}




/* Version 1.0.36: Root-Cause-Korrektur analog zu PPW Beitraege. Der
 * Erklaerungstext im gefilterten Leerzustand traegt im Markup den globalen
 * Modifier .ppw-text--full und umgeht damit die normale 740-px-Lesebreite
 * auf dem vorgesehenen Weg. Lokale Gegenregeln fuer den Text entfallen; nur
 * Container und Ueberschrift werden auf volle Ergebnisbreite geoeffnet. */
.ppw-events-empty--filtered {
  width: 100% !important;
  max-width: none !important;
  inline-size: 100% !important;
  max-inline-size: none !important;
}

.ppw-events-empty--filtered > .ppw-section-heading {
  width: 100% !important;
  max-width: none !important;
  inline-size: 100% !important;
  max-inline-size: none !important;
  text-wrap: initial !important;
}

/* -------------------------------------------------------------------------
   Version 1.0.37: Redaktionelle Bildbausteine in Einzelveranstaltungen
   -------------------------------------------------------------------------
   Dieselben drei angebotenen Bildvarianten wie bei PPW Beiträge werden
   innerhalb der Veranstaltungs-Lesespalten eigenstaendig vom
   Veranstaltungsplugin gerendert. Die ältere kompakte Zentrierung bleibt nur
   fuer bereits gespeicherte Inhalte kompatibel.
 */
.single-ppw_event .ppw-event-single {
  --ppw-article-paragraph-gap: 0.95rem;
  --ppw-image-content-aspect-ratio: 16 / 9;
  --ppw-image-compact-width: 68%;
  --ppw-image-float-width: 57%;
  --ppw-image-float-max-width: 26.25rem;
  --ppw-image-float-gap: 1.15rem;
  --ppw-image-block-gap: clamp(1.25rem, 2vw, 1.55rem);
}

.single-ppw_event .ppw-event-single .ppw-article-body .wp-block-image {
  margin-top: clamp(1.8rem, 3vw, 2.35rem) !important;
  margin-bottom: clamp(1.9rem, 3vw, 2.45rem) !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body .wp-block-image img {
  display: block;
  max-width: 100%;
  height: auto;
  border-radius: var(--ppw-radius-image-full, 26px);
}

/* Optionale Bildunterschrift: dieselbe ruhige Metaebene wie bei Beiträgen.
 * 1.0.118: Core kann bei ausgerichteten Bildfiguren die Caption als
 * table-caption behandeln. Sobald die PPW-Komponente das Figure bei <=900 px
 * auf einen normalen Block zuruecksetzt, kann diese alte Display-Rolle sonst
 * auf Min-Content-Breite zusammenschrumpfen. Die Caption ist deshalb
 * ausdruecklich ein normaler Block ueber die volle Breite ihrer Bildfigur. */
.single-ppw_event .ppw-event-single .ppw-article-body .wp-block-image figcaption,
.single-ppw_event .ppw-event-single .ppw-article-body .wp-block-image .wp-element-caption {
  display: block !important;
  float: none !important;
  clear: both !important;
  width: 100% !important;
  inline-size: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  max-inline-size: 100% !important;
  margin: 0.35rem 0 0 !important;
  padding: 0 !important;
  border: 0 !important;
  box-sizing: border-box !important;
  color: var(--ppw-text-meta, #4E5841);
  font-family: var(--ppw-font-sans);
  font-size: 0.84rem;
  line-height: 1.4;
  font-style: normal !important;
  font-weight: 400;
  letter-spacing: 0;
  text-align: left;
  white-space: normal !important;
}

/* Die umgebende Gruppe ist bereits Teil der Veranstaltungs-Lesespalte. Eine
 * zweite Gutenberg-/Theme-contentSize innerhalb des Bausteins wird deshalb
 * konsequent neutralisiert. */
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout {
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  margin-right: 0 !important;
  margin-left: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  --wp--style--global--content-size: 100%;
  --wp--style--global--wide-size: 100%;
  box-sizing: border-box;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout > .wp-block-group__inner-container {
  display: flow-root;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout > .wp-block-group__inner-container {
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  box-sizing: border-box;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout.is-layout-constrained > :where(:not(.alignfull)),
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout.wp-block-group-is-layout-constrained > :where(:not(.alignfull)),
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout > .wp-block-group__inner-container > :where(:not(.alignfull)) {
  max-width: none !important;
  margin-right: 0 !important;
  margin-left: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left > * + *,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right > * + *,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left > .wp-block-group__inner-container > * + *,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right > .wp-block-group__inner-container > * + * {
  margin-block-start: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout .wp-block-image {
  box-sizing: border-box;
  margin-top: 0 !important;
}

/* 1.0.117: Gutenberg kann einen core/image-Block je nach gespeichertem
 * Blockstand als aeusseren .wp-block-image-Wrapper mit einem inneren figure
 * ausgeben. Traegt dieses innere figure noch eine Core-Ausrichtung wie
 * .alignleft oder .alignright, bringt WordPress eigene Float-/Margin-Werte
 * ein. Die PPW-Gruppe ist jedoch alleinige Autoritaet fuer Bildposition und
 * Textumlauf. Deshalb wird nur ein tatsaechlich IN .wp-block-image liegendes
 * figure neutralisiert. Ist .wp-block-image selbst das figure, greift diese
 * Regel nicht und die normale PPW-Floatlogik bleibt unveraendert. */
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout .wp-block-image > figure {
  display: block !important;
  float: none !important;
  width: 100% !important;
  inline-size: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  max-inline-size: 100% !important;
  margin: 0 !important;
  margin-inline: 0 !important;
  padding: 0 !important;
  padding-inline: 0 !important;
  box-sizing: border-box !important;
}

/* 1. Bild ueber die gesamte Textbreite. Der Bildblock bleibt auf derselben
 * Lesespalte wie der Veranstaltungstext und wird verbindlich in 16:9 gezeigt. */
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--full {
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  margin-top: var(--ppw-image-block-gap) !important;
  margin-right: 0 !important;
  margin-bottom: var(--ppw-image-block-gap) !important;
  margin-left: 0 !important;
  transform: none !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--full .wp-block-image,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--full figure.wp-block-image {
  display: block !important;
  float: none !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  margin-right: 0 !important;
  margin-bottom: 0 !important;
  margin-left: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--full .wp-block-image img {
  display: block !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  aspect-ratio: var(--ppw-image-content-aspect-ratio) !important;
  height: auto !important;
  object-fit: cover !important;
  object-position: center center !important;
}

/* Legacy-Unterstuetzung: kompakt zentrierte Bilder bleiben fuer bereits
 * gespeicherte Veranstaltungen lesbar, werden aber nicht mehr neu angeboten. */
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--centered {
  margin-top: var(--ppw-image-block-gap) !important;
  margin-bottom: var(--ppw-image-block-gap) !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--centered .wp-block-image {
  display: block !important;
  float: none !important;
  width: var(--ppw-image-compact-width) !important;
  min-width: 0 !important;
  max-width: var(--ppw-image-compact-width) !important;
  margin-right: auto !important;
  margin-bottom: 0 !important;
  margin-left: auto !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--centered .wp-block-image img {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  height: auto !important;
}

/* 2/3. Textumlauf. Nur das Bild besitzt eine Teilbreite; der umgebende Text
 * bleibt ein normaler Block der vollstaendigen Veranstaltungs-Lesespalte. */
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right {
  margin-top: var(--ppw-article-paragraph-gap) !important;
  margin-bottom: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body > h2 + .ppw-image-layout--float-left,
.single-ppw_event .ppw-event-single .ppw-article-body > h2 + .ppw-image-layout--float-right {
  margin-top: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body > p:has(+ .ppw-image-layout--float-left),
.single-ppw_event .ppw-event-single .ppw-article-body > p:has(+ .ppw-image-layout--float-right) {
  margin-bottom: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left .wp-block-image,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right .wp-block-image {
  display: block !important;
  width: var(--ppw-image-float-width) !important;
  min-width: 0 !important;
  max-width: var(--ppw-image-float-max-width) !important;
  margin-top: 0 !important;
  margin-bottom: 0.35rem !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left .wp-block-image {
  float: left !important;
  margin-right: var(--ppw-image-float-gap) !important;
  margin-left: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right .wp-block-image {
  float: right !important;
  margin-right: 0 !important;
  margin-left: var(--ppw-image-float-gap) !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left .wp-block-image img,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right .wp-block-image img {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  aspect-ratio: var(--ppw-image-content-aspect-ratio) !important;
  height: auto !important;
  object-fit: cover !important;
  object-position: center center !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left p,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right p,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left ul,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right ul,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left ol,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right ol {
  width: auto !important;
  max-width: none !important;
  margin-right: 0 !important;
  margin-left: 0 !important;
  padding-right: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left p,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right p {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left p + p,
.single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right p + p {
  margin-top: var(--ppw-article-paragraph-gap) !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body > .ppw-image-layout--float-left + p,
.single-ppw_event .ppw-event-single .ppw-article-body > .ppw-image-layout--float-right + p {
  margin-top: var(--ppw-article-paragraph-gap) !important;
}

.single-ppw_event .ppw-event-single .ppw-article-body > .ppw-image-layout--float-left + .ppw-image-layout--float-left,
.single-ppw_event .ppw-event-single .ppw-article-body > .ppw-image-layout--float-left + .ppw-image-layout--float-right,
.single-ppw_event .ppw-event-single .ppw-article-body > .ppw-image-layout--float-right + .ppw-image-layout--float-left,
.single-ppw_event .ppw-event-single .ppw-article-body > .ppw-image-layout--float-right + .ppw-image-layout--float-right {
  margin-top: var(--ppw-article-paragraph-gap) !important;
}

/* Auf kleinen Bildschirmen wird Textumlauf wie bei Beitraegen bewusst
 * aufgehoben. */
@media (max-width: 900px) {
  .single-ppw_event .ppw-event-single {
    --ppw-image-compact-width: min(82%, 28rem);
  }

  /* 1.0.116: Beim Wechsel vom Float in die gestapelte Darstellung wird
   * die komplette Inline-Achse explizit auf die volle Lesespaltenbreite
   * zurueckgesetzt. WordPress/Gutenberg kann fuer Group- und Image-Bloecke
   * logische Inline-Margins bzw. eine eigene Inline-Groesse einbringen.
   * Nur margin-left/right zu neutralisieren reicht dann nicht in jeder
   * Core-/Theme-Kombination. Deshalb werden Gruppe, optionaler
   * Inner-Container und Figure gemeinsam gestreckt, ohne Pixelkorrektur. */
  .single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left,
  .single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right,
  .single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left > .wp-block-group__inner-container,
  .single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right > .wp-block-group__inner-container {
    width: 100% !important;
    inline-size: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    max-inline-size: 100% !important;
    margin-right: 0 !important;
    margin-left: 0 !important;
    margin-inline: 0 !important;
    padding-right: 0 !important;
    padding-left: 0 !important;
    padding-inline: 0 !important;
    justify-self: stretch !important;
    box-sizing: border-box !important;
  }

  .single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left,
  .single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right {
    margin-top: var(--ppw-image-block-gap) !important;
  }

  .single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left .wp-block-image,
  .single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right .wp-block-image {
    display: block !important;
    float: none !important;
    width: 100% !important;
    inline-size: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    max-inline-size: 100% !important;
    margin-right: 0 !important;
    margin-left: 0 !important;
    margin-inline: 0 !important;
    margin-bottom: 0.9rem !important;
    padding-right: 0 !important;
    padding-left: 0 !important;
    padding-inline: 0 !important;
    justify-self: stretch !important;
    transform: none !important;
    box-sizing: border-box !important;
  }

  .single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-left .wp-block-image img,
  .single-ppw_event .ppw-event-single .ppw-article-body .ppw-image-layout--float-right .wp-block-image img {
    width: 100% !important;
    inline-size: 100% !important;
    max-width: 100% !important;
    max-inline-size: 100% !important;
    margin-inline: 0 !important;
  }
}

@media (max-width: 480px) {
  .single-ppw_event .ppw-event-single {
    --ppw-image-compact-width: 100%;
  }
}

/* Version 1.0.127: Der Absagehinweis ist eine gemeinsame statusbezogene
 * Informationskomponente fuer Veranstaltungsuebersicht und Einzelansicht.
 * In beiden Faellen steht er direkt unter «Auf einen Blick» und wird nur
 * ausgegeben, wenn Status «Abgesagt» und ein Hinweistext vorhanden sind. */
.single-ppw_event .ppw-event-single .ppw-event-cancel-note {
  width: 100% !important;
  max-width: none !important;
  margin-top: 1.35rem !important;
  margin-right: 0 !important;
  margin-bottom: 0 !important;
  margin-left: 0 !important;
}

.ppw-events-section .ppw-event-card-cancel-note {
  width: var(--ppw-event-overview-panel-width, min(88%, 1020px)) !important;
  max-width: 100% !important;
  margin-top: 1rem !important;
  margin-right: 0 !important;
  margin-bottom: 0 !important;
  margin-left: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-event-cancel-note,
.ppw-events-section .ppw-event-card-cancel-note {
  border-left: var(--ppw-info-box-rule-width, 3px) solid var(--ppw-info-box-rule-color, var(--ppw-info-box-rule-color-neutral, #8C9778)) !important;
  border-radius: var(--ppw-info-box-radius, 0) !important;
}

.single-ppw_event .ppw-event-single .ppw-event-cancel-note > .ppw-eyebrow,
.ppw-events-section .ppw-event-card-cancel-note > .ppw-eyebrow {
  margin: 0 0 0.8rem !important;
  color: var(--ppw-info-box-title-color, var(--ppw-event-status-full, #8A4038)) !important;
}

.single-ppw_event .ppw-event-single .ppw-event-cancel-note-copy,
.single-ppw_event .ppw-event-single .ppw-event-cancel-note-copy p,
.ppw-events-section .ppw-event-card-cancel-note .ppw-event-cancel-note-copy,
.ppw-events-section .ppw-event-card-cancel-note .ppw-event-cancel-note-copy p {
  width: 100% !important;
  max-width: none !important;
  color: var(--ppw-text-color, #2f3a27) !important;
  font-family: var(--ppw-font-sans) !important;
  font-size: var(--ppw-text-font-size) !important;
  line-height: var(--ppw-text-line-height) !important;
  font-weight: var(--ppw-text-font-weight) !important;
  letter-spacing: var(--ppw-text-letter-spacing, 0) !important;
  text-transform: none !important;
}

.single-ppw_event .ppw-event-single .ppw-event-cancel-note-copy p,
.ppw-events-section .ppw-event-card-cancel-note .ppw-event-cancel-note-copy p {
  margin: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-event-cancel-note-copy p + p,
.ppw-events-section .ppw-event-card-cancel-note .ppw-event-cancel-note-copy p + p {
  margin-top: var(--ppw-text-paragraph-gap, 0.9rem) !important;
}

@media (max-width: 1050px) {
  .ppw-events-section .ppw-event-card-cancel-note {
    width: 100% !important;
  }
}

/* PPW Veranstaltungen
 * Abschlussbereiche ohne Formular (Ohne Anmeldung, Ausgebucht, Abgesagt
 * sowie kompatible Altstatus) folgen horizontal derselben 1120-px-Achse wie
 * der redaktionelle Veranstaltungstext. Die eigentliche Textzeile bleibt auf
 * der kontrollierten Detail-Lesebreite. Dadurch beginnt der Abschluss nicht
 * mehr auf der schmaleren, zentrierten 980-px-Achse. */
.single-ppw_event .ppw-event-registration--status {
  --ppw-split-width: var(--ppw-editorial-single-width, 1120px);
}

.single-ppw_event .ppw-event-registration--status .ppw-event-registration-intro {
  max-width: var(--ppw-event-details-width, 880px) !important;
}

/* PPW Veranstaltungen
 * PDF zur Veranstaltung: dieselbe ruhige Callout-Grundidee wie beim
 * PDF-Modul der Beiträge, inhaltlich auf Druckversion bzw. Dokumentart angepasst.
 * Die Box bleibt auf der kontrollierten Detail-Lesebreite und fluchtet links
 * mit dem redaktionellen Veranstaltungstext. */
.single-ppw_event .ppw-event-single .ppw-event-pdf-box {
  width: 100% !important;
  max-width: var(--ppw-event-details-width, 900px) !important;
  margin: 0 !important;
  padding:
    var(--ppw-info-box-padding-y, var(--ppw-article-callout-padding-y, 1.8rem))
    var(--ppw-info-box-padding-x, var(--ppw-article-callout-padding-x, 1.6rem)) !important;
  border: 0 !important;
  border-left: var(--ppw-info-box-rule-width, 3px) solid var(--ppw-info-box-rule-color, var(--ppw-info-box-rule-color-neutral, #8C9778)) !important;
  border-radius: var(--ppw-info-box-radius, 0) !important;
  background: var(--ppw-info-box-bg, var(--ppw-bg-section, #F7F4EE)) !important;
  box-shadow: none !important;
  box-sizing: border-box;
}

.single-ppw_event .ppw-event-single .ppw-event-pdf-box--after-details {
  margin-top: clamp(2rem, 3.5vw, 3rem) !important;
}

.single-ppw_event .ppw-event-single .ppw-event-pdf-box .ppw-eyebrow {
  margin: 0 0 0.8rem !important;
}

.single-ppw_event .ppw-event-single .ppw-event-pdf-box .ppw-section-heading {
  margin: 0 0 0.8rem !important;
  font-size: clamp(1.5rem, 2vw, 1.8rem) !important;
  line-height: 1.22 !important;
  text-wrap: balance;
}


.single-ppw_event .ppw-event-single .ppw-event-pdf-list {
  width: 100% !important;
  margin-top: 1.15rem !important;
}

/* Dokumentzeilen folgen der globalen .ppw-info-box-item-Komponente. */
.single-ppw_event .ppw-event-single .ppw-event-pdf-type,
.single-ppw_event .ppw-event-single .ppw-event-pdf-meta {
  color: var(--ppw-event-panel-text) !important;
}

@media (max-width: 640px) {
  .single-ppw_event .ppw-event-single .ppw-event-pdf-box {
    padding-right: 1.15rem !important;
    padding-left: 1.15rem !important;
  }
}

/* Strukturierte Veranstaltungsadresse und automatische Routenplanung. */
.ppw-event-location-name,
.ppw-event-location-street,
.ppw-event-location-city,
.ppw-event-location-online,
.ppw-event-location-online-note {
  display: block;
}

.ppw-event-location-online {
  margin-top: 0.55rem;
  font-weight: 600;
}

.ppw-event-location-name:first-child + .ppw-event-location-online,
.ppw-event-location-online:first-child {
  margin-top: 0;
}

.ppw-event-location-online-note {
  margin-top: 0.15rem;
}

/* -------------------------------------------------------------------------
   Version 1.0.61/1.0.62: Ruhige, moderne Veranstaltungsinformationen
   -------------------------------------------------------------------------
   Übersicht, «Auf einen Blick» und PDF-Unterlagen folgen derselben visuellen
   Sprache: helle Oberfläche, feine Kontur, wenig Dekoration und klare
   Informationshierarchie. Die Regeln sind bewusst pluginseitig gekapselt,
   damit keine lokalen Korrekturen im zentralen Website-CSS nötig sind.
 */
.ppw-events-section,
.single-ppw_event .ppw-event-single {
  --ppw-event-panel-bg: var(--ppw-info-box-bg, #faf8f4);
  --ppw-event-panel-border: var(--ppw-info-box-divider, rgba(47, 55, 37, 0.14));
  --ppw-event-panel-rule: var(--ppw-info-box-divider, rgba(47, 55, 37, 0.12));
  --ppw-event-panel-text: var(--ppw-primary, #2f3725);
  --ppw-event-panel-radius: var(--ppw-info-box-radius, 0);
}


/* Veranstaltungs-Faktenboxen verwenden die globale semantische Boxvariante.
 * Das Plugin ordnet den Veranstaltungsstatus nur noch den Klassen
 * .ppw-info-box--status-open bzw. --status-restricted zu. Gesamt-CSS V5.52
 * steuert daraus die Boxlinie in Petrol bzw. Ziegelrot; der neutrale Boxtitel bleibt dunkel. */

/* Veranstaltungsübersicht: Die frühere massive Infobox wird zu einem
 * kompakteren Informationspanel. Die drei Inhaltsgruppen werden nicht mehr
 * durch harte vertikale Linien wie eine Tabelle getrennt. */
/* Version 1.0.124: Aktionslogik finalisiert.
 * Die Aktionszeile bleibt ohne harten Responsive-Kipppunkt immer einzeilig.
 * Alle Uebersichtsbuttons verwenden dieselbe kontinuierliche Breitenformel:
 * maximal 14rem, auf schmalen Ansichten exakt eine halbe Boxbreite abzueglich
 * des gemeinsamen Zwischenraums. Dadurch bleibt «Details» immer linksbuendig
 * und «Zur Anmeldung» bei zwei Aktionen gleichzeitig an der rechten Boxkante.
 * Auch eine einzelne Details-Aktion behaelt exakt dieselbe Breite wie der linke
 * Button einer Zweiergruppe.
 *
 * Version 1.0.143: Das Plugin steuert nur noch Anordnung und Breite dieser
 * Aktionen. Primaer-/Sekundaer-Hierarchie, Hoehe, Innenabstaende, Rahmen,
 * Typografie sowie Hover-, Fokus-, Aktiv- und Disabled-Zustaende stammen
 * ausschliesslich aus dem websiteweiten Button-System im Gesamt-CSS. */
@media (max-width: 800px) {
  .ppw-events-section .ppw-event-card-content {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
  }
}

.ppw-events-section .ppw-event-card-actions {
  display: flex !important;
  flex-wrap: nowrap !important;
  align-items: stretch !important;
  justify-content: flex-start !important;
  gap: 0.9rem !important;
  width: var(--ppw-event-overview-panel-width, min(88%, 1020px)) !important;
  max-width: 100% !important;
  margin: var(--ppw-event-overview-link-gap, 1.35rem) 0 0 !important;
  padding: 0 !important;
}

.ppw-events-section .ppw-event-card-actions--registration {
  justify-content: space-between !important;
}

/* Die Aktionsbuttons definieren hier nur ihre Breite im Veranstaltungsraster.
 * Das websiteweite Button-System steuert Darstellung und Interaktionszustaende. */
.ppw-events-section .ppw-event-card-actions .ppw-event-card-button {
  width: min(14rem, calc((100% - 0.9rem) / 2)) !important;
  min-width: 0 !important;
  max-width: min(14rem, calc((100% - 0.9rem) / 2)) !important;
  margin: 0 !important;
  flex: 0 1 min(14rem, calc((100% - 0.9rem) / 2)) !important;
}

.ppw-events-section .ppw-event-card-actions--single {
  justify-content: flex-start !important;
}

@media (max-width: 1050px) {
  .ppw-events-section .ppw-event-card-actions {
    width: 100% !important;
  }
}

/* Mobile: Die Veranstaltungsaktionen stapeln innerhalb ihrer Komponente.
 * Das Aussehen der Buttons bleibt dabei unveraendert global. */
@media (max-width: 650px) {
  .ppw-events-section .ppw-event-card-actions {
    flex-direction: column !important;
    align-items: stretch !important;
    gap: var(--ppw-button-stack-gap, 0.75rem) !important;
  }

  .ppw-events-section .ppw-event-card-actions .ppw-event-card-button {
    width: 100% !important;
    max-width: none !important;
    flex: 0 0 auto !important;
  }

  .single-ppw_event .ppw-event-single .ppw-event-single-registration-shortcut {
    justify-content: flex-start !important;
  }

  .single-ppw_event .ppw-event-single .ppw-event-single-registration-button {
    width: 100% !important;
    max-width: none !important;
  }
}


.ppw-events-section .ppw-event-card-info-panel {
  width: var(--ppw-event-overview-panel-width, min(88%, 1020px)) !important;
  max-width: 100% !important;
  margin-top: clamp(1.15rem, 1.8vw, 1.45rem) !important;
  padding: clamp(1.15rem, 1.8vw, 1.4rem) clamp(1.2rem, 2vw, 1.5rem) !important;
  border: 0 !important;
  border-left: var(--ppw-info-box-rule-width, 3px) solid var(--ppw-info-box-rule-color, var(--ppw-info-box-rule-color-neutral, #8C9778)) !important;
  border-radius: var(--ppw-info-box-radius, 0) !important;
  background: var(--ppw-info-box-bg, var(--ppw-event-panel-bg)) !important;
  box-shadow: none !important;
}

/* Ab derselben Breite, an der das globale Veranstaltungsraster die Faktenbox
 * bereits vollbreit vorsieht, darf der pluginseitige Desktopwert von 88 %
 * nicht mehr greifen. So bleibt auf Tablet und Mobil nur der globale Seitenrand. */
@media (max-width: 1050px) {
  .ppw-events-section .ppw-event-card-info-panel {
    width: 100% !important;
    max-width: 100% !important;
  }
}

.ppw-events-section .ppw-event-card-info-head {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: space-between !important;
  gap: 0.8rem 1.5rem !important;
  width: 100% !important;
  margin: 0 0 0.9rem !important;
}

.ppw-events-section .ppw-event-card-info-head > .ppw-eyebrow {
  margin: 0 !important;
  color: var(--ppw-info-box-title-color, var(--ppw-text-color, #29311F)) !important;
}

.ppw-events-section .ppw-event-card-info-panel .ppw-event-card-status {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  width: auto !important;
  max-width: min(100%, 30rem) !important;
  margin: 0 !important;
  padding: 0.12rem 0 0.12rem 0.72rem !important;
  border-top: 0 !important;
  border-right: 0 !important;
  border-bottom: 0 !important;
  border-left-width: 2px !important;
  background: transparent !important;
  line-height: 1.3 !important;
  text-align: right !important;
}

.ppw-events-section .ppw-event-card-info-grid {
  display: grid !important;
  grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
  gap: clamp(1.15rem, 2.2vw, 2rem) !important;
  margin: 0 !important;
  padding: clamp(0.95rem, 1.5vw, 1.15rem) 0 0 !important;
  border-top: 1px solid var(--ppw-event-panel-rule) !important;
}

@media (max-width: 780px) {
  .ppw-events-section .ppw-event-card-info-head {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 0.65rem !important;
  }

  .ppw-events-section .ppw-event-card-info-panel .ppw-event-card-status {
    justify-content: flex-start !important;
    max-width: 100% !important;
    text-align: left !important;
  }
}

/* Die sechs Kernangaben folgen auf Desktop immer derselben Leseroutine:
 * drei Spalten in zwei Reihen. Dadurch bleibt die Position der Informationen
 * unabhängig von Veranstaltungsart und Inhalt vorhersehbar. */
.ppw-events-section .ppw-event-card-info-grid--facts-6 > .ppw-event-card-info-group:not(.ppw-event-card-info-group--wide) {
  grid-column: span 2;
}

.ppw-events-section .ppw-event-card-info-group--wide,
.ppw-events-section .ppw-event-card-info-group--online {
  grid-column: 1 / -1 !important;
  padding-top: 0.9rem !important;
  border-top: 1px solid var(--ppw-event-panel-rule) !important;
}

.ppw-events-section .ppw-event-card-info-group {
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
}

.ppw-events-section .ppw-event-card-info-label {
  margin: 0 0 0.45rem !important;
  color: var(--ppw-event-panel-text) !important;
  font-size: 0.76rem !important;
  line-height: 1.3 !important;
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
}

.ppw-events-section .ppw-event-card-info-primary,
.ppw-events-section .ppw-event-card-info-secondary {
  margin: 0 !important;
  line-height: 1.5 !important;
}

.ppw-events-section .ppw-event-card-info-secondary {
  margin-top: 0.28rem !important;
  color: var(--ppw-event-panel-text) !important;
}

.ppw-events-section .ppw-event-card-schedule {
  display: grid;
  gap: 0.28rem;
}

.ppw-events-section .ppw-event-card-schedule-row {
  display: block;
}

.ppw-events-section .ppw-event-card-schedule-row + .ppw-event-card-schedule-row {
  margin-top: 0.45rem;
}

.ppw-events-section .ppw-event-card-schedule-date,
.ppw-events-section .ppw-event-card-schedule-time {
  display: block;
}

.ppw-events-section .ppw-event-card-schedule-time {
  margin-top: 0.08rem;
}

.ppw-events-section .ppw-event-card-schedule-note,
.ppw-events-section .ppw-event-location-platform {
  display: block;
  margin-top: 0.28rem;
}

.ppw-events-section .ppw-event-location-platform strong {
  font-weight: 600;
}

/* Responsive Faktenbox: eine einzige, vorhersehbare Grid-Logik.
 * Die fruehere Container-Query-Loesung wurde entfernt, weil sie zusammen mit
 * den bestehenden globalen Breakpoints nicht zuverlaessig griff. Stattdessen
 * wechseln wir bewusst frueh in eine stabile Zweispaltenansicht. Der Orts-
 * bzw. Plattformblock bekommt dort die volle Breite. */
.ppw-events-section .ppw-event-card-info-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  grid-template-areas:
    "termin teilnahme ort"
    "kosten anmeldeschluss teilnehmerzahl" !important;
}

.ppw-events-section .ppw-event-card-info-group--termin {
  grid-area: termin !important;
}

.ppw-events-section .ppw-event-card-info-group--teilnahme {
  grid-area: teilnahme !important;
}

.ppw-events-section .ppw-event-card-info-group--ort {
  grid-area: ort !important;
}

.ppw-events-section .ppw-event-card-info-group--kosten {
  grid-area: kosten !important;
}

.ppw-events-section .ppw-event-card-info-group--anmeldeschluss {
  grid-area: anmeldeschluss !important;
}

.ppw-events-section .ppw-event-card-info-group--teilnehmerzahl {
  grid-area: teilnehmerzahl !important;
}

/* Die erklaerende Online-Zeile folgt immer ueber die volle Breite. */
.ppw-events-section .ppw-event-card-info-group--wide,
.ppw-events-section .ppw-event-card-info-group--online {
  grid-column: 1 / -1 !important;
}

/* Mittlere Breiten: zwei ruhige Informationsspalten statt wechselnder
 * Vollbreitenzeilen. Links stehen die Angaben zur Durchfuehrung, rechts die
 * organisatorischen Angaben. Die feste Leseroutine verhindert visuelle
 * Spruenge und gibt der Adresse ausreichend Platz zum sauberen Umbruch. */
@media (max-width: 1500px) {
  .ppw-events-section .ppw-event-card-info-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    grid-template-areas:
      "termin kosten"
      "teilnahme anmeldeschluss"
      "ort teilnehmerzahl" !important;
    column-gap: clamp(2rem, 4vw, 3.25rem) !important;
    row-gap: clamp(1.2rem, 2vw, 1.7rem) !important;
  }

  .ppw-events-section .ppw-event-card-info-group--ort {
    grid-column: auto !important;
  }

  .ppw-events-section .ppw-event-location-name {
    white-space: normal !important;
  }
}

/* Unterhalb der Kopfzeilen-Umschaltung wird die Faktenbox ebenfalls
 * einspaltig. So bleibt die Leserichtung auf Tablets und Mobilgeraeten ruhig
 * und lange Orts- oder Plattformangaben erhalten genuegend Breite. */
@media (max-width: 780px) {
  .ppw-events-section .ppw-event-card-info-grid {
    grid-template-columns: minmax(0, 1fr) !important;
    grid-template-areas:
      "termin"
      "teilnahme"
      "ort"
      "kosten"
      "anmeldeschluss"
      "teilnehmerzahl" !important;
    gap: 0 !important;
  }

  .ppw-events-section .ppw-event-card-info-grid > .ppw-event-card-info-group,
  .ppw-events-section .ppw-event-card-info-group--wide,
  .ppw-events-section .ppw-event-card-info-group--online {
    grid-column: 1 !important;
  }

  .ppw-events-section .ppw-event-card-info-group + .ppw-event-card-info-group {
    margin-top: 0.85rem !important;
    padding-top: 0.85rem !important;
    border-top: 1px solid var(--ppw-event-panel-rule) !important;
  }

  .ppw-events-section .ppw-event-location-name {
    white-space: normal !important;
  }
}

/* «Auf einen Blick»: Bezeichnung und Wert werden als ruhige Informationszeilen
 * gelesen. Die Faktenbox erhält bewusst mehr Breite; der danebenstehende Text
 * dient nur als kurzer Überblick, bevor der eigentliche Veranstaltungstext folgt. */
.single-ppw_event .ppw-event-single .ppw-event-single-facts--box {
  padding: clamp(1.3rem, 2vw, 1.6rem) !important;
  border: 0 !important;
  border-left: var(--ppw-info-box-rule-width, 3px) solid var(--ppw-info-box-rule-color, var(--ppw-info-box-rule-color-neutral, #8C9778)) !important;
  border-radius: var(--ppw-info-box-radius, 0) !important;
  background: var(--ppw-info-box-bg, var(--ppw-event-panel-bg)) !important;
  box-shadow: none !important;
}

.single-ppw_event .ppw-event-single .ppw-event-single-facts-head {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: space-between !important;
  gap: 0.8rem 1.5rem !important;
  width: 100% !important;
  margin: 0 0 0.9rem !important;
}

.single-ppw_event .ppw-event-single .ppw-event-single-facts-head > .ppw-eyebrow {
  margin: 0 !important;
  color: var(--ppw-info-box-title-color, var(--ppw-text-color, #29311F)) !important;
}

.single-ppw_event .ppw-event-single .ppw-event-single-status {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  width: auto !important;
  max-width: min(100%, 30rem) !important;
  margin: 0 !important;
  padding: 0.12rem 0 0.12rem 0.72rem !important;
  border-top: 0 !important;
  border-right: 0 !important;
  border-bottom: 0 !important;
  border-left-width: 2px !important;
  background: transparent !important;
  line-height: 1.3 !important;
  text-align: right !important;
}

@media (max-width: 780px) {
  .single-ppw_event .ppw-event-single .ppw-event-single-facts-head {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 0.65rem !important;
  }

  .single-ppw_event .ppw-event-single .ppw-event-single-status {
    justify-content: flex-start !important;
    max-width: 100% !important;
    text-align: left !important;
  }
}

.single-ppw_event .ppw-event-single .ppw-event-single-facts--box dl {
  margin: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-event-single-facts--box dl > div {
  display: grid !important;
  grid-template-columns: 10.5rem minmax(0, 1fr) !important;
  gap: 0.32rem 1rem !important;
  align-items: start !important;
  margin: 0 !important;
  padding: 0.68rem 0 !important;
  border: 0 !important;
  border-top: 1px solid var(--ppw-event-panel-rule) !important;
}

.single-ppw_event .ppw-event-single .ppw-event-single-facts--box dt,
.single-ppw_event .ppw-event-single .ppw-event-single-facts--box dd {
  margin: 0 !important;
  min-width: 0 !important;
}

.single-ppw_event .ppw-event-single .ppw-event-single-facts--box dt {
  color: var(--ppw-event-panel-text) !important;
  font-size: 0.82rem !important;
  line-height: 1.45 !important;
  font-weight: 700 !important;
}

.single-ppw_event .ppw-event-single .ppw-event-single-facts--box dd {
  line-height: 1.5 !important;
}

.single-ppw_event .ppw-event-single .ppw-event-schedule-list {
  display: grid !important;
  gap: 0.45rem !important;
}

/* Version 1.0.104: Datum und Uhrzeit bilden innerhalb eines Termins einen
 * kompakten Zweispaltenblock. Die Spalten verteilen nicht mehr die gesamte
 * verfuegbare Breite, damit die Uhrzeit optisch beim Datum bleibt. Ein
 * Mindestmass fuer die Datumsspalte haelt mehrere Termine sauber ausgerichtet;
 * laengere Datumsangaben duerfen die Spalte bei Bedarf erweitern. */
.single-ppw_event .ppw-event-single .ppw-event-schedule-item {
  display: grid !important;
  grid-template-columns: minmax(15rem, max-content) max-content !important;
  gap: 0.35rem 1.25rem !important;
  align-items: baseline !important;
  justify-content: start !important;
}

.single-ppw_event .ppw-event-single .ppw-event-schedule-date,
.single-ppw_event .ppw-event-single .ppw-event-schedule-time {
  min-width: 0 !important;
}

@media (max-width: 780px) {
  .single-ppw_event .ppw-event-single .ppw-event-schedule-item {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 0.1rem !important;
    justify-content: stretch !important;
  }
}

/* Auf breiten Ansichten erhaelt die Ortsangabe bewusst genug Raum fuer den
 * vollstaendigen Praxisnamen. In schmalen Ansichten darf sie wieder umbrechen. */
@media (min-width: 1101px) {
  .single-ppw_event .ppw-event-single .ppw-event-single-facts--box .ppw-event-location-name {
    white-space: nowrap !important;
  }
}

/* Kurze Routennamen genügen in der Faktenbox. Beide Ziele stehen als
 * eigenständige Funktionslinks nebeneinander und brechen nur bei Bedarf um.
 * Sie bleiben klar und kontrastreich lesbar, werden aber über geringere
 * Schriftgroesse und normales Gewicht bewusst unter den Faktenwerten gehalten. */
.single-ppw_event .ppw-event-location-routes {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 0.3rem 1rem !important;
  margin: 0.55rem 0 0 !important;
}

.single-ppw_event .ppw-event-location-routes .ppw-content-link,
.single-ppw_event .ppw-event-location-routes .ppw-content-link + .ppw-content-link {
  margin: 0 !important;
}

.single-ppw_event .ppw-event-location-routes .ppw-content-link a {
  color: var(--ppw-link-text, #29311F) !important;
  font-size: 0.95rem !important;
  line-height: 1.45 !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
  text-decoration-thickness: 1px !important;
  text-decoration-color: currentColor !important;
  text-underline-offset: 0.22em !important;
}

.single-ppw_event .ppw-event-location-routes .ppw-content-link a:hover,
.single-ppw_event .ppw-event-location-routes .ppw-content-link a:focus-visible {
  color: var(--ppw-secondary, #6F7957) !important;
  text-decoration-color: var(--ppw-secondary, #6F7957) !important;
}

@media (max-width: 780px) {
  .single-ppw_event .ppw-event-single .ppw-event-single-facts--box dl > div {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 0.22rem !important;
  }

  .single-ppw_event .ppw-event-single .ppw-event-single-facts--box dt {
    line-height: 1.35 !important;
  }
}

/* PDF-Unterlagen: Die Aussenbox bleibt veranstaltungsspezifisch positioniert;
 * die einzelnen Dokumente verwenden die globale Informationsbox-Zeilenstruktur. */
.single-ppw_event .ppw-event-single .ppw-event-pdf-box {
  max-width: var(--ppw-event-details-width, 900px) !important;
  padding:
    var(--ppw-info-box-padding-y, 1.8rem)
    var(--ppw-info-box-padding-x, clamp(1.4rem, 2vw, 1.8rem)) !important;
  border: 0 !important;
  border-left: var(--ppw-info-box-rule-width, 3px) solid var(--ppw-info-box-rule-color, var(--ppw-info-box-rule-color-neutral, #8C9778)) !important;
  border-radius: var(--ppw-info-box-radius, 0) !important;
  background: var(--ppw-info-box-bg, var(--ppw-event-panel-bg)) !important;
}

.single-ppw_event .ppw-event-single .ppw-event-pdf-box .ppw-eyebrow {
  margin: 0 0 1rem !important;
  color: var(--ppw-info-box-title-color, var(--ppw-text-color, #29311F)) !important;
}

.single-ppw_event .ppw-event-single .ppw-event-pdf-list {
  width: 100% !important;
}

.single-ppw_event .ppw-event-single .ppw-event-pdf-type,
.single-ppw_event .ppw-event-single .ppw-event-pdf-meta {
  color: var(--ppw-event-panel-text) !important;
}

/* Anmeldung: Das optionale Nachrichtenfeld braucht keine Höhe eines langen
 * Brieftextes. Die geringere Standardhöhe hält Formular und Erläuterung auf
 * Desktop deutlich besser im Gleichgewicht; vertikales Vergrössern bleibt
 * weiterhin möglich. */
.single-ppw_event .ppw-event-registration-form textarea[name="ppw-nachricht"] {
  height: 9rem !important;
  min-height: 9rem !important;
  resize: vertical !important;
}


/* Teilnahmeform bei hybriden Veranstaltungen: kompakte Pflichtauswahl.
 * Seit 1.0.133 werden Titel und Radiogruppe als explizite einzeilige Flex-Komponente
 * ausgegeben. Dadurch koennen globale CF7-Regeln wie width:100% auf dem
 * Form-Control-Wrapper keinen ungewollten Zeilenumbruch mehr erzwingen.
 * Auch auf 390 px bleibt die Zeile bewusst einzeilig. Die Typografie der
 * Optionen entspricht den Checkbox-/Hinweistexten des globalen
 * Formularsystems; nur der Feldtitel bleibt mit 600er Gewicht betont. */
/* Die fachliche Teilnahmeauswahl bildet als Ganzes genau einen Feldblock.
 * Die Auswahlzeile bleibt kompakt; die feldbezogene Rueckmeldung liegt
 * strukturell darunter und kann die Zeile nicht aufbrechen. */
.single-ppw_event .ppw-event-participation-field {
  display: block !important;
  width: 100% !important;
  max-width: none !important;
  grid-column: 1 / -1 !important;
  margin: 0 !important;
  padding: 0 !important;
}

.single-ppw_event .ppw-event-participation-choice {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 0 1rem !important;
  width: 100% !important;
  grid-column: 1 / -1 !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Contact Form 7 kann innerhalb einer Formulargruppe automatische BRs
 * erzeugen. In dieser kompakten Auswahlzeile sind sie rein strukturelles
 * Nebenmarkup und duerfen keinen Zeilenumbruch erzwingen. */
.single-ppw_event .ppw-event-participation-choice > br {
  display: none !important;
}

/* Defensive Fallback: Falls CF7 oder ein spaeterer Filter die beiden
 * Inline-Elemente erneut in einen Absatz legt, nimmt dieser Wrapper selbst
 * nicht am Layout teil. Seine Kinder bleiben damit Bestandteile derselben
 * Flexzeile. */
.single-ppw_event .ppw-event-participation-choice > p {
  display: contents !important;
}

.single-ppw_event .ppw-event-participation-choice > p > br {
  display: none !important;
}

.single-ppw_event .ppw-event-participation-choice-title {
  flex: 0 0 auto !important;
  white-space: nowrap !important;
  margin: 0 !important;
  padding: 0 !important;
  color: var(--ppw-form-note-color, var(--ppw-text-color, #29311F)) !important;
  font-family: var(--ppw-font-sans, "Inter", sans-serif) !important;
  font-size: var(--ppw-form-note-font-size, 1rem) !important;
  line-height: var(--ppw-form-note-line-height, 1.5) !important;
  font-weight: 600 !important;
  letter-spacing: var(--ppw-form-note-letter-spacing, 0) !important;
  text-transform: none !important;
}

.single-ppw_event .ppw-event-participation-choice > .wpcf7-form-control-wrap {
  display: flex !important;
  flex: 0 0 auto !important;
  flex-direction: column !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

.single-ppw_event .ppw-event-participation-choice .wpcf7-form-control.wpcf7-radio {
  display: inline-flex !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  width: auto !important;
  max-width: none !important;
  gap: 0 1.15rem !important;
  margin: 0 !important;
  padding: 0 !important;
  color: var(--ppw-form-note-color, var(--ppw-text-color, #29311F)) !important;
  font-family: var(--ppw-font-sans, "Inter", sans-serif) !important;
  font-size: var(--ppw-form-note-font-size, 1rem) !important;
  line-height: var(--ppw-form-note-line-height, 1.5) !important;
  font-weight: var(--ppw-form-note-font-weight, 400) !important;
  letter-spacing: var(--ppw-form-note-letter-spacing, 0) !important;
  text-transform: none !important;
}

.single-ppw_event .ppw-event-participation-choice .wpcf7-list-item {
  margin: 0 !important;
  padding: 0 !important;
}

.single-ppw_event .ppw-event-participation-choice .wpcf7-list-item > label {
  display: inline-flex !important;
  align-items: center !important;
  gap: 0.55rem !important;
  margin: 0 !important;
  padding: 0 !important;
  color: var(--ppw-form-note-color, var(--ppw-text-color, #29311F)) !important;
  font-family: var(--ppw-font-sans, "Inter", sans-serif) !important;
  font-size: var(--ppw-form-note-font-size, 1rem) !important;
  line-height: var(--ppw-form-note-line-height, 1.5) !important;
  font-weight: var(--ppw-form-note-font-weight, 400) !important;
  letter-spacing: var(--ppw-form-note-letter-spacing, 0) !important;
  text-transform: none !important;
  white-space: nowrap !important;
  cursor: pointer !important;
}

.single-ppw_event .ppw-event-participation-choice .wpcf7-list-item-label {
  color: inherit !important;
  font: inherit !important;
  letter-spacing: inherit !important;
  text-transform: none !important;
}

.single-ppw_event .ppw-event-participation-choice input[type="radio"] {
  flex: 0 0 auto !important;
  width: 1rem !important;
  min-width: 1rem !important;
  height: 1rem !important;
  margin: 0 !important;
  padding: 0 !important;
  accent-color: var(--ppw-primary, #2F3725) !important;
}

.single-ppw_event .ppw-event-participation-choice .wpcf7-not-valid-tip {
  display: block !important;
  width: 100% !important;
  margin-top: 0.45rem !important;
}


/* Version 1.0.79: Mehrtaegige Datumsbereiche bleiben im linken Datumsblock
 * als Einheit lesbar. Die kleinere Schrift gilt nur fuer echte Bereiche. */
.ppw-events-section .ppw-event-card-date--range .ppw-event-card-day {
  white-space: nowrap !important;
  font-size: clamp(1.7rem, 2.8vw, 2.35rem) !important;
  letter-spacing: -0.035em !important;
}


/* Version 1.0.141: Der permanente Kontaktweg-Hinweis behaelt bei fehlender
 * Kontaktangabe nur noch die semantische Fehlerklasse. Die komplette
 * Fehlertypografie wird websiteweit im Gesamt-CSS gesteuert. */


/* =========================================================
   1.0.129: Faktenraster ohne optionalen Anmeldeschluss
   Bei "Anmeldung moeglich" darf der Anmeldeschluss leer bleiben.
   Die dann verbleibenden fuenf Kernfakten werden ohne sichtbare Luecke
   auf die bestehende Rasterlogik verteilt.
   ========================================================= */
@media (min-width: 1501px) {
  .ppw-events-section .ppw-event-card-info-grid--facts-5 {
    grid-template-areas:
      "termin teilnahme ort"
      "kosten teilnehmerzahl teilnehmerzahl" !important;
  }
}

@media (min-width: 781px) and (max-width: 1500px) {
  .ppw-events-section .ppw-event-card-info-grid--facts-5 {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    grid-template-areas:
      "termin kosten"
      "teilnahme teilnehmerzahl"
      "ort ort" !important;
  }

  .ppw-events-section .ppw-event-card-info-grid--facts-5
    .ppw-event-card-info-group--ort {
    grid-column: 1 / -1 !important;
  }
}

@media (max-width: 780px) {
  .ppw-events-section .ppw-event-card-info-grid--facts-5 {
    grid-template-areas:
      "termin"
      "teilnahme"
      "ort"
      "kosten"
      "teilnehmerzahl" !important;
  }
}


/* =========================================================
   1.0.138: Veranstaltungsformular auf kanonischer CF7-Struktur

   Das globale Formularsystem steuert Validierung, Typografie und Abstaende.
   Das Veranstaltungsplugin definiert nur die fachliche Geometrie und Datenlogik
   der Teilnahmeauswahl. Formular-Lebenszyklus und Rueckmeldungen liegen zentral
   in PPW Formulare.
   ========================================================= */

/* Der Teilnahmeblock bleibt im CF7-Schema vorhanden, ist aber nur bei
 * hybriden Veranstaltungen sichtbar und validierungsrelevant. */
.single-ppw_event .ppw-event-registration-form
  .ppw-event-participation-field[hidden] {
  display: none !important;
}

.single-ppw_event .ppw-event-registration-form
  .ppw-event-participation-field > .ppw-form-validation-message {
  margin-top: var(--ppw-form-note-gap) !important;
}

.single-ppw_event .ppw-event-registration-form .ppw-event-submit--sending[disabled] {
  cursor: wait !important;
}

/* 1.0.161: strukturierte Buchungs- und Preisangaben */
.ppw-event-price-lines,
.ppw-event-price-line,
.ppw-event-price-note {
  display: block;
}

.ppw-event-price-line + .ppw-event-price-line {
  margin-top: 0.12rem;
}

.ppw-event-price-note {
  margin-top: 0.35rem;
  color: var(--ppw-text-color, #29311F);
  font-size: 0.93em;
  line-height: 1.5;
}

.ppw-event-schedule-status {
  display: block;
  margin-top: 0.18rem;
  font-size: 0.9em;
  line-height: 1.4;
  font-weight: 500;
}

.ppw-event-schedule-status--full,
.ppw-event-schedule-status--cancelled {
  color: var(--ppw-event-status-full, #8a5a52);
}

.ppw-event-booking-field[hidden],
.ppw-event-booking-ui[hidden],
.ppw-event-booking-terms[hidden],
.ppw-event-booking-term-participation[hidden],
.ppw-event-booking-total[hidden] {
  display: none !important;
}

.ppw-event-booking-field {
  margin: 0 !important;
}

.ppw-event-booking-scope,
.ppw-event-booking-terms {
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
}

/* Die dynamisch erzeugten Buchungstexte folgen exakt der bestehenden
 * Formular-Typografie. Insbesondere darf kein Browser-/Legend-Tracking oder
 * eine globale Grossschreibung in diese Komponente hineinvererbt werden. */
.ppw-event-booking-scope legend,
.ppw-event-booking-title,
.ppw-event-booking-scope label,
.ppw-event-booking-term,
.ppw-event-booking-term-select,
.ppw-event-booking-term-participation,
.ppw-event-booking-term-participation-title,
.ppw-event-booking-term-participation-options label,
.ppw-event-booking-price,
.ppw-event-booking-status,
.ppw-event-booking-total {
  color: var(--ppw-form-note-color, var(--ppw-text-color, #29311f)) !important;
  font-family: var(--ppw-font-sans, "Inter", sans-serif) !important;
  font-size: var(--ppw-form-note-font-size, 1rem) !important;
  line-height: var(--ppw-form-note-line-height, 1.5) !important;
  font-weight: var(--ppw-form-note-font-weight, 400) !important;
  letter-spacing: var(--ppw-form-note-letter-spacing, 0) !important;
  text-transform: none !important;
}

.ppw-event-booking-scope legend,
.ppw-event-booking-title,
.ppw-event-booking-term-participation-title,
.ppw-event-booking-total-label {
  font-weight: 600 !important;
}

.ppw-event-booking-scope legend,
.ppw-event-booking-title {
  display: block !important;
  margin: 0 0 0.6rem !important;
}

.ppw-event-booking-scope label {
  display: grid !important;
  grid-template-columns: auto minmax(0, 1fr) !important;
  column-gap: 0.55rem !important;
  align-items: start !important;
  margin: 0 0 0.45rem !important;
  padding: 0 !important;
  cursor: pointer !important;
}

.ppw-event-booking-scope input,
.ppw-event-booking-term-select > input,
.ppw-event-booking-term-participation-options input {
  flex: 0 0 auto !important;
  width: 1rem !important;
  min-width: 1rem !important;
  height: 1rem !important;
  margin: 0.2rem 0 0 !important;
  padding: 0 !important;
  accent-color: var(--ppw-primary, #2f3725) !important;
}

.ppw-event-booking-terms {
  margin-top: 0.8rem !important;
  padding-top: 0.8rem !important;
  border-top: 1px solid var(--ppw-border-soft, #d7d9cf) !important;
}

.ppw-event-booking-term {
  display: block !important;
  margin: 0 !important;
  padding: 0.55rem 0 !important;
}

.ppw-event-booking-term + .ppw-event-booking-term {
  border-top: 1px solid var(--ppw-border-soft, #d7d9cf) !important;
}

.ppw-event-booking-term-select {
  display: grid !important;
  grid-template-columns: auto minmax(0, 1fr) !important;
  column-gap: 0.55rem !important;
  row-gap: 0.12rem !important;
  align-items: start !important;
  margin: 0 !important;
  padding: 0 !important;
  cursor: pointer !important;
}

.ppw-event-booking-term-main {
  grid-column: 2 !important;
}

.ppw-event-booking-price,
.ppw-event-booking-status {
  grid-column: 2 !important;
  display: block !important;
  margin: 0 !important;
}

.ppw-event-booking-status {
  color: var(--ppw-event-status-full, #8a5a52) !important;
  font-weight: 500 !important;
}

.ppw-event-booking-term-participation {
  margin: 0.45rem 0 0 1.55rem !important;
  padding: 0 !important;
}

.ppw-event-booking-term-participation-title {
  display: block !important;
  margin: 0 0 0.28rem !important;
}

.ppw-event-booking-term-participation-options {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 0.35rem 1.15rem !important;
  margin: 0 !important;
  padding: 0 !important;
}

.ppw-event-booking-term-participation-options label {
  display: inline-flex !important;
  align-items: flex-start !important;
  gap: 0.5rem !important;
  width: auto !important;
  margin: 0 !important;
  padding: 0 !important;
  cursor: pointer !important;
}

.ppw-event-booking-total {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: baseline !important;
  gap: 0.35rem 0.65rem !important;
  margin: 0.8rem 0 0 !important;
  padding: 0.8rem 0 0 !important;
  border-top: 1px solid var(--ppw-border-soft, #d7d9cf) !important;
}

.ppw-event-booking-total strong {
  color: inherit !important;
  font: inherit !important;
  font-weight: 600 !important;
  letter-spacing: inherit !important;
  text-transform: none !important;
}

.ppw-event-booking-term--disabled {
  opacity: 0.72 !important;
}

.ppw-event-booking-field.ppw-form-field-invalid .ppw-event-booking-scope,
.ppw-event-booking-field.ppw-form-field-invalid .ppw-event-booking-terms {
  border-left: 3px solid var(--ppw-form-error-color, #9a4f43) !important;
  padding-left: 0.75rem !important;
}

/* 1.0.196: Bei hybriden Einzelterminen wird nur die tatsaechlich fehlende
 * Teilnahmeform markiert. Vollstaendig definierte und nicht ausgewaehlte
 * Termine bleiben optisch neutral. */
.ppw-event-booking-term-participation--invalid,
.ppw-event-booking-term-participation.ppw-form-field-invalid {
  border-left: 3px solid var(--ppw-form-error-color, #9a4f43) !important;
  padding-left: 0.75rem !important;
}

/* 1.0.197: Jeder unvollstaendige Hybrid-Einzeltermin erhaelt seine eigene
 * feldbezogene Meldung. Typografie und Fehlerfarbe bleiben im globalen
 * Formularsystem definiert; lokal wird nur der Abstand zum Optionsblock gesetzt. */
.single-ppw_event .ppw-event-registration-form
  .ppw-event-booking-term-participation > .ppw-event-booking-term-validation:not([hidden]) {
  display: block;
  margin-top: 0.35rem !important;
  margin-bottom: 0 !important;
}


/* 1.0.168: Die Buchungsfehlermeldung gehoert optisch direkt zur dynamischen
 * Termin-/Umfangsauswahl. Das globale Formularsystem bleibt unveraendert; nur
 * der Abstand dieser veranstaltungsspezifischen Rueckmeldung wird lokal enger. */
.single-ppw_event .ppw-event-registration-form
  .ppw-event-booking-field > .ppw-form-validation-message,
.single-ppw_event .ppw-event-registration-form
  [data-ppw-event-booking-field="1"] > .ppw-form-validation-message,
.single-ppw_event .ppw-event-registration-form
  .ppw-event-booking-ui > .ppw-form-validation-message {
  margin-top: 0.45rem !important;
  margin-bottom: 0 !important;
}

/* =========================================================
   1.0.172: Kontakt-Hinweise einheitlich am Feld ausgerichtet
   =========================================================
   Neutrale Hinweise und Fehler verwenden dieselbe Ausrichtung. Bei Vor-Ort-
   Teilnahme bezieht sich der Text auf beide Kontaktfelder. Bei Online-
   Teilnahme steht Hinweis oder Fehler linksbuendig direkt unter der E-Mail-
   Spalte. Auf schmalen Breiten nutzt der Text die volle Formularbreite. */
.single-ppw_event .ppw-event-registration-form .ppw-contact-form-contact-note {
  padding: 0 !important;
  border: 0 !important;
  box-shadow: none !important;
  text-align: left !important;
}

.single-ppw_event .ppw-event-registration-form .ppw-contact-form-contact-note--online {
  width: calc((100% - var(--ppw-form-field-gap, 1rem)) / 2) !important;
  max-width: none !important;
  margin-left: auto !important;
  text-align: left !important;
}

@media (max-width: 700px) {
  .single-ppw_event .ppw-event-registration-form .ppw-contact-form-contact-note--online {
    width: 100% !important;
    margin-left: 0 !important;
  }
}

/* Native Radio-/Checkbox-Rahmen werden je nach Browser und Betriebssystem
   weich gezeichnet. In der Veranstaltungsanmeldung verwenden wir deshalb
   bewusst eigene 1-px-Konturen. Groesse und Abstaende bleiben unveraendert;
   nur Kontur, Auswahlmarke und Tastaturfokus werden eindeutig definiert. */
.single-ppw_event .ppw-event-registration-form input[type="radio"],
.single-ppw_event .ppw-event-registration-form input[type="checkbox"] {
  -webkit-appearance: none !important;
  appearance: none !important;
  width: 1rem !important;
  min-width: 1rem !important;
  height: 1rem !important;
  min-height: 1rem !important;
  padding: 0 !important;
  border: 1px solid var(--ppw-primary, #2F3725) !important;
  background-color: var(--ppw-bg, #FFFDF9) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  box-shadow: none !important;
  box-sizing: border-box !important;
  accent-color: auto !important;
  cursor: pointer !important;
}

.single-ppw_event .ppw-event-registration-form input[type="radio"] {
  border-radius: 50% !important;
}

.single-ppw_event .ppw-event-registration-form input[type="radio"]:checked {
  background-color: var(--ppw-primary, #2F3725) !important;
  box-shadow: inset 0 0 0 3px var(--ppw-bg, #FFFDF9) !important;
}

.single-ppw_event .ppw-event-registration-form input[type="checkbox"] {
  border-radius: 0 !important;
}

.single-ppw_event .ppw-event-registration-form input[type="checkbox"]:checked {
  background-color: var(--ppw-primary, #2F3725) !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.2 8.1 6.4 11.2 12.8 4.8' fill='none' stroke='%23FFFDF9' stroke-width='2' stroke-linecap='square' stroke-linejoin='miter'/%3E%3C/svg%3E") !important;
  background-size: 0.78rem 0.78rem !important;
}

.single-ppw_event .ppw-event-registration-form input[type="radio"]:focus-visible,
.single-ppw_event .ppw-event-registration-form input[type="checkbox"]:focus-visible {
  outline: 2px solid var(--ppw-secondary, #6F7957) !important;
  outline-offset: 2px !important;
}

.single-ppw_event .ppw-event-registration-form input[type="radio"]:disabled,
.single-ppw_event .ppw-event-registration-form input[type="checkbox"]:disabled {
  cursor: default !important;
  opacity: 0.55 !important;
}


/* =========================================================
   1.0.175: E-Mail als verbindlicher Kontaktweg und Statusboxen
   =========================================================
   Die Webanmeldung benoetigt immer eine E-Mail-Adresse. E-Mail und Hinweis
   erhalten deshalb eine eigene vollbreite Einheit; die optionale Telefonnummer
   folgt darunter. Formularweite Fehler nutzen dieselbe Boxsprache wie Erfolg,
   aber mit der bestehenden Fehlerfarbe. */
.single-ppw_event .ppw-event-registration-form .ppw-contact-form-contact-group {
  row-gap: var(--ppw-form-field-gap, 1rem) !important;
}

.single-ppw_event .ppw-event-registration-form .ppw-contact-form-email-block {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) !important;
  row-gap: var(--ppw-form-field-note-gap, 0.45rem) !important;
  width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

.single-ppw_event .ppw-event-registration-form .ppw-contact-form-contact-note {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  text-align: left !important;
}

.single-ppw_event .ppw-event-registration-form .ppw-contact-form-contact-note a {
  color: var(--ppw-link-text, var(--ppw-primary, #2F3725)) !important;
  font: inherit !important;
  text-decoration-line: underline !important;
  text-decoration-thickness: 1px !important;
  text-underline-offset: 0.2em !important;
}

.single-ppw_event .ppw-event-registration-form .ppw-contact-form-contact-note a:hover,
.single-ppw_event .ppw-event-registration-form .ppw-contact-form-contact-note a:focus-visible {
  color: var(--ppw-secondary, #6F7957) !important;
}

/* Warteliste: Preisangaben sind Orientierung, keine Buchungszusage. */
.ppw-event-booking-waiting-note {
  margin: 0.7rem 0 0 !important;
  font-size: 0.92rem !important;
  line-height: 1.5 !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
  color: var(--ppw-text, #29311F) !important;
}
