/* PPW Beiträge - single article fine tuning */

body.single-post .ppw-article {
    --ppw-article-rule-color: rgba(47, 58, 39, 0.20);
    --ppw-article-section-gap: clamp(2.75rem, 4.5vw, 3.75rem);
    --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);
    margin-bottom: 0;
    padding-bottom: 0 !important;
}


/* Der Lead im Einzelbeitrag bleibt vollständig sichtbar, bekommt auf großen
   Viewports aber eine ruhigere Zeilenlänge. Dadurch entsteht zwischen Titel
   und Beitragsbild ein harmonischerer, besser lesbarer Textblock. */
body.single-post .ppw-editorial-single-header .ppw-editorial-single-lead {
    width: 100%;
    max-width: 54rem !important;
    text-wrap: pretty;
}


/* Bildlose Einzelbeitraege sind bewusst textorientiert. Ohne das grosse
   Beitragsbild fehlt der visuelle Uebergang zwischen breitem Kopf und
   Lesespalte. Deshalb teilen sich Kopf, Beitragsart und Artikeltext in diesem
   Sonderfall dieselbe linke Achse. Das Layout mit Beitragsbild bleibt
   unveraendert. */
body.single-post .ppw-article--no-featured-image .ppw-editorial-single-header {
    width: 100%;
    max-width: var(--ppw-article-body-width);
    margin-left: auto !important;
    margin-right: auto !important;
    margin-bottom: clamp(1.35rem, 2.4vw, 1.75rem) !important;
}

body.single-post .ppw-article--no-featured-image .ppw-editorial-single-header .ppw-editorial-single-lead {
    max-width: none !important;
}

body.single-post .ppw-article--no-featured-image .ppw-article-format-meta {
    margin-top: 0 !important;
    margin-bottom: 1.65rem !important;
}

body.single-post .ppw-article-body > h2 {
    margin-top: clamp(2.55rem, 4vw, 3.25rem);
    margin-bottom: 0.72rem;
    text-wrap: balance;
}

body.single-post .ppw-article-body > p,
body.single-post .ppw-article-body .ppw-text {
    text-wrap: pretty;
    -webkit-hyphens: none;
    hyphens: none;
    overflow-wrap: break-word;
}

body.single-post .ppw-article-body > p + p {
    margin-top: var(--ppw-article-paragraph-gap);
}


/* -------------------------------------------------------------------------
   Bilder im redaktionellen Inhalt
   -------------------------------------------------------------------------
   Die drei aktuell angebotenen PPW-Bildbausteine folgen einem gemeinsamen Komponentenvertrag:
   - Die äußere PPW-Gruppe belegt immer exakt die normale Lesespaltenbreite.
   - Gutenberg-/Theme-Layouts dürfen innerhalb dieser Gruppe keine zweite,
     schmalere Inhaltsbreite erzeugen.
   - Nur das Bild selbst bestimmt bei den Varianten seine eigene Breite.
   - Links/rechts umflossene Bildabschnitte gehören typografisch zum normalen
     Fließtext und verwenden deshalb exakt den normalen Absatzrhythmus.
 */
body.single-post .ppw-article-body .wp-block-image {
    margin-top: clamp(1.8rem, 3vw, 2.35rem) !important;
    margin-bottom: clamp(1.9rem, 3vw, 2.45rem) !important;
}

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

/* Optionale Bildunterschrift. Sie gehört unmittelbar zum Bild und wird
   deshalb ohne zusätzliche Trennlinie als ruhige Metaebene gesetzt.
   Ab 1.4.30 wird die Caption ausdrücklich als normaler Block über die volle
   Breite ihrer Bildfigur geführt. WordPress/Core kann bei ausgerichteten
   Bildfiguren sonst eine table-caption-Rolle beibehalten, die nach dem
   responsiven Aufheben des Floats auf Min-Content-Breite schrumpfen kann. */
body.single-post .ppw-article-body .wp-block-image figcaption,
body.single-post .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;
}

