/*
Theme Name: NRV Andreaskreuz
Theme URI: https://www.nrv.de
Author: Teil Zwei UG für NRV r.V.
Description: Block-Theme für den Norddeutschen Regatta-Verein r.V. Umsetzung des Gestaltungskonzepts vom 15.10.2026 (Übergabe Jasmine Seibold, 117 Artboards im Design-Canvas): Grund weiß, Navy #0E2A4F als Text- und Strukturfarbe, NRV-Rot als sparsamer Akzent, Trennung über Linien statt Flächen, Ecken durchgehend eckig. Auf Lesbarkeit ausgelegt – hohe Kontraste, große Klickflächen. Schriften Cormorant Garamond und Manrope, lokal ausgeliefert (DSGVO).
Version: 3.69.0
Requires at least: 6.6
Tested up to: 7.0
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: nrv-andreaskreuz
Tags: block-theme, full-site-editing, accessibility-ready, news, two-columns
*/

/* ==========================================================================
   Farbpalette – Stand 16.10.2026 (Theme v3.0.0)

   Grundlage sind die 117 Artboards des Design-Canvas, ausgezählt statt
   geschätzt: #0E2A4F 5024x, #FFFFFF 3139x, #DCE3EC 2774x, #EA2127 973x,
   #55677F 287x. Die Spezifikation nennt fünf Farben, die Entwürfe nutzen
   acht – #081B36 ist der Knopf beim Zeigen (97x), #C9D4E2 der betonte
   Rahmen (30x), #F4F7FA die einzige abgesetzte Fläche (2x).

   Nicht übernommen: #E8EEF5 und #DDE6F0. Sie bilden in den Entwürfen die
   Schraffur der Bildplatzhalter – ein Entwurfs-Artefakt, im Theme stehen
   dort echte Bilder.

   NRV-Rot ist abgedunkelt. #EA2127 erreicht auf Weiß 4,43:1 und fällt durch
   WCAG AA; genau dieser Befund führte am 01.10.2026 schon einmal dazu, Rot
   ganz abzuschaffen. In den Entwürfen ist Rot ausschließlich Textfarbe
   (953 Vorkommen, kein einziges als Fläche) und steht ausschließlich auf
   Weiß (397 Textstellen gemessen) – ein dunkleres Rot kostet hier also
   nichts. #D81D22 bringt 5,10:1. Entschieden von Bene am 16.10.2026.

   Die Trennung läuft über LINIEN, nicht über Flächen. Das ist der
   strukturelle Unterschied zur Vorgängerfassung: 2774 Linien gegen 2 Flächen.
   Wer eine Fläche setzt, prüft am Artboard, ob der Entwurf dort eine kennt.

   slug             Wert      Rolle
   navy             #0E2A4F   Text, Knöpfe, dunkle Flächen
   navy-tief        #081B36   Knopf beim Zeigen
   weiss            #FFFFFF   Grundfläche der Seite und Karten
   flaeche          #F4F7FA   abgesetzte Fläche, sparsam
   linie            #DCE3EC   Trennlinien und Rahmen
   linie-kraeftig   #C9D4E2   betonte Rahmen
   grau             #55677F   Beschriftungen, Datum, Metazeilen
   akzent           #D81D22   Kicker, Nummern, Link-Unterstreichung
   ========================================================================== */

/* Lange Zeichenketten ohne Trennstelle – ausgeschriebene URLs, Dateinamen –
   sprengen sonst jedes schmale Layout. Gemessen auf /terminkalender/: eine
   Brevo-Adresse von 704 px Breite in einem 390-px-Fenster, Überlauf 338 px.
   `anywhere` statt `break-word`, weil nur das die Breite des Containers
   tatsächlich begrenzt; getrennt wird weiterhin nur, wenn es nötig ist. */
.entry-content,
.entry-content :where(p, li, td, dd, figcaption, blockquote),
.nrv-karte,
.nrv-fuss {
  overflow-wrap: anywhere;
}


/* ==========================================================================
   Knöpfe und Textlinks nach der Spezifikation vom 15.10.2026

   Entwurf (ausgelesen aus den Artboards):
     .btn    min-height:52px; padding:0 26px; background:#0E2A4F; color:#FFF;
             font-size:15px; font-weight:600; border-radius:0; gap:10px
     .btn-o  wie .btn, aber padding:0 24px und border:1px solid #0E2A4F
     .lnk    padding:10px 0; font-size:14px; font-weight:600;
             text-decoration:underline; Unterstreichung in Akzent, Abstand 6px

   Die 52 px sind nicht nur Gestaltung: Der Login maß vorher 26 px und lag
   damit unter den 44 px, die ein Finger braucht.
   ========================================================================== */

.wp-block-button__link.wp-element-button,
.wp-block-button .wp-element-button {
  min-height: 52px;
  padding-inline: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.2;
  border-radius: 0;
}

/* Der Such-Knopf ist ein Icon-Knopf und bleibt davon unberührt – 52 px
   neben einem 44-px-Feld würden die Zeile sprengen. */
.wp-block-search__button.wp-element-button {
  min-height: 44px;
  padding-inline: 14px;
}


/* ==========================================================================
   1. Grundlagen und Barrierefreiheit
   ========================================================================== */

/* Sichtbarer Fokus – Pflicht, nicht Kür. Der Standard-Outline von WordPress
   verschwindet auf hellen Flächen; dieser hier nicht. */
:where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 3px solid var(--wp--preset--color--navy);
  outline-offset: 2px;
}

/* Sprunglink zum Inhalt. WordPress gibt ihn bei Block-Themes automatisch aus
   (.skip-link); .nrv-skip-link deckt eine manuell gesetzte Variante mit ab. */
.skip-link.screen-reader-text,
.nrv-skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 999;
  padding: 0.75rem 1.25rem;
  background: var(--wp--preset--color--navy);
  color: var(--wp--preset--color--weiss);
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.875rem;
  text-decoration: none;
}
.skip-link.screen-reader-text:focus,
.nrv-skip-link:focus {
  left: 0;
  clip: auto;
  clip-path: none;
  width: auto;
  height: auto;
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ==========================================================================
   2. Signatur: das Andreaskreuz
   Das X der Vereinsflagge ist kein Ornament, sondern das Rasterprinzip.
   Drei Ausprägungen: Schraffur (Fläche), Band (Sektion), Kreuz (Hero).
   ========================================================================== */

/* 2.1 Diagonale Schraffur – 45°, sehr zurückhaltend.
   Liegt hinter dem Inhalt, nie darüber. */
.nrv-schraffur {
  position: relative;
  isolation: isolate;
}
/* Schraffur entfallen (v1.2 Abschnitt 5). */
.nrv-schraffur::before {
  content: none;
}

/* 2.2 Das Band – oben und unten von je einer roten Linie eingefasst.
   Die beiden Arme des X. Für hervorgehobene Sektionen (Scrolly, Aufmacher). */
.nrv-band {
  border-top: 2px solid var(--wp--preset--color--navy);
  border-bottom: 2px solid var(--wp--preset--color--navy);
}

/* 2.3 Das Kreuz – zwei gekreuzte Hairlines, die den Hero teilen. */
.nrv-kreuz {
  position: relative;
}
/* Die X-Achsen sind entfallen (v1.2 Abschnitt 5). Rot markiert jetzt nur noch,
   wo etwas zu markieren ist. Sektionen trennen Weißraum und der Wechsel
   zwischen Weiß und Off-White. Die Klasse bleibt, damit das Blockmuster
   „Aufmacher" nichts verliert. */
.nrv-kreuz::before,
.nrv-kreuz::after {
  content: none;
}
.nrv-kreuz::before {
  top: 0;
  bottom: 0;
  left: 50%;
  width: 1px;
}
.nrv-kreuz::after {
  left: 0;
  right: 0;
  top: 50%;
  height: 1px;
}
@media (max-width: 781px) {
  /* Auf dem Handy stapeln die Spalten – eine senkrechte Mittellinie
     würde dann quer durch den Text laufen. */
  .nrv-kreuz::before {
    display: none;
  }
}

/* ==========================================================================
   3. Karten: News und Termine
   ========================================================================== */

/* 3.1 Das Kartenraster.

   **Bis v2.26.3 ein Hairline-Gitter:** 1 px Fuge, Grau als Hintergrund, die
   Karten weiß darauf – die Lücke war die Linie. Das stammt aus dem Entwurf
   „Andreaskreuz" und erzeugte ein durchgehendes Gitter ohne doppelte Rahmen.

   Jasmine hat daran den Eindruck „heavy" festgemacht und auf die Terminreihe
   verwiesen, wo „die Proportionen stimmen" und „drumherum viel heller
   Farbraum" ist. Die Terminkarten stehen mit **24 px** Fuge; die
   News-Kacheln klebten mit 1 px aneinander. Jetzt liegen beide auf
   demselben Maß.

   Der graue Hintergrund entfällt mit: Bei 24 px Fuge wäre er keine Linie
   mehr, sondern eine graue Fläche zwischen den Karten. */
.nrv-raster {
  gap: 24px;
}

.nrv-raster > li {
  display: flex;
  flex-direction: column;
  background-color: var(--wp--preset--color--weiss);
  min-width: 0;
}

.nrv-raster > li > .nrv-karte {
  flex: 1 1 auto;
}

/* Beiträge ohne Beitragsbild sollen keine leere Kachel in Bildgröße hinterlassen.
   WordPress gibt den Block dann als leeres Element aus – das wird eingezogen. */
.nrv-raster .wp-block-post-featured-image:empty {
  display: none;
}
.nrv-raster > li,
.nrv-raster > .wp-block-post,
.nrv-raster > .wp-block-column,
.nrv-raster > .wp-block-group,
.nrv-raster .nrv-karte {
  background-color: var(--wp--preset--color--weiss);
}

/* Beitragsbild randlos an die Kartenkante – kein Innenabstand darüber. */
.nrv-raster .wp-block-post-featured-image {
  margin: 0;
}
/* 16:9 statt der natürlichen 3:2: macht die Karten rund 90 px flacher und
   bringt die zweite Rasterreihe näher an den sichtbaren Bereich. */
.nrv-raster .wp-block-post-featured-image img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

/* 3.2 Einzelkarte

   Seit dem Farbkonzept vom 15.10.2026 ist die Grundfläche weiß – damit ist die
   Karte nicht mehr über ihre Fläche vom Grund zu unterscheiden. Die Entwürfe
   lösen das über eine Linie und nicht über eine Tönung: `border: 1px solid
   #DCE3EC` steht dort 587-mal, eine abgesetzte Fläche ganze zweimal. Die
   Terminkarte im Artboard „Home · Modul Nächste Termine" trägt genau diese
   Angabe. Ecken bleiben eckig; in 117 Artboards kommt ein Radius fünfmal vor. */
.nrv-karte {
  background-color: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
  border-radius: 0;
  padding: 1.5rem 1.5rem 1.75rem;
  transition: border-color 0.25s ease;
}
/* Zeigen und Tastaturfokus sind Rückmeldung, kein Schmuck. Auf weißem Grund
   trägt die Linie das – ein Schatten wäre ein Stilmittel, das der Entwurf
   nirgends verwendet. */
.nrv-karte:hover,
.nrv-karte:focus-within {
  border-color: var(--wp--preset--color--navy);
}
.nrv-karte :where(h2, h3, h4) {
  margin-block: 0.35rem 0.5rem;
}

/* 3.3 Kategorie-Label – Montserrat, versal, rot, gesperrt. */
/* Entspricht .eyebrow im Entwurf:
   font-size:13px; font-weight:700; letter-spacing:.16em; uppercase; Akzent. */
.nrv-label {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--wp--preset--color--akzent);
  margin-block: 0;
}

/* 3.4 Datumsangabe – gedämpft, aber noch kontrastreich genug (4.6:1). */
.nrv-datum {
  font-size: 0.8125rem;
  color: var(--wp--preset--color--grau);
  margin-block: 0.5rem 0;
}

/* 3.5 Terminkarte – große rote Tageszahl, wie im Entwurf. */
.nrv-termin {
  background-color: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
  padding: 1.5rem 1.25rem;
  text-align: center;
  transition: border-color 0.25s ease;
}
.nrv-termin:hover,
.nrv-termin:focus-within {
  border-color: var(--wp--preset--color--navy);
}
.nrv-termin .nrv-monat {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
  margin-block: 0;
}
.nrv-termin .nrv-tag {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 2.75rem;
  font-weight: 900;
  line-height: 1;
  color: var(--wp--preset--color--navy);
  margin-block: 0.15rem;
}

/* ==========================================================================
   4. Kopf- und Fußbereich
   ========================================================================== */

/* Der Kopf bleibt beim Scrollen stehen (Entwurf: position:sticky).
   Das gehört auf das header-Element, nicht auf die Gruppe darin: Ein klebendes
   Element bewegt sich nur innerhalb seines Elternelements, und der Template-Part
   ist genauso hoch wie der Kopf selbst – dort gibt es nichts zu kleben. Eine
   Ebene höher steht die ganze Seite als Scrollraum zur Verfügung. */
/* **`fixed`, nicht `sticky` – und ein Platzhalter im Fluss.**

   Ein klebendes Element bleibt im Dokumentfluss, seine Höhe bestimmt also den
   Platz, den es belegt. Sobald der Kopf beim Scrollen kompakt wurde, schrumpfte
   dieser Platz von 312 auf 137 px: Die Dokumenthöhe fiel um 175 px und alles
   darunter rutschte mit. Beim Zurückscrollen über die Schwelle sprang der
   Inhalt um **185 px, während der Zeiger 10 px zurücklegte** – von Bene
   gemeldet („unschöner Sprung, wenn das große Logo verschwindet").

   Jetzt steht der Kopf außerhalb des Flusses, und `body` hält über
   `--nrv-kopf-platz` konstant seine volle Höhe frei. Was der Kopf an eigener
   Höhe ändert, erreicht das Dokument damit nicht mehr.

   Das Hinausgleiten der Servicezeile übernimmt `navigation.js` über `top`:
   Bis zum Versatz (volle minus kompakte Höhe) wandert der Kopf mit dem
   Scrollweg nach oben, danach steht er auf 0 und ist kompakt. Die Unterkante
   liegt in beiden Fällen auf derselben Höhe – deshalb ist der Übergang
   nahtlos und braucht keine Totzone mehr. */
header.wp-block-template-part {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
}

body {
  padding-top: var(--nrv-kopf-platz, 312px);
}

/* Ohne JavaScript bleibt der Kopf oben stehen und der Platzhalter auf seinem
   Richtwert – die Seite ist bedienbar, nur ohne das Zusammenklappen. */
.no-js body {
  padding-top: 0;
}

/* Die Unterkante des Kopfbereichs.
 *
 * Hier stand bis zur Farbumstellung `2px solid nrv-rot` – die rote Linie aus
 * dem Entwurf „Andreaskreuz", mit der das X der Vereinsflagge begann. Am
 * 01.10.2026 wurde Rot pauschal durch Tinte ersetzt, und damit wurde aus einem
 * schmalen Akzent ein 2 px starker schwarzer Balken quer über die Seite. Der
 * Kommentar sprach danach noch von „der roten Linie" – ein Zeichen dafür, dass
 * die Stelle nur mechanisch ersetzt und nie angesehen wurde.
 *
 * Der Artboard „Hauptnavigation · Desktop" setzt dort **1 px in `linie`**
 * (#DCE3EC); eine 2-px-Linie in Tinte kommt dort nicht vor.
 *
 * **Lehre, zum zweiten Mal:** Eine Palettenumstellung, die Rot und Blau auf
 * dieselbe Farbe zieht, bricht nicht nur Farbwechsel im Hover (das war in
 * v2.1.0 der Befund) – sie ändert auch die *Bedeutung* von Flächen und Linien.
 * Ein roter 2-px-Strich ist ein Akzent, derselbe Strich in Schwarz ist eine
 * Trennung. Beim Umstellen gehört jede Stelle angesehen, an der Rot eine
 * tragende Rolle hatte, nicht nur die, an denen es mit einer zweiten Farbe
 * zusammentrifft. */
.nrv-kopf {
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

/* Die rote Oberkante ist entfallen – der Fußbereich hebt sich über seine
   Off-White-Fläche ab. */

/* Der Fußbereich steht seit v2.2 auf dunklem Grund (Entwurf im Design-Canvas).
   Alle Farben darin sind deshalb umgekehrt: Creme als Schrift, Weiß beim
   Zeigen. Die alten Werte – gedämpftes Grau auf Hell – wären hier unlesbar. */
.nrv-fuss a {
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-fuss a:hover,
.nrv-fuss a:focus-visible {
  color: var(--wp--preset--color--navy);
  text-decoration: underline;
  text-underline-offset: 0.2em;
}
.nrv-fuss .wp-block-heading {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--wp--preset--color--navy);
}
/* Footer nach Spezifikation: 14 px Desktop, 13 px Mobil, Zeilenhöhe 1,7. */
.nrv-fuss :where(p, li) {
  font-size: 0.875rem;
  line-height: 1.7;
}

/* Navigation: Klickflächen groß genug für Finger und für Menschen,
   die nicht mehr millimetergenau zielen. */
.wp-block-navigation .wp-block-navigation-item__content {
  padding-block: 0.75rem;
}

/* ==========================================================================
   5. Eingebettete Fremdsysteme (Manage2Sail, Clubity)
   Beide liefern nur iframes. Damit sie nicht wie Fremdkörper wirken,
   bekommen sie denselben Rahmen wie alles andere.
   ========================================================================== */
.nrv-embed {
  border: 1px solid var(--wp--preset--color--linie);
  background: var(--wp--preset--color--weiss);
}
.nrv-embed iframe {
  display: block;
  width: 100%;
  min-height: 70vh;
  border: 0;
}

/* ==========================================================================
   6. Lesbarkeit im Fließtext
   Die Mitgliedschaft ist im Schnitt über 60. Zeilenlänge, Zeilenabstand
   und Absatzabstand sind hier keine Geschmacksfrage.
   ========================================================================== */
.wp-block-post-content p,
.entry-content p {
  max-width: 68ch;
}

.wp-block-post-content :where(ul, ol),
.entry-content :where(ul, ol) {
  max-width: 66ch;
  padding-left: 1.5em;
}

.wp-block-post-content li + li,
.entry-content li + li {
  margin-top: 0.4rem;
}

/* Fußnoten und Kleingedrucktes nie unter 16px. */
.wp-block-post-content small,
.entry-content small {
  font-size: 1rem;
}

/* ==========================================================================
   7. Kopfbereich: eine Zeile, kein Umbruch
   ========================================================================== */

.nrv-kopf-zeile {
  gap: clamp(1rem, 2vw, 2.5rem);
}

.nrv-marke {
  gap: 0.85rem;
  flex-shrink: 0;
}

/* Kurzfassung der Wortmarke – die Schwelle steht weiter unten beim
   Menü-Umbruch, weil beide Entscheidungen an derselben Platzrechnung hängen. */
.nrv-wortmarke-kurz {
  display: none;
}

.nrv-marke .wp-block-site-title a {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1rem, 1.4vw, 1.35rem);
  font-weight: 700;
  color: var(--wp--preset--color--navy);
  text-decoration: none;
  line-height: 1.15;
  white-space: nowrap;
}

/* Die Navigation darf schrumpfen, Marke und Button nicht. */
.nrv-navi {
  flex: 1 1 auto;
  min-width: 0;
}

.nrv-navi .wp-block-navigation__container {
  column-gap: clamp(0.75rem, 1.4vw, 1.6rem);
  row-gap: 0.4rem;
}

.nrv-navi .wp-block-navigation-item__content {
  font-size: 1rem;
  white-space: nowrap;
}

.nrv-kopf-cta {
  flex-shrink: 0;
}

.nrv-kopf-cta .wp-block-button__link {
  white-space: nowrap;
  padding-inline: clamp(0.9rem, 1.4vw, 1.5rem);
  font-size: 1rem;
}

/* Untermenüs: ruhiger Rahmen statt Standard-Kasten. */
.nrv-navi .wp-block-navigation__submenu-container {
  border: 1px solid var(--wp--preset--color--linie);
  border-top: 2px solid var(--wp--preset--color--navy);
  background: var(--wp--preset--color--weiss);
  box-shadow: 0 8px 28px rgba(14, 42, 79, 0.08);
  min-width: 15rem;
  padding-block: 0.4rem;
}

.nrv-navi .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  padding: 0.7rem 1.1rem;
  text-transform: none;
  letter-spacing: 0.01em;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 1rem;
  font-weight: 400;
  white-space: normal;
}

.nrv-navi .wp-block-navigation__submenu-container .wp-block-navigation-item:hover > .wp-block-navigation-item__content {
  background: var(--wp--preset--color--weiss);
  color: var(--wp--preset--color--navy);
}

/* ------------------------------------------------------------------
   Menü-Umbruch bei 1120 px statt bei WordPress' 600 px.

   Neu gemessen mit der Navigation nach Entwurf v10 und der Servicezeile, die
   Login und Spenden aus dem Kopf genommen hat. Mit dem sechsten Oberpunkt
   „Shop" (01.10.2026): Marke 103 px, Navigation 651 px, „Mitglied werden“
   223 px, dazu Abstände – die Kopfzeile braucht **1083 px** statt vormals
   1327 px. Mit Reserve für Zoom und längere Beschriftungen liegt die Schwelle
   bei 1200 px; bei den vorherigen 1120 px blieben nur 37 px Luft.

   Damit steht die volle Navigation wieder auf 1366×768. Der frühere
   Kompromiss, dieses verbreitete Laptopformat ins Overlay zu schicken, ist
   hinfällig.

   Der Umschaltknopf trägt Text statt eines Hamburger-Symbols. Drei Striche
   ohne Beschriftung sind für einen großen Teil der Mitgliedschaft nicht als
   Menü erkennbar.
   ------------------------------------------------------------------ */
@media (max-width: 1199px) {
  .nrv-navi .wp-block-navigation__responsive-container-open:not(.always-shown) {
    display: flex;
  }

  .nrv-navi .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
    display: none;
  }

  .nrv-navi .wp-block-navigation__responsive-container.is-menu-open {
    display: flex;
  }
}

/* Umschaltknopf: mindestens 44 px hoch, damit er sicher zu treffen ist.
   Der Selektor nennt .nrv-kopf mit, weil WordPress für denselben Knopf eine
   Regel mit doppelter Klasse und font-size:inherit ausliefert – bei gleicher
   Spezifität gewinnt sonst das später geladene Block-Stylesheet. */
.nrv-kopf .nrv-navi .wp-block-navigation__responsive-container-open,
.nrv-kopf .nrv-navi .wp-block-navigation__responsive-container-close {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--wp--preset--color--navy);
  min-height: 44px;
  padding: 0.5rem 0.9rem;
  border: 1px solid var(--wp--preset--color--linie);
  background: var(--wp--preset--color--weiss);
  align-items: center;
  cursor: pointer;
}

.nrv-kopf .nrv-navi .wp-block-navigation__responsive-container-open:hover,
.nrv-kopf .nrv-navi .wp-block-navigation__responsive-container-close:hover {
  border-color: var(--wp--preset--color--navy);
  color: var(--wp--preset--color--navy);
}

/* Im geöffneten Menü ist Platz – hier darf die Schrift größer sein als 16 px. */
.nrv-navi .wp-block-navigation__responsive-container.is-menu-open {
  padding: 1.5rem clamp(1.25rem, 5vw, 4rem) 3rem;
}

.nrv-navi .is-menu-open .wp-block-navigation-item__content {
  font-size: 1.125rem;
  padding-block: 0.55rem;
}

/* Im Overlay ist das Untermenü kein Aufklappkasten mehr, sondern eine
   eingerückte Liste. Rahmen, Schatten und Mindestbreite aus der Desktop-Regel
   ergeben hier keinen Sinn. */
.nrv-navi .is-menu-open .wp-block-navigation__submenu-container {
  border: 0;
  box-shadow: none;
  background: transparent;
  min-width: 0;
  padding-block: 0;
  padding-inline-start: 1rem;
  border-inline-start: 1px solid var(--wp--preset--color--linie);
}

.nrv-navi .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  font-size: 1rem;
  padding-inline: 0;
}

/* ------------------------------------------------------------------
   Login und Spenden.

   ZIEL-URLS STEHEN IN parts/header.html – dort die beiden Platzhalter
   #TODO-LOGIN-URL (Clubity-Weblogin) und #TODO-SPENDEN-URL (PayPal)
   ersetzen. Sonst nichts.

   Beide stehen seit v1.15 in der Servicezeile über dem Kopf, nicht mehr in
   der Kopfzeile selbst. Das hat die Kopfzeile von 1.327 px auf 993 px
   Mindestbreite gebracht – siehe Abschnitt 21. Die Gestaltung liegt dort;
   die früheren Regeln auf .nrv-kopf-service sind mit dem Container entfallen.
   ------------------------------------------------------------------ */

/* Die Kurzfassung gilt derzeit auf jeder Breite, nicht erst unter 1600 px.
   Grund: Mit Versalien und Sperrung braucht die ausgeschriebene Wortmarke
   419 px statt 270 px, die Kopfzeile damit 1558 px. Die Zeile ist aber auf
   1400 px begrenzt – die Vollfassung passt also bei keiner Fensterbreite mehr
   und brach den Kopf auf zwei Zeilen.

   Der vollständige Name bleibt im Markup und damit für Screenreader und
   Suchmaschinen erhalten. Sobald das Logo als horizontale SVG vorliegt, ersetzt
   es ohnehin beides – dann kann diese Regel wieder an eine Schwelle. */
.nrv-wortmarke-lang {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.nrv-wortmarke-kurz {
  display: inline;
}

/* ==========================================================================
   8. Startseite: Aufmacher
   ========================================================================== */

.nrv-hero {
  overflow: hidden;
}

/* Der Aufmacher füllt vier Fünftel des Fensters, wie im Entwurf. Die Spalten
   teilen sich exakt hälftig – dadurch fällt die Spaltenkante mit der
   senkrechten Kreuz-Hairline bei 50 % zusammen. Darin besteht die Idee des
   Andreaskreuzes; bei 55/45 wirkt die Linie wie ein Versehen. */
.nrv-hero .wp-block-columns {
  min-height: 62vh;
  align-items: stretch;
  margin-block: 0;
}

/* box-sizing muss border-box sein, sonst addiert sich das Innenabstandsmaß der
   Textspalte auf die 50 % obendrauf und schiebt die Spaltenkante nach rechts.
   min-width verhindert zusätzlich, dass Inhalt die Spalte aufweitet. */
.nrv-hero .wp-block-column {
  min-width: 0;
  box-sizing: border-box;
}

.nrv-hero-text {
  padding: clamp(2.5rem, 5vw, 5rem) clamp(1.5rem, 3.5vw, 3.5rem);
}

.nrv-hero .nrv-hero-titel {
  font-size: clamp(2.6rem, 5.2vw, 4.4rem);
  font-weight: 600;
  line-height: 1.06;
  color: var(--wp--preset--color--navy);
  margin-block: 0.7rem 0.9rem;
}

.nrv-hero .nrv-hero-titel em {
  font-style: italic;
  color: var(--wp--preset--color--navy);
}

.nrv-hero .nrv-hero-lead {
  font-weight: 400;
  font-size: clamp(1.05rem, 1.3vw, 1.25rem);
  line-height: 1.6;
  color: var(--wp--preset--color--grau);
  max-width: 30ch;
}

.nrv-hero-cta {
  margin-top: 2rem;
}

/* Aufmacherbild: füllt die Spalte, fester Bildausschnitt. */
.nrv-hero-bild {
  align-self: stretch;
}

.nrv-hero-bild,
.nrv-hero-bild .wp-block-image,
.nrv-hero-bild .wp-block-query,
.nrv-hero-bild .wp-block-post-template,
.nrv-hero-bild .wp-block-post-template > li,
.nrv-hero-bild .wp-block-post-featured-image {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}

.nrv-hero-bild img {
  flex: 1 1 auto;
  width: 100%;
  height: 100%;
  min-height: 22rem;
  object-fit: cover;
  display: block;
}

/* Ist nichts angeheftet, bleibt hier kein Loch, sondern ein Hinweis. */
.nrv-hero-bild .nrv-hero-leer {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  min-height: 22rem;
  margin: 0;
  padding: 1.5rem;
  text-align: center;
  background-color: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
}

@media (max-width: 781px) {
  .nrv-hero-bild img { min-height: 15rem; }
  .nrv-hero .nrv-hero-lead { max-width: none; }
}

/* ==========================================================================
   9. Sektionsköpfe und Raster
   ========================================================================== */

.nrv-sektionskopf {
  border-bottom: 1px solid var(--wp--preset--color--linie);
  align-items: baseline;
}

.nrv-sektionskopf .wp-block-heading {
  margin: 0;
}

.nrv-mehr {
  margin: 0;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/* Kartentitel dunkelblau statt rot – rot bleibt dem Label vorbehalten. */
.nrv-karte-titel a,
.nrv-karte .wp-block-post-title a {
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-karte-titel a:hover,
.nrv-karte .wp-block-post-title a:hover {
  color: var(--wp--preset--color--navy);
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

/* Dreispaltiges Raster für die zweite Newsreihe. */
.nrv-raster-3 .nrv-karte {
  padding: 1.25rem 1.25rem 1.5rem;
}

.nrv-raster-3 .wp-block-post-featured-image img {
  aspect-ratio: 16 / 10;
}

@media (max-width: 781px) {
  .nrv-raster,
  .nrv-raster-3 {
    grid-template-columns: 1fr !important;
  }
}

/* ==========================================================================
   10. Schwerpunktband
   Zeigt den angehefteten Beitrag ("An den Anfang"). Genau eine Stelle auf der
   Startseite, die redaktionell steuerbar ist – ohne Layoutrisiko.
   ========================================================================== */

.nrv-schwerpunkt .wp-block-post-template {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nrv-schwerpunkt-spalten {
  gap: clamp(1.5rem, 4vw, 3.5rem);
  margin-block: 0;
}

.nrv-schwerpunkt-titel {
  font-size: clamp(1.9rem, 3.2vw, 2.8rem);
  line-height: 1.12;
  margin-block: 0.5rem 0.8rem;
}

.nrv-schwerpunkt-titel a {
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-schwerpunkt-titel a:hover,
.nrv-schwerpunkt-titel a:focus-visible {
  /* Vorher wechselte die Farbe von Blau auf Rot. Seit die Palette nur noch
     einen dunklen Ton kennt, muss die Rückmeldung über die Linie kommen. */
  text-decoration: underline;
  text-underline-offset: 0.16em;
  text-decoration-thickness: 2px;
}

.nrv-schwerpunkt-bild img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
}

.nrv-schwerpunkt .wp-block-post-excerpt__more-link {
  display: none;
}

/* ==========================================================================
   11. Terminreihe und „Das sind wir"
   Beide Abschnitte stammen aus Entwurf B und ergänzen die Startseite unter
   den Neuigkeiten. Die Termine sind statisch gepflegt – ein Terminsystem
   (eigener Inhaltstyp oder Plugin) ist noch nicht entschieden.
   ========================================================================== */

.nrv-termine .wp-block-columns {
  gap: 1rem;
  margin-block: 0;
}

@media (max-width: 781px) {
  .nrv-termine .wp-block-columns {
    gap: 0.75rem;
  }
}

/* Einspaltig, bis ein Clubfoto mit geklärten Rechten vorliegt. Die Zeilenlänge
   wird begrenzt – über die volle Rasterbreite wäre der Absatz unlesbar. */
/* .nrv-ueber davor, weil WordPress für constrained-Gruppen eine eigene
   wp-container-Regel mit margin-inline:auto ausliefert, die sonst gewinnt. */


.nrv-ueber-text .wp-block-heading {
  margin-top: 0;
}

.nrv-ueber-text .nrv-mehr {
  margin-top: 1.25rem;
}

/* ==========================================================================
   12. Bildnachweis
   Kommt aus dem Feld „Bildunterschrift" am Bild in der Mediathek, nicht aus
   der Bilddatei. Dunkel auf hellem Grund unter dem Bild – ein Nachweis auf
   dem Motiv ist auf Segelfotos regelmäßig unlesbar, weil Segel weiß sind.
   ========================================================================== */

.nrv-bildnachweis {
  display: block;
  padding: 0.4rem 0 0;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.875rem;
  line-height: 1.4;
  color: var(--wp--preset--color--grau);
}

.nrv-raster .nrv-bildnachweis,
.nrv-schwerpunkt .nrv-bildnachweis {
  padding-inline: 0;
}

.nrv-raster .nrv-bildnachweis {
  padding: 0.4rem 1.5rem 0;
}

/* ==========================================================================
   13. Einzelbeitrag
   Die meistbesuchte Ansicht der Seite – 1.956 Beiträge hängen daran.
   ========================================================================== */

/* Das Beitragsbild füllte den halben Bildschirm (822 px bei 900 px Fensterhöhe).
   Gedeckelt, damit Titel und Textanfang beim Öffnen sichtbar bleiben. */
.nrv-beitragsbild img {
  width: 100%;
  max-height: 45vh;
  object-fit: cover;
  display: block;
}

/* Zurück zur Übersicht – vorher führte vom Beitrag nur „vorheriger/nächster". */
.nrv-zurueck {
  margin-bottom: 1.5rem;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.nrv-zurueck a {
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-zurueck a:hover,
.nrv-zurueck a:focus-visible {
  color: var(--wp--preset--color--navy);
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

/* Luft um Zwischenüberschriften im Fließtext. */
.wp-block-post-content h2,
.wp-block-post-content h3 {
  margin-top: 2.2rem;
  margin-bottom: 0.6rem;
}

/* ==========================================================================
   14. Angleich an den Entwurf „Andreaskreuz" (v1.0)

   Eine bewusste Abweichung vom Entwurf: Labels bleiben bei 12 px statt
   0,55–0,6 rem – das Designsystem setzt 12 px als Untergrenze.
   ========================================================================== */

/* 1b — Der Fußbereich zeigte Aufzählungspunkte mit 40 px Einzug.
   Im Entwurf sind es reine Textlisten. */
.nrv-fuss ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nrv-fuss li {
  display: block;
  margin-bottom: 4px;
}

/* 1c — Kategorie-Labels und „Alle News" waren durchgehend unterstrichen.
   Unterstreichung gehört an den Mauszeiger und an den Tastaturfokus. */
.nrv-label a,
.nrv-mehr a,
.nrv-karte .nrv-label a {
  text-decoration: none;
}

.nrv-label a:hover,
.nrv-label a:focus-visible,
.nrv-mehr a:hover,
.nrv-mehr a:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

/* --------------------------------------------------------------------------
   2. News-Raster: Bildformat nach dem Bestand, nicht nach dem Entwurf

   Hier stand 3,5:1 – ein flaches Band, übernommen aus einem frühen Entwurf, in
   dem der Bildslot so gezeichnet war. Das Ergebnis im echten Betrieb: Von
   jedem Foto blieb ein Streifen von 43 Prozent der Höhe übrig, bei
   Gruppenaufnahmen genau der Teil ohne Köpfe.

   Gemessen am Bestand: **94,4 Prozent der 1.815 Beitragsbilder sind 3:2.**
   Ein 3:2-Slot schneidet bei ihnen also gar nichts ab. Die restlichen sechs
   Prozent – 16:9, 4:3, ein Dutzend Hochformate – werden beschnitten, aber
   maßvoll.

   Das Anforderungsprofil verlangt einheitliche Bildflächen im Raster, damit
   es nicht unruhig wirkt. Einheitlich heißt nicht flach: Der Prototyp der
   Artikelseite nutzt für „Mehr aus der Rubrik" ebenfalls 3:2.
   -------------------------------------------------------------------------- */

.nrv-raster .wp-block-post-featured-image img {
  aspect-ratio: 3 / 2;
  object-fit: cover;
  width: 100%;
  height: auto;
}

/* Karten sitzen randlos im Gitter: keine Rahmen, keine Schatten. Die
   Trennlinien entstehen allein daraus, dass der Rasterhintergrund durch die
   1-px-Fugen scheint. */
.nrv-raster > li {
  overflow: hidden;
}

.nrv-karte {
  padding: 18px 20px;
  box-shadow: none;
}

.nrv-karte:hover {
  box-shadow: none;
}

.nrv-karte .nrv-label {
  font-size: 12px;
  letter-spacing: 0.15em;
  margin-bottom: 5px;
}

/* 1,3125 rem = 21 px, dasselbe Maß wie `.nrv-magazin-karte-titel` auf der
   Newsseite. Beide zeigen dieselbe Art Karte in fast gleicher Spaltenbreite
   (411 gegen 391 px); mit 17,6 px stand die Startseite ohne Grund darunter.
   Verhältnis Spalte zu Schrift jetzt 19,6 – Jasmines Referenz, die
   Terminkarte, liegt bei 18,6. */
.nrv-karte .nrv-karte-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-weight: 700;
  font-size: 1.3125rem;
  line-height: 1.3;
  margin-block: 0 4px;
}

.nrv-karte .wp-block-post-excerpt,
.nrv-karte .wp-block-post-excerpt__excerpt {
  font-size: 0.875rem;
  line-height: 1.6;
  font-weight: 400;
  font-size: 0.8rem;
  line-height: 1.5;
  color: var(--wp--preset--color--grau);
  margin-block: 0;
}

.nrv-karte .nrv-datum {
  font-size: 0.75rem;
  color: var(--wp--preset--color--grau);
  margin-block: 6px 0;
}

/* Sektionskopf: Überschrift links, Verweis rechts, dünne Linie darunter. */
.nrv-sektionskopf {
  align-items: flex-end;
  margin-bottom: 28px;
  padding-bottom: 10px;
}

/* Sektionsköpfe sind das H2 der Spezifikation: 38 px, Gewicht 500.
   Sie standen auf 24 px / 700 – eine Größe, die der Entwurf nicht kennt. */
.nrv-sektionskopf .wp-block-heading {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-weight: 500;
  font-size: clamp(1.75rem, 2.6vw, 2.375rem);
  line-height: 1.1;
}

.nrv-mehr {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
}

.nrv-mehr a {
  color: #0E2A4F;
}

/* Z2 — Akzent als Textfarbe. Seit dem Farbkonzept vom 15.10.2026 ist Rot
   ausschließlich Textfarbe, nie Fläche – so halten es alle 117 Artboards
   (953 Vorkommen, kein einziges als Hintergrund). #D81D22 bringt auf Weiß
   5,10:1; das Rot des Entwurfs (#EA2127) erreichte nur 4,43:1 und fiel
   durch WCAG AA. Betrifft Labels, die Kursivstelle der Headline und die
   Termin-Tageszahl. */
.nrv-label,
.nrv-label a,
.nrv-hero .nrv-hero-titel em,
.nrv-termin .nrv-tag {
  color: #0E2A4F;
}


/* --------------------------------------------------------------------------
   3. Hero nach Entwurfsmaß
   -------------------------------------------------------------------------- */

.nrv-hero .wp-block-columns {
  min-height: 80vh;
}

/* Das X lag bisher hinter dem Aufmacherbild und war dort unsichtbar – zu sehen
   war nur der Teil über der hellen Textspalte, was wie eine abgeschnittene
   Linie aussah. Im Entwurf liegen beide Linien über allem. */


.nrv-hero .nrv-hero-text {
  padding: clamp(32px, 6vw, 80px);
  justify-content: center;
}

.nrv-hero .nrv-label {
  font-size: 12px;
  letter-spacing: 0.25em;
  margin-block: 0 16px;
}

.nrv-hero .nrv-hero-titel {
  font-size: clamp(2.5rem, 5vw, 4.2rem);
  font-weight: 600;
  line-height: 1.1;
  margin-block: 0 14px;
}

.nrv-hero .nrv-hero-lead {
  font-size: 0.95rem;
  font-weight: 400;
  line-height: 1.7;
  color: var(--wp--preset--color--grau);
  max-width: 420px;
}

/* --------------------------------------------------------------------------
   4. Schwerpunkt-Band nach Entwurfsmaß
   -------------------------------------------------------------------------- */


.nrv-schwerpunkt .nrv-label {
  font-size: 12px;
  letter-spacing: 0.18em;
  display: flex;
  align-items: center;
  gap: 10px;
  margin-block: 0 12px;
}

/* Der Punkt vor dem Label. Im Entwurf ein Live-Indikator; hier markiert er die
   eine redaktionell gesteuerte Stelle der Startseite. */
.nrv-schwerpunkt .nrv-label::before {
  content: "";
  width: 8px;
  height: 8px;
  flex: 0 0 8px;
  border-radius: 50%;
  background: var(--wp--preset--color--navy);
  animation: nrv-blinken 2s infinite;
}

@keyframes nrv-blinken {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.3; }
}

/* Ein blinkendes Element ist für manche Menschen nicht nur störend, sondern
   auslösend. Bei reduzierter Bewegung bleibt der Punkt stehen. */
@media (prefers-reduced-motion: reduce) {
  .nrv-schwerpunkt .nrv-label::before { animation: none; }
}

.nrv-schwerpunkt .nrv-schwerpunkt-titel {
  font-size: 1.8rem;
  font-weight: 700;
  line-height: 1.2;
  margin-block: 0 6px;
}

.nrv-schwerpunkt .wp-block-post-excerpt,
.nrv-schwerpunkt .wp-block-post-excerpt__excerpt {
  font-size: 0.9rem;
  font-weight: 400;
  line-height: 1.7;
  color: var(--wp--preset--color--grau);
  max-width: 500px;
  margin-block: 0 28px;
}

/* --------------------------------------------------------------------------
   5. Termine nach Entwurfsmaß
   -------------------------------------------------------------------------- */


.nrv-termine .nrv-sektionskopf .wp-block-heading {
  font-size: 1.4rem;
}

/* Vier Spalten, auch wenn derzeit nur drei Termine gepflegt sind – so behalten
   die Karten dieselbe Breite, statt auseinanderzulaufen. */
.nrv-termine .wp-block-columns {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
}

.nrv-termin {
  border: 1px solid var(--wp--preset--color--linie);
  padding: 20px;
}

.nrv-termin .nrv-label {
  font-size: 12px;
  letter-spacing: 0.12em;
  color: var(--wp--preset--color--grau);
  margin-block: 0 8px;
}

.nrv-termin .nrv-monat {
  font-size: 0.75rem;
  letter-spacing: 0.1em;
  color: var(--wp--preset--color--grau);
}

.nrv-termin .nrv-tag {
  font-size: 2.4rem;
  font-weight: 900;
  line-height: 1;
}

.nrv-termin .wp-block-heading {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 0.9rem;
  font-weight: 700;
  line-height: 1.3;
  margin-block: 8px 0;
}

.nrv-termin .nrv-datum {
  font-size: 0.75rem;
  color: #55677F;
  margin-block: 3px 0;
}

/* --------------------------------------------------------------------------
   6. „Das sind wir" und Fußbereich nach Entwurfsmaß
   -------------------------------------------------------------------------- */


.nrv-ueber-text .wp-block-heading {
  font-size: 1.8rem;
  font-weight: 700;
  margin-block: 0 12px;
}

.nrv-ueber-text p:not(.nrv-mehr) {
  font-size: 0.95rem;
  font-weight: 400;
  line-height: 1.8;
  color: var(--wp--preset--color--grau);
}

.nrv-ueber-text .nrv-mehr {
  font-size: 0.85rem;
  font-weight: 700;
  margin-top: 12px;
}


.nrv-fuss .wp-block-heading {
  font-size: 12px;
  letter-spacing: 0.12em;
  margin-block: 0 8px;
}

/* Grundwert des Fußbereichs. `:where()` hält die Spezifität bei einer Klasse
   (0,1,0): Als `.nrv-fuss a, .nrv-fuss p` war sie (0,1,1) und schlug damit
   **jede** Rollenklasse darin – die Spaltenüberschriften standen auf 14
   statt 12 px, und der mobile 13-px-Block war wirkungslos, obwohl er am
   Dateiende steht. Der Kommentar dort nannte „gleiche Spezifität" als
   Ursache; das war falsch gemessen, es war eine höhere. Ein Grundwert gehört
   schwach gesetzt, eine Rolle stark. */
.nrv-fuss :where(p, li, a:not(.wp-element-button)) {
  font-size: 0.875rem;
  font-weight: 400;
  color: var(--wp--preset--color--navy);
}


/* Das Vierer-Raster der Termine gilt nur, solange Platz dafür ist. Auf
   schmalen Fenstern standen die Karten sonst auf 73 px Breite. */
@media (max-width: 900px) {
  .nrv-termine .wp-block-columns {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 540px) {
  .nrv-termine .wp-block-columns {
    grid-template-columns: 1fr;
  }
}

/* ==========================================================================
   15. Nachtrag v1.1
   ========================================================================== */

/* 1 — Die Wortmarke folgt dem Logo: Versalien, gesperrt, Serifenschrift.
   Der juristische Name „Norddeutscher Regatta-Verein r.V." bleibt dem
   Impressum und dem Adressblock im Fußbereich vorbehalten. */
.nrv-marke .wp-block-site-title a {
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600;
}

/* 2 — Teaser sind Fließtext und standen auf var(--wp--preset--color--grau). Auf Übersichtsseiten ist das
   die Textmenge, die tatsächlich gelesen wird. */
.nrv-karte .wp-block-post-excerpt,
.nrv-karte .wp-block-post-excerpt__excerpt,
.nrv-schwerpunkt .wp-block-post-excerpt,
.nrv-schwerpunkt .wp-block-post-excerpt__excerpt,
.nrv-ueber-text p:not(.nrv-mehr),
.wp-block-post-excerpt__excerpt {
  color: var(--wp--preset--color--navy);
}

/* Datums- und Ortsangaben bleiben zurückgenommen, aber nicht heller als
   #55677F (6,35:1 auf Weiß). */
.nrv-karte .nrv-datum,
.nrv-termin .nrv-datum,
.nrv-termin .nrv-monat {
  color: var(--wp--preset--color--grau);
}

/* 3 — Die Entwurfswerte fielen unter 16 px zurück. Zurückgenommen, nur diese
   vier Größen; Proportionen und Abstände aus v1.0 bleiben. */
.nrv-karte .wp-block-post-excerpt,
.nrv-karte .wp-block-post-excerpt__excerpt {
  font-size: 15px;
}

.nrv-hero .nrv-hero-lead {
  font-size: 16px;
}

.nrv-schwerpunkt .wp-block-post-excerpt,
.nrv-schwerpunkt .wp-block-post-excerpt__excerpt {
  font-size: 16px;
}

.nrv-ueber-text p:not(.nrv-mehr) {
  font-size: 16px;
}

/* 4 — Knopfflächen tragen Navy, nicht den Akzent. Der Entwurf kennt Rot nur
   als Textfarbe; gefüllte Knöpfe sind durchgehend Navy #0E2A4F mit weißer
   Schrift (18,88:1). */
.nrv-kopf-cta .wp-block-button__link,
.nrv-hero-cta .wp-block-button__link,
.wp-block-button__link {
  background-color: #0E2A4F;
}

/* ==========================================================================
   16. Gestaltungssystem (v1.2)

   Ein Container für alle Seitentypen, ein Abstandsraster auf 8er-Basis. Vorher
   standen Polsterungen als 5-%-Werte im Blockmarkup, Spaltenbreiten als
   style-Attribut und sechs !important im Stylesheet. Alles davon ist jetzt
   hier – Werte gehören ins Stylesheet, nicht ins Markup.

   Die Abstände kommen ausschließlich aus den Presets:
     20 = 8px   30 = 16px  40 = 24px  50 = 32px
     60 = 48px  70 = 64px  80 = 96px  90 = 128px
   ========================================================================== */

/* --- Sektionsrhythmus: nur vertikal. Horizontal fluchtet alles über den
       Container aus theme.json (1280 px, 24 px Seitenabstand). --- */
.nrv-schwerpunkt,
.nrv-termine,
.nrv-ueber {
  padding-block: var(--wp--preset--spacing--sektion);
}

.nrv-fuss {
  padding-block: var(--wp--preset--spacing--weit);
  /* Seit v2.40.0 hell, nach dem Artboard „NRV – Footer mit Sitemap"
     (`background: #FFFFFF`). Bis dahin stand hier Tinte; das Umdrehen auf
     dunkel (v2.2.1) war eine Annahme, der Entwurf sagt Weiß. Von Bene
     entschieden. */
  color: var(--wp--preset--color--navy);
}

/* Ohne eigenes Padding. Der Artboard staffelt den Kopf allein über die drei
   Ebenen: Servicezeile 60, Marke 22/26, Navigation 60 – zusammen 309 px.
   Die zusätzlichen 2 × 16 px hier kamen aus der Zeit, als Marke und
   Navigation in einer Zeile standen; seit v2.9.7 verdoppeln sie nur den
   Abstand, den die Marke schon mitbringt. Gemessen 343 statt 309. */
.nrv-kopf {
  padding-block: 0;
}

/* --- Spaltenbreiten: standen bis v1.1 als flex-basis im Markup --- */
.nrv-hero .wp-block-columns > .wp-block-column.nrv-hero-text,
.nrv-hero .wp-block-columns > .wp-block-column.nrv-hero-bild {
  flex: 0 0 50%;
}

.nrv-schwerpunkt .wp-block-columns.nrv-schwerpunkt-spalten > .wp-block-column:first-child { flex: 0 0 55%; }
.nrv-schwerpunkt .wp-block-columns.nrv-schwerpunkt-spalten > .wp-block-column:last-child  { flex: 0 0 45%; }

/* --- Sektionskopf --- */
.nrv-sektionskopf {
  margin-bottom: var(--wp--preset--spacing--standard);
  padding-bottom: var(--wp--preset--spacing--haar);
}

/* --- „Das sind wir" als `5fr 7fr`, nach `Home.dc.html` (493 / 691 px).
       Links Kicker und Überschrift, rechts der Text mit Verweis und Knopf –
       dasselbe Grundmodul wie die Abschnittsköpfe der Unterseiten. Bis
       v3.64.0 stand hier eine einzelne Spalte mit 64ch Textbreite. --- */
.nrv-ueber.wp-block-group {
  display: grid;
  grid-template-columns: 5fr 7fr;
  gap: var(--wp--preset--spacing--weit);
  align-items: start;
}

.nrv-ueber.wp-block-group > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-ueber-kopf > * { margin-block: 0; margin-inline: 0; }
.nrv-ueber-kopf .nrv-label { margin-block: 0 0.5rem; }

.nrv-ueber.wp-block-group > .nrv-ueber-text.wp-block-group {
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}

.nrv-ueber-knopf { margin-block-start: 1.5rem; }

@media (max-width: 1000px) {
  .nrv-ueber.wp-block-group {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--wp--preset--spacing--eng);
  }
}

/* --- Termintitel: Größe aus dem System, nicht aus einer Blockvoreinstellung --- */
.nrv-termin .wp-block-heading {
  font-size: 0.9rem;
}

/* --- Abstände zwischen den Sektionen --- */
.nrv-band {
  margin-block: 0 var(--wp--preset--spacing--sektion);
}

/* Die Kopfzeile stand auf flex-wrap:nowrap. Solange die Polsterung als
   Inline-Wert im Markup stand, war genug Platz; seit sie aus dem System kommt,
   überlappten Menüknopf und Knopf auf schmalen Fenstern, statt umzubrechen.
   Unterhalb der Overlay-Schwelle darf der Kopf zweizeilig werden. */
@media (max-width: 900px) {
  .nrv-kopf-zeile {
    flex-wrap: wrap;
    row-gap: var(--wp--preset--spacing--eng);
  }

  /* Zeile 1: Marke und Menüknopf. Zeile 2: die drei Aktionen.
     Die Marke nimmt den Rest der ersten Zeile ein, damit der Menüknopf
     rechts steht und nicht mittig hängt. */
  .nrv-kopf-zeile > .nrv-marke {
    flex: 1 1 auto;
  }

  .nrv-kopf-zeile > .nrv-kopf-cta {
    flex: 0 0 auto;
  }
}

/* --- Einzelbeitrag und Seite: Lesetext linksbündig im Container ---
   Vorher stand er auf 760 px zentriert und fluchtete damit nicht mit dem
   Beitragsbild. Jetzt beginnt er an derselben linken Kante wie alles andere
   und behält die Lesebreite. */
/* Die Klasse entry-content wird mitgenannt: WordPress setzt für Blöcke in
   einem „constrained"-Container `margin-left: auto` und lädt diese Regel nach
   dem Theme-Stylesheet. Bei gleicher Spezifität gewinnt sie dann – sichtbar
   wird das nur bei Elementen, die schmaler sind als der Container: Absätze
   haben `max-width: 68ch` für die Zeilenlänge und standen deshalb 25 px
   eingerückt, während Überschriften und Tabellen bündig blieben. */
/* Das `!important` ist nicht Bequemlichkeit, sondern notwendig: WordPress
   liefert inline

       .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))
         { margin-left: auto !important; margin-right: auto !important }

   aus. **Gegen `!important` hilft keine Spezifität** – dieselbe Stelle wie
   bei der Trennlinie im Kopf (v2.22.1) und beim Stander (v2.26.1).

   Die Regel hier stand bis v2.36.1 ohne `!important` und war damit
   wirkungslos. Der Eintrag in dieser Datei („Der Selektor nennt jetzt
   entry-content mit") beschreibt eine Reparatur, die so nie gegriffen hat:
   Gemessen stand JEDER Block im Seiteninhalt auf `margin-left: 260px`, also
   mittig – Überschriften wie Absätze. Aufgefallen ist es erst, als Jasmine
   nach einheitlich linksbündigen Überschriften fragte.

   **Wer eine Korrektur notiert, prüft sie am berechneten Stil nach** – dass
   der Selektor jetzt trifft, heißt nicht, dass die Eigenschaft gewinnt.

   `alignwide` und `alignfull` bleiben ausgenommen: Sie sind so breit wie ihr
   Container, dort richtet `auto` nichts aus. */
.wp-block-post-content > *:not(.alignwide):not(.alignfull),
.entry-content.wp-block-post-content > *:not(.alignwide):not(.alignfull) {
  max-width: 760px;
  margin-left: 0 !important;
  margin-right: auto !important;
}

/* Breite Elemente im Beitragstext dürfen weiterhin ausbrechen. */
.wp-block-post-content > .alignwide,
.wp-block-post-content > .alignfull {
  max-width: none;
}

/* --- Login und Spenden ---
   Hier stand die Umschaltung, die beide unter 900 px aus dem Kopf nahm und
   stattdessen im Overlay zeigte. Seit v1.15 stehen sie in der Servicezeile
   und sind auf jeder Breite sichtbar; die Umschaltung ist damit hinfällig.
   Die Einträge in der Navigation sind entfallen – sie waren doppelt. */

/* ==========================================================================
   17. Editorial Grid (v1.2 Abschnitt 2 und 3)

   Die Startseite gewichtet, statt vier gleichrangige Kacheln zu zeigen:
   eine Lead Story, drei Secondary Stories, darunter eine kompakte Liste.
   Die Lead Story ist der angeheftete Beitrag – damit entfällt das frühere
   Schwerpunkt-Band, das denselben Beitrag ein zweites Mal zeigte.

   Bildformate: Hero 16:9, Lead 3:2, Teaser 4:3, Portrait 4:5.
   ========================================================================== */

.nrv-neuigkeiten {
  padding-block: var(--wp--preset--spacing--sektion);
}

/* --- Lead Story --- */
.nrv-lead {
  margin-bottom: var(--wp--preset--spacing--sektion);
}

.nrv-lead .wp-block-post-template {
  list-style: none;
  margin: 0;
  padding: 0;
}

/* Lead Story als Zweispalter: Bild links, Text rechts – gespiegelt zum Hero.
   Über die volle Containerbreite ergäbe 3:2 zwangsläufig 853 px Höhe; bei
   rund 60 % Breite sind es etwa 500. Erst dadurch passt die Lead Story in
   einen Bildschirm und die Secondary Stories schneiden an.

   **Seit v3.64.0 ein Raster statt Flex, und 7fr 5fr statt 60/40.**
   `Home.dc.html` setzt hier `709 / 507 px` bei 1280 px Rasterbreite, also
   genau `7fr 5fr`; wir standen auf 768 / 464. Der Unterschied ist klein,
   aber er war auch nicht messbar: `wp:columns` rendert als Flex, und die
   Layoutprüfung zählt Raster. Ein Modul, das die Prüfung nicht sieht, fehlt
   in ihrer Zählung – auf der Startseite stand deshalb ein `7/5` als Lücke,
   obwohl die Spalten nebeneinander standen. */
.nrv-lead .wp-block-columns.nrv-lead-spalten {
  display: grid;
  grid-template-columns: 7fr 5fr;
  gap: var(--wp--preset--spacing--weit);
  margin-block: 0;
  align-items: center;
}

.nrv-lead .wp-block-columns.nrv-lead-spalten > .wp-block-column {
  flex-basis: auto;
  margin-block: 0;
}

.nrv-lead-bild figure {
  margin: 0;
}

.nrv-lead-bild img {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  display: block;
}

/* In der schmaleren Spalte darf der Titel etwas kleiner ausfallen –
   die Wirkung kommt jetzt aus der Fläche daneben, nicht aus der Punktgröße. */
.nrv-lead-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.7rem, 2.4vw, 2.25rem);
  font-weight: 700;
  line-height: 1.15;
  margin-block: var(--wp--preset--spacing--haar) var(--wp--preset--spacing--eng);
  max-width: 18ch;
}

.nrv-lead-titel a {
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-lead-titel a:hover,
.nrv-lead-titel a:focus-visible {
  color: #0E2A4F;
}

.nrv-lead-text .wp-block-post-excerpt,
.nrv-lead-text .wp-block-post-excerpt__excerpt {
  font-size: 1rem;
  line-height: 1.7;
  color: var(--wp--preset--color--navy);
  max-width: 60ch;
  margin-block: 0;
}

.nrv-lead-text .nrv-datum {
  margin-block: var(--wp--preset--spacing--eng) 0;
}

/* --- Secondary Stories: drei Spalten, Teaserformat 4:3 --- */
.nrv-neuigkeiten .nrv-raster {
  grid-template-columns: repeat(3, 1fr);
  margin-bottom: var(--wp--preset--spacing--sektion);
}

.nrv-neuigkeiten .nrv-raster .wp-block-post-featured-image img {
  aspect-ratio: 4 / 3;
}

/* --- Weitere Meldungen: kompakte Reihe ohne Bild --- */
.nrv-weitere {
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-top: var(--wp--preset--spacing--standard);
}

.nrv-weitere-kopf {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
  margin-block: 0 var(--wp--preset--spacing--eng);
}

.nrv-weitere-liste {
  list-style: none;
  margin: 0;
  padding: 0;
  /* Zwei Spalten: sechs Meldungen auf einen Blick statt dreimal scrollen.
     So bleibt der Abschnitt ruhig und zeigt trotzdem, dass hier etwas
     geschieht – das war die Vorgabe aus der Abstimmung mit der Redaktion. */
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: var(--wp--preset--spacing--weit);
  align-items: stretch;
  row-gap: 0;
}

/* WordPress' blockGap wird als "> * + *"-Regel ausgeliefert und hängt jedem
   Geschwisterelement einen oberen Außenabstand an. In einer untereinander
   laufenden Liste ist das richtig; in einem Grid verschiebt es die zweite
   Spalte um genau diesen Betrag nach unten – die Meldungen einer Zeile
   beginnen dann versetzt. Im Grid regelt gap die Abstände, nicht margin. */
.nrv-weitere-liste > li {
  margin-block: 0;
}

/* Unter 720 px wird zweispaltig zur Quetschung – dann untereinander. */
@media (max-width: 720px) {
  .nrv-weitere-liste {
    grid-template-columns: minmax(0, 1fr);
  }
}

.nrv-weitere-liste > li {
  display: grid;
  /* Bild | Text | Datum. Die Spalten stehen fest, damit ein Beitrag ohne
     Beitragsbild die übrigen nicht verschiebt – 48 von 1.956 haben keins.
     Die Zeilen stehen ebenfalls fest: Kategorie oben, darunter Titel und
     Datum. */
  grid-template-columns: 96px minmax(0, 1fr) auto;
  grid-template-rows: auto 1fr;
  /*
   * NICHT baseline. Ein zweizeiliger Titel hat seine erste Textlinie weit
   * oben; baseline schiebt ihn nach oben, bis diese Linie mit der des
   * einzeiligen Datums zusammenfällt – dabei läuft die erste Titelzeile über
   * die Kategorie darüber. Genau das war zu sehen.
   */
  align-items: start;
  column-gap: var(--wp--preset--spacing--standard);
  padding-block: var(--wp--preset--spacing--eng);
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

/*
 * Das Datum steht neben der ERSTEN Titelzeile. baseline leistet das hier
 * nicht: Bei zweizeiligem Titel rutscht das Datum eine Zeilenhöhe nach unten
 * und landet neben der zweiten Zeile. Oben ausrichten genügt – die
 * Schriftlinien von Titel und Datum treffen sich dann von selbst
 * (nachgemessen: 0 px Abweichung, ein Ausgleich wäre falsch).
 */
.nrv-weitere-liste .nrv-datum {
  align-self: start;
}

.nrv-weitere-liste .nrv-weitere-bild {
  grid-area: 1 / 1 / 3 / 2;   /* über Kategorie und Titel */
  align-self: start;
  margin: 0;
}

.nrv-weitere-liste .nrv-weitere-bild img {
  display: block;
  width: 96px;
  height: 64px;
  object-fit: cover;
}

.nrv-weitere-liste .nrv-label {
  grid-area: 1 / 2 / 2 / 4;
  margin-block: 0 2px;
}

.nrv-weitere-liste .nrv-weitere-titel {
  grid-area: 2 / 2 / 3 / 3;
}

.nrv-weitere-liste .nrv-datum {
  grid-area: 2 / 3 / 3 / 4;
}

.nrv-weitere-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.25;
  margin: 0;
}

.nrv-weitere-titel a {
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-weitere-titel a:hover,
.nrv-weitere-titel a:focus-visible {
  color: #0E2A4F;
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

.nrv-weitere-liste .nrv-datum {
  margin: 0;
  white-space: nowrap;
}

@media (max-width: 900px) {
  .nrv-neuigkeiten .nrv-raster {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 600px) {
  .nrv-neuigkeiten .nrv-raster {
    grid-template-columns: 1fr;
  }

  /* `grid-template-columns: 1fr` allein genügt hier NICHT – und das sah man
     der Regel nicht an. Die vier Kinder tragen feste `grid-area`-Zuweisungen
     (Label 1/2/2/4, Titel 2/2/3/3, Datum 2/3/3/4). Ein Grid legt für jede
     Zuweisung jenseits der deklarierten Spalten eine **implizite** Spalte an:
     Gemessen standen dort weiter drei Spalten – 0 / 170 / 109 px. Die erste
     bekam nichts ab, das Bild darin fiel auf 0 px Breite zusammen, und der
     Titel brach bei 170 px in Ein-Wort-Zeilen.

     **Das ist derselbe Fehler wie an der Geschichts-Zeitleiste (v2.6.2)**,
     dort bis zur 0-px-Spalte wortgleich beschrieben. Wer Zellen fest zuweist,
     nimmt die Zuweisung im schmalen Layout ausdrücklich zurück – eine neue
     Spaltenzahl allein hebt sie nicht auf.

     Statt alles zu stapeln bleibt das Listenmuster: kleines Bild links,
     darüber Rubrik, Titel und Datum untereinander. Das hält die Liste
     überschaubar, und der Titel bekommt 231 px statt 170. */
  .nrv-weitere-liste > li {
    grid-template-columns: 72px minmax(0, 1fr);
    grid-template-rows: auto auto auto;
    column-gap: 1rem;
    row-gap: 2px;
  }

  .nrv-weitere-liste .nrv-weitere-bild  { grid-area: 1 / 1 / 4 / 2; }
  .nrv-weitere-liste .nrv-label         { grid-area: 1 / 2 / 2 / 3; }
  .nrv-weitere-liste .nrv-weitere-titel { grid-area: 2 / 2 / 3 / 3; }
  .nrv-weitere-liste .nrv-datum         { grid-area: 3 / 2 / 4 / 3; }

  .nrv-weitere-liste .nrv-weitere-bild img {
    width: 72px;
    height: 54px;
  }

  /* Zeilenlängen in `ch` sind für breite Spalten gedacht. Bei 375 px passen
     ohnehin nur rund 18 ch in die Spalte – die großen Werte (54–68 ch) für
     Fließtext greifen dort also gar nicht und bleiben. Wo die Begrenzung
     aber KLEINER ist als die Spalte, schneidet sie ohne Not ab: Der
     Aufmachertitel der Startseite stand auf 18 ch, gemessen 234 px in einer
     327 px breiten Spalte – 93 px verschenkt, und der Titel brach früher um
     als nötig. Betroffen sind nur Titel, weil dort die Schrift groß ist. */
  .nrv-lead-titel,
  .nrv-kopfbild-titel,
  .nrv-seitenkopf-text {
    max-width: none;
  }
}

/* Mobil stapelt die Lead Story: Bild oben, Text darunter. */
@media (max-width: 780px) {
  .nrv-lead .wp-block-columns.nrv-lead-spalten {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--wp--preset--spacing--standard);
  }
}

/* ==========================================================================
   18. Hero-Bühne (v1.2 Abschnitt 4)

   Vorbereitung für eine kurze Bildsequenz, die es noch nicht gibt. Die Hülle
   steht schon, damit das Video später hineinkommt, ohne dass sich das Layout
   verschiebt:

     <figure class="nrv-hero-buehne">
       <video class="nrv-hero-video" muted loop playsinline
              poster="…" preload="metadata">
         <source src="…mp4" type="video/mp4">
       </video>
       <img class="nrv-hero-standbild" src="…" alt="…">
     </figure>

   Solange kein Video da ist, trägt das Standbild die Fläche. Kein
   autoplay-Attribut, solange nichts abzuspielen ist.
   ========================================================================== */

.nrv-hero-buehne {
  position: relative;
  margin: 0;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background-color: var(--wp--preset--color--weiss);
}

.nrv-hero-buehne > .nrv-hero-video,
.nrv-hero-buehne > .nrv-hero-standbild {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Liegt ein Video vor, deckt es das Standbild ab. */
.nrv-hero-buehne > .nrv-hero-video {
  z-index: 1;
}

/* Wer reduzierte Bewegung eingestellt hat, bekommt das Standbild. Das
   geschieht NICHT über `display: none` am Video: Das Standbild ist dessen
   `poster`-Attribut, und ein ausgeblendetes Video nimmt es mit – gemessen
   blieb dann die nackte Cremefläche stehen, mit weißer Schrift darauf.
   Stattdessen hängt `navigation.js` die Videoquelle gar nicht erst ein, und
   das Poster bleibt sichtbar (v2.32.0). */

/* Die Bühne füllt die Spalte über die volle Höhe des Aufmachers. */
.nrv-hero .wp-block-columns > .wp-block-column.nrv-hero-bild {
  align-self: stretch;
  display: flex;
}

.nrv-hero-bild > .wp-block-html,
.nrv-hero-bild .nrv-hero-buehne {
  flex: 1 1 auto;
}

@media (min-width: 781px) {
  .nrv-hero-bild .nrv-hero-buehne {
    aspect-ratio: auto;
  }
}

/* ==========================================================================
   19. Artikelseite
   --------------------------------------------------------------------------
   Drei Spalten an einer gemeinsamen linken Kante: Rail 190, Text 700, Rest
   frei. Der Zielwert sind 65–75 Zeichen je Zeile; vorher waren es rund 110,
   also etwa das Doppelte des noch bequem Lesbaren.

   Beschriftungen stehen auf mindestens 0,75 rem (12 px). Das Briefing lässt
   0,68 rem zu; die Untergrenze des Designsystems ist 12 px, und bei einer
   Mitgliedschaft im Schnitt über 60 gewinnt die Lesbarkeit.

   Farben und Schriften kommen aus theme.json, nicht aus dem Prototyp. Der
   Entwurf nennt eigene Werte (#0E2A4F, #D81D22), die neben Startseite und
   Kopfbereich als zweiter Blauton und zweites Rot aufliefen. Für Text auf
   Weiß gilt weiterhin #0E2A4F – die Markenfarbe #0E2A4F erreicht nur 3,81:1
   und fällt damit unter der Norm durch.
   ========================================================================== */

.nrv-artikel {
  --nrv-rail: 190px;
  --nrv-text: 700px;
  --nrv-spalte: 48px;
  --nrv-rand: 34px;
  max-width: calc(1280px + 2 * var(--nrv-rand));
  margin-inline: auto;
  padding-inline: var(--nrv-rand);
}

/* --- Lesefortschritt ----------------------------------------------------- */

/*
 * Der Fortschrittsbalken liegt im Entwurf auf der roten Unterkante des
 * Kopfbereichs, nicht als eigener Streifen darüber. Er wird deshalb an das
 * klebende header-Element gehängt und überdeckt dessen Kante.
 *
 * Hier stand einmal `position: relative` als Bezugspunkt für den absolut
 * gesetzten Balken. Die Regel steht nach der Sticky-Regel weiter oben und hat
 * sie überschrieben – der Kopf klebte also nicht mehr. Aufgefallen ist das
 * nicht, weil `top: 0` bei `relative` nichts verschiebt und das Ergebnis
 * ungescrollt identisch aussieht. `sticky` erzeugt denselben Bezugspunkt,
 * die Zeile war überflüssig.
 */

/* Der Balken bleibt 2 px und liegt jetzt **über** der 1-px-Kante, statt sie
   zu ersetzen. Dunkel auf hell ist er dadurch besser zu sehen als vorher,
   wo er dieselbe Farbe hatte wie die Linie darunter. */
.nrv-fortschritt {
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 2px;
  z-index: 95;
  pointer-events: none;
}

.nrv-fortschritt span {
  display: block;
  height: 100%;
  background: var(--wp--preset--color--navy);
  transform: scaleX(0);
  transform-origin: left center;
}

/* --- Kopf ---------------------------------------------------------------- */

.nrv-artikel-kopf {
  max-width: 900px;
  margin-block: var(--wp--preset--spacing--sektion) var(--wp--preset--spacing--weit);
}

.nrv-brotkrumen {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  color: var(--wp--preset--color--grau);
  margin-block-end: var(--wp--preset--spacing--standard);
}

.nrv-brotkrumen a {
  color: inherit;
  text-decoration: none;
}

.nrv-brotkrumen a:hover,
.nrv-brotkrumen a:focus-visible {
  color: #0E2A4F;
  text-decoration: underline;
}

.nrv-brotkrumen-trenner {
  margin-inline: 0.5em;
  opacity: 0.6;
}

.nrv-kicker {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  margin-block: 0 var(--wp--preset--spacing--eng);
}

.nrv-kicker::before {
  content: "";
  width: 26px;
  height: 2px;
  background: #0E2A4F;
  flex: 0 0 auto;
}

.nrv-kicker a {
  color: #0E2A4F;
  text-decoration: none;
}

.nrv-kicker a:hover,
.nrv-kicker a:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.25em;
}

.nrv-artikel-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  /* Spezifikation vom 15.10.2026: H1 54 px Desktop, 36 px Mobil, Gewicht 500,
     Zeilenhöhe 1,08.

     Das nimmt Benes 75-%-Vorgabe vom 13.10.2026 teilweise zurück: Damals ging
     es von 65,6 px auf 49,2 px, jetzt stehen 54 px – also weiterhin deutlich
     kleiner als vorher, aber 10 % über seinem Wert. Die Spezifikation ist die
     jüngere und laut Übergabe die verbindliche Quelle; sollte sich 54 px als
     zu groß erweisen, gehört das als bewusste Abweichung nach
     daten/entwurf/abweichungen.json und nicht hier hineingeschrieben. */
  font-size: clamp(2.25rem, 3.75vw, 3.375rem);
  line-height: 1.08;
  font-weight: 500;
  color: var(--wp--preset--color--navy);
  text-wrap: balance;
  margin-block: 0 var(--wp--preset--spacing--standard);
}

/* Lead nach Spezifikation: Cormorant Garamond, 24–26 px (mobil 20–21),
   Gewicht 500, Zeilenhöhe 1,2–1,25. Stand bis hierher in der Fließtextschrift –
   einer der fünf Schriftbefunde, die nach dem Wechsel übrig blieben. */
.nrv-vorspann {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.28rem, 1.9vw, 1.5625rem);
  line-height: 1.22;
  font-weight: 500;
  color: var(--wp--preset--color--navy);
  text-wrap: pretty;
  margin-block: 0 var(--wp--preset--spacing--weit);
}

/*
 * Versal-Initial. Der Entwurf setzt es an den ERSTEN TEXTABSATZ, nicht an den
 * Vorspann – dort wirkt es wie ein zweiter Seitenanfang. Das Briefing sagte
 * „Vorspann"; maßgeblich ist der Prototyp, und der Bildschirmabzug der
 * Redaktion zeigt es ebenso.
 *
 * Der Absatz ist KEIN direktes Kind von .nrv-artikel-text: WordPress legt den
 * Beitragsinhalt in einen eigenen .entry-content-Container. Ein Selektor mit
 * direktem Kindbezug greift deshalb ins Leere.
 */
/* Seit v2.42.0 an der Klasse, nicht an der Position: `p:first-of-type` traf
   bei 516 von 1.957 Beiträgen die Bildunterschrift statt des Fließtextes.
   `nrv_andreaskreuz_initial_markieren()` setzt sie auf den ersten echten
   Textabsatz – oder auf keinen. */
.nrv-artikel-text .entry-content > p.nrv-initial::first-letter {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 3.9rem;
  font-weight: 600;
  line-height: 0.82;
  float: left;
  padding-inline-end: 0.09em;
  padding-block-start: 0.04em;
  color: var(--wp--preset--color--navy);
}

/* --- Autorenzeile -------------------------------------------------------- */

.nrv-autorenzeile {
  display: flex;
  flex-wrap: wrap;
  gap: var(--wp--preset--spacing--standard);
  align-items: center;
  justify-content: space-between;
  border-block: 1px solid var(--wp--preset--color--linie);
  padding-block: var(--wp--preset--spacing--eng);
}

.nrv-autorenzeile-links {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.nrv-autor-avatar {
  border-radius: 50%;
  display: block;
}

.nrv-autor-name {
  display: block;
  font-weight: 700;
  font-size: 0.95rem;
  color: var(--wp--preset--color--navy);
}

.nrv-autor-meta {
  display: block;
  font-size: 0.85rem;
  color: var(--wp--preset--color--grau);
}

.nrv-teilen-leiste {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.nrv-teilen-label {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
  margin-inline-end: 0.25rem;
}

.nrv-teilen-knopf {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  /* 36 px waren zu klein für einen Finger – gemessen 38 × 38 mit Rahmen,
     nötig sind 44. Auf dem Telefon sind das die Knöpfe, die am ehesten
     danebengehen, weil vier davon nebeneinander stehen. */
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid var(--wp--preset--color--linie);
  background: none;
  color: var(--wp--preset--color--navy);
  text-decoration: none;
  cursor: pointer;
  transition: background-color 0.18s, border-color 0.18s, color 0.18s;
}

.nrv-teilen-knopf svg {
  width: 15px;
  height: 15px;
}

.nrv-teilen-knopf:hover,
.nrv-teilen-knopf:focus-visible {
  background: var(--wp--preset--color--navy);
  border-color: var(--wp--preset--color--navy);
  color: var(--wp--preset--color--weiss);
}

.nrv-rail-liste a,
.nrv-teilen-breit {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;   /* gemessen 40 px – knapp unter Fingergröße */
}

.nrv-rail-liste svg,
.nrv-teilen-breit svg {
  width: 15px;
  height: 15px;
  flex: 0 0 auto;
}

@media (prefers-reduced-motion: reduce) {
  .nrv-teilen-knopf {
    transition: none !important;
  }
}

/* --- Aufmacherbild ------------------------------------------------------- */

.nrv-artikel-bild {
  margin-block-end: var(--wp--preset--spacing--weit);
}

.nrv-aufmacher img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  /*
   * 94 % der Beitragsbilder sind 3:2. Im 16:9-Slot fehlen davon 21 % der
   * Höhe – bei mittigem Zuschnitt je zur Hälfte oben und unten, also genau
   * dort, wo auf Gruppenfotos die Köpfe sind. Der Ausschnitt wird deshalb
   * etwas nach oben gezogen.
   *
   * Das ist der RÜCKFALL für Bilder ohne gesetzten Blickpunkt. Seit v2.7
   * gibt es den Fokuspunkt aus Abschnitt 8 des Profils; er kommt als
   * Inline-Angabe ans Bild und schlägt diese Regel. Deshalb hier kein
   * `!important` – das würde den Blickpunkt wirkungslos machen.
   */
  object-position: center 38%;
}

.nrv-bildzeile {
  display: flex;
  flex-wrap: wrap;
  gap: var(--wp--preset--spacing--standard);
  justify-content: space-between;
  margin-block-start: 0.6rem;
  font-size: 0.78rem;
  line-height: 1.5;
  color: var(--wp--preset--color--grau);
}

.nrv-bildcredit {
  white-space: nowrap;
}

/* --- Raster: Rail, Text, Weißraum ---------------------------------------- */

.nrv-artikel-raster {
  display: grid;
  grid-template-columns: var(--nrv-rail) var(--nrv-text) 1fr;
  column-gap: var(--nrv-spalte);
  align-items: start;
}

.nrv-rail {
  position: sticky;
  top: 110px;
  grid-column: 1;
}

.nrv-rail-block + .nrv-rail-block {
  margin-block-start: var(--wp--preset--spacing--locker);
}

.nrv-rail-kopf {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
  border-block-end: 1px solid var(--wp--preset--color--linie);
  padding-block-end: 0.5rem;
  margin-block: 0 0.75rem;
}

.nrv-rail-liste,
.nrv-rail-tags {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nrv-rail-liste li + li {
  margin-block-start: 0.45rem;
}

.nrv-rail-liste a {
  font-size: 0.9rem;
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-rail-liste a:hover,
.nrv-rail-liste a:focus-visible {
  color: #0E2A4F;
  text-decoration: underline;
}

.nrv-rail-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}

.nrv-rail-tags a {
  display: inline-block;
  border: 1px solid var(--wp--preset--color--linie);
  padding: 0.3rem 0.55rem;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-rail-tags a:hover,
.nrv-rail-tags a:focus-visible {
  border-color: #0E2A4F;
  color: #0E2A4F;
}

/* --- Textkörper ---------------------------------------------------------- */

.nrv-artikel-text {
  grid-column: 2;
  min-width: 0;
}

.nrv-artikel-text > * {
  max-width: var(--nrv-text);
}

.nrv-artikel-text p {
  /*
   * Das Briefing nennt 1,115 rem UND 65–75 Zeichen je Zeile. Beides zugleich
   * geht bei 700 px Spaltenbreite nicht auf: gemessen waren es 81 Zeichen.
   * Da die Zeilenlänge das eigentliche Ziel ist und das Raster an den 700 px
   * hängt, ist die Schrift der Stellhebel – 1,19 rem bringt rund 74 Zeichen.
   * Für eine Leserschaft im Schnitt über 60 ist die größere Schrift ohnehin
   * die bessere der beiden Abweichungen.
   */
  font-size: 1.125rem;
  line-height: 1.72;
  text-wrap: pretty;
  margin-block: 0 1.35em;
}

.nrv-artikel-text h2 {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.85rem;
  line-height: 1.2;
  font-weight: 500;
  color: var(--wp--preset--color--navy);
  text-wrap: balance;
  margin-block: var(--wp--preset--spacing--weit) var(--wp--preset--spacing--eng);
}

.nrv-artikel-text h3 {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.45rem;
  line-height: 1.25;
  font-weight: 600;
  color: var(--wp--preset--color--navy);
  margin-block: var(--wp--preset--spacing--locker) var(--wp--preset--spacing--haar);
}

/* Bildstrecken dürfen in den Weißraum rechts laufen. */
.nrv-artikel-text .wp-block-gallery {
  grid-column: 2 / 4;
  max-width: calc(var(--nrv-text) + var(--nrv-spalte) + 260px);
  margin-block: var(--wp--preset--spacing--weit);
}

.nrv-artikel-text .wp-block-image {
  margin-block: var(--wp--preset--spacing--weit);
}

.nrv-artikel-text figcaption {
  font-size: 0.78rem;
  line-height: 1.5;
  color: var(--wp--preset--color--grau);
  margin-block-start: 0.5rem;
}

/*
 * Zwei Arten von Zitat, bewusst unterschiedlich behandelt:
 *
 * 1. Das herausgehobene Zitat (Pullquote) ist eine redaktionelle Entscheidung
 *    und bricht nach links ins Rail aus – der einzige gewollte Rasterbruch.
 * 2. Ein einfaches <blockquote> steht in 49 migrierten Beiträgen als
 *    Fließzitat im Text, teils über 300 Zeichen. Mit Ausbruch und 1,72 rem
 *    würde daraus eine Schlagzeile mitten im Absatz. Es bleibt deshalb in der
 *    Textspalte und nur leicht abgesetzt.
 */
.nrv-artikel-text .wp-block-pullquote,
.nrv-artikel-text .wp-block-quote {
  margin-inline-start: -70px;
  max-width: calc(var(--nrv-text) + 70px);
  border-inline-start: 3px solid #0E2A4F;
  padding-inline-start: 1.4rem;
  margin-block: var(--wp--preset--spacing--weit);
}

/*
 * Fließzitat aus dem Altbestand: kein Ausbruch, kleinere Schrift.
 *
 * Wichtig ist das DIREKTE Kind: WordPress' Pullquote-Block enthält selbst ein
 * <blockquote> ohne Klasse, verschachtelt in einer <figure>. Ein bloßes
 * `blockquote:not([class])` trifft das mit – und schlägt die Pullquote-Regel
 * sogar, weil `:not([class])` die Spezifität erhöht. Das Ergebnis war ein
 * herausgehobenes Zitat in Fließtextgröße.
 */
.nrv-artikel-text .entry-content > blockquote:not([class]) {
  margin-inline: 0;
  max-width: var(--nrv-text);
  border-inline-start: 2px solid var(--wp--preset--color--linie);
  padding-inline-start: 1.2rem;
  margin-block: var(--wp--preset--spacing--locker);
}

.nrv-artikel-text .entry-content > blockquote:not([class]),
.nrv-artikel-text .entry-content > blockquote:not([class]) p,
.nrv-artikel-text .entry-content > blockquote:not([class]) em {
  font-size: 1.125rem;
  line-height: 1.6;
  font-style: normal;
  color: var(--wp--preset--color--navy);
}

.nrv-artikel-text .wp-block-pullquote p,
.nrv-artikel-text .wp-block-quote p {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.72rem;
  line-height: 1.32;
  font-weight: 400;
  color: var(--wp--preset--color--navy);
  margin-block-end: 0.4rem;
}

.nrv-artikel-text .wp-block-pullquote cite,
.nrv-artikel-text .wp-block-quote cite {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-style: normal;
  color: var(--wp--preset--color--grau);
}

/* --- Teilen unten, Autorenbox -------------------------------------------- */

.nrv-teilen-unten {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  border-block-start: 1px solid var(--wp--preset--color--linie);
  padding-block-start: var(--wp--preset--spacing--standard);
  margin-block-start: var(--wp--preset--spacing--weit);
}

.nrv-teilen-breit {
  border: 1px solid var(--wp--preset--color--linie);
  padding: 0.5rem 0.9rem;
  font-size: 0.85rem;
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-teilen-breit:hover,
.nrv-teilen-breit:focus-visible {
  border-color: #0E2A4F;
  color: #0E2A4F;
}

.nrv-autorbox {
  display: flex;
  gap: var(--wp--preset--spacing--standard);
  background: var(--wp--preset--color--weiss);
  padding: var(--wp--preset--spacing--locker);
  margin-block-start: var(--wp--preset--spacing--weit);
}

.nrv-autorbox-bild {
  border-radius: 50%;
  flex: 0 0 auto;
}

.nrv-autorbox-label {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #0E2A4F;
  margin-block: 0 0.25rem;
}

.nrv-autorbox-name {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--wp--preset--color--navy);
  margin-block: 0 0.4rem;
}

.nrv-autorbox-vita {
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--wp--preset--color--grau);
  margin-block: 0 0.6rem;
}

.nrv-autorbox-link a {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #0E2A4F;
  text-decoration: none;
}

.nrv-autorbox-link a:hover,
.nrv-autorbox-link a:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.25em;
}

/* --- Vorheriger / Nächster ----------------------------------------------- */

.nrv-artikel-nachbar {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  border-block-start: 1px solid var(--wp--preset--color--linie);
  margin-block-start: var(--wp--preset--spacing--sektion);
}

/* --- Nachbarbeiträge als Karten mit Vorschaubild --- */

.nrv-nachbar {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr);
  gap: var(--wp--preset--spacing--standard);
  align-items: center;
  padding-block: var(--wp--preset--spacing--locker);
  text-decoration: none;
}

.nrv-nachbar-naechst {
  grid-template-columns: minmax(0, 1fr) 96px;
  text-align: right;
  border-inline-start: 1px solid var(--wp--preset--color--linie);
  padding-inline-start: 38px;
}

.nrv-nachbar-vorher {
  padding-inline-end: 38px;
}

.nrv-nachbar-bild {
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--wp--preset--color--weiss);
}

.nrv-nachbar-bild img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.nrv-nachbar-naechst .nrv-nachbar-bild {
  order: 2;
}

.nrv-nachbar-label {
  display: block;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
  margin-block-end: 0.45rem;
}

.nrv-nachbar-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.18rem;
  font-weight: 500;
  line-height: 1.28;
  color: var(--wp--preset--color--navy);
  text-wrap: balance;
}

.nrv-nachbar:hover .nrv-nachbar-titel,
.nrv-nachbar:focus-visible .nrv-nachbar-titel,
.nrv-nachbar:hover .nrv-nachbar-label,
.nrv-nachbar:focus-visible .nrv-nachbar-label {
  color: #0E2A4F;
}

@media (max-width: 900px) {
  .nrv-nachbar-naechst {
    grid-template-columns: 96px minmax(0, 1fr);
    text-align: left;
    border-inline-start: 0;
    border-block-start: 1px solid var(--wp--preset--color--linie);
    padding-inline-start: 0;
  }
  .nrv-nachbar-naechst .nrv-nachbar-bild { order: 0; }
  .nrv-nachbar-vorher { padding-inline-end: 0; }
}

.nrv-artikel-nachbar .wp-block-post-navigation-link {
  padding: var(--wp--preset--spacing--locker) var(--wp--preset--spacing--standard);
  margin: 0;
}

.nrv-artikel-nachbar .nrv-nachbar-naechster {
  text-align: right;
  border-inline-start: 1px solid var(--wp--preset--color--linie);
}

.nrv-artikel-nachbar a {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.2rem;
  font-weight: 700;
  line-height: 1.3;
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-artikel-nachbar a:hover,
.nrv-artikel-nachbar a:focus-visible {
  color: #0E2A4F;
}

.nrv-artikel-nachbar .post-navigation-link-previous::before,
.nrv-artikel-nachbar .post-navigation-link-next::after {
  display: block;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
  margin-block-end: 0.4rem;
}

.nrv-artikel-nachbar .post-navigation-link-previous::before {
  content: "← Vorheriger Beitrag";
}

.nrv-artikel-nachbar .post-navigation-link-next::after {
  content: "Nächster Beitrag →";
  margin-block: 0.4rem 0;
}

/* --- Mehr aus der Rubrik ------------------------------------------------- */

.nrv-mehr-aus {
  padding-block: var(--wp--preset--spacing--sektion);
  margin-block-start: var(--wp--preset--spacing--sektion);
}

.nrv-mehr-liste {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--wp--preset--spacing--weit);
}

.nrv-mehr-liste > li {
  margin-block: 0;
}

.nrv-mehr-liste .nrv-karte-bild img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  transition: transform 500ms ease;
}

.nrv-mehr-liste .nrv-karte-bild {
  overflow: hidden;
  margin-block-end: var(--wp--preset--spacing--eng);
}

.nrv-mehr-liste .nrv-karte-bild:hover img,
.nrv-mehr-liste .nrv-karte-bild:focus-within img {
  transform: scale(1.035);
}

/* --- Breakpoints --------------------------------------------------------- */

@media (max-width: 1180px) {
  .nrv-artikel-raster {
    grid-template-columns: minmax(0, var(--nrv-text)) 1fr;
  }

  .nrv-rail {
    display: none;
  }

  .nrv-artikel-text {
    grid-column: 1;
  }

  .nrv-artikel-text .wp-block-pullquote,
  .nrv-artikel-text .wp-block-quote {
    margin-inline-start: 0;
    max-width: var(--nrv-text);
  }

  .nrv-artikel-text .wp-block-gallery {
    grid-column: auto;
  }
}

@media (max-width: 900px) {
  .nrv-artikel-raster {
    grid-template-columns: minmax(0, 1fr);
  }

  .nrv-artikel-text > *,
  .nrv-artikel-text .wp-block-gallery {
    max-width: none;
  }

  .nrv-artikel-nachbar {
    grid-template-columns: minmax(0, 1fr);
  }

  .nrv-artikel-nachbar .nrv-nachbar-naechster {
    text-align: left;
    border-inline-start: 0;
    border-block-start: 1px solid var(--wp--preset--color--linie);
  }

  .nrv-mehr-liste {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (prefers-reduced-motion: reduce) {
  .nrv-fortschritt {
    display: none;
  }

  .nrv-mehr-liste .nrv-karte-bild img {
    transition: none !important;
  }
}

/* --- Druck --------------------------------------------------------------- */

@media print {
  .nrv-fortschritt,
  .nrv-rail,
  .nrv-teilen-leiste,
  .nrv-teilen-unten,
  .nrv-artikel-nachbar,
  .nrv-mehr-aus,
  header.wp-block-template-part,
  footer.wp-block-template-part {
    display: none !important;
  }

  .nrv-artikel-raster {
    display: block;
  }

  .nrv-artikel-text > * {
    max-width: none;
  }
}

/* --- Ergebnisbox (Blockmuster „NRV Bausteine") ---------------------------- */

.nrv-ergebnisbox {
  background: var(--wp--preset--color--weiss);
  border-block-start: 3px solid var(--wp--preset--color--navy);
  padding: var(--wp--preset--spacing--locker);
  margin-block: var(--wp--preset--spacing--weit);
}

.nrv-ergebnis-kopf {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--wp--preset--color--navy);
  margin-block: 0 0.2rem;
}

.nrv-ergebnis-unterzeile {
  font-size: 0.85rem;
  color: var(--wp--preset--color--grau);
  margin-block: 0 var(--wp--preset--spacing--standard);
}

.nrv-ergebnis-zeile {
  display: grid;
  grid-template-columns: 2.2rem minmax(0, 1fr) auto;
  grid-template-rows: auto auto;
  column-gap: var(--wp--preset--spacing--eng);
  align-items: start;
  padding-block: 0.7rem;
  border-block-start: 1px solid var(--wp--preset--color--linie);
}

.nrv-ergebnis-zeile > * {
  margin-block: 0;
}

/* Der Rang kommt aus einem CSS-Zähler – so stimmt die Reihenfolge auch,
   wenn die Redaktion eine Zeile einfügt oder löscht. Die getippte Ziffer im
   Blockmuster bleibt als Rückfall für alte Inhalte sichtbar. */
.nrv-ergebnisbox {
  counter-reset: nrv-rang;
}

.nrv-ergebnis-zeile {
  counter-increment: nrv-rang;
}

.nrv-ergebnis-rang {
  grid-area: 1 / 1 / 3 / 2;
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.1;
  color: var(--wp--preset--color--grau);
}

.nrv-ergebnis-erster .nrv-ergebnis-rang,
.nrv-ergebnis-erster .nrv-ergebnis-name {
  color: #0E2A4F;
}

.nrv-ergebnis-name {
  grid-area: 1 / 2 / 2 / 3;
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.15rem;
  font-weight: 700;
  line-height: 1.25;
  color: var(--wp--preset--color--navy);
}

.nrv-ergebnis-club {
  grid-area: 2 / 2 / 3 / 3;
  font-size: 0.82rem;
  color: var(--wp--preset--color--grau);
}

.nrv-ergebnis-punkte {
  grid-area: 1 / 3 / 2 / 4;
  font-size: 0.9rem;
  color: var(--wp--preset--color--grau);
  white-space: nowrap;
}

.nrv-ergebnis-link {
  margin-block: var(--wp--preset--spacing--standard) 0;
}

.nrv-ergebnis-link a {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #0E2A4F;
  text-decoration: none;
}

.nrv-ergebnis-link a:hover,
.nrv-ergebnis-link a:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.25em;
}

/* --- Handlungsaufforderung im Fließtext ---------------------------------- */

/* Die Redaktionstexte kennzeichnen Handlungsaufforderungen mit einem Pfeil.
   Sie werden als eigener Absatz ausgegeben, damit sie nicht als Überschrift
   missverstanden werden – weder von Screenreadern noch im Editor. */
/* Entspricht .lnk im Entwurf:
     padding:10px 0; font-size:14px; font-weight:600;
     text-decoration:underline; Unterstreichung in Akzent; Abstand 6px
   Die Versalien mit 0,14em Sperrsatz sind entfallen – sie stammten aus der
   Zeit, als .nrv-cta ein Label war. Der Entwurf führt den Handlungslink als
   unterstrichenen Text, nicht als Versalienzeile. */
.nrv-cta {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.875rem;
  font-weight: 600;
  letter-spacing: normal;
  text-transform: none;
  text-decoration: underline;
  text-decoration-color: var(--wp--preset--color--akzent);
  text-underline-offset: 6px;
  margin-block: var(--wp--preset--spacing--standard);
}

/* **Der Pfeil steht hinten, nicht vorn.**
 *
 * Bis v2.19.1 setzte ein `::before` ihn vor die Beschriftung. Das stammt aus
 * der Zeit, als die Redaktionstexte Handlungsaufforderungen mit vorangestelltem
 * Pfeil lieferten („→ Kollektion ansehen"); beim Import wurde der Pfeil aus dem
 * Text genommen und ins CSS verlegt.
 *
 * Zwei Dinge sind daran falsch:
 *
 * - **Der Artboard „NRV – Footer mit Sitemap und Stiftung" setzt ihn hinten**:
 *   „Route planen ↗", „Alle Ansprechpartner →".
 * - Ein `::before` rückt die Beschriftung ein. Im Fußbereich stand „Route
 *   planen" dadurch 22 px weiter rechts als die Adresse darüber – der Grund,
 *   warum die beiden Verweise dort „irgendwo" wirkten.
 *
 * Externe Ziele bekommen den schrägen Pfeil, wie im Entwurf. */
.nrv-cta::after {
  content: "→";
  margin-inline-start: 0.4em;
  color: currentColor;
}

.nrv-cta:has(a[target="_blank"])::after {
  content: "↗";
}

.nrv-cta a {
  font-weight: 600;
  color: #0E2A4F;
  text-decoration: none;
}

.nrv-cta a:hover,
.nrv-cta a:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.25em;
}

/* ==========================================================================
   20. Newsübersicht: gewichtete Anordnung
   --------------------------------------------------------------------------
   Das Anforderungsprofil verlangt in Abschnitt 18 ausdrücklich, dass die
   Übersicht keine Reihe gleicher Kacheln ist: ein großer Hauptaufmacher,
   einige hervorgehobene, dann normale Meldungen.

   Umgesetzt über ein Sechs-Spalten-Raster und die Position im Raster, nicht
   über getrennte Abfragen. Grund: Die Blättern-Funktion hängt an genau einer
   Abfrage; drei Abfragen mit Versatz würden ab Seite zwei durcheinander
   geraten. Die Hervorhebung gilt deshalb auch nur auf der ersten Seite –
   WordPress setzt ab Seite zwei die Klasse `paged` am body.
   ========================================================================== */

.nrv-newsraster {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: var(--wp--preset--spacing--weit);
  align-items: start;
}

.nrv-newsraster > li {
  margin-block: 0;
  grid-column: span 2;          /* Vorgabe: Drittelbreite */
  display: flex;
  flex-direction: column;
}

/* Hauptaufmacher: volle Breite, Bild und Text nebeneinander. */
body:not(.paged) .nrv-newsraster > li:first-child {
  grid-column: span 6;
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: var(--wp--preset--spacing--weit);
  align-items: center;
}

/* Zwei hervorgehobene: je halbe Breite. */
body:not(.paged) .nrv-newsraster > li:nth-child(2),
body:not(.paged) .nrv-newsraster > li:nth-child(3) {
  grid-column: span 3;
}

.nrv-news-bild {
  margin-block: 0 var(--wp--preset--spacing--eng);
  overflow: hidden;
}

.nrv-news-bild img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  transition: transform 500ms ease;
}

.nrv-news-bild:hover img,
.nrv-news-bild:focus-within img {
  transform: scale(1.035);
}

/* Der Textteil ist hier KEINE Karte, sondern Satz auf der Grundfläche.
   `.nrv-karte` setzt weiß als Hintergrund – mit padding 0 klebt diese Fläche
   genau an der Textkontur und endet je nach Teaserlänge auf anderer Höhe:
   unter jedem Bild ein unterschiedlich hoher weißer Kasten. Solange die
   Grundfläche Off-White war, fiel das nicht auf; auf Creme ist der Unterschied
   sichtbar. Die Entwürfe kennen hier keine Fläche – sie setzen den Text direkt
   auf Creme. Deshalb transparent statt weiß. */
.nrv-newsraster .nrv-karte {
  padding: 0;
  box-shadow: none;
  background-color: transparent;
}

.nrv-news-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.35rem;
  font-weight: 700;
  line-height: 1.22;
  text-wrap: balance;
  margin-block: 0 var(--wp--preset--spacing--haar);
}

.nrv-news-titel a {
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-news-titel a:hover,
.nrv-news-titel a:focus-visible {
  color: #0E2A4F;
}

.nrv-newsraster .wp-block-post-excerpt {
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--wp--preset--color--grau);
  margin-block: 0 var(--wp--preset--spacing--haar);
}

/* Größenstaffelung: Aufmacher deutlich, die beiden Zweiten dazwischen. */
body:not(.paged) .nrv-newsraster > li:first-child .nrv-news-titel {
  font-size: clamp(1.9rem, 3.2vw, 2.6rem);
  font-weight: 500;
  line-height: 1.1;
}

body:not(.paged) .nrv-newsraster > li:first-child .wp-block-post-excerpt {
  font-size: 1.08rem;
}

body:not(.paged) .nrv-newsraster > li:nth-child(2) .nrv-news-titel,
body:not(.paged) .nrv-newsraster > li:nth-child(3) .nrv-news-titel {
  font-size: 1.6rem;
  font-weight: 600;
}

@media (max-width: 1100px) {
  .nrv-newsraster { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .nrv-newsraster > li { grid-column: span 2; }
  body:not(.paged) .nrv-newsraster > li:first-child { grid-column: span 4; }
  body:not(.paged) .nrv-newsraster > li:nth-child(2),
  body:not(.paged) .nrv-newsraster > li:nth-child(3) { grid-column: span 2; }
}

@media (max-width: 720px) {
  .nrv-newsraster { grid-template-columns: minmax(0, 1fr); }
  .nrv-newsraster > li,
  body:not(.paged) .nrv-newsraster > li:first-child,
  body:not(.paged) .nrv-newsraster > li:nth-child(2),
  body:not(.paged) .nrv-newsraster > li:nth-child(3) {
    grid-column: 1;
  }
  body:not(.paged) .nrv-newsraster > li:first-child {
    display: flex;
    flex-direction: column;
  }
}

@media (prefers-reduced-motion: reduce) {
  .nrv-news-bild img { transition: none !important; }
}

/* ==========================================================================
   21. Servicezeile und Suche
   ========================================================================== */

:root {
  --nrv-servicezeile-hoehe: 60px;
}

.nrv-servicezeile {
  min-height: var(--nrv-servicezeile-hoehe);
  padding-block: 0;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;   /* 13 px – über der 12-px-Grenze des Designsystems */
  letter-spacing: 0.04em;
}

.nrv-servicezeile > .wp-block-group {
  min-height: var(--nrv-servicezeile-hoehe);
  gap: clamp(1rem, 2vw, 2rem);
  padding-inline: var(--nrv-rand, 1.5rem);
}

/* blockGap würde die Kinder hier untereinander schieben. */
.nrv-servicezeile > .wp-block-group > * {
  margin-block: 0;
}

/* Der Entwurf setzt die Servicezeile HELL auf Creme, nicht dunkel. Damit
   kehren sich alle Farbrollen um: Schrift in Tinte, Markierung in Tinte.
   Die alte Fassung war für dunklen Grund gebaut – jede Regel, die dort Weiß
   setzte, wäre hier unsichtbar. */
/* Der Knopf „Mitglied werden" ist ausgenommen: Er steht als einziges Element
   der Zeile auf dunkler Fläche. Ohne `:not()` färbt die Regel seine Schrift
   in Tinte – schwarz auf schwarz, der Knopf wirkte leer. Gemessen
   rgb(14, 42, 79) auf rgb(14, 42, 79). */
.nrv-servicezeile a:not(.wp-element-button) {
  color: var(--wp--preset--color--navy);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  padding-block-end: 2px;
  transition: border-color 0.15s ease;
}

.nrv-servicezeile a:not(.wp-element-button):hover,
.nrv-servicezeile a:not(.wp-element-button):focus-visible {
  border-bottom-color: var(--wp--preset--color--navy);
}

/* Entspricht .util im Entwurf:
   font-size:13px; font-weight:600; letter-spacing:.16em; text-transform:uppercase;
   display:inline-flex; align-items:center; min-height:44px
   Die 44 px sind die Klickflaeche, nicht Gestaltung. */
.nrv-service-spenden a,
.nrv-service-login a {
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}

/* --- Das Suchfeld in der Servicezeile ------------------------------------ */

.nrv-servicezeile .nrv-suche {
  width: min(200px, 30vw);
}

.nrv-servicezeile .nrv-suche .wp-block-search__inside-wrapper {
  border: 1px solid var(--wp--preset--color--linie);
  background: var(--wp--preset--color--weiss);
  padding: 0;
}

.nrv-servicezeile .nrv-suche .wp-block-search__input {
  background: transparent;
  border: 0;
  color: var(--wp--preset--color--navy);
  font-family: var(--wp--preset--font-family--manrope);
  /* Spezifikation: Eingabefeld 15 px Desktop, 16 px Mobil – die 16 px sind
     kein Gestaltungswert, darunter zoomt Safari auf dem iPhone die Seite. */
  font-size: 0.9375rem;
  padding: 0.35rem 0.6rem;
  min-height: 32px;
}

.nrv-servicezeile .nrv-suche .wp-block-search__input::placeholder {
  color: var(--wp--preset--color--grau);
  opacity: 1;
}

.nrv-servicezeile .nrv-suche .wp-block-search__button {
  background: transparent;
  border: 0;
  padding: 0 0.5rem;
  color: var(--wp--preset--color--navy);
  cursor: pointer;
}

.nrv-servicezeile .nrv-suche .wp-block-search__button svg {
  width: 20px;
  height: 20px;
  fill: currentColor;
}

.nrv-servicezeile .nrv-suche .wp-block-search__inside-wrapper:focus-within {
  border-color: var(--wp--preset--color--navy);
  background: var(--wp--preset--color--weiss);
}

/* Unter 780 px reicht die Breite nicht für Feld, Login und Spenden
   nebeneinander. Das Feld rückt deshalb in eine eigene Zeile darunter.
   Es auszublenden wäre keine Lösung: Der Navigationsblock von WordPress nimmt
   kein Suchfeld auf, auf dem Telefon gäbe es dann gar keine Suche mehr. */
@media (max-width: 780px) {
  :root {
    --nrv-servicezeile-hoehe: 82px;
  }
  .nrv-servicezeile > .wp-block-group {
    flex-wrap: wrap;
    padding-block: 0.5rem;
    row-gap: 0.5rem;
  }
  .nrv-servicezeile .nrv-suche {
    order: 2;
    flex-basis: 100%;
    width: auto;
    margin-inline-end: 0;
  }
  .nrv-service-login {
    order: 1;
  }
  .nrv-service-spenden {
    order: 1;
  }
}

/* --- Suchergebnisseite ---------------------------------------------------- */

.nrv-suchseite {
  padding-block: clamp(2rem, 5vw, 3.5rem) clamp(3rem, 7vw, 5rem);
}

.nrv-suchkopf {
  border-bottom: 1px solid var(--wp--preset--color--linie);
  padding-block-end: 1.75rem;
  margin-block-end: 2.5rem;
}

.nrv-suchtitel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.9rem, 4vw, 2.75rem);
  line-height: 1.15;
  margin: 0;
}

/* WordPress setzt den Begriff in ein span – das hebt ihn hervor. */
.nrv-suchtitel span {
  font-style: italic;
  color: var(--wp--preset--color--navy);
}

.nrv-suchzahl {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
  margin: 0.5rem 0 1.5rem;
}

.nrv-suche-gross {
  max-width: 480px;
}

.nrv-suche-gross .wp-block-search__inside-wrapper {
  border: 1px solid var(--wp--preset--color--linie);
  padding: 0;
}

.nrv-suche-gross .wp-block-search__input {
  border: 0;
  background: transparent;
  padding: 0.6rem 0.8rem;
  font-size: 1rem;
}

.nrv-suche-gross .wp-block-search__button {
  background: transparent;
  border: 0;
  padding: 0 0.7rem;
  color: var(--wp--preset--color--navy);
  cursor: pointer;
}

.nrv-suche-gross .wp-block-search__inside-wrapper:focus-within {
  border-color: var(--wp--preset--color--navy);
}

/* --- Trefferliste --------------------------------------------------------- */

.nrv-trefferliste {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nrv-trefferliste > li {
  margin-block: 0;   /* blockGap darf die Reihen nicht verschieben */
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

.nrv-treffer {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr);
  gap: 1.75rem;
  align-items: start;
  padding-block: 1.75rem;
}

.nrv-treffer > * {
  margin-block: 0;
}

.nrv-treffer-bild img {
  aspect-ratio: 3 / 2;   /* 94 % des Bestands liegt in diesem Format vor */
  object-fit: cover;
  width: 100%;
  display: block;
}

/* Treffer ohne Bild sollen die Textspalte nicht einrücken. */
.nrv-treffer:not(:has(.nrv-treffer-bild img)) {
  grid-template-columns: minmax(0, 1fr);
}

.nrv-treffer-text > * {
  margin-block: 0;
}

.nrv-trefferart {
  color: var(--wp--preset--color--navy);
  margin-block-end: 0.4rem;
}

.nrv-treffer-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.25rem, 2.2vw, 1.6rem);
  line-height: 1.2;
  margin-block-end: 0.5rem;
}

.nrv-treffer-titel a {
  color: inherit;
  text-decoration: none;
}

.nrv-treffer-titel a:hover,
.nrv-treffer-titel a:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.nrv-treffer-auszug {
  font-size: 1rem;
  line-height: 1.6;
  max-width: 62ch;
  margin-block-end: 0.6rem;
  color: var(--wp--preset--color--grau);
}

.nrv-treffer .nrv-datum {
  margin-block-start: 0;
}

@media (max-width: 720px) {
  .nrv-treffer {
    grid-template-columns: minmax(0, 1fr);
    gap: 1rem;
  }
  .nrv-treffer-bild img {
    aspect-ratio: 16 / 9;
  }
}

/* --- Nichts gefunden ------------------------------------------------------ */

.nrv-suchhilfe {
  max-width: 62ch;
  padding-block: 1rem 3rem;
}

.nrv-suchhilfe-text {
  font-size: 1.125rem;
  line-height: 1.6;
}

.nrv-suchhilfe-rubriken {
  list-style: none;
  margin: 1.5rem 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
}

.nrv-suchhilfe-rubriken li {
  margin-block: 0;
}

.nrv-suchhilfe-rubriken a {
  display: inline-flex;
  align-items: baseline;
  gap: 0.45rem;
  border: 1px solid var(--wp--preset--color--linie);
  padding: 0.4rem 0.8rem;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  letter-spacing: 0.03em;
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-suchhilfe-rubriken a:hover,
.nrv-suchhilfe-rubriken a:focus-visible {
  border-color: var(--wp--preset--color--navy);
  color: #0E2A4F;
}

.nrv-suchhilfe-zahl {
  font-size: 0.75rem;
  color: var(--wp--preset--color--grau);
}

/* WordPress gibt Gruppen mit „constrained“-Layout einen globalen Innenabstand
   und zentriert Kinder, die schmaler sind als der Container. In der
   Trefferliste rückt das den Auszug gegenüber Kicker und Titel ein und schiebt
   das Suchfeld in die Mitte. Beides ist hier unerwünscht. */
.nrv-treffer-text.has-global-padding {
  padding-inline: 0;
}

.nrv-treffer-text > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
  max-width: none;
  margin-inline: 0;
}

/* Der Suchkopf läuft im Template als „default“-Layout, nicht als
   „constrained“. Grund: WordPress setzt für constrained-Gruppen
   `margin-left: auto !important` auf jedes Kind und begrenzt es auf
   contentSize. Titel und Suchfeld standen dadurch weiter rechts als die
   Trefferliste, und das Suchfeld ließ sich wegen des !important auch nicht
   per Spezifität zurückholen. Mit „default“ entsteht das Problem gar nicht
   erst – hier bleibt nur die Breitenbegrenzung des Feldes. */
.nrv-suchkopf > .nrv-suche-gross {
  max-width: 480px;
}

/* ==========================================================================
   22. Hauptnavigation: Untermenüs als breites Panel mit Gruppen
   ========================================================================== */

/*
 * Nach `Navigation-Desktop.dc.html` (Canvas-Stand 15.10.2026).
 *
 * **Der neue Entwurf hat keinen Bildteaser mehr.** Er zeigt das Panel über die
 * volle Breite, darin fünf Spalten mit je einer Gruppenüberschrift und ihren
 * Links. Damit ist der Grund entfallen, aus dem das Mega-Menü hier seit dem
 * 13.10.2026 als „nicht umsetzbar“ notiert war: Ein Teaser hätte einen eigenen
 * Block gebraucht und der Redaktion die Pflege im Editor genommen –
 * Gruppenüberschriften kann der Standardblock, sie sind ein Untermenü ohne Ziel.
 *
 * Die dritte Ebene steht deshalb im Desktop-Panel dauerhaft offen; `navigation.js`
 * nimmt dem Knopf seine Rolle, weil eine Überschrift kein Bedienelement ist.
 *
 * Maße aus dem Artboard: Panel über die volle Breite, Inhalt auf der 1280er
 * Kante, Innenabstand 44/80/52, Unterkante 1 px Navy. Überschrift 12 px / 700 /
 * 0,12 em Sperrsatz in Versalien mit Navy-Linie darunter, Links 15 px mit
 * 1-px-Linie in `linie`.
 */

@media (min-width: 1200px) {

  /* Bezugspunkt für das Panel ist der Kopf, nicht der einzelne Menüpunkt.
     Dazu müssen die Zwischenebenen ihre eigene Positionierung abgeben – auch
     der responsive-dialog, der im Desktop-Fall nur eine Hülle ist und sonst
     der Bezugspunkt wäre. */
  .nrv-kopf {
    position: relative;
  }

  .nrv-kopf .nrv-navi,
  .nrv-kopf .nrv-navi .wp-block-navigation__responsive-container,
  .nrv-kopf .nrv-navi .wp-block-navigation__responsive-dialog,
  .nrv-kopf .nrv-navi .wp-block-navigation__container,
  .nrv-kopf .nrv-navi .wp-block-navigation__container > .wp-block-navigation-submenu {
    position: static;
  }

  /* Die Brücke über die 18 px zwischen Menüpunkt und Panelkante: Innenabstand
     nach unten, aufgehoben durch einen gleich großen negativen Außenabstand.
     Die Fläche wächst bis zur Kopfkante, das Layout bleibt. */
  .nrv-kopf .nrv-navi .wp-block-navigation__container > li {
    padding-bottom: 20px;
    margin-bottom: -20px;
  }

  /* --- Das Panel (zweite Ebene) ---------------------------------------- */

  .nrv-kopf .nrv-navi .wp-block-navigation__container > li > .wp-block-navigation__submenu-container {
    position: absolute;
    top: 100%;
    /* Über die volle Fensterbreite, wie im Artboard. Der Innenabstand setzt
       den Inhalt auf dieselbe 1280er Kante wie der übrige Seiteninhalt. */
    left: 0;
    right: 0;
    width: auto;
    min-width: 0;

    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    column-gap: 2.5rem;
    row-gap: 2.5rem;
    align-items: start;

    /* WordPress setzt auf den Untermenü-Container overflow:hidden und eine
       Höhe für die Aufklapp-Animation. Im Raster schneidet das alles außer
       der ersten Zeile ab. */
    overflow: visible;
    height: auto;

    padding: 2.75rem max(24px, calc((100% - 1280px) / 2)) 3.25rem;
    background: var(--wp--preset--color--weiss);
    border: 0;
    border-bottom: 1px solid var(--wp--preset--color--navy);
    box-shadow: 0 12px 24px rgba(14, 42, 79, 0.1);
  }

  /* --- Die Gruppe (dritte Ebene) --------------------------------------- */

  /* Jede Gruppe ist eine Spalte. blockGap würde die zweite und dritte gegen
     die erste verschieben – im Raster regelt `gap` die Abstände. */
  .nrv-kopf .nrv-navi .wp-block-navigation__container > li > .wp-block-navigation__submenu-container > li {
    margin-block: 0;
    display: block;
    position: static;
    border: 0;
  }

  /* Die Überschrift. WordPress rendert für ein Untermenü ohne Ziel einen
     <button>; navigation.js macht daraus ein <span>. Beide werden hier
     gleich gestaltet, damit es ohne JS nicht anders aussieht. */
  .nrv-kopf .nrv-navi .nrv-navgruppe > .wp-block-navigation-item__content,
  .nrv-kopf .nrv-navi .nrv-navgruppe > .wp-block-navigation__submenu-icon,
  .nrv-kopf .nrv-navi .nrv-navgruppe > .nrv-navgruppe-titel {
    font-family: var(--wp--preset--font-family--manrope);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--wp--preset--color--navy);
    background: none;
    border: 0;
    padding: 0 0 0.75rem;
    margin: 0 0 0.375rem;
    display: block;
    width: 100%;
    text-align: left;
    border-bottom: 1px solid var(--wp--preset--color--navy);
    cursor: default;
  }

  /* Das Pfeilsymbol des Untermenüs gehört zu einem Aufklapper. Hier klappt
     nichts auf. */
  .nrv-kopf .nrv-navi .nrv-navgruppe > .wp-block-navigation__submenu-icon {
    display: none;
  }

  /* Die Linkliste der Gruppe: dauerhaft offen, kein eigenes Panel.

     `visibility: inherit`, nicht `visible`. Ein Nachfahre mit `visible`
     macht sich aus einem Vorfahren mit `hidden` wieder heraus – die
     Gruppenliste blieb damit in jedem GESCHLOSSENEN Panel klickbar,
     obwohl sie bei `opacity: 0` niemand sah. Das zuletzt im Markup
     stehende Panel (Shop) lag über allen anderen und fing jeden Klick ab:
     „Segeln > Jugend und Segelausbildung" öffnete die Clubkollektion.
     Von Jasmine gefunden, nicht von mir – im Bild sieht man es nicht,
     man muss jeden Menüpunkt anklicken. */
  .nrv-kopf .nrv-navi .nrv-navgruppe > .wp-block-navigation__submenu-container {
    position: static;
    opacity: 1;
    visibility: inherit;
    display: block;
    width: auto;
    min-width: 0;
    height: auto;
    overflow: visible;
    padding: 0;
    margin: 0;
    background: none;
    border: 0;
    box-shadow: none;
    transform: none;
  }

  .nrv-kopf .nrv-navi .nrv-navgruppe .wp-block-navigation__submenu-container > li {
    margin-block: 0;
    display: block;
    border-bottom: 1px solid var(--wp--preset--color--linie);
  }

  .nrv-kopf .nrv-navi .nrv-navgruppe .wp-block-navigation__submenu-container > li > a {
    display: block;
    padding: 0.5625rem 0;
    font-family: var(--wp--preset--font-family--manrope);
    font-size: 0.9375rem;
    line-height: 1.4;
    color: var(--wp--preset--color--navy);
    text-decoration: none;
    /* Die Marke links ersetzt die Unterstreichung: ruhiger, und sie
       verschiebt den Text nicht. */
    border-left: 2px solid transparent;
    padding-left: 0;
    transition: border-color 0.12s ease, padding-left 0.12s ease;
  }

  .nrv-kopf .nrv-navi .nrv-navgruppe .wp-block-navigation__submenu-container > li > a:hover,
  .nrv-kopf .nrv-navi .nrv-navgruppe .wp-block-navigation__submenu-container > li > a:focus-visible {
    border-left-color: var(--wp--preset--color--akzent);
    padding-left: 0.5rem;
    color: var(--wp--preset--color--navy);
  }
}

/* --- Der offene Oberpunkt und die Fläche dahinter ------------------------ */

/*
 * Zwei Dinge aus `Navigation-Desktop.dc.html`, die leicht übersehen werden,
 * weil sie nur im geöffneten Zustand zu sehen sind:
 *
 * 1. Der offene Oberpunkt trägt eine **rote** Unterstreichung mit 10 px
 *    Abstand und Gewicht 600 – das ist die einzige Stelle im Kopf, an der
 *    der Akzent vorkommt.
 * 2. Hinter dem Panel liegt eine Fläche in `rgba(14,42,79,.42)`, die den
 *    Seiteninhalt zurücknimmt.
 *
 * Die Fläche entsteht über `:has()` statt über eine Klasse aus JavaScript –
 * ohne Skript sähe man sonst ein Panel, das über dem unveränderten Inhalt
 * schwebt. Sie liegt unter dem Kopf (z-index 100) und über allem anderen.
 */
@media (min-width: 1200px) {

  .nrv-kopf .nrv-navi .wp-block-navigation__container > li > button[aria-expanded="true"] {
    font-weight: 600;
    text-decoration: underline;
    text-decoration-color: var(--wp--preset--color--akzent);
    text-underline-offset: 10px;
    text-decoration-thickness: 2px;
  }

  body:has( .nrv-kopf .nrv-navi .wp-block-navigation__container > li > button[aria-expanded="true"] )::after {
    content: "";
    position: fixed;
    inset: 0;
    background: rgba(14, 42, 79, 0.42);
    z-index: 99;          /* der Kopf liegt auf 100, das Panel gehört zu ihm */
    pointer-events: none; /* der Klick daneben soll das Menü schließen */
  }
}

/* --- Das Overlay: linksbündig und mehrspaltig ----------------------------- */

/*
 * Die Liste steckt im Overlay zwei Ebenen tiefer als im Desktop-Fall:
 * nav → responsive-container → responsive-close → responsive-dialog →
 * responsive-container-content → ul.wp-block-navigation__container.
 * Der Selektor nennt die Kette mit, weil WordPress auf denselben Container
 * display:flex und über „items-justified-center“ eine Zentrierung legt.
 *
 * Ohne das ergeben 47 Einträge eine 2.485 px hohe, mittig ausgerichtete
 * Kolonne – man sucht bei jedem Eintrag den Zeilenanfang neu.
 */
/* Die Hüllen des Overlays nehmen von sich aus nur die Breite ihres Inhalts
   an und stehen mittig – der Inhaltsbereich war dadurch 306 px breit, in dem
   ein mehrspaltiges Raster nichts ausrichten kann. */
.nrv-navi .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-close,
.nrv-navi .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-dialog,
.nrv-navi .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-container-content {
  width: 100%;
  max-width: 1400px;
  margin-inline: auto;
}

.nrv-navi .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-container-content
  > .wp-block-navigation__container {
  align-items: stretch;
  justify-content: flex-start;
  text-align: left;
  width: 100%;
}

/* Die Einträge selbst sind Flex-Boxen und zentrieren ihren Text – die
   Zentrierung des Kopfes wirkt bis hier durch. Der Selektor nennt die Kette
   mit, weil WordPress' eigene Regel sonst über die Reihenfolge gewinnt. */
.nrv-navi .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item__content {
  display: block;
  width: 100%;
  text-align: left;
  justify-content: flex-start;
}

/* Die Oberpunkte im Overlay – Cormorant, gemischt, nach dem Artboard
   „Mobil · Menü geöffnet (Akkordeon)".

   Hier standen bis v2.44.4 Montserrat-Versalien mit der Begründung, sonst
   sei „die Gliederung nicht zu erkennen". Das stimmte, solange das Overlay
   alle 61 Unterpunkte ausklappte: Ohne abgesetzte Überschriften lief alles
   ineinander. **Mit dem Akkordeon ist der Grund entfallen** – die
   Gliederung entsteht jetzt daraus, dass nur ein Punkt offen ist.

   Die Regel trägt sechs Klassen; eine neue daneben zu stellen hätte
   bedeutet, dagegen anzuschreiben. Sie wird deshalb ersetzt. */
.nrv-navi .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-container-content
  > .wp-block-navigation__container
  > .wp-block-navigation-submenu > .wp-block-navigation-item__content {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.625rem;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0;
  text-transform: none;
  color: var(--wp--preset--color--navy);
  /* Volle Zeilenbreite, linksbündig – der Artboard setzt die Punkte links.
     Diese Regel hat sechs Klassen und ist die einzige Stelle, an der die
     Breite des Schalters gesetzt wird: Ein Versuch weiter unten mit
     `width: auto` hat sie überstimmt und den Text wieder mittig gestellt
     (gemessen 128 px Schalter in einem 335 px breiten Eintrag). Der Pfeil
     steht absolut und braucht keinen Platz im Fluss. */
  display: flex;
  align-items: center;
  width: 100%;
  padding-right: 32px;
  text-align: left;
  justify-content: flex-start;
}

/* Auch die Untermenü-Listen sind von der Zentrierung betroffen: Sie sind nur
   so breit wie ihr längster Eintrag und stehen mittig, weshalb jede Gruppe
   anders eingerückt beginnt. */
.nrv-navi .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-container {
  width: 100%;
  align-items: stretch;
}

/* Entscheidend ist nicht die Breite der Untermenü-Liste, sondern ihre
   Ausrichtung: Jeder Oberpunkt ist ein Flex-Container, der seine Kinder
   zentriert. Die Untermenüs sind nur so breit wie ihr längster Eintrag und
   begannen deshalb je Gruppe an einer anderen Stelle – gemessen bei 51, 62,
   69, 83 und 85 px. WordPress' Regel setzt dort width:auto; dagegen
   anzuschreiben half nicht, gegen die Zentrierung schon. */
.nrv-navi .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > li,
.nrv-navi .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-container > li {
  align-items: flex-start;
  width: 100%;
  align-self: stretch;
}

/*
 * Ab 700 px stehen die fünf Oberpunkte nebeneinander statt untereinander.
 * Das verkürzt das Overlay auf eine Höhe, die ohne langes Scrollen
 * überblickbar ist. Unter 700 px bleibt es einspaltig – auf dem Telefon ist
 * Scrollen die erwartete Bedienung.
 */
@media (min-width: 700px) {
  .nrv-navi .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation__responsive-container-content
    > .wp-block-navigation__container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
    gap: 0 2.5rem;
    align-content: start;
  }

  .nrv-navi .is-menu-open
    .wp-block-navigation__responsive-container-content
    > .wp-block-navigation__container > li {
    margin-block: 0 1.5rem;   /* blockGap würde die Spalten versetzen */
    break-inside: avoid;
  }

  .nrv-navi .is-menu-open .wp-block-navigation__submenu-container {
    padding-inline-start: 0;
    border-inline-start: 0;
  }

  .nrv-navi .is-menu-open .wp-block-navigation__submenu-container > li > a {
    border-bottom: 1px solid var(--wp--preset--color--linie);
  }
}

/* --- Die Gruppen im Overlay (dritte Ebene) -------------------------------- */

/*
 * Nach `Navigation-Mobil.dc.html`: Im aufgeklappten Oberpunkt stehen die
 * Gruppen als Überschrift (13 px / 700 / 0,14 em Sperrsatz in Versalien) mit
 * ihren Links darunter, Gruppen durch 14 px getrennt.
 *
 * Das Akkordeon-JS nimmt `.nrv-navgruppe` ausdrücklich aus – sonst wäre jede
 * Gruppe ein zweiter Aufklapper, und man müsste sich zweimal durchklicken,
 * um an einen Link zu kommen.
 */
.nrv-navi .is-menu-open .nrv-navgruppe > .wp-block-navigation-item__content,
.nrv-navi .is-menu-open .nrv-navgruppe > .nrv-navgruppe-titel {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--wp--preset--color--navy);
  background: none;
  border: 0;
  padding: 0 0 0.125rem;
  margin: 0;
  display: block;
  width: 100%;
  text-align: left;
  cursor: default;
}

.nrv-navi .is-menu-open .nrv-navgruppe > .wp-block-navigation__submenu-icon {
  display: none;
}

/* Die Linkliste der Gruppe steht offen – ohne eigenes Panel, ohne Einzug. */
.nrv-navi .is-menu-open .nrv-navgruppe > .wp-block-navigation__submenu-container {
  position: static;
  opacity: 1;
  visibility: visible;
  display: block;
  width: 100%;
  min-width: 0;
  height: auto;
  overflow: visible;
  padding: 0;
  margin: 0;
  background: none;
  border: 0;
  box-shadow: none;
  transform: none;
}

/* 14 px zwischen den Gruppen, wie im Artboard. */
.nrv-navi .is-menu-open .nrv-navgruppe + .nrv-navgruppe {
  margin-block-start: 0.875rem;
}

.nrv-navi .is-menu-open .nrv-navgruppe .wp-block-navigation__submenu-container > li > a {
  font-size: 0.9375rem;
  padding: 0.5625rem 0;
  /* Mindestens 44 px Klickfläche: 15 px Schrift bei 1,4 Zeilenhöhe plus
     2 × 9 px ergeben 39 px – auf dem Telefon zu knapp für einen Finger. */
  min-height: 44px;
  display: flex;
  align-items: center;
}

/* ==========================================================================
   23. Login: Einstieg zu den digitalen Diensten
   ========================================================================== */

/*
 * Der Login führt auf eine eigene Seite, nicht auf einen einzelnen Anbieter –
 * so das Briefing vom 22.09.2026. Damit bündelt der NRV Clubity, SailHub und
 * Moss unter einem eigenen Einstieg, statt für jeden Dienst einen Knopf in die
 * Kopfzeile zu hängen.
 *
 * Er bekommt einen Rahmen statt nur Text: Für 2.200 Mitglieder ist der Login
 * das meistgenutzte Element der Seite und darf auffallen. Gefüllt bleibt allein
 * „Mitglied werden“ – zwei gefüllte Knöpfe nebeneinander schwächen beide.
 */
/* Der Rahmen ist entfallen. Er stammte aus der Zeit der DUNKLEN Servicezeile
   (v1.17.1) und war in rgba(255,255,255,.45) gesetzt – auf der seit v2.9.7
   hellen Flaeche ein weisser Rahmen auf Weiss, also unsichtbar. Die
   Kontrastpruefung findet so etwas nicht: Sie misst Textfarben, keine Rahmen.
   Der Entwurf fuehrt den Login als .util-Link mit Icon, nicht als Knopf –
   Jasmines Forderung „gut sichtbar" traegt dort das Icon. */
.nrv-servicezeile .nrv-service-login a {
  padding-inline: 0;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-size: 0.8125rem;
}

.nrv-servicezeile .nrv-service-login a:hover,
.nrv-servicezeile .nrv-service-login a:focus-visible {
  /* Umgekehrt statt dunkler: Auf der Tinte-Fläche kann sich ein Knopf nur
     durch Aufhellen abheben. */
  border-color: var(--wp--preset--color--weiss);
  background: var(--wp--preset--color--weiss);
  color: var(--wp--preset--color--navy);
}

/* --- Die Zugangskarten ---------------------------------------------------- */

/* Einleitung und Hilfetext laufen auf der Breite der Karten, damit alles am
   selben Raster beginnt – die Zeilenlänge bleibt durch max-width begrenzt.
   Ohne alignwide stünden sie eingerückt, weil der Inhalt sonst auf
   contentSize zentriert wird. */
.nrv-login-einleitung {
  font-size: 1.125rem;
  line-height: 1.6;
  max-width: 62ch;
  margin-block-end: 2.5rem;
  margin-inline: 0 auto;
}

.nrv-zugaenge {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1.5rem;
  margin-block: 0 3rem;
}

/* blockGap würde die zweite Spalte nach unten schieben – siehe Newsübersicht. */
.nrv-zugaenge > * {
  margin-block: 0;
}

.nrv-zugang {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--wp--preset--color--linie);
  border-top: 3px solid var(--wp--preset--color--navy);
  padding: 1.75rem 1.5rem 1.5rem;
  background: var(--wp--preset--color--weiss);
}

.nrv-zugang > * {
  margin-block: 0;
}

/* Ein Dienst, der noch nicht läuft, trägt keine rote Kante – sonst sieht er
   aus wie ein Zugang, der nur gerade klemmt. */
.nrv-zugang-vorbereitet {
  border-top-color: var(--wp--preset--color--linie);
  background: var(--wp--preset--color--weiss);
}

.nrv-zugang-status {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
  margin-block-end: 0.75rem;
}

.nrv-zugang-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.5rem;
  line-height: 1.2;
  margin-block-end: 0.4rem;
}

.nrv-zugang-system {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #0E2A4F;
  margin-block-end: 1rem;
}

.nrv-zugang-vorbereitet .nrv-zugang-system {
  color: var(--wp--preset--color--grau);
}

.nrv-zugang-text {
  font-size: 1rem;
  line-height: 1.6;
  margin-block-end: 1.25rem;
}

/* Der Knopf sitzt unten, damit die Karten trotz unterschiedlich langer Texte
   auf einer Linie abschließen. */
.nrv-zugang-knopf {
  margin-block-start: auto;
}

.nrv-zugang-zusatz {
  font-size: 0.875rem;
  line-height: 1.55;
  color: var(--wp--preset--color--grau);
  margin-block-start: 1rem;
  padding-block-start: 1rem;
  border-top: 1px solid var(--wp--preset--color--linie);
}

.nrv-zugang-vorbereitet .nrv-zugang-zusatz {
  margin-block-start: auto;
}

.nrv-login-hilfe {
  font-size: 1rem;
  padding-block-start: 1.5rem;
  border-top: 1px solid var(--wp--preset--color--linie);
  margin-inline: 0 auto;
}

/* Der Zusatz „(neues Fenster)" ist klein, aber lesbar – nicht per
   screen-reader-text versteckt. Wer die Seite sieht, soll es auch sehen. */
.nrv-extern-hinweis {
  font-size: 0.75rem;
  font-weight: 400;
  letter-spacing: 0.02em;
  opacity: 0.85;
  text-transform: none;
}

/* ==========================================================================
   24. Filter für Suche und Archiv
   ========================================================================== */

/*
 * Ein gewöhnliches Formular mit Absende-Knopf, kein Nachladen bei jeder
 * Auswahl. Angeboten wird nur, was auch Treffer liefert (Facetten) – ein
 * Filter, der ins Leere führt, ist schlimmer als keiner.
 */
/* **`box-sizing` gehört dazu.** Ein `<form>` erbt es nicht von WordPress'
   globaler Regel; Innenabstand und Rahmen addierten sich auf die Breite.
   Gemessen auf `/category/regatten/`: Der Kasten war **1332 px** breit,
   alle anderen Blöcke 1280 – er stand 26 px auf jeder Seite über der
   Textkante. Von Bene gemeldet. */
.nrv-filter {
  box-sizing: border-box;
  border: 1px solid var(--wp--preset--color--linie);
  border-left: 3px solid var(--wp--preset--color--navy);
  background: var(--wp--preset--color--weiss);
  padding: 1.25rem 1.5rem 1.5rem;
  margin-block: 0 2.5rem;
}

.nrv-filter-titel {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--wp--preset--color--navy);
  margin: 0 0 1rem;
}

.nrv-filter-felder {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 1rem;
  margin-block-end: 1.25rem;
}

.nrv-filter-feld {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  margin-block: 0;
}

.nrv-filter-feld > span {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;   /* Untergrenze des Designsystems */
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
}

/* Die Auswahlfelder tragen 16 px. Unter 16 px zoomt Safari auf dem iPhone
   beim Antippen die ganze Seite heran – das ist kein Schönheitsfehler,
   sondern kostet den Überblick über das Formular. */
.nrv-filter-feld select {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 1rem;
  padding: 0.5rem 0.6rem;
  min-height: 44px;   /* sicher zu treffen */
  border: 1px solid var(--wp--preset--color--linie);
  background: var(--wp--preset--color--weiss);
  color: var(--wp--preset--color--navy);
  width: 100%;
}

.nrv-filter-feld select:focus-visible {
  outline: 2px solid var(--wp--preset--color--navy);
  outline-offset: 1px;
}

.nrv-filter-knoepfe {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem;
}

.nrv-filter-los {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.875rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--wp--preset--color--weiss);
  background: #0E2A4F;   /* 4,51:1 auf Weiss */
  border: 0;
  padding: 0.7rem 1.5rem;
  min-height: 44px;
  cursor: pointer;
}

.nrv-filter-los:hover,
.nrv-filter-los:focus-visible {
  background: var(--wp--preset--color--navy);
}

.nrv-filter-weg {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  color: var(--wp--preset--color--grau);
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

.nrv-filter-weg:hover,
.nrv-filter-weg:focus-visible {
  color: #0E2A4F;
}

.nrv-filter-hinweis {
  font-size: 0.8125rem;
  color: var(--wp--preset--color--grau);
  margin: 1rem 0 0;
}

/* Im Archiv läuft der Filter auf der Breite des Rasters, nicht der Textspalte. */
.wp-block-group > .nrv-filter,
main > .nrv-filter {
  max-width: 1280px;
  margin-inline: auto;
}

/* ==========================================================================
   25. Dateilisten (PDF-Downloads)
   ========================================================================== */

/*
 * Die Partnerclubs stehen als Tabelle mit 80 Zeilen auf der Seite. Bei dieser
 * Länge entscheidet die Gestaltung darüber, ob man eine Zeile wiederfindet:
 * durchgehende Zeilenlinien, ein klebender Tabellenkopf und ein Wechsel der
 * Zeilenfarbe.
 */
.nrv-dateiliste table {
  border-collapse: collapse;
  width: 100%;
  font-size: 1rem;
}

.nrv-dateiliste thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--wp--preset--color--navy);
  color: var(--wp--preset--color--weiss);
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-align: left;
  padding: 0.7rem 0.8rem;
  border: 0;
}

.nrv-dateiliste tbody td {
  padding: 0.6rem 0.8rem;
  border: 0;
  border-bottom: 1px solid var(--wp--preset--color--linie);
  vertical-align: baseline;
}

.nrv-dateiliste tbody tr:nth-child(even) {
  background: var(--wp--preset--color--weiss);
}

/* Die zweite und dritte Spalte tragen nur Beiwerk – sie dürfen zurücktreten
   und sollen die erste nicht zusammendrücken. */
.nrv-dateiliste tbody td:not(:first-child) {
  font-size: 0.875rem;
  color: var(--wp--preset--color--grau);
  white-space: nowrap;
  width: 1%;
}

.nrv-dateiliste td a {
  color: var(--wp--preset--color--navy);
  text-decoration: none;
  border-bottom: 1px solid var(--wp--preset--color--navy);
  padding-block-end: 1px;
}

.nrv-dateiliste td a:hover,
.nrv-dateiliste td a:focus-visible {
  color: #0E2A4F;
}

/* Ein PDF-Verweis muss als solcher erkennbar sein, bevor man klickt –
   sonst rechnet niemand mit einem Download. */
.nrv-dateiliste a[href$=".pdf"]::after {
  content: " (PDF)";
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  color: var(--wp--preset--color--grau);
  white-space: nowrap;
}

/* --- Als Liste (wenige Dateien) ------------------------------------------ */

ul.nrv-dateiliste {
  list-style: none;
  margin-inline: 0;
  padding-inline: 0;
}

ul.nrv-dateiliste li {
  margin-block: 0;
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

ul.nrv-dateiliste li a {
  display: block;
  padding: 0.75rem 0;
  font-size: 1.0625rem;
  color: var(--wp--preset--color--navy);
  text-decoration: none;
  border-left: 2px solid transparent;
  padding-left: 0.75rem;
  transition: border-color 0.12s ease, color 0.12s ease;
}

ul.nrv-dateiliste li a:hover,
ul.nrv-dateiliste li a:focus-visible {
  border-left-color: var(--wp--preset--color--navy);
  color: #0E2A4F;
}

/* Auf schmalen Fenstern bricht die Tabelle sonst aus der Seite heraus. */
@media (max-width: 600px) {
  .nrv-dateiliste {
    overflow-x: auto;
  }
  .nrv-dateiliste table {
    font-size: 0.9375rem;
  }
  .nrv-dateiliste tbody td:nth-child(3) {
    display: none;   /* Gründungsjahr tritt zurück */
  }
  .nrv-dateiliste thead th:nth-child(3) {
    display: none;
  }
}

/* ==========================================================================
   26. Spenden-Modul und neuer Fußbereich (v2.2)
   ========================================================================== */

/*
 * Nach dem Entwurf „Spenden-Modul und Footer" aus dem Design-Canvas und dem
 * Briefing vom 01.10.2026. Das Spenden-Modul steht vor dem Fußbereich – so
 * steht es auch auf der jetzigen nrv.de, und die Redaktion wollte es dort
 * behalten.
 */

/* Nach dem Artboard „Modul Spenden · kompakt in halber Höhe" (1440 × 280).

   Von Jasmine beanstandet („Der Spendenblock bitte schmaler"), von Bene
   beauftragt. Vorher galt der Artboard „Modul Spenden · vor dem Footer"
   (1440 × 560), umgesetzt mit 462 px Höhe – der kompakte Entwurf halbiert
   das noch einmal.

   **Es ist kein Zusammenstauchen, sondern ein anderer Aufbau**, und das ist
   der Grund, den Entwurf vorher zu lesen: Statt Text links und Bildspalte
   rechts stehen hier DREI Spalten nebeneinander – Titel mit Knopf (360),
   Fließtext mit Kontakt (300), Bilder (Rest). Der Titel fällt dabei von
   52 auf 32 px, und die beiden Absätze des Vorspanns sind im Entwurf zu
   einem zusammengezogen; zwei Absätze passen in 280 px nicht.

   Die Bilder laufen randlos über die volle Modulhöhe bis an die rechte
   Fensterkante – deshalb trägt das Modul links die Rasterkante und rechts
   keinen Rand. */
.nrv-spenden-modul {
  background: var(--wp--preset--color--weiss);
  margin-block-start: clamp(2.5rem, 5vw, 4rem);
  display: grid;
  grid-template-columns: 360px 300px minmax(0, 1fr);
  column-gap: 48px;
  /* Linke Kante auf dem Raster der Seite, rechts bündig: Die Bildspalte
     endet am Fensterrand, wie im Entwurf. */
  padding-left: max(24px, calc((100% - 1280px) / 2));
  min-height: 280px;
  overflow: hidden;
}

/* `blockGap` liefert WordPress als `> * + * { margin-block-start: 1.5rem }`
   aus. In einer untereinander laufenden Liste ist das richtig; im Grid
   verschiebt es die zweite und dritte Spalte nach unten – gemessen 24 px,
   wodurch die Bilder 256 statt 280 px hoch waren und nicht mehr randlos
   liefen. Im Grid regelt `gap` die Abstände, nicht `margin`. Dieselbe Stelle
   wie beim News-Raster (siehe „blockGap und Grid vertragen sich nicht"). */
.nrv-spenden-modul > * {
  margin-block: 0;
  align-self: stretch;
}

.nrv-spenden-kopf,
.nrv-spenden-info {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 14px;
  padding-block: 32px;
  /* WordPress gibt Group-Blöcken in einem Flex- oder Grid-Elternteil über
     seine Layout-Regel auto-Margins. Bei einem Grid-Item saugen die den
     freien Raum auf – dieselbe Falle wie bei den Produktkacheln des Shops
     (v2.13.3) und beim Stander im Kopf (v2.26.1). */
  margin-inline: 0 !important;
  min-width: 0;
}

.nrv-spenden-kopf > *,
.nrv-spenden-info > * {
  margin-block: 0;
}

.nrv-spenden-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.5rem, 2.2vw, 2rem);
  font-weight: 500;
  line-height: 1.05;
  margin-block: 0;
}

.nrv-spenden-knopf .wp-block-button__link {
  min-height: 52px;
  display: inline-flex;
  align-items: center;
  padding-inline: 28px;
  border-radius: 0;
  font-size: 0.9375rem;
  font-weight: 600;
}

.nrv-spenden-text {
  font-size: 0.9375rem;
  line-height: 1.55;
  margin-block: 0;
  max-width: none;
}

.nrv-spenden-kontakt {
  font-size: 0.8125rem;
  line-height: 1.6;
  margin-block: 0;
  max-width: none;
  color: var(--wp--preset--color--navy);
}

.nrv-spenden-kontakt a {
  color: var(--wp--preset--color--navy);
}

/* --- Die drei Bildkarten --- */

.nrv-spenden-karten {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 4px;
  margin-inline: 0 !important;
  min-width: 0;
}

.nrv-spenden-karte {
  position: relative;
  margin-block: 0;
  min-width: 0;
}

.nrv-spenden-karte .nrv-spenden-bild {
  margin: 0;
  height: 100%;
}

.nrv-spenden-karte .nrv-spenden-bild img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* Der hochformatige Ausschnitt ist der Preis der Anordnung: Aus 3:2-Vorlagen
     wird eine schmale, hohe Fläche. Wo das Motiv nicht mittig sitzt, steht die
     Position am Bild im Markup – der Blickpunkt am Anhang (`_nrv_fokus`,
     v2.7.0) greift hier nicht, weil die Bilder im Fußbereich als festes
     `<img>` stehen und nicht über `wp_get_attachment_image_attributes` laufen. */
  object-position: center;
}

/* Die Beschriftung liegt IM Bild, auf einer deckenden Cremefläche. Deckend
   ist hier nicht Geschmack: Text direkt auf dem Foto wäre je nach Motiv
   nicht lesbar, und ein Verlauf ließe sich nicht gegen 1.800 verschiedene
   Bilder rechnen. Auf Creme steht Tinte mit 16,1:1. */
.nrv-spenden-karte-fuss {
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 12px;
  background: var(--wp--preset--color--weiss);
  padding: 14px 16px;
  margin-inline: 0 !important;
}

.nrv-spenden-karte-fuss > * {
  margin-block: 0;
}

.nrv-spenden-karte-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.1875rem;
  font-weight: 500;
  line-height: 1.15;
  margin-block-start: 4px;
}

/* Unter 1100 px gehen drei Spalten nebeneinander nicht mehr auf: Titel und
   Fließtext brauchen zusammen 708 px, die Bildspalte bliebe darunter. Dann
   stehen Text und Bilder untereinander, die Bilder behalten ihre Dreierreihe.
   Unter 700 px wird daraus eine Spalte – drei Karten à 220 px tragen ihre
   Beschriftung nicht mehr. */
@media (max-width: 1100px) {
  .nrv-spenden-modul {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    padding-inline: max(24px, calc((100% - 1280px) / 2));
    row-gap: 8px;
  }

  .nrv-spenden-karten {
    grid-column: 1 / -1;
    height: 240px;
  }
}

@media (max-width: 700px) {
  .nrv-spenden-modul {
    grid-template-columns: minmax(0, 1fr);
  }

  .nrv-spenden-kopf,
  .nrv-spenden-info {
    padding-block: 24px 0;
  }

  .nrv-spenden-info {
    padding-block-end: 24px;
  }

  .nrv-spenden-karten {
    height: auto;
    grid-template-columns: minmax(0, 1fr);
    gap: 8px;
  }

  .nrv-spenden-karte {
    aspect-ratio: 3 / 2;
  }
}


/* --- Fußbereich ----------------------------------------------------------- */

.nrv-fuss {
  padding-block: clamp(3rem, 6vw, 4.5rem) 2rem;
}

.nrv-fuss-kopf {
  display: grid;
  grid-template-columns: 1.3fr repeat(3, 1fr);
  gap: 2.5rem;
  padding-block-end: 2.5rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

.nrv-fuss-kopf > *,
.nrv-fuss-sitemap > *,
.nrv-fuss-recht > * {
  margin-block: 0;
}

.nrv-fuss-name {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.5rem, 2.6vw, 2rem);
  line-height: 1.1;
  color: var(--wp--preset--color--navy);
  margin: 0 0 0.5rem;
  /* Die Regel für Fuß-Überschriften macht Versalien in 12 px – hier nicht. */
  letter-spacing: 0;
  text-transform: none;
  font-weight: 400;
}

.nrv-fuss-claim {
  font-size: 0.875rem;
  color: var(--wp--preset--color--grau);
}

/* Doppelte Klasse: Der mobile Footer-Block steht später in der Datei und
   würde die 12 px sonst auf 13 ziehen. 12 px ist die Untergrenze des
   Designsystems, nicht ein Wert, den ein Grundwert überschreiben darf. */
.nrv-fuss-titel.nrv-fuss-titel {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;   /* Untergrenze des Designsystems */
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--wp--preset--color--navy);
  margin-block-end: 0.75rem;
}

.nrv-fuss-block p {
  line-height: 1.6;
}

/* Die sechs Spalten der Sitemap. Unter 1000 px drei, auf dem Telefon zwei –
   eine einzelne Spalte mit 24 Verweisen wäre eine sehr lange Liste. */
.nrv-fuss-sitemap {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 2rem 1.5rem;
  padding-block: 2.5rem;
}

.nrv-fuss-sitemap ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nrv-fuss-sitemap li {
  margin-block: 0 0.5rem;
}

/* Ohne eigene Schriftgröße: Die Sitemap-Links sind Footer-Text und folgen
   dem Grundwert – 14 px, mobil 13. Mit eigenem Wert (0,1,1) schlugen sie den
   mobilen Block und standen dort auf 14 statt 13. Ein Wert, der ohnehin dem
   Grundwert entspricht, gehört nicht zweimal in die Datei: Beim nächsten
   mobilen Wert läuft er wieder auseinander. */
.nrv-fuss-sitemap a {
  line-height: 1.4;
  display: inline-block;
  padding-block: 0.15rem;
}

/* Die Pfeile der CTA-Absätze stehen im Fußbereich dezenter als im Fließtext.
   Die Farbe muss ausdrücklich dabeistehen: Die allgemeine Regel für .nrv-cta
   setzt Tinte, und auf dem dunklen Fußbereich wäre das unsichtbar – gemessen
   1:1 bei „Route planen" und „Alle Ansprechpartner". */
/* Ohne Schriftgröße: Die spätere Regel setzt 14 px (Spezifikation), diese
   hier stand auf 13 und war wirkungslos – aber wer die spätere einmal
   löscht, handelt sich den Verstoß ein. Derselbe Fall wie `#aaa` am
   `.nrv-karte .nrv-datum`. */
.nrv-fuss .nrv-cta a {
  font-family: var(--wp--preset--font-family--manrope);
  letter-spacing: 0.04em;
  color: var(--wp--preset--color--navy);
}

.nrv-fuss .nrv-cta a:hover,
.nrv-fuss .nrv-cta a:focus-visible {
  color: var(--wp--preset--color--navy);
  text-decoration: underline;
}

.nrv-fuss .nrv-cta a::after {
  content: " →";
}

.nrv-fuss-recht {
  padding-block-start: 1.75rem;
  border-top: 1px solid var(--wp--preset--color--linie);
  gap: 1rem;
  /* 13 px nach Spezifikation. Ohne Angabe erbt der Container die 18 px des
     Fließtexts – gemessen, obwohl seine Absätze korrekt auf 13 standen. */
  font-size: 0.8125rem;
}

.nrv-fuss-recht a,
.nrv-fuss-rechtlinks a {
  font-size: 0.8125rem;
}

.nrv-fuss-recht p {
  font-size: 0.8125rem;
  color: var(--wp--preset--color--grau);
}

.nrv-fuss-rechtlinks a {
  color: var(--wp--preset--color--grau);
}

@media (max-width: 1000px) {
  .nrv-fuss-kopf {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .nrv-fuss-sitemap {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 600px) {
  .nrv-fuss-kopf {
    grid-template-columns: minmax(0, 1fr);
    gap: 1.75rem;
  }
  .nrv-fuss-sitemap {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Die früheren Maße des Einführungstextes (1,0625 rem, 62ch, zwei Absätze
   mit Abstand) sind mit dem kompakten Modul entfallen – der Entwurf setzt
   15 px und einen einzigen Absatz. Die Regeln stehen jetzt im Abschnitt des
   Moduls selbst. */

/* ==========================================================================
   27. Kontakt als Service-Hub (v2.5)
   ========================================================================== */

/*
 * Nach dem Briefing vom 01.10.2026: „Bestehenden Text in kompakte Kontaktseite
 * mit Adresse, Telefon, Geschäftsstellenzeiten und sechs Anliegenkarten
 * aufbauen." Je Karte höchstens zwei Aktionen.
 */

.nrv-kontakt-einstieg {
  font-size: 1.125rem;
  line-height: 1.6;
  max-width: 62ch;
  margin-block-end: 2.5rem;
}

.nrv-abschnitt-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.7rem, 3vw, 2.3rem);
  margin-block: 3.5rem 1.75rem;
}

/* --- Geschäftsstelle ------------------------------------------------------ */

.nrv-geschaeftsstelle {
  background: var(--wp--preset--color--flaeche);
  padding: 2rem;
  margin-block-end: 1rem;
}

.nrv-geschaeftsstelle > .wp-block-heading {
  margin-block: 0 1.5rem;
}

.nrv-gs-raster {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 2rem;
}

.nrv-gs-raster > *,
.nrv-gs-block > * {
  margin-block: 0;
}

.nrv-gs-block p {
  line-height: 1.7;
  margin-block-end: 0.75rem;
}

/* --- Die sechs Anliegen --------------------------------------------------- */

.nrv-anliegen {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(330px, 1fr));
  gap: 1.5rem;
}

.nrv-anliegen > *,
.nrv-anliegen-karte > * {
  margin-block: 0;
}

.nrv-anliegen-karte {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--wp--preset--color--linie);
  border-top: 3px solid var(--wp--preset--color--navy);
  background: var(--wp--preset--color--weiss);
  padding: 1.75rem 1.5rem 1.5rem;
}

/* Die Nummer ordnet die sechs Karten und gibt der Seite einen Takt –
   im Entwurf steht sie als 01 bis 06 über jedem Anliegen. */
.nrv-anliegen-nr {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  color: var(--wp--preset--color--grau);
  margin-block-end: 0.5rem;
}

.nrv-anliegen-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.4rem;
  line-height: 1.2;
  margin-block-end: 0.6rem;
}

.nrv-anliegen-text {
  font-size: 1rem;
  line-height: 1.6;
  margin-block-end: 1rem;
}

.nrv-anliegen-personen {
  font-size: 0.9375rem;
  line-height: 1.5;
  color: var(--wp--preset--color--grau);
  padding-block: 0.75rem;
  border-top: 1px solid var(--wp--preset--color--linie);
  margin-block-end: 0.75rem;
}

.nrv-anliegen-personen strong {
  display: block;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-block-end: 0.25rem;
}

/* Die erste Aktion rückt nach unten, damit die Karten trotz unterschiedlich
   langer Texte auf einer Linie abschließen. */
.nrv-anliegen-karte .nrv-cta:first-of-type {
  margin-block-start: auto;
}

.nrv-anliegen-karte .nrv-cta {
  margin-block-end: 0.35rem;
}

/* --- Allgemeine Anfrage --------------------------------------------------- */

.nrv-allgemein {
  border-left: 3px solid var(--wp--preset--color--navy);
  background: var(--wp--preset--color--flaeche);
  padding: 1.75rem 2rem;
  margin-block: 2.5rem 0;
  max-width: 68ch;
}

.nrv-allgemein > * {
  margin-block: 0;
}

.nrv-allgemein .wp-block-heading {
  font-size: clamp(1.3125rem, 1.6vw, 1.4375rem);
  margin-block-end: 0.6rem;
}

.nrv-allgemein p {
  margin-block-end: 0.75rem;
}

/* --- Besuch und Barrierefreiheit ------------------------------------------ */

.nrv-besuch {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1.5rem;
  margin-block-start: 3.5rem;
}

.nrv-besuch > *,
.nrv-besuch-karte > *,
.nrv-wf-karten > *,
.nrv-wf-karte > * {
  margin-block: 0;
}

.nrv-besuch-karte {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block-start: 1.25rem;
}

.nrv-besuch-karte .wp-block-heading {
  font-size: clamp(1.3125rem, 1.6vw, 1.4375rem);
  margin: 0;
}

.nrv-besuch-karte .nrv-cta {
  margin-block-start: auto;
}

/* --- Restaurant ----------------------------------------------------------- */

.nrv-restaurant {
  background: var(--wp--preset--color--navy);
  color: var(--wp--preset--color--weiss);
  padding: 2.5rem 2rem;
  margin-block-start: 3.5rem;
}

.nrv-restaurant > * {
  margin-block: 0 0.75rem;
  max-width: 62ch;
}

.nrv-restaurant .wp-block-heading,
.nrv-restaurant strong {
  color: var(--wp--preset--color--weiss);
}

.nrv-restaurant .nrv-label {
  color: var(--wp--preset--color--linie);
}

/* Auf der dunklen Fläche sind die Verweise hell – die allgemeine CTA-Regel
   setzt Tinte, was hier unsichtbar wäre. Dieselbe Falle wie im Fußbereich. */
.nrv-restaurant a {
  color: var(--wp--preset--color--weiss);
}

.nrv-restaurant .nrv-cta a {
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

/* --- Menschen und Weiterführendes ----------------------------------------- */

.nrv-menschen {
  margin-block-start: 3.5rem;
  padding-block-start: 1.5rem;
  border-top: 1px solid var(--wp--preset--color--linie);
}

.nrv-menschen > * {
  margin-block: 0 0.5rem;
}

.nrv-wf-karten {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1.75rem;
}

.nrv-wf-karte {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  border-top: 2px solid var(--wp--preset--color--navy);
  padding-block-start: 1rem;
}

/* Derselbe Wert wie `.nrv-wf-karte-titel`, nicht ein zweiter. Diese Regel ist
   der Rückfall für Karten ohne Baustein-Klasse – auf /kontakt/ gibt es drei.
   Vorher stand hier 1,2 rem, und mein `:not(.nrv-label)` hob die Spezifität
   auf (0,3,0): Damit schlug der Rückfall die Baustein-Regel (0,2,0), und
   **alle** Querverweis-Kartentitel standen auf 19,2 statt 23 px. `:not()`
   zählt die Spezifität seines Arguments mit – dieselbe Falle wie bei
   `blockquote:not([class])` auf der Artikelseite. */
.nrv-wf-karte .wp-block-heading:not(.nrv-label) {
  font-size: clamp(1.3125rem, 1.6vw, 1.4375rem);
}

.nrv-wf-karte .nrv-cta {
  margin-block-start: auto;
}

/* --- Barrierefrei zum NRV ------------------------------------------------- */

.nrv-bf-liste {
  list-style: none;
  margin-inline: 0;
  padding-inline: 0;
  max-width: 62ch;
}

.nrv-bf-liste li {
  padding-block: 0.7rem;
  padding-inline-start: 1.75rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
  position: relative;
  margin-block: 0;
}

/* Ein Haken wäre eine Zusage, die wir noch nicht halten können – die Angaben
   werden erst zusammengetragen. Deshalb ein neutraler Strich. */
.nrv-bf-liste li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 1.35em;
  width: 12px;
  height: 2px;
  background: var(--wp--preset--color--navy);
}


@media (max-width: 600px) {
  .nrv-geschaeftsstelle,
  .nrv-restaurant {
    padding-inline: 1.25rem;
  }
  .nrv-allgemein {
    padding-inline: 1.25rem;
  }
}

/* ==========================================================================
   28. Die Geschichte als Zeitleiste (v2.6)
   ========================================================================== */

/*
 * Briefing vom 01.10.2026: „Den vorhandenen Text als chronologisch
 * navigierbare Zeitleiste von 1868 bis 2026 mit thematischen Zwischenstationen
 * Nachwuchs und Offshore umsetzen."
 *
 * Aufbau nach dem Artboard: Jahreszahl links, durchgehende Linie, Text rechts.
 * Die Linie entsteht als Rahmen der Jahresspalte und läuft dadurch über alle
 * Stationen hinweg, ohne dass ein eigenes Element dafür nötig wäre.
 */

.nrv-geschichte-einstieg {
  font-size: 1.125rem;
  line-height: 1.6;
  max-width: 62ch;
}


/* --- Die Zeitleiste ------------------------------------------------------- */

.nrv-zeitleiste {
  margin-block-start: 3rem;
}

.nrv-zeit-station {
  display: grid;
  /* Der Artboard setzt `200px 56px minmax(0,1fr) 380px`. Die 56-px-Spalte ist
     dort nur die Fuge für Linie und Punkt – bei uns entstehen beide als
     Rahmen der Inhaltsspalte (siehe unten), ein eigenes Element wäre ein
     Rückschritt. Bleiben drei Spalten; gemessen ergibt das dieselbe Art
     `2/6/4` wie der Entwurf. */
  grid-template-columns: 200px minmax(0, 1fr) 380px;
  gap: 0 2rem;
  align-items: start;
}

/* **Die dritte Spalte bleibt auch ohne Bild stehen.** Mein erster Entwurf
   nahm sie weg, wo kein Bild steht – mit der Begründung, eine 380 px breite
   Leerfläche auf elf von vierzehn Stationen sei unnötig. Gemessen ist das
   Gegenteil richtig: Die Textspalte sprang dadurch zwischen 636 und 1048 px,
   also fast auf das Doppelte. Eine Zeitleiste, deren Textbreite von Station
   zu Station wechselt, liest sich unruhig – und der Artboard setzt das
   Raster ebenfalls durchgehend, auch an den acht Stationen ohne Bildangabe. */

/* Die Zellen ausdrücklich zuweisen. Thematische Stationen haben ein Kind mehr
   – die Kennung „Zwischenstation" über der Marke. Ohne feste Zuweisung füllt
   das Grid einfach der Reihe nach: Kennung und Marke landen nebeneinander,
   der Textblock rutscht in die 180 px schmale Jahresspalte. Gemessen waren es
   204 px statt 1052. Sichtbar wird das nur bei den zwei Zwischenstationen,
   die übrigen fünfzehn bleiben richtig. */
.nrv-zeit-kennung {
  grid-column: 1;
  grid-row: 1;
}

.nrv-zeit-jahr {
  grid-column: 1;
  grid-row: 2;
}

.nrv-zeit-inhalt {
  grid-column: 2;
  grid-row: 1 / span 2;
}

/* Die Bildspalte des Entwurfs: 380 px, Höhe 230, oben bündig mit dem Titel.
   Feste Zelle wie alle anderen – das Auto-Placement würde sie je nach Zahl
   der Kinder verschieben, und genau daran ist das Raster bei den beiden
   Zwischenstationen schon einmal zerfallen (v2.6.2). */
.nrv-zeit-bild {
  grid-column: 3;
  grid-row: 1 / span 2;
  margin-block: 0.75rem 3rem;
}

/* Zwei Klassen, weil WordPress `.wp-block-image img { height: auto }`
   ausliefert – gleiche Spezifität, später geladen. Gemessen waren es 254
   statt 230 px. Dieselbe Stelle wie bei Sozialsymbolen, Spenden-Modul,
   kompaktem Kopf, Servicezeile, Suchfeld-Platzhalter, Trennlinie und
   Seitenkopf-Bild. */
.nrv-zeit-bild.nrv-zeit-bild img {
  display: block;
  width: 100%;
  height: 230px;
  object-fit: cover;
}

/* Stationen ohne Kennung haben nur zwei Kinder – dort beginnt die Marke in
   Zeile 1, damit sie neben dem Titel steht. */
.nrv-zeit-station:not(.nrv-zeit-thema) .nrv-zeit-jahr {
  grid-row: 1;
}

.nrv-zeit-station > *,
.nrv-zeit-inhalt > * {
  margin-block: 0;
}

/* Die durchgehende Linie: Rahmen der Inhaltsspalte, nicht ein eigenes
   Element. So läuft sie ohne Lücke von Station zu Station. */
.nrv-zeit-inhalt {
  border-left: 1px solid var(--wp--preset--color--navy);
  padding-left: 3rem;
  padding-bottom: 3rem;
  margin-left: -1.5rem;
}

.nrv-zeit-station:last-child .nrv-zeit-inhalt {
  border-left-color: transparent;
}

/* Der Punkt auf der Linie. Er sitzt am Titel, nicht am Container – sonst
   wandert er bei langen Texten in die Mitte des Abschnitts. */
.nrv-zeit-titel {
  position: relative;
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.4rem, 2.4vw, 1.9rem);
  line-height: 1.2;
  margin-block-end: 0.75rem;
  scroll-margin-top: 140px;   /* der klebende Kopf verdeckt sonst den Sprung */
}

.nrv-zeit-titel::before {
  content: "";
  position: absolute;
  left: -3rem;
  top: 0.55em;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: var(--wp--preset--color--navy);
  transform: translateX(-50%);
}

/* Der Artboard setzt die Jahreszahl in Cormorant Garamond, 38 px – sie ist
   dort die zweitgrößte Schrift der Seite und trägt die Chronologie. Vorher
   stand sie in Manrope 18 px und war kaum von einer Beschriftung zu
   unterscheiden. */
.nrv-zeit-jahr {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.75rem, 3vw, 2.375rem);
  font-weight: 500;
  line-height: 1.08;
  letter-spacing: 0;
  padding-block-start: 0.1rem;
  text-align: right;
}

.nrv-zeit-inhalt p {
  line-height: 1.65;
  margin-block-end: 0.75rem;
  max-width: 62ch;
}

/* --- Zwischenstationen ---------------------------------------------------- */

/* Nachwuchs und Offshore unterbrechen die Chronologie. Sie heben sich durch
   Fläche ab, bleiben aber auf derselben Linie – sie gehören zur Geschichte,
   stehen nur nicht an einem Datum. */
.nrv-zeit-thema .nrv-zeit-inhalt {
  background: var(--wp--preset--color--flaeche);
  padding: 1.75rem 2rem 2rem 3rem;
  margin-block-end: 3rem;
  padding-bottom: 2rem;
}

.nrv-zeit-kennung {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
  margin-block-end: 0.3rem;
  text-align: right;
}

.nrv-zeit-thema .nrv-zeit-titel::before {
  background: var(--wp--preset--color--weiss);
  border: 2px solid var(--wp--preset--color--navy);
  width: 13px;
  height: 13px;
}

/* --- Abschluss ------------------------------------------------------------ */

.nrv-zeit-abschluss .nrv-zeit-inhalt {
  border-left-color: transparent;
  padding-bottom: 0;
}

.nrv-zeit-abschluss .nrv-zeit-titel::before {
  background: var(--wp--preset--color--weiss);
  border: 2px solid var(--wp--preset--color--navy);
}

/* --- Schmale Fenster ------------------------------------------------------ */

/* Unter 780 px rückt die Jahreszahl über den Text. Die Linie bleibt, weil sie
   den Zusammenhang trägt – nur schmaler eingerückt. */
@media (max-width: 780px) {
  .nrv-zeit-station {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
  }

  /* Die festen Zellen aus dem Desktop-Raster zurücknehmen – sonst bleibt die
     zweite Spalte bestehen und die Jahresmarke landet in einer 0 px breiten
     ersten Spalte, also unsichtbar. */
  .nrv-zeit-kennung,
  .nrv-zeit-jahr,
  .nrv-zeit-inhalt,
  .nrv-zeit-bild,
  .nrv-zeit-station:not(.nrv-zeit-thema) .nrv-zeit-jahr {
    grid-column: 1;
    grid-row: auto;
  }

  /* Das Bild rückt unter den Text und wird flacher: 230 px sind auf dem
     Telefon über ein Drittel der Fensterhöhe. */
  .nrv-zeit-bild {
    margin-block: 0 2.5rem;
    padding-left: 1.75rem;
  }

  .nrv-zeit-bild.nrv-zeit-bild img {
    height: 180px;
  }

  .nrv-zeit-jahr,
  .nrv-zeit-kennung {
    text-align: left;
    padding-left: 1.75rem;
  }

  .nrv-zeit-jahr {
    margin-block-end: 0.25rem;
  }

  .nrv-zeit-inhalt {
    margin-left: 0;
    padding-left: 1.75rem;
    padding-bottom: 2.5rem;
  }

  .nrv-zeit-titel::before {
    left: -1.75rem;
    transform: none;
  }

  .nrv-zeit-thema .nrv-zeit-inhalt {
    padding-right: 1.25rem;
  }
}

/* ==========================================================================
   29. Artikel der Woche und Gastbeiträge (v2.7)
   --------------------------------------------------------------------------
   Zwei MUSS-Punkte aus dem redaktionellen Anforderungsprofil: Abschnitt 19
   (Artikel der Woche) und Abschnitt 15 (Gast- und Originalbeiträge).
   ========================================================================== */

/* 29.1 Artikel der Woche – über der Newsübersicht, nur auf /news/.

   Die Hervorhebung läuft über eine eigene Fläche in Creme getönt, nicht über
   eine größere Schrift allein: Direkt darunter steht der Hauptaufmacher der
   gewichteten Übersicht, der selbst schon groß ist. Zwei große Titel
   nebeneinander ohne Flächenunterschied liest sich als Dopplung. */
.nrv-adw-block {
  background-color: var(--wp--preset--color--flaeche);
  padding: var(--wp--preset--spacing--eng);
  margin-block: 0 var(--wp--preset--spacing--weit);
}

.nrv-adw-marke {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--wp--preset--color--navy);
  margin-block: 0 1rem;
  padding-bottom: 0.6rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

/* `5fr 7fr` wie im Artboard: Bild links, Text rechts. Gemessen trägt der
   Entwurf dort 533 × 520 px – die Bildspalte ist also **so hoch wie die
   Textspalte**, nicht auf ein festes Seitenverhältnis gezwungen. Die
   Beschriftung „Bild 4:5" im Entwurf beschreibt den Platzhalter, nicht den
   gemessenen Kasten; ein hartes 4:5 würde aus einer 3:2-Vorlage (94,4 % des
   Bestands) knapp die Hälfte der Breite wegschneiden.

   Deshalb `stretch` samt `object-fit: cover` und eine Untergrenze, damit ein
   kurzer Teaser das Bild nicht auf Briefmarkengröße zieht. */
.nrv-adw-inhalt {
  display: grid;
  grid-template-columns: 5fr 7fr;
  gap: var(--wp--preset--spacing--weit);
  align-items: stretch;
  min-height: 22rem;
}

.nrv-adw-bild {
  display: block;
  overflow: hidden;
  line-height: 0;
}

.nrv-adw-bild { height: 100%; }

.nrv-adw-bild img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 500ms ease;
}

.nrv-adw-bild:hover img,
.nrv-adw-bild:focus-within img {
  transform: scale(1.035);
}

.nrv-adw-text > * { margin-block: 0; }

/* **Der Ausreißer im Magazinraster.** Gemessen auf `/news/`: 38,4 px Titel
   in einer 368 px breiten Spalte – Verhältnis von Spaltenbreite zu
   Schriftgröße **9,6**, während alle Nachbarn zwischen 17,7 und 19,6 liegen
   (Jasmines Referenz, die Terminkarte: 353 px zu 19 px = 18,6). Der Titel
   lief dadurch über sechs Zeilen und allein 169 px hoch.

   Jetzt 1,5 rem, also Verhältnis 15,3: sichtbar größer als die Karten
   daneben, weil der Artikel der Woche hervorgehoben bleiben soll, aber
   nicht mehr doppelt so groß wie seine Spalte verträgt. */
.nrv-adw-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.25rem, 1.8vw, 1.5rem);
  font-weight: 600;
  line-height: 1.2;
  text-wrap: balance;
  margin-block: 0.35rem var(--wp--preset--spacing--haar);
}

.nrv-adw-titel a {
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-adw-titel a:hover,
.nrv-adw-titel a:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.nrv-adw-teaser {
  font-size: 1.05rem;
  line-height: 1.6;
  color: var(--wp--preset--color--navy);
  margin-block: 0 var(--wp--preset--spacing--haar);
}

/* **Der Block richtet sich nach seiner eigenen Breite, nicht nach dem
   Fenster.**

   Von Bene gemeldet: „Der Artikel der Woche funktioniert überhaupt nicht."
   Gemessen auf `/news/` bei 1440 px: Der Block ist 411 px breit und stand
   trotzdem **zweispaltig** – Bild 97 × 65 px links, Textspalte 233 px
   rechts. Der Titel brauchte darin 115 px, der Teaser **269 px über zehn
   Zeilen**, der ganze Block 527 px.

   Der Umbruch hing an `@media (max-width: 860px)`, also an der
   **Fensterbreite**. Seit der Block beim Magazin-Umbau (v2.15.3) aus der
   vollen Breite in die Seitenspalte gewandert ist, greift der Punkt dort
   nie: Das Fenster ist 1440 px breit, die Spalte 411.

   `@container` fragt die Breite des Blocks selbst ab. Damit stimmt das
   Layout an jeder Stelle – auch wenn der Block später wieder über die volle
   Breite rückt. Der Media Query darunter bleibt als Rückfall für Browser
   ohne Container Queries. */
.nrv-adw-block {
  container-type: inline-size;
  container-name: adw;
}

@container adw (max-width: 520px) {
  .nrv-adw-inhalt {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--wp--preset--spacing--eng);
    min-height: 0;
  }

  /* Bild über die volle Spaltenbreite statt als Briefmarke daneben. */
  .nrv-adw-bild { order: -1; height: auto; }

  .nrv-adw-bild img { height: auto; aspect-ratio: 16 / 9; }

  /* Der Auszug wird in der schmalen Fassung auf vier Zeilen begrenzt – zehn
     Zeilen Vorschau sind kein Teaser mehr, sondern der halbe Artikel. Die
     Begrenzung ist rein optisch; der vollständige Text steht im Beitrag. */
  .nrv-adw-teaser {
    display: -webkit-box;
    -webkit-line-clamp: 4;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-size: 1rem;
  }
}

/* Rückfall nur für Browser ohne Container Queries. Ohne die Kapselung
   stapelte der Block auch dort, wo er mit 705 px reichlich Platz für zwei
   Spalten hat – der Fensterwert sagt nichts über die Breite des Blocks. */
@supports not (container-type: inline-size) {
  @media (max-width: 860px) {
    .nrv-adw-inhalt {
      grid-template-columns: minmax(0, 1fr);
      gap: var(--wp--preset--spacing--eng);
      min-height: 0;
    }
    .nrv-adw-bild { height: auto; }
    .nrv-adw-bild img { height: auto; aspect-ratio: 16 / 9; }
  }
}

@media (prefers-reduced-motion: reduce) {
  .nrv-adw-bild img { transition: none !important; }
}

/* 29.2 Gast- und Originalbeiträge.

   Das Profil verlangt einen eindeutigen Wechsel der Autorenschaft, „ohne den
   Beitrag optisch unnötig zu zerlegen". Deshalb kein Kasten, sondern eine
   durchgehende Linie am linken Rand: Sie begleitet den ganzen Gastteil, statt
   ihn als Einschub zu rahmen. */
.nrv-gast-uebergang {
  display: flex;
  align-items: center;
  gap: 1rem;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
  margin-block: 2.5rem 1.25rem;
}

/* Die Linien laufen nach beiden Seiten aus – der Übergang ist eine Zäsur im
   Textfluss, keine Überschrift. */
.nrv-gast-uebergang::before,
.nrv-gast-uebergang::after {
  content: "";
  flex: 1 1 auto;
  height: 1px;
  background-color: var(--wp--preset--color--linie);
}

.nrv-gast-uebergang::before { flex: 0 0 2rem; }

.nrv-gastbeitrag {
  border-left: 2px solid var(--wp--preset--color--linie);
  padding-left: 1.75rem;
  margin-block: 0 2.5rem;
}

.nrv-gastbeitrag > *:first-child { margin-block-start: 0; }
.nrv-gastbeitrag > *:last-child  { margin-block-end: 0; }

.nrv-gast-signatur {
  font-style: italic;
  color: var(--wp--preset--color--grau);
  margin-block-start: 1.25rem;
}

@media (max-width: 720px) {
  .nrv-gastbeitrag {
    padding-left: 1rem;
  }
}

/* 29.3 Terminreihe: Hinweis, wenn keine Karte mehr gilt.

   Abgelaufene Termine werden serverseitig entfernt (siehe functions.php).
   Bleibt nichts übrig, steht hier ein Satz statt einer leeren Reihe – wie
   beim Schwerpunktbeitrag auch. */
.nrv-termine-leer {
  margin-block: 0;
  color: var(--wp--preset--color--grau);
  font-size: 1rem;
}

.nrv-termine-leer a {
  color: var(--wp--preset--color--navy);
  text-underline-offset: 0.18em;
}

/* ==========================================================================
   30. Kopfbereich nach dem Entwurf: Marke mittig über der Navigation (v2.9)
   --------------------------------------------------------------------------
   Der Artboard „Hauptnavigation · Desktop" baut den Kopf in drei Ebenen:
   Servicezeile, zentrierte Marke, Navigation darunter. Bis v2.8 stand alles
   in einer Zeile – Marke links, Navigation mittig, Knopf rechts. Das war der
   Punkt, den Jasmine als „nicht mit unserer CI vereinbar" gemeldet hat.

   Die Umstellung macht den Kopf höher. Das ist im Entwurf so angelegt und
   der Grund, warum er beim Scrollen auf eine kompakte Zeile zusammengeht
   (eigener Artboard „Navigation-Sticky", noch nicht umgesetzt).
   ========================================================================== */

.nrv-servicezeile {
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

/* **Kein zweites Padding.** Die äußere `.nrv-servicezeile` bringt den
   Seitenrand schon mit; WordPress gibt dem inneren `alignwide`-Container
   über `has-global-padding` noch einmal 24 px dazu. Gemessen begann die
   Zeile dadurch bei 97 statt 73 – zwei Kanten im selben Kopf. */
/* Zwei Klassen, sonst gewinnt WordPress' `has-global-padding`. Zum sechsten
   Mal dasselbe Muster – jede eigene Zuweisung auf einem WordPress-Block
   braucht mindestens zwei Klassen im Selektor. */
.nrv-service-zeile.wp-block-group {
  gap: clamp(1rem, 3vw, 2rem);
  padding-inline: 0;
}

/* Die Sozialsymbole tragen je 8 px Polsterung für die Klickfläche. Optisch
   bündig steht das erste Symbol erst, wenn der Block diese 8 px nach links
   ausgleicht – sonst beginnt die Reihe sichtbar weiter rechts als der Text
   darunter. */
.nrv-service-links > .nrv-social {
  margin-inline-start: -0.5rem;
}

.nrv-service-links,
.nrv-service-rechts {
  gap: clamp(0.75rem, 1.5vw, 1.375rem);
  margin-block: 0;
}

/* Die Sozialsymbole kommen aus `core/social-links`. Eigene SVG wären
   wartungspflichtig, und WordPress nimmt keine SVG-Uploads – der
   Standardblock bringt die Marken mit. */
.nrv-social {
  gap: 0.125rem !important;
  margin-block: 0;
}

.nrv-social .wp-block-social-link {
  padding: 0;
}

.nrv-social .wp-social-link a {
  padding: 0.5rem;
  border-bottom: 0;
}

/* --- Die Marke steht mittig ---------------------------------------------- */

/* **Kein `>`.** Die Marke liegt in `.nrv-kopf-mitte`, nicht direkt im Kopf –
   derselbe Fehler wie bei der Logobreite, nur eine Regel weiter oben. Bis
   v2.19.7 griff das Padding deshalb gar nicht: zwischen Schriftzug und
   Navigation standen gemessen 9 px statt der 26 des Artboards. Von Jasmine
   gemeldet („Abstände zum Menü, siehe Vorlage"). */
.nrv-kopf .nrv-marke {
  justify-content: center;
  gap: 1rem;
  padding-block: 1.375rem 1.625rem;
  margin-block: 0;
}

/* Die Marke aus dem Artboard „Hauptnavigation · Desktop": Wappen über dem
   Schriftzug, dort 520 px breit. Hier skaliert sie mit der Fensterbreite,
   damit sie neben dem Knopf „Mitglied werden" nicht mit ihm kollidiert –
   gemessen bleibt ab 1200 px genug Luft. Die Untergrenze von 230 px hält den
   Schriftzug in Versalien lesbar. */
/* **Kein `>` nach `.nrv-kopf`.** Die Marke liegt eine Ebene tiefer, in
   `.nrv-kopf-mitte` – der Kindkombinator griff ins Leere, und die Breite kam
   bis v2.17.1 allein aus dem `width`-Attribut des Logo-Blocks. Derselbe Fehler
   wie beim Versal-Initial der Artikelseite, wo WordPress ein `.entry-content`
   dazwischenschiebt.

   520 px ist der Wert aus dem Artboard „Hauptnavigation · Desktop". Weil dort
   kein Knopf „Mitglied werden" neben der Marke steht, schrumpft sie hier zu
   schmaleren Fenstern hin mit: Die Gerade durch (1440 px → 520) und
   (1024 px → 420) ist `174px + 24vw`. */
.nrv-kopf .nrv-marke .wp-block-site-logo img {
  width: clamp(230px, calc(174px + 24vw), 520px);
  height: auto;
}

.nrv-kopf > .nrv-marke .wp-block-site-title a {
  font-size: clamp(1.25rem, 2.2vw, 1.875rem);
  font-weight: 500;
  letter-spacing: 0.02em;
}

/* --- Die Navigation sitzt darunter, mit Linie dazwischen ------------------ */

/* **Die Linie zwischen Marke und Navigation gehört dorthin.** Ich hatte sie
   am 13.10.2026 entfernt mit der Begründung, der Artboard setze nur eine
   Linie unten am `<header>` – das war falsch und von Bene gemeldet. Zeile 56
   von `Navigation-Desktop.dc.html`:

       <div style="margin: 0 80px; border-top: 1px solid #DCE3EC"></div>

   Übersehen habe ich sie, weil mein Suchmuster `border-bottom` enthielt und
   das Trenn-Div `border-top` trägt, ohne Klasse und ohne Inhalt. **Aus einem
   Fund im Quelltext folgt nichts über das, was nicht gefunden wurde** – ich
   hätte den Kopfbereich am Stück lesen müssen statt zu greppen.

   `margin-inline` steht auf 5rem = 80 px wie im Entwurf; die vorige Fassung
   kam über `5vw` bei 1440 px nur auf 72 px. */
.nrv-kopf > .wp-block-navigation {
  margin-inline: 0;
  margin-block: 0;
  min-height: 60px;
  gap: clamp(1.5rem, 3.6vw, 3.25rem) !important;
}


/* Die Trennlinie zwischen Marke und Navigation ist ein **eigenes Element**,
   wie im Artboard (`<div style="margin: 0 80px; border-top: 1px solid
   #DCE3EC">`). Als `border-top` an der Navigation ging ihr Einzug verloren:
   WordPress liefert für den Kopf-Container
   `> :where(:not(.alignleft)…) { margin-left: auto !important }` – gegen
   `!important` kommt kein `margin-inline` an, die Linie lief über die ganze
   Breite statt mit 80 px Rand.

   **Dasselbe Muster wie dreimal zuvor** (Spenden-Modul, Sozialsymbole,
   kompakter Kopf): Eine eigene Regel auf einem WordPress-Layout-Block
   verliert gegen dessen generierte Regel. Hier hilft keine höhere
   Spezifität, sondern ein Element, das der Layout-Selektor nicht trifft. */
/* **Kein zusätzlicher Einzug mehr.** Kopf und Fußbereich liefen bis v2.29.3
   auf `wideSize: 1400px`, der Seiteninhalt auf 1280 – zwei Raster auf einer
   Seite. Gemessen bei 1440 px: Inhalt und „Das sind wir" auf der Kante 73,
   Spenden-Modul und Fußbereich auf 24, die Trennlinie im Kopf auf 104. Von
   Bene gemeldet („warum bricht das aus dem Schema der Seite raus?").

   Alle Container stehen jetzt auf 1280. Die 80 px Einzug, die die Linie
   vorher brauchte, um die Kante zu treffen, sind damit überzählig – der
   Container bringt sie mit. */
/* `alignwide` im Markup, damit die Linie dieselbe Breite hat wie der
   Seiteninhalt – ohne `align` bekäme sie in einem „constrained"-Container
   die Textbreite von 760 px. `max-width: none` wäre das andere Extrem und
   zöge sie über die volle Fensterbreite; gemessen stand sie damit auf der
   Kante 24 statt 73. */
.nrv-kopf > .nrv-kopf-trenner {
  height: 0;
  margin-block: 0;
  border-top: 1px solid var(--wp--preset--color--linie);
}

/* Versalien mit weitem Sperrsatz – im Entwurf 12,5 px bei 0.2em. Das
   Designsystem setzt 12 px als Untergrenze, also bleibt es dabei. */
.nrv-kopf > .wp-block-navigation .wp-block-navigation-item__content,
.nrv-kopf > .wp-block-navigation .wp-block-navigation-submenu__toggle {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.78rem;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

/* Die Untermenü-Einträge bleiben gemischt gesetzt: Versalien über mehrere
   Zeilen sind bei dieser Mitgliedschaft schwer zu lesen. */
.nrv-kopf > .wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  font-size: 0.9375rem;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
}

/* Der Knopf sitzt rechts auf Höhe der Marke. Im Entwurf steht er eine Ebene
   höher in der Servicezeile – dort scrollt er aber mit ihr hinaus, und der
   Artboard „Navigation-Sticky" zeigt ihn beim Scrollen ausdrücklich weiter.
   Deshalb eine Ebene tiefer, sonst unverändert. */
.nrv-kopf-mitte {
  position: relative;
  margin-block: 0;
}

/* **Der Knopf steht in der Servicezeile, wie im Entwurf.** Bis v2.22.3 saß er
   im Kopf rechts auf Höhe der Marke – eine Stelle, die der Artboard nicht
   kennt. Meine Begründung damals: In der Servicezeile scrollt er hinaus,
   obwohl „Navigation-Sticky" ihn weiter zeigt. Das stimmt, ist aber ein
   Problem des kompakten Zustands und kein Grund, den Normalzustand vom
   Entwurf abweichen zu lassen – gesehen wird zuerst der ungescrollte Kopf.
   Von Bene gemeldet.

   Maße aus `Navigation-Desktop.dc.html`: `min-height: 44px`, `padding: 0 22px`,
   13 px / 600, `letter-spacing: .04em`, `border-radius: 2px`, Pfeil dahinter.
   Unserer stand auf 49 px Höhe, 12 px und 700. */
.nrv-service-rechts > .nrv-kopf-cta {
  margin-block: 0;
  flex-shrink: 0;
}

.nrv-service-rechts > .nrv-kopf-cta .wp-block-button__link {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  gap: 0.625rem;
  padding: 0 1.375rem;
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  border-radius: 0;
  text-transform: none;
}

/* Der Pfeil steht im Entwurf hinter der Beschriftung. Als `::after`, damit
   die Beschriftung im Markup sauber bleibt – dieselbe Entscheidung wie bei
   `.nrv-cta` (v2.19.6). */
.nrv-service-rechts > .nrv-kopf-cta .wp-block-button__link::after {
  content: "→";
  font-size: 1em;
  line-height: 1;
}

/* ---------------------------------------------------------------------------
   Kompakter Zustand beim Scrollen (Artboard „Navigation-Sticky", 76 px)

   Aufgebaut ist der Kopf 252 px hoch. Klebend wäre das ein Fünftel der
   Fensterhöhe, das dem Inhalt dauerhaft fehlt. Die Klasse setzt
   `assets/js/navigation.js`.
   --------------------------------------------------------------------------- */

header.wp-block-template-part > .nrv-kopf {
  transition: padding 0.2s ease;
}

.nrv-kopf-kompakt > .nrv-kopf > .wp-block-group,
.nrv-kopf-kompakt > .nrv-kopf {
  --nrv-kopf-kompakt: 1;
}

.nrv-kopf-kompakt .nrv-kopf {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr) 260px;
  align-items: center;
  min-height: 76px;
  box-shadow: 0 6px 24px rgba(14, 42, 79, 0.08);
}

.nrv-kopf-kompakt .nrv-kopf-mitte {
  grid-column: 1;
  position: static;
  display: flex;
  justify-content: flex-start;
}

/* Im kompakten Zustand trägt nur das Wappen – der Schriftzug würde die
   260-px-Spalte sprengen, und die Marke ist am Wappen erkennbar. */
/* Alle drei ausdrücklich in Zeile 1. Ohne das platziert das Raster die
   Marke in Spalte 1, den Knopf in Spalte 3 – und die Navigation findet in
   Zeile 1 keinen freien Platz mehr vor sich, weil Auto-Placement nur
   vorwärts geht. Sie rutschte in eine zweite Zeile, der Kopf war 154 statt
   76 px hoch. Derselbe Mechanismus wie beim Spenden-Modul. */
.nrv-kopf-kompakt .nrv-marke {
  grid-column: 1;
  grid-row: 1;
  justify-content: flex-start;
  padding-block: 0.6875rem;
  gap: 0;
}

.nrv-kopf-kompakt .nrv-marke .wp-block-site-title {
  display: none;
}

/* Die Wort-Bild-Marke liegt bei 3,68 : 1 – eine Breitenangabe von 46 px wie
   beim früheren Wappen ergäbe hier 12 px Höhe. Im kompakten Kopf zählt die
   Höhe, nicht die Breite. */
/* Im kompakten Kopf steht links der **Stander**, nicht die Wort-Bild-Marke:
   Bei 34 px Höhe ist deren Schriftzug ohnehin nicht mehr zu lesen, und der
   Stander ist das Zeichen, das der Verein auch im Browser-Tab führt. Von
   Bene gewünscht („Wie im Favicon").

   Das Seitenlogo bleibt im Markup und trägt den vollen Kopf; `display: none`
   nimmt es im kompakten Zustand auch aus der Vorlesereihenfolge, sodass von
   den beiden Startseiten-Verweisen immer nur einer zählt. */
.nrv-kopf-kompakt .nrv-marke .wp-block-site-logo {
  display: none;
}

/* --- Der Stander ------------------------------------------------------- */

.nrv-marke-stander {
  display: none;
  line-height: 0;
  flex: 0 0 auto;
}

.nrv-marke-stander img {
  display: block;
  width: auto;
  height: 40px;
}

.nrv-kopf-kompakt .nrv-marke-stander {
  display: block;
}

/* Im kompakten Kopf zeigt der Artboard „Navigation-Sticky" den Knopf weiter.
   Die Servicezeile ist dort über das negative `top` des Headers hinaus-
   geschoben, der Knopf also außer Sicht. Er wird deshalb aus ihrem Fluss
   genommen und rechts in die kompakte Zeile gesetzt – Bezugspunkt ist der
   klebende Header selbst (`position: sticky` erzeugt ihn, siehe Abschnitt
   „Sticky gehört auf das header-Element"). */
/* Im kompakten Kopf hat die Linie keine Aufgabe – dort steht die Navigation
   neben Wappen und Knopf, nicht darunter. Als viertes Kind des Grids bekam
   sie eine eigene Zelle und stand als 100 px langer Strich quer in der
   Zeile. `display: none` statt `border: 0`, sonst bleibt die leere Zelle
   und verschiebt die Spalten. */
.nrv-kopf-kompakt .nrv-kopf-trenner {
  display: none;
}

/* **Nur ab 1200 px.** Darunter übernimmt der Menü-Knopf des Navigations-
   blocks die rechte Seite der Kopfzeile – gemessen auf einer Artikelseite bei
   716 px: Der Knopf lag auf 535–685, „MENÜ" auf 503–590, also mittendrin.
   Oberhalb steht die Navigation mittig und rechts ist Platz. Darunter bleibt
   der Knopf, wo er hingehört: in der Servicezeile. */
@media (min-width: 1200px) {
  .nrv-kopf-kompakt .nrv-service-rechts > .nrv-kopf-cta {
    position: absolute;
    z-index: 4;
    right: clamp(1rem, 4vw, 4.5rem);
    top: calc(var(--nrv-servicezeile, 60px) + 50%);
    transform: translateY(-50%);
  }
}

.nrv-kopf-kompakt .nrv-kopf > .wp-block-navigation {
  grid-column: 2;
  grid-row: 1;
  border-top: 0;
  margin-inline: 0;
  min-height: 0;
}

/* Der Knopf liegt im DOM in der mittleren Gruppe, soll aber in die dritte
   Spalte. Grid greift nur auf direkte Kinder – deshalb wird die Gruppe im
   kompakten Zustand selbst zum Raster und reicht den Knopf nach rechts
   durch. */
.nrv-kopf-kompakt .nrv-kopf-mitte {
  display: contents;
}

/* ---------------------------------------------------------------------------
   Schmale Fenster: eine Zeile, Marke links, Menü rechts

   Der Artboard „Mobil · Seite mit mitlaufender Leiste" zeigt 76 px mit Wappen
   und Wortmarke links und dem Menüsymbol rechts – ohne Servicezeile. Deren
   Inhalte liegen im geöffneten Menü.

   **Hier weiche ich ab und behalte die Servicezeile.** Der Navigationsblock
   von WordPress nimmt kein Suchfeld auf; ganz ausgeblendet gäbe es auf dem
   Telefon keine Suche mehr. Sie bleibt deshalb stehen, reduziert auf Suchfeld
   und Login – Sozialsymbole und Spenden stehen ohnehin im Fußbereich.
   --------------------------------------------------------------------------- */

@media (max-width: 1200px) {
  .nrv-kopf > .nrv-marke {
    padding-block: 1rem 0.875rem;
  }
  .nrv-kopf > .wp-block-navigation {
    border-top: 0;
    margin-inline: 0;
    min-height: 0;
  }
  /* Unter dem Umbruchpunkt steht ohnehin das Overlay – ein zweiter
     Zustand wäre ein zweiter Satz Regeln ohne Gewinn. */
  .nrv-kopf-kompakt .nrv-kopf {
    display: block;
    min-height: 0;
  }
  .nrv-kopf-kompakt .nrv-kopf-mitte {
    display: block;
    position: relative;
  }
  .nrv-kopf-kompakt .nrv-marke .wp-block-site-title {
    display: block;
  }

}


/* 30.1 Kopf unter dem Umbruchpunkt ---------------------------------------- */

@media (max-width: 1200px) {
  /* Marke links, Menüknopf rechts – eine Zeile statt drei gestapelter
     Blöcke. Ohne diese Regel stand die Marke mittig und darunter
     „Mitglied werden" und „Menü" untereinander. */
  .nrv-kopf > .wp-block-group,
  .nrv-kopf {
    position: relative;
  }

  .nrv-kopf .nrv-kopf-mitte {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
  }

  .nrv-kopf-mitte > .nrv-marke {
    justify-content: flex-start;
    flex: 1 1 auto;
    min-width: 0;
  }

  .nrv-service-rechts > .nrv-kopf-cta {
    flex: 0 0 auto;
  }

  /* Der Umschaltknopf des Navigationsblocks sitzt im Block selbst. Damit er
     neben die Marke kommt, rückt die Navigation in dieselbe Zeile.

     **Senkrecht zentriert über `inset-block` und `align-items`, nicht über
     `transform`.** Ein Vorfahre mit `transform` wird zum Bezugspunkt für
     `position: fixed` – und das Overlay-Menü von WordPress ist genau das.
     Mit `translateY(-50%)` bezog sein `inset: 0` sich auf die Navigation
     statt auf das Fenster: Gemessen stand das geöffnete Menü als 72 px
     hoher Kasten bei y = 176, während seine 61 Verweise bis y = 3479
     darunter hinausliefen. Es gab also keine Fläche hinter dem Menü.

     Derselbe Mechanismus trifft `position: sticky` nicht – deshalb ist das
     erst beim Prüfen des Overlays aufgefallen, nicht beim Kopf. */
  .nrv-kopf > .wp-block-navigation {
    position: absolute;
    right: var(--nrv-rand, 1.5rem);
    inset-block: 0;
    display: flex;
    align-items: center;
    margin: 0;
  }


}

@media (max-width: 780px) {
  /* Sozialsymbole und Spenden raus – beides steht im Fußbereich. Übrig
     bleiben Suche und Login, und damit passt die Zeile wieder in eine.

     Der Selektor nennt die Servicezeile mit: WordPress liefert für
     Layout-Blöcke `.wp-block-social-links.is-layout-flex { display: flex }`
     – zwei Klassen. Eine einklassige Regel verliert dagegen, und die
     Symbole blieben trotz greifender Media Query stehen. Dritter Fall
     dieser Art an einem Tag; **jede eigene `display`-Regel auf einem
     WordPress-Block braucht mindestens zwei Klassen.** */
  .nrv-servicezeile .nrv-social,
  .nrv-servicezeile .nrv-service-spenden {
    display: none;
  }

  .nrv-servicezeile > .wp-block-group {
    flex-wrap: nowrap;
    padding-block: 0.5rem;
  }

  :root {
    --nrv-servicezeile-hoehe: 52px;
  }

  /* **Umbrechen erlauben.** Seit der Knopf „Mitglied werden" in der
     Servicezeile steht (v2.22.4, wie im Entwurf), brauchen Login, Suche und
     Knopf bei 375 px zusammen rund 385 px plus Fugen – gemessener Überlauf
     138 px. Das Markup setzt `flexWrap: nowrap`, deshalb hier `!important`:
     Es schlägt keine eigene Regel, sondern die generierte Layout-Regel des
     Group-Blocks. Der Knopf rückt dadurch in eine zweite Zeile und läuft
     über die volle Breite – auf dem Telefon die bessere Klickfläche als ein
     gequetschter Knopf neben zwei anderen Bedienelementen. */
  .nrv-service-rechts {
    width: 100%;
    flex-wrap: wrap !important;
    justify-content: space-between;
    row-gap: 0.625rem;
  }

  .nrv-service-rechts > .nrv-kopf-cta {
    flex-basis: 100%;
  }

  .nrv-service-rechts > .nrv-kopf-cta .wp-block-button,
  .nrv-service-rechts > .nrv-kopf-cta .wp-block-button__link {
    width: 100%;
    justify-content: center;
  }

  .nrv-servicezeile .nrv-suche {
    width: min(220px, 55vw);
    order: 0;
    flex-basis: auto;
  }

  .nrv-service-login a {
    white-space: nowrap;
  }

  /* „Mitglied werden" ist auf dem Telefon der breiteste Einzelposten neben
     dem Menüknopf. Er bleibt, rückt aber enger. */


  .nrv-kopf-cta .wp-element-button {
    font-size: 0.75rem;
    padding-inline: 0.875rem;
  }
}

@media (max-width: 560px) {
  /* „MITGLIEDER-LOGIN" braucht in Versalien mit 0,16 em Sperrsatz rund
     160 px. Mit dem Suchfeld daneben lief die Zeile bei 375 px um 70 px
     über den Rand – gemessen scrollWidth 445. Weniger Sperrsatz und eine
     Stufe kleiner bringen es auf rund 120 px. */
  /* „Mitglieder-Login" misst in Versalien 163 px und sprengt die Zeile neben
     dem Suchfeld – kleiner setzen reichte nicht. Deshalb dieselbe Technik
     wie bei der Wortmarke: Die Vorsilbe verschwindet, „Login" bleibt. */
  .nrv-login-lang {
    display: none;
  }

  .nrv-service-login a {
    letter-spacing: 0.08em;
  }

  .nrv-servicezeile .nrv-suche {
    width: min(170px, 45vw);
  }
}

@media (max-width: 520px) {
  /* Unter 520 px tragen Marke, Knopf und Menü nicht mehr nebeneinander.
     Der Knopf weicht – er steht im geöffneten Menü weiterhin. */
  .nrv-kopf .nrv-service-rechts > .nrv-kopf-cta {
    display: none;
  }
  .nrv-marke .wp-block-site-title a {
    font-size: 1.125rem;
  }
}

/* ==========================================================================
   31. Über uns (v2.10)
   --------------------------------------------------------------------------
   Nach dem Artboard „Über uns · Desktop" (1440 × 5923): Aufmacher mit Bild,
   Sprungnavigation, drei Abschnitte (Das sind wir, Vorstand und Gremien,
   Unser Clubhaus) und vier Weiterführungen.

   Alle Texte stammen aus den Redaktionsseiten; aufgebaut über
   `skripte/ueber-uns-bauen.php`.
   ========================================================================== */

/* 31.1 Baustein „Seitenkopf mit Bild" (Canvas-Stand 15.10.2026)

   Der erste der elf Bausteine aus Jasmines Abgleich vom 26.10.2026. Fünf von
   sechs geprüften Artboards nutzen genau diesen Aufbau, Maße aus
   `Trainer.dc.html`, `Jobs.dc.html`, `Reviere.dc.html`, `Stiftungs-GYM.dc.html`
   und `Ueber-uns.dc.html`:

     Bühne 560 px über die volle Breite, Bild formatfüllend;
     unten links eine WEISSE Textkarte, 760 px breit, 80 px vom linken Rand,
     Innenabstand 48/56/40/0, darin Kicker, h1 54 px und eine kursive
     Unterzeile 24 px, dazu bis zu drei Knöpfe.

   **Das ist ein Gestaltungswechsel, kein Feinschliff.** Bis v3.27.1 stand der
   Text WEISS IM BILD auf einem Navy-Verlauf. Die weiße Karte ist in zweierlei
   Hinsicht besser: Der Kontrast hängt nicht mehr am Motiv – Navy auf Weiß
   ergibt 14,4:1 unabhängig vom Bild –, und die Kontrastmessung kann ihn
   wieder prüfen. Bei Text auf einem Verlauf musste er gerechnet werden, weil
   `background-color` einen Verlauf nicht kennt.

   Die linke Kante trifft das Raster: Bei 1440 px ergibt
   `(100% − 1280px) / 2` genau die 80 px des Entwurfs. */

.nrv-kopfbild {
  position: relative;
  margin-block: 0 clamp(2rem, 4vw, 3.5rem);
}

/* Die Bühne läuft randlos, der Entwurf setzt sie über die volle Breite.
   `align: full` allein genügt nicht: `wp:post-content` in `page.html` trägt
   selbst nur `align: wide`, und ein `alignfull` darin wird nie breiter als
   sein Container – gemessen 1280 statt 1440 px. Den Container auf `full` zu
   stellen war am 13.10. der falsche Weg (danach waren ALLE Blöcke 1837 px
   breit und die Wide-Size griff nirgends mehr).

   Deshalb bricht die Bühne selbst aus. `100vw` schließt eine sichtbare
   Scrollbar mit ein und erzeugt dann waagerechten Überlauf – darum die
   Begrenzung auf die Breite des Dokuments. */
.nrv-kopfbild.nrv-kopfbild {
  width: var( --nrv-fensterbreite, 100vw );
  max-width: var( --nrv-fensterbreite, 100vw );
  margin-inline: calc( 50% - var( --nrv-fensterbreite, 100vw ) / 2 );
}

/* `100vw` schließt eine sichtbare Scrollbar MIT EIN – gemessen 1440 gegen
   1425 px Dokumentbreite. Die Bühne stand dadurch 7 px zu weit links, die
   Textkarte landete bei 73 statt bei den 80 px des Entwurfs, und die Seite
   ließ sich waagerecht schieben.

   `overflow-x: clip` am body half nicht (der overflow des body wird auf den
   Viewport propagiert, wenn am html `visible` steht) und am html ebenso
   wenig – nachgemessen blieb `scrollX` bei 7,5. In CSS ist die
   Scrollbarbreite nicht zu erfahren.

   `navigation.js` setzt deshalb `--nrv-fensterbreite` aus
   `documentElement.clientWidth` und misst bei jedem `resize` neu. Der
   Rückfall `100vw` gilt nur, bis das Skript gelaufen ist. */

.nrv-kopfbild-foto {
  margin: 0;
}

/* Zwei Klassen im Selektor, sonst gewinnt WordPress' `.wp-block-image img
   { height: auto }` bei gleicher Spezifität über die Ladereihenfolge –
   gemessen 853 statt 260 px. Dieselbe Stelle wie bei Sozialsymbolen,
   Spenden-Modul, kompaktem Kopf, Servicezeile und Suchfeld-Platzhalter. */
.nrv-kopfbild .nrv-kopfbild-foto img {
  display: block;
  width: 100%;
  height: 260px;
  object-fit: cover;
}

/* Mobil ist die Karte keine Karte, sondern steht unter dem Bild – so der
   Artboard `Reviere-mobil.dc.html`: Bild 260 px, darunter 28/20/8 Innenabstand
   und 14 px Fuge. Ein Overlay auf 375 px Breite ließe vom Motiv nichts übrig. */
.nrv-kopfbild-text {
  background: var(--wp--preset--color--weiss);
  padding: 1.75rem 1.25rem 0.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
  margin-block: 0;
}

/* blockGap liefert `> * + * { margin-block-start }` – im Flex-Container
   verschiebt das jedes Kind außer dem ersten. Zum wiederholten Mal dieselbe
   Stelle. */
.nrv-kopfbild-text > * { margin-block: 0; }

/* Größe, Gewicht und Zeilenhöhe stehen in Abschnitt 56 (Typografie gegen die
   Spezifikation) und werden hier bewusst NICHT wiederholt – sonst gäbe es
   zwei Quellen für denselben Wert. Hier nur, was den Baustein ausmacht. */
.nrv-kopfbild-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  color: var(--wp--preset--color--navy);
  max-width: 24ch;
}

.nrv-kopfbild-unter {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.25rem;
  font-style: italic;
  line-height: 1.2;
  font-weight: 400;
  color: var(--wp--preset--color--navy);
  max-width: 40ch;
}

/* Bis zu drei Knöpfe, gefüllt oder umrandet. */
.nrv-kopfbild-knoepfe {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 0.5rem !important;
}

@media (min-width: 900px) {

  .nrv-kopfbild {
    height: 560px;
  }

  .nrv-kopfbild .nrv-kopfbild-foto,
  .nrv-kopfbild .nrv-kopfbild-foto img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
  }

  .nrv-kopfbild-text {
    position: absolute;
    /* Trifft bei 1440 px genau die 80 px des Entwurfs. Gerechnet wird gegen
       die Bühne, und die ist seit dem Full-Bleed so breit wie das Fenster. */
    left: max(1.5rem, calc((100% - 1280px) / 2));
    bottom: 0;
    width: min(760px, calc(100% - 10rem));
    padding: 3rem 3.5rem 2.5rem 0;
    gap: 1rem;
  }

  .nrv-kopfbild-unter { font-size: 1.5rem; }
}


/* 31.3 Abschnitte */

.nrv-ueber-abschnitt {
  margin-block: 0 clamp(3rem, 6vw, 5rem);
}

/* **Der seitliche Innenabstand fehlte.**
 *
 * Mit `padding-block` allein stand die getönte Fläche exakt an der Textkontur:
 * Überschrift und Karten klebten an ihrer linken Kante, und was ein abgesetzter
 * Abschnitt sein sollte, sah aus wie ein Balken hinter dem Text.
 *
 * Das ist derselbe Befund wie beim Newsraster (v2.6.3), nur umgekehrt: Dort
 * war eine Fläche **ohne** Innenabstand fälschlich eine Karte, hier fehlt einer
 * Fläche **mit** Absicht der Abstand. Das Unterscheidungsmerkmal bleibt
 * dasselbe. Der Artboard „Über uns · Desktop" setzt `padding: 96px 80px`. */
.nrv-ueber-grau {
  background: var(--wp--preset--color--flaeche);
  padding: clamp(2.5rem, 5vw, 4rem) clamp(1.5rem, 4vw, 5rem);
}

.nrv-ueber-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.75rem, 3vw, 2.4rem);
  font-weight: 500;
  line-height: 1.1;
  margin-block: 0 1.25rem;
  scroll-margin-top: 180px;
}

.nrv-ueber-untertitel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.25rem, 2vw, 1.6rem);
  font-weight: 600;
  margin-block: 2rem 1rem;
}



/* 31.4 Kennzahlen */

.nrv-kennzahlen {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1px;
  background: var(--wp--preset--color--linie);
  border-block: 1px solid var(--wp--preset--color--linie);
  margin-block: clamp(2rem, 4vw, 3rem);
}

.nrv-kennzahlen > *,
.nrv-kennzahl > * { margin-block: 0; }

.nrv-kennzahl {
  background: var(--wp--preset--color--weiss);
  padding: 1.5rem 1.25rem;
}

.nrv-kennzahl-wert {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(2rem, 3.4vw, 2.75rem);
  font-weight: 500;
  line-height: 1;
}

.nrv-kennzahl-text {
  font-size: 0.9375rem;
  line-height: 1.45;
  color: var(--wp--preset--color--grau);
  margin-block-start: 0.5rem;
}

/* Auf getöntem Grund müssen die Felder heller sein als die Fläche, sonst
   verschwindet das Raster. */
.nrv-ueber-grau .nrv-kennzahl {
  background: var(--wp--preset--color--weiss);
}

/* 31.5 Drei Bildkarten */

.nrv-ueber-karten {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: clamp(1.5rem, 3vw, 2.5rem);
  margin-block: clamp(2rem, 4vw, 3rem) 0;
}

.nrv-ueber-karten > *,
.nrv-ueber-karte > * { margin-block: 0; }

.nrv-ueber-karte {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.nrv-ueber-karte-bild {
  margin: 0;
  overflow: hidden;
}

.nrv-ueber-karte-bild img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

.nrv-ueber-karte-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.375rem;
  font-weight: 600;
  line-height: 1.2;
  margin-block: 0;
}

.nrv-ueber-karte p {
  font-size: 1rem;
  line-height: 1.55;
}

/* 31.6 Chronik der Clubhäuser */

.nrv-chronik {
  border-top: 1px solid var(--wp--preset--color--linie);
  margin-block: 1.25rem 0;
}

.nrv-chronik > * { margin-block: 0; }

.nrv-chronik-zeile {
  display: grid;
  grid-template-columns: 6rem minmax(0, 1fr);
  gap: 0 1.5rem;
  padding-block: 0.875rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

.nrv-chronik-zeile > * { margin-block: 0; }

.nrv-chronik-jahr {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.9375rem;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.nrv-chronik-text {
  font-size: 1rem;
  line-height: 1.5;
}

.nrv-haus-liste {
  margin-block: 0.75rem 1.25rem;
  padding-left: 1.125rem;
  line-height: 1.7;
}

/* 31.7 Weiterführungen */

.nrv-wf-karten {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: clamp(1.25rem, 2.5vw, 2rem);
  margin-block: clamp(1.5rem, 3vw, 2.5rem) 0;
}

.nrv-wf-karten > *,
.nrv-wf-karte > * { margin-block: 0; }

.nrv-wf-karte {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  background: var(--wp--preset--color--weiss);
  padding: 1.5rem 1.375rem;
}

.nrv-wf-karte-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-weight: 600;
  line-height: 1.2;
  margin-block: 0.25rem 0;
}

.nrv-wf-karte p:not(.nrv-label):not(.nrv-cta) {
  font-size: 0.9375rem;
  line-height: 1.5;
}

@media (max-width: 860px) {
  /* Der Seitenkopf braucht hier nichts mehr: Seit v3.28.0 ist die gestapelte
     Fassung der Normalfall und das Overlay die Ausnahme ab 900 px. */
  .nrv-chronik-zeile {
    grid-template-columns: 4.5rem minmax(0, 1fr);
    gap: 0 1rem;
  }
}

/* Seiten mit eigenem Aufmacher tragen ihren Titel im Bild. Der Titel aus
   `templates/page.html` stünde darüber ein zweites Mal – auf „Über uns"
   gemessen: „Über uns" als Seitentitel, „ÜBER UNS" als Marke im Bild und
   darunter die Zeile des Entwurfs. `:has()` greift auf den Container, nicht
   auf die Seite, und bleibt damit auf genau diese Seiten beschränkt. */
/* `.nrv-seitenkopf` ergänzt am 13.10.2026: Diese Seiten tragen ihren Titel
   als `h1` im Inhalt, damit er neben der Einleitung stehen kann. Der Titel
   aus `page.html` stünde sonst zusätzlich darüber – auf `/nrv-shop/` stand
   „NRV Shop" über „Fürs Wasser. Für den Club. Zum Verschenken.". */
/* Nur der SEITENTITEL wird ausgeblendet, nicht jeder Beitragstitel.
   `body:has(…) .wp-block-post-title` traf auch die Titel in Query-Blöcken –
   im Modul „Nachrichten aus …" blieben alle drei Überschriften unsichtbar
   (display: none, gemessen 0 × 0 px). Der Seitentitel ist ein direktes Kind
   von main; die Titel der Beitragsliste stecken in .wp-block-post-template. */
/* Seit v3.27.0 entfernt `nrv_andreaskreuz_seitentitel_unterdruecken()` in der
   functions.php den Block ganz, statt ihn hier auszublenden: `display: none`
   nimmt ihn dem Auge, nicht dem Dokument – 15 von 20 Seiten trugen dadurch
   zwei `h1`. Die Regel bleibt als Rückfall für den Editor, wo der Filter beim
   Vorschaurendern nicht greift. */
body:has(.nrv-kopfbild) main > .wp-block-post-title,
body:has(.nrv-seitenkopf) main > .wp-block-post-title {
  display: none;
}

/* ==========================================================================
   32. Erfolge (v2.10.2)
   --------------------------------------------------------------------------
   Nach dem Artboard „Erfolge · Desktop" (1440 × 6323). Vier nummerierte
   Abschnitte, dazu das Medaillenvisual, das Jasmines Briefing als
   Gestaltungsauftrag notiert hatte – mit der Vorgabe, olympische und
   paralympische Leistungen **gleichwertig** zu zeigen. Umgesetzt als zwei
   gleich gebaute Tafeln nebeneinander, nicht als Haupt- und Nebenliste.

   Aufbau über `skripte/erfolge-bauen.php`.
   ========================================================================== */

.nrv-erfolge-kopf {
  margin-block: 0 clamp(2.5rem, 5vw, 4rem);
}

.nrv-erfolge-kopf > * { margin-block: 0; }

.nrv-erfolge-sprung {
  padding-block: 1rem;
  border-block: 1px solid var(--wp--preset--color--linie);
  margin-block: clamp(1.5rem, 3vw, 2.5rem) 0;
}

/* 32.1 Der Nachwuchsweg als Stufenfolge */

.nrv-stufen {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 1px;
  background: var(--wp--preset--color--linie);
  border: 1px solid var(--wp--preset--color--linie);
  margin-block: clamp(1.5rem, 3vw, 2.5rem);
}

.nrv-stufen > *,
.nrv-stufe > * { margin-block: 0; }

.nrv-stufe {
  background: var(--wp--preset--color--weiss);
  padding: 1.25rem 1.125rem;
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
}

.nrv-stufe-marke {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
}

.nrv-stufe-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.1875rem;
  font-weight: 600;
  line-height: 1.2;
}

.nrv-stufe-text {
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--wp--preset--color--grau);
}

/* 32.2 Medaillenvisual

   Zwei Tafeln, gleich breit und gleich gebaut. Der Rang steht als Wort, nicht
   als Farbfläche: Gold, Silber und Bronze unterscheiden sich im Druck wie auf
   dem Bildschirm zu wenig, und eine reine Farbcodierung wäre für
   Farbfehlsichtige keine Information. */

.nrv-medaillen {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: clamp(1.5rem, 3vw, 2.5rem);
  margin-block: clamp(1.5rem, 3vw, 2.5rem);
}

.nrv-medaillen > *,
.nrv-medaillen-tafel > * { margin-block: 0; }

.nrv-medaillen-tafel {
  background: var(--wp--preset--color--weiss);
  padding: clamp(1.25rem, 2.5vw, 1.75rem);
}

.nrv-medaillen-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.375rem;
  font-weight: 600;
  margin-block: 0;
}

.nrv-medaillen-unter {
  font-size: 0.875rem;
  color: var(--wp--preset--color--grau);
  margin-block: 0.25rem 1.125rem;
  padding-bottom: 0.875rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

.nrv-medaille {
  display: grid;
  grid-template-columns: 5.25rem minmax(0, 1fr);
  gap: 0 1rem;
  padding-block: 0.75rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

.nrv-medaille > * { margin-block: 0; }

.nrv-medaille-rang {
  grid-column: 1;
  grid-row: 1 / span 2;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding-top: 0.25rem;
}

/* Der Rang wird zusätzlich durch einen Strich unterschiedlicher Stärke
   markiert – eine zweite Unterscheidung neben dem Wort, ohne Farbe. */
.nrv-medaille-rang::before {
  content: "";
  display: block;
  width: 2rem;
  margin-bottom: 0.4375rem;
  border-top: 3px solid var(--wp--preset--color--navy);
}

.nrv-medaille-silber .nrv-medaille-rang::before { border-top-width: 2px; }
.nrv-medaille-bronze .nrv-medaille-rang::before { border-top-width: 1px; }

.nrv-medaille-name {
  grid-column: 2;
  grid-row: 1;
  font-weight: 700;
  font-size: 1rem;
  line-height: 1.3;
}

.nrv-medaille-detail {
  grid-column: 2;
  grid-row: 2;
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--wp--preset--color--grau);
  margin-block-start: 0.125rem;
}

.nrv-wm-zeile {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 1.5rem;
  padding: 1rem 0;
  border-block: 1px solid var(--wp--preset--color--linie);
  margin-block: 0 1.5rem;
}

.nrv-wm-zeile > * { margin-block: 0; }
.nrv-wm-text { font-size: 1.0625rem; }

/* 32.3 Saisonstrahl der Bundesliga */

.nrv-saisons {
  display: grid;
  grid-template-columns: repeat(13, minmax(0, 1fr));
  gap: 2px;
  margin-block: clamp(1.5rem, 3vw, 2.5rem) 0.75rem;
}

.nrv-saisons > *,
.nrv-saison > * { margin-block: 0; }

.nrv-saison {
  background: var(--wp--preset--color--flaeche);
  padding: 0.875rem 0.25rem 0.625rem;
  text-align: center;
}

.nrv-saison-meister { background: var(--wp--preset--color--navy); }

.nrv-saison-marke {
  font-size: 0.875rem;
  line-height: 1;
  min-height: 1rem;
  color: var(--wp--preset--color--grau);
}

.nrv-saison-jahr {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  margin-block-start: 0.375rem;
}

.nrv-saison-meister .nrv-saison-marke,
.nrv-saison-meister .nrv-saison-jahr {
  color: var(--wp--preset--color--weiss);
}

.nrv-saison-legende {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.5rem;
  font-size: 0.8125rem;
  color: var(--wp--preset--color--grau);
  margin-block: 0 clamp(1.5rem, 3vw, 2.5rem);
}

.nrv-triples {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 1.5rem;
  margin-block: 0 1.5rem;
}

.nrv-triples > *,
.nrv-triple > * { margin-block: 0; }

.nrv-triple {
  border-left: 2px solid var(--wp--preset--color--navy);
  padding-left: 1.125rem;
}

.nrv-triple-jahr {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  margin-block: 0 0.5rem;
}

.nrv-triple ul {
  margin: 0;
  padding-left: 1.125rem;
  font-size: 0.9375rem;
  line-height: 1.6;
}

/* 32.4 Eignerkampagnen */

.nrv-boote {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: clamp(1.25rem, 2.5vw, 2rem);
  margin-block: clamp(1.5rem, 3vw, 2.5rem);
}

.nrv-boote > *,
.nrv-boot > * { margin-block: 0; }

.nrv-boot {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.nrv-boot-bild {
  margin: 0;
  overflow: hidden;
}

.nrv-boot-bild img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

.nrv-boot-name {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.375rem;
  font-weight: 600;
  line-height: 1.15;
  margin-block: 0;
}

.nrv-boot-text {
  font-size: 0.9375rem;
  line-height: 1.5;
  color: var(--wp--preset--color--grau);
}

@media (max-width: 860px) {
  /* Dreizehn Saisons nebeneinander ergeben auf dem Telefon 24-px-Spalten –
     die Jahreszahl passt dort nicht hinein. Zwei Reihen statt einer. */
  .nrv-saisons {
    grid-template-columns: repeat(7, minmax(0, 1fr));
  }
  .nrv-medaille {
    grid-template-columns: minmax(0, 1fr);
  }
  .nrv-medaille-rang,
  .nrv-medaille-name,
  .nrv-medaille-detail {
    grid-column: 1;
    grid-row: auto;
  }
}

/* ==========================================================================
   33. Partner und Partnerclubs (v2.11)
   --------------------------------------------------------------------------
   Nach den Artboards „Partner des NRV" (1440 × 4373) und „Partnerclubs ·
   Weltkarte" (1440 × 5123). Die Weltkarte fehlt – siehe CLAUDE.md, die
   Koordinaten gibt es im Bestand nicht. An ihrer Stelle steht die
   Ländergliederung aus den 80 Datenblättern.

   Aufbau über `skripte/partner-bauen.php` und `partnerclubs-bauen.php`.
   ========================================================================== */

/* 33.1 Vier Nutzenmodule */

/* **Feste vier Spalten, nicht `auto-fit`.** Bei 1128 px Inhaltsbreite und
   40 px Fuge braucht eine vierte Spalte 1160 px – `minmax(260px, 1fr)` legt
   deshalb nur drei an, und der vierte Punkt steht allein in einer zweiten
   Reihe. Bei vier gleichwertigen Aussagen sieht das nach Fehler aus.

   Derselbe Fall wie bei der H.E.A.T-Crew (v2.16.6): Steht die Zahl der
   Elemente fest, gehört die Spaltenzahl fest gesetzt. */
.nrv-nutzen {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(1.5rem, 3vw, 2.5rem);
  margin-block: clamp(1.5rem, 3vw, 2.5rem) 0;
}

@media (max-width: 1100px) {
  .nrv-nutzen { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 620px) {
  .nrv-nutzen { grid-template-columns: minmax(0, 1fr); }
}

.nrv-nutzen > *,
.nrv-nutzen-modul > * { margin-block: 0; }

.nrv-nutzen-modul {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  border-top: 2px solid var(--wp--preset--color--navy);
  padding-top: 1rem;
}

.nrv-nutzen-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.25rem;
  font-weight: 600;
  line-height: 1.25;
  margin-block: 0.25rem 0;
}

.nrv-nutzen-modul p:last-child {
  font-size: 0.9375rem;
  line-height: 1.55;
}

/* 33.2 Partnerschaftsgeschichte: Bild und Text nebeneinander */

.nrv-geschichte {
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: clamp(1.5rem, 3vw, 3rem);
  align-items: center;
  margin-block: clamp(1.5rem, 3vw, 2.5rem) 0;
}

.nrv-geschichte > *,
.nrv-geschichte-text > * { margin-block: 0; }

.nrv-geschichte-bild { margin: 0; overflow: hidden; }

.nrv-geschichte-bild img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

.nrv-geschichte-text {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
}

.nrv-geschichte-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.375rem, 2.2vw, 1.75rem);
  font-weight: 500;
  line-height: 1.15;
  margin-block: 0;
}

.nrv-massliste {
  margin-block: 0.75rem 0;
  padding-left: 1.125rem;
  line-height: 1.8;
  font-size: 1.0625rem;
}

/* 33.3 Logoraster

   Die Logos kommen als farbige JPEG aus dem Craft-Bestand, mit weißem Grund
   und unterschiedlichen Seitenverhältnissen. Der Entwurf zeigt sie
   einheitlich monochrom – das ginge nur, indem die Dateien neu gesetzt
   werden. Stattdessen sorgt eine gleich hohe Fläche mit `object-fit: contain`
   dafür, dass sie in einer Reihe stehen, ohne dass eines das andere
   erschlägt. */

.nrv-logos {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 1px;
  background: var(--wp--preset--color--linie);
  border: 1px solid var(--wp--preset--color--linie);
  margin-block: clamp(1.5rem, 3vw, 2.5rem) 0;
}

.nrv-logos > * { margin-block: 0; }

.nrv-logo {
  margin: 0;
  background: var(--wp--preset--color--weiss);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.25rem 1rem;
  min-height: 104px;
}

.nrv-logo img {
  display: block;
  max-width: 100%;
  max-height: 64px;
  width: auto;
  height: auto;
  object-fit: contain;
  /* Leicht entsättigt, damit achtzehn Marken nebeneinander nicht als
     Farbteppich wirken. Beim Zeigen volle Farbe – so bleibt erkennbar,
     dass es anklickbare Marken sind. */
  filter: grayscale(1);
  opacity: 0.78;
  transition: filter 0.2s ease, opacity 0.2s ease;
}

.nrv-logo:hover img {
  filter: grayscale(0);
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  .nrv-logo img { transition: none; }
}

/* 33.4 Ansprechpartner */

.nrv-ansprech {
  background: var(--wp--preset--color--flaeche);
  padding: clamp(1.5rem, 3vw, 2.5rem);
  margin-block: clamp(1.5rem, 3vw, 2.5rem) 0;
}

.nrv-ansprech > *,
.nrv-ansprech-text > * { margin-block: 0; }

.nrv-ansprech-text {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  max-width: 54ch;
}

.nrv-ueber-grau .nrv-ansprech {
  background: var(--wp--preset--color--weiss);
}

/* 33.5 Länder der Partnerclubs */

.nrv-laender {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1px;
  background: var(--wp--preset--color--linie);
  border: 1px solid var(--wp--preset--color--linie);
  margin-block: clamp(1.5rem, 3vw, 2.5rem) 0;
}

.nrv-laender > *,
.nrv-land > * { margin-block: 0; }

.nrv-land {
  background: var(--wp--preset--color--weiss);
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.75rem 1rem;
}

.nrv-land-name {
  font-size: 0.9375rem;
}

.nrv-land-zahl {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.9375rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

@media (max-width: 760px) {
  .nrv-geschichte {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ==========================================================================
   34. Mitglied werden und Kinderschutz (v2.12)
   --------------------------------------------------------------------------
   Nach den Artboards „Mitglied werden" (1440 × 7063) und „Kinder- und
   Jugendschutz" (1440 × 3773).
   ========================================================================== */

/* 34.1 Themenblöcke: Bild und Text im Wechsel */

/* Maße aus `Mitglied-werden.dc.html`: `repeat(2, minmax(0, 1fr))`, 80 px
   Fuge, mittig. `minmax(0, 1fr)` statt `1fr 1fr` – sonst kann ein Kind mit
   breitem Inhalt seine Spalte aufweiten, weil `1fr` eine Mindestbreite von
   `auto` hat. */
.nrv-thema {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(1.5rem, 6vw, 5rem);
  align-items: center;
}

.nrv-thema > *,
.nrv-thema-text > * { margin-block: 0; }

/* Jeder zweite Block spiegelt – das Bild wandert nach rechts. `order` statt
   einer zweiten Grid-Definition, damit die Reihenfolge im Quelltext gleich
   bleibt: Bild zuerst, dann Text. Für Screenreader ändert sich dadurch
   nichts. */
.nrv-thema-gedreht .nrv-thema-bild { order: 2; }

.nrv-thema-bild { margin: 0; overflow: hidden; }

/* Der Entwurf setzt eine feste Höhe von 560 px, kein Seitenverhältnis: Bei
   zwei gleich breiten Spalten entscheidet die Texthöhe sonst mit, und die
   vier Module stünden unterschiedlich hoch. */
.nrv-thema-bild img,
.nrv-thema > figure img {
  display: block;
  width: 100%;
  height: 560px;
  object-fit: cover;
}

.nrv-thema-text {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

/* Ohne eigene Schriftgröße: Das Modul hat weder Rahmen noch Fläche, ist
   also kein Kasten – sein Titel folgt der Abschnitts-H2 in Abschnitt 56.
   Zwei Angaben für denselben Wert laufen auseinander. */
.nrv-thema-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  margin-block: 0.25rem 0;
}

/* `:not(.nrv-label)` wie bei `.nrv-gs-block`, `.nrv-teamkarte` und
   `.nrv-rechts-karte`: Ein Kicker ist ein Absatz, und eine Modulregel mit
   zwei Selektorteilen schlägt sonst `.nrv-label` mit seiner einen Klasse.
   Gemessen stand der Kicker hier auf 16 px statt 13. */
.nrv-thema-text p:not(.nrv-label):not(.nrv-cta) { font-size: 1rem; line-height: 1.6; }

/* 34.2 Downloads */

.nrv-downloads {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
  margin-block: clamp(1.5rem, 3vw, 2.5rem);
}

.nrv-downloads > *,
.nrv-download > * { margin-block: 0; }

.nrv-download {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  background: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
  padding: 1.375rem 1.25rem;
}

.nrv-download-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.1875rem;
  font-weight: 600;
  margin-block: 0;
}

.nrv-download-text {
  font-size: 0.9375rem;
  line-height: 1.45;
  color: var(--wp--preset--color--grau);
  flex: 1 1 auto;
}

.nrv-download-kontakt { background: var(--wp--preset--color--flaeche); }

/* 34.3 Kinderschutz: Ansprechpersonen

   Intern und extern stehen in zwei Spalten mit sichtbarer Trennung. Das
   Briefing verlangt die Trennung ausdrücklich – wer sich unabhängig beraten
   lassen will, muss auf einen Blick sehen, welche Stelle nicht zum Club
   gehört. */

.nrv-ks-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.9rem, 3.6vw, 3rem);
  font-weight: 500;
  line-height: 1.08;
  margin-block: 0.5rem 1.25rem;
}

.nrv-ks-spalten {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: clamp(1.5rem, 3vw, 2.5rem);
  margin-block: clamp(1.5rem, 3vw, 2rem) 0;
}

.nrv-ks-spalten > *,
.nrv-ks-block > * { margin-block: 0; }

.nrv-ks-block {
  background: var(--wp--preset--color--weiss);
  padding: clamp(1.25rem, 2.5vw, 1.75rem);
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

/* Die interne Spalte trägt oben einen kräftigen Strich, die externe einen
   feinen – eine Unterscheidung, die auch ohne Farbe trägt. */
.nrv-ks-intern { border-top: 3px solid var(--wp--preset--color--navy); }
.nrv-ks-extern { border-top: 1px solid var(--wp--preset--color--navy); }

.nrv-ks-einleitung {
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--wp--preset--color--grau);
}


.nrv-ks-rolle {
  font-size: 0.875rem;
  line-height: 1.4;
  color: var(--wp--preset--color--grau);
  margin-block: 0.125rem 0.375rem;
}


/* 34.4 Die neun Maßnahmen als Stufenmodul */

.nrv-ks-phase {
  margin-block: clamp(1.5rem, 3vw, 2rem) 0;
}

.nrv-ks-phase > * { margin-block: 0; }

.nrv-ks-phase-marke {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  padding-bottom: 0.625rem;
  border-bottom: 2px solid var(--wp--preset--color--navy);
  margin-block-end: 1.25rem;
}

.nrv-ks-massnahmen {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(270px, 1fr));
  gap: clamp(1.25rem, 2.5vw, 2rem);
}

.nrv-ks-massnahmen > *,
.nrv-ks-massnahme > * { margin-block: 0; }

.nrv-ks-massnahme {
  display: grid;
  grid-template-columns: 2.5rem minmax(0, 1fr);
  gap: 0 0.875rem;
  align-items: start;
}

.nrv-ks-nummer {
  grid-column: 1;
  grid-row: 1 / span 2;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--wp--preset--color--grau);
  font-variant-numeric: tabular-nums;
}

.nrv-ks-massnahme-titel {
  grid-column: 2;
  grid-row: 1;
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.1875rem;
  font-weight: 600;
  line-height: 1.2;
  margin-block: 0 0.375rem;
}

.nrv-ks-massnahme-text {
  grid-column: 2;
  grid-row: 2;
  font-size: 0.9375rem;
  line-height: 1.55;
}

@media (max-width: 760px) {
  .nrv-thema {
    grid-template-columns: minmax(0, 1fr);
  }
  /* Gespiegelt ergibt einspaltig keinen Sinn – das Bild gehört über den
     Text, sonst steht es zwischen Titel und Fließtext. */
  .nrv-thema-gedreht .nrv-thema-bild { order: 0; }
}


/* ====================================================================== */
/* 35. NRV Shop und Clubkollektion                                        */
/* ====================================================================== */

/* 35.1 Zwei Wege zum Sortiment */

.nrv-shop-wege {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
  margin-block: 2.5rem 3.5rem;
}

/* blockGap setzt auf Geschwisterelemente einen oberen Außenabstand. Im Grid
   verschiebt der die zweite Spalte nach unten – hier regelt gap die Abstände. */
.nrv-shop-wege > * { margin-block: 0; }

.nrv-shop-weg {
  display: flex;
  flex-direction: column;
  background-color: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
  padding: 2rem;
}

.nrv-shop-weg > * { margin-block: 0; margin-inline: 0; max-width: none; }
.nrv-shop-weg > * + * { margin-block-start: 0.75rem; }

.nrv-shop-weg h3 {
  font-size: 1.5rem;
  line-height: 1.2;
}

/* Der Knopf sitzt unten, damit beide Karten trotz ungleich langer Texte auf
   derselben Höhe enden. */
.nrv-shop-weg .wp-block-buttons {
  margin-block-start: auto;
  padding-block-start: 1.25rem;
}

/* 35.2 Produktraster */

.nrv-produktraster {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 2rem 1.5rem;
  margin-block: 2rem 3rem;
}

/* Ein Group-Block mit „constrained"-Layout gibt seinen Kindern
   `margin-inline: auto` und `max-width: content-size`, dazu `has-global-padding`
   seitlichen Innenabstand. Bei einem Grid- oder Flex-Item verhindern auto-Margins
   das Strecken: Die Kachel bleibt so breit wie ihr Inhalt, und die Produktfotos
   einer Zeile stehen unterschiedlich breit nebeneinander – gemessen 241 px neben
   302 px. Es sieht nach einem Bildproblem aus und ist eine Layoutnebenwirkung.

   Das Markup setzt deshalb `layout: default`. Diese Regeln fangen zusätzlich die
   Kacheln ab, die jemand als Blockmuster von Hand einfügt – im Editor ist die
   Voreinstellung wieder „constrained". */
.nrv-produktraster > *,
.nrv-shop-wege > *,
.nrv-koll-schritte > * {
  margin-block: 0;
  margin-inline: 0;
  max-width: none;
}

.nrv-produkt.has-global-padding {
  padding-inline: 0;
}

.nrv-produkt {
  display: flex;
  flex-direction: column;
}

.nrv-produkt > * {
  margin-block: 0;
  margin-inline: 0;
  max-width: none;
}

/* Die Produktfotos sind auf Weiß freigestellt und haben unterschiedliche
   Seitenverhältnisse – vom liegenden Stander bis zur stehenden Latzhose.
   Deshalb `contain` statt `cover`: Ein beschnittenes Produkt ist unbrauchbar,
   und ein einheitlicher Rahmen hält das Raster trotzdem ruhig.

   Die weiße Fläche ist hier Absicht, kein Versehen wie im Newsraster: Sie hat
   Innenabstand und trägt das Bild. Genau das unterscheidet eine Karte von
   einem stehengebliebenen Hintergrund. */
.nrv-produkt-bild {
  /* Ausdrücklich 100 %, nicht `align-self: stretch`: Eine Figure, deren Bild
     schmaler ist als die Spalte, bleibt sonst auf der Bildbreite stehen – das
     Bild misst sich an der Figure, die Figure am Bild. */
  width: 100%;
  box-sizing: border-box;
  background-color: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
  padding: 1.25rem;
  margin-block-end: 0.875rem;
}

.nrv-produkt-bild img {
  display: block;
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: contain;
}

.nrv-produkt-name {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.25rem;
  font-weight: 600;
  line-height: 1.25;
  margin-block-end: 0.375rem;
}

.nrv-produkt-preis {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

/* Fehlt ein Preis, steht das als Hinweis da – gedämpft, nicht wie eine
   Preisangabe. Geraten wird nichts. */
.nrv-produkt-preis-offen {
  font-weight: 500;
  font-style: italic;
  color: var(--wp--preset--color--grau);
}

.nrv-produkt-varianten {
  list-style: none;
  padding-left: 0;
  margin-block: 0;
  font-size: 0.9375rem;
}

.nrv-produkt-varianten li {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding-block: 0.3125rem;
  border-block-end: 1px solid var(--wp--preset--color--linie);
  color: var(--wp--preset--color--grau);
}

.nrv-produkt-varianten li:last-child { border-block-end: 0; }

.nrv-produkt-varianten strong {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--wp--preset--color--navy);
  white-space: nowrap;
}

/* 35.3 Reservieren */

.nrv-shop-bestellen {
  background-color: var(--wp--preset--color--flaeche);
  padding: 2.5rem;
  margin-block: 3rem 0;
}

.nrv-shop-bestellen > * { margin-block: 0; }
.nrv-shop-bestellen > * + * { margin-block-start: 1rem; }

.nrv-shop-kontaktliste {
  list-style: none;
  padding-left: 0;
  max-width: 46rem;
}

.nrv-shop-kontaktliste li {
  display: grid;
  /* 14rem, nicht `max-content`: Jedes Listenelement ist ein eigenes Grid, bei
     max-content bekommt also jede Zeile ihre eigene Spaltenbreite und die Werte
     stehen nicht mehr untereinander – gemessen 52, 68 und 206 px. Die feste
     Breite trägt das längste Label („Geschäftsstellenzeiten", 206 px in
     Versalien) und hält die Werte auf einer Kante. */
  grid-template-columns: 14rem minmax(0, 1fr);
  gap: 1rem;
  padding-block: 0.5rem;
  border-block-end: 1px solid var(--wp--preset--color--linie);
}

.nrv-shop-kontaktliste li:last-child { border-block-end: 0; }

.nrv-shop-kontaktliste strong {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
  align-self: center;
}

/* 35.4 Die drei Schritte zur Clubkollektion */

.nrv-koll-schritte {
  margin-block: 3rem;
}

.nrv-koll-schritte > h2 { margin-block-end: 1.75rem; }

/* Das Grid liegt auf den Schritten, nicht auf dem Abschnitt – die Überschrift
   soll über der vollen Breite stehen und nicht als vierte Spalte mitlaufen. */
.nrv-koll-schritte {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.5rem;
}

.nrv-koll-schritte > h2 {
  grid-column: 1 / -1;
  margin-block: 0 0.5rem;
}

.nrv-koll-schritte > * { margin-block: 0; }

.nrv-koll-schritt {
  border-top: 2px solid var(--wp--preset--color--navy);
  padding-block-start: 1rem;
}

.nrv-koll-schritt > * { margin-block: 0; margin-inline: 0; max-width: none; }
.nrv-koll-schritt > * + * { margin-block-start: 0.625rem; }

.nrv-koll-ziffer {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--wp--preset--color--grau);
}

.nrv-koll-schritt h3 {
  font-size: 1.3125rem;
  line-height: 1.25;
}

/* 35.5 Schmalere Fenster */

@media (max-width: 1100px) {
  .nrv-produktraster { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 860px) {
  .nrv-produktraster { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nrv-shop-wege,
  .nrv-koll-schritte { grid-template-columns: minmax(0, 1fr); }
  .nrv-shop-bestellen { padding: 1.75rem; }
}

@media (max-width: 760px) {
  /* Zwei Spalten für Beschriftung und Wert brauchen zusammen gut 600 px.
     Darunter steht die Beschriftung über ihrem Wert. */
  .nrv-shop-kontaktliste li { grid-template-columns: minmax(0, 1fr); gap: 0.125rem; }
}

@media (max-width: 560px) {
  /* Einspaltig bleibt es bei zwei Produkten je Zeile: Eine Kachel über die
     volle Breite macht aus 15 Artikeln eine sehr lange Seite, und die Fotos
     sind quadratisch gefasst – sie tragen auch schmal. */
  .nrv-produktraster { gap: 1.5rem 1rem; }
  .nrv-produkt-bild { padding: 0.75rem; }
}


/* ====================================================================== */
/* 36. Teamseiten: Olympic Team und H.E.A.T Sailing                       */
/* ====================================================================== */

/* Der Aufmacher kommt aus Abschnitt 31 („Über uns") – ein Muster, drei
   Seiten. Hier steht nur, was dazukommt. */

/* 36.1 Abschnittsköpfe und Textblöcke */

.nrv-team-kopf {
  margin-block: clamp(2.5rem, 5vw, 4rem) 1.5rem;
}

.nrv-team-kopf > * { margin-block: 0; margin-inline: 0; max-width: none; }
.nrv-team-kopf > * + * { margin-block-start: 0.5rem; }

.nrv-team-kopf p:not(.nrv-label):not(.nrv-cta) {
  max-width: 68ch;
  margin-block-start: 1rem;
}

.nrv-team-abschnitt {
  margin-block: clamp(2rem, 4vw, 3rem);
}

.nrv-team-abschnitt > * { margin-block: 0; margin-inline: 0; }
.nrv-team-abschnitt > * + * { margin-block-start: 1rem; }
.nrv-team-abschnitt p { max-width: 68ch; }


/* Porträts im Hochformat 4:5. Die Vorlagen sind uneinheitlich – vom Quadrat
   bis zum Querformat –,
und anders als bei den Produktfotos ist `cover` hier
   richtig: Ein Gesicht verträgt seitlichen Beschnitt,
eine Leerfläche neben
   dem Kopf sähe nach Fehler aus. Wo der Kopf nicht mittig sitzt {
  width: 100%;
  box-sizing: border-box;
  margin-block-end: 0.75rem;
}


.nrv-athlet-position {
  font-size: 0.9375rem;
  color: var(--wp--preset--color--grau);
  margin-block-start: 0.1875rem;
}

/* Die Ehemaligen stehen kleiner – sie gehören zur Geschichte des Teams {
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
}


/* 36.3 Olympische Jahresleiste */

.nrv-olympialeiste {
  display: grid;
  grid-template-columns: repeat(19, minmax(0, 1fr));
  gap: 4px;
  align-items: end;
  margin-block: 1.5rem 2rem;
}

.nrv-olympialeiste > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-olympiajahr {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 150px;
}

.nrv-olympiajahr > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-olympiajahr-zahl {
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block-start: 0.5rem;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 600;
  text-align: center;
  color: var(--wp--preset--color--grau);
}

/* Ein Medaillenjahr trägt eine kräftige Oberkante statt einer Farbe: Gold,
   Silber und Bronze sind am Bildschirm zu ähnlich, und eine reine
   Farbcodierung trägt für Farbfehlsichtige keine Information. Dieselbe
   Entscheidung wie beim Medaillenvisual auf „Erfolge". */
.nrv-olympiajahr-medaille .nrv-olympiajahr-zahl {
  border-top: 3px solid var(--wp--preset--color--navy);
  color: var(--wp--preset--color--navy);
  font-weight: 700;
}

.nrv-olympiajahr-medaillentext {
  font-size: 0.75rem;
  line-height: 1.3;
  color: var(--wp--preset--color--navy);
  background: var(--wp--preset--color--flaeche);
  padding: 0.5rem 0.375rem;
  margin-block-end: 0.5rem;
  /* Senkrecht gesetzt – bei 19 Spalten auf 1280 px stehen je Spalte 63 px zur
     Verfügung, waagerecht bliebe von „Silber · Susann Beucke" ein Wortsalat. */
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  max-height: 240px;
  align-self: center;
}

/* 36.4 Nachrichten aus dem Team */

.nrv-team-news .wp-block-post-template {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 2rem;
  list-style: none;
  padding-inline: 0;
  margin-block: 1.5rem;
}

.nrv-team-news .wp-block-post-template > li { margin-block: 0; }

.nrv-team-news-bild img {
  width: 100%;
  height: auto;
}

.nrv-team-news-titel {
  font-size: 1.25rem;
  line-height: 1.25;
  margin-block: 0.375rem 0.5rem;
}

.nrv-team-news-titel a { text-decoration: none; }
.nrv-team-news-titel a:hover { text-decoration: underline; }

.nrv-team-news-text {
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--wp--preset--color--grau);
  margin-block: 0;
}

.nrv-team-news .nrv-datum {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  color: var(--wp--preset--color--grau);
  margin-block-start: 0.625rem;
}

/* 36.5 Video erst nach Einwilligung */

.nrv-video {
  margin-block: 1.5rem clamp(2rem, 4vw, 3rem);
}

.nrv-video-flaeche {
  background: var(--wp--preset--color--flaeche);
  border: 1px solid var(--wp--preset--color--linie);
  padding: clamp(1.75rem, 4vw, 3rem);
  /* 16:9 wie das Video, das hier erscheinen wird – so springt die Seite beim
     Laden nicht. */
  min-height: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  aspect-ratio: 16 / 9;
}

.nrv-video-flaeche > * { margin-block: 0; max-width: 54ch; }
.nrv-video-flaeche > * + * { margin-block-start: 0.75rem; }

.nrv-video-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.5rem;
  font-weight: 600;
  line-height: 1.2;
}

.nrv-video-hinweis {
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--wp--preset--color--grau);
}

.nrv-video-fuss {
  font-size: 0.8125rem;
  color: var(--wp--preset--color--grau);
}

.nrv-video-laeuft {
  aspect-ratio: 16 / 9;
}

.nrv-video-laeuft iframe {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  border: 0;
}

/* 36.6 Schmalere Fenster */

@media (max-width: 1000px) {
  .nrv-team-news .wp-block-post-template { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 860px) {
  /* 19 Spalten brauchen mindestens 63 px je Spalte, sonst steht die
     Jahreszahl quer. Darunter läuft die Leiste in zwei Reihen. */
  .nrv-olympialeiste { grid-template-columns: repeat(10, minmax(0, 1fr)); }
  .nrv-olympiajahr { min-height: 110px; }
  .nrv-olympiajahr-medaillentext { max-height: 170px; font-size: 0.75rem; }
  
  .nrv-video-flaeche { aspect-ratio: auto; }
}

@media (max-width: 620px) {
  .nrv-team-news .wp-block-post-template { grid-template-columns: minmax(0, 1fr); }
  .nrv-olympialeiste { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}

/* 36.7 H.E.A.T Sailing */

.nrv-heat-chronik {
  display: grid;
  gap: 0;
  margin-block: 1.5rem clamp(2rem, 4vw, 3rem);
  border-top: 1px solid var(--wp--preset--color--linie);
}

.nrv-heat-chronik > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-heat-station {
  display: grid;
  grid-template-columns: 7rem minmax(0, 1fr);
  gap: 1.5rem;
  padding-block: 1.125rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

.nrv-heat-station > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-heat-jahr {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.9375rem;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.nrv-heat-text {
  max-width: 68ch;
  line-height: 1.6;
}

/* Die Crew der H.E.A.T-Seite trug bis v3.44 eine eigene Tafel
   (`nrv-heat-crew`, vier Spalten mit 1-px-Fugen auf getöntem Grund).
   Seit dem Personenkarten-Baustein steht dort `nrv-personenkarte`,
   Abschnitt 64.2 – die alte Regel ist damit entfallen.

   Sie stand hier zuletzt **ohne Selektor**: Eine Umbenennung hatte die
   Selektorzeile in den Kommentar darüber gezogen, der dadurch nie
   geschlossen wurde. Der Browser las die Deklarationen als Block ohne
   Selektor und verwarf sie, und die Datei trug eine schließende Klammer
   zu viel. **Sichtbar war das nirgends** – die Regel war ohnehin
   verwaist. Gefunden hat es die Klammerbilanz, nicht der Augenschein:
   Wer CSS ändert, zählt `{` gegen `}` mit ausgeblendeten Kommentaren. */


.nrv-heat-stand {
  font-size: 0.8125rem;
  color: var(--wp--preset--color--grau);
  margin-block: 0 clamp(2rem, 4vw, 3rem);
}

.nrv-heat-teamfoto,
.nrv-heat-klassenbild {
  margin-block: clamp(1.5rem, 3vw, 2.5rem);
}

.nrv-heat-teamfoto img,
.nrv-heat-klassenbild img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

.nrv-heat-unterstuetzen {
  background: var(--wp--preset--color--flaeche);
  padding: clamp(1.75rem, 4vw, 3rem);
  margin-block: clamp(2rem, 4vw, 3rem);
}

.nrv-heat-unterstuetzen > * { margin-block: 0; margin-inline: 0; max-width: none; }
.nrv-heat-unterstuetzen > * + * { margin-block-start: 1rem; }
.nrv-heat-unterstuetzen p { max-width: 68ch; }

.nrv-heat-zwecke {
  list-style: none;
  padding-inline: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 1.25rem;
  max-width: none;
}

.nrv-heat-zwecke li {
  margin-block: 0;
  padding-block-start: 0.875rem;
  border-top: 2px solid var(--wp--preset--color--navy);
  font-size: 0.9375rem;
  line-height: 1.55;
}

.nrv-heat-zwecke strong {
  display: block;
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.1875rem;
  font-weight: 600;
  margin-block-end: 0.25rem;
}

@media (max-width: 1000px) {
}

@media (max-width: 620px) {
  .nrv-heat-station { grid-template-columns: minmax(0, 1fr); gap: 0.25rem; }
  
}


/* ====================================================================== */
/* 37. Newsbereich: Magazinseite, Rubriken, Stammdaten, Newsletter        */
/* ====================================================================== */

/* 37.1 Kopf und Rubrikenleiste */

.nrv-magazin-kopf {
  margin-block: 0 1.25rem;
}

.nrv-magazin-kopf > * { margin-block: 0; margin-inline: 0; }

.nrv-magazin-titel {
  font-size: clamp(2.4rem, 2.4rem + ((1vw - 0.2rem) * 3), 4.2rem);
  line-height: 1.08;
  margin-block-start: 0.25rem;
}

.nrv-rubriken {
  margin-block: 0 clamp(2rem, 4vw, 3rem);
  border-block: 1px solid var(--wp--preset--color--linie);
  padding-block: 0.875rem;
}

.nrv-rubriken-liste {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.25rem;
}

.nrv-rubriken-liste li { margin: 0; }

.nrv-rubriken-liste a {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--wp--preset--color--grau);
  padding-block: 0.25rem;
  border-bottom: 2px solid transparent;
}

.nrv-rubriken-liste a:hover,
.nrv-rubriken-liste a:focus-visible {
  color: var(--wp--preset--color--navy);
  border-bottom-color: var(--wp--preset--color--linie);
}

/* Die aktuelle Rubrik wird nicht nur dunkler, sondern bekommt die Linie: Eine
   reine Farbabstufung zwischen gedämpftem und vollem Text ist für eine
   Mitgliedschaft im Schnitt über 60 kein verlässlicher Unterschied. */
.nrv-rubriken-liste a[aria-current="page"] {
  color: var(--wp--preset--color--navy);
  border-bottom-color: var(--wp--preset--color--navy);
}

/* 37.2 Aufmacherbereich: Lead links, Artikel der Woche rechts */

/* **Der Aufmacherbereich ist seit v3.63.0 kein zweispaltiges Raster mehr.**
   Bis dahin stand hier `8fr 4fr` mit dem Lead links und dem Artikel der
   Woche rechts. Gemessen im Artboard ist das `8fr 4fr` aber der **Lead
   selbst** – 821 px Bild, 411 px Text, zusammen über die vollen 1280 –,
   und der Artikel der Woche ist ein eigenes `5fr 7fr`-Modul darunter
   (siehe 29.1).

   Der Unterschied fällt in keiner Messung auf, weil beide Lesarten ein
   `8/4` ergeben. Sichtbar wurde er erst im Bildschirmabzug: Mit den
   Sekundärkarten in der Seitenspalte stand der Lead 301 px hoch neben
   einer 932 px hohen Spalte. */
.nrv-magazin-aufmacher {
  display: block;
  margin-block: 0 clamp(2.5rem, 5vw, 4rem);
}

.nrv-magazin-aufmacher > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-magazin-haupt > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-magazin-lead-bild img {
  display: block;
  width: 100%;
  height: auto;
}

.nrv-magazin-lead .nrv-label { margin-block: 1rem 0.375rem; }

.nrv-magazin-lead-titel {
  font-size: clamp(1.75rem, 1.6rem + 1vw, 2.6rem);
  line-height: 1.12;
  margin-block: 0 0.625rem;
}

.nrv-magazin-lead-titel a { text-decoration: none; }
.nrv-magazin-lead-titel a:hover { text-decoration: underline; }

.nrv-magazin-lead-text {
  max-width: 62ch;
  line-height: 1.6;
  margin-block: 0;
}

.nrv-magazin-lead .nrv-datum { margin-block-start: 0.625rem; }

/* Die beiden Sekundärkarten unter dem Aufmacher, über die volle Breite –
   im Artboard ein eigenes zweispaltiges Raster unter dem Lead. */
.nrv-magazin-sekundaer .wp-block-post-template {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2.5rem;
  list-style: none;
  padding-inline: 0;
  margin-block: 2.5rem 0;
  padding-block-start: 2.5rem;
  border-top: 1px solid var(--wp--preset--color--linie);
}

.nrv-magazin-sekundaer .wp-block-post-template > li { margin-block: 0; }

.nrv-magazin-karte-bild img {
  display: block;
  width: 100%;
  height: auto;
}

.nrv-magazin-karte-titel {
  font-size: 1.3125rem;
  line-height: 1.2;
  margin-block: 0.375rem 0.5rem;
}

.nrv-magazin-karte-titel a { text-decoration: none; }
.nrv-magazin-karte-titel a:hover { text-decoration: underline; }

.nrv-magazin-karte-text {
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--wp--preset--color--grau);
  margin-block: 0;
}

.nrv-magazin-sekundaer .nrv-label,
.nrv-magazin-weitere .nrv-label { margin-block: 0.75rem 0; }

.nrv-magazin-sekundaer .nrv-datum,
.nrv-magazin-weitere .nrv-datum { margin-block-start: 0.5rem; }

/* 37.3 Weitere Meldungen */

.nrv-magazin-weitere .wp-block-post-template {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 3rem 2rem;
  list-style: none;
  padding-inline: 0;
  margin-block: 1.5rem;
}

.nrv-magazin-weitere .wp-block-post-template > li { margin-block: 0; }

.nrv-magazin-mehr {
  justify-content: center;
  margin-block: 0 clamp(3rem, 6vw, 5rem);
}

/* 37.4 Stammdaten am Beitrag */

.nrv-stammdaten {
  list-style: none;
  margin: 1rem 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.nrv-stammdaten li { margin: 0; }

.nrv-stammdaten-chip {
  display: inline-flex;
  align-items: baseline;
  gap: 0.375rem;
  border: 1px solid var(--wp--preset--color--linie);
  padding: 0.3125rem 0.75rem;
  font-size: 0.875rem;
  text-decoration: none;
  color: var(--wp--preset--color--navy);
  background: var(--wp--preset--color--weiss);
}

.nrv-stammdaten-chip:hover,
.nrv-stammdaten-chip:focus-visible {
  border-color: var(--wp--preset--color--navy);
}

/* Die Art steht vor dem Wert, damit „Kiel" nicht mit einer Person verwechselt
   wird. Kleiner und gedämpft – der Wert ist die Information. */
.nrv-stammdaten-art {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
}

.nrv-rubriklink { margin-block: 0; }

/* 37.5 Newsletter-Band */

.nrv-newsletterband {
  display: grid;
  grid-template-columns: 7fr 5fr;
  gap: 4rem;
  align-items: center;
  background: var(--wp--preset--color--flaeche);
  padding: clamp(2rem, 4vw, 3.5rem) clamp(1.75rem, 4vw, 4.5rem);
  margin-block: clamp(3rem, 6vw, 5rem) 0;
}

.nrv-newsletterband > * { margin-block: 0; margin-inline: 0; max-width: none; }
.nrv-newsletterband-text > * { margin-block: 0; margin-inline: 0; max-width: none; }
.nrv-newsletterband-text > * + * { margin-block-start: 0.625rem; }

.nrv-newsletterband-titel {
  font-size: clamp(1.6rem, 1.4rem + 1vw, 2.2rem);
  line-height: 1.15;
}

.nrv-newsletterband-text p:not(.nrv-label):not(.nrv-cta) {
  max-width: 54ch;
  color: var(--wp--preset--color--grau);
}

.nrv-newsletterband-knopf { justify-content: flex-end; }

/* 37.6 Schmalere Fenster */

@media (max-width: 1100px) {
  .nrv-magazin-weitere .wp-block-post-template { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 860px) {
  .nrv-newsletterband { grid-template-columns: minmax(0, 1fr); gap: 1.5rem; }
  .nrv-newsletterband-knopf { justify-content: flex-start; }
}

@media (max-width: 620px) {
  .nrv-magazin-sekundaer .wp-block-post-template,
  .nrv-magazin-weitere .wp-block-post-template { grid-template-columns: minmax(0, 1fr); }
  /* Die Rubrikenleiste läuft waagerecht weiter, statt auf fünf Zeilen zu
     wachsen. Antippen und Wischen ist auf dem Telefon die erwartete
     Bedienung; die Linie oben und unten zeigt, dass die Leiste weitergeht. */
  .nrv-rubriken-liste {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: thin;
    padding-block-end: 0.375rem;
  }
  .nrv-rubriken-liste li { flex: 0 0 auto; }
}


/* ====================================================================== */
/* 38. Termine: Modul, Detailseite und Archiv                             */
/* ====================================================================== */

/* Die Karten kommen jetzt aus `nrv/naechste-termine` und sind je ein `<a>` –
   die ganze Karte ist anklickbar, nicht nur der Titel. Die Regeln aus
   Abschnitt 1 und 12 stammen vom statischen Markup mit `core/column` und
   greifen hier nicht mehr; was dort steht, bleibt für Altbestand im Editor. */

.nrv-terminreihe {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.5rem;
  margin-block: 1.5rem 0;
}

.nrv-terminreihe > * { margin-block: 0; }

a.nrv-termin {
  display: flex;
  flex-direction: column;
  background: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
  padding: 0;
  text-decoration: none;
  color: var(--wp--preset--color--navy);
  /* Die Regel aus Abschnitt 1 setzt `.nrv-termin` auf `center` – das stammt vom
     alten Markup mit vier schmalen Spalten und einer Zahl darin. Hier stehen
     mehrzeilige Vortragstitel in der Karte, und zentrierter Fließtext hat auf
     jeder Zeile einen anderen Anfang. Bei einer Mitgliedschaft im Schnitt über
     60 ist das der Unterschied zwischen lesen und buchstabieren. */
  text-align: start;
}

a.nrv-termin:hover,
a.nrv-termin:focus-visible {
  border-color: var(--wp--preset--color--navy);
}

.nrv-termin-bild {
  display: block;
  overflow: hidden;
}

.nrv-termin-bild img {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

.nrv-termin-text {
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
  padding: 1.25rem;
  flex: 1 1 auto;
}

a.nrv-termin .nrv-label {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
  margin: 0;
}

/* Tag und Monat nebeneinander: Die große Zahl trägt, der Monat ordnet ein.
   `baseline` ist hier richtig – beides steht in einer Zeile. */
.nrv-termin-datum {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
}

a.nrv-termin .nrv-tag {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 2.25rem;
  font-weight: 600;
  line-height: 1;
}

a.nrv-termin .nrv-monat {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
}

.nrv-termin-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.1875rem;
  font-weight: 600;
  line-height: 1.25;
}

.nrv-termin-wochentag {
  font-size: 0.8125rem;
  color: var(--wp--preset--color--grau);
}

/* Der Hinweis sitzt unten, damit er bei unterschiedlich langen Titeln auf
   einer Linie steht. */
.nrv-termin-mehr {
  margin-block-start: auto;
  padding-block-start: 0.75rem;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

a.nrv-termin:hover .nrv-termin-mehr,
a.nrv-termin:focus-visible .nrv-termin-mehr {
  text-decoration: underline;
}

.nrv-termine-leer {
  padding: 1.5rem 0;
  color: var(--wp--preset--color--grau);
}

/* 38.2 Detailseite */

.nrv-terminkopf {
  display: grid;
  grid-template-columns: 7fr 5fr;
  gap: 3rem;
  align-items: start;
  margin-block: 1rem clamp(2rem, 4vw, 3rem);
}

.nrv-terminkopf > * { margin-block: 0; margin-inline: 0; max-width: none; }
.nrv-terminkopf-text > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-terminkopf-titel {
  font-size: clamp(1.9rem, 1.7rem + 1.4vw, 3rem);
  line-height: 1.1;
  margin-block: 0.5rem 1.5rem;
}

.nrv-terminkopf-bild img {
  display: block;
  width: 100%;
  height: auto;
}

.nrv-terminkopf-daten {
  background: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
  padding: 1.75rem;
}

.nrv-terminkopf-daten > * { margin-block: 0; }

.nrv-eckdaten {
  margin: 0;
}

.nrv-eckdaten-zeile {
  display: grid;
  grid-template-columns: 7.5rem minmax(0, 1fr);
  gap: 1rem;
  padding-block: 0.625rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

.nrv-eckdaten-zeile:last-child { border-bottom: 0; }

.nrv-eckdaten dt {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--wp--preset--color--grau);
  align-self: center;
}

.nrv-eckdaten dd {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.45;
}

.nrv-termin-aktionen {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.875rem;
  margin-block-start: 1.5rem;
}

.nrv-termintext {
  margin-block: clamp(2rem, 4vw, 3rem);
}

.nrv-termin-clubhaus {
  background: var(--wp--preset--color--flaeche);
  padding: clamp(1.5rem, 3vw, 2.25rem);
  margin-block: clamp(2rem, 4vw, 3rem);
}

.nrv-termin-clubhaus > * { margin-block: 0; margin-inline: 0; max-width: 62ch; }
.nrv-termin-clubhaus > * + * { margin-block-start: 0.625rem; }

.nrv-weitere-termine { margin-block: 0 clamp(2rem, 4vw, 3rem); }

/* 38.3 Archiv */

.nrv-terminliste .nrv-terminreihe {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 2rem 1.5rem;
  margin-block: 2rem 0;
}

/* 38.4 Schmalere Fenster */

@media (max-width: 1000px) {
  .nrv-terminkopf { grid-template-columns: minmax(0, 1fr); gap: 2rem; }
  .nrv-terminreihe,
  .nrv-terminliste .nrv-terminreihe { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 620px) {
  .nrv-terminreihe,
  .nrv-terminliste .nrv-terminreihe { grid-template-columns: minmax(0, 1fr); }
  .nrv-eckdaten-zeile { grid-template-columns: minmax(0, 1fr); gap: 0.125rem; }
}


/* ====================================================================== */
/* 39. Die fünf Visualisierungen aus dem Briefing                         */
/* ====================================================================== */

/* 39.1 Kartenraster – Presse, Clubheft, Jobs */

/*
 * **Der Selektor greift auf jede Variante, nicht auf eine Basisklasse.**
 * Im Markup stehen nur `nrv-visual-raster-2`, `-3` und `-4` – die Basis
 * `nrv-visual-raster` trägt kein einziges Element. Die Spaltenangaben
 * standen also da und wirkten nicht: Beide Raster auf /team-event/ und
 * /business-privatevents/ waren `display: block` mit gestapelten Karten.
 * Gefunden am 28.10.2026; derselbe Fehlertyp wie bei `.nrv-zweispalt`
 * (27.10.) – eine Rasterangabe ohne `display: grid` ist wirkungslos.
 *
 * Zwei Klassen im Selektor, sonst gewinnt WordPress' Layout-Regel für den
 * Group-Block. Ein Attributselektor zählt dafür wie eine Klasse.
 */
[class*="nrv-visual-raster"].wp-block-group,
.nrv-visual-raster {
  display: grid;
  gap: 1.5rem;
  margin-block: 1.5rem clamp(2rem, 4vw, 3rem);
}

[class*="nrv-visual-raster"] > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-visual-raster-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.nrv-visual-raster-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.nrv-visual-karte {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  background: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
  padding: 1.75rem;
}

.nrv-visual-karte > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-visual-karte-schmal { padding: 1.25rem 1.5rem; }

.nrv-visual-ziffer {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--wp--preset--color--grau);
}

.nrv-visual-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.375rem;
  font-weight: 600;
  line-height: 1.2;
}

.nrv-visual-text {
  font-size: 0.9375rem;
  line-height: 1.55;
}

/* Der Verweis sitzt unten, damit er bei ungleich langen Texten auf einer
   Linie steht. */
.nrv-visual-karte .nrv-cta { margin-block-start: auto; padding-block-start: 0.75rem; }

/* 39.2 Presse */

.nrv-pressekontakt {
  background: var(--wp--preset--color--flaeche);
  padding: clamp(1.5rem, 3vw, 2.25rem);
  margin-block: clamp(2rem, 4vw, 3rem);
}

.nrv-pressekontakt > * { margin-block: 0; margin-inline: 0; max-width: 62ch; }
.nrv-pressekontakt > * + * { margin-block-start: 0.5rem; }

/* 39.3 Clubheft: Cover neben dem Text */

.nrv-clubheft-kopf {
  display: grid;
  grid-template-columns: 7fr 5fr;
  gap: clamp(2rem, 4vw, 3.5rem);
  align-items: start;
  margin-block: 0 clamp(2rem, 4vw, 3rem);
}

.nrv-clubheft-kopf > * { margin-block: 0; margin-inline: 0; max-width: none; }
.nrv-clubheft-text > * { margin-block: 0; margin-inline: 0; max-width: none; }
.nrv-clubheft-text > * + * { margin-block-start: 1rem; }

.nrv-clubheft-titel {
  font-size: clamp(1.9rem, 1.7rem + 1.4vw, 2.8rem);
  line-height: 1.1;
}

.nrv-clubheft-cover > * { margin-block: 0; }

/* Ein Heft wirft Schatten – das ist hier keine Dekoration, sondern der
   Hinweis darauf, dass es ein gedrucktes Objekt ist und kein PDF. */
.nrv-clubheft-bild img {
  display: block;
  width: 100%;
  height: auto;
  box-shadow: 0 2px 18px rgba(14, 42, 79, 0.18);
}

.nrv-clubheft-bildunterschrift {
  font-size: 0.8125rem;
  color: var(--wp--preset--color--grau);
  margin-block-start: 0.75rem;
}

.nrv-clubheft-produktion {
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block-start: 1.25rem;
  margin-block-start: clamp(2rem, 4vw, 3rem);
}

.nrv-clubheft-produktion > * { margin-block: 0; margin-inline: 0; max-width: 62ch; }
.nrv-clubheft-produktion > * + * { margin-block-start: 0.375rem; }
.nrv-clubheft-produktion p:not(.nrv-label):not(.nrv-cta) {
  font-size: 0.9375rem;
  color: var(--wp--preset--color--grau);
}

/* 39.4 Jobs: Stellen als Karten */

.nrv-stellen {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 1.5rem;
  margin-block: 1.5rem;
}

.nrv-stellen > * { margin-block: 0; margin-inline: 0; max-width: none; }

/* Die Stellenkarte trägt eine kräftige Oberkante: Sie ist das, weswegen
   jemand auf diese Seite kommt, und hebt sich von den vier Merkmalskarten
   darüber ab. */
.nrv-stelle {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
  border-top: 3px solid var(--wp--preset--color--navy);
  background: var(--wp--preset--color--weiss);
  border-inline: 1px solid var(--wp--preset--color--linie);
  border-bottom: 1px solid var(--wp--preset--color--linie);
  padding: 1.75rem;
}

.nrv-stelle > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-stelle-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.5rem;
  font-weight: 600;
  line-height: 1.2;
}

.nrv-stelle .nrv-cta { margin-block-start: auto; padding-block-start: 0.75rem; }

/* Wer klickt, soll vorher wissen, dass ein Download kommt – wie bei den
   PDF-Listen der Partnerclubs. */
.nrv-cta-pdf a::after {
  content: " (PDF)";
  font-size: 0.8125rem;
  color: var(--wp--preset--color--grau);
}


/* 39.5 Nachhaltigkeit: die vier Fragen */

.nrv-fragen {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  background: var(--wp--preset--color--linie);
  border: 1px solid var(--wp--preset--color--linie);
  margin-block: 1.5rem clamp(2rem, 4vw, 3rem);
}

.nrv-fragen > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-frage {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  background: var(--wp--preset--color--weiss);
  padding: clamp(1.5rem, 3vw, 2.25rem);
}

.nrv-frage > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-frage-ziffer {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  color: var(--wp--preset--color--grau);
}

/* Die Frage steht in Cormorant und größer als Fließtext: Sie ist der Inhalt
   der Kachel, nicht ihre Beschriftung. Beantwortet wird sie bewusst nicht –
   der Club arbeitet daran, und eine erfundene Antwort wäre schlechter als
   die offene Frage. */
.nrv-frage-text {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.125rem, 1.6vw, 1.375rem);
  line-height: 1.35;
}

.nrv-charta {
  background: var(--wp--preset--color--flaeche);
  padding: clamp(1.75rem, 4vw, 3rem);
  margin-block: clamp(2rem, 4vw, 3rem);
}

.nrv-charta > * { margin-block: 0; margin-inline: 0; max-width: 68ch; }
.nrv-charta > * + * { margin-block-start: 1rem; }

/* 39.6 Reviere */

.nrv-revier { margin-block: clamp(2.5rem, 5vw, 4rem); }

.nrv-revier-name {
  font-size: clamp(1.9rem, 1.7rem + 1.4vw, 2.8rem);
  line-height: 1.1;
  margin-block: 0.25rem 0;
  scroll-margin-top: 140px;
}

.nrv-revier-unter {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.25rem;
  font-style: italic;
  color: var(--wp--preset--color--grau);
  margin-block-end: 0.5rem;
}


.nrv-revier-sprungziel a {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--wp--preset--color--grau);
}

.nrv-revier-sprungziel a:hover,
.nrv-revier-sprungziel a:focus-visible {
  color: var(--wp--preset--color--navy);
  text-decoration: underline;
}

/* 39.7 Schmalere Fenster */

@media (max-width: 1000px) {
  .nrv-visual-raster-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nrv-clubheft-kopf { grid-template-columns: minmax(0, 1fr); }
  /* Das Cover vor den Text zu stellen hieße, die Seite mit einem Bild zu
     beginnen, das ohne den Text nichts erklärt. */
  .nrv-clubheft-cover { max-width: 320px; }
}

@media (max-width: 760px) {
  .nrv-visual-raster-2,
  .nrv-visual-raster-3,
  .nrv-fragen { grid-template-columns: minmax(0, 1fr); }
}


/* Mail und Telefon klein und gedämpft: Der Name führt,
die Adresse ist das,
.nrv-person-tel {
  font-size: 0.875rem;
  line-height: 1.4;
}

.nrv-person-tel a {
  color: var(--wp--preset--color--grau);
}

.nrv-person-tel a:hover {
  color: var(--wp--preset--color--navy);
}

/* 40.2 Geschäftsstelle: Adresse, Zeiten, Kontakt nebeneinander */

.nrv-gs-kopf {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.5rem;
  background: var(--wp--preset--color--flaeche);
  padding: clamp(1.5rem, 3vw, 2.25rem);
  margin-block: clamp(1.5rem, 3vw, 2.5rem);
}

.nrv-gs-kopf > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-gs-block > * { margin-block: 0; margin-inline: 0; max-width: none; }
.nrv-gs-block > * + * { margin-block-start: 0.5rem; }

.nrv-gs-block p:not(.nrv-label):not(.nrv-cta) {
  font-size: 0.9375rem;
  line-height: 1.55;
}

/* 40.3 Schmalere Fenster */

@media (max-width: 860px) {
  .nrv-gs-kopf { grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }
}

/* ===========================================================================
   41. Seitenkopf: Titel und Einleitung nebeneinander (v2.20.0)

   Von Jasmine gemeldet: „Die Headlines sind teilweise sehr groß, so dass sie
   mit der Subline und Fließtext manchmal den ganzen Bildschirm in seiner Höhe
   einnehmen."

   Gemessen auf `/clubkollektion/` bei 1440 × 900: Das erste Produktbild
   begann bei **y = 772**. Darüber lagen Kopf (296), Seitentitel (73),
   Vorspann, zwei Absätze und eine Zwischenüberschrift – gestapelt.

   Die Schriftgröße ist dabei **nicht** die Ursache: Die Artboards setzen ihre
   h1 auf 76 und 80 px, also größer als unsere 67. Der Unterschied ist die
   Anordnung. `Shop.dc.html` stellt Titel und Einleitung in ein Raster
   `7fr 5fr` mit `align-items: end` nebeneinander – das halbiert die Höhe des
   Aufmachers, ohne ein Wort zu kürzen.
   --------------------------------------------------------------------------- */

.nrv-seitenkopf {
  display: grid;
  grid-template-columns: 7fr 5fr;
  gap: clamp(2rem, 6vw, 6rem);
  align-items: end;
  margin-block: 0 clamp(2rem, 4vw, 3.5rem);
}

.nrv-seitenkopf > * { margin-block: 0; }

.nrv-seitenkopf-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(2.25rem, 5vw, 4.75rem);
  line-height: 1;
  font-weight: 500;
  margin-block: 0.5rem 0;
}

.nrv-seitenkopf-text {
  font-size: 1.0625rem;
  line-height: 1.7;
  max-width: 46ch;
  margin-block: 0;
}

@media (max-width: 860px) {
  .nrv-seitenkopf {
    grid-template-columns: minmax(0, 1fr);
    gap: 1.25rem;
  }
  .nrv-seitenkopf-text { max-width: none; }
}

/* --- Der Seitentitel aus dem Template ist kein Hero ----------------------- */

/* `h1` steht über `theme.json` auf der Stufe `titel` – fluid bis 4,2 rem, bei
   1440 px also 67 px. Das ist die Größe des Aufmachers auf der Startseite und
   dort richtig. Über einer Inhaltsseite, der gleich Fließtext folgt, kostet
   sie nur Höhe: Sie wird nicht gelesen, sie ist ja schon im Browser-Tab und
   im Menü markiert.

   Deshalb hier eine eigene Stufe, und zwar **nur** für `wp-block-post-title`
   auf Seiten – der Hero-Titel der Startseite ist ein `core/heading` und
   bleibt unberührt. Nachgemessen: 48 statt 67 px. */
/* **Nur der Seitentitel aus dem Template, nicht jeder `post-title`.**

   Diese Regel hieß bis v2.26.1 `.page .wp-block-post-title` – und traf damit
   auch die Beitragstitel in den Abfrageschleifen der Startseite, denn die
   Startseite ist selbst eine `page` und jede Karte bringt einen
   `wp-block-post-title` mit. Bei gleicher Spezifität wie
   `.nrv-karte .nrv-karte-titel` (je zwei Klassen) gewann sie über ihre
   spätere Stellung in der Datei.

   Folge: Die Kartentitel standen auf **48 px statt 17,6 px**, der Aufmacher
   auf 48 statt 36. Ein 48-px-Titel in einer 386 px breiten Spalte braucht
   vier Zeilen und allein 204 px Höhe – zum Vergleich die Terminkarte
   daneben, fast gleich breit: 19 px Titel, 71 px hoch. Der Abschnitt
   „Neuigkeiten" wuchs dadurch auf 2.463 px.

   Von Jasmine gemeldet („es wirkt alles etwas heavy", im Gegensatz zu den
   Terminen, wo „die Proportionen stimmen"). **Eingeführt habe ich den Fehler
   am selben Tag** mit dem Verkleinern des Seitentitels – eine Regel, die ich
   gegen `/clubkollektion/` geprüft hatte und nicht gegen die Startseite.

   Der Seitentitel steht als direktes Kind in `main`, die Kartentitel liegen
   tief im `post-content`. Der Kindkombinator trennt beide sauber. */
/* `main` ist **nicht** direktes Kind von `body` – dazwischen liegt
   `div.wp-site-blocks`. Deshalb Nachfahre bis `main`, von dort der
   Kindkombinator: Der Seitentitel steht direkt darin, die Kartentitel
   liegen tief im `post-content`. */
.page main > .wp-block-post-title {
  font-size: clamp(2rem, 3.4vw, 3rem);
  line-height: 1.06;
  margin-block-end: clamp(1rem, 2vw, 1.5rem);
  /* Der Titel war mit 760 px schmaler als sein „constrained"-Container und
     wurde deshalb zentriert – gemessen x = 333, während jede Überschrift
     darunter bei 73 stand.

     Behoben ist das im Template, nicht hier: `wp:post-title` trägt jetzt
     `align: wide` und damit dieselbe Breitenstufe wie `wp:post-content`.
     Ein bloßes `margin-left: 0` hätte ihn auf x = 24 geschoben, also an den
     Fensterrand statt an die Inhaltskante – ausprobiert und wieder
     zurückgenommen. **Die Kante kommt aus der Breitenstufe, nicht aus dem
     Außenabstand.** */
}

/* ===========================================================================
   42. Aufmacher über die volle Breite, mit Video (v2.20.0)

   Von Jasmine gewünscht: „Vielleicht hier einfach großflächig über die ganze
   Breite ein Video setzen … um Tobias zu vermitteln: hier passiert etwas."

   Bis v2.19 stand der Aufmacher zweispaltig in 1280 px: Text links, Bild
   rechts. Jetzt eine durchgehende Fläche, der Text darüber.
   --------------------------------------------------------------------------- */

.nrv-hero-voll {
  position: relative;
  isolation: isolate;
  min-height: min(76vh, 640px);
  display: flex;
  align-items: flex-end;
  padding: 0;
  overflow: hidden;
  background: var(--wp--preset--color--navy);
}

/* **z-index -2, nicht -1.** Der Verlauf liegt als `::before` ebenfalls im
   Hintergrund; bei gleichem Wert entscheidet die Reihenfolge im Dokument,
   und die Figur steht hinter dem Pseudo-Element – das Bild lag damit über
   dem Verlauf, und die weiße Schrift stand ungeschützt über dem Himmel.
   Eine Stufe tiefer stapelt es richtig. */
.nrv-hero-voll .nrv-hero-buehne {
  position: absolute;
  inset: 0;
  margin: 0;
  height: 100%;
  z-index: -2;
}

.nrv-hero-voll .nrv-hero-buehne > img,
.nrv-hero-voll .nrv-hero-buehne > video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Der Verlauf trägt den Kontrast der weißen Schrift, und er muss gerechnet
   werden: Das Prüfskript liest `background-color`, findet dort die Grundfarbe
   des Heros und meldet brav 18,9:1 – gemessen wird also etwas anderes als das,
   was man sieht. Derselbe Messfehler wie bei den Aufmachern von „Über uns"
   und „Erfolge" (v2.10.3).

   Nachgerechnet für den ungünstigsten Fall, weißer Himmel mit Sonne hinter
   der Label-Zeile: Der Text läuft von 54 % bis 9 % über der Unterkante. Bei
   der ersten Fassung (0,82 bei 45 %) stand dort rechnerisch 0,696 Deckung –
   Luminanz 0,309 gegen Weiß, also **2,9:1 und damit durchgefallen**. Die
   Kurve hält jetzt bis 58 % mindestens 0,86: Luminanz 0,149, Kontrast
   **5,3:1**. Die Haltepunkte stehen deshalb so eng. */
.nrv-hero-voll::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  /* Deutlich heller als bis v2.32.0 (0,93 / 0,86 / 0,44 / 0,20) – von Bene
     beanstandet: Der Verlauf nahm dem Video das Bild. Die Haltepunkte sind
     gegen die Textzone gerechnet (20–54 % über der Unterkante) und über acht
     Zeitpunkte der Schleife nachgemessen, siehe CLAUDE.md. */
  background: linear-gradient(
    to top,
    rgba(14, 42, 79, 0.78) 0%,
    rgba(14, 42, 79, 0.68) 55%,
    rgba(14, 42, 79, 0.26) 80%,
    rgba(14, 42, 79, 0.05) 100%
  );
}

/* Auf schmalen Schirmen trägt derselbe Verlauf nicht: Der Aufmacher ist dort
   460 statt 640 px hoch, der Textblock nimmt also relativ mehr Höhe ein und
   reicht bis **72,7 %** über die Unterkante statt bis 54 %. Genau dort läuft
   die Kurve oben schon aus – gemessen 0,38 Deckung, Label 3,26:1 und Titel
   3,75:1, beide durchgefallen.

   Die Haltepunkte sind deshalb nach oben gezogen. Es ist kein Verlust an
   Bild: Unter 721 px lädt ohnehin kein Video, dort steht das Standbild.

   **Ein Verlauf, der an einer Breite trägt, trägt nicht an jeder** – seine
   Haltepunkte sind Prozent der Höhe, die Textzone aber wächst beim
   Schmalerwerden mit dem Umbruch. Gegengerechnet gehört jede Breite, an der
   der Aufmacher seine Höhe ändert. */
@media (max-width: 720px) {
  .nrv-hero-voll::before {
    background: linear-gradient(
      to top,
      rgba(14, 42, 79, 0.80) 0%,
      rgba(14, 42, 79, 0.70) 75%,
      rgba(14, 42, 79, 0.30) 92%,
      rgba(14, 42, 79, 0.10) 100%
    );
  }
}

/* Der Inhalt sitzt in den unteren 55 % der Fläche – dort hält der Verlauf
   mindestens 0,82 Deckung. Das Padding oben war mit 96 px so groß, dass der
   Titel in die helle Zone über dem Horizont rutschte und über einer Sonne
   stand; gemessen ragte der Block zudem 25 px unten heraus. */
/* Die Breitenbegrenzung sitzt am Container, nicht an den Kindern. Vorher war
   die Gruppe „constrained" mit contentSize 1280: WordPress gibt dann JEDEM
   Kind `max-width: 1280px` und `margin-inline: auto`. Titel und Vorspann
   tragen aber eine eigene, kleinere `max-width` (16ch und 52ch) – und was
   schmaler ist als der Container, wird zentriert. Gemessen stand der Titel
   bei 1440 px um 177 px eingerückt, der Vorspann um 73.

   Die Kinder einzeln auf `margin-inline: 0` zu zwingen behebt das nur bei
   einer Breite: Bei 1900 px lief es genau andersherum – Label und Knopf
   folgten der 1280er-Spur auf x=303, Titel und Vorspann klebten am Padding
   bei x=80. **Eine Ausrichtung, die an einer Fensterbreite stimmt, ist noch
   keine Ausrichtung.** Mit `layout: default` erzeugt WordPress gar keine
   Regel mehr, und die Begrenzung steht hier an einer Stelle. */
.nrv-hero-voll .nrv-hero-inhalt {
  width: 100%;
  max-width: calc(1280px + 2 * clamp(1.5rem, 5vw, 5rem));
  margin-inline: auto;
  padding: clamp(1.5rem, 3vw, 2.5rem) clamp(1.5rem, 5vw, 5rem) clamp(2.5rem, 4vw, 3.5rem);
  color: var(--wp--preset--color--weiss);
}

.nrv-hero-voll .nrv-hero-inhalt > * { margin-block: 0; }
.nrv-hero-voll .nrv-label { color: var(--wp--preset--color--weiss); opacity: 0.86; }

/* Titel und Vorspann stehen linksbündig unter der Marke – von Bene
   gewünscht. Dass sie es nicht taten, lag am „constrained"-Layout der
   Gruppe; die Begrenzung sitzt jetzt am Container (siehe dort), und beide
   behalten hier nur ihre Zeilenlänge. */
.nrv-hero.nrv-hero-voll .nrv-hero-titel {
  color: var(--wp--preset--color--weiss);
  font-size: clamp(2.25rem, 4.2vw, 3.5rem);
  line-height: 1.08;
  margin-block: 0.5rem 0.875rem;
  max-width: 16ch;
}

.nrv-hero.nrv-hero-voll .nrv-hero-lead {
  color: var(--wp--preset--color--weiss);
  font-size: clamp(1rem, 1.2vw, 1.125rem);
  line-height: 1.6;
  max-width: 52ch;
  margin-block-end: 1.5rem;
}

.nrv-hero.nrv-hero-voll .nrv-label {
  color: var(--wp--preset--color--weiss);
  margin-block: 0;
}

/* Das hervorgehobene Wort im Titel („unsere *DNA*") trägt aus Abschnitt 1
   eine eigene Farbregel in Tinte – auf der hellen Fläche des alten
   zweispaltigen Aufmachers richtig, auf der dunklen Videofläche unsichtbar.
   Derselbe Fall wie „Route planen" im dunklen Fußbereich (v2.2.1): Eine
   Klasse, die anderswo definiert ist, folgt dem Farbwechsel nicht von
   selbst. Drei Klassen im Selektor, damit sie den Sammelselektor schlägt. */
.nrv-hero.nrv-hero-voll .nrv-hero-titel em {
  color: var(--wp--preset--color--weiss);
}

/* Umgekehrt zum Knopf auf Cremegrund: Auf dunkler Fläche ist der helle Knopf
   der stärkere. Dieselbe Umkehr wie beim Login in der Servicezeile. */
.nrv-hero-voll .nrv-hero-cta .wp-block-button__link {
  background-color: var(--wp--preset--color--weiss);
  color: var(--wp--preset--color--navy);
}

.nrv-hero-voll .nrv-hero-cta .wp-block-button__link:hover,
.nrv-hero-voll .nrv-hero-cta .wp-block-button__link:focus-visible {
  background-color: var(--wp--preset--color--weiss);
  color: var(--wp--preset--color--navy);
}

/* Hier stand eine Regel, die das Video bei reduzierter Bewegung auf
   `display: none` setzte und der Bühne `background-size: cover` gab – ohne
   `background-image`. Gemessen blieb davon eine leere Cremefläche: Das
   Standbild ist das `poster` des Videos und verschwindet mit ihm. Die
   Entscheidung fällt jetzt in `navigation.js`, das die Quelle nur bei
   genug Breite, ohne reduzierte Bewegung und ohne Datensparmodus einhängt;
   sonst bleibt das Poster stehen (v2.32.0). */

@media (max-width: 720px) {
  .nrv-hero-voll { min-height: min(68vh, 460px); }
  .nrv-hero-voll .nrv-hero-titel { max-width: none; }
}

/* ===========================================================================
   43. Teamübersicht (v2.20.0)

   Sieben Mannschaften auf `/nrv-teams/`. Die Zahl steht fest, also steht auch
   die Spaltenzahl fest – `auto-fit` hat bei der H.E.A.T-Crew (v2.16.6) und
   bei den Nutzen-Modulen (v2.19.6) jeweils eine Spalte zu wenig angelegt und
   eine halb leere Reihe hinterlassen. Drei Spalten gehen bei sieben Karten
   mit 3 + 3 + 1 auf; die letzte Karte ist die im Aufbau und steht damit
   sichtbar für sich.
   --------------------------------------------------------------------------- */

.nrv-teamraster {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px;
  background: var(--wp--preset--color--linie);
  border: 1px solid var(--wp--preset--color--linie);
  margin-block: 0 clamp(2.5rem, 5vw, 4rem);
}

.nrv-teamkarte {
  background: var(--wp--preset--color--weiss);
  padding: clamp(1.5rem, 2.5vw, 2rem);
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-block: 0;
}

.nrv-teamkarte > * { margin-block: 0; }

.nrv-teamkarte-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.375rem, 2vw, 1.75rem);
  font-weight: 600;
  line-height: 1.15;
}

.nrv-teamkarte-titel a {
  text-decoration: none;
  border-bottom: 1px solid transparent;
}

.nrv-teamkarte-titel a:hover,
.nrv-teamkarte-titel a:focus-visible {
  border-bottom-color: var(--wp--preset--color--navy);
}

.nrv-teamkarte p:not(.nrv-label):not(.nrv-cta) {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--wp--preset--color--grau);
}

/* Das Projekt im Aufbau wird nicht ausgegraut – gedämpfter Text auf
   gedämpftem Grund fiele unter 4,5:1. Es trägt stattdessen eine feine
   Schraffur als Fläche und behält vollen Textkontrast. */
.nrv-teamkarte-aufbau {
  background-image: repeating-linear-gradient(
    135deg,
    var(--wp--preset--color--weiss) 0 10px,
    var(--wp--preset--color--flaeche) 10px 20px
  );
}

@media (max-width: 1000px) {
  .nrv-teamraster { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 620px) {
  .nrv-teamraster { grid-template-columns: minmax(0, 1fr); }
}

/* ===========================================================================
   44. Shop-Startseite: zwei Wege als Bildkarten (v2.21.0)

   Jasmine: „Claude-Vorlage mit Shop-Startseite, dann Landingpage Zhik x
   Frisch und Landingpage Shop Geschäftsstelle, finde ich aufgeräumter. Die
   Shop-items aus der Geschäftsstelle überfrachten die Shop-Seite gerade."

   Der Artboard „Shop · Startseite" zeigt zwei gleich große Karten
   nebeneinander. Zwei Elemente, also zwei feste Spalten – `auto-fit` hat an
   drei Stellen (H.E.A.T-Crew, Nutzen-Module, Teamraster) jeweils eine Spalte
   zu wenig angelegt.
   --------------------------------------------------------------------------- */

.nrv-shop-wege {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(1.5rem, 3vw, 2.5rem);
  margin-block: 0 clamp(2.5rem, 5vw, 4rem);
}

.nrv-shop-karte {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-block: 0;
  background: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
}

.nrv-shop-karte > * { margin-block: 0; }

.nrv-shop-karte-bild {
  margin: 0;
  overflow: hidden;
}

.nrv-shop-karte-bild img {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

.nrv-shop-karte-kopf {
  padding: clamp(1.25rem, 2vw, 1.75rem) clamp(1.25rem, 2vw, 1.75rem) 0;
  gap: 1rem;
  align-items: baseline;
}

.nrv-shop-karte-kopf > * { margin-block: 0; }

.nrv-shop-karte-wo {
  font-size: 0.8125rem;
  color: var(--wp--preset--color--grau);
  text-align: end;
}

.nrv-shop-karte-titel {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.75rem, 2.6vw, 2.375rem);
  font-weight: 500;
  line-height: 1.1;
  padding: 0.5rem clamp(1.25rem, 2vw, 1.75rem) 0;
}

.nrv-shop-karte > p:not(.nrv-cta) {
  padding: 0.75rem clamp(1.25rem, 2vw, 1.75rem) 0;
  font-size: 1rem;
  line-height: 1.6;
}

.nrv-shop-karte > .nrv-cta {
  padding: 1.25rem clamp(1.25rem, 2vw, 1.75rem) clamp(1.25rem, 2vw, 1.75rem);
  margin-block-start: auto;
}

/* Das Produktfoto ist freigestellt auf Weiß – als Kartenbild im 3:2-Rahmen
   würde `cover` den Stander anschneiden. Deshalb hier `contain` mit Luft,
   anders als bei einem Motivfoto. */
.nrv-shop-karte-bild img[src*="stander"],
.nrv-shop-karte-bild img[src*="jubilaeum"] {
  object-fit: contain;
  padding: clamp(1rem, 2vw, 2rem);
  background: var(--wp--preset--color--weiss);
}

@media (max-width: 760px) {
  .nrv-shop-wege { grid-template-columns: minmax(0, 1fr); }
}

/* ===========================================================================
   45. Partnerclubs: Weltkarte und Regionen (v2.22.0)
   --------------------------------------------------------------------------- */

.nrv-partnerkarte { margin-block: clamp(1.5rem, 3vw, 2.5rem); }

.nrv-karte-flaeche {
  position: relative;
  background: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
  overflow: hidden;
}

.nrv-karte-flaeche > img {
  display: block;
  width: 100%;
  height: auto;
}

/* Die Punkte sitzen in Prozent – damit bleiben sie beim Skalieren an ihrer
   Stelle. 10 px sind auf dem Telefon die Untergrenze für etwas, das man noch
   als Markierung erkennt; größer würde die Ostseeküste zu einem Klumpen. */
.nrv-karte-punkt {
  position: absolute;
  width: 10px;
  height: 10px;
  margin: -5px 0 0 -5px;
  border-radius: 50%;
  background: var(--wp--preset--color--navy);
  border: 2px solid var(--wp--preset--color--weiss);
  box-sizing: border-box;
}

.nrv-karte-bild-text {
  font-size: 0.9375rem;
  color: var(--wp--preset--color--grau);
  margin-block: 0.75rem 0;
}

.nrv-karte-regionen {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.5rem;
  margin-block: clamp(1.5rem, 3vw, 2.5rem) 0;
  padding-block: 1rem;
  border-block: 1px solid var(--wp--preset--color--linie);
}

.nrv-karte-regionen a {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  padding-block: 0.25rem;
}

.nrv-karte-regionen a:hover,
.nrv-karte-regionen a:focus-visible { border-bottom-color: var(--wp--preset--color--navy); }
.nrv-karte-regionen a span { color: var(--wp--preset--color--grau); }

/* Die Region ist seit v2.40.0 ein `<details>`-Aufklapper (Vorschlag Jasmine).
   Der Browser bringt die Mechanik mit: ohne JavaScript, mit Tastatur, und
   die Seitensuche findet auch Text in zugeklappten Abschnitten. */
.nrv-karte-region { margin-block: clamp(1.25rem, 2.5vw, 2rem) 0; scroll-margin-top: 140px; }

.nrv-karte-region > summary {
  display: flex;
  align-items: baseline;
  gap: 0.75rem;
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.5rem, 2.2vw, 2rem);
  font-weight: 500;
  margin-block: 0 1rem;
  padding-block: 0.5rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
  cursor: pointer;
  /* Die eigene Markierung ersetzt das Dreieck des Browsers – es sitzt je
     nach Browser anders und lässt sich nicht einfärben. */
  list-style: none;
}

.nrv-karte-region > summary::-webkit-details-marker { display: none; }

/* Das Zeichen steht hinter dem Namen, nicht davor: Vorangestellt rückt es
   die Überschrift ein, und die Regionen stünden nicht mehr auf der Kante
   der übrigen Abschnitte – derselbe Fall wie beim CTA-Pfeil (v2.19.6). */
.nrv-karte-region > summary::after {
  content: "";
  width: 0.5em;
  height: 0.5em;
  margin-inline-start: auto;
  border-right: 2px solid var(--wp--preset--color--navy);
  border-bottom: 2px solid var(--wp--preset--color--navy);
  transform: rotate(45deg);
  transform-origin: center;
  transition: transform 0.15s ease;
  align-self: center;
}

.nrv-karte-region[open] > summary::after { transform: rotate(-135deg); }

/* Die Sprungnavigation ist jetzt der Hauptweg in eine Region – sie braucht
   Fingergröße. Gemessen waren es 30 px. */
.nrv-karte-regionen a {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}

.nrv-karte-region > summary:focus-visible {
  outline: 2px solid var(--wp--preset--color--navy);
  outline-offset: 3px;
}

.nrv-karte-zahl { color: var(--wp--preset--color--grau); font-size: 0.6em; }

/* Der Clubname ist der Verweis auf sein Datenblatt. Die Zeile ist damit
   Klickfläche – deshalb die 44 px, nicht nur der Text. */
.nrv-karte-clublink {
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
  width: 100%;
  min-height: 44px;
  align-items: center;
  text-decoration: none;
  color: inherit;
}

.nrv-karte-clublink:hover,
.nrv-karte-clublink:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

/* „(PDF)" sagt vor dem Klick, dass ein Download folgt – wie in der
   Dateiliste (v1.21.0). */
.nrv-karte-clublink .nrv-karte-land::after {
  content: " (PDF)";
  color: var(--wp--preset--color--grau);
  font-size: 0.85em;
}

@media (prefers-reduced-motion: reduce) {
  .nrv-karte-region > summary::after { transition: none; }
}

/* Drei Spalten: 45 Clubs in Europa wären einspaltig eine sehr lange Liste –
   genau das, was Jasmine mit „anstatt alles untereinander zu schreiben"
   meint. Die Spalten füllen sich senkrecht, also bleibt die alphabetische
   Reihenfolge spaltenweise lesbar. */
.nrv-karte-clubliste {
  /* `.entry-content :where(ul, ol)` begrenzt Listen auf 66ch für die
     Zeilenlänge im Fließtext – gemessen 689 px. Eine dreispaltige Clubliste
     ist kein Fließtext: Die Spalten blieben bei 203 px, und fast jeder
     Clubname brach auf zwei Zeilen um. Dieselbe Falle wie beim Hero-Titel
     mit seinen 18ch (v2.35.1). */
  max-width: none;
  columns: 3;
  column-gap: clamp(1.5rem, 3vw, 2.5rem);
  list-style: none;
  margin: 0;
  padding: 0;
}

.nrv-karte-clubliste li {
  break-inside: avoid;
  /* Gleiche Zeilenhöhe für alle: Einträge MIT Datenblatt tragen die 44-px-
     Klickfläche und waren 58 px hoch, die 13 ohne nur 36 – in einer
     dreispaltigen Liste fällt der Sprung als Unruhe auf, obwohl er nur
     bedeutet, dass dort kein PDF liegt. */
  display: flex;
  align-items: center;
  min-height: 44px;
  padding-block: 0.4rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
  font-size: 0.9375rem;
  line-height: 1.45;
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
}

.nrv-karte-land {
  color: var(--wp--preset--color--grau);
  font-size: 0.8125rem;
  white-space: nowrap;
  padding-top: 0.15em;
}

@media (max-width: 900px) {
  .nrv-karte-clubliste { columns: 2; }
}

@media (max-width: 600px) {
  .nrv-karte-clubliste { columns: 1; }
  .nrv-karte-punkt { width: 8px; height: 8px; margin: -4px 0 0 -4px; border-width: 1px; }
}

/* ===========================================================================
   46. Der Kopf auf dem Telefon (v2.24.0)

   Von Bene gemeldet: „Mobil funktioniert noch nicht sehr viel?"

   Gemessen bei 375 × 812: Der Kopf nahm **259 px** ein, ein knappes Drittel
   der Fensterhöhe. Davon 137 px allein die Servicezeile, weil Suchfeld,
   „Mitglied werden" und Login dort **untereinander** standen – eine Folge des
   Umbruchs, den der Knopf in v2.22.5 nötig gemacht hat.

   Der Artboard „Mobil · Seite mit mitlaufender Leiste" setzt dagegen eine
   einzige Zeile von **76 px**: Wappen und Schriftzug links, Menü-Symbol
   rechts, keine Servicezeile.

   Vollständig übernehmen lässt sich das nicht: Der Navigationsblock von
   WordPress nimmt kein Suchfeld auf, und „Mitglied werden" ist der Knopf,
   auf den Jasmines Briefing besteht. Beides im geöffneten Menü zu verstecken
   hieße, es auf dem Telefon praktisch zu streichen.

   Umgesetzt sind deshalb zwei Zeilen statt vier: der Kopf einzeilig nach dem
   Artboard, darüber eine Servicezeile, die ebenfalls in eine Zeile passt.
   --------------------------------------------------------------------------- */

@media (max-width: 780px) {
  /* --- Kopfzeile: Marke links, Menü rechts, wie im Artboard ---

     **Das Flex gehört an `.nrv-kopf`, nicht an `.nrv-kopf-mitte`.** Die
     Navigation ist dessen Geschwister, nicht sein Kind – der Kopf hat drei
     Kinder: Marke-Hülle, Trenner, Navigation. Mein erster Versuch setzte
     `display: flex` eine Ebene zu tief, und der Menü-Knopf stand weiter
     unter der Marke statt daneben. */
  /* **Zwei Klassen im Selektor.** `.nrv-kopf` allein verliert gegen
     WordPress' generierte Layout-Regel für den Group-Block – gemessen stand
     dort weiterhin `display: block`, und der Menü-Knopf blieb unter der
     Marke. Derselbe Merksatz wie bei den Sozialsymbolen und dem Spenden-
     Modul, jetzt zum fünften Mal: Jede eigene `display`-Regel auf einem
     WordPress-Block braucht mindestens zwei Klassen. */
  .nrv-kopf.wp-block-group {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    flex-wrap: nowrap;
  }

  /* **Die auto-Margins müssen weg.** `.nrv-kopf` ist ein „constrained"-
     Container; WordPress liefert dafür
     `> :where(…) { margin-left: auto !important; margin-right: auto !important }`.
     Bei Flex-Items saugen diese Margins den freien Raum auf – statt an den
     Rändern standen Marke und Menü-Knopf mittig beieinander (gemessen bei
     716 px: Stander bei 152 statt 24). `justify-content` ändert daran
     nichts, weil die Margins zuerst bedient werden.

     Dieselbe Falle wie bei den Produktkacheln des Shops (v2.13.3), dort mit
     umgekehrtem Vorzeichen: Da verhinderten sie das Strecken. */
  .nrv-kopf.wp-block-group > * {
    margin-inline: 0 !important;
  }

  .nrv-kopf .nrv-kopf-mitte {
    flex: 0 1 auto;
    min-width: 0;
    min-height: 0;
  }

  .nrv-kopf .nrv-marke {
    justify-content: flex-start;
    padding-block: 0.625rem;
    flex: 0 1 auto;
    min-width: 0;
  }

  /* Über die **Höhe** steuern, nicht über die Breite: Bei einem Verhältnis
     von 3,68 : 1 ergibt eine Breitenangabe auf dem Telefon eine Marke, die
     entweder die halbe Zeile frisst oder unleserlich wird. */
  .nrv-kopf .nrv-marke .wp-block-site-logo img {
    width: auto;
    height: clamp(42px, 13vw, 56px);
    max-width: 100%;
  }

  /* Der Menü-Knopf steht in der Zeile, nicht absolut daneben. Damit
     bestimmt die Marke die Höhe und nichts überlappt. */
  .nrv-kopf > .wp-block-navigation {
    position: static;
    inset: auto;
    display: flex;
    align-items: center;
    flex: 0 0 auto;
    margin: 0;
    min-height: 0;
  }

  /* Die Linie gehört unter die zweizeilige Fassung, nicht zwischen Marke und
     Menü – in einer Zeile hätte sie nichts zu trennen. */
  .nrv-kopf-trenner {
    display: none;
  }

  /* --- Servicezeile: eine Zeile statt drei --- */
  .nrv-servicezeile {
    border-bottom: 1px solid var(--wp--preset--color--linie);
  }

  .nrv-service-zeile {
    gap: 0.5rem;
  }

  .nrv-service-rechts {
    width: 100%;
    flex-wrap: nowrap !important;
    justify-content: flex-end;
    gap: 0.5rem;
    row-gap: 0;
  }

  .nrv-service-rechts > .nrv-kopf-cta {
    flex: 0 0 auto;
  }

  .nrv-service-rechts > .nrv-kopf-cta .wp-block-button,
  .nrv-service-rechts > .nrv-kopf-cta .wp-block-button__link {
    width: auto;
  }

  /* Gerechnet für 375 px: Rand 2 × 16 lässt 343 px. Suchfeld 110, Login 58,
     Knopf 140, zwei Fugen à 8 – zusammen 324. Die erste Fassung kam auf
     363 px, und das Suchfeld rutschte mit `left: -36` aus dem Bild. */
  /* 0,75 rem = 12 px ist die Untergrenze des Designsystems für
     Beschriftungen. Ich hatte hier zwischenzeitlich 0,6875 rem (11 px)
     gesetzt, um die Zeile zu füllen – das ist genau die Stelle, an der ein
     Maß nicht verhandelbar ist. Lieber das Suchfeld schmaler. */
  .nrv-service-rechts > .nrv-kopf-cta .wp-block-button__link {
    min-height: 44px;
    padding: 0 0.75rem;
    font-size: 0.75rem;
    gap: 0.375rem;
  }

  .nrv-servicezeile .nrv-suche {
    width: min(88px, 24vw);
    flex: 0 1 auto;
  }

  .nrv-servicezeile .nrv-suche input {
    font-size: 16px; /* darunter zoomt Safari beim Antippen die Seite heran */
    padding-inline: 0.5rem;
  }

  /* Die 44 px standen seit v2.24.7 als Vorgabe im Kommentar darunter – gesetzt
     waren sie nie. Gemessen: Feld 48 × 33 px, Knopf 40 × 33. Das ist kleiner
     als die Fläche, die ein Finger trifft, und es fällt beim Ansehen nicht
     auf, weil die Zeile optisch stimmt. Gefunden hat es `mobil-pruefen.js`. */
  .nrv-servicezeile .nrv-suche .wp-block-search__inside-wrapper,
  .nrv-servicezeile .nrv-suche input,
  .nrv-servicezeile .nrv-suche .wp-block-search__button {
    min-height: 44px;
  }

  .nrv-servicezeile .nrv-suche .wp-block-search__button {
    min-width: 44px;
  }

  /* Der Stander im kompakten Kopf ist 40 × 40 px – als einziger Weg zurück
     zur Startseite gehört er auf Fingergröße. Das Bild bleibt 40 px, die
     Fläche wächst über den Innenabstand. */
  .nrv-marke-stander {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
  }

  /* Der Platzhalter „Suchen" wird bei dieser Feldbreite nach zwei Buchstaben
     abgeschnitten – „Su" sieht nach Fehler aus. Die Lupe im Feld trägt die
     Bedeutung; das Feld behält sein `aria-label`, Screenreader verlieren
     also nichts. */
  /* Derselbe Selektor wie die Regel weiter oben, die den Platzhalter auf
     `text-leise` setzt – mit `input` statt `.wp-block-search__input` wäre
     meine Regel um eine Klasse schwächer und bliebe wirkungslos. Gemessen
     stand dort weiterhin rgb(85, 103, 127). */
  .nrv-servicezeile .nrv-suche .wp-block-search__input::placeholder {
    color: transparent;
  }

  .nrv-service-login a {
    font-size: 0.75rem;
    letter-spacing: 0.04em;
    white-space: nowrap;
  }
}

/* Unter 360 px gehen Suchfeld, Knopf und Login nicht mehr nebeneinander:
   Bei 320 px stehen 288 px zur Verfügung, gebraucht werden 296 – gemessen
   ragte das Suchfeld 24 px nach links heraus. Dort bricht die Zeile um.
   Das kostet eine Zeile Höhe, aber nur auf den schmalsten Geräten; enger
   zu setzen würde die Klickflächen unter die 44 px drücken, die ein Finger
   braucht. */
@media (max-width: 359px) {
  .nrv-service-rechts {
    flex-wrap: wrap !important;
    justify-content: space-between;
    row-gap: 0.5rem;
  }

  .nrv-servicezeile .nrv-suche {
    width: min(150px, 46vw);
  }
}

/* ===========================================================================
   47. Mehr Luft auf dem ersten Bildschirm der Newsseite (v2.28.0)

   Von Bene gemeldet: „Die News-Seite ist immer noch etwas klobig. Plus:
   Dadurch sieht man auf dem ersten Screen wenig."

   Gemessen bei 1440 × 900, also auf dem ersten Bildschirm:

   | Element            | beginnt bei | Höhe |
   |--------------------|------------:|-----:|
   | Kopf               |           0 |  312 |
   | „Aktuelles / NRV Magazin" |    336 |   96 |
   | Rubrikenleiste (zwei Zeilen) | 452 | 97 |
   | Lead-Bild          |         597 |  462 |
   | **erster Beitragstitel** | **1102** |  — |

   505 px Vorspann, und der Titel des Aufmachers stand **unterhalb** des
   Bildschirms. Man sah den Kopf, eine Überschrift, eine Rubrikenliste und
   ein angeschnittenes Bild – keinen einzigen Beitrag.

   Drei Eingriffe, keiner davon kürzt Inhalt:
   --------------------------------------------------------------------------- */

/* 47.1 Der Aufmacher steht nebeneinander statt gestapelt.

   Der Artboard „News · Übersicht" setzt den Lead-Beitrag als Raster
   `8fr 4fr` mit Text und Bild **nebeneinander**. Bei uns lag das Bild über
   dem Text: 821 × 462 px, der Titel erst darunter. Nebeneinander rückt er um
   rund 380 px nach oben und steht neben dem Bild im Blick.

   Bild links, Text rechts – wie der Aufmacher der Startseite, den Jasmine
   als stimmig bezeichnet hat. */
/* Label, Titel, Auszug und Datum sind **Geschwister**, kein Textblock – der
   Query-Loop gibt sie flach aus. Jedes bekommt im Raster eine eigene Zeile;
   das Bild stand deshalb allein in Zeile 1 und der Titel rutschte in Zeile 3,
   also wieder unter das Bild. Gemessen: Bild bei y = 548, Titel bei 805.

   Vier explizite Zeilen, und das Bild spannt über alle. **`1 / -1` braucht
   genau das** – in einem Raster mit automatisch angelegten Zeilen gibt es
   keine Linie `-1`, derselbe Fall wie beim Spenden-Modul (v2.8.0). */
/* `2fr 1fr` seit v3.63.0 – gemessen setzt der Artboard 821 / 411 px bei
   1280 px Rasterbreite. Solange der Lead in einer 821-px-Spalte stand,
   war `1fr 1fr` die richtige Annäherung; über die volle Breite ist es das
   Raster des Entwurfs selbst. */
.nrv-magazin-lead > ul > li,
.nrv-magazin-lead .wp-block-post {
  display: grid;
  grid-template-columns: 2fr 1fr;
  grid-template-rows: repeat(4, auto);
  gap: 0 clamp(1.5rem, 2.5vw, 2.5rem);
  align-content: center;
}

.nrv-magazin-lead .nrv-magazin-lead-bild {
  grid-column: 1;
  grid-row: 1 / -1;
  align-self: center;
  margin-block: 0;
}

/* 16:9 wie im Artboard („Hauptaufmacher · Bild 16:9"). Der Grund für die
   frühere 3:2-Korrektur ist mit v3.63.0 entfallen: In der halbierten Spalte
   von 410 px wäre ein 16:9-Bild nur 225 px hoch gewesen; über die 821 px
   des Entwurfsrasters sind es 462 px. */
.nrv-magazin-lead .nrv-magazin-lead-bild img {
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

.nrv-magazin-lead > ul > li > *:not(.nrv-magazin-lead-bild),
.nrv-magazin-lead .wp-block-post > *:not(.nrv-magazin-lead-bild) {
  grid-column: 2;
}

/* Der Textteil war auf die Bildbreite gesetzt; neben dem Bild braucht er
   die Spaltenbreite. */
.nrv-magazin-lead .nrv-label { margin-block: 0 0.375rem; }

/* 47.2 Die Rubrikenleiste in eine Zeile.

   Dreizehn Rubriken brauchen bei 1280 px zwei Zeilen und damit 97 px. Auf
   dem Telefon scrollt die Leiste bereits waagerecht (v2.15.3); dasselbe gilt
   jetzt überall. Das spart knapp 50 px und hält die Liste vollständig –
   kürzen hieße, Rubriken zu verstecken. */
/* **Ohne sichtbaren Scrollbalken.** `scrollbar-width: thin` zeigt auf
   macOS, wenn dort „Scrollbalken immer einblenden" eingestellt ist, einen
   dauerhaften grauen Riegel quer unter der Leiste – das sieht aus wie ein
   Fehler und war das erste, was Bene auffiel. Dass es rechts weitergeht,
   zeigt stattdessen der Verlauf am Rand.

   Die Leiste bleibt mit der Tastatur erreichbar: `tabindex` am Container
   wäre hier falsch (sie enthält nur Verweise), aber der Fokus wandert beim
   Durchtabben durch die Rubriken und scrollt die Leiste von selbst mit. */
.nrv-rubriken-liste {
  flex-wrap: nowrap;
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
  padding-bottom: 0.25rem;
  -webkit-overflow-scrolling: touch;
}

.nrv-rubriken-liste::-webkit-scrollbar {
  display: none;
}

.nrv-rubriken-liste li { flex: 0 0 auto; }

/* Dass es rechts weitergeht, muss man sehen. Gemessen bei 1440 px: Die
   Leiste braucht 1.677 px bei 1.280 verfügbar, zwei von dreizehn Rubriken
   stehen außerhalb. **397 px davon ist ein einziger Eintrag** – „Gelebte
   Inklusion auf der Regattabahn". Ohne ihn passte die Leiste exakt; das
   Kürzen dieses Rubriknamens ist Redaktionsarbeit und steht als offener
   Punkt.

   Der Verlauf liegt am Container, nicht an der scrollenden Liste – sonst
   wanderte er beim Scrollen mit. */
.nrv-rubriken {
  position: relative;
}

.nrv-rubriken::after {
  content: "";
  position: absolute;
  inset-block: 1px;
  right: 0;
  width: 3rem;
  pointer-events: none;
  background: linear-gradient(
    to right,
    rgba(255, 255, 255, 0),
    var(--wp--preset--color--weiss) 85%
  );
}

/* 47.3 Weniger Vorspann über dem Inhalt. */
.nrv-magazin-kopf {
  margin-block: 0 0.875rem;
}

.nrv-rubriken {
  margin-block: 0 clamp(1.5rem, 2.5vw, 2rem);
  padding-block: 0.75rem;
}

@media (max-width: 860px) {
  /* Unter 860 px ist die halbe Spalte zu schmal für Bild und Text
     nebeneinander – dort wieder gestapelt. */
  .nrv-magazin-lead > ul > li,
  .nrv-magazin-lead .wp-block-post {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: none;
  }

  .nrv-magazin-lead .nrv-magazin-lead-bild { grid-row: auto; }

  .nrv-magazin-lead .nrv-magazin-lead-bild,
  .nrv-magazin-lead > ul > li > *:not(.nrv-magazin-lead-bild),
  .nrv-magazin-lead .wp-block-post > *:not(.nrv-magazin-lead-bild) {
    grid-column: 1;
  }

  .nrv-magazin-lead .nrv-magazin-lead-bild img { aspect-ratio: 16 / 9; }
}

/* Die Art des Archivs über dem Titel – gesetzt wie der Eyebrow „Aktuelles"
   über „NRV Magazin", damit beide Seiten gleich beginnen. */
.nrv-archiv-art {
  margin-block: 0 0.25rem;
}

.nrv-archiv-art + .wp-block-query-title {
  margin-block-start: 0;
}

/* Der Ausschnitt des Inklusionsbildes steht seit dem kompakten Modul als
   `object-position` am `<img>` im Markup – der Slot ist dort breiter als
   zuvor (0,53 : 1 waren es im hohen Modul), und die Position gehört zum
   Bild, nicht zu seiner dritten Stelle im Raster. Ein `:nth-child(3)`
   greift daneben, sobald jemand die Reihenfolge im Editor ändert. */

/* ===========================================================================
   48. Blättern (v2.39.0)

   Die Seitenzahlen liefen bis hierher auf dem WordPress-Standard – also ohne
   jede eigene Regel. Gemessen bei 375 px: **8 × 17 px** je Ziffer, die „…"
   bei 10 px. Das ist deutlich kleiner als die 44 px, die ein Finger trifft,
   und betrifft jede geblätterte Liste: Suche, `/news/` ab Seite 2, alle
   Rubriken- und Stammdaten-Archive.

   Gefunden hat es `mobil-pruefen.js` – beim Ansehen fällt es nicht auf, weil
   die Zeile optisch in Ordnung wirkt. Man merkt es erst beim Danebentippen.
   =========================================================================== */

/* Der Selektor nennt den Block, nicht unsere Klasse: `nrv-blaettern` steht
   nur in `search.html`. Auf `/news/page/2/` und in den Rubriken-Archiven
   kommt die Navigation aus `index.html` ohne diese Klasse – dort blieben die
   8 × 17 px stehen, obwohl die Suche längst stimmte. Beim Prüfen EINER Seite
   wäre das durchgegangen. */
.wp-block-query-pagination-numbers {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px;
}

.wp-block-query-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  padding-inline: 6px;
  text-decoration: none;
  border: 1px solid transparent;
}

.wp-block-query-pagination a.page-numbers:hover,
.wp-block-query-pagination a.page-numbers:focus-visible {
  border-color: var(--wp--preset--color--linie);
  background: var(--wp--preset--color--weiss);
}

/* Die laufende Seite wird nicht nur fett, sondern bekommt eine Fläche. Eine
   reine Schriftstärke ist bei dieser Mitgliedschaft kein verlässlicher
   Unterschied – dieselbe Entscheidung wie bei der Rubrikenleiste (v2.15.3). */
.wp-block-query-pagination .page-numbers.current {
  background: var(--wp--preset--color--navy);
  color: var(--wp--preset--color--weiss);
  font-weight: 700;
}

/* Die Auslassung ist keine Schaltfläche – sie braucht keine Klickfläche und
   soll auch keine vortäuschen. */
.wp-block-query-pagination .page-numbers.dots {
  min-width: 0;
  padding-inline: 2px;
}

/* „Neuere Beiträge" und „Weiter" sind eigene Elemente neben den Zahlen und
   waren mit 23 px Höhe ebenso zu flach – gemessen 103 × 23 und 44 × 23. */
.wp-block-query-pagination-previous,
.wp-block-query-pagination-next {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}

/* ===========================================================================
   49. Der mobile Kopf nach dem Entwurf (v2.43.0)

   Von Bene beanstandet: „Wir haben eine klare Vorgabe im Canvas, ignorieren
   sie aber. Warum?" – zu Recht.

   Meine Begründung von v2.9.7 lautete: „Der mobile Artboard blendet die
   Servicezeile ganz aus und legt Suche, Login und Kontakt ins geöffnete
   Menü. Das kann der Navigationsblock von WordPress nicht – er nimmt kein
   Suchfeld auf." **Diese Begründung hält nicht.**

   Der Artboard legt kein Suchfeld ins Menü, sondern einen **Textlink**
   („Mitglieder-Login · Kontakt · Suche · EN"). Ein Link ist kein Formular –
   den nimmt jede Navigation auf. Und Login und „Mitglied werden" liegen im
   Entwurf überhaupt nicht im Menü, sondern in einer **mitlaufenden Leiste am
   unteren Rand**, die mit dem Navigationsblock nichts zu tun hat.

   Aus einer echten, aber eng begrenzten Einschränkung (ein Suchkasten im
   Menü ginge nicht) habe ich den Schluss gezogen, die ganze Vorgabe zu
   verwerfen. **Derselbe Denkfehler wie bei „Mitglied werden" (v2.22.4):
   Eine Anforderung, die an einem Detail scheitert, rechtfertigt keine
   Abweichung im Ganzen.**

   | | vorher | Entwurf |
   |---|---|---|
   | Kopf | 128 px | **76 px** |
   | Servicezeile | 63 px sichtbar | keine |
   | Marke | Stander allein | Wappen + Schriftzug |
   | Leiste unten | keine | „Mitglied werden" + Login |
   =========================================================================== */

@media (max-width: 720px) {

  /* Die Servicezeile entfällt. Suche und Login wandern ins Menü (siehe
     `nrv-menue-dienste`), „Mitglied werden" in die Leiste unten. */
  .nrv-servicezeile { display: none; }

  /* Kopf: Marke links, Menü rechts, 76 px wie im Entwurf. */
  .nrv-kopf.wp-block-group {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    min-height: 76px;
    padding-block: 0;
  }

  .nrv-kopf-mitte {
    flex: 0 1 auto;
    min-width: 0;
  }

  .nrv-marke {
    display: flex;
    align-items: center;
    gap: 12px;
    justify-content: flex-start;
  }

  /* Der Entwurf zeigt Wappen UND Schriftzug nebeneinander. Unsere
     Wort-Bild-Marke stapelt beides übereinander (828 × 225) – bei 48 px
     Höhe wäre der Schriftzug 13 px hoch und unlesbar. Deshalb mobil der
     Stander plus ein gesetzter Schriftzug, wie im Artboard. */
  .nrv-kopf .wp-block-site-logo { display: none; }

  /* Der Stander steht links vom Schriftzug, wie im Artboard. Im Markup
     folgt er ihm, weil er für den kompakten Desktop-Kopf dort hingehört –
     `order` dreht es, ohne die Vorlesereihenfolge zu verschlechtern: Beide
     sind Teil desselben Verweises zur Startseite. */
  .nrv-marke-stander {
    display: inline-flex;
    order: -1;
    min-width: 0;
    min-height: 0;
  }

  .nrv-marke-stander img {
    height: 44px;
    width: auto;
  }

  .nrv-marke-schriftzug {
    display: block;
    margin: 0;
    font-family: var(--wp--preset--font-family--cormorant-garamond);
    font-size: 1.0625rem;
    font-weight: 500;
    line-height: 1.12;
    letter-spacing: 0.01em;
    text-transform: uppercase;
  }

  .nrv-marke-schriftzug a {
    color: var(--wp--preset--color--navy);
    text-decoration: none;
  }

  /* Die Leiste am unteren Rand. `fixed`, nicht `sticky`: Sie soll immer
     stehen, nicht erst am Ende des Dokuments. */
  .nrv-mobilleiste {
    position: fixed;
    inset-inline: 0;
    bottom: 0;
    z-index: 90;
    display: flex;
    gap: 10px;
    padding: 12px 20px calc(12px + env(safe-area-inset-bottom, 16px));
    background: color-mix(in srgb, var(--wp--preset--color--weiss) 97%, transparent);
    border-top: 1px solid var(--wp--preset--color--linie);
    box-shadow: 0 -6px 24px rgba(14, 42, 79, 0.08);
  }

  .nrv-mobilleiste-cta {
    flex: 1 1 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 52px;
    padding-inline: 20px;
    background: var(--wp--preset--color--navy);
    color: var(--wp--preset--color--weiss);
    text-decoration: none;
    font-size: 0.9375rem;
    font-weight: 600;
    border-radius: 0;
  }

  .nrv-mobilleiste-login {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    min-height: 52px;
    border: 1px solid var(--wp--preset--color--linie);
    border-radius: 0;
    color: var(--wp--preset--color--navy);
  }

  .nrv-mobilleiste-login:hover,
  .nrv-mobilleiste-login:focus-visible {
    border-color: var(--wp--preset--color--navy);
  }

  /* Die Leiste verdeckt sonst das Seitenende – vor allem den Fußbereich. */
  body { padding-bottom: 92px; }
}

/* Über 720 px gibt es die Leiste nicht: Dort stehen Login und „Mitglied
   werden" in der Servicezeile, wie der Desktop-Entwurf es zeigt. */
@media (min-width: 721px) {
  .nrv-mobilleiste { display: none; }
  .nrv-marke-schriftzug { display: none; }
}

/* Die Dienste-Zeile am Ende des geöffneten Menüs (v2.43.1), nach dem
   Artboard „Mobil · Menü geöffnet". Nur im Overlay sichtbar – auf dem
   Desktop stehen Login und Suche in der Servicezeile. */
.nrv-menue-dienste { display: none; }

.wp-block-navigation__responsive-container.is-menu-open .nrv-menue-dienste {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 24px;
  padding-block: 20px;
  font-size: 0.8125rem;
  font-weight: 500;
}

.nrv-menue-dienste a {
  padding-block: 10px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-menue-dienste a:hover,
.nrv-menue-dienste a:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

/* Im Overlay folgt das Untermenü dem `aria-expanded` seines Schalters.

   Der Verbinder ist `~`, nicht `+`: Zwischen Button und Untermenü steht ein
   `<span class="wp-block-navigation__submenu-icon">` mit dem Pfeil. Mit dem
   direkten Geschwisterselektor griff die Regel nicht – `aria-expanded` stand
   auf `false`, das Menü blieb trotzdem 3.082 px hoch. **Gefunden wurde es,
   indem das vorherige Geschwister des Untermenüs ausgelesen wurde: `null`
   statt des Buttons.**

   Dass der Selektor den Container mitnennt, ist nötig gegen WordPress'
   `display: flex` für Layout-Blöcke – dieselbe Stelle wie v2.9.7, v2.24.7
   und v2.30.4. */
@media (max-width: 1199px) {
  .wp-block-navigation__responsive-container.is-menu-open
    li.has-child > button[aria-expanded="false"] ~ .wp-block-navigation__submenu-container {
    display: none;
  }

  /* Der Pfeil dreht sich mit – WordPress tut das im Overlay nicht, weil es
     dort gar kein Zuklappen vorsieht. */
  .wp-block-navigation__responsive-container.is-menu-open
    li.has-child > button[aria-expanded="false"] ~ .wp-block-navigation__submenu-icon {
    transform: none;
  }

  .wp-block-navigation__responsive-container.is-menu-open
    li.has-child > button[aria-expanded="true"] ~ .wp-block-navigation__submenu-icon {
    transform: rotate(180deg);
  }
}

/* Die Oberpunkte im Overlay nach dem Artboard „Mobil · Menü geöffnet":
   Cormorant, gemischte Schreibung, 26 px – nicht die Versalien der
   Desktop-Navigation. Auf dem Telefon ist das Menü eine Liste zum Lesen,
   keine Leiste; Versalien in 61 Zeilen lesen sich mühsam. */
@media (max-width: 1199px) {
  /* `.nrv-navi` muss mit in den Selektor: Die bestehende Overlay-Regel des
     Themes setzt dort Montserrat in Versalien und trägt diese Klasse selbst.
     Ohne sie verliert die neue Regel – gemessen blieb es bei 14 px
     Montserrat, obwohl sie später in der Datei steht. */
  .nrv-navi .wp-block-navigation__responsive-container.is-menu-open
    li.has-child > button.wp-block-navigation-item__content {
    font-family: var(--wp--preset--font-family--cormorant-garamond);
    font-size: 1.625rem;
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: 0;
    text-transform: none;
    padding-block: 14px;
    min-height: 56px;
  }

  /* Zeile mit Trennlinie, wie im Entwurf: Jeder Oberpunkt ist ein eigener
     Abschnitt. */
  .nrv-navi .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation__container > li.has-child {
    border-bottom: 1px solid var(--wp--preset--color--linie);
    width: 100%;
  }

  /* Der Pfeil steht rechts am Rand, nicht direkt hinter dem Wort – sonst
     wandert er mit der Wortlänge und die Zeilen wirken ungeordnet. */
  /* Der Pfeil war im Overlay auf `display: none` – das Theme blendet ihn
  /* Der Pfeil sitzt absolut am rechten Rand. Über Flex ging es nicht: Der
     Schalter bekam trotz `flex: 1 1 auto` nur seine Inhaltsbreite – gemessen
     96 px in einem 335 px breiten `li` –, stand dadurch mittig, und der
     Pfeil rutschte in eine zweite Zeile. Margins waren keine im Spiel, ich
     habe sie ausgelesen: beide 0.

     Statt die Ursache weiter in WordPress' Overlay-Regeln zu suchen, trägt
     die Zeile jetzt einen Bezugspunkt und der Pfeil eine feste Ecke. */
  .nrv-navi .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation__container > li.has-child {
    position: relative;
  }

  .nrv-navi .wp-block-navigation__responsive-container.is-menu-open
    li.has-child > .wp-block-navigation__submenu-icon {
    display: inline-flex;
    position: absolute;
    right: 0;
    top: 20px;
    margin: 0;
    transition: transform 0.15s ease;
  }

  .nrv-navi .wp-block-navigation__responsive-container.is-menu-open
    li.has-child > button.wp-block-navigation-item__content {
    width: 100%;
    padding-right: 32px;
  }

  .nrv-navi .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation__container > li.has-child {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
  }

  .nrv-navi .wp-block-navigation__responsive-container.is-menu-open
    li.has-child > .wp-block-navigation__submenu-container {
    flex: 0 0 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .wp-block-navigation__responsive-container.is-menu-open
    li.has-child > .wp-block-navigation__submenu-icon { transition: none; }
}


/* --- Mobile Werte der Spezifikation (390 px) ----------------------------- */
@media (max-width: 600px) {
  /* H1 ohne eigene Klasse. Drei Teamseiten (Youth, Bundesliga, Foiling)
     tragen einen nackten `<h1>` ohne Aufmacher-Container – sie stammen aus
     der Migration und haben nie einen Seitenkopf bekommen. Dort greift der
     Preset `titel`, und WordPress' Fluid-Formel liefert bei 390 px **37,3 px**
     statt der 36 der Spezifikation. Die Klassenregeln rechnen mit eigenem
     `clamp()` und stimmen; diese Regel zieht den Rest nach.

     Spezifität (0,0,1): Sie verliert gegen jede Klasse, also auch gegen den
     Artikeltitel. Das ist Absicht – gemeint sind nur die ohne eigene Rolle. */
  h1 {
    font-size: 2.25rem;
  }

  /* Footer 13 px, Bildunterschrift und Metazeile 12 px.
     Dieser Block stand zuerst am Dateianfang und war wirkungslos: Die
     spätere Regel `.nrv-fuss a, .nrv-fuss p` hat ihn bei gleicher
     Spezifität überschrieben. Er gehört ans Ende. */
  .nrv-fuss :where(p, li, a:not(.wp-element-button)) {
    font-size: 0.8125rem;
  }
  figcaption,
  .nrv-bildzeile,
  .wp-element-caption,
  .nrv-datum,
  .nrv-meta {
    font-size: 0.75rem;
  }
  /* 16 px im Eingabefeld: Darunter zoomt Safari auf dem iPhone die Seite. */
  .nrv-servicezeile .nrv-suche .wp-block-search__input {
    font-size: 1rem;
  }
}

/* ==========================================================================
   Seitenweise Angleichung an die Spezifikation (16.10.2026)
   ==========================================================================

   H1 auf 54 px (mobil 36). Gemessen standen vier Varianten nebeneinander:
   48 px ohne Klasse, 56 px im Über-uns-Aufmacher, 72 px im Seitenkopf.
   Der Entwurf setzt 54 px 62-mal – das ist der Seitentitel. Der Hero-Titel
   der Startseite ist davon ausgenommen: Er ist ein core/heading mit eigener
   Gestaltung, kein Seitentitel. */
.nrv-seitenkopf-titel,
.nrv-kopfbild-titel,
.page main > .wp-block-post-title {
  font-size: clamp(2.25rem, 3.75vw, 3.375rem);
  font-weight: 500;
  line-height: 1.08;
}

/* .num im Entwurf: Cormorant Garamond, 18 px, 600, 0,04 em, Akzent.
   Stand auf 12 px / 700 / Manrope in Versalien.
   Die großen Kennzahlen (.nrv-kennzahl-wert, 44 px) bleiben unberührt –
   der Entwurf kennt diese Größe 13-mal als eigenen Wert. */
.nrv-stufe-marke {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.125rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: none;
  color: var(--wp--preset--color--akzent);
}

/* Lead: 24–26 px in Cormorant Garamond, Gewicht 500, Zeilenhöhe 1,2–1,25.
   Stand als Fließtext in 17–18 px Manrope. */
.nrv-seitenkopf-text,
.nrv-lead {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.28rem, 1.9vw, 1.5625rem);
  font-weight: 500;
  line-height: 1.22;
}

/* Der Vorspann hatte die Schrift, aber nicht das Gewicht. */
.nrv-vorspann {
  font-weight: 500;
}

/* Tabellenkopf: 12 px, 700, Versalien, 0,14 em. Stand auf 18 px ohne
   Versalien – also wie Fließtext. */
.entry-content th,
.wp-block-table th {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

/* Der Handlungslink im Fußbereich.

   `.nrv-fuss a, .nrv-fuss p { font-weight: 400 }` trägt zwei Klassen und
   schlägt damit `.nrv-cta` mit einer – gemessen 400 statt 600. Dieselbe
   Spezifitätsfalle wie bei „Route planen" nach dem Farbwechsel (v2.2.1):
   Eine Klasse, die anderswo definiert ist, setzt sich im Fußbereich nicht
   von selbst durch. */
.nrv-fuss .nrv-cta,
.nrv-fuss .nrv-cta a {
  font-weight: 600;
  font-size: 0.875rem;
}

/* Kartentitel der Newsübersicht: Die Spezifikation nennt 23–26 px. Der
   Aufmacher (41,6 px) ist davon ausgenommen – die gewichtete Anordnung aus
   v1.14.0 ist Absicht und steht so auch im Artboard. Angeglichen wird nur
   die kleinste Stufe, die mit 21,6 px unter den Bereich fiel. */
.nrv-newsraster .nrv-karte .nrv-news-titel,
.nrv-newsraster li:nth-child(n+4) .nrv-news-titel {
  font-size: clamp(1.3125rem, 1.6vw, 1.4375rem);
  font-weight: 600;
  line-height: 1.14;
}

/* Beschriftung der Filterfelder: 13 px, 600. Stand auf 18 px Fließtext. */
.nrv-filter-feld > span {
  font-size: 0.8125rem;
  font-weight: 600;
}

/* --- Karten- und Boxinhalte nach der Spezifikation ----------------------- */

/* H2 in Box oder Kachel: 32–34 px statt der 38,4 px des Abschnitts-H2. */
/* `.nrv-ueber-grau h2` war ein **Nachfahren**-Selektor und traf damit jedes
   H2 in einer getönten Fläche, nicht nur ihren eigenen Titel. Mit
   Spezifität (0,1,1) schlug er die Klassen der Elemente darin:

   | Seite | Element | war | soll |
   |---|---|---|---|
   | `/mitglied-werden/` | `.nrv-thema-titel` (Bild-Text-Modul) | 33 px | 38 |
   | `/kinder-jugendschutz/` | `.nrv-label` (**Kicker**) | **33 px** | 13 |
   | `/erfolge/` | `.nrv-label` (Kicker) | 19,2 px | 13 |

   Jetzt `> h2`: Gemeint ist der Titel der Fläche selbst. Gegengeprüft über
   zwölf Seiten – von 44 H2/H3 in getönten Flächen ist genau **eines** auf
   direkter Ebene ohne eigene Klasse (`/nrv-teams/`), alle übrigen tragen
   ihre eigene Rolle und ihre eigene Regel. */
.nrv-ueber-titel,
.nrv-modul-titel,
.nrv-ueber-grau > h2 {
  /* 25,5 px mobil, 33 px ab 1440. Feste Werte hatten mobil 33 px stehen
     lassen – die Spezifikation nennt dort 25–26. */
  font-size: clamp(1.59rem, 2.3vw, 2.0625rem);
  font-weight: 500;
  line-height: 1.1;
}

/* Kartentitel: 23–26 px. Gemessen standen acht Module zwischen 18 und 22 px.
   Gesetzt wird das untere Ende des Bereichs – der kleinste Eingriff,
.nrv-wf-karte-titel,
.nrv-ueber-karte-titel,
.nrv-ks-massnahme-titel,
.nrv-nutzen-titel,
.nrv-team-news-titel,
.nrv-download-titel,
.nrv-karte-titel {
  font-size: clamp(1.3125rem, 1.6vw, 1.4375rem);
  line-height: 1.14;
}

/* Tabellenzellen auf 15 px. Listen bleiben bei 18 px – sie sind Teil des
   Fließtexts, und der steht nach Benes Entscheidung vom 16.10.2026 auf 18 px.
   Siehe daten/entwurf/abweichungen.json. */
.entry-content td,
.wp-block-table td,
.nrv-karte p {
  font-size: 0.9375rem;
  line-height: 1.62;
}

/* Teaser in Karten: 14 px, Zeilenhöhe 1,6 – enger als der Kacheltext. */
.nrv-karte .wp-block-post-excerpt,
.nrv-karte .wp-block-post-excerpt__excerpt,
.nrv-teaser {
  font-size: 0.875rem;
  line-height: 1.6;
}

/* ==========================================================================
   Feinschliff gegen die Spezifikation (16.10.2026, v3.6.0)

   Die doppelt genannten Klassen (.x.x) sind kein Schmuck: Mehrere dieser
   Module tragen Regeln mit zwei Klassen im Selektor, die eine einfache
   Angabe am Dateiende schlagen. Doppelung hebt die Spezifität, ohne
   !important zu setzen – das bliebe sonst die einzige Möglichkeit und wäre
   für die nächste Änderung eine Sackgasse.
   ========================================================================== */

/* --- H1: 54 px / 500 / 1,08 ---------------------------------------------
   Auch Hero und Magazintitel. Der Entwurf setzt beide ausdrücklich auf 54 px
   (Home.dc.html, News-Uebersicht.dc.html) – es gibt hier keinen Sonderfall. */
.nrv-hero-titel.nrv-hero-titel,
.nrv-kopfbild-titel.nrv-kopfbild-titel,
.nrv-magazin-titel.nrv-magazin-titel,
.nrv-seitenkopf-titel.nrv-seitenkopf-titel,
/* Jeder h1 im Seitenkopf, auch ohne eigene Klasse. Acht Seiten trugen
   ihn ohne `nrv-seitenkopf-titel` und landeten dadurch bei der
   allgemeinen h1-Regel – mobil 37,3 statt 36 px. Eine Regel ist
   verlässlicher als acht Stellen im Markup, an denen eine Klasse
   stehen muss. */
.nrv-seitenkopf-text h1,
.nrv-seitenkopf > h1,
.nrv-ks-titel.nrv-ks-titel,
.nrv-hero .nrv-hero-titel,
.nrv-hero-voll .nrv-hero-titel {
  font-size: clamp(2.25rem, 3.75vw, 3.375rem);
  font-weight: 500;
  line-height: 1.08;
}

/* --- H2 Abschnitt: 38 px / 500 / 1,1 ------------------------------------ */
.nrv-abschnitt-titel.nrv-abschnitt-titel,
.nrv-sektionskopf h2,
.entry-content > h2 {
  font-size: clamp(1.75rem, 2.6vw, 2.375rem);
  font-weight: 500;
  line-height: 1.1;
}

/* --- H3 und Kartentitel: 23 px / 600 / 1,
14 (mobil 21) ------------------
   Fünfzehn Module trugen Werte zwischen 18 und 28 px. */
.nrv-karte-titel.nrv-karte-titel,
.nrv-produkt-name.nrv-produkt-name,
.nrv-visual-titel.nrv-visual-titel,
.nrv-teamkarte-titel.nrv-teamkarte-titel,
.nrv-anliegen-titel.nrv-anliegen-titel,
.nrv-boot-name.nrv-boot-name,
.nrv-medaillen-titel.nrv-medaillen-titel,
.nrv-wf-karte-titel.nrv-wf-karte-titel,
.nrv-ueber-karte-titel.nrv-ueber-karte-titel,
.nrv-ks-massnahme-titel.nrv-ks-massnahme-titel,
.nrv-nutzen-titel.nrv-nutzen-titel,
.nrv-team-news-titel.nrv-team-news-titel,
.nrv-download-titel.nrv-download-titel,
.entry-content h3 {
  font-size: clamp(1.3125rem, 1.6vw, 1.4375rem);
  font-weight: 600;
  line-height: 1.14;
}

/* --- Chip: 13 px / 600 / min-height 36, Rahmen in Grau ------------------ */
/* Chip: 13 px / 600 / min-height 36 / padding 0 14.
   Der erste Versuch setzte nur min-height – zusammen mit dem vorhandenen
   padding-block ergab das 46 bis 48 px statt 36. Der Entwurf schreibt
   `padding: 0 14px`, also ausdrücklich ohne senkrechten Innenabstand. */
.nrv-stammdaten-chip.nrv-stammdaten-chip,
.nrv-chip.nrv-chip,
.nrv-rubriken a {
  font-size: 0.8125rem;
  font-weight: 600;
  min-height: 36px;
  padding-block: 0;
  padding-inline: 14px;
  display: inline-flex;
  align-items: center;
  line-height: 1.2;
  border-radius: 0;
}

/* --- Metazeile und Brotkrumen: 13 px (mobil 12) ------------------------- */
.nrv-datum.nrv-datum,
.nrv-meta.nrv-meta,
.nrv-brotkrumen.nrv-brotkrumen,
.nrv-brotkrumen a {
  font-size: 0.8125rem;
}

/* --- Handlungslink: 14 px überall ---------------------------------------- */
.nrv-cta.nrv-cta,
.nrv-cta.nrv-cta a {
  font-size: 0.875rem;
}

/* --- Kacheltext 15 px / 1,62, Listen 18 px / 1,62 ------------------------
   Listen bleiben Fließtext (Abweichung 2, siehe abweichungen.json). */
.nrv-karte .nrv-karte-text p,
.nrv-karte > p,
.nrv-karte div > p,
.nrv-karte .wp-block-paragraph {
  font-size: 0.9375rem;
  line-height: 1.62;
}
.entry-content :where(ul, ol) li {
  line-height: 1.62;
}

/* --- Der Absatz mit Versal-Initial trug 19 px statt 18 ------------------- */
.entry-content p.nrv-initial {
  font-size: 1.125rem;
}

@media (max-width: 600px) {
  .nrv-datum.nrv-datum,
  .nrv-meta.nrv-meta {
    font-size: 0.75rem;
  }
  /* Eingabefeld mobil 16 px – darunter zoomt Safari. */
  .nrv-filter select,
  .nrv-filter input {
    font-size: 1rem;
  }
}

/* --- Letzte Angleichungen (v3.7.0) --------------------------------------- */

/* H1-Varianten, die eigene Klassen tragen. Der Hero braucht drei Klassen im
   Selektor: `.nrv-hero-voll .nrv-hero-titel` allein verlor gegen eine Regel
   mit demselben Gewicht, die weiter unten steht. */
.nrv-hero.nrv-hero-voll .nrv-hero-titel,
.nrv-suchtitel.nrv-suchtitel,
.nrv-clubheft-titel.nrv-clubheft-titel {
  font-size: clamp(2.25rem, 3.75vw, 3.375rem);
  font-weight: 500;
  line-height: 1.08;
}

/* Sektionsköpfe innerhalb von Modulen – `.nrv-termine .nrv-sektionskopf h2`
   ist spezifischer als die allgemeine Regel und blieb bei 22,4 px. */
.nrv-termine .nrv-sektionskopf .wp-block-heading,
.nrv-neuigkeiten .nrv-sektionskopf .wp-block-heading,
.nrv-sektionskopf.nrv-sektionskopf .wp-block-heading {
  font-size: clamp(1.75rem, 2.6vw, 2.375rem);
  font-weight: 500;
  line-height: 1.1;
}

/* Die Spezifikation kennt ZWEI Kicker: 13 px prominent, 12 px kompakt in
   Listen und Teasern. Mein erster Versuch setzte beide auf 13 – damit
   widersprachen sich die zwei Zeilen der Tabelle gegenseitig. */
.nrv-hero .nrv-label,
.nrv-hero-voll .nrv-label,
.nrv-artikel-kopf .nrv-label,
.nrv-seitenkopf .nrv-label,
.nrv-kicker.nrv-kicker {
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.16em;
}

/* Kicker kompakt: 12 px in Karten und Listen. */
.nrv-karte .nrv-label,
li .nrv-label {
  font-size: 0.75rem;
}

/* Auswahlfelder des Filters: 15 px auf dem Desktop. Die 16 px gelten nur
   mobil, wo Safari sonst beim Antippen die Seite heranzoomt. */
.nrv-filter select,
.nrv-filter input[type="search"],
.nrv-suche-gross .wp-block-search__input {
  font-size: 0.9375rem;
}

/* Nummerierung mobil 17 px (Desktop 18) – der einzige Wert der Tabelle, der
   sich zwischen den Breiten um genau einen Pixel unterscheidet. */
@media (max-width: 600px) {
  .nrv-stufe-marke,
  .nrv-station-marke {
    font-size: 1.0625rem;
  }
}

/* Eingabefeld mobil 16 px. Steht bewusst hinter der Desktop-Regel: Ein
   Media Query gewinnt nicht durch sein Medium, sondern durch seine Stellung.
   Die 16 px sind kein Gestaltungswert – darunter zoomt Safari auf dem iPhone
   beim Antippen die ganze Seite heran. */
@media (max-width: 600px) {
  .nrv-filter select,
  .nrv-filter input[type="search"],
  .nrv-suche-gross .wp-block-search__input,
  .nrv-servicezeile .nrv-suche .wp-block-search__input {
    font-size: 1rem;
  }

  /* Archivtitel: 36 px wie jeder andere H1. */
  .nrv-archiv-titel,
  .wp-block-query-title {
    font-size: 2.25rem;
    line-height: 1.08;
  }
}

/* Zeitleisten-Stationen sind H2 in einer Box: 32–34 px. Standen auf 30,4. */
.nrv-zeit-titel.nrv-zeit-titel {
  font-size: clamp(1.59rem, 2.3vw, 2.0625rem);
  font-weight: 500;
}

/* Abschnittsüberschriften innerhalb von Textmodulen. „Das sind wir" auf der
   Startseite stand auf 28,8 px / 700 – gefunden erst, nachdem die Zuordnung
   von `.entry-content > h2` auf `main h2` erweitert wurde. Ein Selektor mit
   Kindkombinator übersieht alles, was eine Ebene tiefer liegt. */
.nrv-ueber-text > h2:not([class*="nrv-"]),
.nrv-abschnitt > h2:not([class*="nrv-"]),
.nrv-thema-titel {
  font-size: clamp(1.75rem, 2.6vw, 2.375rem);
  font-weight: 500;
  line-height: 1.1;
}

/* Letzte vier Angleichungen. */

/* Zeitleisten-Stationen: Zeilenhöhe 1,1 wie alle Box-Titel. */
.nrv-zeit-titel.nrv-zeit-titel {
  line-height: 1.1;
}

/* Die Zugangskarten der Login-Seite sind Boxen: 32–34 px statt 24. */
.nrv-zugang-titel.nrv-zugang-titel {
  font-size: clamp(1.59rem, 2.3vw, 2.0625rem);
  font-weight: 500;
  line-height: 1.1;
}

/* Reviernamen waren mit 44,8 px größer als jedes andere Abschnitts-H2. */
.nrv-revier-name.nrv-revier-name,
.nrv-teams-abschnitt > h2 {
  font-size: clamp(1.75rem, 2.6vw, 2.375rem);
  font-weight: 500;
  line-height: 1.1;
}

/* Der Spendentitel ist ein Box-H2: mobil 25,5 px statt 24. */
.nrv-spenden-titel.nrv-spenden-titel {
  font-size: clamp(1.59rem, 2.3vw, 2.0625rem);
  font-weight: 500;
}

/* ==========================================================================
   Weiterführungen am Seitenende (v3.9.0)

   Das Modul fehlte auf 26 von 54 Seiten mit Artboard und war damit die
   größte einzelne Lücke zwischen Entwurf und Umsetzung. Aufbau nach dem
   Artboard: Kicker, H2 38 px, darunter drei Karten im Raster mit 16 px Fuge.

   Die Karte trägt oben eine Rubrik, darunter den Titel in 23 px, einen auf
   zwei Zeilen begrenzten Teaser und unten – über `margin-top: auto` – den
   Verweis. Das hält die Verweise aller drei Karten auf einer Linie, auch
   wenn die Teaser unterschiedlich lang sind.

   ACHTUNG Namenskonflikt: `.nrv-wf-karten` und `.nrv-wf-karte` waren bereits
   vergeben – von den Weiterführungen auf Erfolge und Über uns (ein Grid mit
   auto-fit). Mein Modul erbte dadurch `display: grid` auf der äußeren Gruppe,
   Titel und Kartencontainer wurden zu Grid-Zellen und die Karten 125 px
   schmal. Präfix ist deshalb `nrv-wf-`. **Vor dem Anlegen einer Klasse
   prüfen, ob sie im Stylesheet schon steht.**
   ========================================================================== */

.nrv-wf {
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block: clamp(2.5rem, 5vw, 4rem) 0;
  margin-block-start: clamp(2.5rem, 5vw, 4rem);
}

.nrv-wf > .nrv-label {
  margin-block-end: 0.5rem;
}

.nrv-wf-titel {
  font-size: clamp(1.75rem, 2.6vw, 2.375rem);
  font-weight: 500;
  line-height: 1.08;
  margin-block: 0 clamp(1.5rem, 3vw, 2.25rem);
}

.nrv-wf-karten {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

/* blockGap setzt sonst margin-top auf das zweite und dritte Kind und
   verschiebt die Spalten gegeneinander – derselbe Fall wie im Newsraster. */
.nrv-wf-karten > * {
  margin-block: 0;
}

.nrv-wf-karte {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 30px;
  background: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
  min-height: 250px;
  box-sizing: border-box;
  transition: border-color 0.25s ease;
}

.nrv-wf-karte:hover,
.nrv-wf-karte:focus-within {
  border-color: var(--wp--preset--color--navy);
}

.nrv-wf-karte > * {
  margin-block: 0;
}

.nrv-wf-karte-titel {
  font-size: clamp(1.3125rem, 1.6vw, 1.4375rem);
  font-weight: 600;
  line-height: 1.12;
}

/* Zwei Zeilen, dann Auslassungspunkte – so steht in der Spezifikation auch
   die Regel für Teaser in Karten. */
.nrv-wf-text {
  font-size: 0.875rem;
  line-height: 1.6;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.nrv-wf-karte .nrv-cta {
  margin-top: auto;
}

@media (max-width: 900px) {
  .nrv-wf-karten { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
  .nrv-wf-karten { grid-template-columns: 1fr; }
  .nrv-wf-karte  { min-height: 0; padding: 24px; }
}

/* ==========================================================================
   Modul „Nachrichten aus …" (v3.10.0)

   Drei aktuelle Beiträge zum Thema der Seite, nach dem Artboard: Kopfzeile
   mit Kicker, H2 und einem Verweis rechts, darunter eine Navy-Linie, dann
   drei Karten mit Bild 240 px, Rubrik und Datum nebeneinander, Titel 23 px.

   Als Query-Block gebaut, nicht als festes Markup: Eine Nachrichtenliste,
   die von Hand gepflegt wird, steht nach drei Monaten falsch da – die
   Terminreihe der Startseite stand im Oktober drei Wochen lang auf
   September (v2.7.1).
   ========================================================================== */

.nrv-thema-news {
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block-start: clamp(2.5rem, 5vw, 4rem);
  margin-block-start: clamp(2.5rem, 5vw, 4rem);
}

.nrv-thema-news-kopf {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 40px;
  border-bottom: 1px solid var(--wp--preset--color--navy);
  padding-block-end: 24px;
  margin-block-end: 40px;
}

.nrv-thema-news-kopf > * { margin-block: 0; }

.nrv-thema-news-titel {
  font-size: clamp(1.75rem, 2.6vw, 2.375rem);
  font-weight: 500;
  line-height: 1.08;
  margin-block: 0.5rem 0;
}

/* Die Beitragsliste des Query-Blocks als Raster. blockGap setzt sonst
   margin-top auf das zweite und dritte Kind und versetzt die Spalten. */
.nrv-thema-news .wp-block-post-template {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 32px;
  margin-block: 0;
  padding: 0;
  list-style: none;
}

.nrv-thema-news .wp-block-post-template > li { margin-block: 0; }

.nrv-thema-news .wp-block-post-featured-image {
  margin-block-end: 14px;
}

.nrv-thema-news .wp-block-post-featured-image img {
  width: 100%;
  height: 240px;
  object-fit: cover;
  display: block;
}

.nrv-thema-news .nrv-thema-news-meta {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-block: 0 0.4rem;
}

.nrv-thema-news .wp-block-post-title {
  font-size: clamp(1.3125rem, 1.6vw, 1.4375rem);
  font-weight: 600;
  line-height: 1.15;
  margin-block: 0;
}

.nrv-thema-news .wp-block-post-title a { text-decoration: none; }

.nrv-thema-news .wp-block-post-title a:hover,
.nrv-thema-news .wp-block-post-title a:focus-visible {
  text-decoration: underline;
  text-decoration-color: var(--wp--preset--color--akzent);
  text-underline-offset: 5px;
}

@media (max-width: 900px) {
  .nrv-thema-news .wp-block-post-template { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
  .nrv-thema-news .wp-block-post-template { grid-template-columns: 1fr; gap: 28px; }
  .nrv-thema-news-kopf { flex-direction: column; align-items: flex-start; gap: 16px; }
  .nrv-thema-news .wp-block-post-featured-image img { height: 200px; }
}

/* Die Beitragsliste ist ein <ul> und fiel damit unter die 66ch-Begrenzung
   für Listen im Fließtext – gemessen 725 px statt 1280. Dieselbe Falle wie
   bei der Clubliste auf /partnerclubs/ (v2.41.3): Eine ch-Begrenzung für
   Fließtext trifft auch das, was keiner ist. */
.entry-content .wp-block-post-template,
.wp-block-post-content .wp-block-post-template {
  max-width: none;
  padding-left: 0;
}

/* ==========================================================================
   Modul „… fördern" und „Ihr Kontakt in der Jugendabteilung" (v3.11.0)

   Förder-Kasten nach Artboard: Rahmen, 56 px Innenabstand, Raster 5fr 7fr,
   links Kicker und H2 34 px, rechts Text und zwei Knöpfe.
   ========================================================================== */

.nrv-foerdern {
  border: 1px solid var(--wp--preset--color--linie);
  padding: clamp(1.75rem, 4vw, 3.5rem);
  margin-block-start: clamp(2.5rem, 5vw, 4rem);
  display: grid;
  grid-template-columns: 5fr 7fr;
  gap: clamp(2rem, 6vw, 6rem);
  align-items: center;
}

.nrv-foerdern > * { margin-block: 0; }

.nrv-foerdern-titel {
  font-size: clamp(1.59rem, 2.3vw, 2.125rem);
  font-weight: 500;
  line-height: 1.08;
  margin-block: 0.4rem 0;
}

.nrv-foerdern-text {
  font-size: 1.125rem;
  line-height: 1.7;
  margin-block: 0 1.25rem;
  max-width: none;
}

.nrv-foerdern .wp-block-buttons {
  gap: 12px;
}

/* Ein Kasten mit zwei Spalten braucht auf dem Telefon eine. */
@media (max-width: 782px) {
  .nrv-foerdern {
    grid-template-columns: 1fr;
    gap: 1.25rem;
  }
}

/* --- Ihr Kontakt in der Jugendabteilung ---------------------------------- */

.nrv-kontakt-jugend {
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block-start: clamp(2rem, 4vw, 3rem);
  margin-block-start: clamp(2.5rem, 5vw, 4rem);
}

.nrv-kontakt-jugend > * { margin-block: 0; }

/* Abschnitts-H2, nicht Box-Titel: 38 px. Ich hatte zunächst die Box-Größe
   genommen (33) – der Abschnitt steht aber frei auf der Seite. */
.nrv-kontakt-jugend-titel {
  font-size: clamp(1.75rem, 2.6vw, 2.375rem);
  font-weight: 500;
  line-height: 1.1;
  margin-block: 0.4rem 0.75rem;
}

/* ==========================================================================
   Teamübersicht und Barrierefrei-Teaser (v3.12.0)
   ========================================================================== */

/* Sieben Teamkarten im Raster, Bild 300 px, Titel 26 px. */
.nrv-teamraster {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 32px;
  margin-block-start: clamp(1.5rem, 3vw, 2.5rem);
}

.nrv-teamraster > * { margin-block: 0; }

.nrv-teamkarte {
  display: flex;
  flex-direction: column;
  gap: 12px;
  text-decoration: none;
  border: 1px solid var(--wp--preset--color--linie);
  padding: 0 0 24px;
  transition: border-color 0.25s ease;
}

.nrv-teamkarte:hover,
.nrv-teamkarte:focus-within { border-color: var(--wp--preset--color--navy); }

.nrv-teamkarte > * { margin-block: 0; padding-inline: 24px; }

.nrv-teamkarte figure,
.nrv-teamkarte .wp-block-image { padding-inline: 0; margin-block-end: 12px; }

.nrv-teamkarte img {
  width: 100%;
  height: 300px;
  object-fit: cover;
  display: block;
}

.nrv-teamkarte-name {
  font-size: clamp(1.4375rem, 1.9vw, 1.625rem);
  font-weight: 500;
  line-height: 1.15;
}

.nrv-teamkarte-text {
  font-size: 0.875rem;
  line-height: 1.6;
}

.nrv-teamkarte .nrv-cta,
.nrv-teamkarte .nrv-cta a {
  margin-top: auto;
  padding-top: 4px;
  font-size: 0.875rem;
}

@media (max-width: 1000px) { .nrv-teamraster { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px)  { .nrv-teamraster { grid-template-columns: 1fr; }
                             .nrv-teamkarte img { height: 220px; } }

/* --- Barrierefrei-Block auf /kontakt/ -----------------------------------
   **Bis v3.65 eine Navy-Fläche am Seitenende, seit v3.66 die rechte Spalte
   des Besuchsrasters** – so kennt `Main.dc.html` ihn, und so steht der Satz
   nur noch einmal auf der Seite. Mit dem Umzug fiel der dunkle Grund weg;
   Überschrift, Absätze und Trennlinien standen dadurch **weiß auf weiß**.

   Gemeldet hat es die Kontrastmessung mit 1,00. Dieselbe Stelle wie beim
   Umstellen des Fußbereichs (v2.2.1 und v2.40.0): Wer eine Fläche heller
   macht, prüft jede Farbangabe, die auf ihr lag. */
.nrv-barriere-titel {
  font-size: clamp(1.59rem, 2.3vw, 2.0625rem);
  font-weight: 500;
  line-height: 1.1;
  color: var(--wp--preset--color--navy);
}

.nrv-barriere-liste li {
  font-size: 0.9375rem;
  padding-block: 0.3rem;
  border-top: 1px solid var(--wp--preset--color--linie);
}

/* Team-Detailabschnitte (v3.13.0). Stufen und Kennzahlen nutzen die
   bestehenden Klassen (.nrv-stufen, .nrv-kennzahlen) – ein zweites Muster
   für dieselbe Darstellung wäre eine zweite Stelle zum Pflegen. */
.nrv-teamdetail {
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block-start: clamp(2rem, 4vw, 3rem);
  margin-block-start: clamp(2.5rem, 5vw, 4rem);
}

.nrv-teamdetail > * { margin-block: 0 1rem; }
.nrv-teamdetail > *:last-child { margin-block-end: 0; }

.nrv-teamdetail .nrv-stufen {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 28px;
  margin-block-start: 1.5rem;
}

.nrv-teamdetail .nrv-stufen > * { margin-block: 0; }

.nrv-teamdetail .nrv-stufe {
  border-top: 2px solid var(--wp--preset--color--navy);
  padding-block-start: 1rem;
}

.nrv-teamdetail .nrv-stufe > * { margin-block: 0 0.5rem; }

.nrv-teamdetail .nrv-stufe-titel {
  font-size: clamp(1.3125rem, 1.6vw, 1.4375rem);
  font-weight: 600;
  line-height: 1.14;
}

.nrv-teamdetail .nrv-kennzahlen {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 28px;
  margin-block-start: 1.5rem;
}

.nrv-teamdetail .nrv-kennzahlen > * { margin-block: 0; }

.nrv-teamdetail .nrv-kennzahl {
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block-start: 1rem;
}

.nrv-teamdetail .nrv-kennzahl > * { margin-block: 0; }

@media (max-width: 782px) {
  .nrv-teamdetail .nrv-stufen,
  .nrv-teamdetail .nrv-kennzahlen { grid-template-columns: 1fr; gap: 20px; }
}

/* ==========================================================================
   Geschäftsstelle und Gelebte Inklusion (v3.14.0)
   ========================================================================== */

/* Personen nach Bereichen. Der Entwurf gliedert die Geschäftsstelle in fünf
   Bereiche; vorher stand eine flache Liste aus neun Karten. */
/* Abschnitts-H2 (38 px), nicht Box-Titel – denselben Fehler hatte ich beim
   Kontakt-Jugend-Modul schon einmal gemacht. */
.nrv-gs-bereich {
  font-size: clamp(1.75rem, 2.6vw, 2.375rem);
  font-weight: 500;
  line-height: 1.1;
  margin-block: clamp(2rem, 4vw, 3rem) 1rem;
  padding-block-end: 0.75rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
}


/* Gelebte Inklusion: Abschnitte mit Trennlinie, Crew-Namen im Raster. */
.nrv-gi-abschnitt {
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block-start: clamp(1.75rem, 3.5vw, 2.75rem);
  margin-block-start: clamp(2rem, 4vw, 3rem);
}

.nrv-gi-abschnitt > * { margin-block: 0 1rem; }
.nrv-gi-abschnitt > *:last-child { margin-block-end: 0; }


@media (max-width: 1000px) {
}
@media (max-width: 600px) {
}

/* Bilder aus der Craft-Migration tragen feste Breiten im Markup (gemessen
   800 px in einem 390-px-Fenster, Überlauf 434 px auf
   /gelebte-inklusion-auf-der-regattabahn/). Die Regel gilt global, weil der
   Altbestand überall dieselben Bilder mitbringt – eine Einzelkorrektur hätte
   den nächsten Fall nicht verhindert. */
.entry-content img,
.entry-content figure,
.wp-block-post-content img {
  max-width: 100%;
  height: auto;
}

/* ==========================================================================
   Veranstaltungsanmeldung (v3.15.0)
   ========================================================================== */

.nrv-anm {
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block-start: clamp(2rem, 4vw, 3rem);
  margin-block-start: clamp(2.5rem, 5vw, 4rem);
}

.nrv-anm > * { margin-block: 0 1rem; }

.nrv-anm-titel {
  font-size: clamp(1.75rem, 2.6vw, 2.375rem);
  font-weight: 500;
  line-height: 1.1;
}

.nrv-anm-meldung {
  padding: 1rem 1.25rem;
  border-left: 3px solid var(--wp--preset--color--navy);
  background: var(--wp--preset--color--flaeche);
  font-size: 0.9375rem;
}

.nrv-anm-fehler { border-left-color: var(--wp--preset--color--akzent); }

.nrv-anm-zu {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: clamp(1.59rem, 2.3vw, 2.0625rem);
  font-weight: 500;
}

.nrv-anm-eckdaten {
  display: flex;
  flex-wrap: wrap;
  gap: 0 2.5rem;
  list-style: none;
  padding-left: 0;
  max-width: none;
  border-block: 1px solid var(--wp--preset--color--linie);
  padding-block: 0.75rem;
}

.nrv-anm-eckdaten li { font-size: 0.9375rem; }
.nrv-anm-eckdaten .nrv-label { display: block; }

.nrv-anm-felder {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem 1.5rem;
}

.nrv-anm-feld { display: flex; flex-direction: column; gap: 0.3rem; margin-block: 0; }
.nrv-anm-breit { margin-block-start: 1rem; }

.nrv-anm-feld label {
  font-size: 0.8125rem;
  font-weight: 600;
}

.nrv-anm-feld input,
.nrv-anm-feld textarea {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.9375rem;
  padding: 0.6rem 0.75rem;
  border: 1px solid var(--wp--preset--color--linie);
  border-radius: 0;
  background: var(--wp--preset--color--weiss);
  color: var(--wp--preset--color--navy);
  min-height: 44px;
  box-sizing: border-box;
}

.nrv-anm-feld input:focus-visible,
.nrv-anm-feld textarea:focus-visible { outline: 3px solid var(--wp--preset--color--navy); outline-offset: 1px; }

.nrv-anm-hilfe { font-size: 0.75rem; color: var(--wp--preset--color--grau); }

/* Honeypot: für Menschen unsichtbar, für Screenreader ausgeblendet, aber
   im DOM – ein Roboter füllt ihn aus und verrät sich. */
.nrv-anm-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.nrv-anm-storno {
  margin-block: 1.25rem;
  padding: 1rem 1.25rem;
  background: var(--wp--preset--color--flaeche);
}
.nrv-anm-storno ul { margin-block: 0.4rem 0; font-size: 0.9375rem; max-width: none; }

.nrv-anm-einwilligung label {
  display: flex;
  gap: 0.6rem;
  align-items: flex-start;
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.5;
}
.nrv-anm-einwilligung input { min-height: 0; width: 1.1rem; height: 1.1rem; margin-top: 0.15rem; }

.nrv-anm-absenden { margin-block-start: 1.5rem; }
.nrv-anm-absenden button { min-height: 52px; padding-inline: 26px; }

@media (max-width: 782px) {
  .nrv-anm-felder { grid-template-columns: 1fr; }
  /* 16 px, sonst zoomt Safari auf dem iPhone beim Antippen die Seite. */
  .nrv-anm-feld input,
  .nrv-anm-feld textarea { font-size: 1rem; }
}

/* ---------------------------------------------------------------------------
   Klickflächen auf dem Telefon: Anmeldung und Handlungsaufforderungen
   Zwei Befunde aus dem Mobil-Durchlauf vom 18.10.2026 auf der Terminseite.

   Die Einwilligungszeile: Die Checkbox selbst misst 18 px und lässt sich nicht
   auf Fingergröße bringen, ohne wie ein Kasten auszusehen. Getroffen wird
   ohnehin das Label – es umschließt die Checkbox, ein Tipp auf den Text
   schaltet sie. Also bekommt das Label die Fingerhöhe, nicht das Kästchen.

   `.nrv-cta` ist ein Handlungsaufruf und stand mit 23 px da – dieselbe Höhe
   wie Fließtext. Anders als die Brotkrumen, die bewusst klein bleiben, ist
   das hier der Weg, den jemand gehen soll.
   --------------------------------------------------------------------------- */
@media (max-width: 782px) {
  .nrv-anm-einwilligung label {
    min-height: 44px;
    align-items: flex-start;
    padding-block: 0.3rem;
  }

  .nrv-anm-einwilligung input {
    width: 1.35rem;
    height: 1.35rem;
    margin-top: 0.2rem;
    flex: 0 0 auto;
  }

  .nrv-cta a,
  .nrv-cta:not(:has(a)) {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }
}

/* ---------------------------------------------------------------------------
   Zahlungsangaben nach dem Absenden
   Eine Liste, keine Tabelle: Gelesen wird sie zum Abtippen ins
   Online-Banking, und dafür zählt, dass IBAN und Verwendungszweck
   ungebrochen und markierbar dastehen. Deshalb auch die feste Breite
   der Beschriftungsspalte statt max-content – jedes <li> ist ein
   eigenes Grid, und sonst steht jede Zeile anders (v2.13.3).
   --------------------------------------------------------------------------- */
.nrv-anm-zahlung {
  margin-block: 1.5rem;
  padding: clamp(1.25rem, 3vw, 1.75rem);
  border: 1px solid var(--wp--preset--color--linie-kraeftig);
  background-color: var(--wp--preset--color--flaeche);
}

.nrv-anm-zahlung h3 {
  margin-block: 0 1rem;
  font-size: 1.1875rem;
}

.nrv-anm-zahlliste {
  margin-block: 0;
  padding-inline-start: 0;
  list-style: none;
}

.nrv-anm-zahlliste li {
  display: grid;
  grid-template-columns: 11rem 1fr;
  gap: 0.25rem 1rem;
  margin-block: 0;
  padding-block: 0.4rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

.nrv-anm-zahlliste li:last-child { border-bottom: 0; }

/* Ziffern in gleicher Breite: Eine IBAN liest sich in Vierergruppen
   nur dann sauber, wenn die Zeichen nicht springen. */
.nrv-anm-zahlwert {
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}

.nrv-anm-frist {
  margin-block: 1rem 0;
  font-size: 0.9375rem;
  color: var(--wp--preset--color--grau);
}

.nrv-anm-paypal { margin-block: 1rem 0; }

@media (max-width: 600px) {
  /* Einspaltig: 11 rem Beschriftung plus eine IBAN passen nicht
     nebeneinander. Die Beschriftung steht dann darüber. */
  .nrv-anm-zahlliste li {
    grid-template-columns: 1fr;
    gap: 0.15rem;
  }
}

/* ---------------------------------------------------------------------------
   Vorstand und Gremien
   Der Artboard setzt vier Spalten mit echten Abständen (56/32 px),
nicht
   das Kartenraster der Geschäftsstelle mit seinen 1-px-Fugen auf grauem
   Grund. Das ist hier wichtig: Sieben Personen füllen vier Spalten nicht
   auf {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(2rem, 3.5vw, 3.5rem) clamp(1.25rem, 2.5vw, 2rem);
  margin-block: clamp(1.5rem, 3vw, 2.5rem) 0;
}


/* Die Ämter: Rolle fett, Name darunter. Vier Einträge nebeneinander,
   der Ältestenrat mit seinen sieben Namen über zwei Spalten – sonst
   bräche er in der schmalen Spalte siebenmal um. */
.nrv-aemter-spalten {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(1.25rem, 2.5vw, 2rem);
  margin-block: clamp(1.25rem, 2.5vw, 2rem) 0;
}

.nrv-aemter-spalten > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-amt {
  font-size: 0.9375rem;
  line-height: 1.5;
  color: var(--wp--preset--color--grau);
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block-start: 0.75rem;
}

.nrv-amt strong {
  display: block;
  color: var(--wp--preset--color--navy);
  font-weight: 600;
  margin-block-end: 0.15rem;
}

.nrv-aemter-spalten > .nrv-amt:last-child { grid-column: span 2; }

@media (max-width: 900px) {
  .nrv-aemter-spalten { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 520px) {
  .nrv-aemter-spalten { grid-template-columns: 1fr; }
  .nrv-aemter-spalten > .nrv-amt:last-child { grid-column: auto; }
}

@media (max-width: 1100px) {
}

@media (max-width: 820px) {
}

@media (max-width: 480px) {
}

/* ---------------------------------------------------------------------------
   Rechtsseiten, Sprungnavigation und Zugänge
   --------------------------------------------------------------------------- */

/* Rechtstexte als zweispaltige Liste, wie der Artboard „Impressum":
   260 px Label links, Angabe rechts, Trennlinie oben an jeder Zeile.
   Keine Abschnittsüberschriften – acht Pflichtangaben mit je einer
   Zeile Text lesen sich als Liste, nicht als Kapitelfolge. */
.nrv-rechtsliste {
  display: flex;
  flex-direction: column;
}

.nrv-rechtsliste > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-rechtszeile {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  gap: clamp(1rem, 2.5vw, 2.5rem);
  padding-block: 1.5rem;
  border-top: 1px solid var(--wp--preset--color--linie);
}

.nrv-rechtszeile > * { margin-block: 0; margin-inline: 0; max-width: none; }

/* Das Label trägt h2-Semantik: Die Gliederung bleibt für Screenreader,
   die Gestaltung ist die des Kickers. Deshalb keine eigene Größe hier –
   `.nrv-label` setzt sie. */
.nrv-rechtszeile > h2 { align-self: start; }

.nrv-rechtswert {
  font-size: 1.0625rem;
  line-height: 1.75;
  max-width: 54ch;
}

@media (max-width: 760px) {
  .nrv-rechtszeile {
    grid-template-columns: 1fr;
    gap: 0.5rem;
  }
}

.nrv-rechts-karten {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
  margin-block-start: clamp(1.25rem, 2.5vw, 2rem);
}

.nrv-rechts-karten > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-rechts-karte {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: clamp(1.25rem, 2.5vw, 1.875rem);
  border: 1px solid var(--wp--preset--color--linie);
  background: var(--wp--preset--color--weiss);
}

.nrv-rechts-karte > * { margin-block: 0; margin-inline: 0; max-width: none; }
/* 23 px wie alle Kartentitel – 1,25 rem (20 px) war ein Wert, den ich
   gesetzt habe, ohne gegen die Spezifikation zu prüfen. */
.nrv-rechts-karte h3 { font-size: 1.4375rem; margin-block: 0; }
.nrv-rechts-karte p:not(.nrv-label):not(.nrv-cta) {
  font-size: 0.9375rem;
  color: var(--wp--preset--color--grau);
  flex: 1 1 auto;
}

/* Sprungnavigation – dieselbe Form wie die Regionen auf /partnerclubs/.
   Klickfläche 44 px {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.5rem;
  margin-block: clamp(1.5rem, 3vw, 2.5rem);
  padding-block: 0.75rem;
  border-block: 1px solid var(--wp--preset--color--linie);
}


.nrv-sprung-nr { color: var(--wp--preset--color--akzent); font-variant-numeric: tabular-nums; }

/* Die drei Zugänge auf /login/. Untereinander, nicht nebeneinander:
   Jeder trägt Liste, Knopf und Beizeile – als Spalten wären das drei
   sehr hohe schmale Säulen. */
.nrv-zugang {
  padding-block: clamp(1.75rem, 3.5vw, 3rem);
  border-top: 1px solid var(--wp--preset--color--linie);
}

.nrv-zugang h2 { margin-block: 0.25rem 0.75rem; }
.nrv-zugang .nrv-lead { max-width: 62ch; }
.nrv-zugang-punkte { margin-block: 1rem; max-width: 62ch; }

/* Der Systemname steht klein unter dem Knopf, nicht in der Überschrift:
   Das Anliegen führt, das Produkt folgt. */
.nrv-zugang-system {
  margin-block-start: 0.75rem;
  font-size: 0.875rem;
  color: var(--wp--preset--color--grau);
}

.nrv-zugang-hinweis {
  display: inline-block;
  margin-block: 0;
  padding: 0.2rem 0.6rem;
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--wp--preset--color--akzent);
  border: 1px solid var(--wp--preset--color--akzent);
}

.nrv-wegweiser-tabelle td:last-child { white-space: nowrap; }
.nrv-zugang-hilfe { padding-block-start: clamp(1.5rem, 3vw, 2.5rem); border-top: 1px solid var(--wp--preset--color--linie); }

@media (max-width: 860px) {
  .nrv-rechts-karten { grid-template-columns: 1fr; }
}

/* Trainingsplan: Tag, Gruppe, Zeit – die Zeiten rechtsbündig, damit
   sie untereinander stehen. Der Plan kam aus der .docx als ein
   einziger Absatz ohne Trennung (die <w:br/>-Falle). */
.nrv-trainingsplan {
  list-style: none;
  padding-inline-start: 0;
  max-width: 34rem;
}

.nrv-trainingsplan li {
  display: grid;
  grid-template-columns: 2.5rem 1fr auto;
  gap: 0.75rem;
  padding-block: 0.5rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

.nrv-trainingsplan li:last-child { border-bottom: 0; }
.nrv-trainingsplan strong { font-weight: 600; }
.nrv-trainingsplan .nrv-zeit {
  font-variant-numeric: tabular-nums;
  color: var(--wp--preset--color--grau);
  white-space: nowrap;
}

/* ==========================================================================
   49 · Chips und Kontaktwege (v3.21.0)

   Zwei Bausteine aus den letzten Strukturabschnitten.

   `nrv-chips` ist eine Reihe kurzer Begriffe – Bootsklassen auf
   /reviere/, Helferpositionen auf /regatten-uebersicht/, die zwölf
   Wettfahrtleiterinnen und Wettfahrtleiter. Als Liste gebaut, damit
   ein Screenreader sie zählt; die Punkte sind nur optisch entfernt.

   `nrv-kontaktwege` reiht Mail, Telefon und Verweise einer
   Ansprechperson. Jeder Eintrag trägt 44 px Klickfläche – dasselbe
   Maß wie überall sonst, weil hier am ehesten ein Finger trifft.
   ========================================================================== */

.nrv-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	/* Die ch-Begrenzung für Fließtextlisten trifft auch das, was
	   keiner ist – dieselbe Falle wie bei der Clubliste (v2.41.3). */
	max-width: none;
	margin-block: 1.25rem 0;
	padding-left: 0;
	list-style: none;
}

.nrv-chips > li {
	margin: 0;
	padding: 0 14px;
	min-height: 36px;
	display: inline-flex;
	align-items: center;
	border: 1px solid var(--wp--preset--color--linie);
	font-family: var(--wp--preset--font-family--text);
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	color: var(--wp--preset--color--navy);
	background-color: var(--wp--preset--color--weiss);
}

.nrv-chips > li::marker { content: none; }

.nrv-kontaktwege {
	display: flex;
	flex-wrap: wrap;
	gap: 0 clamp(1.25rem, 3vw, 2.5rem);
	margin-block-start: 1.5rem;
}

.nrv-kontaktwege > * { margin-block: 0 !important; }

/* Die allgemeine Tabellenregel greift; hier nur der Abstand und ein
   waagerechtes Scrollen für die vierspaltigen Tabellen (externe
   Anlaufstellen, Coach-Tarife) auf schmalen Schirmen. */
.nrv-abschnitt .wp-block-table {
	margin-block-start: 1.75rem;
	overflow-x: auto;
}

@media (max-width: 600px) {
	.nrv-chips { gap: 0.375rem; }
	.nrv-chips > li { font-size: 0.75rem; padding: 0 10px; }
}

/* ==========================================================================
   58. Abschnitte als 5/7-Raster (Canvas-Stand 15.10.2026)
   ========================================================================== */

/*
 * Das Grundmodul der Entwürfe: **links Kicker und Überschrift, rechts der
 * Fließtext.** Gemessen am 20.10.2026 fehlte es auf 38 von 54 Seiten – unsere
 * Abschnitte liefen durchgehend einspaltig über die volle Breite, also in der
 * klassischen Blog-Anordnung. Das war Jasmines „keine Layoutveränderung
 * erkennbar", und meine vier Prüfwerkzeuge haben es nicht gesehen, weil keines
 * die Anordnung misst.
 *
 * Maße aus `Ueber-uns.dc.html` und `Geschaeftsstelle-Team.dc.html`:
 * `grid-template-columns: 5fr 7fr`, `gap: 96px` (an zwei Stellen 72).
 *
 * Möglich ist das als **eine Regel**, weil `abschnitt-kopf-wrappen.php` Kicker
 * und Überschrift in `.nrv-kopfspalte` zusammenfasst. Ohne diesen Container
 * wären es wechselnd drei bis sieben Geschwister, und ein Grid füllt vorwärts:
 * Der erste Absatz landete in Zeile 3 statt rechts oben. Feste `grid-area`
 * scheitern an der wechselnden Zahl der Absätze – genau die Falle der
 * Zeitleiste, wo ein Kind mehr das ganze Raster verschoben hat.
 */

@media (min-width: 900px) {

  /*
   * Am 27.10.2026 um zwei benannte Abschnitte ergänzt: `nrv-mitwirken` und
   * `nrv-kontakt-jugend` tragen dieselbe Form und im Artboard dasselbe
   * Raster (446/624), heißen aber nicht „…-abschnitt". **Wer das Skript
   * erweitert, erweitert diesen Selektor mit** – sonst sitzt der Wrapper
   * im Markup und das Raster greift nicht; genau das ist hier passiert.
   *
   * `[class*="-abschnitt"]` statt einer Klassenliste: Der erste Lauf nannte
   * `nrv-abschnitt`, `nrv-ueber-grau` und `nrv-teams-abschnitt` und ließ elf
   * Seiten aus – frühere Bauläufe haben eigene Varianten angelegt
   * (`nrv-ueber-abschnitt`, `nrv-gi-abschnitt`, `nrv-team-abschnitt`).
   *
   * Ein Attributselektor zählt für die Spezifität wie eine Klasse; zusammen
   * mit `.wp-block-group` sind es zwei, und das reicht gegen WordPress'
   * generierte Layout-Regel (`.wp-block-group.is-layout-flow`), gegen die
   * eine einzelne Klasse verliert – zum siebten Mal dasselbe Muster.
   */
  .wp-block-group[class*="-abschnitt"],
  .wp-block-group:is(.nrv-mitwirken, .nrv-kontakt-jugend),
  .nrv-ueber-grau.wp-block-group {
    display: grid;
    grid-template-columns: 5fr 7fr;
    column-gap: clamp(2.5rem, 6vw, 6rem);   /* 96 px bei 1440 */
    row-gap: 1.25rem;
    align-items: start;
  }

  /* `blockGap` käme als `> * + * { margin-block-start }` obendrauf und
     verschöbe die zweite Spalte um genau diesen Betrag nach unten – im Raster
     regelt `row-gap` die Abstände. Steht hier zum dritten Mal im Stylesheet. */
  .wp-block-group[class*="-abschnitt"] > *,
  .wp-block-group:is(.nrv-mitwirken, .nrv-kontakt-jugend) > *,
  .nrv-ueber-grau.wp-block-group > * {
    margin-block: 0;
    /*
     * **Standard ist die volle Breite, nicht Spalte 2.** Mein erster Entwurf
     * hatte es umgekehrt und führte eine Positivliste der Module, die
     * ausbrechen dürfen – 30 Klassen, die beim nächsten Modul veraltet. Das
     * Theme kennt 86 Rasterklassen; eine solche Liste ist nicht zu pflegen.
     */
    grid-column: 1 / -1;
  }

  /*
   * In die rechte Spalte gehört der **Fließtext**, und der ist an seinen
   * Tags zu erkennen. Alles andere – Gruppen, Karten, Tabellen, Bilder –
   * läuft über beide Spalten, wie in den Artboards.
   */
  .wp-block-group[class*="-abschnitt"] > :is(p, ul, ol, blockquote, h3, h4),
  .wp-block-group:is(.nrv-mitwirken, .nrv-kontakt-jugend) > :is(p, ul, ol, blockquote, h3, h4),
  .nrv-ueber-grau.wp-block-group > :is(p, ul, ol, blockquote, h3, h4) {
    grid-column: 2;
  }

  .wp-block-group[class*="-abschnitt"] > .nrv-kopfspalte,
  .wp-block-group:is(.nrv-mitwirken, .nrv-kontakt-jugend) > .nrv-kopfspalte,
  .nrv-ueber-grau.wp-block-group > .nrv-kopfspalte {
    grid-column: 1;
    grid-row: 1;
  }

  /* Die Kopfspalte selbst bleibt ein gewöhnlicher Fluss: Kicker über
     Überschrift, mit dem Abstand des Entwurfs. */
  .nrv-kopfspalte > .nrv-label {
    margin-block-end: 0.75rem;
  }

  .nrv-kopfspalte > :is(h2, h3) {
    margin-block: 0;
  }
}

/*
 * Unter 900 px wird die Zuweisung **ausdrücklich zurückgenommen**. Eine neue
 * Spaltenzahl allein hebt sie nicht auf: Ein Grid legt für jede Zuweisung
 * jenseits der deklarierten Spalten eine implizite Spalte an, und die
 * deklarierte bekäme nichts ab – der Fehler aus „Weitere Meldungen" (v2.36.1),
 * wo das Bild dadurch auf 0 px Breite zusammenfiel.
 */
@media (max-width: 899px) {
  .wp-block-group[class*="-abschnitt"] > *,
  .nrv-ueber-grau.wp-block-group > * {
    grid-column: auto;
    grid-row: auto;
  }
}

/* --- Der Abschlussblock: 7/5 statt 5/7 ----------------------------------- */

/*
 * `Erfolge.dc.html`, `Geschichte.dc.html`, `Shop.dc.html`, `Presse.dc.html`
 * und `Clubheft.dc.html` schließen einen Abschnitt mit einem umgekehrten
 * Raster ab: **Text links (7), Verweise rechts (5), unten bündig.** Bei uns
 * stand die Verweiszeile als Absatz mit zwei bis drei Links nebeneinander
 * unter dem Text.
 *
 * Erkannt wird der Block an seiner Verweiszeile (`:has()`), nicht an einer
 * neuen Klasse im Markup – sechs Vorkommen auf vier Seiten, alle mit
 * `nrv-ankernav-weiter`.
 *
 * **`grid-row: 1 / -1` trägt hier**, anders als in meiner Notiz zum
 * Spenden-Modul pauschal vermerkt: Am lebenden Objekt gemessen nimmt das
 * Grid die Spanne an, sobald überhaupt Zeilen belegt sind. Gescheitert war
 * es damals, weil dort nichts in der Spalte stand.
 */
@media (min-width: 900px) {

  

  
}

/* ==========================================================================
   59. Baustein „Personenkarte" (Canvas-Stand 15.10.2026)
   ==========================================================================

   Baustein 2 von 11 aus Jasmines Abgleich vom 26.10.2026. Für dieselbe Sache
   gab es **zehn Eigenbauten** – `nrv-athlet`, `nrv-person-karte`,
   `nrv-gs-person`, `nrv-ks-person`, `nrv-heat-person`, `nrv-vorstand-person`,
   `nrv-gi-personen` und ihre Raster. Alle sind zu `nrv-personenkarte`
   zusammengeführt.

   Maße aus `Geschaeftsstelle-Team.dc.html` und `Trainer.dc.html`:

     Raster `repeat(3, minmax(0,1fr))`, Fuge 56/28 px
     Karte: Flex-Spalte, Fuge 8 px
       Foto    Hochformat 320 px, darunter 10 px
       Rolle   eyebrow 12 px (Kicker, Versalien, Akzent)
       Name    Cormorant 24 px / 600 / 1,15
       Kontakt 15 px, Mail in 600

   **Die Reihenfolge ist Rolle VOR Name.** Vier der zehn Eigenbauten hatten es
   umgekehrt; `baustein-personenkarte.php` dreht sie um. Im Entwurf steht die
   Funktion als Kicker über dem Namen – wer eine Liste von Ansprechpartnern
   überfliegt, sucht die Zuständigkeit, nicht den Namen.

   **Fotos haben nur die 23 Athleten.** Die übrigen 41 Karten tragen keines,
   und erfinden lässt sich das nicht. Der Baustein kommt deshalb ohne aus;
   wo eines da ist, steht es oben. Das deckt sich mit Jasmines Korrektur:
   „wo der Entwurf Namenslisten zeigt, Namenslisten statt Porträts". */

.nrv-personenraster {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 3.5rem 1.75rem;
  margin-block: clamp(1.5rem, 3vw, 2.5rem) 0;
}

/* Steht die Zahl der Karten fest und geht nicht durch 3 auf, bleibt bei
   `auto-fill` eine leere Zelle sichtbar – der Befund von der H.E.A.T-Crew.
   Feste Spaltenzahl, und schmaler wird gestapelt. */
.nrv-personenraster-klein {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 2.5rem 1.5rem;
}

.nrv-personenkarte {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

/* blockGap liefert `> * + * { margin-block-start }` – im Flex-Container
   verschiebt das jedes Kind außer dem ersten. */
.nrv-personenkarte > * { margin-block: 0; }

.nrv-personenkarte-foto {
  margin: 0 0 0.625rem;
}

/* Zwei Klassen: `.wp-block-image img { height: auto }` von WordPress schlägt
   sonst die Höhe. Dieselbe Stelle wie beim Seitenkopf. */
.nrv-personenkarte .nrv-personenkarte-foto img {
  display: block;
  width: 100%;
  height: 320px;
  object-fit: cover;
}

.nrv-personenraster-klein .nrv-personenkarte-foto img {
  height: 220px;
}

/* Drei der zehn Eigenbauten zeichneten die Funktion mit der allgemeinen
   Klasse `nrv-label` aus statt mit einer eigenen. Umbenennen geht hier nicht
   – `nrv-label` steht an 300 Stellen im Bestand und meint überall den
   Kicker. Innerhalb einer Personenkarte IST der Kicker die Funktion, also
   greift die Regel auf beides. */
.nrv-personenkarte-rolle,
.nrv-personenkarte > .nrv-label {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--wp--preset--color--akzent);
  line-height: 1.4;
}

/* Größe und Gewicht stehen in Abschnitt 56 (Typografie gegen die
   Spezifikation): Der Personenname ist ein Kartentitel, 23 px. Der Entwurf
   der Personenkarte nennt 24 px – ein Pixel Unterschied, und die
   Spezifikation ist laut Übergabe die verbindliche Quelle. Zwei Quellen für
   denselben Wert wären der größere Fehler. */
.nrv-personenkarte-name {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  line-height: 1.15;
  color: var(--wp--preset--color--navy);
}

.nrv-personenkarte-text {
  font-size: 0.9375rem;
  line-height: 1.6;
}

.nrv-personenkarte-kontakt,
.nrv-person-tel {
  display: flex;
  flex-direction: column;
  font-size: 0.9375rem;
  line-height: 1.5;
}

/* Klickfläche: Eine Mailadresse in einer Liste ist auf dem Telefon sonst
   20 px hoch. Der Entwurf setzt `padding: 4px 0`; 44 px erreicht das nicht,
   aber die Zeilen stünden sonst zu weit auseinander – bei einer Liste von
   14 Personen ist das die Abwägung aus v2.41.3 (Clubliste). */
.nrv-personenkarte-kontakt a,
.nrv-person-tel a {
  padding-block: 0.25rem;
  text-underline-offset: 5px;
  overflow-wrap: anywhere;
}

.nrv-personenkarte-kontakt a[href^="mailto"],
.nrv-person-tel a[href^="mailto"] {
  font-weight: 600;
}

@media (max-width: 1000px) {
  .nrv-personenraster,
  .nrv-personenraster-klein {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 620px) {
  .nrv-personenraster,
  .nrv-personenraster-klein {
    grid-template-columns: minmax(0, 1fr);
    gap: 2rem;
  }
  /* Zellenzuweisungen, die im schmalen Layout stehen bleiben, legen
     implizite Spalten an – der Befund von „Weitere Meldungen". Hier gibt es
     keine, aber die Rücknahme gehört zur Vorlage. */
  .nrv-personenkarte > * { grid-column: auto; grid-row: auto; }
}

/* ==========================================================================
   60. Baustein „Ankernavigation" (Canvas-Stand 15.10.2026)
   ==========================================================================

   Baustein 3 von 11. Vier Eigenbauten – `nrv-sprungnav` (5 Seiten),
   `nrv-ueber-sprung`, `nrv-zeit-sprung`, `nrv-revier-sprung` – mit drei
   verschiedenen Markup-Formen (ul/li, Absatz mit Links, Absatz mit Titel).

   Maße aus `Jobs.dc.html`, `Reviere.dc.html`, `Ueber-uns.dc.html`:

     mitlaufende Leiste direkt unter dem Seitenkopf, Linie darunter
     14 px / 600, Innenabstand 20 px oben und unten, Fuge 40 px
     der aktive Punkt rot unterstrichen (2 px)
     ein Querverweis ganz rechts (`margin-left: auto`)

   **`top` rechnet mit der Kopfhöhe.** Der Kopf steht seit v2.23 auf
   `position: fixed` und meldet seine Höhe als `--nrv-kopf-platz`; auf
   Unterseiten ist er kompakt. Ohne das verschwindet die Leiste unter dem
   Kopf, sobald man scrollt. */

.nrv-ankernav {
  position: sticky;
  top: var( --nrv-kopf-platz, 137px );
  z-index: 2;
  background: var( --wp--preset--color--weiss );
  border-bottom: 1px solid var( --wp--preset--color--linie );
  margin-block: 0 clamp( 2rem, 4vw, 3.5rem );
}

/* **Vier Markup-Formen für dieselbe Leiste.** Neben `ul/li` und einem
   Absatz mit mehreren Links gibt es die Form „ein Absatz je Link" – auf
   `/login/`, `/reviere/`, `/vorstand-geschaeftsstelle/` und
   `/jugend-segelausbildung/`. Eine Regel, die nur `.nrv-ankernav-liste`
   kennt, lässt die vier ungestaltet; gemessen fand der Selektor dort
   „0 Ziele", und das sah in der Prüfung aus wie eine Seite ohne Leiste.

   Die Gestaltung hängt deshalb an der **Position im Container**, nicht an
   einer Klasse, die jede Seite anders benennt. Der Container ist die
   Flex-Reihe, und Element ist, was direkt darin steht. */
.nrv-ankernav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0 2.5rem;
}

.nrv-ankernav > * { margin-block: 0; }

.nrv-ankernav > p { margin: 0; }

.nrv-ankernav-titel {
  font-family: var( --wp--preset--font-family--manrope );
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var( --wp--preset--color--grau );
  padding-top: 1.25rem;
}

/* Trägt die Liste `ul`/`li` oder einen Absatz mit Links – beide Formen
   kommen im Bestand vor und beide werden zur Flex-Reihe. */
.nrv-ankernav-liste {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0 2.5rem;
  list-style: none;
  padding-left: 0;
  margin-block: 0;
  /* Eine ch-Begrenzung für Fließtext trifft sonst auch das hier – der
     Befund von der Clubliste auf /partnerclubs/. */
  max-width: none;
}

.nrv-ankernav-liste li {
  margin: 0;
  list-style: none;
}

.nrv-ankernav-liste a,
.nrv-ankernav > p > a {
  display: inline-block;
  padding-block: 1.25rem;
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.3;
  text-decoration: none;
  border-bottom: 2px solid transparent;
  color: var( --wp--preset--color--navy );
}

.nrv-ankernav-liste a:hover,
.nrv-ankernav-liste a:focus-visible,
.nrv-ankernav-liste a[aria-current="true"],
.nrv-ankernav > p > a:hover,
.nrv-ankernav > p > a:focus-visible {
  border-bottom-color: var( --wp--preset--color--akzent );
}

/* Der Querverweis steht rechts – im Entwurf `margin-left: auto`. */
.nrv-ankernav-weiter {
  margin-left: auto;
  font-size: 0.875rem;
  font-weight: 600;
}

.nrv-ankernav:has( .nrv-ankernav-weiter ) .nrv-ankernav-liste {
  flex: 1 1 auto;
}

/* Auf dem Telefon Chips mit Rahmen, waagerecht scrollend – so der Artboard
   `Reviere-mobil.dc.html`. 44 px Mindesthöhe, weil ein Finger das braucht;
   die Leiste der Geschichte trägt 16 Jahreszahlen und wäre sonst fünf
   Zeilen hoch. */
@media (max-width: 860px) {
  .nrv-ankernav {
    position: static;
    border-bottom: 1px solid var( --wp--preset--color--linie );
  }

  .nrv-ankernav-liste {
    flex-wrap: nowrap;
    overflow-x: auto;
    gap: 0.5rem;
    padding-block: 1.25rem 1.5rem;
    scrollbar-width: none;
  }

  .nrv-ankernav-liste::-webkit-scrollbar { display: none; }

  .nrv-ankernav-liste a,
  .nrv-ankernav > p > a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 0 1rem;
    border: 1px solid var( --wp--preset--color--grau );
    border-bottom-width: 1px;
    font-size: 0.8125rem;
    white-space: nowrap;
  }

  .nrv-ankernav-liste a[aria-current="true"] {
    border-color: var( --wp--preset--color--akzent );
  }

  /* Form „ein Absatz je Link": Der Container scrollt, nicht die Liste. */
  .nrv-ankernav:not( :has( .nrv-ankernav-liste ) ) {
    flex-wrap: nowrap;
    overflow-x: auto;
    gap: 0.5rem;
    padding-block: 1.25rem 1.5rem;
    scrollbar-width: none;
  }

  .nrv-ankernav:not( :has( .nrv-ankernav-liste ) )::-webkit-scrollbar { display: none; }

  .nrv-ankernav-weiter { margin-left: 0; }
}

/* ==========================================================================
   61. Baustein „Akkordeon" (Canvas-Stand 15.10.2026)
   ==========================================================================

   Baustein 5 von 11. Im Bestand gab es ihn **gar nicht**; der einzige
   Aufklapper war die Regionenliste auf `/partnerclubs/` mit eigener Klasse.

   Maße aus `Barrierefreiheit.dc.html` (dem einzigen Artboard, das ihn nutzt):

     Zeile 76 px hoch, Trennlinie oben, Fuge 20 px
     Titel Cormorant 24 px / 500, nimmt den freien Platz
     Kurzinfo 13 px, bricht nicht um
     rechts ein Kreis 40 px mit + bzw. −

   **Der Kreis entsteht per `::after`, nicht im Markup.** Im Entwurf trägt er
   `aria-hidden`; als erzeugter Inhalt ist er das von selbst, und die
   Redaktion kann ihn nicht versehentlich löschen. Sein `border-radius: 50%`
   ist einer der dokumentierten Ausnahmefälle – die Palette setzt sonst
   durchgehend eckige Ecken.

   **Grundlage ist `core/details`**, WordPress' eigener Block. Damit legt die
   Redaktion einen Aufklapper im Editor an, ohne HTML zu schreiben, und
   Browser wie Seitensuche finden auch zugeklappten Text. Eine Eigenbau-
   Lösung mit JavaScript wäre genau die Abhängigkeit, gegen die dieses
   Projekt gebaut wird. */

.nrv-akkordeon {
  border-top: 1px solid var( --wp--preset--color--linie );
  margin-block: 0;
}

.nrv-akkordeon > summary {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  min-height: 76px;
  padding-block: 0.5rem;
  cursor: pointer;
  list-style: none;
}

/* Das Standarddreieck weg – der Kreis rechts übernimmt die Anzeige. */
.nrv-akkordeon > summary::-webkit-details-marker { display: none; }
.nrv-akkordeon > summary::marker { content: ""; }

.nrv-akkordeon-titel {
  flex: 1 1 auto;
  font-family: var( --wp--preset--font-family--cormorant-garamond );
  font-size: 1.5rem;
  font-weight: 500;
  line-height: 1.15;
  color: var( --wp--preset--color--navy );
}

.nrv-akkordeon-kurz {
  flex-shrink: 0;
  font-size: 0.8125rem;
  color: var( --wp--preset--color--grau );
  white-space: nowrap;
}

.nrv-akkordeon > summary::after {
  content: "+";
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border: 1px solid var( --wp--preset--color--navy );
  border-radius: 50%;   /* Ausnahme: Icon-Kreis, siehe Farbkonzept */
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
  line-height: 1;
  color: var( --wp--preset--color--navy );
}

.nrv-akkordeon[open] > summary::after { content: "–"; }

.nrv-akkordeon > summary:hover::after,
.nrv-akkordeon > summary:focus-visible::after {
  background: var( --wp--preset--color--navy );
  color: var( --wp--preset--color--weiss );
}

/* Der Inhalt: alles nach dem summary. */
.nrv-akkordeon > :not( summary ) {
  padding-block: 0.25rem 2.25rem;
  max-width: 860px;
  margin-block: 0;
}

@media (max-width: 620px) {
  .nrv-akkordeon > summary {
    flex-wrap: wrap;
    gap: 0.5rem 0.75rem;
    padding-block: 1rem;
  }
  .nrv-akkordeon-titel { flex: 1 1 100%; order: 2; font-size: 1.25rem; }
  .nrv-akkordeon-kurz { order: 1; }
  .nrv-akkordeon > summary::after { order: 1; margin-left: auto; }
}

/* ==========================================================================
   62. Baustein „Kontakt- und Aktionsbox" (Canvas-Stand 15.10.2026)
   ==========================================================================

   Baustein 6 von 11. Drei Eigenbauten – `nrv-stellen-hinweis` (7 Seiten),
   `nrv-bf-hinweis` (2), `nrv-koll-hinweis` (1).

   Der Entwurf nutzt sie **13-mal in 12 Artboards**, in zwei Formen:

     A  Rahmen 1 px, Innenabstand 56, Raster `5fr 7fr`, Fuge 96, mittig
        ausgerichtet: links Kicker und h2 (34 px / 500), rechts Fließtext
        (17 px / 1,7) und bis zu zwei Knöpfe (gefüllt und umrandet)
     B  eine Zeile: Satz in Cormorant 24 px links, ein Knopf rechts,
        Innenabstand 28/32

   Welche Form gilt, entscheidet der Inhalt: Mit Kopfspalte wird es A, ohne
   sie B. `:has()` liest das aus dem Markup, statt eine zweite Klasse zu
   verlangen, die jemand setzen müsste.

   `nrv-kontaktwege` ist **nicht** eingemeindet – das ist eine Kontaktzeile
   aus `nrv-cta`-Verweisen, kein Kasten. */

.nrv-aktionsbox {
  background: var( --wp--preset--color--weiss );
  border: 1px solid var( --wp--preset--color--linie );
  padding: clamp( 1.75rem, 4vw, 3.5rem );
  margin-block: clamp( 2rem, 4vw, 3rem );
}

.nrv-aktionsbox > * { margin-block: 0; }
.nrv-aktionsbox > * + * { margin-block-start: 1.25rem; }

/* Form B: ohne Kopfspalte eine Zeile, der Knopf rechts. */
.nrv-aktionsbox:not( :has( .nrv-kopfspalte ) ) {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem 2.5rem;
  padding: 1.75rem 2rem;
}

.nrv-aktionsbox:not( :has( .nrv-kopfspalte ) ) > * { margin-block: 0; }

.nrv-aktionsbox:not( :has( .nrv-kopfspalte ) ) > .wp-block-buttons {
  flex-shrink: 0;
}

@media (min-width: 900px) {

  /* Form A: zweispaltig, sobald eine Kopfspalte da ist. */
  .nrv-aktionsbox:has( .nrv-kopfspalte ) {
    display: grid;
    grid-template-columns: 5fr 7fr;
    column-gap: clamp( 2.5rem, 6vw, 6rem );
    row-gap: 1.25rem;
    align-items: center;
  }

  .nrv-aktionsbox:has( .nrv-kopfspalte ) > * {
    grid-column: 2;
    margin-block-start: 0;
  }

  .nrv-aktionsbox:has( .nrv-kopfspalte ) > .nrv-kopfspalte {
    grid-column: 1;
    grid-row: 1 / -1;
  }
}

/* Der Titel ist hier 34 px, nicht die 38 der Abschnittsüberschrift – der
   Entwurf unterscheidet beide. Mobil 25,5 px wie jede Box-Überschrift. */
/* Die Überschrift der Box steht auf der Box-Größe der Spezifikation
   (32–34 px), **unabhängig vom Tag**: Unsere Kästen führen sie als `h3`,
   weil sie inhaltlich unter dem Abschnitt steht – der Entwurf kennt nur
   Optik und schreibt `h2` mit 34 px. Die Semantik bleibt, die Größe folgt
   dem Entwurf. Ohne diese Regel landete sie bei 23 px (Kartentitel). */
.nrv-aktionsbox :is( h2, h3 ) {
  font-family: var( --wp--preset--font-family--cormorant-garamond );
  font-size: 2.0625rem;
  font-weight: 500;
  line-height: 1.1;
}

@media (max-width: 860px) {
  .nrv-aktionsbox :is( h2, h3 ) { font-size: 1.59375rem; }
}

.nrv-aktionsbox .wp-block-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

/* ==========================================================================
   63. Baustein „Bild-Text-Modul" gegen den Entwurf (Canvas-Stand 15.10.2026)
   ==========================================================================

   Baustein 7 von 11. Anders als die übrigen war er **schon einheitlich**:
   `nrv-thema` mit dem Modifier `nrv-thema-gedreht` und der Kindklasse
   `nrv-thema-text`. Raster, mittige Ausrichtung und der Seitenwechsel des
   Bildes (L-R-L-R) stimmten bereits.

   Drei Maße wichen ab, Quelle `Mitglied-werden.dc.html`; **korrigiert in
   Abschnitt 34.1**, nicht hier – ein Baustein gehört an eine Stelle:

   | | war | Entwurf |
   |---|---|---|
   | Spaltenfuge | 50,4 px | **80** |
   | Bildhöhe | 461 px (4:3) | **560** |
   | Titel | 33,6 px (als Kasten gewertet) | **38** |

   **Der Titel war ein Zuordnungsfehler in meiner Spezifikationstabelle**,
   nicht im Theme: `.nrv-thema-titel` stand unter „H2 in Box / Kachel"
   (32–34 px). Das Modul hat aber weder Rahmen noch Fläche – es ist ein
   Abschnitt mit zwei Spalten, und der Entwurf setzt dort 38 px. Deshalb fiel
   er auf `/mitglied-werden/` auf 33,6, während `/reviere/` ohne die Klasse
   korrekt bei 37,4 stand: **zwei Größen für dasselbe Modul.** Die Angabe ist
   jetzt ganz entfallen, der Titel folgt der Abschnitts-H2 aus Abschnitt 56.

   `1fr 1fr` ist gegen `repeat(2, minmax(0, 1fr))` getauscht. `1fr` hat eine
   Mindestbreite von `auto`, ein Kind mit breitem Inhalt kann seine Spalte
   also aufweiten – im Bestand fiel das nicht auf, weil beide Spalten Platz
   hatten, aber es ist genau die Falle, die bei den Produktkacheln des Shops
   eine halbe Stunde gekostet hat. */

/* ==========================================================================
   64. Bausteine 9 bis 11: Kennzahlenleiste, Knöpfe, Einleitung
   ==========================================================================

   **Einleitung (Baustein 8).** Fünf Klassen für eine Rolle, und nur
   `.nrv-lead` trug den Wert der Spezifikation (25 px Cormorant 500).
   `nrv-vorspann-text` (11 Seiten) hatte gar keine Regel und erbte die 18 px
   des Fließtexts, `nrv-ueber-lead` (6 Seiten) stand fest auf 18. Beide sind
   jetzt `nrv-lead`; ihre Altregeln sind entfernt, damit nichts stapelt.

   **Die Prüfung hat das nie gemeldet**, weil ihr Selektor die beiden Klassen
   gar nicht kannte – der gefährlichere der beiden Zuordnungsfehler, weil er
   schweigt statt zu melden.

   `nrv-ks-einleitung` bleibt bei 15 px: Das ist der Hinweistext unter den
   Ansprechpersonen, kein Lead. Eine Klasse, die „Einleitung" heißt, ist
   deshalb noch keine. */

/* 64.1 Kennzahlenleiste
   -------------------------------------------------------------------------
   Maße aus `Ueber-uns.dc.html`: kräftige Oberkante in Navy, feine Unterkante,
   feine Trennlinien zwischen den Zellen, 32/24 Innenabstand, erste Zelle ohne
   linken Rand. Wert 44 px Cormorant Garamond, Beschriftung 13 px.

   **Die Spaltenzahl folgt der Elementzahl, sie steht nicht fest.** Im Bestand
   tragen die Leisten 2, 3 oder 4 Kennzahlen; vier feste Spalten ließen bei
   zweien zwei leere Zellen samt Trennlinie stehen – der Fehler von der
   H.E.A.T-Crew (v2.16.6). `auto-fit` war es vorher und ist das andere
   Extrem: Es legt bei 1.280 px Breite sechs Spalten an, wenn der Inhalt
   schmal genug ist. `:has(> :last-child:nth-child(n))` liest die tatsächliche
   Zahl aus. */

.nrv-kennzahlen {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  border-top: 1px solid var(--wp--preset--color--navy);
  border-bottom: 1px solid var(--wp--preset--color--linie);
  background: none;
}

.nrv-kennzahlen:has( > :last-child:nth-child(2) ) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.nrv-kennzahlen:has( > :last-child:nth-child(3) ) { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.nrv-kennzahlen > * { margin-block: 0; }   /* blockGap, zum wiederholten Mal */

.nrv-kennzahl {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 32px 24px;
  border-left: 1px solid var(--wp--preset--color--linie);
  background: none;
}

.nrv-kennzahl:first-child {
  padding-left: 0;
  border-left: 0;
}

.nrv-kennzahl-text {
  font-size: 0.8125rem;
  color: var(--wp--preset--color--navy);
}

@media (max-width: 760px) {
  .nrv-kennzahlen,
  .nrv-kennzahlen:has( > :last-child:nth-child(3) ) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .nrv-kennzahl { padding: 24px 16px; }
  /* Zurückgenommen wird die Sonderregel der ersten Zelle: In zwei Spalten
     ist jede ungerade Zelle die linke. */
  .nrv-kennzahl:nth-child(odd) { padding-left: 0; border-left: 0; }
}

@media (max-width: 480px) {
  /* Einspaltig: Bei zwei Spalten à 171 px kommt eine Beschriftung wie
     „2 Traditionswochen initiiert: Kieler und Travemünder Woche" auf ein
     Verhältnis von 10,6 – unter den 11, die `mobil-pruefen.js` als
     Untergrenze prüft. */
  .nrv-kennzahlen,
  .nrv-kennzahlen:has( > :last-child:nth-child(2) ),
  .nrv-kennzahlen:has( > :last-child:nth-child(3) ) {
    grid-template-columns: 1fr;
  }
  .nrv-kennzahl { padding-left: 0; border-left: 0; }
}

/* 64.2 Umrandeter Knopf (`.btn-o` im Entwurf)
   -------------------------------------------------------------------------
   Den gab es im Theme nicht – in der Spezifikationstabelle stand er deshalb
   als `fehlt`. Im Canvas kommt er **24-mal** vor; das ist kein fehlendes
   Element, sondern ein fehlender Baustein.

   WordPress' Stilvariante „Umriss" (`is-style-outline`) liefert dafür eigene
   Regeln mit zwei Klassen und einer Farbe aus den Voreinstellungen. Deshalb
   steht sie hier mit derselben Spezifität und einem ausdrücklichen Wert. */

.wp-block-button.is-style-outline > .wp-block-button__link,
.wp-block-button .wp-block-button__link.is-style-outline {
  min-height: 52px;
  padding: 0 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: 1px solid var(--wp--preset--color--navy);
  background: none;
  color: var(--wp--preset--color--navy);
  font-size: 0.9375rem;
  font-weight: 600;
  border-radius: 0;
  box-sizing: border-box;
  text-decoration: none;
}

.wp-block-button.is-style-outline > .wp-block-button__link:hover,
.wp-block-button.is-style-outline > .wp-block-button__link:focus-visible {
  background: var(--wp--preset--color--navy);
  color: var(--wp--preset--color--weiss);
}

/* 64.3 Baustein 10: Abstand zwischen Abschnitten
   -------------------------------------------------------------------------
   Gemessen stand er auf 80 px, ausgezählt über alle Artboards sind es **104**
   (70 Vorkommen `padding: 104px 80px`, dahinter 96 mit 30 und 48 mit 24).
   Mobil nennt `Reviere-mobil.dc.html` 44 px.

   `clamp(2.75rem, 7.2vw, 6.5rem)`: bei 1440 px ergibt 7,2vw 103,7 und wird
   auf 104 gekappt, bei 390 px liegt es unter dem Minimum und steht auf 44.
   Beide Enden sind damit belegt, nicht geschätzt.

   Der Selektor nennt denselben Attributtreffer wie Abschnitt 58 – frühere
   Bauläufe haben eigene Abschnittsklassen angelegt (`nrv-ueber-abschnitt`,
   `nrv-gi-abschnitt`, `nrv-team-abschnitt`), und eine Namensliste veraltet
   beim nächsten Modul. */

.entry-content [class*="-abschnitt"].wp-block-group {
  margin-block-end: clamp( 2.75rem, 7.2vw, 6.5rem );
}

/* Der letzte Abschnitt braucht ihn nicht – darunter folgt das Spenden-Modul
   mit eigenem Innenabstand. */
.entry-content [class*="-abschnitt"].wp-block-group:last-child {
  margin-block-end: 0;
}


/* ==========================================================================
   65. Geschäftsstelle: die fünf Bereiche im 4/8-Raster (Canvas 15.10.2026)
   ==========================================================================

   Der Artboard „Geschaeftsstelle-Team" stellt je Bereich die laufende Nummer
   und den Namen **links** (4 von 12 Spalten), Beschreibung und Personen
   **rechts** (8 von 12). Bei uns standen Überschrift und Personenraster
   untereinander – inhaltlich vollständig, aber ohne die Gliederung.

   Die Trennlinie liegt oben am Block, nicht unter der Überschrift: Sie
   trennt die Bereiche voneinander, nicht Überschrift von Inhalt. Die alte
   `border-bottom` an `.nrv-gs-bereich` ist deshalb innerhalb des Blocks
   zurückgenommen.                                                        */

.nrv-gs-bereichblock {
  display: grid;
  grid-template-columns: 4fr 8fr;
  gap: 4rem;
  align-items: start;
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block-start: clamp(1.75rem, 3.5vw, 2.5rem);
  margin-block-start: clamp(2rem, 4vw, 3rem);
}

/* blockGap liefert `> * + * { margin-block-start }` aus und schöbe die
   rechte Spalte nach unten. Im Grid regelt `gap` die Abstände – derselbe
   Befund wie beim News-Raster und beim Spenden-Modul. */
.nrv-gs-bereichblock > * { margin-block: 0; }

.nrv-gs-nummer {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 1;
  color: var(--wp--preset--color--akzent);
  margin-block: 0 0.5rem;
}

/* Innerhalb des Blocks trägt die Trennung der Block selbst. */
.nrv-gs-bereichblock .nrv-gs-bereich {
  margin-block: 0;
  padding-block-end: 0;
  border-bottom: 0;
}

.nrv-gs-text {
  max-width: 62ch;
  margin-block: 0;
}

.nrv-gs-inhalt > .nrv-cta { margin-block: 0.75rem 0; }

/* In 8 von 12 Spalten stehen drei Karten nebeneinander wie im Entwurf –
   das Personenraster behält seine drei Spalten, sie werden nur schmaler. */
.nrv-gs-bereichblock .nrv-personenraster {
  margin-block: 1.5rem 0;
}

@media (max-width: 860px) {
  /* Einspaltig: In der halben Spalte hätten Nummer und Name keinen Platz,
     und drei Personenkarten nebeneinander erst recht nicht. */
  .nrv-gs-bereichblock {
    grid-template-columns: 1fr;
    gap: 1.25rem;
  }
}

/* 65.1 Die Kontaktleiste über den Bereichen -------------------------------

   Der Artboard stellt sie **vierspaltig** mit Navy-Oberkante je Spalte und
   ohne Fläche dahinter – Linien statt Flächen, wie das Farbkonzept es
   durchgehend tut (2.774 Linien gegen 2 abgesetzte Flächen im Canvas).
   Die alte `.nrv-gs-kopf` bleibt bestehen: Sie steht auch auf /anfahrt/.  */

.nrv-gs-leiste {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 2rem;
  margin-block: clamp(1.5rem, 3vw, 2.5rem);
}

/* blockGap schöbe die Spalten 2 bis 4 um 24 px nach unten. */
.nrv-gs-leiste > * { margin-block: 0; }

.nrv-gs-leiste .nrv-gs-block {
  border-top: 1px solid var(--wp--preset--color--navy);
  padding-block-start: 1.25rem;
}

@media (max-width: 860px) {
  /* Zwei Spalten, nicht eine: Die vier Angaben sind kurz, und einspaltig
     wären es vier volle Bildschirmhöhen bis zum ersten Bereich. */
  .nrv-gs-leiste { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; }
}

@media (max-width: 480px) {
  .nrv-gs-leiste { grid-template-columns: 1fr; }
}


/* ==========================================================================
   66. Über uns: die Raster des Artboards (Canvas 15.10.2026)
   ==========================================================================

   Vier Stellen, an denen die Seite inhaltlich vollständig war, aber
   untereinander lief, wo der Entwurf nebeneinander stellt. Das ist der
   Punkt, den Jasmine am 19.10. mit „keine Layoutveränderung erkennbar"
   gemeint hat.                                                           */

/* 66.1 Der Vorstand als Viererraster ------------------------------------
   Sieben Personen in vier Spalten (4 + 3). Eine leere Zelle fällt hier
   nicht auf, weil die Fugen nicht über einen Hintergrund entstehen –
   anders als bei der H.E.A.T-Crew, wo `auto-fill` graue Leerflächen ließ. */

.nrv-vorstand-raster {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1.5rem;
}

/* 66.2 Die Clubhaus-Chronik waagerecht ----------------------------------
   Der Artboard stellt die sieben Stationen nebeneinander mit Navy-
   Oberkante über der ganzen Reihe – eine Zeitleiste, die man in einem
   Blick überliest, statt sieben Zeilen zu scrollen.                      */

.nrv-chronik {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 1.25rem;
  border-top: 1px solid var(--wp--preset--color--navy);
  padding-block-start: 1.75rem;
}

.nrv-chronik-zeile {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  grid-template-columns: none;   /* die alte Zweispaltigkeit zurücknehmen */
}

.nrv-chronik-jahr { font-size: 1.125rem; }

@media (max-width: 1100px) {
  /* Sieben Spalten brauchen je rund 150 px, sonst bricht jede Station in
     Ein-Wort-Zeilen um. Darunter vier, dann zwei. */
  .nrv-chronik { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 720px) {
  .nrv-chronik { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem 1rem; }
}

/* 66.3 Die Nutzungen des Hauses zweispaltig ------------------------------ */

.nrv-haus-liste {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.5rem 1.25rem;
  margin-block: 0.75rem 1.25rem;
  padding-left: 1.125rem;
  line-height: 1.7;
}

@media (max-width: 600px) {
  .nrv-haus-liste { grid-template-columns: 1fr; }
}

@media (max-width: 860px) {
  .nrv-vorstand-raster { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 520px) {
  .nrv-vorstand-raster { grid-template-columns: 1fr; }
}

/* 66.4 Ausschüsse (7) neben Weiteren Funktionsträgern (5) ---------------- */

.nrv-gremien-raster {
  display: grid;
  grid-template-columns: 7fr 5fr;
  gap: 4rem;
  align-items: start;
  border-top: 1px solid var(--wp--preset--color--navy);
  padding-block-start: 2.5rem;
  margin-block-start: clamp(2rem, 4vw, 3rem);
}

.nrv-gremien-raster > *,
.nrv-gremien-links > *,
.nrv-gremien-rechts > * { margin-block: 0; }

.nrv-gremien-links > * + *,
.nrv-gremien-rechts > * + * { margin-block-start: 1rem; }

/* 66.5 Clubhaus: Bild (7) neben Text (5) --------------------------------

   Ohne feste Bildhöhe, anders als die 520 px des Artboards: Der
   Urhebervermerk „© Sven Jürgensen" ist unten links **ins Bild
   eingebrannt**, und ein Beschnitt auf eine feste Höhe schneidet ihn weg.
   Dieselbe Abwägung wie beim Spenden-Modul – ein Foto ohne seinen Vermerk
   zu zeigen, wäre ein Rechtsproblem statt einer Gestaltungsfrage.        */

.nrv-clubhaus-raster {
  display: grid;
  grid-template-columns: 7fr 5fr;
  gap: 4.5rem;
  align-items: center;
  margin-block: clamp(2rem, 4vw, 3rem);
}

.nrv-clubhaus-raster > * { margin-block: 0; }

.nrv-clubhaus-bild img {
  display: block;
  width: 100%;
  height: auto;
}

.nrv-clubhaus-text > * { margin-block: 0; }
.nrv-clubhaus-text > * + * { margin-block-start: 1rem; }

@media (max-width: 900px) {
  .nrv-gremien-raster,
  .nrv-clubhaus-raster {
    grid-template-columns: 1fr;
    gap: 1.75rem;
  }
}

/* 66.6 Vier Querverweiskarten brauchen vier Spalten ---------------------

   Der Baustein steht auf 40 Seiten mit drei Karten; `/ueber-uns/` hat
   vier. Die Spaltenzahl folgt deshalb der Kinderzahl, wie bei der
   Kennzahlenleiste – eine feste Vier hier würde die 40 anderen Seiten
   mit einer leeren Spalte zurücklassen.                                  */

.nrv-wf-karten:has( > :last-child:nth-child(4) ) {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

@media (max-width: 1000px) {
  .nrv-wf-karten:has( > :last-child:nth-child(4) ) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* `:has()` zählt die Spezifität seines Arguments mit und schlägt damit die
   einspaltige Regel für schmale Schirme weiter oben. Dort gehört die
   Vierer-Variante ausdrücklich mitgenannt – sonst stehen auf dem Telefon
   zwei Spalten à 139 px, in denen jeder Teaser in Ein-Wort-Zeilen bricht. */
@media (max-width: 600px) {
  .nrv-wf-karten:has( > :last-child:nth-child(4) ) {
    grid-template-columns: 1fr;
  }
}

/* ==========================================================================
   60. Seitenkopf der Serviceseiten (v3.49)
   ========================================================================== */

/*
 * Die Artboards der drei Serviceseiten (Materialkostenzuschuss,
 * Meldegelderstattung, Schadensfall) setzen den Kopf als `7fr 5fr`: links
 * Kicker, Titel und Lead, rechts ein Kasten „Auf einen Blick" mit den
 * Eckdaten und dem Formular-Knopf.
 *
 * **Das ist die Gegenrichtung zum Abschnittskopf** (`5fr 7fr`, Abschnitt 58).
 * Der Entwurf nutzt beide: Ein Seitenkopf trägt links den Haupttext, ein
 * Abschnittskopf links nur Kicker und Überschrift. Wer das verwechselt,
 * bekommt einen Lead in der schmalen Spalte.
 */

.nrv-servicekopf.wp-block-group {
  display: grid;
  grid-template-columns: 7fr 5fr;
  gap: 0 clamp(2rem, 4vw, 5rem);
  align-items: start;
  margin-block-end: var(--nrv-abschnitt-abstand, 6.5rem);
}

.nrv-servicekopf > * {
  margin-block: 0;
}

.nrv-servicekopf-text > * {
  margin-block: 0 0.75rem;
}

.nrv-servicekopf-text > :last-child {
  margin-block-end: 0;
}

/* Der Kasten: Linie statt Fläche – das Farbkonzept trennt durchgehend über
   Linien (2.774 gegen 2 abgesetzte Flächen im Canvas). */
.nrv-blick {
  border: 1px solid var(--wp--preset--color--linie);
  padding: 1.5rem 1.5rem 1.25rem;
}

.nrv-blick > .nrv-label {
  margin-block: 0 1rem;
  padding-block-end: 0.75rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

/* Der Entwurf stellt Beschriftung und Wert nebeneinander (130/280 = 4/8),
   nicht untereinander. Bei einer Liste von Eckdaten liest sich das als
   Tabelle, und die Werte stehen auf einer Kante. */
.nrv-blick-zeile.wp-block-group {
  display: grid;
  grid-template-columns: 4fr 8fr;
  gap: 0 1rem;
  align-items: baseline;
  margin-block-end: 0.9rem;
  padding-block-end: 0.9rem;
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

.nrv-blick-zeile:last-of-type {
  border-bottom: 0;
  margin-block-end: 0;
}

.nrv-blick-zeile > * {
  margin-block: 0;
}

.nrv-blick-zeile .nrv-label {
  color: var(--wp--preset--color--grau);
}

.nrv-blick-zeile p:not(.nrv-label) {
  margin-block: 0;
  font-size: 0.9375rem;
  line-height: 1.5;
}

.nrv-blick > .nrv-cta {
  margin-block: 1.25rem 0;
}

@media (max-width: 860px) {
  .nrv-servicekopf.wp-block-group {
    grid-template-columns: minmax(0, 1fr);
    gap: 2rem;
  }

  .nrv-servicekopf-text {
    margin-block-end: 0;
  }
}

/* ==========================================================================
   61. Abschnitt mit Bild (v3.50)
   ========================================================================== */

/*
 * Der Entwurf stellt einzelne Abschnitte als `600px 600px` – Bild auf der
 * einen, Text auf der anderen Seite. Das ist **nicht** der Abschnittskopf
 * aus Abschnitt 58 (`5fr 7fr`, Kicker links schmal), sondern eine eigene
 * Form.
 *
 * Die Klasse heißt `nrv-bildabschnitt` und **nicht** `nrv-abschnitt-bild`:
 * Der Selektor des Kopfrasters greift auf `[class*="-abschnitt"]`, und eine
 * Klasse mit diesem Bestandteil bekäme das falsche Raster. Ein Name, der ein
 * fremdes Muster trifft, ist ein stiller Fehler.
 */

.nrv-bildabschnitt.wp-block-group {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 clamp(2rem, 4vw, 4.5rem);
  /* `align-content`, nicht `align-items`: Ist das Bild höher als der Text,
     streckt der Vorgabewert `stretch` die Textzeilen auseinander – der
     Kicker stand dann weit über seiner Überschrift. `center` hält die
     Zeilen zusammen und setzt die Gruppe als Ganzes mittig. */
  align-content: center;
  align-items: start;
  margin-block-end: var(--nrv-abschnitt-abstand, 6.5rem);
}

.nrv-bildabschnitt > * {
  margin-block: 0 0.75rem;
}

.nrv-bildabschnitt > :last-child {
  margin-block-end: 0;
}

/* Das Bild spannt über alle Textzeilen.
   **`1 / -1` trägt hier nicht:** Die Zeilen entstehen implizit (es gibt
   kein `grid-template-rows`), und `-1` meint die letzte *explizite* Linie –
   also Linie 1. Das Bild blieb dadurch in Zeile 1, und Kicker und
   Überschrift rutschten darunter. Dieselbe Falle wie beim Spenden-Modul
   (v2.8.0); in der Zeitleiste trug es, weil dort Zeilen deklariert sind.
   `span 99` deckt jede Zahl von Absätzen ab. */
.nrv-bildabschnitt > .nrv-abschnitt-foto {
  grid-column: 1;
  grid-row: 1 / span 99;
  align-self: stretch;
  margin-block: 0;
}

/* Zwei Klassen, weil WordPress `.wp-block-image img { height: auto }`
   ausliefert – dieselbe Stelle wie bei Seitenkopf-Bild und Zeitleiste. */
.nrv-bildabschnitt .nrv-abschnitt-foto img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 320px;
  object-fit: cover;
}

/* Der Text beginnt in Spalte 2, egal wie viele Absätze folgen. */
.nrv-bildabschnitt > :not(.nrv-abschnitt-foto) {
  grid-column: 2;
}

@media (max-width: 860px) {
  .nrv-bildabschnitt.wp-block-group {
    grid-template-columns: minmax(0, 1fr);
    gap: 1.5rem 0;
  }

  .nrv-bildabschnitt > .nrv-abschnitt-foto,
  .nrv-bildabschnitt > :not(.nrv-abschnitt-foto) {
    grid-column: 1;
    grid-row: auto;
  }

  .nrv-bildabschnitt .nrv-abschnitt-foto img {
    min-height: 220px;
    height: 220px;
  }
}

/* ==========================================================================
   67. Shop-Seiten nach den Artboards (v3.51)
   ========================================================================== */

/* 67.1 Abschnittskopf breit statt schmal ---------------------------------

   `Shop.dc.html` setzt den Kopf des Bestellabschnitts als `7fr 5fr`:
   links Kicker und Überschrift, rechts der Lead. Das Grundmodul aus
   Abschnitt 58 macht es umgekehrt (`5fr 7fr`, Kopf links schmal).

   Der Entwurf nutzt beide Richtungen, und welche gilt, hängt davon ab,
   was links steht – Kopf allein oder Kopf mit Fließtext. Deshalb eine
   Modifierklasse am Abschnitt, keine neue Grundregel: Von 84 gefassten
   Abschnittsköpfen ist dieser bisher der einzige in der Gegenrichtung.

   Die Regel gehört in denselben Media Query wie Abschnitt 58 – unterhalb
   900 px stapeln alle Abschnitte einspaltig, und eine Drehung außerhalb
   des Query würde dort zwei Spalten erzwingen.                           */

@media (min-width: 900px) {
  .nrv-kopf-breit.wp-block-group {
    grid-template-columns: 7fr 5fr;
  }
}

/* 67.2 Das Kontaktmodul des Shops ----------------------------------------

   Der Artboard: weiße Karte mit 1 px Rahmen in `linie`, Innenabstand
   36/40, Raster `7fr 5fr`, Fuge 64, mittig ausgerichtet. Links die
   Geschäftsstelle mit ihren Zeiten, rechts die Wege zur Bestellung.

   Vorher trug der Block die getönte Fläche `flaeche`. Die kommt in den
   117 Artboards genau zweimal vor; getrennt wird hier über die Linie,
   wie überall in diesem Farbkonzept.                                     */

.nrv-shop-bestellen.wp-block-group {
  background-color: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
  padding: 2.25rem 2.5rem;
  margin-block: 0;
}

@media (min-width: 900px) {
  .nrv-shop-bestellen.wp-block-group {
    display: grid;
    grid-template-columns: 7fr 5fr;
    column-gap: clamp(2rem, 4.5vw, 4rem);
    /*
     * **`row-gap` muss hier 0 sein.** Der Knopf rechts spannt über alle
     * Zeilen (`grid-row: 1 / span 99`, weil die Zahl der linken Kinder
     * nicht feststeht). Eine Spanne über implizite Zeilen zieht die Fuge
     * mit: Bei 1 rem waren das 98 leere Fugen und ein **1964 px hoher**
     * Block statt 260. Die Abstände stehen deshalb als Margin an den
     * Kindern. Im Bildabschnitt (61) fiel derselbe `span 99` nicht auf,
     * weil dort `row-gap` ohnehin 0 ist.
     *
     * Gesehen hat es der Bildschirmabzug, nicht die Messung – die meldete
     * brav zwei Spalten im richtigen Verhältnis.
     */
    row-gap: 0;
    align-items: center;
  }

  .nrv-shop-bestellen > * + * {
    margin-block-start: 1rem;
  }

  /* Überschrift und Kontaktliste links, die Knöpfe rechts. Ohne die
     ausdrückliche Zuweisung füllt das Raster vorwärts, und der Knopf
     landete unter der Liste statt neben ihr. */
  .nrv-shop-bestellen > .wp-block-heading,
  .nrv-shop-bestellen > p,
  .nrv-shop-bestellen > .nrv-shop-kontaktliste {
    grid-column: 1;
  }

  .nrv-shop-bestellen > .wp-block-buttons {
    grid-column: 2;
    grid-row: 1 / span 99;
    align-self: center;
    flex-direction: column;
    align-items: stretch;
  }
}

/* 67.3 Kennzahl statt Abschnittskopf ------------------------------------

   `Shop-Clubkollektion.dc.html` stellt links in den Lieferzeit-Abschnitt
   keine Überschrift, sondern eine Kennzahl („Lieferzeit · 6 · Wochen,
   bis zu"). Die Überschrift gehört dann in die breite Spalte rechts.

   Abschnitt 58 schickt dorthin nur `p, ul, ol, blockquote, h3, h4` – ein
   `h2` steht normalerweise in der Kopfspalte und bekäme sonst die volle
   Breite. Trägt die Kopfspalte eine Kennzahl, ist das umgekehrt.         */

@media (min-width: 900px) {
  .wp-block-group[class*="-abschnitt"] > .nrv-kopfspalte.nrv-kennzahl ~ .wp-block-heading {
    grid-column: 2;
  }
}

.nrv-kopfspalte.nrv-kennzahl > * { margin-block: 0; }
.nrv-kopfspalte.nrv-kennzahl .nrv-kennzahl-wert { line-height: 1.05; }
.nrv-kopfspalte.nrv-kennzahl .nrv-kennzahl-text {
  font-size: 0.8125rem;
  line-height: 1.5;
  color: var(--wp--preset--color--grau);
  margin-block-start: 0.5rem;
}

/* 67.4 Kartentitel der Rechtskarten mobil -------------------------------

   `.nrv-rechts-karte h3` stand auf 1.4375 rem (23 px) ohne mobilen Wert;
   die Spezifikation nennt für Kartentitel mobil 20–22 px. Drei Titel auf
   `/clubkollektion/` fielen dadurch durch die Prüfung.

   Zum dritten Mal derselbe eigene Fehler: **Jede feste Größe braucht
   beide Werte.** Gemessen wird deshalb immer auch bei 390 px.           */

@media (max-width: 782px) {
  .nrv-rechts-karte h3 { font-size: 1.3125rem; }
}

/* 67.5 Zweispaltige Abschnitte mit Bild oder Kasten ----------------------

   `NRV-Teams.dc.html` und `Clubity-Mitgliederportal.dc.html` stellen den
   Förder- bzw. App-Abschnitt zweispaltig: links Text, rechts ein Motiv.

   Der getönte Abschnitt (`nrv-ueber-grau`) läuft sonst über die 5/7-Regel
   aus Abschnitt 58. Hier sind es zwei gleich breite Spalten, und der
   ganze Textteil gehört links – deshalb eine eigene Zuweisung statt des
   Kopfspalten-Musters.                                                   */

@media (min-width: 900px) {
  .nrv-zweispalt.wp-block-group {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: center;
    column-gap: clamp(2.5rem, 5vw, 5rem);
    /*
     * **`row-gap` muss 0 sein**, weil die zweite Spalte über alle Zeilen
     * spannt (`span 99`, die Zahl der linken Kinder steht nicht fest) und
     * eine Spanne über implizite Zeilen deren Fugen mitzieht. Mit den
     * geerbten 1,25 rem aus Abschnitt 58 wurde der Block über 2.000 px
     * hoch. Dieselbe Falle wie im Shop-Kontaktmodul (67.2) – beim zweiten
     * Mal am selben Tag.
     */
    row-gap: 0;
  }

  .nrv-zweispalt > *:not(.nrv-zweispalt-kasten):not(.nrv-zweispalt-medien) + *:not(.nrv-zweispalt-kasten):not(.nrv-zweispalt-medien) {
    margin-block-start: 1.25rem;
  }

  /* Alles außer der zweiten Spalte steht links. Ohne diese Zuweisung
     schickt Abschnitt 58 nur `p` und `h3/h4` in Spalte 2 und verteilt
     den Rest über die volle Breite. */
  .nrv-zweispalt > *:not(.nrv-zweispalt-kasten):not(.nrv-zweispalt-medien) {
    grid-column: 1;
  }

  .nrv-zweispalt > .nrv-zweispalt-kasten,
  .nrv-zweispalt > .nrv-zweispalt-medien {
    grid-column: 2;
    grid-row: 1 / span 99;
    align-self: center;
  }

  /* Mehrere Motive untereinander in der rechten Spalte. */
  .nrv-zweispalt-medien > * { margin-block: 0; }
  .nrv-zweispalt-medien > * + * { margin-block-start: 1rem; }
}

/*
 * **Die Bilder werden nicht beschnitten.** Mehrere Motive im Bestand
 * tragen den Urhebervermerk eingebrannt; ein fester Ausschnitt schnitte
 * ihn weg – dieselbe Entscheidung wie beim Clubhausbild auf
 * `/ueber-uns/`.
 */
.nrv-zweispalt-medien img { width: 100%; height: auto; display: block; }

.nrv-zweispalt-kasten {
  background-color: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
  padding: 1.75rem 2rem;
}

.nrv-zweispalt-kasten > * { margin-block: 0; }
.nrv-zweispalt-kasten > * + * { margin-block-start: 0.875rem; }

/* 67.6 Klickfläche der Teamkarten-Titel ----------------------------------

   Die sieben Titel auf `/nrv-teams/` sind der einzige Weg in die
   Teamseiten und waren mobil **27 px** hoch – deutlich unter den 44 px,
   die ein Finger braucht. Gefunden hat es `mobil-pruefen.js`, nicht der
   Augenschein.

   Die Fläche wächst über den Innenabstand, das Layout bleibt über einen
   gleich großen negativen Außenabstand unverändert – dieselbe Technik
   wie bei der Hover-Fläche der Menüpunkte.                              */

.nrv-teamkarte-titel a {
  display: inline-block;
  padding-block: 0.625rem;
  margin-block: -0.625rem;
}

/* ==========================================================================
   68. Presse, Jobs und Kurzmitgliedschaft nach den Artboards (v3.50)
   ========================================================================== */

/* 68.1 Der generische Zweispalter -----------------------------------------

   Drei Seiten brauchen dasselbe: zwei Spalten mit gemessenen Verhältnissen
   aus ihrem Artboard. Statt je Seite ein eigenes Raster trägt der Container
   die Klasse `nrv-pjk` und die Rollenklasse bestimmt das Verhältnis.

   **Die Spalten sind eigene Gruppen, keine Zellenzuweisung.** Die Zahl der
   Absätze je Seite steht nicht fest (1 bis 3); feste `grid-area`-Angaben
   wären dieselbe Falle wie bei der Zeitleiste (v2.6.2) und beim
   5/7-Abschnittskopf. Zwei Kinder lösen das ohne Spannerei – und damit
   entfällt auch der `span 99`-Kniff samt seiner Fugenfalle (67.2).        */

.nrv-pjk.wp-block-group {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  column-gap: clamp(2.5rem, 6vw, 6rem);
  row-gap: 1.5rem;
  align-items: start;
  margin-block: var(--nrv-abschnitt-abstand, 6.5rem) 0;
}

.nrv-pjk > * { margin-block: 0; }
.nrv-pjk > * > * { margin-block: 0; }
.nrv-pjk > * > * + * { margin-block-start: 1rem; }

@media (min-width: 900px) {
  /* Artboard Presse: Einleitung 7, Pressekontakt 5. */
  .nrv-presse-einstieg.wp-block-group,
  .nrv-presse-mitteilungen-kopf.wp-block-group {
    grid-template-columns: 7fr 5fr;
  }

  /* Artboard Jobs und Kurzmitgliedschaft: Leitsatz 5, Fließtext 7. */
  .nrv-jobs-einstieg.wp-block-group,
  .nrv-jobs-raum.wp-block-group,
  .nrv-kurz-einstieg.wp-block-group,
  .nrv-kurz-kontakt.wp-block-group {
    grid-template-columns: 5fr 7fr;
  }
}

/* Der Leitsatz steht größer als der Fließtext daneben – so zeigen es die
   Artboards von Jobs und Kurzmitgliedschaft. Die Größe entspricht dem
   Lead-Baustein (Abschnitt 64), damit nicht eine zweite Skala entsteht. */
.nrv-jobs-einstieg > .nrv-pjk-a > p,
.nrv-kurz-einstieg > .nrv-pjk-a > p {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.5625rem;
  font-weight: 500;
  line-height: 1.22;
}

@media (max-width: 782px) {
  .nrv-jobs-einstieg > .nrv-pjk-a > p,
  .nrv-kurz-einstieg > .nrv-pjk-a > p { font-size: 1.3125rem; }
}

/* 68.2 Vier Merkmale in vier Spalten --------------------------------------

   `Jobs.dc.html` setzt die vier Karten nebeneinander; das Theme kannte für
   `nrv-visual-raster` bisher nur zwei und drei Spalten.                   */

.nrv-visual-raster-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

@media (max-width: 1100px) {
  .nrv-visual-raster-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
  .nrv-visual-raster-4 { grid-template-columns: minmax(0, 1fr); }
}

/* 68.3 Die Stellenkarte: Beschreibung links, Weg rechts --------------------

   Artboard `9/3`. Der Knopf steht rechts oben auf Höhe des Titels, nicht
   unter dem Text – bei mehreren Stellen bleibt die Spalte so eine Reihe.  */

@media (min-width: 900px) {
  .nrv-stelle {
    display: grid;
    grid-template-columns: 9fr 3fr;
    column-gap: clamp(2rem, 4vw, 3.5rem);
    row-gap: 0;
    align-items: start;
  }

  .nrv-stelle > * { margin-block: 0; grid-column: 1; }
  .nrv-stelle > * + * { margin-block-start: 0.75rem; }

  .nrv-stelle > .nrv-cta {
    grid-column: 2;
    grid-row: 1;
    margin-block-start: 0;
  }
}

/* 68.4 Die Liste der Pressemitteilungen -----------------------------------

   Artboard: Datum (2), Rubrik und Titel (9), „Lesen" (1), Trennlinie oben
   an jeder Zeile. Der Block ist eine `core/query` auf das Schlagwort
   „Pressemitteilung" – **dynamisch, nicht als festes Markup**: Eine von
   Hand gepflegte Liste steht nach Monaten falsch da, wie die Terminreihe
   der Startseite im September (v2.7.1).                                   */

.nrv-pm { margin-block: 2rem 0; }
.nrv-pm-liste { list-style: none; padding-left: 0; margin: 0; max-width: none; }
.nrv-pm-liste > li { margin: 0; }

.nrv-pm-zeile {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0.5rem;
  padding-block: 1.25rem;
  border-top: 1px solid var(--wp--preset--color--linie);
}

.nrv-pm-liste > li:last-child .nrv-pm-zeile {
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

.nrv-pm-zeile > * { margin-block: 0; }

@media (min-width: 900px) {
  .nrv-pm-zeile {
    grid-template-columns: 2fr 9fr 1fr;
    column-gap: clamp(1.5rem, 3vw, 2.5rem);
    align-items: start;
  }
}

.nrv-pm-datum {
  font-size: 0.875rem;
  color: var(--wp--preset--color--grau);
  font-variant-numeric: tabular-nums;
}

.nrv-pm-mitte > * { margin-block: 0; }
.nrv-pm-mitte > * + * { margin-block-start: 0.375rem; }

.nrv-pm-titel { font-size: 1.4375rem; line-height: 1.22; }
.nrv-pm-titel a { text-decoration: none; }
.nrv-pm-titel a:hover,
.nrv-pm-titel a:focus-visible { text-decoration: underline; }

@media (max-width: 782px) {
  .nrv-pm-titel { font-size: 1.3125rem; }
}

/* `core/read-more` rendert ein <a> ohne Wrapper – die Klasse sitzt direkt
   am Link, nicht an einem Absatz wie bei den übrigen `nrv-cta`.

   Die Klickfläche wächst über den Innenabstand auf die 44 px, die ein
   Finger braucht; ein gleich großer negativer Außenabstand hält das
   Layout. Dieselbe Technik wie bei den Teamkarten-Titeln (67.6) – der
   Mobilprüfer hatte 58 × 23 px gemeldet. */
a.nrv-pm-lesen {
  display: inline-block;
  white-space: nowrap;
  padding-block: 0.65rem;
  margin-block: -0.65rem;
}

.nrv-pm-archiv { margin-block: 1.5rem 0; }

/* ==========================================================================
   69. Newsletter, Clubheft, Terminkalender und Erfolge (v3.54)
   ========================================================================== */

/* 69.1 Weitere Rollen am Zweispalter --------------------------------------

   Der Container aus Abschnitt 68 trägt auch diese fünf Seiten; nur das
   Verhältnis kommt je Rolle dazu. Gemessen aus den Artboards.           */

@media (min-width: 900px) {
  /* Text links breit, Karte oder Verweise rechts schmal. */
  .nrv-ch-produktion-zwei.wp-block-group,
  .nrv-tk-kopf.wp-block-group,
  .nrv-erf-abschluss.wp-block-group {
    grid-template-columns: 7fr 5fr;
  }

  /* Leitsatz links schmal, Fließtext rechts. */
  .nrv-nl-einstieg.wp-block-group,
  .nrv-nl-abo.wp-block-group {
    grid-template-columns: 5fr 7fr;
  }

  /* Der Knopf steht rechts auf Höhe des Titels, nicht darunter. */
  .nrv-nl-abo > .nrv-pjk-b { align-self: center; }

  /* Die Verweise des Abschlussblocks stehen untereinander, nicht
     nebeneinander – so zeigt es `Erfolge.dc.html`. */
  .nrv-erf-abschluss > .nrv-pjk-b { align-self: end; }
  .nrv-erf-abschluss > .nrv-pjk-b > * + * { margin-block-start: 0.75rem; }
}

/* 69.2 Die fünf Newsletter-Rubriken ---------------------------------------

   `Newsletter.dc.html` stellt sie in **fünf** Spalten: Ziffer, Kicker in
   Versalien, Beschreibung, getrennt durch eine Linie oben. Im Bestand
   standen sie als zehn Absätze untereinander.

   Fünf feste Spalten, keine `auto-fit`: Die Zahl steht fest, und eine
   leere Zelle mit Trennlinie sähe nach Fehler aus – der Befund von der
   H.E.A.T-Crew (v2.16.6).                                               */

.nrv-nl-rubriken {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: clamp(1.25rem, 2.5vw, 2rem);
  margin-block: 2rem 0;
}

.nrv-nl-rubriken > * { margin-block: 0; }

.nrv-nl-rubrik {
  border-top: 2px solid var(--wp--preset--color--navy);
  padding-block-start: 1rem;
}

.nrv-nl-rubrik > * { margin-block: 0; }
.nrv-nl-rubrik > * + * { margin-block-start: 0.5rem; }

.nrv-nl-ziffer {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 1.1;
  color: var(--wp--preset--color--akzent);
}

/* Der Rubriktitel steht im Bestand als `core/heading` in Versalien, nicht
   als Absatz – mein erster Selektor (`p:nth-child(2)`) griff deshalb ins
   Leere, und die Titel standen in Überschriftengröße in 230 px schmalen
   Spalten („COMMUNIT / Y"). Gesehen hat das der Bildschirmabzug; die
   Rastermessung meldete fünf saubere Spalten.

   Der Selektor nennt jetzt die Position, nicht das Element. */
.nrv-nl-rubrik > :nth-child(2) {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  line-height: 1.3;
  text-transform: uppercase;
  color: var(--wp--preset--color--akzent);
  hyphens: auto;
}

.nrv-nl-rubrik > :nth-child(3) {
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--wp--preset--color--grau);
}

@media (max-width: 1100px) {
  .nrv-nl-rubriken { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 700px) {
  .nrv-nl-rubriken { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 430px) {
  .nrv-nl-rubriken { grid-template-columns: minmax(0, 1fr); }
}

/* ==========================================================================
   70. Kursangebot: Merkmalszeilen (v3.55)
   ========================================================================== */

/*
 * `Kursangebot.dc.html` setzt unter jede Kursbeschreibung Zeilen aus
 * Label und Wert im Verhältnis `4fr 8fr`, getrennt durch feine Linien.
 * Die Kursmodule selbst sind der Bild-Text-Baustein (Abschnitt 34.1).
 */

.nrv-kurs-merkmale { margin-block-start: 1.5rem; }

.nrv-kurs-zeile {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0.25rem;
  padding-block: 0.75rem;
  border-top: 1px solid var(--wp--preset--color--linie);
}

.nrv-kurs-merkmale > :last-child {
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

.nrv-kurs-zeile > * { margin-block: 0; }

@media (min-width: 700px) {
  .nrv-kurs-zeile {
    grid-template-columns: 4fr 8fr;
    column-gap: clamp(1rem, 2vw, 1.75rem);
    align-items: baseline;
  }
}

.nrv-kurs-zeile > p:not(.nrv-label) {
  font-size: 0.9375rem;
  line-height: 1.55;
}

/* ==========================================================================
   71. Teamseiten nach den Artboards (v3.56.0)

   Drei Bausteine, aus den Entwürfen der vier Teamseiten gemessen:

   * **Einstieg** – links ein Leitsatz, rechts Fließtext. `5fr 7fr`, 96 px
     Fuge. Steht in 14 von 56 Artboards und ist damit kein Sonderfall
     dieser vier Seiten.
   * **Kaderliste** – je Zeile Bootsklasse links (200 px), Namen rechts im
     Umbruch. Trennlinie oben an jeder Zeile.
   * **Felderraster** – die Zellen tragen eine Trennlinie links, der
     Container eine kräftige Oberkante in Navy und eine feine Unterkante.
     Das ist dieselbe Form wie die Kennzahlenleiste; das alte
     `.nrv-stufen`-Gitter mit 1 px Fuge auf grauem Grund ist darauf
     umgestellt – es war der letzte Rest des Hairline-Rasters, das am
     13.10.2026 aufgegeben wurde.
   ========================================================================== */

/* --- Einstieg ------------------------------------------------------------ */

.nrv-einstieg.wp-block-group {
  display: grid;
  grid-template-columns: 5fr 7fr;
  gap: clamp(2rem, 6vw, 6rem);
  align-items: start;
  margin-block: clamp(2.5rem, 5vw, 4rem);
  padding-block-start: clamp(2rem, 4vw, 3.25rem);
  border-top: 1px solid var(--wp--preset--color--linie);
}

.nrv-einstieg > * { margin-block: 0; }

/* Der Leitsatz trägt `nrv-lead`: Der Entwurf setzt ihn auf 26 px Cormorant,
   die Typografie-Spezifikation führt dieselbe Rolle mit 25 px. Eine eigene
   Größe wäre ein zweiter Wert für dieselbe Sache. */
.nrv-einstieg > :first-child > .nrv-lead { margin-block: 0; }

.nrv-einstieg > :last-child > * + * { margin-block-start: 1.125rem; }

@media (max-width: 782px) {
  .nrv-einstieg.wp-block-group {
    grid-template-columns: 1fr;
    gap: 1.25rem;
  }
}

/* --- Kaderliste ---------------------------------------------------------- */

.nrv-kader > * { margin-block: 0; }

.nrv-kader-kopf > * { margin-block: 0; }
.nrv-kader-kopf .nrv-abschnitt-titel { margin-block-start: 0.4rem; }

.nrv-kader-liste {
  margin-block-start: clamp(1.5rem, 3vw, 2.5rem);
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

.nrv-kader-zeile.wp-block-group {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr);
  gap: 2rem;
  padding-block: 1.375rem;
  border-top: 1px solid var(--wp--preset--color--linie);
  margin-block: 0;
}

.nrv-kader-zeile > * { margin-block: 0; }
.nrv-kader-zeile > .nrv-label { padding-block-start: 0.375rem; }

.nrv-kader-namen.wp-block-group {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.75rem;
}

.nrv-kader-name {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.3125rem;
  font-weight: 600;
  line-height: 1.2;
  margin-block: 0 !important;
}

/* Unter 600 px steht die Bootsklasse über den Namen – 200 px Beschriftung
   neben 170 px Namen wäre in beiden Spalten zu eng. */
@media (max-width: 600px) {
  .nrv-kader-zeile.wp-block-group {
    grid-template-columns: 1fr;
    gap: 0.625rem;
  }
  .nrv-kader-zeile > .nrv-label { padding-block-start: 0; }
}

/* --- Felderraster -------------------------------------------------------- */

.nrv-teamstufen > * { margin-block: 0; }
.nrv-teamstufen > :first-child > * { margin-block: 0; }
.nrv-teamstufen > :first-child .nrv-abschnitt-titel { margin-block-start: 0.4rem; }
.nrv-teamstufen > :first-child .nrv-lead { margin-block-start: 0.875rem; max-width: 47.5rem; }

/* Die Felder selbst: der Entwurf setzt Navy oben, Linie unten, Trennlinien
   links – **keine Fugen auf grauem Grund.** */
.nrv-stufen,
.nrv-teamstufen [class*="nrv-stufen-raster"] {
  display: grid;
  gap: 0;
  background: none;
  border: 0;
  border-top: 1px solid var(--wp--preset--color--navy);
  border-bottom: 1px solid var(--wp--preset--color--linie);
  margin-block: clamp(1.5rem, 3vw, 2.5rem);
}

.nrv-teamstufen [class*="nrv-stufen-raster"] { margin-block-start: clamp(1.5rem, 3vw, 2.5rem); }

/* Die Spaltenzahl folgt der Zahl der Felder. `auto-fit` legt bei genug
   Platz mehr Spalten an, als es Felder gibt – dann steht eine leere Zelle
   mit Trennlinie da. Derselbe Befund wie bei der H.E.A.T-Crew. */
.nrv-stufen,
.nrv-teamstufen [class*="nrv-stufen-raster"] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
/* **Die Ausnahmen brauchen mindestens die Spezifität der Grundregel.**
   `.nrv-teamstufen [class*="nrv-stufen-raster"]` sind zwei Klassen,
   `.nrv-stufen-raster-4` ist eine – die Vierer standen deshalb in drei
   Spalten. Zum wiederholten Mal dieselbe Stelle. */
.nrv-stufen:has( > :last-child:nth-child(2) ),
.nrv-teamstufen .nrv-stufen-raster-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.nrv-stufen:has( > :last-child:nth-child(4) ),
.nrv-teamstufen .nrv-stufen-raster-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.nrv-stufen:has( > :last-child:nth-child(5) ),
.nrv-teamstufen .nrv-stufen-raster-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

.nrv-stufe {
  background: none;
  padding: 2rem 1.625rem 2.125rem;
  border-left: 1px solid var(--wp--preset--color--linie);
  gap: 0.875rem;
}

.nrv-stufe:first-child {
  padding-left: 0;
  border-left: 0;
}

/* Unter 900 px zwei Spalten, unter 600 eine. Die erste Zelle jeder Reihe
   verliert ihre Trennlinie – `:first-child` allein reicht dafür nicht. */
@media (max-width: 900px) {
  .nrv-stufen,
  .nrv-teamstufen [class*="nrv-stufen-raster"],
  .nrv-stufen:has( > :last-child:nth-child(4) ),
  .nrv-teamstufen .nrv-stufen-raster-4,
  .nrv-stufen:has( > :last-child:nth-child(5) ),
  .nrv-teamstufen .nrv-stufen-raster-5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nrv-stufe { padding-inline: 1.25rem; }
  .nrv-stufe:nth-child(odd) { padding-left: 0; border-left: 0; }
}

@media (max-width: 600px) {
  .nrv-stufen,
  .nrv-teamstufen [class*="nrv-stufen-raster"],
  .nrv-stufen:has( > :last-child:nth-child(2) ),
  .nrv-teamstufen .nrv-stufen-raster-2,
  .nrv-stufen:has( > :last-child:nth-child(4) ),
  .nrv-teamstufen .nrv-stufen-raster-4,
  .nrv-stufen:has( > :last-child:nth-child(5) ),
  .nrv-teamstufen .nrv-stufen-raster-5 { grid-template-columns: 1fr; }
  .nrv-stufe {
    padding-inline: 0;
    border-left: 0;
    border-top: 1px solid var(--wp--preset--color--linie);
    padding-block: 1.5rem;
  }
  .nrv-stufe:first-child { border-top: 0; }
}

/* ==========================================================================
   72. Olympia, Nachhaltigkeit und Reviere nach den Artboards (v3.57.0)

   Zwei allgemeine Rollen für den Zweispalter aus Abschnitt 68, damit nicht
   für jede Seite eine eigene Klasse entsteht – das war der Fehler, aus dem
   die elf Bausteine hervorgegangen sind.
   ========================================================================== */

@media (min-width: 900px) {
  .nrv-pjk-5-7.wp-block-group { grid-template-columns: 5fr 7fr; }
  .nrv-pjk-7-5.wp-block-group { grid-template-columns: 7fr 5fr; }
}

/* --- Olympia: Athletenraster fünfspaltig --------------------------------- */

/*
 * Der Olympia-Artboard setzt `repeat(5, …)`. **Als Modifier, nicht global:**
 * `nrv-personenraster` steht auf acht Seiten, und mein erster Versuch hat
 * die Regel pauschal gesetzt – damit sprangen `/geschaeftsstelle/` von 0 auf
 * 5 fehlende Rasterblöcke und `/gelebte-inklusion-…/` von 0 auf 2, weil dort
 * aus Dreierrastern Fünferraster wurden.
 *
 * **Wer eine Baustein-Klasse nach dem Artboard einer Seite ändert, prüft die
 * anderen sieben.** Die Gesamtmessung hat es gezeigt, der Augenschein auf
 * der geänderten Seite nicht.
 */
@media (min-width: 1100px) {
  .nrv-personenraster-breit {
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 2.5rem 1.5rem;
  }
}

/* Der Film steht links, der Hinweis rechts – die Einbettung bringt ihre
   eigene Ausrichtungsklasse mit und muss in der Spalte bleiben. */
.nrv-pjk-7-5 .wp-block-embed.alignwide {
  max-width: 100%;
  margin-inline: 0;
}

/* --- Nachhaltigkeit ------------------------------------------------------ */

/* Die Charta trägt links das Bild. Die Fläche des alten Kastens entfällt –
   der Entwurf trennt mit Linien, nicht mit Flächen. */
.nrv-charta.nrv-pjk { background: none; padding: 0; border: 0; }
.nrv-charta .nrv-pjk-a img { width: 100%; height: auto; display: block; }

/* --- Reviere: die sechs Anforderungen ------------------------------------ */

.nrv-anforderungen > * { margin-block: 0; }
.nrv-anforderungen { margin-block: clamp(2rem, 4vw, 3rem); }
.nrv-anforderungen .nrv-label { margin-block-end: 0.75rem; }

/* Sechs Felder in drei Spalten: zwei volle Reihen. Die erste Zelle jeder
   Reihe verliert ihre Trennlinie – `:first-child` allein reicht dafür
   nicht, das ist der Befund aus Abschnitt 71. */
.nrv-anforderungen-raster .nrv-stufe:nth-child(3n+1) {
  padding-left: 0;
  border-left: 0;
}
.nrv-anforderungen-raster .nrv-stufe:nth-child(n+4) {
  border-top: 1px solid var(--wp--preset--color--linie);
}

@media (max-width: 900px) {
  .nrv-anforderungen-raster .nrv-stufe:nth-child(3n+1) {
    padding-left: 1.25rem;
    border-left: 1px solid var(--wp--preset--color--linie);
  }
  .nrv-anforderungen-raster .nrv-stufe:nth-child(odd) { padding-left: 0; border-left: 0; }
  .nrv-anforderungen-raster .nrv-stufe:nth-child(n+3) {
    border-top: 1px solid var(--wp--preset--color--linie);
  }
}

/* --- Drei Korrekturen, die beim Messen auffielen (v3.57.1) --------------- */

/*
 * `nrv-zweispalt` setzte `grid-template-columns`, aber **kein
 * `display: grid`** – das kam bisher aus den Modulregeln der Shop-Seiten,
 * die den Container mitbenennen. Auf `/olympia-team/` stand der Block
 * deshalb als `display: block` mit zwei untereinander liegenden Kindern,
 * und die Rastermessung meldete ihn gar nicht.
 *
 * **Eine Rasterangabe ohne `display: grid` ist wirkungslos und fällt im
 * Augenschein nicht auf**, solange zwei Blöcke untereinander auch
 * plausibel aussehen.
 */
@media (min-width: 900px) {
  .nrv-zweispalt.wp-block-group { display: grid; }
}

/*
 * Das Felderraster aus Abschnitt 71 war an `.nrv-teamstufen` gebunden –
 * dort stand es zuerst. Außerhalb dieses Containers greift nur die
 * Grundregel, und drei oder sechs Felder landeten in drei festen Spalten
 * ohne Raster. Die Spaltenzahl gehört an die Klasse, nicht an den
 * Elternteil.
 */
[class*="nrv-stufen-raster"] {
  display: grid;
  gap: 0;
  background: none;
  border: 0;
  border-top: 1px solid var(--wp--preset--color--navy);
  border-bottom: 1px solid var(--wp--preset--color--linie);
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.nrv-stufen-raster-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.nrv-stufen-raster-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.nrv-stufen-raster-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.nrv-stufen-raster-6 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

@media (max-width: 900px) {
  [class*="nrv-stufen-raster"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
  [class*="nrv-stufen-raster"] { grid-template-columns: 1fr; }
}

/*
 * Die vier Fragen der Nachhaltigkeitsseite: Der Entwurf setzt sie
 * vierspaltig mit Trennlinien – bei uns standen sie zweispaltig im
 * Hairline-Gitter (1 px Fuge auf grauem Grund), dem letzten Rest des am
 * 13.10.2026 aufgegebenen Rasters.
 */
.nrv-fragen {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  background: none;
  border: 0;
  border-top: 1px solid var(--wp--preset--color--navy);
  border-bottom: 1px solid var(--wp--preset--color--linie);
}

.nrv-frage {
  background: none;
  padding: 2rem 1.625rem 2.125rem;
  border-left: 1px solid var(--wp--preset--color--linie);
}

.nrv-frage:first-child { padding-left: 0; border-left: 0; }

@media (max-width: 1000px) {
  .nrv-fragen { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nrv-frage:nth-child(odd) { padding-left: 0; border-left: 0; }
  .nrv-frage:nth-child(n+3) { border-top: 1px solid var(--wp--preset--color--linie); }
}
@media (max-width: 600px) {
  .nrv-fragen { grid-template-columns: 1fr; }
  .nrv-frage {
    padding-inline: 0;
    border-left: 0;
    border-top: 1px solid var(--wp--preset--color--linie);
  }
  .nrv-frage:first-child { border-top: 0; }
}

/* ==========================================================================
   73. Rechtstexte zweispaltig (v3.58.0)

   Alle vier Artboards (AGB, Datenschutz, Impressum, Widerruf) setzen
   `320px minmax(0, 760px)` mit 120 px Fuge: links eine Sprungnavigation,
   rechts der Text. Bei 31.700 Zeichen Datenschutzerklärung ist das kein
   Schmuck, sondern der Unterschied zwischen benutzbar und nicht.
   ========================================================================== */

.nrv-rechtstext.wp-block-group {
  display: grid;
  grid-template-columns: 320px minmax(0, 760px);
  gap: clamp(2.5rem, 8vw, 7.5rem);
  align-items: start;
  margin-block: var(--nrv-abschnitt-abstand, 6.5rem) 0;
}

.nrv-rechtstext > * { margin-block: 0; }

/* Die Navigation läuft mit, solange der Text scrollt. Der Versatz ist die
   Höhe des klebenden Kopfes. */
.nrv-rn-nav {
  position: sticky;
  top: calc(var(--nrv-kopf-platz, 137px) + 1.5rem);
  border-top: 1px solid var(--wp--preset--color--navy);
  padding-block-start: 1.25rem;
}

.nrv-rn-nav > * { margin-block: 0; }
.nrv-rn-nav .nrv-label { margin-block-end: 0.875rem; }

.nrv-rn-ziel {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  padding-block: 0.375rem;
  font-size: 0.875rem;
  line-height: 1.45;
  margin-block: 0 !important;
}

.nrv-rn-nr { color: var(--wp--preset--color--grau); }

.nrv-rn-ziel a {
  color: var(--wp--preset--color--navy);
  text-decoration: none;
}

.nrv-rn-ziel a:hover,
.nrv-rn-ziel a:focus-visible { text-decoration: underline; }

/* Die Abschnitte bekommen Luft und eine Trennlinie – ein Rechtstext ohne
   sichtbare Gliederung liest sich als eine Wand. */
.nrv-rn-text > * { margin-block: 0; }
.nrv-rn-text h2 {
  margin-block: clamp(2rem, 4vw, 3rem) 0.75rem;
  padding-block-start: clamp(1.5rem, 3vw, 2rem);
  border-top: 1px solid var(--wp--preset--color--linie);
  scroll-margin-top: calc(var(--nrv-kopf-platz, 137px) + 1.5rem);
}
.nrv-rn-text h2:first-child { margin-block-start: 0; padding-block-start: 0; border-top: 0; }
.nrv-rn-text p + p { margin-block-start: 0.875rem; }

/* Unter 1000 px steht die Navigation über dem Text und klebt nicht – eine
   klebende Leiste nähme auf dem Telefon den halben Schirm. */
@media (max-width: 1000px) {
  .nrv-rechtstext.wp-block-group {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
  .nrv-rn-nav { position: static; }
}

/* ==========================================================================
   74. Zeitleisten-Tafeln und Barrierefrei-Wasserabschnitt (v3.59.0)

   Beides aus den Artboards. Die Tafeln stehen in den beiden Zwischen-
   stationen der Geschichtsseite und verdichten, was in den Stationen 2003
   und 2007 als Fließtext steht – der Entwurf zeigt ausdrücklich beides.

   Die Flächen sind weiß mit Linie, nicht getönt: Das Farbkonzept vom
   15.10.2026 trennt über Linien (2.774 Vorkommen) und nicht über Flächen (2).
   ========================================================================== */

.nrv-zeit-tafel {
  display: grid;
  margin-block: 1.5rem 0;
}

/* blockGap liefert `> * + * { margin-block-start }` – im Grid verschiebt das
   die zweite Spalte nach unten. Derselbe Befund wie beim News-Raster. */
.nrv-zeit-tafel > * { margin-block: 0; }

/* Vier Zellen ohne Fuge: Die gemeinsame Kante ist die Linie. */
.nrv-zeit-tafel-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
}

.nrv-zeit-tafel-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
}

.nrv-zeit-zelle {
  padding: 1.75rem 1.5rem;
  background-color: var(--wp--preset--color--weiss);
  border: 1px solid var(--wp--preset--color--linie);
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.nrv-zeit-zelle > * { margin-block: 0; }

.nrv-zeit-zelle-wert {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.5rem;
  font-weight: 600;
  line-height: 1.2;
}

/* Die beiden langen Aufzählungen brauchen eine Stufe weniger, sonst
   brechen sie in der 1fr-Spalte auf vier Zeilen um. */
.nrv-zeit-tafel-4 .nrv-zeit-zelle:nth-child(2) .nrv-zeit-zelle-wert,
.nrv-zeit-tafel-4 .nrv-zeit-zelle:nth-child(4) .nrv-zeit-zelle-wert {
  font-size: 1.3125rem;
  line-height: 1.25;
}

.nrv-zeit-zelle-zusatz {
  font-size: 0.8125rem;
  color: var(--wp--preset--color--navy);
}

/* --- Offshore: zwei Karten mit Zahlenzeile ------------------------------- */

.nrv-zeit-karte {
  border: 1px solid var(--wp--preset--color--linie);
  padding: 2rem;
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
}

.nrv-zeit-karte > * { margin-block: 0; }

.nrv-zeit-karte-jahr {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 2.125rem;
  line-height: 1.1;
  color: var(--wp--preset--color--navy);
}

.nrv-zeit-karte-titel {
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.3;
}

.nrv-zeit-karte-fuss { font-size: 0.8125rem; }

.nrv-zeit-zahlen {
  display: grid;
  gap: 0.75rem;
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block-start: 1rem;
}

.nrv-zeit-zahlen > * { margin-block: 0; }
.nrv-zeit-zahlen-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.nrv-zeit-zahlen-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.nrv-zeit-zahl > * { margin-block: 0; }

.nrv-zeit-zahl-wert {
  font-family: var(--wp--preset--font-family--cormorant-garamond);
  font-size: 1.625rem;
  line-height: 1.15;
  color: var(--wp--preset--color--navy);
}

.nrv-zeit-zahl-label {
  font-size: 0.75rem;
  line-height: 1.35;
  color: var(--wp--preset--color--grau);
}

/* --- Barrierefrei: Bild neben Text --------------------------------------- */

.nrv-bf-wasser.wp-block-group {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(2rem, 4vw, 3.5rem);
  align-items: center;
  margin-block: clamp(3rem, 6vw, 6.5rem) 0;
}

.nrv-bf-wasser > * { margin-block: 0; }

.nrv-bf-bild figure,
.nrv-bf-bild img { margin: 0; display: block; }

/* Zwei Klassen gegen WordPress' `.wp-block-image img { height: auto }`. */
.nrv-bf-bild.nrv-bf-bild img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  aspect-ratio: 3 / 2;
}

.nrv-bf-text {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.nrv-bf-text > * { margin-block: 0; }

@media (max-width: 860px) {
  .nrv-zeit-tafel-4,
  .nrv-zeit-tafel-2 { grid-template-columns: 1fr; }
  .nrv-zeit-tafel-4 { gap: 0; }
  .nrv-zeit-tafel-4 .nrv-zeit-zelle + .nrv-zeit-zelle { border-block-start: 0; }
  .nrv-bf-wasser.wp-block-group { grid-template-columns: 1fr; }
}

/* In der Zeitleistenspalte bleiben auf dem Telefon 273 px. Davon gehen die
   Innenabstände ab: Bei 2 rem stand „ILCA · 420er · RS Toura …“ in 223 px bei
   21 px Schrift – Verhältnis 10,6 und damit unter der Grenze von 11. Und drei
   Zahlen nebeneinander ergaben 61 px je Spalte, in denen „Seemeilen“ umbricht. */
@media (max-width: 600px) {
  .nrv-zeit-zelle { padding: 1.25rem; }
  .nrv-zeit-karte { padding: 1.25rem; }
  .nrv-zeit-zelle-wert,
  .nrv-zeit-tafel-4 .nrv-zeit-zelle:nth-child(2) .nrv-zeit-zelle-wert,
  .nrv-zeit-tafel-4 .nrv-zeit-zelle:nth-child(4) .nrv-zeit-zelle-wert {
    font-size: 1.25rem;
  }
  .nrv-zeit-zahlen-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Die beiden Zwischenstationen führen keine Bildspalte: Ihr Inhalt darf
   deshalb über Text- und Bildspalte laufen, sonst stünde die Vierertafel in
   579 px und jede Zelle auf 145 px. Der Fließtext bleibt auf Lesebreite – die
   Station selbst behält ihr Raster, die Zeitleiste misst sich unverändert. */
.nrv-zeit-thema > .nrv-zeit-inhalt { grid-column: 2 / -1; }
.nrv-zeit-thema > .nrv-zeit-inhalt > :is(p, h2, h3, ul, ol) { max-width: 40rem; }

@media (max-width: 860px) {
  .nrv-zeit-thema > .nrv-zeit-inhalt { grid-column: auto; }
}

/* ==========================================================================
   75. Namensliste und Spaltenpaar (v3.60.0)

   Zwei Module aus Block 4 des Nachtlaufs.
   ========================================================================== */

/*
 * Die zwölf Wettfahrtleiterinnen und Wettfahrtleiter standen als `nrv-chips`
 * in einer Reihe – das liest sich wie eine Schlagwortwolke. Der Artboard
 * „Regatten“ setzt sie zweispaltig untereinander, und das ist richtig: Eine
 * Mannschaft ist eine Liste, keine Auswahl von Begriffen.
 *
 * `.entry-content :where(ul, ol)` begrenzt Listen auf 66ch für die
 * Zeilenlänge – dieselbe Falle wie bei der Clubliste auf /partnerclubs/
 * (v2.41.3). Hier ist es keine Zeilenlänge, sondern ein Raster.
 */
.entry-content .nrv-namensliste,
.nrv-namensliste {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 2.5rem;
  max-width: none;
  margin: 1.25rem 0 0;
  padding: 0;
  list-style: none;
}

.nrv-namensliste > li {
  margin: 0;
  padding: 0.5rem 0;
  border-block-start: 1px solid var(--wp--preset--color--linie);
  font-size: 0.9375rem;
  /* 1.6 nach der Spezifikation – bei einzeiligen Namen fällt es nicht auf,
     aber die Prüfung misst Listen als Fließtext, und das ist richtig so. */
  line-height: 1.6;
}

.nrv-namensliste > li::marker { content: none; }

/* --- Zwei Abschnitte nebeneinander --------------------------------------- */

/*
 * Auf /partnerclubs/ stellt der Entwurf „International Council of Yacht
 * Clubs“ und „Zu Gast in einem Partnerclub“ nebeneinander (628/628). Beide
 * sind eigene Abschnitte und behalten ihr Markup; nur die Hülle ist neu.
 */
.nrv-pc-paar.wp-block-group {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(2rem, 4vw, 3rem);
  align-items: start;
}

.nrv-pc-paar > * { margin-block: 0; }

/*
 * In der halben Breite hat ein 5/7-Kopf keinen Platz: 628 px auf 5 und 7
 * Zwölftel ergäbe 262 px für die Überschrift. Die Spalten stapeln ihren
 * Kopf deshalb, wie es der Entwurf dort auch tut.
 */
.nrv-pc-spalte [class*="-abschnitt"].wp-block-group {
  display: block;
  /* Die Spaltenangabe gehört mit zurückgenommen, sonst steht eine
     Deklaration da, die nicht wirkt – genau das meldet
     `nrvRasterWirkungslos()` seit dem 28.10.2026, und zu Recht. */
  grid-template-columns: none;
  margin-block: 0;
}

.nrv-pc-spalte [class*="-abschnitt"] > * { grid-column: auto; }

@media (max-width: 860px) {
  .nrv-pc-paar.wp-block-group { grid-template-columns: 1fr; }
  .entry-content .nrv-namensliste,
  .nrv-namensliste { grid-template-columns: 1fr; }
}

/*
 * Die Ergebnisbox auf dem Telefon (v3.60.2).
 *
 * Das Muster stammt aus v1.9.4 und war nie mobil gemessen – es stand in
 * keinem der Mobil-Durchläufe. Bei 390 px bleiben der Zeile 258 px, davon
 * 35 für den Rang und 27 für die Punkte: Der Name steht dann in 163 px bei
 * 18 px Schrift (Verhältnis 9) und bricht in Ein-Wort-Zeilen, die Zeile
 * wächst auf 196 px Höhe.
 *
 * Die Punkte rücken deshalb unter den Club. **Die Zellenzuweisungen müssen
 * dafür ausdrücklich neu gesetzt werden** – eine geänderte Spaltenzahl
 * allein hebt ein `grid-area` nicht auf, das ist der Befund von der
 * Zeitleiste (v2.6.2) und von „Weitere Meldungen“ (v2.36.1).
 */
@media (max-width: 600px) {
  .nrv-ergebnis-zeile {
    grid-template-columns: 2.2rem minmax(0, 1fr);
    grid-template-rows: auto auto auto;
  }
  .nrv-ergebnis-rang   { grid-area: 1 / 1 / 4 / 2; }
  .nrv-ergebnis-name   { grid-area: 1 / 2 / 2 / 3; }
  .nrv-ergebnis-club   { grid-area: 2 / 2 / 3 / 3; }
  .nrv-ergebnis-punkte { grid-area: 3 / 2 / 4 / 3; }
}

/* ==========================================================================
   76. Login-Zugänge, Partnerlogos und Ansprechblock (v3.61.0)
   ========================================================================== */

/*
 * Der Artboard „Login“ stellt die Zugänge 01 und 02 nebeneinander (628/628);
 * 03 bleibt einzeilig und dreispaltig. Beide Karten behalten ihr Markup.
 */
.nrv-zugang-paar.wp-block-group {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(1.5rem, 3vw, 2.5rem);
  align-items: start;
}

.nrv-zugang-paar > * { margin-block: 0; }

/*
 * 03 · Intern steht im Entwurf als 480/480/192: Kopf, Text, Aktion. Die
 * Zuweisung ist ausdrücklich, weil die Zahl der Absätze nicht feststeht –
 * das Auto-Placement würde den Knopf sonst in die nächste Zeile schieben.
 */
.nrv-zugang-intern.wp-block-group {
  display: grid;
  grid-template-columns: 5fr 5fr 2fr;
  gap: clamp(1.5rem, 3vw, 2.5rem);
  align-items: start;
}

.nrv-zugang-intern > * { margin-block: 0; }
.nrv-zugang-mitte > *,
.nrv-zugang-aktion > * { margin-block: 0; }
.nrv-zugang-aktion { display: flex; flex-direction: column; gap: 0.5rem; }

/* --- Partnerlogos: sechs Spalten, Linien statt Fugen --------------------- */

/*
 * `auto-fit` legte bei 1165 px **sieben** Spalten an – bei 18 Logos bleibt
 * die letzte Reihe dann halb leer. Der Artboard setzt sechs, und 18 geht
 * durch 6 auf. Dieselbe Entscheidung wie bei der H.E.A.T-Crew (v2.16.6):
 * Steht die Zahl der Elemente fest, gehört die Spaltenzahl fest gesetzt.
 *
 * Dazu war das hier noch das **Hairline-Gitter** (1 px Fuge auf
 * Linienfarbe), das am 13.10.2026 aufgegeben wurde – derselbe Rest wie bei
 * den Kennzahlen und `.nrv-stufen`.
 */
.nrv-logos {
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 0;
  background: none;
}

.nrv-logos > * {
  border-inline-end: 1px solid var(--wp--preset--color--linie);
  border-block-end: 1px solid var(--wp--preset--color--linie);
}

.nrv-logos > :nth-child(6n) { border-inline-end: 0; }

/* --- Ansprechblock zweispaltig ------------------------------------------- */

.nrv-ansprech {
  display: grid;
  grid-template-columns: 7fr 5fr;
  gap: clamp(1.5rem, 3vw, 2.5rem);
  align-items: start;
}

.nrv-ansprech-person > * { margin-block: 0; }

@media (max-width: 860px) {
  .nrv-zugang-paar.wp-block-group,
  .nrv-zugang-intern.wp-block-group,
  .nrv-ansprech { grid-template-columns: 1fr; }
  .nrv-logos { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .nrv-logos > :nth-child(6n) { border-inline-end: 1px solid var(--wp--preset--color--linie); }
  .nrv-logos > :nth-child(3n) { border-inline-end: 0; }
}

/*
 * Unter 600 px zwei Spalten: Bei dreien bleiben 110 px je Logo, und das
 * Mobilskript meldet jedes Raster mit mehr als zwei Spalten. Neun Reihen
 * sind lang, aber lesbar – drei Spalten sind es nicht mehr.
 */
@media (max-width: 600px) {
  .nrv-logos { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nrv-logos > :nth-child(3n) { border-inline-end: 1px solid var(--wp--preset--color--linie); }
  .nrv-logos > :nth-child(2n) { border-inline-end: 0; }

  /*
   * Die Wegweiser-Tabelle auf /login/ ist der Hauptzweck der Seite: „Wählen
   * Sie Ihr Anliegen, der passende Zugang steht daneben.“ Ihre Links sind
   * die eigentlichen Ziele und brauchen deshalb die 44 px Klickfläche –
   * anders als die Brotkrumen, bei denen der Weg zurück auch über die
   * Navigation führt.
   */
  .nrv-wegweiser-tabelle a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }
}

/*
 * Die drei Angaben der Team-Event-Anfrage (v3.62.1).
 *
 * Der Artboard stellt „Wunschtermin · Ungefähre Personenzahl · Gewünschtes
 * Format“ nebeneinander (624 px auf drei Felder). Es bleibt eine Liste –
 * sie ist kein Formular, sondern eine Aufzählung dessen, was in die Mail
 * gehört; das Formular selbst ist bewusst nicht gebaut (Plugin-Entscheidung).
 *
 * `.entry-content :where(ul, ol)` begrenzt Listen auf 66ch für die
 * Zeilenlänge – hier ist es ein Raster, zum dritten Mal dieselbe Falle.
 */
.entry-content .nrv-anfrage-felder,
.nrv-anfrage-felder {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0 1.5rem;
  max-width: none;
  margin: 1rem 0 0;
  padding: 0;
  list-style: none;
}

.nrv-anfrage-felder > li {
  margin: 0;
  padding: 0.5rem 0;
  border-block-start: 1px solid var(--wp--preset--color--linie);
  font-size: 0.9375rem;
  line-height: 1.6;
}

.nrv-anfrage-felder > li::marker { content: none; }

@media (max-width: 600px) {
  .entry-content .nrv-anfrage-felder,
  .nrv-anfrage-felder { grid-template-columns: 1fr; }
}


/* ==========================================================================
   77. Kalenderzeile der Newsübersicht (v3.63.0)
   ========================================================================== */

/* `News-Uebersicht.dc.html` setzt den Terminabschnitt als `3fr 9fr`: links
   Kicker, Überschrift und „Alle Termine", rechts die Karten. Gemessen im
   Entwurf 308 / 924 px bei 1280 px Rasterbreite.

   **Dabei ist ein Fehler weggefallen, der seit v2.15.3 ausgeliefert wurde.**
   Auf `/news/` stand über der Terminreihe erst „NRV Kalender" aus
   `home.html` und direkt darunter „Nächste Termine" aus `parts/termine.html`
   – zwei Abschnittsüberschriften für dieselbe Liste. Keine meiner Prüfungen
   hat das gemeldet: Es sind zwei *verschiedene* Texte, also keine Dublette,
   und die Strukturprüfung sieht nur, was fehlt.

   Der Template-Part ist deshalb auf `/news/` nicht mehr eingebunden; dort
   steht der Block `nrv/naechste-termine` unmittelbar in der rechten Spalte.
   `parts/termine.html` bleibt unverändert und trägt weiterhin die
   Startseite – eine Änderung am Part hätte sie mitgenommen. */
.nrv-kalenderzeile {
  display: grid;
  grid-template-columns: 3fr 9fr;
  gap: var(--wp--preset--spacing--weit);
  align-items: start;
  margin-block: var(--wp--preset--spacing--sektion) 0;
}

.nrv-kalenderzeile > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-kalenderzeile-kopf > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-kalenderzeile-kopf .nrv-label { margin-block: 0 0.5rem; }

.nrv-kalenderzeile-kopf .nrv-cta { margin-block: 1rem 0; }

/* Der Block bringt seinen eigenen oberen Abstand mit, weil er sonst unter
   einem Sektionskopf steht. In der Zeile beginnt er auf derselben Höhe wie
   die Überschrift daneben. */
.nrv-kalenderzeile .nrv-terminreihe { margin-block: 0; }

@media (max-width: 1000px) {
  .nrv-kalenderzeile {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--wp--preset--spacing--eng);
  }
}


/* ==========================================================================
   78. Archiv mit Facettenspalte (v3.65.0)
   ========================================================================== */

/* `News-Archiv.dc.html` setzt das Archiv als `300px 924px`: links die
   Facetten, rechts die Trefferliste; jede Trefferzeile für sich wieder
   `240px 656px` – Bild links, Text rechts.

   Das ist Jasmines Punkt aus dem Abgleich vom 26.10.2026: „acht Facetten in
   einer linken Spalte" statt in Auswahlfeldern versteckt. Bis v3.64 stand
   der Filter als Formularkasten über der Liste, und die Liste selbst war
   das gewichtete Magazinraster der Newsübersicht – auf einem Archiv, wo man
   scannt und nicht kuratiert liest, die falsche Form. */
.nrv-archiv {
  display: grid;
  grid-template-columns: 300px minmax(0, 1fr);
  gap: 3.5rem;
  align-items: start;
}

.nrv-archiv > * { margin-block: 0; margin-inline: 0; max-width: none; }

/* --- Die Facettenspalte --- */

.nrv-facetten {
  display: flex;
  flex-direction: column;
  margin: 0;
}

.nrv-facette {
  border: 0;
  border-top: 1px solid var(--wp--preset--color--linie);
  margin: 0;
  padding: 1rem 0;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.nrv-facette-kopf {
  font-family: var(--wp--preset--font-family--manrope);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--wp--preset--color--navy);
  padding: 0;
  margin-block-end: 0.25rem;
}

/* 36 px Zeilenhöhe wie im Entwurf. Das Label ist die Klickfläche – deshalb
   wird es gemessen und nicht der Auswahlknopf darin (v3.63.1). */
.nrv-facette-wert {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  min-height: 44px;
  font-size: 0.875rem;
  line-height: 1.3;
  color: var(--wp--preset--color--navy);
  cursor: pointer;
}

.nrv-facette-wert input {
  width: 18px;
  height: 18px;
  accent-color: var(--wp--preset--color--navy);
  margin: 0;
  flex: 0 0 auto;
}

.nrv-facette-name { flex-grow: 1; }

.nrv-facette-zahl {
  font-size: 0.75rem;
  color: var(--wp--preset--color--grau);
  flex: 0 0 auto;
}

.nrv-facetten-knoepfe {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem;
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block-start: 1rem;
}

/* --- Kopfzeile der Trefferliste --- */

.nrv-trefferkopf {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem 1.5rem;
  border-block-end: 1px solid var(--wp--preset--color--linie);
  padding-block-end: 0.75rem;
  margin-block-end: 1.5rem;
}

.nrv-trefferkopf > * { margin: 0; }

.nrv-trefferkopf-aktiv {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}

.nrv-chip {
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  padding: 0 0.75rem;
  border: 1px solid var(--wp--preset--color--linie-kraeftig);
  font-size: 0.8125rem;
  text-decoration: none;
  color: var(--wp--preset--color--navy);
}

.nrv-chip:hover,
.nrv-chip:focus-visible {
  border-color: var(--wp--preset--color--navy);
}

.nrv-trefferkopf-zahl {
  font-size: 0.875rem;
  color: var(--wp--preset--color--grau);
}

/* --- Die Trefferzeilen --- */

.nrv-archivliste {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
}

.nrv-archivliste > li {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: 1.75rem;
  align-items: start;
  margin: 0;
  padding-block: 1.75rem;
  border-block-end: 1px solid var(--wp--preset--color--linie);
}

.nrv-archivliste > li:first-child { padding-block-start: 0; }

.nrv-archivliste > li > * { margin-block: 0; }

.nrv-archivliste .nrv-news-bild {
  grid-column: 1;
  grid-row: 1 / -1;
}

.nrv-archivliste .nrv-news-bild img {
  aspect-ratio: 3 / 2;
  object-fit: cover;
  width: 100%;
  height: auto;
}

.nrv-archivliste .nrv-karte {
  grid-column: 2;
  padding: 0;
  background-color: transparent;
}

/* Dieselben Werte wie bei den Kartentiteln der Newsübersicht (Abschnitt 56):
   Die Spezifikation nennt 23–26 px bei 500–600. Die Regel dort hängt an
   `.nrv-newsraster` und greift auf dem Archiv nicht mehr, seit die Liste
   `nrv-archivliste` heißt – gemeldet hat das die Typografieprüfung mit
   „21 px / 700" auf allen drei Archivarten. */
.nrv-archivliste .nrv-news-titel {
  font-size: clamp(1.3125rem, 1.6vw, 1.4375rem);
  font-weight: 600;
  line-height: 1.14;
  margin-block: 0.375rem 0.5rem;
}

.nrv-archivliste .wp-block-post-excerpt {
  font-size: 0.9375rem;
  line-height: 1.6;
  margin-block: 0 0.5rem;
}

/* --- Schmalere Fenster --- */

@media (max-width: 1000px) {
  .nrv-archiv {
    grid-template-columns: minmax(0, 1fr);
    gap: 2rem;
  }
}

@media (max-width: 600px) {
  .nrv-archivliste > li {
    grid-template-columns: 96px minmax(0, 1fr);
    gap: 1rem;
  }
  .nrv-archivliste .nrv-news-titel { font-size: 1.3125rem; }
  .nrv-archivliste .wp-block-post-excerpt { display: none; }
}


/* ==========================================================================
   79. Kontakt nach dem Artboard (v3.66.0)
   ========================================================================== */

/* `Main.dc.html` setzt den Seitenkopf als `600px 600px`: links Kicker,
   Überschrift und Lead, rechts die Geschäftsstelle als Karte. Bis v3.65
   stand die Geschäftsstelle als eigener Abschnitt darunter. */
.nrv-kopf-zweispalt {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--wp--preset--spacing--weit);
  align-items: start;
}

.nrv-kopf-zweispalt > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-kopf-links > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-kopf-zweispalt .nrv-geschaeftsstelle { margin-block-end: 0; }

/* Zwei Spalten, nicht `auto-fit`: Die Zahl der Blöcke steht fest (Adresse,
   Zeiten), und `auto-fit` legt in der schmalen Kopfspalte sonst eine einzige
   an. Derselbe Befund wie bei der H.E.A.T-Crew (v2.16.6). */
.nrv-gs-raster {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
}

.nrv-gs-aktionen {
  margin-block-start: 1.5rem;
  padding-block-start: 1.25rem;
  border-top: 1px solid var(--wp--preset--color--linie);
}

.nrv-gs-aktionen > * { margin-block: 0 0.5rem; }

/* Die sechs Barrierefrei-Punkte stehen im Entwurf zweispaltig (`243px 243px`),
   nicht dreispaltig – die Karte ist nur halb so breit wie der Seiteninhalt. */
.entry-content .nrv-barriere-liste,
.nrv-barriere-liste {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.25rem 1.5rem;
  max-width: none;
  list-style: none;
  padding-inline: 0;
  margin-block: 0.5rem;
}

.nrv-barriere-liste > li { margin: 0; }
.nrv-barriere-liste > li::marker { content: none; }

/* Restaurant: Bild links, Text rechts. Die dunkle Fläche liegt dadurch auf
   der Textspalte statt auf dem ganzen Block – sonst stünde das Bild in einem
   Navy-Rahmen, den der Entwurf nicht kennt. */
.nrv-restaurant-raster {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
  background: none;
  padding: 0;
  align-items: stretch;
}

.nrv-restaurant-raster > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-restaurant-bild { height: 100%; }

.nrv-restaurant-bild img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.nrv-restaurant-text {
  background: var(--wp--preset--color--navy);
  color: var(--wp--preset--color--weiss);
  padding: 2.5rem 2rem;
}

.nrv-restaurant-text > * { margin-block: 0 0.75rem; max-width: 52ch; }

/* Die drei Wege zu den Menschen im Club als Karten, wie im Entwurf
   (`411px` je Spalte). */
.nrv-menschen-karten {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.5rem;
  margin-block-start: 1.25rem;
}

.nrv-menschen-karten > * { margin-block: 0; }

/* 94 px wie im Entwurf (`411 × 94`). Ohne die Mindesthöhe steht die Karte
   auf der Zeilenhöhe ihres Verweises – 40 px, also eine Linie mit Text
   daneben statt einer Karte. */
.nrv-menschen-karte {
  display: flex;
  align-items: center;
  min-height: 94px;
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block: 1rem;
}

.nrv-menschen-karte > * { margin-block: 0; }

@media (max-width: 1000px) {
  .nrv-kopf-zweispalt,
  .nrv-restaurant-raster {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--wp--preset--spacing--eng);
  }
  .nrv-menschen-karten { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
  .nrv-gs-raster,
  .entry-content .nrv-barriere-liste,
  .nrv-barriere-liste,
  .nrv-menschen-karten { grid-template-columns: minmax(0, 1fr); }
  .nrv-restaurant-text { padding-inline: 1.25rem; }
}


/* ==========================================================================
   80. Angabenpaare (v3.67.0)
   ========================================================================== */

/* Beschriftung und Wert in zwei Spalten, wie `Inklusion.dc.html` die vier
   Angaben zum BAT Sailing Team setzt (429 × 164). Vorher stand dort eine
   `core/table` mit der Kopfzeile „Angabe | Stand" – zwei Wörter, die nichts
   aussagen, und ein Tabellenkopf, den der Entwurf nicht kennt. */
.nrv-paare {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.25rem 2.5rem;
  margin-block: 1.5rem;
}

.nrv-paare > * { margin-block: 0; }

.nrv-paar {
  border-top: 1px solid var(--wp--preset--color--linie);
  padding-block-start: 0.75rem;
}

.nrv-paar > * { margin-block: 0; }

.nrv-paar .nrv-label { margin-block-end: 0.25rem; }

.nrv-paar-wert {
  font-size: 0.9375rem;
  line-height: 1.5;
  max-width: none;
}

@media (max-width: 600px) {
  .nrv-paare { grid-template-columns: minmax(0, 1fr); }
}


/* ==========================================================================
   81. Externe Anlaufstellen im Kinderschutz (v3.68.0)
   ========================================================================== */

/* `Kinderschutz.dc.html` setzt jede externe Stelle als Zeile `388px 277px`
   in einer 690-px-Spalte – also `7fr 5fr`: Name und Bereich links, Telefon
   und Mail rechts. Bei uns standen sie als gestapelte Personenkarten.

   **Die Zeilen standen bis zum 29.10.2026 zweimal auf der Seite**: hier
   unter „Unabhängige Beratung" und noch einmal als Tabelle am Seitenende,
   die `abschnitte-setzen.php` am 19.10. angelegt hatte, ohne zu prüfen, ob
   der Inhalt schon dasteht. Der Artboard kennt sie genau einmal. */
.nrv-ks-extern .nrv-personenkarte {
  display: grid;
  grid-template-columns: 7fr 5fr;
  gap: 0.25rem 1.5rem;
  align-items: start;
}

.nrv-ks-extern .nrv-personenkarte > * { margin-block: 0; }

.nrv-ks-extern .nrv-personenkarte-name,
.nrv-ks-extern .nrv-ks-rolle { grid-column: 1; }

.nrv-ks-extern .nrv-personenkarte-kontakt {
  grid-column: 2;
  grid-row: 1 / span 2;
}

@media (max-width: 782px) {
  .nrv-ks-extern .nrv-personenkarte {
    grid-template-columns: minmax(0, 1fr);
  }
  .nrv-ks-extern .nrv-personenkarte-name,
  .nrv-ks-extern .nrv-ks-rolle,
  .nrv-ks-extern .nrv-personenkarte-kontakt {
    grid-column: 1;
    grid-row: auto;
  }
}


/* ==========================================================================
   82. Seitenspalte der Suche (v3.69.0)
   ========================================================================== */

/* `Suche.dc.html` setzt die Suchseite als `884px 300px` bei 1440 px, also
   `9fr 3fr`: links Suchfeld, Trefferzahl und Liste, rechts ein Kasten
   „Häufig gesucht" und ein Hinweis auf die Geschäftsstelle.

   **Der Such-Artboard kennt keine Facetten** – anders als das Archiv, wo
   sie seit v3.65 links stehen. Das Filterformular über der Liste bleibt
   deshalb, wo es ist; die Spalte daneben trägt die sechs meistgesuchten
   Ziele. */
.nrv-suchraster {
  display: grid;
  grid-template-columns: minmax(0, 9fr) minmax(0, 3fr);
  gap: 3.5rem;
  align-items: start;
}

.nrv-suchraster > * { margin-block: 0; margin-inline: 0; max-width: none; }

.nrv-suchinhalt > * { margin-inline: 0; max-width: none; }

.nrv-suchspalte {
  display: flex;
  flex-direction: column;
  gap: 2rem;
  position: sticky;
  top: calc(var(--nrv-kopf-platz, 140px) + 1.5rem);
}

.nrv-suchspalte > * { margin-block: 0; }

.nrv-suchhaeufig,
.nrv-suchhilfe-kasten {
  border-top: 1px solid var(--wp--preset--color--navy);
  padding-block-start: 1rem;
}

.nrv-suchhaeufig > *,
.nrv-suchhilfe-kasten > * { margin-block: 0; }

.nrv-suchhaeufig .nrv-label,
.nrv-suchhilfe-kasten .nrv-label { margin-block-end: 0.75rem; }

.entry-content .nrv-suchhaeufig-liste,
.nrv-suchhaeufig-liste {
  list-style: none;
  padding-inline: 0;
  margin: 0;
  max-width: none;
}

.nrv-suchhaeufig-liste > li {
  margin: 0;
  border-block-end: 1px solid var(--wp--preset--color--linie);
}

.nrv-suchhaeufig-liste > li::marker { content: none; }

/* 44 px Klickfläche: In einer Spalte mit sechs Verweisen untereinander ist
   das der Unterschied zwischen Treffen und Danebentippen. */
.nrv-suchhaeufig-liste a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  min-height: 44px;
  font-size: 0.9375rem;
  text-decoration: none;
  color: var(--wp--preset--color--navy);
}

.nrv-suchhaeufig-liste a::after {
  content: "→";
  color: var(--wp--preset--color--grau);
}

.nrv-suchhaeufig-liste a:hover,
.nrv-suchhaeufig-liste a:focus-visible { text-decoration: underline; }

.nrv-suchhilfe-kasten p { font-size: 0.9375rem; line-height: 1.6; }
.nrv-suchhilfe-kasten .nrv-cta { margin-block-start: 0.75rem; }

@media (max-width: 1000px) {
  .nrv-suchraster {
    grid-template-columns: minmax(0, 1fr);
    gap: 2.5rem;
  }
  .nrv-suchspalte { position: static; }
}