/* ---------------------------------------------------------------------
   Gemeinsame Struktur aller PPW-Bildbausteine
   ---------------------------------------------------------------------
   Group-Blöcke sind in WordPress häufig "constrained" und können Kinder auf
   die Theme-contentSize begrenzen. Die PPW-Gruppe ist dagegen bereits selbst
   Teil der schmalen Artikel-Lesespalte. Innerhalb dieses Bausteins darf daher
   keine zweite Inhaltsbegrenzung stattfinden.
 */
body.single-post .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;
}

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

body.single-post .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;
}

/* Aktuelle Flow-Gruppen benötigen diese Neutralisierung normalerweise nicht.
   Sie hält aber bereits eingefügte ältere/constrained Patterns kompatibel und
   schützt gegen Theme-Regeln, die verschachtelte Gruppen erneut zentrieren. */
body.single-post .ppw-article-body .ppw-image-layout.is-layout-constrained > :where(:not(.alignfull)),
body.single-post .ppw-article-body .ppw-image-layout.wp-block-group-is-layout-constrained > :where(:not(.alignfull)),
body.single-post .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;
}

/* Gutenberg blockGap darf in den Umlaufgruppen keinen zusätzlichen
   Modulabstand erzeugen. Den vertikalen Rhythmus steuert PPW unten explizit. */
body.single-post .ppw-article-body .ppw-image-layout--float-left > * + *,
body.single-post .ppw-article-body .ppw-image-layout--float-right > * + *,
body.single-post .ppw-article-body .ppw-image-layout--float-left > .wp-block-group__inner-container > * + *,
body.single-post .ppw-article-body .ppw-image-layout--float-right > .wp-block-group__inner-container > * + * {
    margin-block-start: 0 !important;
}

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

/* 1.4.30: Gutenberg kann einen core/image-Block je nach gespeichertem
   Blockstand als äußeren .wp-block-image-Wrapper mit einem inneren figure
   ausgeben. Trägt dieses innere figure noch eine Core-Ausrichtung wie
   .alignleft oder .alignright, bringt WordPress eigene Float-/Margin-Werte
   ein. Die PPW-Gruppe ist jedoch alleinige Autorität für Bildposition und
   Textumlauf. Deshalb wird nur ein tatsächlich IN .wp-block-image liegendes
   figure neutralisiert. Ist .wp-block-image selbst das figure, greift diese
   Regel nicht und die normale PPW-Floatlogik bleibt unverändert. */
body.single-post .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 über die gesamte Textbreite.
   Der Bildblock bleibt auf derselben 780-px-Lesespalte wie der Beitragstext
   und erzeugt damit keine zweite, breitere Inhaltsachse. Das sichtbare Bild
   wird verbindlich im Format 16:9 dargestellt. */
body.single-post .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;
}

body.single-post .ppw-article-body .ppw-image-layout--full .wp-block-image,
body.single-post .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;
}

body.single-post .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: Bereits vorhandene kompakt zentrierte Bilder bleiben
   unveraendert lesbar. Der Baustein wird ab 1.4.22 jedoch nicht mehr als neues
   Gutenberg-Pattern angeboten. */
body.single-post .ppw-article-body .ppw-image-layout--centered {
    margin-top: var(--ppw-image-block-gap) !important;
    margin-bottom: var(--ppw-image-block-gap) !important;
}

body.single-post .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;
}

body.single-post .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 Absatz bleibt
   ein normaler Block über die vollständige Lesespaltenbreite. Seine Zeilen
   fließen um das floatende Bild und reichen dabei bis zur äußeren Spaltenkante. */
body.single-post .ppw-article-body .ppw-image-layout--float-left,
body.single-post .ppw-article-body .ppw-image-layout--float-right {
    margin-top: var(--ppw-article-paragraph-gap) !important;
    margin-bottom: 0 !important;
}

/* Direkt nach einer Zwischenüberschrift entspricht die Gruppe dem ersten
   Absatz; dort kommt kein zusätzlicher Absatzabstand hinzu. */
body.single-post .ppw-article-body > h2 + .ppw-image-layout--float-left,
body.single-post .ppw-article-body > h2 + .ppw-image-layout--float-right {
    margin-top: 0 !important;
}

/* Vor einem Umlaufbaustein wird der eventuelle Theme-Unterrand des vorherigen
   Absatzes neutralisiert. Damit ist der sichtbare Abstand exakt der gleiche
   wie zwischen zwei normalen Textabsätzen. */
body.single-post .ppw-article-body > p:has(+ .ppw-image-layout--float-left),
body.single-post .ppw-article-body > p:has(+ .ppw-image-layout--float-right) {
    margin-bottom: 0 !important;
}

body.single-post .ppw-article-body .ppw-image-layout--float-left .wp-block-image,
body.single-post .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;
}

body.single-post .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;
}

body.single-post .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;
}

body.single-post .ppw-article-body .ppw-image-layout--float-left .wp-block-image img,
body.single-post .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;
}

/* Textblöcke in der Umlaufgruppe dürfen keinerlei contentSize-/wideSize-
   Begrenzung oder horizontales Padding erben. width:auto ist absichtlich:
   so bleibt der Absatz ein normaler Block, dessen Zeilen um den Float fließen. */
body.single-post .ppw-article-body .ppw-image-layout--float-left p,
body.single-post .ppw-article-body .ppw-image-layout--float-right p,
body.single-post .ppw-article-body .ppw-image-layout--float-left ul,
body.single-post .ppw-article-body .ppw-image-layout--float-right ul,
body.single-post .ppw-article-body .ppw-image-layout--float-left ol,
body.single-post .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;
}

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

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

/* Nach dem Umlaufbaustein beginnt ein normaler Folgeabsatz mit exakt dem
   gleichen Abstand wie p + p. Vor einer H2 gilt weiterhin deren größerer
   Abschnittsabstand und wird hier nicht überschrieben. */
body.single-post .ppw-article-body > .ppw-image-layout--float-left + p,
body.single-post .ppw-article-body > .ppw-image-layout--float-right + p {
    margin-top: var(--ppw-article-paragraph-gap) !important;
}

body.single-post .ppw-article-body > .ppw-image-layout--float-left + .ppw-image-layout--float-left,
body.single-post .ppw-article-body > .ppw-image-layout--float-left + .ppw-image-layout--float-right,
body.single-post .ppw-article-body > .ppw-image-layout--float-right + .ppw-image-layout--float-left,
body.single-post .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 der Textumlauf aufgehoben. Die Gruppe bleibt
   strukturell gleich; nur die Abbildung wird wieder ein normaler Block. */
@media (max-width: 900px) {
    body.single-post .ppw-article {
        --ppw-image-compact-width: min(82%, 28rem);
    }

    /* 1.4.30: Beim Wechsel vom Float in die gestapelte Darstellung wird die
       komplette Inline-Achse auf die volle Lesespaltenbreite zurückgesetzt.
       Damit können Gutenberg-/Theme-Regeln weder logische Inline-Margins noch
       eine abweichende Inline-Größe des früher ausgerichteten Bildes erhalten. */
    body.single-post .ppw-article-body .ppw-image-layout--float-left,
    body.single-post .ppw-article-body .ppw-image-layout--float-right,
    body.single-post .ppw-article-body .ppw-image-layout--float-left > .wp-block-group__inner-container,
    body.single-post .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;
    }

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

    body.single-post .ppw-article-body .ppw-image-layout--float-left .wp-block-image,
    body.single-post .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;
    }

    body.single-post .ppw-article-body .ppw-image-layout--float-left .wp-block-image img,
    body.single-post .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) {
    body.single-post .ppw-article {
        --ppw-image-compact-width: 100%;
    }
}

/* -------------------------------------------------------------------------
   Redaktionelle Hinweis- und Dokumentboxen
   -------------------------------------------------------------------------
   Beide Module folgen derselben Grundkomponente. Gutenberg kann bei einer
   Hinweis-Group einen inneren constrained Container erzeugen; dieser wird
   hier neutralisiert, damit Hinweis und PDF-Modul exakt dieselben sichtbaren
   Innenabstände und dieselbe linke/rechte Textkante verwenden.
 */
body.single-post .ppw-article-note,
body.single-post .ppw-article-document,
body.single-post .ppw-article-documents {
    width: 100%;
    max-width: var(--ppw-article-body-width);
    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;
}

body.single-post .ppw-article-note {
    margin-top: var(--ppw-article-section-gap) !important;
    margin-bottom: 0 !important;
}

body.single-post .ppw-article-note > .wp-block-group__inner-container {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
}

body.single-post .ppw-article-note.is-layout-constrained > :where(:not(.alignfull)),
body.single-post .ppw-article-note.wp-block-group-is-layout-constrained > :where(:not(.alignfull)),
body.single-post .ppw-article-note > .wp-block-group__inner-container > :where(:not(.alignfull)) {
    margin-right: 0 !important;
    margin-left: 0 !important;
}

body.single-post .ppw-article-note > .ppw-eyebrow,
body.single-post .ppw-article-note > .wp-block-group__inner-container > .ppw-eyebrow {
    margin: 0 0 var(--ppw-info-box-title-gap, 0.8rem) !important;
    color: var(--ppw-info-box-title-color, var(--ppw-text-color, #29311F)) !important;
}

body.single-post .ppw-article-note > .ppw-text,
body.single-post .ppw-article-note > .wp-block-group__inner-container > .ppw-text {
    margin: 0 !important;
    max-width: 42rem;
    font-size: var(--ppw-text-font-size) !important;
    line-height: var(--ppw-text-line-height) !important;
}

body.single-post .ppw-article-footer {
    margin-top: clamp(2.7rem, 4vw, 3.6rem) !important;
    padding: 0 !important;
    border: 0 !important;
}

/*
 * Ruhiger redaktioneller Abschluss: Wenn der Artikel direkt mit normalem
 * Inhalt endet, markiert eine kurze Linie den Wechsel zum persönlichen
 * Austausch. Steht unmittelbar davor bereits eine Hinweis- oder PDF-Box,
 * übernimmt diese die visuelle Trennung und die Linie wird weggelassen.
 */
body.single-post .ppw-article-footer::before {
    content: "";
    display: block;
    width: 4.75rem;
    max-width: 100%;
    margin: 0 0 clamp(1.5rem, 2.2vw, 1.8rem);
    border-top: 1px solid var(--ppw-article-rule-color);
}

body.single-post .ppw-article-document + .ppw-article-footer::before,
body.single-post .ppw-article-documents + .ppw-article-footer::before,
body.single-post .ppw-article-body:has(> .ppw-article-note:last-child) + .ppw-article-footer::before {
    display: none;
}

body.single-post .ppw-article-contact {
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
}

body.single-post .ppw-article-contact + .ppw-article-contact {
    margin-top: clamp(2.6rem, 4vw, 3.35rem) !important;
}

body.single-post .ppw-article-contact .ppw-eyebrow {
    margin: 0 0 0.55rem !important;
}

body.single-post .ppw-article-contact-title {
    margin: 0 0 0.55rem !important;
    text-wrap: balance;
}

body.single-post .ppw-article-contact .ppw-text {
    margin: 0 !important;
    max-width: 42rem;
}

/* Der Abstand vom Kontakttext zum Link stammt ausschliesslich aus dem
   globalen Inhaltslink-Rhythmus. */
body.single-post .ppw-article-contact .ppw-content-link {
    margin-top: var(--ppw-text-link-gap) !important;
    margin-block-start: var(--ppw-text-link-gap) !important;
    margin-bottom: 0 !important;
    margin-block-end: 0 !important;
}

body.single-post .ppw-article-footer-actions {
    position: relative;
    margin: clamp(3.1rem, 5vw, 4rem) 0 0 !important;
    margin-block-start: clamp(3.1rem, 5vw, 4rem) !important;
    margin-inline: 0 !important;
    padding: 1.2rem 0 0 !important;
    padding-block-start: 1.2rem !important;
    padding-inline: 0 !important;
    border-top: 1px solid var(--ppw-article-rule-color) !important;
    border-right: 0 !important;
    border-bottom: 0 !important;
    border-left: 0 !important;
    margin-bottom: clamp(2.5rem, 3vw, 3rem) !important;
}

body.single-post .ppw-article-footer-actions > .ppw-content-link {
    margin: 0 !important;
    margin-block: 0 !important;
    margin-inline: 0 !important;
    padding-top: 0 !important;
}

body.single-post .ppw-article-footer-actions > button.ppw-copy-link::-moz-focus-inner {
    padding: 0 !important;
    border: 0 !important;
}

body.single-post .ppw-copy-link-status {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}


body.single-post .inside-article:has(.ppw-article) > footer.entry-meta {
    display: none !important;
    margin: 0 !important;
    padding: 0 !important;
}

body.single-post .inside-article:has(.ppw-article) > footer.entry-meta .cat-links,
body.single-post .inside-article:has(.ppw-article) > footer.entry-meta .tags-links {
    display: none !important;
}

body.single-post .entry-content:has(> .ppw-article),
body.single-post .inside-article:has(.ppw-article) {
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
}

body.single-post .site-content:has(.ppw-article) {
    padding-bottom: 0 !important;
}

/* Die Abschlussaktionen verwenden die globale .ppw-inline-link-group.
   Das Plugin definiert hier bewusst keine eigene responsive Grid-, Gap- oder
   Umbruchlogik mehr. Dadurch bleiben Abstand und Wrapping bei allen Breiten
   zentral im Gesamt-CSS gesteuert. */

body.single-post .ppw-article-format-meta {
    width: 100%;
    max-width: var(--ppw-article-image-width, var(--ppw-editorial-single-width, 1120px));
    margin: 0 auto 2.1rem !important;
    color: var(--ppw-primary);
    font-family: var(--ppw-font-sans);
    font-size: 0.95rem;
    line-height: 1.5;
    font-weight: 500;
    letter-spacing: 0.01em;
    text-align: center;
}

/* Nach einem Beitragsbild darf die redaktionelle Meta-Zeile etwas näher an
   das Bild rücken. Ohne Beitragsbild bleibt dagegen ein normaler Abstand zum
   Kopfbereich erhalten. */
body.single-post .ppw-article-featured-image + .ppw-article-format-meta {
    margin-top: -1.15rem !important;
}

/* Die Artikelvariante ergaenzt nur den vertikalen Rhythmus. Breite,
   Innenabstaende, Hintergrund, Linie und die Desktop-Positionierung stammen
   ausschliesslich aus der globalen .ppw-toc-Komponente. Dadurch verhaelt sich
   das Inhaltsverzeichnis wie auf Datenschutz- und Veranstaltungsbedingungen. */
body.single-post .ppw-article-toc {
    margin-top: 0 !important;
    margin-bottom: clamp(2.7rem, 4vw, 3.4rem) !important;
    box-sizing: border-box;
}

/* Kurze Artikelverzeichnisse bleiben zentriert in der normalen Lesespalte. */
body.single-post .ppw-article-toc.ppw-toc--single {
    max-width: var(--ppw-article-body-width) !important;
    margin-right: auto !important;
    margin-left: auto !important;
}

/* Bei der breiten Zweispaltenvariante darf kein zusaetzliches auto-Margin die
   globale relative Zentrierung ein zweites Mal verschieben. */
body.single-post .ppw-article-toc.ppw-toc--two-column {
    margin-right: 0 !important;
    margin-left: 0 !important;
}

/* Das Fachartikel-Verzeichnis nutzt dieselbe globale TOC-Komponente wie
   Datenschutzerklaerung und Veranstaltungsbedingungen. */
body.single-post .ppw-article-toc > .ppw-eyebrow {
    margin-top: 0 !important;
    margin-right: 0 !important;
    margin-bottom: var(--ppw-toc-title-gap, 1.35rem) !important;
    margin-left: 0 !important;
    color: var(--ppw-info-box-title-color, var(--ppw-text-color, #29311F)) !important;
}

body.single-post .ppw-article-toc .ppw-toc-list {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
    color: var(--ppw-text-color) !important;
    font-family: var(--ppw-font-sans) !important;
    font-size: var(--ppw-toc-font-size, var(--ppw-content-link-font-size)) !important;
    line-height: var(--ppw-toc-line-height, 1.5) !important;
    font-weight: var(--ppw-toc-font-weight, var(--ppw-content-link-font-weight)) !important;
    letter-spacing: var(--ppw-toc-letter-spacing, var(--ppw-content-link-letter-spacing)) !important;
}

body.single-post .ppw-article-toc .ppw-toc-list li {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
}

body.single-post .ppw-article-toc .ppw-toc-list li::marker {
    content: "" !important;
}

body.single-post .ppw-article-toc .ppw-toc-list li + li {
    margin-top: var(--ppw-toc-item-gap, 0.72rem) !important;
}

/* Linkfarben, Unterstreichung sowie Hover- und Fokuszustände des
   Inhaltsverzeichnisses stammen vollständig aus dem globalen Website-CSS.
   Das Plugin steuert hier nur Struktur und Typografie der Liste. */

body.single-post .ppw-article--fachartikel .ppw-article-body h2[id] {
    scroll-margin-top: clamp(7rem, 9vw, 9rem);
}

body.single-post .ppw-article-documents {
    --ppw-article-panel-bg: var(--ppw-info-box-bg, #faf8f4);
    --ppw-article-panel-border: rgba(47, 55, 37, 0.14);
    --ppw-article-panel-text: var(--ppw-primary, #2f3725);
    width: 100% !important;
    max-width: var(--ppw-article-body-width) !important;
    margin: clamp(3rem, 5vw, 4rem) auto 0 !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-article-panel-bg) !important;
    box-shadow: none !important;
}

body.single-post .ppw-article-documents > .ppw-eyebrow {
    margin: 0 0 1rem !important;
    color: var(--ppw-info-box-title-color, var(--ppw-text-color, #29311F)) !important;
}

/* Die Dokumente verwenden die globale Zeilenstruktur der Informationsbox.
   Pluginseitig bleiben nur die semantischen Klassen erhalten; Geometrie,
   Trennlinien und Responsive-Verhalten stammen aus .ppw-info-box-*. */
body.single-post .ppw-article-document-list {
    width: 100% !important;
}

body.single-post .ppw-article-document-type,
body.single-post .ppw-article-document-description,
body.single-post .ppw-article-document-size {
    color: var(--ppw-article-panel-text) !important;
}

/* Alte Einzel-PDF-Klasse bleibt fuer manuell gespeicherte Altfragmente
   gestuetzt. Neue Plugin-Ausgaben verwenden ausschliesslich das Raster oben. */
body.single-post .ppw-article-document {
    margin: clamp(3rem, 5vw, 4rem) auto 0 !important;
}

body.single-post .ppw-article-document .ppw-eyebrow {
    margin: 0 0 0.8rem !important;
}

body.single-post .ppw-article-document .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;
}

body.single-post .ppw-article-document .ppw-text {
    max-width: 42rem;
    margin: 0 !important;
}

/* Auch in der Dokumentkomponente gilt der websiteweite Text-Link-Abstand. */
body.single-post .ppw-article-document .ppw-content-link {
    margin-top: var(--ppw-text-link-gap) !important;
    margin-block-start: var(--ppw-text-link-gap) !important;
    margin-bottom: 0 !important;
    margin-block-end: 0 !important;
}

body.single-post .ppw-article--dokumentation .ppw-article-body {
    margin-bottom: 0;
}

@media (max-width: 640px) {
    body.single-post .ppw-article-featured-image + .ppw-article-format-meta {
        margin-top: -0.65rem !important;
    }

    body.single-post .ppw-article-toc,
    body.single-post .ppw-article-note,
    body.single-post .ppw-article-document,
    body.single-post .ppw-article-documents {
        padding-right: 1.15rem !important;
        padding-left: 1.15rem !important;
    }
}
