/* ============================================================
   blusana.de — Layout für alle Seiten · Gebr. Lenz GmbH

   Aufbau:
    1. Schriften
    2. Farben
    3. Schriftbild
    4. Grundgerüst
    5. Kopfzeile mit Navigation
    6. Leiste unter der Navigation
    7. Hero (mit Video: 7.1)
    8. Abschnittstypen
    9. Nach-oben-Knopf
   10. Footer
   11. Barrierefreiheit und Druck
   ============================================================ */


/* ------------------------------------------------------------
   1. SCHRIFTEN

   Hanken Grotesk  Ueberschriften
   DM Sans         Fliesstext, Navigation, Knoepfe (3 Schnitte)

   Lokal in fonts/, SIL Open Font License.
   ------------------------------------------------------------ */


@font-face {
  font-family: "Hanken Grotesk";
  src: url("fonts/HankenGrotesk-latin.woff2") format("woff2");
  font-weight: 400 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "DM Sans";
  src: url("fonts/DMSans-latin.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "DM Sans";
  src: url("fonts/DMSans-latin-medium.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "DM Sans";
  src: url("fonts/DMSans-latin-bold.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}


/* ------------------------------------------------------------
   2. FARBEN

   Nicht jede Flaeche vertraegt jede Schrift. Noetig sind 4,5:1.

   Geprüfte Paare (Fläche + Schrift darauf):
     #404F1D Grün      + #FFFFFF   9,0:1  ✓
     #5A6B33 Grün hell + #FFFFFF   5,9:1  ✓
     #2C3618 Dunkel    + #FAF7F1  12,8:1  ✓
     #573F2A Braun     + #FFFFFF   9,8:1  ✓
     #573F2A Braun     + #D8B25F   4,9:1  ✓  (Gold als Schrift)
     #E3E8D5 Mint      + #404F1D   7,2:1  ✓
     #F4EDE6 Sand      + #404F1D   8,4:1  ✓
     #E4EDDF Himmel    + #404F1D   8,0:1  ✓
     #EFE2CB Gold hell + #404F1D   7,1:1  ✓
     #D9BC8C Gold tief + #404F1D   4,9:1  ✓  (dunkelstes Ende
                                               des Verlaufs)
     #8F4A0A Orange    + #FFFFFF   6,0:1  ✓

   NUR SCHMUCK, niemals Text darauf oder daraus:
     #7C914C Oliv hell   (Weiß darauf nur 3,5:1)
     #D8B25F Gold        (auf Weiß nur 2,0:1)
   Als Schriftfarbe auf Hell gibt es dafür #7A5A12 Gold dunkel
   mit 6,4:1.
   ------------------------------------------------------------ */

:root {
  /* ---- Farbwerte. Die Bedeutung steht hinter jeder Variable. ---- */

  --gruen:        #404F1D;   /* Marke: Schrift, Knöpfe, Footer   9,0:1 auf Weiß */
  --gruen-hell:   #5A6B33;   /* Fläche mit weißer Schrift        5,9:1 */
  --dunkel:       #2C3618;   /* sehr dunkle Fläche              12,8:1 */
  --oliv-hell:    #7C914C;   /* NUR Schmuckfläche — für Text zu schwach */

  --mint:         #E3E8D5;   /* helle Grünfläche                 7,2:1 mit --gruen */
  --mintweiss:    #FAF7F1;   /* sehr helle Fläche, warm */
  --sand:         #F4EDE6;   /* warmer Grundton */
  --himmel:       #E4EDDF;   /* zweite helle Fläche */

  /* ---- Hydroponik-Blau: nur für das Thema Hydroponik ---- */
  --blau:         #232E65;   /* dunkle Fläche, weiße Schrift    12,7:1 */
  --blau-mittel:  #1E7AB9;   /* Akzent                           4,6:1 */
  --blau-hell:    #DEE4F1;   /* helle Fläche, Blau als Schrift  10,0:1 */
  --braun:        #573F2A;   /* Erdton, Fläche mit heller Schrift 9,8:1 */
  --gold:         #D8B25F;   /* NUR Schmuck + Schrift auf Braun */
  --gold-hell:    #EFE2CB;   /* helle warme Fläche */
  --gold-tief:    #D9BC8C;   /* Verlaufsende, noch texttauglich */
  --gold-dunkel:  #7A5A12;   /* Gold als Schrift auf Hell      6,4:1 */

  /* Goldverlauf: hell oben rechts, satter nach unten links */
  --verlauf-gold: linear-gradient(205deg, #F3E9D8 0%, #EFE2CB 38%, #D9BC8C 100%);
  --orange:       #8F4A0A;   /* Akzent, mit weißer Schrift       6,0:1 */
  --orange-hell:  #B4611A;
  --orange-dunkel:#7A3E08;

  --weiss:        #FFFFFF;
  --text:         #33372C;
  --text-leise:   #6B6F60;
  --linienfarbe:  #DDE2D0;

  /* Maße */
  --innen:       1180px;
  --lesebreite:   830px;
  --rand:         clamp(1.25rem, 5vw, 4rem);

  --radius:        15px;
  --radius-klein:  12px;
  --radius-knopf:  14px;
  --linie:         1px solid var(--linienfarbe);
}

*, *::before, *::after { box-sizing: border-box; }

/* [hidden] muss gegen jede eigene display-Regel gewinnen */
[hidden] { display: none !important; }

html { scroll-padding-top: 6rem; }

body {
  margin: 0;
  font-family: "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  font-size: 1rem;           /* 16 px */
  line-height: 1.5625;       /* Zeilenhöhe 25/16 */
  color: var(--text);
  background: var(--weiss);
  -webkit-text-size-adjust: 100%;
}


/* ------------------------------------------------------------
   3. SCHRIFTBILD

     Auszeichnungszeile  16 px / 400 / 22 px, gesperrt
     grosse Ueberschrift 56 px / 400 / 53 px
     Einleitung          20 px / 400 / 24 px
     Zwischenueberschr.  24 px / 400 / 38 px, in Markengruen
     Fliesstext          16 px / 400 / 25 px
     Textbreite          830 px
   ------------------------------------------------------------ */

h1, h2, h3, h4, .probe-h1 {
  font-family: "Hanken Grotesk", "DM Sans", system-ui, sans-serif;
  font-weight: 400;
  margin: 0 0 .5em;
  text-wrap: balance;
}

/* Grosse Ueberschrift: Zeilenhoehe knapp unter der Schriftgroesse */
h1, .probe-h1 {
  font-size: clamp(2.25rem, 1.5rem + 2.6vw, 3.5rem);   /* bis 56 px */
  line-height: .96;
  letter-spacing: -.02em;
  color: var(--dunkel);
}

h2 {
  font-size: clamp(1.9rem, 1.4rem + 1.8vw, 2.75rem);   /* bis 44 px */
  line-height: 1.06;
  letter-spacing: -.018em;
  color: var(--dunkel);
  margin-top: 1.4em;
}

/* Zwischenueberschrift: 24 px in Markengruen */
h3 {
  font-size: 1.5rem;                                    /* 24 px */
  line-height: 1.58;
  color: var(--gruen);
  margin-top: 1.8em;
}

h4 {
  font-size: 1.25rem;                                   /* 20 px */
  line-height: 1.55;
  font-weight: 500;
  color: var(--gruen);
  margin-top: 1.5em;
}

h2:first-child, h3:first-child, h4:first-child { margin-top: 0; }

/* Auszeichnungszeile ueber einer Ueberschrift. Beide bilden
   einen Block: der Abstand der Ueberschrift nach oben faellt weg. */
.ueberzeile + h1,
.ueberzeile + h2,
.ueberzeile + h3,
.ueberzeile + h4 { margin-top: 0; }

/* Die Zeile kann auch IN der Ueberschrift stehen:

     <h1><span class="ueberzeile">Blusana Dünger</span>
         Optimierte Nährstoffe für starkes Wachstum</h1>

   Eigene Zeile, Schrift des Fliesstexts. */
h1 > .ueberzeile,
h2 > .ueberzeile,
h3 > .ueberzeile {
  display: block;
  font-family: "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
}

.ueberzeile {
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.4;
  letter-spacing: .095em;
  text-transform: uppercase;
  color: var(--text-leise);
  margin: 0 0 1.1em;
}

/* Einleitung unter der grossen Ueberschrift */
.vorspann {
  font-size: 1.25rem;                                   /* 20 px */
  line-height: 1.35;
  letter-spacing: -.02em;
  color: var(--dunkel);
  max-width: 30em;
}

p { margin: 0 0 1.3em; }
p:last-child { margin-bottom: 0; }

a {
  color: var(--gruen);
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}
a:hover { color: var(--gruen-hell); }

/* Links nach draussen tragen einen Pfeil am Ende — so wie bisher auf
   blusana.de. Erkannt werden sie an der vollen Adresse: interne Links
   sind relativ, externe beginnen mit http. Knoepfe und die Symbol-Links
   im Fuss bleiben ohne Pfeil, dort traegt die Form die Aussage. */
a[href^="http"]::after {
  content: "\2197";                                    /* Pfeil nach rechts oben */
  margin-left: .25em;
  font-size: .85em;
  line-height: 1;
  text-decoration: none;
}
.knopf[href^="http"]::after,
.fuss__social a[href^="http"]::after,
.mitglieder__liste a[href^="http"]::after { content: none; }

ul, ol { margin: 0 0 1.3em; padding-left: 1.3em; }
li { margin-bottom: .5em; }

img { max-width: 100%; height: auto; }
strong { font-weight: 700; }

hr { border: 0; border-top: var(--linie); margin: 2.5rem 0; }


/* Zitatkasten */
.zitat {
  background: var(--mintweiss);
  border-radius: 20px;
  padding: clamp(2rem, 5vw, 4rem);
  margin: 2.5rem 0;
}

.zitat p {
  font-size: 1rem;
  line-height: 1.4;
  letter-spacing: -.025em;
  color: var(--dunkel);
  max-width: 34em;
}

.zitat footer {
  margin-top: 1.5rem;
  font-size: 1rem;
  color: var(--text-leise);
}


/* ------------------------------------------------------------
   4. GRUNDGERÜST

   „Band"       Streifen über die volle Fensterbreite
   „Innen"      der Inhalt darin, zentriert und begrenzt
   „Lesebreite" schmaler, für Fließtext
   ------------------------------------------------------------ */

/* Abstand ober- und unterhalb jedes Bandes */
.band { padding: clamp(2.75rem, 5vw, 4.5rem) 0; }
.band--weiss      { background: var(--weiss); }
.band--creme      { background: var(--sand); }
.band--creme-hell { background: var(--mintweiss); }
.band--mintweiss  { background: var(--mintweiss); }
.band--dunkel     { background: var(--dunkel); color: var(--mintweiss); }
.band--salbei     { background: var(--mint); }
.band--gruen      { background: var(--gruen); }
.band--tiefgruen  { background: var(--gruen); }
.band--gold       { background: var(--gold-hell); }

/* Erdwelt: Das Goldband gehoert zu den Substraten. Der Knopf erbt
   sonst das Marken-Gruen aus 8.6 und faellt aus der Farbfamilie —
   die Koernungs-Knoepfe in den Reitern darunter sind orange. */
.band--gold .knopf { background: var(--orange); color: var(--weiss); }
.band--gold .knopf:hover,
.band--gold .knopf:focus-visible { background: var(--orange-dunkel); color: var(--weiss); }
.band--verlauf    { background: var(--verlauf-gold); }

/* Auszeichnungszeile auf dem Goldverlauf: Braun
   (8,2:1 am hellen, 5,4:1 am dunklen Ende) */
.band--verlauf .ueberzeile,
.split.welt--gold .ueberzeile { color: var(--braun); }

.innen {
  max-width: var(--innen);
  margin: 0 auto;
  padding: 0 var(--rand);
}

.lesebreite { max-width: calc(var(--lesebreite) + 2 * var(--rand)); }

/* Zentrierter Abschnittskopf */
.kopf-mitte { text-align: center; max-width: 44rem; margin: 0 auto clamp(2.5rem, 5vw, 3.5rem); }
.kopf-mitte .vorspann { margin-inline: auto; }

.hinweis-fehlt {
  padding: 1rem 1.2rem;
  background: #FBF3DC;
  border-left: 4px solid #C79A18;
}


/* ------------------------------------------------------------
   5. KOPFZEILE MIT NAVIGATION

   Aufbau:  Logo  |  Menue mittig  |  Knopf + dezenter Link
   Aktiver Menuepunkt: gruen und kraeftiger, ohne Unterstrich.
   ------------------------------------------------------------ */

/* Kopfzeile und Leiste im selben Offweiss, getrennt durch eine
   feine Linie; unten schliesst die goldene Linie ab. */
.kopfzeile {
  background: var(--mintweiss);
  border-bottom: var(--linie);
  position: sticky;
  top: 0;
  z-index: 50;
}

.kopfzeile__innen {
  max-width: 1660px;
  display: flex;

  /* An der Schriftlinie ausgerichtet: die Grundlinie der
     Menuepunkte sitzt auf der Unterkante des Logo-Schriftzugs. */
  align-items: baseline;
  gap: clamp(1.5rem, 3vw, 3rem);
  padding-top: 1.1rem;
  padding-bottom: 1.1rem;
  position: relative;
}

.kopfzeile__logo { display: block; line-height: 0; flex: 0 0 auto; }
.kopfzeile__logo img { width: clamp(150px, 15vw, 205px); height: auto; }


/* ---- Menue ---- */

.navi { flex: 1 1 auto; display: flex; justify-content: center; }

.navi__liste {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: clamp(1rem, 2.2vw, 2.5rem);     /* 40 px */
  list-style: none;
  margin: 0;
  padding: 0;
}

.navi__liste > li { position: relative; }

.navi__liste > li > a {
  display: block;
  padding: .5rem 0;
  color: var(--text-leise);
  text-decoration: none;
  font-size: 1rem;                      /* 16 px */
  font-weight: 400;
  line-height: 1.4;
  white-space: nowrap;
  border-bottom: 0;
}

.navi__liste > li > a:hover,
.navi__liste > li > a:focus-visible { color: var(--gruen); }

/* Aktiver Punkt: Farbe und Staerke statt Unterstrich. */
.navi__liste a[aria-current="page"] {
  color: var(--gruen);
  font-weight: 500;
  border-bottom: 0;
}
.navi__zweig > a { color: var(--gruen); }

.navi__pfeil {
  display: inline-block;
  width: .34em; height: .34em;
  margin-left: .45em;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: translateY(-.22em) rotate(45deg);
  opacity: .6;
}


/* ---- Aufklappmenue ----
   Ohne JavaScript, per :hover und :focus-within. Die
   Unterpunkte stehen immer im Quelltext und werden nur ein- und
   ausgeblendet; so finden Suchmaschinen und Vorlesehilfen sie
   auch dann, wenn nichts aufgeklappt ist. */

.navi__unter {
  position: absolute;
  top: calc(100% + 1.1rem);
  left: 50%;
  margin-left: -7.5rem;
  width: 15rem;
  padding: .5rem 0;
  list-style: none;
  background: var(--weiss);
  border: var(--linie);
  border-radius: 16px;
  box-shadow: 0 14px 32px rgba(44,54,24,.10);
  display: none;
  z-index: 60;
}

/* Unsichtbare Bruecke: sonst klappt das Menue zu, wenn der
   Zeiger durch die Luecke nach unten faehrt. */
.navi__hat-unter::after {
  content: "";
  position: absolute;
  top: 100%; left: 0; right: 0;
  height: 1.4rem;
}

.navi__hat-unter:hover > .navi__unter,
.navi__hat-unter:focus-within > .navi__unter { display: block; }

.navi__unter a {
  display: block;
  padding: .65rem 1.3rem;
  color: var(--text-leise);
  text-decoration: none;
  font-size: 1rem;
  white-space: nowrap;
}

.navi__unter a:hover,
.navi__unter a:focus-visible { background: var(--mintweiss); color: var(--gruen); }
.navi__unter a[aria-current="page"] { color: var(--gruen); font-weight: 500; }


/* ---- Aktionen rechts ---- */

.kopf-aktionen {
  display: flex;
  align-items: baseline;
  gap: 1.75rem;
  flex: 0 0 auto;
}

/* Der Knopf in der Kopfzeile ist groesser als die uebrigen */
.kopf-aktionen .knopf {
  padding: 1rem 2.5rem;
  font-size: 1.125rem;
  border-radius: 16px;
}

.kopf-leise {
  color: var(--text-leise);
  text-decoration: none;
  font-size: 1.125rem;
  white-space: nowrap;
}
.kopf-leise:hover { color: var(--gruen); }


/* ---- Klappmenue fuer schmale Fenster ---- */

.burger { display: none; }

.burger > summary {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .5rem .2rem;
  color: var(--gruen);
  cursor: pointer;
  list-style: none;
  font-size: 1rem;
}
.burger > summary::-webkit-details-marker { display: none; }

.burger__strich,
.burger__strich::before,
.burger__strich::after {
  display: block;
  width: 22px; height: 2px;
  background: var(--gruen);
  content: "";
}
.burger__strich { position: relative; }
.burger__strich::before { position: absolute; top: -7px; }
.burger__strich::after  { position: absolute; top:  7px; }

.burger[open] .burger__strich { background: transparent; }
.burger[open] .burger__strich::before { top: 0; transform: rotate(45deg); }
.burger[open] .burger__strich::after  { top: 0; transform: rotate(-45deg); }

.burger__liste {
  position: absolute;
  right: 0;
  left: 0;
  top: calc(100% + 1.1rem);
  list-style: none;
  margin: 0;
  padding: .5rem 0;
  background: var(--weiss);
  border: var(--linie);
  border-radius: 16px;
  box-shadow: 0 14px 32px rgba(44,54,24,.10);
  z-index: 60;

  /* Auf dem Telefon ist die Liste laenger als der Bildschirm.
     Ohne eigene Hoehenbegrenzung laufen die letzten Punkte
     unten heraus und sind nicht erreichbar: Der Wisch geht an
     die Seite dahinter, nicht an das Menue.

     „100%" bezieht sich hier auf die Hoehe des umgebenden
     Kastens — das ist die Kopfzeile. Die Kopfzeile klebt oben,
     also bleibt darunter genau so viel Platz. Die 2,2rem sind
     der Abstand oben (1,1rem) und ein gleich grosser Rand nach
     unten.

     „overscroll-behavior: contain" verhindert, dass der Wisch
     am Listenende auf die Seite dahinter uebergeht. */
  max-height: calc(100vh - 100% - 2.2rem);
  max-height: calc(100dvh - 100% - 2.2rem);
  overflow-y: auto;
  overscroll-behavior: contain;
}

.burger__liste a {
  display: block;
  padding: .8rem 1.4rem;
  color: var(--text-leise);
  text-decoration: none;
}
.burger__liste a:hover { background: var(--mintweiss); color: var(--gruen); }
.burger__liste a[aria-current="page"] { color: var(--gruen); font-weight: 500; }
.burger__unter a { padding-left: 2.8rem; font-size: .95rem; }

/* Ab hier Burger statt voller Navigation */
@media (max-width: 1180px) {
  .kopfzeile__innen { align-items: center; }
  .kopf-aktionen { align-items: center; }
  .navi { display: none; }
  .burger { display: block; }
  .kopfzeile__innen { justify-content: space-between; }
  .kopf-aktionen .knopf { padding: .8rem 1.6rem; font-size: 1rem; }
  .kopf-aktionen .kopf-leise { display: none; }
}

/* Knopf und dezenter Link am Ende des Klappmenues.
   Der Knopf-Eintrag erscheint nur auf dem Telefon. */
.burger__extra {
  border-top: var(--linie);
  margin-top: .4rem;
  padding-top: .4rem;
}
.burger__nur-telefon { display: none; }

/* Telefon: oben nur Logo und Menue,
   „Ratgeber" und „Impressum" im Klappmenue */
@media (max-width: 600px) {
  .kopf-aktionen .knopf { display: none; }
  .burger__nur-telefon { display: block; }
  .burger__extra + .burger__extra { border-top: 0; margin-top: 0; padding-top: 0; }
}


/* ------------------------------------------------------------
   6. LEISTE UNTER DER NAVIGATION

   Auf jeder Seite dieselbe Hoehe, damit der Kopf beim Wechseln
   nicht springt. Unterseiten zeigen darin den Brotkrumenpfad,
   Seiten ohne Pfad die Vertrauenszeile. Beide Fuellungen sitzen
   senkrecht mittig, deshalb steht die Hoehe an der Leiste und
   nicht an ihrem Inhalt.
   ------------------------------------------------------------ */

.leiste {
  display: flex;
  align-items: center;
  min-height: 3.9rem;
  background: var(--mintweiss);
  border-bottom: 2px solid var(--gold);
}

.leiste > .innen { width: 100%; }

/* -- 6.1 Brotkrumenpfad -- */

.leiste--krumen ol {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  list-style: none;
  margin: 0; padding: 0;
  font-size: .85rem;
  color: var(--text-leise);
}

.leiste--krumen li + li::before { content: "/"; margin-right: .5rem; color: var(--linienfarbe); }
.leiste--krumen a { color: var(--text-leise); }
.leiste--krumen [aria-current] { color: var(--gruen); }

/* -- 6.2 Vertrauenszeile --

   Nur auf der Startseite: drei kurze Belege statt des Pfads,
   darunter ein goldener Strich (2 px). Symbole in --gold-dunkel
   (6,4:1 auf der hellen Flaeche). */

.vertrauen {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .6rem clamp(2rem, 6vw, 4.75rem);
  list-style: none;
  margin: 0; padding: 0;
  font-size: 1.05rem;
  color: var(--text-leise);
}

.vertrauen li {
  display: flex;
  align-items: center;
  gap: .6rem;
}

.vertrauen svg {
  width: 1.45rem;
  height: 1.45rem;
  flex: none;
  color: var(--gold-dunkel);
}

/* Schmale Geraete: der dritte Beleg entfaellt */
@media (max-width: 620px) {
  .vertrauen li:last-child { display: none; }
  .vertrauen { gap: .6rem 1.25rem; font-size: .95rem; }
  .vertrauen svg { width: 1.25rem; height: 1.25rem; }
}

/* Unter 470 px nur der erste Beleg */
@media (max-width: 470px) {
  .vertrauen li:nth-child(2) { display: none; }
}


/* ------------------------------------------------------------
   7. HERO

   Bild links, Text rechts.
   ------------------------------------------------------------ */

.hero { padding: 0; background: var(--mintweiss); }

/* Spaltenbreiten: ohne Zusatzklasse halbe/halbe, sonst siehe
   Abschnitt 8.26 „Aufteilung". Bild steht hier zuerst. */
/* Bild und Text sind gleich hoch. Mit „align-items: center" blieb
   ueber und unter dem Bild ein Streifen Hintergrund stehen, sobald
   der Text hoeher war als das 5:3-Bild — auf breiten Bildschirmen
   gut sichtbar. Gestreckt fuellt das Bild die Zeile; der Text wird
   in seiner Spalte per Flexbox mittig gesetzt. */
.hero__innen {
  display: grid;
  grid-template-columns: minmax(0, var(--anteil-bild, 1fr)) minmax(0, var(--anteil-text, 1fr));
  align-items: stretch;
}

.hero__bildrahmen { display: block; line-height: 0; }

.hero__bild {
  /* KEINE Rundung: dieses Bild laeuft bis an den Fensterrand.
     Rund waere nur die eine Ecke, die andere bliebe abgeschnitten. */
  width: 100%;
  height: 100%;

  /* Das Seitenverhaeltnis gibt die Mindesthoehe vor. Ist der Text
     hoeher, waechst die Zeile und das Bild waechst mit — deshalb
     steht hier keine max-height mehr, sonst entsteht die Luecke
     oben und unten erneut. */
  aspect-ratio: 5 / 3;
  object-fit: cover;
}

.hero__text {
  padding: clamp(2rem, 4.5vw, 3.5rem) var(--rand);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.hero__text h1 { margin-bottom: .4em; }

/* Einleitung unter der grossen Ueberschrift: 20 px, Zeilenhoehe
   24 px, in Dunkelgruen */
.hero__vorspann {
  font-size: 1.25rem;
  line-height: 1.35;
  letter-spacing: -.02em;
  color: var(--dunkel);
  max-width: 28em;
}

/* Zitat im Start-Hero: Groesse wie der Vorspann, kursiv, gruen
   (8,3:1 auf Mintweiss) */
.hero__zitat {
  font-size: 1.25rem;
  line-height: 1.35;
  letter-spacing: -.02em;
  font-style: italic;
  color: var(--gruen);
  max-width: 28em;
  margin-bottom: .8em;
}
.hero__zitat + p { max-width: 34em; }

.hero--gross .hero__bild { aspect-ratio: 16 / 10; }

.kopfband { background: var(--mintweiss); padding: clamp(2.5rem, 5vw, 3.5rem) 0; }

@media (max-width: 800px) {
  /* Spalte darf schmaler werden als das laengste Wort */
  .hero__innen { grid-template-columns: minmax(0, 1fr); }
  .hero__bild, .hero--gross .hero__bild { aspect-ratio: 16 / 9; }
  .hero__text { display: block; }
}


/* -- 7.1 HERO MIT VIDEO

   Derselbe geteilte Hero, nur steht links ein Video statt eines
   Bildes.

   Das Video ist Beiwerk: es läuft stumm, in Schleife, ohne
   Bedienleiste. Vor dem Start und überall dort, wo es nicht
   geladen wird, steht das Standbild — deshalb muss das dieselben
   Maße haben wie das Video, sonst springt der Ausschnitt.

   ZWEI KNÖPFE, beide nur wenn nötig:

     Ton      unten rechts, sobald das Video läuft. Ein Hero
              startet zwangsläufig stumm — Browser verweigern
              das automatische Abspielen mit Ton. Wer die Musik
              hören will, schaltet sie hier ein.

     Abspielen  in der Mitte, wenn nicht von selbst gestartet
              wurde: bei „Bewegung reduzieren" und bei
              eingeschaltetem Datensparmodus. Dann bleibt das
              Standbild stehen und niemand lädt ungefragt vier
              Megabyte.

   Beide sind im Quelltext versteckt und werden von bewegung.js
   eingeblendet. Ohne JavaScript bleibt das Standbild stehen —
   die Seite funktioniert, nur ohne Bewegung.
   ------------------------------------------------------------ */

.hero--video .hero__bildrahmen { position: relative; }

/* 16:9 wie das Video */
.hero--video .hero__bild {
  aspect-ratio: 16 / 9;
  background: var(--mint);   /* falls das Standbild noch lädt */
}

/* Start-Hero mit Video: 16:10 wie mit Foto */
.hero--gross.hero--video .hero__bild { aspect-ratio: 16 / 10; }

/* Beide Knöpfe teilen sich das Aussehen */
.hero__knopf {
  position: absolute;
  z-index: 2;
  border: 0;
  background: rgba(44, 54, 24, .72);
  color: var(--weiss);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}

.hero__knopf:hover { background: var(--dunkel); }
.hero__knopf svg { display: block; }

/* ---- Ton an/aus ---- */
.hero__ton {
  right: .9rem;
  bottom: .9rem;
  width: 2.6rem;
  height: 2.6rem;
  border-radius: 50%;
}

/* ---- Anhalten / weiter ----
   Pflicht nach WCAG 2.2.2, weil das Video von selbst laeuft.
   Gleiche Groesse wie der Ton-Knopf; gibt es den, sitzt der
   Pause-Knopf links daneben. */
.hero__pause {
  right: .9rem;
  bottom: .9rem;
  width: 2.6rem;
  height: 2.6rem;
  border-radius: 50%;
}
.hero__pause--neben-ton { right: 4rem; }

.hero__knopf:focus-visible { outline: 3px solid var(--weiss); outline-offset: 2px; }

/* ---- Abspielen ---- */
.hero__abspielen {
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 4.2rem;
  height: 4.2rem;
  border-radius: 50%;
}

/* Auf dem Standbild ist der Knopf größer und trägt Text —
   dort ist er die einzige Bedienung weit und breit. */
.hero__abspielen svg { margin-left: .18rem; }   /* Dreieck optisch mittig */


/* ------------------------------------------------------------
   8. ABSCHNITTSTYPEN

   Keine Animationen, keine Überblendungen, keine Bewegung beim
   Scrollen oder beim Überfahren. Zustände wechseln sofort.
   ------------------------------------------------------------ */

/* -- 8.1 Text und Bild nebeneinander -- */

.textbild__innen {
  display: grid;
  grid-template-columns: minmax(0, var(--anteil-text, 1fr)) minmax(0, var(--anteil-bild, 1fr));
  align-items: center;
  gap: clamp(2rem, 5vw, 4.5rem);
}

/* Gedreht steht das Bild links — also tauschen auch die Breiten. */
.textbild--gedreht .textbild__innen {
  grid-template-columns: minmax(0, var(--anteil-bild, 1fr)) minmax(0, var(--anteil-text, 1fr));
}
.textbild--gedreht .textbild__innen > *:first-child { order: 2; }
.textbild img { width: 100%; border-radius: var(--radius); }

@media (max-width: 800px) {
  .textbild__innen,
  .textbild--gedreht .textbild__innen { grid-template-columns: 1fr; }
  .textbild--gedreht .textbild__innen > *:first-child { order: 0; }
}

/* Steht rechts eine Merkmalsliste, soll ihre letzte Zeile auf
   derselben Höhe enden wie der Text links. Mittig sähe die Liste
   gegenüber der Überschrift verrutscht aus. */
.textbild__innen--unten { align-items: end; }

/* Bei Ausrichtung nach unten zaehlt die letzte Textzeile, nicht der
   Abstand darunter: die Merkmalsliste bringt unter dem letzten Punkt
   noch Aussenabstand mit und saesse sonst rund 20 px zu hoch. */
.textbild__innen--unten .merkmale { margin-bottom: 0; }
.textbild__innen--unten .merkmale li:last-child { margin-bottom: 0; }

@media (max-width: 800px) {
  .textbild__innen--unten { align-items: stretch; }
}

/* Kleingedrucktes: Markenhinweise, Quellen, Vorbehalte. Steht
   unter dem Abschnitt, auf den es sich bezieht. */
.fussnote {
  margin-top: 1.6rem;
  font-size: .82rem;
  line-height: 1.55;
  color: var(--text-leise);
}
.fussnote sup { font-size: .7em; }


/* -- 8.2 Kacheln

   Das weiße Kästchen, das in das Bild hineinragt, trägt das
   Thema. -- */

.kacheln {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: clamp(1.5rem, 3vw, 2.5rem);
  list-style: none;
  margin: 0; padding: 0;
}

.kachel {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--weiss);
  margin: 0;
}

.kachel__bild { position: relative; line-height: 0; border-radius: var(--radius); overflow: hidden; }

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

.kachel__thema {
  position: absolute;
  left: 0; bottom: 0;
  border-radius: 0 var(--radius-klein) 0 0;
  background: var(--weiss);
  padding: .8rem 1.2rem;
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .12em;
  line-height: 1.3;
  color: var(--gruen);
  max-width: 78%;
}

.kachel__text { padding: 1.3rem 0 0; display: flex; flex-direction: column; flex: 1; }
.kachel__text h3 { margin: 0 0 .5em; font-size: 1.25rem; }
.kachel__text p  { font-size: .97rem; color: var(--text-leise); }
.kachel__text .knopf { margin-top: auto; align-self: flex-start; }

/* Der ganze Kachelkopf ist klickbar, ohne den Link zu verstecken */
.kachel h3 a { text-decoration: none; color: var(--gruen); }
.kachel h3 a::after { content: ""; position: absolute; inset: 0; }
.kachel:hover h3 a { color: var(--gruen); }


/* -- 8.3 Schritte -- */

.schritte { list-style: none; counter-reset: schritt; margin: 0; padding: 0; }

.schritt {
  counter-increment: schritt;
  position: relative;
  padding-left: 4rem;
  margin-bottom: 2.4rem;
}

.schritt::before {
  content: counter(schritt);
  position: absolute;
  left: 0; top: 0;
  width: 2.8rem; height: 2.8rem;
  display: grid; place-items: center;
  background: var(--gruen);
  color: var(--weiss);
  border-radius: 50%;
  font-family: "DM Sans", system-ui, sans-serif;
  font-size: 1.35rem;
}

.schritt h3 { margin-top: 0; }


/* -- 8.4 Datenblock -- */

.daten { width: 100%; border-collapse: collapse; margin: 0 0 1.5rem; }

.daten caption {
  text-align: left;
  font-size: .8rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .16em;
  color: var(--gruen);
  padding-bottom: 1rem;
}

.daten th, .daten td { padding: .75rem .9rem; text-align: left; border-bottom: var(--linie); }
.daten th { width: 42%; font-weight: 700; color: var(--gruen); }
.daten tr:last-child th, .daten tr:last-child td { border-bottom: 0; }

/* Telefon: lange Woerter trennen (ab 12 Zeichen),
   notfalls umbrechen */
@media (max-width: 600px) {
  h1, h2, h3,
  .daten th, .daten td,
  .download__datei {
    -webkit-hyphens: auto;
    hyphens: auto;
    hyphenate-limit-chars: 12 5 5;
    overflow-wrap: anywhere;
  }
  .wort { max-width: 100%; }

  /* Deklarationstabelle: Bezeichnung ueber dem Wert */
  .daten, .daten tbody, .daten tr, .daten th, .daten td { display: block; width: auto; }
  .daten caption { display: block; }
  .daten tr { border-bottom: var(--linie); padding: .7rem 0; }
  .daten tr:last-child { border-bottom: 0; }
  .daten th, .daten td { padding: 0; border-bottom: 0; }
  .daten th { margin-bottom: .2rem; }
}


/* FAQ: siehe 8.18 */


/* -- 8.6 Video: lädt YouTube erst beim Klick, bis dahin
   keine Cookies. -- */

.video {
  position: relative;
  display: block;
  aspect-ratio: 16 / 9;
  background: var(--gruen);
  border-radius: var(--radius);
  overflow: hidden;
}

.video img { width: 100%; height: 100%; object-fit: cover; }

.video__knopf {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  background: rgba(44,54,24,.32);
  border: 0;
  cursor: pointer;
  color: var(--weiss);
}
.video__knopf:hover { background: rgba(11,61,44,.5); }
.video__knopf svg { width: 4.5rem; height: 4.5rem; }

.video__hinweis { font-size: .875rem; color: var(--text-leise); margin-top: .8rem; }


/* -- 8.7 Knopf

   16 px, Staerke 500, Polster 14/28 px, Radius 14 px.
   Der Knopf in der Kopfzeile: Abschnitt 5. -- */

.knopf {
  display: inline-block;
  padding: .9rem 1.9rem;
  background: var(--gruen);
  color: var(--mintweiss);
  text-decoration: none;
  font-weight: 500;
  font-size: 1rem;
  letter-spacing: -.01em;
  line-height: 1.3;
  border-radius: 14px;
}

.knopf:hover, .knopf:focus-visible { background: var(--dunkel); color: var(--weiss); }

.knopf--leise {
  background: transparent;
  color: var(--gruen);
  border: 1px solid var(--gruen);
}
.knopf--leise:hover { background: var(--gruen); color: var(--mintweiss); }


/* -- 8.8 CTA-Band -- */

.cta { text-align: center; }
.cta h2 { color: var(--weiss); }
.cta .ueberzeile { color: var(--mint); }
.cta p { color: rgba(255,255,255,.88); max-width: 42em; margin-inline: auto; }
.cta .knopf { background: var(--weiss); color: var(--gruen); margin-top: 1.6rem; }
.cta .knopf:hover { background: var(--sand); color: var(--gruen); }


/* -- 8.9 Merkmalsliste -- */

.merkmale { list-style: none; padding: 0; }

/* Haengender Einzug: der Haken steht vor der ersten Zeile,
   Folgezeilen laufen buendig darunter weiter. */
.merkmale li { margin-left: 2rem; text-indent: -2rem; margin-bottom: .6em; }

/* Folgt auf die Merkmalsliste ein Knopf, braucht er Luft nach oben.
   In der Variante „--unten" steht der Aussenabstand der Liste auf 0,
   sonst klebte der Knopf direkt am letzten Listenpunkt. */
.merkmale + p:has(> .knopf) { margin-top: 1.6rem; }

.merkmale li::before {
  content: "";

  /* Inline statt absolut: „vertical-align: baseline" setzt die
     Unterkante des Hakens auf die Schriftlinie. Damit sitzt er
     immer buendig zum Text — unabhaengig von Schriftgroesse,
     Zeilenhoehe und Schriftart. Absolute Positionierung mit
     einem gerechneten „top" verschiebt ihn bei jeder Abweichung. */
  display: inline-block;
  vertical-align: baseline;
  margin-right: 1.25rem;

  width: .45rem; height: .82rem;
  border-right: 2px solid var(--gruen);
  border-bottom: 2px solid var(--gruen);
  transform: rotate(45deg);
}


/* -- 8.10 THEMENKARTEN

   Bild oben, darunter der Text auf der Kartenfarbe.

   Die Farbe wird über eine zweite Klasse gesetzt:
     <li class="thema thema--mint">
   Neun Farben stehen bereit; sind alle vergeben, fängt man
   wieder vorne an. Alle Paare sind durchgerechnet, siehe
   Abschnitt 2. -- */

.themen {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
  list-style: none;
  margin: 0;
  padding: 0;
}

.thema {
  position: relative;
  display: flex;
  flex-direction: column;
  margin: 0;
  border-radius: var(--radius);
  overflow: hidden;
}

/* Das Bild sitzt oben und geht bis an die Kartenkanten. Der
   weiße Grund darunter ist für Packshots, die selbst weiß
   hinterlegt sind — so entsteht keine sichtbare Kante. */
.thema__bild {
  flex: 0 0 auto;
  line-height: 0;
  background: var(--weiss);
  overflow: hidden;

  /* Ein schmaler weisser Streifen unter dem Bild, damit der
     Packshot nicht auf der Farbflaeche aufsitzt. Waechst leicht
     mit der Fenstergroesse mit: 4 px auf dem Handy, 10 px auf
     grossen Bildschirmen. */
  padding-bottom: clamp(4px, .55vw, 10px);
}

.thema__bild img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
  transition: transform .5s ease;
}

.thema:hover .thema__bild img { transform: scale(1.04); }

.thema__titel {
  margin: 0;
  padding: 1.35rem 1.4rem .5rem;
  font-family: "Hanken Grotesk", "DM Sans", system-ui, sans-serif;
  font-size: 1.3rem;
  font-weight: 500;
  line-height: 1.2;
  color: inherit;
}

.thema__text {
  margin: 0;
  padding: 0 1.4rem 1.5rem;
  font-size: 1rem;
  line-height: 1.5;
  flex: 1 1 auto;
}

/* Die ganze Karte ist anklickbar, ohne dass der Link den
   Text verschluckt. */
.thema h3 a { text-decoration: none; color: inherit; }
.thema h3 a::after { content: ""; position: absolute; inset: 0; }
.thema:hover h3 a { text-decoration: underline; }

@media (prefers-reduced-motion: reduce) {
  .thema__bild img { transition: none; }
  .thema:hover .thema__bild img { transform: none; }
}

/* Farbfelder — jedes nachgerechnet, siehe Abschnitt 2 */
.thema--mint    { background: var(--mint);      color: var(--gruen); }
.thema--sand    { background: var(--sand);      color: var(--gruen); }
.thema--himmel  { background: var(--himmel);    color: var(--gruen); }
.thema--gold    { background: var(--gold-hell); color: var(--gruen); }
.thema--braun   { background: var(--braun);     color: rgba(255,255,255,.9); }
.thema--dunkel  { background: var(--dunkel);    color: rgba(250,247,241,.9); }
.thema--orange  { background: var(--orange);    color: rgba(255,255,255,.9); }
.thema--blau    { background: var(--blau);      color: rgba(255,255,255,.9); }
.thema--blau-hell { background: var(--blau-hell); color: var(--blau); }

/* Die Überschrift darf kräftiger stehen als der Fließtext */
.thema--mint   .thema__titel,
.thema--sand   .thema__titel,
.thema--himmel .thema__titel,
.thema--gold   .thema__titel { color: var(--dunkel); }

.thema--braun  .thema__titel { color: var(--gold); }
.thema--dunkel .thema__titel { color: var(--mint); }
.thema--orange .thema__titel { color: var(--weiss); }
.thema--blau   .thema__titel { color: var(--blau-hell); }
.thema--blau-hell .thema__titel { color: var(--blau); }


/* -- 8.10b KACHELN ALS SEITLICHER SLIDER

   Fuer Reihen mit mehr Kacheln, als nebeneinander passen. Die
   Karten laufen in einer Zeile und rasten beim Wischen oder
   Scrollen ein (scroll-snap) — das geht ohne Skript, auch mit
   der Tastatur, sobald die Reihe den Fokus hat. Die Pfeilknoepfe
   darunter setzt bewegung.js dazu.

   Die Reihe laeuft ueber die volle Fensterbreite, mit dem
   normalen Seitenrand (--rand) links und rechts. Deshalb steht
   .slider NICHT im .innen-Container, sondern direkt im Abschnitt.

   Die Karten haben eine feste Wunschbreite statt eines Bruchteils
   der Reihe. Ein breiter Schirm zeigt so mehr Karten nebeneinander,
   statt dieselben vier aufzublasen. Bei 1000 und 620 px wird auf
   Anteile umgestellt, damit am Handy eine Karte fast die ganze
   Breite nimmt und die naechste anragt.                       */

.slider {
  position: relative;
  --slider-rand: var(--rand);
}

.themen--slider {
  --luecke: clamp(1rem, 2vw, 1.5rem);
  gap: var(--luecke);
  grid-template-columns: none;
  grid-auto-flow: column;
  grid-auto-columns: clamp(230px, 19vw, 300px);
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  padding: 0 var(--slider-rand) .9rem;
  scroll-padding-inline: var(--slider-rand);
  scrollbar-width: thin;
  scrollbar-color: var(--linienfarbe) transparent;
}
.themen--slider > .thema { scroll-snap-align: start; }
.themen--slider:focus-visible { outline: 3px solid var(--gruen); outline-offset: -3px; }

@media (max-width: 1000px) {
  .themen--slider { grid-auto-columns: calc((100% - var(--luecke)) / 2.3); }
}
@media (max-width: 620px) {
  .themen--slider { grid-auto-columns: 78%; }
}

/* Pfeile mittig unter der Reihe */
.slider__steuerung {
  display: flex;
  justify-content: center;
  gap: .6rem;
  margin-top: 1rem;
  padding: 0 var(--slider-rand);
}
.slider__knopf {
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  border: 1px solid var(--gruen);
  border-radius: 50%;
  background: transparent;
  color: var(--gruen);
  cursor: pointer;
}
.slider__knopf:hover:not(:disabled) { background: var(--gruen); color: var(--weiss); }
.slider__knopf:focus-visible { outline: 3px solid var(--gruen); outline-offset: 2px; }
.slider__knopf:disabled { opacity: .35; cursor: default; }

@media (prefers-reduced-motion: reduce) {
  .themen--slider { scroll-behavior: auto; }
}


/* -- 8.11 REITER MIT TAFEL  ·  STANDARDELEMENT

   Der Kern des Elements ist nicht die Umschaltung, sondern die
   FARBWELT: Reiter und Tafel wechseln gemeinsam die Farbe. Jeder
   Eintrag bekommt dieselbe Welt-Klasse zweimal — einmal am li
   der Liste, einmal an der Tafel:

     <li class="welt--braun"> …
     <div class="reiter__tafel welt--braun"> …

   Sieben Welten stehen bereit. Sind alle vergeben, faengt man
   wieder vorne an.

   Ohne JavaScript: die Eintraege sind Beschriftungen zu
   unsichtbaren Auswahlfeldern. Geht mit der Tastatur (Tabulator
   hinein, dann Pfeiltasten) und wird von Vorlesehilfen als
   Auswahlgruppe angesagt.
   ------------------------------------------------------------ */

/* ---- Maße --------------------------------------------------
   Der aktive Reiter ist hoeher als die inaktiven und schiebt
   sich nach rechts ueber die Kante der Tafel — deshalb die
   negativen Aussenabstaende und der z-index unten.
   ------------------------------------------------------------ */

/* Dieser Abschnitt darf breiter sein als der uebrige Inhalt */
.innen--breit {
  max-width: 1660px;                       /* 1660 px */
  padding-left: clamp(1.25rem, 3vw, 2.5rem);
  padding-right: clamp(1.25rem, 3vw, 2.5rem);
}

.reiter {
  border: 0;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: minmax(8.5rem, 11.5rem) minmax(0, 1fr);
  gap: 0;
  align-items: start;
}

.reiter > legend { padding: 0; }

.reiter__liste {
  list-style: none;
  margin: 0;
  padding: 0;
  position: relative;
  z-index: 2;          /* liegt ueber der Tafel */
  padding-top: 2.5rem;
}

.reiter__liste > li { margin-bottom: .3rem; }

.reiter input {
  position: absolute;
  width: 1px; height: 1px;
  opacity: 0;
  pointer-events: none;
}

.reiter__name {
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: .8rem 1rem .8rem .2rem;
  border-radius: var(--radius);
  color: var(--text);
  font-size: 1rem;
  line-height: 1.3;
  cursor: pointer;
  user-select: none;
}

/* Das Winkelzeichen vor dem Namen */
.reiter__name::before {
  content: "";
  flex: 0 0 auto;
  width: .38em; height: .38em;
  border-right: 2px solid currentColor;
  border-top: 2px solid currentColor;
  transform: rotate(45deg);
  opacity: .5;
}

.reiter__name:hover { color: var(--gruen); }
.reiter input:focus-visible + .reiter__name { outline: 3px solid var(--gruen); outline-offset: 2px; }

/* Der aktive Reiter: groesser, gepolstert — und er ragt nach
   rechts ueber die Kante der Tafel. */
.reiter input:checked + .reiter__name {
  padding: 1.05rem 1.4rem 1.05rem 1.15rem;
  margin-right: -3.5rem;
  font-size: 1.05rem;
}
.reiter input:checked + .reiter__name::before { opacity: 1; }

/* Die Tafeln: alle im Quelltext, nur eine sichtbar. */
.reiter__tafel {
  display: none;
  border-radius: 20px;
  overflow: hidden;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  align-items: stretch;
  min-height: 19rem;
}

/* Der Inhalt braucht links Platz, weil der Reiter hineinragt */
.reiter__inhalt {
  padding: clamp(2rem, 4vw, 3.25rem) clamp(1.5rem, 3vw, 3rem) clamp(2rem, 4vw, 3.25rem) clamp(3.5rem, 6vw, 5.5rem);
  align-self: center;
}
.reiter__inhalt h3 { margin: 0 0 .5em; font-size: clamp(1.7rem, 1.2rem + 1.6vw, 2.6rem); line-height: 1.15; }
.reiter__inhalt p  { max-width: 28em; }
.reiter__inhalt .knopf { margin-top: 1.4rem; }

/* Alle Reiter im selben Querformat. Sonst bestimmt jedes Foto seine
   eigene Hoehe, und die Tafel springt beim Umschalten. 3:2 haelt sie
   ausserdem niedriger als die quadratischen Originale; zugeschnitten
   wird mittig. Auf dem Telefon gilt weiter 16:9 (siehe unten). */
.reiter__bild { line-height: 0; aspect-ratio: 3 / 2; }
/* Das Bild ragt an jeder Seite 1 px ueber und wird von der Tafel
   abgeschnitten. Sonst mischt der Browser an der Kante — die Breite
   ist fast nie ein ganzer Pixelwert — das Bild mit dem Tafelgrund
   darunter, und bei hellen Fotos auf brauner Tafel steht rechts eine
   feine dunkle Linie, die der runden Ecke folgt. */
.reiter__bild img {
  width: calc(100% + 2px);
  height: calc(100% + 2px);
  margin: -1px;
  max-width: none;
  object-fit: cover;
  display: block;
}

@media (max-width: 900px) {
  .reiter { grid-template-columns: 1fr; }
  .reiter__liste { display: flex; flex-wrap: wrap; gap: .4rem; padding-top: 0; margin-bottom: 1.2rem; }
  .reiter__liste > li { margin: 0; }
  .reiter__name { padding: .65rem 1rem; background: var(--mintweiss); font-size: .95rem; }
  .reiter input:checked + .reiter__name { margin-right: 0; padding: .65rem 1.1rem; font-size: .95rem; }
  .reiter__tafel { grid-template-columns: 1fr; min-height: 0; }
  .reiter__inhalt { padding: clamp(1.5rem, 4vw, 2.5rem); }
  .reiter__bild { order: -1; aspect-ratio: 16/9; }
}


/* ---- Die Farbwelten ----------------------------------------
   Jede Zeile ist nachgerechnet (noetig: 4,5:1).
   ------------------------------------------------------------ */

/* 1 — Dunkel: dunkler Reiter, sehr helle Tafel */
li.welt--dunkel input:checked + .reiter__name { background: var(--dunkel); color: var(--mint); }
.reiter__tafel.welt--dunkel { background: var(--mintweiss); color: var(--text); }
.reiter__tafel.welt--dunkel h3 { color: var(--gruen); }
.reiter__tafel.welt--dunkel .knopf { background: var(--dunkel); color: var(--weiss); }

/* 2 — Braun: minzfarbener Reiter, braune Tafel */
li.welt--braun input:checked + .reiter__name { background: var(--mint); color: var(--braun); }
.reiter__tafel.welt--braun { background: var(--braun); color: rgba(255,255,255,.88); }
.reiter__tafel.welt--braun h3 { color: var(--mint); }
.reiter__tafel.welt--braun .knopf { background: var(--mint); color: var(--braun); }

/* 3 — Sand: sandfarbener Reiter, dunkle Tafel */
li.welt--sand input:checked + .reiter__name { background: var(--sand); color: var(--orange-dunkel); }
.reiter__tafel.welt--sand { background: var(--dunkel); color: rgba(241,249,246,.85); }
.reiter__tafel.welt--sand h3 { color: var(--mint); }
.reiter__tafel.welt--sand .knopf { background: var(--sand); color: var(--orange-dunkel); }

/* 4 — Orange: oranger Reiter, sandfarbene Tafel */
li.welt--orange input:checked + .reiter__name { background: var(--orange); color: var(--weiss); }
.reiter__tafel.welt--orange { background: var(--sand); color: var(--text); }
.reiter__tafel.welt--orange h3 { color: var(--dunkel); }
.reiter__tafel.welt--orange .knopf { background: var(--orange); color: var(--weiss); }

/* 7 — Blau: helle Reiter, dunkelblaue Tafel — nur Hydroponik */
li.welt--blau input:checked + .reiter__name { background: var(--blau-hell); color: var(--blau); }
.reiter__tafel.welt--blau { background: var(--blau); color: rgba(255,255,255,.88); }
.reiter__tafel.welt--blau h3 { color: var(--blau-hell); }
.reiter__tafel.welt--blau .knopf { background: var(--blau-hell); color: var(--blau); }

/* 6 — Gold: brauner Reiter, Tafel im warmen Verlauf */
li.welt--gold input:checked + .reiter__name { background: var(--braun); color: var(--gold); }
.reiter__tafel.welt--gold { background: var(--verlauf-gold); color: var(--text); }
.reiter__tafel.welt--gold h3 { color: var(--gruen); }
.reiter__tafel.welt--gold .knopf { background: var(--braun); color: var(--weiss); }

/* 5 — Himmel: dunkler Reiter, hellblaue Tafel */
li.welt--himmel input:checked + .reiter__name { background: var(--dunkel); color: var(--weiss); }
.reiter__tafel.welt--himmel { background: var(--himmel); color: var(--text); }
.reiter__tafel.welt--himmel h3 { color: var(--dunkel); }
.reiter__tafel.welt--himmel .knopf { background: var(--dunkel); color: var(--weiss); }


/* ---- Umschaltung ------------------------------------------
   Ohne Auswahl steht die erste Tafel offen. Danach zeigt der
   n-te Reiter die n-te Tafel — bewusst allgemein, damit keine
   Seite eigene CSS-Regeln braucht. Reicht fuer acht Eintraege. */

.reiter__tafel:first-child { display: grid; }
.reiter:has(input:checked) .reiter__tafel { display: none; }

.reiter:has(.reiter__liste > li:nth-child(1) input:checked) .reiter__tafeln > .reiter__tafel:nth-child(1),
.reiter:has(.reiter__liste > li:nth-child(2) input:checked) .reiter__tafeln > .reiter__tafel:nth-child(2),
.reiter:has(.reiter__liste > li:nth-child(3) input:checked) .reiter__tafeln > .reiter__tafel:nth-child(3),
.reiter:has(.reiter__liste > li:nth-child(4) input:checked) .reiter__tafeln > .reiter__tafel:nth-child(4),
.reiter:has(.reiter__liste > li:nth-child(5) input:checked) .reiter__tafeln > .reiter__tafel:nth-child(5),
.reiter:has(.reiter__liste > li:nth-child(6) input:checked) .reiter__tafeln > .reiter__tafel:nth-child(6),
.reiter:has(.reiter__liste > li:nth-child(7) input:checked) .reiter__tafeln > .reiter__tafel:nth-child(7),
.reiter:has(.reiter__liste > li:nth-child(8) input:checked) .reiter__tafeln > .reiter__tafel:nth-child(8) {
  display: grid;
}

/* Browser ohne :has() zeigen alle Tafeln untereinander statt
   einer — unschoen, aber vollstaendig lesbar. */
@supports not selector(:has(*)) {
  .reiter { grid-template-columns: 1fr; }
  .reiter__liste { display: none; }
  .reiter__tafel { display: grid; margin-bottom: 1.2rem; }
}



/* -- 8.13 HERO ALS BAND

   Bild über die volle Breite, Text in einem Glaskasten darüber:
   eine getönte, unscharf gerechnete Fläche direkt unter dem
   Text (50 % Deckkraft, damit die Schrift auf jedem Foto
   lesbar bleibt).
   ------------------------------------------------------------ */

.hero--band { position: relative; padding: 0; background: var(--dunkel); }

.hero--band .hero__innen { display: block; }
.hero--band .hero__bildrahmen { display: block; }

.hero--band .hero__bild {
  width: 100%;
  aspect-ratio: 21 / 9;
  max-height: 60vh;
  border-radius: 0;
  object-fit: cover;
}

/* Der Kasten sitzt unten im Bild, im Raster der Seite */
.hero--band .hero__text {
  position: absolute;
  inset: auto 0 0 0;
  max-width: 1660px;
  margin: 0 auto;
  padding: 0 var(--rand) clamp(1.5rem, 4vw, 3rem);
  z-index: 2;
}

.hero--band .hero__glas {
  max-width: 34rem;
  padding: clamp(1.4rem, 3vw, 2rem);
  border-radius: 8px;
  background: rgba(44, 54, 24, .5);
  -webkit-backdrop-filter: blur(30px);
  backdrop-filter: blur(30px);
}

/* Browser ohne Unschärfe-Rechnung bekommen eine kräftigere
   Tönung — sonst wäre die Schrift dort schlechter lesbar. */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .hero--band .hero__glas { background: rgba(44, 54, 24, .84); }
}

.hero--band h1, .hero--band h2 { color: var(--weiss); margin-bottom: .35em; }
.hero--band .hero__vorspann { color: rgba(255,255,255,.92); max-width: none; }

@media (max-width: 800px) {
  .hero--band .hero__bild { aspect-ratio: 4 / 3; }
  .hero--band .hero__glas { max-width: none; }
}


/* -- 8.13b PRODUKT-HERO MIT VERLAUF

   Farbverlauf als Fläche, Text links, freigestelltes Produkt
   rechts. Braucht ein freigestelltes Produktfoto, sonst bricht
   der Verlauf am Bildrand ab.
   ------------------------------------------------------------ */

.produkt-hero {
  padding: 0;
  background: linear-gradient(135deg, var(--dunkel) 0%, var(--gruen) 45%, var(--oliv-hell) 100%);
  color: var(--weiss);
  overflow: hidden;
}

.produkt-hero__innen {
  display: grid;
  grid-template-columns: minmax(0, var(--anteil-text, 1fr)) minmax(0, var(--anteil-bild, 1fr));
  gap: clamp(1.5rem, 4vw, 3rem);
  align-items: center;
  min-height: 26rem;
}

.produkt-hero__text { padding: clamp(2.5rem, 5vw, 4.5rem) 0; }

.produkt-hero__pfad {
  font-size: .9rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(255,255,255,.72);
  margin: 0 0 1.2rem;
}

.produkt-hero h1,
.produkt-hero h2 {
  color: var(--weiss);
  margin: 0 0 .5em;
}

/* Die feine Linie unter dem Produktnamen */
.produkt-hero__strich {
  border: 0;
  border-top: 1px solid rgba(255,255,255,.35);
  margin: 1.5rem 0 2rem;
  max-width: 32rem;
}

.produkt-hero__satz {
  font-size: clamp(1.35rem, 1.1rem + 1vw, 1.9rem);
  line-height: 1.3;
  color: var(--weiss);
  margin: 0 0 1.2rem;
  max-width: 22em;
}

.produkt-hero p { color: rgba(255,255,255,.88); max-width: 30em; }

.produkt-hero__bild { align-self: end; line-height: 0; }
.produkt-hero__bild img { width: 100%; height: auto; display: block; }

@media (max-width: 800px) {
  .produkt-hero__innen { grid-template-columns: 1fr; min-height: 0; }
  .produkt-hero__text { padding-bottom: 1rem; }
}


/* -- 8.14 SPLITSCHIRM

   Zwei Hälften über die volle Fensterbreite: eine farbige mit
   Text, eine mit Bild. Anders als „Text und Bild nebeneinander"
   läuft hier nichts im Raster — die Farbfläche geht bis an den
   Fensterrand.

   Die Farbwelten aus 8.11 gelten auch hier:
     <section class="split welt--braun">
   -- */

.split {
  padding: 0;
  display: grid;
  grid-template-columns: var(--anteil-text, 1fr) var(--anteil-bild, 1fr);
  align-items: stretch;
}

.split__text {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(2.5rem, 6vw, 5.5rem) clamp(1.5rem, 5vw, 5rem);
}

.split__text > * { max-width: 34rem; }

.split__bild { line-height: 0; }   /* randlos: keine Rundung */
.split__bild img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Gedreht: Bild links, Text rechts — die Breiten wandern mit. */
.split--gedreht { grid-template-columns: var(--anteil-bild, 1fr) var(--anteil-text, 1fr); }
.split--gedreht .split__text { order: 2; }

/* Farbwelten — dieselben Paare wie bei den Reitern */
.split.welt--dunkel  { background: var(--mintweiss); }
.split.welt--dunkel  h2 { color: var(--gruen); }

.split.welt--braun { background: var(--braun); color: rgba(255,255,255,.88); }
.split.welt--braun h2, .split.welt--braun .ueberzeile { color: var(--mint); }

.split.welt--sand    { background: var(--dunkel); color: rgba(241,249,246,.85); }
.split.welt--sand    h2, .split.welt--sand .ueberzeile { color: var(--mint); }

.split.welt--orange  { background: var(--sand); }
.split.welt--orange  h2 { color: var(--dunkel); }

.split.welt--himmel  { background: var(--himmel); }
.split.welt--himmel  h2 { color: var(--dunkel); }

.split.welt--blau    { background: var(--blau); color: rgba(255,255,255,.88); }
.split.welt--blau    h2, .split.welt--blau .ueberzeile { color: var(--blau-hell); }

.split.welt--gold    { background: var(--verlauf-gold); }
.split.welt--gold    h2 { color: var(--gruen); }

.split.welt--braun .knopf { background: var(--mint); color: var(--braun); }
.split.welt--sand    .knopf { background: var(--sand); color: var(--orange-dunkel); }
.split.welt--gold    .knopf { background: var(--braun); color: var(--weiss); }
.split.welt--blau    .knopf { background: var(--blau-hell); color: var(--blau); }

@media (max-width: 800px) {
  .split { grid-template-columns: 1fr; }
  .split--gedreht .split__text { order: 0; }
  .split__bild { aspect-ratio: 16 / 9; }
}


/* -- 8.15 MUSTERSEITE

   Nur für die Seite „Elemente". Die Bausteine stehen dort so da,
   wie sie auf einer echten Seite aussehen — kein Rahmen, keine
   Kästchen drumherum. Getrennt werden sie durch eine feine Linie
   und eine kleine Zeile mit Name und Zweck.
   ------------------------------------------------------------ */

.baustein { padding: 0; border-top: 1px solid var(--linienfarbe); }
.baustein:first-of-type { border-top: 0; }

.baustein__kopf {
  max-width: 1660px;
  margin: 0 auto;
  padding: clamp(2.5rem, 5vw, 4rem) var(--rand) clamp(1.5rem, 3vw, 2.5rem);
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1.5rem;
  flex-wrap: wrap;
}

.baustein__kopf h2 {
  margin: 0;
  font-size: clamp(1.4rem, 1.15rem + .8vw, 1.85rem);
  letter-spacing: -.015em;
}

.baustein__zweck {
  margin: .35rem 0 0;
  color: var(--text-leise);
  font-size: .95rem;
  max-width: 42em;
  flex: 1 1 20rem;
}

.baustein__name {
  font-family: ui-monospace, "Cascadia Mono", Consolas, monospace;
  font-size: .8rem;
  color: var(--gruen);
  background: var(--mint);
  padding: .3rem .7rem;
  border-radius: 999px;
  white-space: nowrap;
  flex: 0 0 auto;
}

/* Der Quelltext sitzt unauffällig unter dem Beispiel */
.baustein__quelltext {
  max-width: 1660px;
  margin: 0 auto;
  padding: 1rem var(--rand) clamp(2.5rem, 5vw, 4rem);
}

.baustein__quelltext > summary {
  cursor: pointer;
  font-size: .85rem;
  color: var(--text-leise);
  list-style: none;
  padding: .4rem 0;
  display: inline-block;
}
.baustein__quelltext > summary::-webkit-details-marker { display: none; }
.baustein__quelltext > summary::before { content: "▸ "; }
.baustein__quelltext[open] > summary::before { content: "▾ "; }
.baustein__quelltext > summary:hover { color: var(--gruen); }

.baustein__quelltext pre {
  margin: .5rem 0 0;
  padding: 1.2rem 1.4rem;
  background: var(--dunkel);
  color: #CEE9DF;
  border-radius: 14px;
  overflow-x: auto;
  font-family: ui-monospace, "Cascadia Mono", Consolas, monospace;
  font-size: .8rem;
  line-height: 1.6;
  tab-size: 2;
}

/* Farbmuster */
.farben {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 1rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
.farbe { margin: 0; border-radius: 14px; overflow: hidden; background: var(--mintweiss); }
.farbe__flaeche { height: 6rem; }
.farbe__text { padding: .85rem 1rem 1.1rem; font-size: .82rem; color: var(--text-leise); }
.farbe__text strong { display: block; font-size: 1rem; color: var(--dunkel); margin-bottom: .15rem; }
.farbe__text code { font-family: ui-monospace, Consolas, monospace; }


/* -- 8.16 HERO, ZENTRIERT

   Große Überschrift mittig, darunter ein Satz und ein Knopf.
   ------------------------------------------------------------ */

.hero--mitte {
  padding: clamp(4rem, 9vw, 8rem) 0;
  text-align: center;
  background: var(--weiss);
}

.hero--mitte .innen { max-width: 60rem; }
.hero--mitte h1 { color: var(--gruen); margin-bottom: .4em; }
.hero--mitte .ueberzeile { margin-bottom: 1.2em; }

.hero--mitte p {
  font-size: 1.125rem;
  line-height: 1.5;
  color: var(--text-leise);
  max-width: 34em;
  margin-inline: auto;
}

.hero--mitte .knopf { margin-top: 2rem; }


/* -- 8.17 MERKMALSRASTER

   Links die Überschrift, rechts zwei Spalten mit Symbol,
   Zwischenüberschrift und kurzem Text.

   Die Symbole sind schlichte Strichzeichnungen und erben ihre
   Farbe vom Text.
   ------------------------------------------------------------ */

.raster { background: var(--mintweiss); }

.raster__innen {
  display: grid;
  grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: start;
}

.raster__kopf h2 { margin: 0; }
.raster__kopf p:not(.ueberzeile) { margin: 1.2rem 0 0; color: var(--text); }
.raster__kopf .ueberzeile { margin-bottom: 1em; }

/* Die Plätze im Raster stehen fest, damit die Fußnote unter den
   Merkmalen landet und nicht unter der Überschrift. */
.raster__kopf  { grid-column: 1; grid-row: 1; }
.raster__liste { grid-column: 2; grid-row: 1; }

/* Gedreht: die Merkmale links, der Text rechts. Die Reihenfolge
   im Quelltext bleibt gleich — eine Vorlesehilfe bekommt also
   weiter zuerst die Überschrift, dann die Merkmale. */
.raster--gedreht .raster__innen { grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); }
.raster--gedreht .raster__kopf  { grid-column: 2; }
.raster--gedreht .raster__liste { grid-column: 1; }

/* Fußnote unter den Merkmalen, z. B. für das Sternchen an den
   Elementen, die als Chelat gebunden sind. */
.raster__fussnote {
  grid-column: 2;
  grid-row: 2;
  margin: clamp(1.2rem, 2.5vw, 1.8rem) 0 0;
  font-size: .85rem;
  line-height: 1.45;
  color: var(--text-leise);
}
.raster--gedreht .raster__fussnote { grid-column: 1; }

.raster__punkt h3 sup { font-size: .7em; line-height: 0; }

.raster__liste {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
  gap: clamp(1.75rem, 3.5vw, 3rem);
  list-style: none;
  margin: 0;
  padding: 0;
}

.raster__punkt { margin: 0; }

.raster__symbol {
  display: block;
  width: 1.75rem;
  height: 1.75rem;
  margin-bottom: 1.1rem;
  color: var(--gruen);
}

.raster__punkt h3 {
  margin: 0 0 .5em;
  font-size: 1.5rem;          /* 28 px */
  line-height: 1.15;
  color: var(--dunkel);
}

.raster__punkt p {
  margin: 0;
  font-size: 1rem;
  line-height: 1.45;
  color: var(--text-leise);
}

@media (max-width: 800px) {
  .raster__innen,
  .raster--gedreht .raster__innen { grid-template-columns: 1fr; }

  /* Untereinander gilt wieder die Reihenfolge aus dem Quelltext. */
  .raster__kopf, .raster__liste, .raster__fussnote,
  .raster--gedreht .raster__kopf,
  .raster--gedreht .raster__liste,
  .raster--gedreht .raster__fussnote { grid-column: auto; grid-row: auto; }
}



/* -- 8.17b MERKMALSRASTER IN DER ERDWELT

   Symbole in Orange, Zwischenueberschriften in Braun.

     Orange #8F4A0A auf Mintweiss #FAF7F1   6,4:1
     Braun  #573F2A auf Mintweiss           9,2:1                */

.raster.welt--erde .raster__symbol { color: var(--orange); }
.raster.welt--erde .raster__punkt h3 { color: var(--braun); }

/* -- 8.17c FARBWELT BLAU · HYDROPONIK

   Blau ist bei Blusana dem Thema Hydroponik vorbehalten. Gesetzt
   wird es mit welt--wasser an den Baendern, am Merkmalsraster
   und am FAQ.

   Das dunkle Blau traegt jede Schrift (11,9:1 auf Mintweiss),
   das mittlere Blau nur Symbole und Haken (4,3:1 — Grafik, dafuer
   genuegen 3:1). Die Naehrstoffkarten bleiben ausgenommen: ihre
   Farben stehen fuer N, P und K, nicht fuer das Thema.        */

.band--blau-hell { background: var(--blau-hell); }

.band.welt--wasser h2 { color: var(--blau); }
.band.welt--wasser h3:not(.naehrkarte__titel) { color: var(--blau); }

.band.welt--wasser .merkmale li::before {
  border-right-color: var(--blau-mittel);
  border-bottom-color: var(--blau-mittel);
}

/* Der gefuellte Knopf erbt sonst das Gruen aus 8.6 und faellt
   in der Wasserwelt aus der Farbfamilie. */
.band.welt--wasser .knopf { background: var(--blau); color: var(--weiss); }
.band.welt--wasser .knopf:hover,
.band.welt--wasser .knopf:focus-visible { background: var(--blau-mittel); color: var(--weiss); }

.band.welt--wasser .knopf--umriss { background: transparent; color: var(--blau); border-color: var(--blau); }
.band.welt--wasser .knopf--umriss:hover { background: var(--blau); color: var(--weiss); }

.raster.welt--wasser .raster__symbol { color: var(--blau-mittel); }

.faq.welt--wasser .faq__frage > summary { color: var(--blau); }
.faq.welt--wasser .faq__frage[open] { border-color: var(--blau); }


/* -- 8.18 FAQ ALS KARTEN

   Jede Frage ist eine gerahmte, abgerundete Zeile mit Winkel
   rechts.
   ------------------------------------------------------------ */

.faq { display: grid; gap: .75rem; }

.faq__frage {
  border: 1px solid var(--linienfarbe);
  border-radius: 14px;
  background: var(--weiss);
}

.faq__frage > summary {
  padding: 1.35rem 3.5rem 1.35rem 1.6rem;
  cursor: pointer;
  position: relative;
  font-size: 1.15rem;
  font-weight: 400;
  color: var(--dunkel);
  list-style: none;
}
.faq__frage > summary::-webkit-details-marker { display: none; }

.faq__frage > summary::after {
  content: "";
  position: absolute;
  right: 1.6rem; top: 1.75rem;
  width: .5em; height: .5em;
  border-right: 1.5px solid var(--text-leise);
  border-bottom: 1.5px solid var(--text-leise);
  transform: rotate(45deg);
}
.faq__frage[open] > summary::after { transform: rotate(-135deg); top: 2rem; }
.faq__frage[open] { border-color: var(--gruen); }

.faq__antwort { padding: 0 3.5rem 1.5rem 1.6rem; color: var(--text-leise); }

/* Erdwelt: nur auf den Substratseiten. Die aufgeklappte Frage
   bekommt den braunen Rahmen statt des gruenen, die Frage selbst
   Braun statt Dunkelgruen. Der Pfeil bleibt leise — er ist
   Bedienung, keine Farbaussage. */
.faq.welt--erde .faq__frage > summary { color: var(--braun); }
.faq.welt--erde .faq__frage[open] { border-color: var(--braun); }


/* -- 8.19 STIMMEN

   Kundenstimmen als gerahmte Karten mit Schlagwort-Pille oben.
   ------------------------------------------------------------ */

.stimmen {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
  gap: clamp(1.25rem, 2.5vw, 2rem);
  list-style: none;
  margin: 0;
  padding: 0;
}

.stimme {
  margin: 0;
  border: 1px solid var(--linienfarbe);
  border-radius: 18px;
  padding: clamp(1.5rem, 3vw, 2.25rem);
  background: var(--weiss);
}

.stimme__marke {
  display: inline-block;
  background: var(--mint);
  color: var(--gruen);
  font-size: .95rem;
  padding: .5rem 1.1rem;
  border-radius: 999px;
  margin-bottom: 1.5rem;
}

.stimme blockquote { margin: 0; }
.stimme blockquote p { color: var(--dunkel); line-height: 1.55; }
.stimme footer { margin-top: 1.25rem; color: var(--text-leise); font-size: .95rem; }


/* -- 8.20 BEITRAGS-ANRISS

   Für den Wissensbereich: links Schlagwort, Überschrift, Anriss
   und Weiterlesen-Link, rechts das Bild.
   ------------------------------------------------------------ */

.anriss__innen {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: center;
}

.anriss__marke {
  font-size: .95rem;
  color: var(--gruen);
  margin: 0 0 1rem;
}
.anriss__marke span { color: var(--text-leise); }

.anriss h2 { font-size: clamp(1.6rem, 1.25rem + 1.4vw, 2.35rem); margin: 0 0 .6em; }
.anriss p { color: var(--text-leise); max-width: 34em; }

.anriss__weiter {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  margin-top: 1.25rem;
  color: var(--gruen);
  font-weight: 500;
  text-decoration: none;
}
.anriss__weiter::after { content: "→"; }
.anriss__weiter:hover { text-decoration: underline; }

.anriss__bild img { width: 100%; border-radius: 18px; }

@media (max-width: 800px) {
  .anriss__innen { grid-template-columns: 1fr; }
}


/* -- 8.21 REITER OBEN

   Waagerechte Pillen in einem farbigen Balken, der MIT der Tafel
   darunter eine Einheit bildet: der Balken sitzt mittig auf der
   Oberkante der Tafel, ohne Fuge und ohne Versatz.

   Gleiche Technik wie die senkrechten Reiter: Auswahlfelder mit
   Beschriftungen, kein JavaScript, mit Tastatur bedienbar.
   ------------------------------------------------------------ */

.reiter-oben {
  border: 0;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.reiter-oben > legend { padding: 0; }

.reiter-oben__leiste {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .35rem;
  list-style: none;
  margin: 0;
  padding: .6rem .7rem;
  background: var(--mint);
  border-radius: 20px 20px 0 0;
  /* Heller Balken, dunkle Pille — der Akzent liegt auf dem
     aktiven Reiter, nicht auf der Leiste. */
  /* eine Haaresbreite Überlappung, damit keine Fuge sichtbar wird */
  margin-bottom: -1px;
  position: relative;
  z-index: 2;
  max-width: 100%;
}

.reiter-oben input {
  position: absolute;
  width: 1px; height: 1px;
  opacity: 0;
  pointer-events: none;
}

.reiter-oben__name {
  display: block;
  padding: .8rem 1.6rem;
  border-radius: 999px;
  color: var(--gruen);              /* auf Mint: 7,3:1 */
  font-size: 1rem;
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}

.reiter-oben__name:hover { background: rgba(255,255,255,.55); }

/* Aktiv: dunkle Fläche, weiße Schrift — 10,4:1 */
.reiter-oben input:checked + .reiter-oben__name {
  background: var(--gruen);
  color: var(--weiss);
  font-weight: 500;
}
.reiter-oben input:focus-visible + .reiter-oben__name { outline: 3px solid var(--weiss); outline-offset: 2px; }

/* Die Tafeln nehmen die volle Breite und tragen die Rundung.
   Sie liegen ALLE UEBEREINANDER in derselben Rasterzelle —
   dadurch ist der Abschnitt immer so hoch wie die laengste
   Tafel, und beim Umschalten springt nichts.

   Versteckt wird mit visibility, nicht mit display: display:
   none nimmt der Tafel ihre Hoehe, und genau die brauchen wir.
   visibility: hidden haelt den Platz frei und nimmt die Tafel
   trotzdem aus Tastaturreihenfolge und Vorlesehilfe.

   Preis dafuer: die Bilder der nicht sichtbaren Tafeln werden
   mitgeladen, weil sie im Layout stehen. Bei drei Bildern à
   40 KB ist das vertretbar. */
.reiter-oben__tafeln { width: 100%; display: grid; }

.reiter-oben__tafel {
  grid-area: 1 / 1;
  display: grid;
  visibility: hidden;
  background: var(--weiss);
  border: 1px solid var(--mint);
  border-radius: 20px;
  overflow: hidden;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);

  /* Text OBEN, nicht mittig: Bei gleich hohen Tafeln wandert
     sonst der Textanfang mit der Textlaenge, und beim
     Umschalten springt die erste Zeile. Oben beginnt jeder
     Reiter an derselben Stelle. */
  align-items: start;
  min-height: 20rem;
}

/* Die Bildspalte fuellt weiter die ganze Hoehe — randlose
   Bilder brauchen das, freigestellte zentrieren sich darin
   selbst (siehe --ganz). */
.reiter-oben__bild { align-self: stretch; }

.reiter-oben__inhalt { padding: clamp(2rem, 4vw, 3.5rem); }

/* In der Tafel sitzen Text, fuenf Merkmale und ein Schlusssatz
   uebereinander. Damit das nicht zu hoch wird, stehen die
   Merkmale hier enger als sonst. */
.reiter-oben__inhalt .merkmale li { margin-bottom: .3em; line-height: 1.4; }

/* Der Schlusssatz: wofuer sich dieses Substrat am besten
   eignet. Steht abgesetzt unter den Merkmalen, weil er die
   Kaufentscheidung traegt. */
.reiter-oben__fazit {
  margin: 1.4rem 0 0;
  padding-top: 1.1rem;
  border-top: 1px solid var(--mint);
  color: var(--gruen);
  font-weight: 500;
}

/* Abstand zwischen Schlusssatz und Knopf */
.reiter-oben__fazit + p { margin-top: 1.6rem; }
.reiter-oben__inhalt h3 { color: var(--dunkel); font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.4rem); line-height: 1.15; margin: 0 0 .6em; }
.reiter-oben__bild { line-height: 0; height: 100%; }
.reiter-oben__bild img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Freigestellte Motive auf weissem Grund vertragen keinen
   Beschnitt — bei gleich hohen Tafeln wird der Bildkasten
   hochkant, und ein 16:9-Motiv verliert links und rechts die
   Haelfte. Mit „--ganz" steht das ganze Bild da. Der weisse
   Rand faellt nicht auf: die Tafel ist selbst weiss. */
.reiter-oben__bild--ganz {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(1rem, 2vw, 2rem);
}
.reiter-oben__bild--ganz img {
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: 100%;
  object-fit: contain;
}

.reiter-oben__tafel:first-child { visibility: visible; }
.reiter-oben:has(input:checked) .reiter-oben__tafel { visibility: hidden; }

.reiter-oben:has(.reiter-oben__leiste > li:nth-child(1) input:checked) .reiter-oben__tafeln > .reiter-oben__tafel:nth-child(1),
.reiter-oben:has(.reiter-oben__leiste > li:nth-child(2) input:checked) .reiter-oben__tafeln > .reiter-oben__tafel:nth-child(2),
.reiter-oben:has(.reiter-oben__leiste > li:nth-child(3) input:checked) .reiter-oben__tafeln > .reiter-oben__tafel:nth-child(3),
.reiter-oben:has(.reiter-oben__leiste > li:nth-child(4) input:checked) .reiter-oben__tafeln > .reiter-oben__tafel:nth-child(4),
.reiter-oben:has(.reiter-oben__leiste > li:nth-child(5) input:checked) .reiter-oben__tafeln > .reiter-oben__tafel:nth-child(5) {
  visibility: visible;
}

/* Browser ohne :has() zeigen alle Tafeln untereinander. Dort
   duerfen sie nicht uebereinander liegen. */
@supports not selector(:has(*)) {
  .reiter-oben__leiste { display: none; }
  .reiter-oben__tafeln { display: block; }
  .reiter-oben__tafel { grid-area: auto; visibility: visible; margin-bottom: 1rem; }
}

@media (max-width: 800px) {
  .reiter-oben__leiste { border-radius: 20px; margin-bottom: .75rem; }
  .reiter-oben__name { padding: .65rem 1.1rem; font-size: .95rem; }

  /* „minmax(0, 1fr)" statt „1fr": Eine 1fr-Spalte hat als
     Mindestmass die min-content-Breite ihres Inhalts. Das
     freigestellte Bild bringt seine volle Eigenbreite mit —
     die Spalte wuchs dadurch auf bis zu 576 px und der Inhalt
     wurde am rechten Bildschirmrand abgeschnitten. Mit der
     Null als Untergrenze darf die Spalte schrumpfen. */
  .reiter-oben__tafel { grid-template-columns: minmax(0, 1fr); min-height: 0; }
  /* „align-self: start" hebt das „stretch" von oben auf. Sonst
     ist die Hoehe definit, und „aspect-ratio" rechnet daraus die
     BREITE statt der Hoehe — der Bildkasten wurde dadurch
     breiter als die Spalte. */
  .reiter-oben__bild {
    order: -1;
    aspect-ratio: 16/9;
    height: auto;
    align-self: start;
    width: 100%;
  }

  /* Gleicher Grund, eine Ebene tiefer: Flex- und Rasterkinder
     haben „min-width: auto" und schrumpfen sonst nicht unter
     ihren Inhalt. */
  .reiter-oben__bild--ganz,
  .reiter-oben__inhalt { min-width: 0; }
}


/* -- 8.23 ABLAUF IN SPALTEN

   Drei Schritte nebeneinander: große helle Ziffer, Überschrift,
   kurzer Text, darunter Platz für eine Strichzeichnung.

   Unterschied zum Baustein „schritte": der läuft untereinander
   und trägt längere Anleitungen. Dieser hier ist für drei bis
   vier knappe Punkte nebeneinander.

   Die Ziffern erzeugt das Stylesheet — sie stehen nicht im
   Quelltext und stimmen deshalb immer.
   ------------------------------------------------------------ */

.ablauf {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: clamp(2rem, 4vw, 3.5rem);
  counter-reset: ablauf;
  list-style: none;
  margin: 0;
  padding: 0;
}

.ablauf__punkt { counter-increment: ablauf; margin: 0; }

.ablauf__punkt::before {
  content: "0" counter(ablauf);
  display: block;
  font-size: clamp(2.25rem, 1.8rem + 1.6vw, 3rem);
  line-height: 1;
  color: var(--linienfarbe);
  margin-bottom: .6rem;
}

.ablauf__punkt h3 {
  margin: 0 0 .55em;
  font-size: 1.25rem;
  color: var(--gruen);
}

.ablauf__punkt p { margin: 0; color: var(--text); }

.ablauf__bild { margin-top: 1.75rem; line-height: 0; }
.ablauf__bild img { width: 100%; max-width: 18rem; }


/* -- 8.24 NÄHRSTOFFKARTEN

   Eine Karte je Hauptnährstoff: oben Name und Anteil, rechts
   das Kürzel im Kreis, darunter die Überschrift, dann das Icon
   und vier Stichpunkte.

   Bis 1240 px stehen die Karten untereinander, darüber
   nebeneinander.

   FÜR ALLE NPK-DÜNGER DERSELBE BLOCK. Text, Farben, Icons und
   die Reihenfolge stehen fest — je Dünger ändern sich nur die
   drei Prozentwerte in „naehrkarte__wert". Sie sitzen immer an
   derselben Stelle: der Name steht in einer festen Spalte von
   7,5 rem, der Anteil beginnt dahinter.

   Der Block gehört in „innen" (1180 px), nicht in „innen--breit".

   Icons: bilder/naehrstoff-*.png, transparent, alt="" — was sie
   zeigen, steht als Text daneben.
   ------------------------------------------------------------ */

.naehrkarten {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(1rem, 2.5vw, 1.6rem);
  list-style: none;
  padding: 0;
  align-items: stretch;

  /* Untereinander werden die Karten nicht beliebig breit,
     sondern behalten ihr Maß und stehen mittig. Eine Karte über
     die ganze Seitenbreite hätte rechts neben den Stichpunkten
     nur leere Fläche. */
  max-width: 34rem;
  margin: 0 auto;
}

.naehrkarte {
  margin: 0;
  border-radius: 18px;
  padding: clamp(1.2rem, 2.2vw, 1.6rem);

  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  column-gap: .9rem;
  row-gap: .3rem;

  /* Ein feiner Rand in der Schriftfarbe der Karte — sie steht damit
     auch dann fuer sich, wenn das Band dahinter fast dieselbe
     Helligkeit hat. Gilt fuer alle Karten. */
  border: 1px solid var(--karte-schrift);

  /* Grundwerte — die drei Karten unten überschreiben sie */
  background: var(--mint);
  --karte-schrift: var(--gruen);
  --karte-kreis:   var(--mintweiss);
}

/* ---- Kopfzeile: Name und Anteil beieinander --------------
   Nicht auseinandergezogen: der Name steht in einer festen
   Spalte, der Anteil schließt direkt an. Was rechts übrig
   bleibt, gehört dem Kreis. */

.naehrkarte__kopf {
  grid-column: 1;
  margin: 0;
  display: grid;
  grid-template-columns: 7.5rem auto;
  justify-content: start;
  align-items: baseline;
  gap: .5rem;

  font-size: .95rem;
  line-height: 1.3;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--karte-schrift);
}

/* Der Anteil — das Einzige, was sich je Dünger ändert. */
.naehrkarte__wert { font-weight: 700; letter-spacing: .02em; white-space: nowrap; }

/* ---- Das Kürzel im Kreis --------------------------------
   Sitzt in der Kopfzeile, nicht darüber und nicht daneben:
   die Mitte des Kreises liegt auf der Zeile mit dem Namen. */

.naehrkarte__zeichen {
  grid-column: 2;
  grid-row: 1;
  margin: -.55rem 0 0;
  align-self: start;

  width: 2.7rem;
  height: 2.7rem;
  border-radius: 50%;
  background: var(--karte-kreis);
  color: var(--karte-schrift);

  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.35rem;
  line-height: 1;
}

/* ---- Überschrift ----------------------------------------- */

.naehrkarte__titel {
  grid-column: 1 / -1;
  margin: .1rem 0 0;
  font-size: clamp(1.25rem, 1.1rem + .45vw, 1.5rem);
  line-height: 1.2;
  color: var(--karte-schrift);
}

/* ---- Icon und Stichpunkte -------------------------------- */

.naehrkarte__inhalt {
  grid-column: 1 / -1;
  margin-top: clamp(.7rem, 1.6vw, 1rem);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: clamp(.8rem, 1.6vw, 1rem);
}

.naehrkarte__bild {
  width: clamp(3rem, 5vw, 3.6rem);
  height: auto;
  aspect-ratio: 1 / 1;
  display: block;
}

.naehrkarte__punkte {
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: .9rem;
  line-height: 1.5;
  color: var(--text);
}

/* ---- Die drei Karten ------------------------------------
   Jede Paarung Fläche/Schrift ist nachgerechnet, nötig sind
   4,5:1. Der Fließtext steht auf allen dreien in --text und
   kommt damit auf 9,5:1 und besser.
   ---------------------------------------------------------- */

.naehrkarte--stickstoff {
  background: var(--mint);                 /* #E3E8D5 */
  --karte-schrift: var(--gruen);           /* 7,2:1 */
  --karte-kreis:   var(--mintweiss);
}

.naehrkarte--phosphor {
  background: var(--gold-hell);            /* #EFE2CB */
  --karte-schrift: var(--orange-dunkel);   /* 6,6:1 */
  --karte-kreis:   var(--mintweiss);
}

/* Kalium: dunkles Blau als Schrift (10,0:1). Das mittlere Blau
   #1E7AB9 kaeme auf #DEE4F1 nur auf 3,7:1. */
.naehrkarte--kalium {
  background: var(--blau-hell);            /* #DEE4F1 */
  --karte-schrift: var(--blau);            /* 10,0:1 */
  --karte-kreis:   var(--mintweiss);
}

/* ---- Anwendungskarten -----------------------------------
   Vier Karten nach demselben Muster wie die NPK-Reihe, nur
   ohne Prozentwert: „naehrkarten--vier" stellt ab 1240 px
   vier nebeneinander, „naehrkarte--ohne-wert" gibt dem Namen
   in der Kopfzeile die volle Breite (die feste Spalte von
   7,5 rem ist nur fuer die kurzen Naehrstoffnamen gedacht).
   Icons: bilder/icon-anwendung-*.png, transparent, alt="".
   ---------------------------------------------------------- */

.naehrkarte--ohne-wert .naehrkarte__kopf { grid-template-columns: minmax(0, 1fr); }

/* Statt eines Kuerzels steht im Kreis ein kleines Icon —
   dieselbe Strichstaerke wie die Symbole im Raster. */
.naehrkarte__zeichen svg {
  width: 1.6rem;
  height: 1.6rem;
  display: block;
}

/* Ohne Icon neben den Stichpunkten faellt die Bildspalte weg,
   dafuer bekommen die Stichpunkte Haken wie in „merkmale". */
.naehrkarte--nur-punkte .naehrkarte__inhalt { grid-template-columns: minmax(0, 1fr); }

.naehrkarte--nur-punkte .naehrkarte__punkte li {
  margin-left: 1.7rem;
  text-indent: -1.7rem;
  margin-bottom: .45em;
}

/* Haken wie in „merkmale": inline und auf der Schriftlinie. */
.naehrkarte--nur-punkte .naehrkarte__punkte li::before {
  content: "";
  display: inline-block;
  vertical-align: baseline;
  margin-right: 1.1rem;
  width: .4rem; height: .72rem;
  border-right: 2px solid var(--karte-schrift);
  border-bottom: 2px solid var(--karte-schrift);
  transform: rotate(45deg);
}

.naehrkarte--substrat {
  background: var(--mint);                 /* #E3E8D5 */
  --karte-schrift: var(--gruen);           /* 7,2:1 */
  --karte-kreis:   var(--mintweiss);
}

.naehrkarte--drainage {
  background: var(--blau-hell);            /* #DEE4F1 */
  --karte-schrift: var(--blau);            /* 10,0:1 */
  --karte-kreis:   var(--mintweiss);
}

.naehrkarte--mischen {
  background: var(--gold-hell);            /* #EFE2CB */
  --karte-schrift: var(--orange-dunkel);   /* 6,6:1 */
  --karte-kreis:   var(--mintweiss);
}

.naehrkarte--dekor {
  background: var(--sand);                 /* #F4EDE6 */
  --karte-schrift: var(--braun);           /* 9,0:1 */
  --karte-kreis:   var(--mintweiss);
}

/* ---- Ab 1240 px nebeneinander ---------------------------- */

@media (min-width: 1240px) {
  .naehrkarten {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    max-width: none;
    margin: 0;
  }

  /* Optional: jede zweite Karte tiefer (nicht fuer die NPK-Reihe) */
  .naehrkarten--versetzt .naehrkarte:nth-child(even) { margin-top: clamp(1.5rem, 3vw, 3rem); }

  /* Vier Anwendungskarten in einer Reihe. Der Block darf etwas
     breiter sein als die 1180 px der NPK-Reihe, sonst stehen vier
     Karten zu eng — mehr als 1400 px liest sich aber schlechter. */
  .naehrkarten--vier {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    max-width: 1400px;
    margin-inline: auto;
  }
}

/* Sehr schmale Geraete: Icon und Stichpunkte untereinander */
@media (max-width: 340px) {
  .naehrkarte__inhalt { grid-template-columns: 1fr; }
  .naehrkarte__kopf { grid-template-columns: auto auto; }
}


/* -- 8.25 UMRISS-KNOPF MIT PUNKTEN

   Schmaler Knopf mit Umriss und je einem Punkt links und rechts
   der Beschriftung.
   ------------------------------------------------------------ */

.knopf--umriss {
  background: transparent;
  color: var(--gruen);
  border: 1px solid var(--gruen);
  border-radius: 4px;
  font-size: .875rem;
  font-weight: 500;
  letter-spacing: .09em;
  text-transform: uppercase;
  padding: .85rem 1.6rem;
}
.knopf--umriss::before { content: "· "; }
.knopf--umriss::after  { content: " ·"; }
.knopf--umriss:hover { background: var(--gruen); color: var(--weiss); }



/* -- 8.21b REITER OBEN IN DER ERDWELT

   Farbschema der Substrate: Braun, Gold, Orange.

   Nur die Farben wechseln, Aufbau und Masse bleiben. Gesetzt
   wird es mit welt--erde am Reiterkasten.

   Nachgerechnet, alles ueber 4,5:1:
     Braun    #573F2A auf Gold hell #EFE2CB   7,6:1
     Weiss            auf Braun               9,8:1
     Braun            auf Weiss               9,8:1
     Weiss            auf Orange   #8F4A0A    6,7:1
     Orange   #8F4A0A auf Weiss               6,7:1                */

.reiter-oben.welt--erde .reiter-oben__leiste { background: var(--gold-hell); }
.reiter-oben.welt--erde .reiter-oben__name { color: var(--braun); }
.reiter-oben.welt--erde .reiter-oben__name:hover { background: rgba(255, 255, 255, .6); }

.reiter-oben.welt--erde input:checked + .reiter-oben__name {
  background: var(--braun);
  color: var(--weiss);
}

.reiter-oben.welt--erde .reiter-oben__tafel { border-color: var(--gold-tief); }
.reiter-oben.welt--erde .reiter-oben__inhalt h3 { color: var(--braun); }

.reiter-oben.welt--erde .reiter-oben__fazit {
  border-top-color: var(--gold-tief);
  color: var(--braun);
}

/* Der Haken erbt sonst das Gruen aus 8.9 */
.reiter-oben.welt--erde .merkmale li::before {
  border-right-color: var(--orange);
  border-bottom-color: var(--orange);
}

.reiter-oben.welt--erde .knopf {
  background: var(--orange);
  color: var(--weiss);
}
.reiter-oben.welt--erde .knopf:hover { background: var(--orange-dunkel); }

/* -- 8.22 BLOG / WISSENSBEREICH

   Die Titel stehen kräftiger (600) und luftiger (1,3) als auf
   den Produktseiten.
   ------------------------------------------------------------ */

/* ---- Kopfzeile eines Beitrags: Marke, Kategorie, Datum ---- */

.beitrag__kopf {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .5rem;
  margin: 0 0 1rem;
  font-size: .9375rem;
  line-height: 1.5;
  color: var(--text-leise);
}

.beitrag__marke {
  font-size: .875rem;
  font-weight: 500;
  color: var(--gruen);
  letter-spacing: .06em;
  text-transform: uppercase;
}

.beitrag__kategorie { color: var(--gruen); }
.beitrag__kopf .punkt { color: var(--linienfarbe); }


/* ---- Autorzeile ---- */

.autor {
  display: flex;
  align-items: center;
  gap: .75rem;
  margin: 1.5rem 0 0;
}

.autor__bild {
  flex: 0 0 auto;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  object-fit: cover;
  background: var(--mint);
  display: grid;
  place-items: center;
  font-size: .95rem;
  font-weight: 500;
  color: var(--gruen);
}

.autor__name { font-size: .9375rem; font-weight: 500; color: var(--dunkel); margin: 0; line-height: 1.3; }
.autor__rolle { font-size: .875rem; color: var(--text-leise); margin: 0; line-height: 1.3; }


/* ---- Hervorgehobener Beitrag: Text links, Bild rechts ---- */

.beitrag--gross { border-bottom: 1px solid var(--linienfarbe); }

.beitrag--gross .innen {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: center;
}

.beitrag--gross h2 {
  font-size: clamp(1.6rem, 1.25rem + 1.3vw, 2rem);
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -.01em;
  color: var(--dunkel);
  margin: 0 0 .7em;
}

.beitrag--gross p { font-size: 1rem; line-height: 1.7; color: var(--text-leise); max-width: 34em; }

.beitrag--gross .beitrag__bild img { width: 100%; border-radius: 18px; }

@media (max-width: 800px) {
  .beitrag--gross .innen { grid-template-columns: 1fr; }
}


/* ---- Raster weiterer Beiträge ---- */

.beitraege {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(19rem, 1fr));
  gap: clamp(1.75rem, 3.5vw, 3rem);
  list-style: none;
  margin: 0;
  padding: 0;
}

.beitrag {
  position: relative;
  margin: 0;
  display: flex;
  flex-direction: column;
}

.beitrag__bild { line-height: 0; margin-bottom: 1.25rem; }
.beitrag__bild img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 18px; }

.beitrag h3 {
  font-size: 1.35rem;
  font-weight: 600;
  line-height: 1.3;
  color: var(--dunkel);
  margin: 0 0 .6em;
}

.beitrag h3 a { color: inherit; text-decoration: none; }
.beitrag h3 a::after { content: ""; position: absolute; inset: 0; }
.beitrag:hover h3 a { color: var(--gruen); }

.beitrag > p { font-size: 1rem; line-height: 1.7; color: var(--text-leise); margin: 0; }
.beitrag .autor { margin-top: auto; padding-top: 1.5rem; }


/* ---- Weiterlesen ---- */

.weiterlesen {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  margin-top: 1.4rem;
  font-size: 1rem;
  font-weight: 500;
  color: var(--gruen);
  text-decoration: none;
}
.weiterlesen::after { content: "→"; }
.weiterlesen:hover { text-decoration: underline; }


/* ---- Filterleiste über der Beitragsliste ---- */

.filter {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  list-style: none;
  margin: 0 0 clamp(2rem, 4vw, 3rem);
  padding: 0;
}

.filter a {
  display: block;
  padding: .55rem 1.2rem;
  border-radius: 999px;
  border: 1px solid var(--linienfarbe);
  color: var(--text-leise);
  text-decoration: none;
  font-size: .95rem;
}
.filter a:hover { border-color: var(--gruen); color: var(--gruen); }
.filter a[aria-current="page"] { background: var(--gruen); border-color: var(--gruen); color: var(--weiss); }


/* ------------------------------------------------------------
   8b. BEWEGUNG

   Die Bewegung steuert GSAP mit ScrollTrigger (siehe
   bewegung.js). Im Stylesheet steht dafür nur noch das Nötigste:
   die Hüllen, hinter denen die Wörter einer Überschrift
   hervorklappen.

   Nichts hiervon versteckt etwas. Lädt GSAP nicht, sind alle
   Texte trotzdem sichtbar — GSAP setzt die Startwerte selbst
   und nimmt sie am Ende wieder zurück.
   ------------------------------------------------------------ */

.wort {
  display: inline-block;
  overflow: hidden;
  vertical-align: bottom;
  /* Polster, damit Unterlängen (g, p, y) nicht abgeschnitten werden */
  padding-bottom: .14em;
  margin-bottom: -.14em;
}

.wort__innen { display: inline-block; }

/* Zusammenhalten, was nicht umbrechen darf — Domains, Masse,
   Artikelnummern. Sonst trennt der Browser an jedem Bindestrich. */
.nowrap { white-space: nowrap; }


/* -- 8.26 AUFTEILUNG  ·  wie breit Bild und Text sind

   Ohne Zusatzklasse teilen sich Bild und Text den Platz je zur
   Hälfte. Das passt nicht immer: bei wenig Text wirkt die halbe
   leere Spalte verloren, dann darf das Bild mehr Raum bekommen.
   Umgekehrt bei viel Text — dann steht das Bild oft besser
   hochkant daneben als breit und flach.

   Die vier Klassen gelten für alle Bausteine mit zwei Spalten:
   Hero, Splitschirm, Produkt-Hero, „Text und Bild" — und für
   den Trenner darunter, damit der an derselben Stelle bricht.

     <section class="band split welt--braun teilung--bild-breit">

   Gerechnet wird in fr, nicht in Prozent: so bleibt der Abstand
   zwischen den Spalten außen vor und nichts läuft über. Welche
   Spalte die erste ist, entscheidet der Baustein — „gedreht"
   tauscht Inhalt und Breite gemeinsam.

   Unter 800 px steht ohnehin alles untereinander; dort gelten
   die Klassen nicht mehr.
   ------------------------------------------------------------ */

.teilung--bild-breit { --anteil-bild: 6fr; --anteil-text: 4fr; }   /* 60 / 40 */
.teilung--bild-weit  { --anteil-bild: 7fr; --anteil-text: 3fr; }   /* 70 / 30 */
.teilung--text-breit { --anteil-bild: 4fr; --anteil-text: 6fr; }   /* 40 / 60 */
.teilung--text-weit  { --anteil-bild: 3fr; --anteil-text: 7fr; }   /* 30 / 70 */

/* Bekommt der Text mehr Spalte, darf er sie auch nutzen. Sonst
   bleibt er bei seinen 34rem stehen und es klafft eine Lücke
   bis zum Bild — der Abschnitt fiele in zwei Teile.
   40rem sind rund 75 Zeichen je Zeile, die Obergrenze für gut
   Lesbares; darüber wird nicht erhöht. Wer noch mehr Text hat,
   nimmt „bild--hochkant" dazu. */
.teilung--text-breit .split__text > *,
.teilung--text-weit  .split__text > * { max-width: 40rem; }


/* ---- Bild hochkant ----------------------------------------

   Der Gegenpart zu „viel Text": das Bild wird schmal und hoch
   statt breit und flach. Gehört fast immer mit
   „teilung--text-breit" zusammen.

   Im Splitschirm steht das Bild dann nicht mehr randlos,
   sondern als gerahmtes Hochformat in der Farbfläche — randlos
   wäre es entweder verzerrt, oder der Abschnitt würde sehr hoch.

   Das Seitenverhältnis 3:4 ist dasselbe wie bei einem
   Hochformat aus der Kamera.
   ------------------------------------------------------------ */

.bild--hochkant.hero .hero__bild { aspect-ratio: 3 / 4; max-height: 74vh; }

/* Der Inhalt läuft hier NICHT bis an die Fensterkante, sondern
   steht in der Seitenmitte. Sonst zieht es Text und Bild auf
   einem breiten Schirm auseinander: der Abstand in der Mitte
   wird größer als der Rand außen, und der Abschnitt fällt in
   zwei Teile. Die Farbfläche bleibt randlos — dafür sitzt der
   Abstand als Innenabstand am Abschnitt, nicht an den Spalten. */
.bild--hochkant.split {
  align-items: center;
  padding-left:  max(var(--rand), (100% - var(--innen)) / 2);
  padding-right: max(var(--rand), (100% - var(--innen)) / 2);
  column-gap: clamp(2rem, 4vw, 3.5rem);
}

/* Die seitlichen Ränder kommen jetzt vom Abschnitt. Der Text
   darf seine Spalte dafür ausfüllen — 40rem sind rund 75
   Zeichen je Zeile, die Obergrenze für gut Lesbares. */
.bild--hochkant.split .split__text { padding-left: 0; padding-right: 0; }
.bild--hochkant.split .split__text > * { max-width: 40rem; }

.bild--hochkant.split .split__bild {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(2.5rem, 5vw, 4.5rem) 0;
}

.bild--hochkant.split .split__bild img {
  width: auto;
  max-width: 100%;
  max-height: 40rem;
  aspect-ratio: 3 / 4;
  border-radius: var(--radius);
}

.bild--hochkant.textbild img { aspect-ratio: 3 / 4; object-fit: cover; }

.bild--hochkant.produkt-hero .produkt-hero__bild { align-self: center; }
.bild--hochkant.produkt-hero .produkt-hero__bild img {
  width: auto;
  max-height: 34rem;
  margin: 0 auto;
}

@media (max-width: 800px) {
  /* Untereinander bleibt das Hochformat, aber gedeckelt — sonst
     füllt ein einziges Bild den ganzen Schirm. */
  .bild--hochkant.hero .hero__bild { aspect-ratio: 4 / 5; max-height: 68vh; }
  .bild--hochkant.split .split__bild { aspect-ratio: auto; padding: clamp(1.5rem, 6vw, 3rem) 0; }
}


/* -- 8.27 TRENNER

   Der schmale Streifen zwischen zwei Abschnitten. Er nimmt die
   Aufteilung des Blocks darüber auf: die eine Hälfte so breit
   wie dessen Textseite, die andere so breit wie dessen
   Bildseite, und in jeder Hälfte ein feiner Strich. Dadurch
   läuft die Kante des Splitschirms noch ein Stück weiter, statt
   hart abzubrechen.

   DIE FARBEN STEHEN ÜBER KREUZ. Unter der dunklen Hälfte des
   Blocks steht die helle Trennerhälfte und umgekehrt — der
   Streifen soll einen Kontrast setzen, nicht die Farbe von oben
   fortführen. Dunkelblau unter Dunkelblau ist keine Kante,
   sondern nur ein tieferer Abschnitt.

   Er bekommt dieselben Zusatzklassen wie der Block darüber:

     <section class="band split welt--braun teilung--text-breit"> … </section>
     <div class="trenner welt--braun teilung--text-breit">
       <div class="trenner__seite"></div>
       <div class="trenner__seite"></div>
     </div>

   Steht oben „split--gedreht", gehört unten „trenner--gedreht"
   dazu: dann wandern Farbe und Strichlänge mit auf die andere
   Seite.

   Soll der Streifen ausnahmsweise doch die Farbe von oben
   weiterführen, statt zu kontrastieren: „trenner--durchlaufend".

   Ohne geteilten Block darüber nimmt man „trenner--einfarbig":
   eine Fläche, ein Strich in der Mitte.

   Die beiden leeren div sind Absicht — der Streifen ist reine
   Zierde und trägt keinen Inhalt.
   ------------------------------------------------------------ */

.trenner {
  --hoehe: 2.2rem;

  /* Grundpaar, wenn keine Farbwelt angegeben ist */
  --kraeftig:        var(--gruen);
  --strich-kraeftig: rgba(255,255,255,.5);
  --ruhig:           var(--mint);
  --strich-ruhig:    rgba(44,54,24,.28);

  display: grid;
  grid-template-columns: var(--anteil-text, 1fr) var(--anteil-bild, 1fr);
}

.trenner__seite {
  height: var(--hoehe);
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Der Strich sitzt mittig in seiner Hälfte und lässt links und
   rechts Luft — er soll die Fläche andeuten, nicht ausfüllen.
   Die beiden Längen sind bewusst verschieden und hängen an der
   Seite, nicht an der Farbe: links lang, rechts kurz. */
.trenner__seite::before {
  content: "";
  display: block;
  height: 1px;
  width: 62%;
}

/* Über Kreuz: die erste Hälfte steht unter der Textseite, und
   die trägt oben die kräftige Farbe — hier kommt deshalb die
   ruhige. */
.trenner__seite:first-child { background: var(--ruhig); }
.trenner__seite:first-child::before { background: var(--strich-ruhig); }

.trenner__seite:last-child { background: var(--kraeftig); }
.trenner__seite:last-child::before { background: var(--strich-kraeftig); width: 38%; }

/* Ausnahme: der Streifen führt die Farben von oben weiter,
   statt zu kontrastieren. */
.trenner--durchlaufend .trenner__seite:first-child { background: var(--kraeftig); }
.trenner--durchlaufend .trenner__seite:first-child::before { background: var(--strich-kraeftig); }
.trenner--durchlaufend .trenner__seite:last-child { background: var(--ruhig); }
.trenner--durchlaufend .trenner__seite:last-child::before { background: var(--strich-ruhig); }

/* Gedreht: die Spalten tauschen die Breite, die erste Hälfte
   wandert mit ihrer Farbe nach rechts. */
.trenner--gedreht { grid-template-columns: var(--anteil-bild, 1fr) var(--anteil-text, 1fr); }
.trenner--gedreht .trenner__seite:first-child { order: 2; }

/* Eine Fläche, ein Strich — für Abschnitte ohne Bildseite.
   Hier steht nur ein div im Quelltext. Die kräftige Farbe, weil
   darüber in aller Regel ein helles Band steht. */
.trenner--einfarbig { grid-template-columns: 1fr; }
.trenner--einfarbig .trenner__seite { background: var(--kraeftig); }
.trenner--einfarbig .trenner__seite::before { background: var(--strich-kraeftig); width: 30%; }

/* ---- Die Farbpaare ----------------------------------------
   Je Welt eine kräftige und eine ruhige Fläche, dazu der Strich,
   der auf ihr liegt. Welche Hälfte welche bekommt, steht oben —
   im Regelfall über Kreuz.

   Es steht kein Text darauf, deshalb sind hier keine
   Kontrastwerte nötig — die Striche sind Zierde.
   ------------------------------------------------------------ */

.trenner.welt--dunkel {
  --kraeftig: var(--dunkel);     --strich-kraeftig: rgba(255,255,255,.45);
  --ruhig:    var(--mint);       --strich-ruhig:    rgba(44,54,24,.28);
}
.trenner.welt--braun {
  --kraeftig: var(--braun);      --strich-kraeftig: rgba(255,255,255,.5);
  --ruhig:    var(--gold-tief);  --strich-ruhig:    rgba(87,63,42,.38);
}
.trenner.welt--sand {
  --kraeftig: var(--dunkel);     --strich-kraeftig: rgba(255,255,255,.45);
  --ruhig:    var(--gold-tief);  --strich-ruhig:    rgba(44,54,24,.3);
}
.trenner.welt--orange {
  --kraeftig: var(--orange);     --strich-kraeftig: rgba(255,255,255,.5);
  --ruhig:    var(--gold-tief);  --strich-ruhig:    rgba(122,62,8,.38);
}
.trenner.welt--himmel {
  --kraeftig: var(--gruen);      --strich-kraeftig: rgba(255,255,255,.5);
  --ruhig:    var(--himmel);     --strich-ruhig:    rgba(44,54,24,.25);
}
.trenner.welt--gold {
  --kraeftig: var(--braun);      --strich-kraeftig: rgba(255,255,255,.5);
  --ruhig:    var(--gold-hell);  --strich-ruhig:    rgba(87,63,42,.32);
}
.trenner.welt--blau {
  --kraeftig: var(--blau);       --strich-kraeftig: rgba(255,255,255,.5);
  --ruhig:    var(--blau-hell);  --strich-ruhig:    rgba(35,46,101,.32);
}


@media (max-width: 800px) {
  /* Der Block darüber steht jetzt untereinander — die
     Aufteilung hätte nichts mehr, worauf sie sich bezieht. */
  .trenner,
  .trenner--gedreht { grid-template-columns: 1fr 1fr; }
  .trenner { --hoehe: 1.6rem; }
}


/* -- 8.28 PRODUKTLISTE

   Steht in einem Reiter, wenn dort mehrere Produkte hängen —
   auf der Düngerseite drei Flüssigdünger unter einem Reiter.

   Die Liste nennt je Zeile Nährstoffverhältnis und Einsatzzweck.

   Die ganze Zeile ist der Link, nicht nur der Name: ein
   größeres Ziel für Maus und Finger.
   ------------------------------------------------------------ */

.produktliste {
  list-style: none;
  margin: 1.2rem 0 0;
  padding: 0;
  border-top: 1px solid var(--linienfarbe);
}

.produktliste li { border-bottom: 1px solid var(--linienfarbe); }

/* Vier Spalten: Name, Nährstoffverhältnis, Leerraum, Dreieck.
   Der Wert steht direkt hinter dem Namen — dort gehört er
   hin, er ist Teil der Produktbezeichnung. Die dritte Spalte
   ist nur Luft und schiebt das Dreieck an den rechten Rand. */
.produktliste a {
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr) auto;
  align-items: baseline;
  column-gap: .7rem;
  row-gap: .15rem;
  padding: .8rem .2rem;
  text-decoration: none;
  color: inherit;
}

.produktliste__name { grid-column: 1; grid-row: 1; }
.produktliste__wert { grid-column: 2; grid-row: 1; }

.produktliste a:hover { background: var(--mintweiss); }
.produktliste a:hover .produktliste__name { text-decoration: underline; }

.produktliste__name {
  font-weight: 500;
  color: var(--gruen);
}

/* Das Nährstoffverhältnis — der eigentliche Unterschied */
.produktliste__wert {
  font-size: .85rem;
  letter-spacing: .04em;
  color: var(--text-leise);
  white-space: nowrap;
}

/* Das Dreieck am Zeilenende. Gefuellt statt als Winkelzeichen:
   Es soll auf den ersten Blick sagen „hier geht es weiter".
   Aus Rahmenlinien gebaut, damit es bei jeder Groesse scharf
   bleibt und die Farbe der Seite mitnimmt.

   Es braucht seinen Platz ausdruecklich: als ::after steht es
   im Kasten hinter dem Zweck und landet sonst in einer
   eigenen Zeile. */
.produktliste a::after {
  content: "";
  grid-column: 4;
  grid-row: 1;
  align-self: center;

  width: 0;
  height: 0;
  border-left: .62rem solid var(--gruen);
  border-top: .42rem solid transparent;
  border-bottom: .42rem solid transparent;

  transition: transform .15s ease-out;
}

/* Beim Überfahren rückt das Dreieck ein Stück nach rechts.
   Die einzige Bewegung auf einer sonst ruhigen Seite — sie
   sagt „hier geht es weiter" deutlicher als jede Farbe. */
.produktliste a:hover::after,
.produktliste a:focus-visible::after { transform: translateX(.3rem); }

@media (prefers-reduced-motion: reduce) {
  .produktliste a::after { transition: none; }
}

/* Der Zweck steht in der zweiten Zeile, über die volle Breite */
.produktliste__zweck {
  grid-column: 1 / -1;
  grid-row: 2;
  font-size: .9rem;
  line-height: 1.4;
  color: var(--text);
}

@media (max-width: 420px) {
  /* Sehr schmal: Verhältnis unter den Namen statt daneben. */
  .produktliste a { grid-template-columns: minmax(0, 1fr) auto; }
  .produktliste__name { grid-column: 1; grid-row: 1; }
  .produktliste__wert { grid-column: 1; grid-row: 2; }
  .produktliste a::after { grid-column: 2; grid-row: 1; }
  .produktliste__zweck { grid-row: 3; }
}


/* ------------------------------------------------------------
   9. NACH-OBEN-KNOPF

   Erscheint erst, wenn man ein gutes Stück gescrollt hat, und
   sitzt unten rechts. Auf den langen Ratgeber- und
   Produktseiten spart er den Weg zurück; ganz oben, wo die
   Navigation ohnehin steht, wäre er nur im Weg.

   Er liegt unter dem Klappmenü (z-index 60), damit er bei
   geöffnetem Menü nicht davor schwebt.

   Ohne JavaScript bleibt er unsichtbar — und dank „visibility"
   auch für die Tastatur unerreichbar. Sonst führte der
   Tabulator auf einen Knopf, den niemand sieht.
   ------------------------------------------------------------ */

.nachoben {
  position: fixed;
  right: clamp(.9rem, 2.5vw, 1.8rem);
  bottom: clamp(.9rem, 2.5vw, 1.8rem);
  z-index: 40;

  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .2rem;
  width: 4.5rem;
  padding: .7rem .4rem .65rem;

  border: 0;
  border-radius: var(--radius-klein);
  background: var(--gruen);
  color: var(--weiss);          /* 9,0:1 */

  font-family: inherit;
  font-size: .68rem;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: .07em;
  text-transform: uppercase;
  text-align: center;
  cursor: pointer;

  opacity: 0;
  visibility: hidden;
  transform: translateY(.6rem);
  transition: opacity .2s, transform .2s, visibility .2s;
}

.nachoben.ist-da { opacity: 1; visibility: visible; transform: none; }
.nachoben:hover  { background: var(--dunkel); }
.nachoben svg    { display: block; }

@media (prefers-reduced-motion: reduce) {
  .nachoben { transition: none; }
}

@media (max-width: 600px) {
  /* Auf dem Telefon nur der Pfeil — die Beschriftung kostet
     dort Platz, den der Inhalt besser gebraucht. */
  .nachoben { width: 3rem; padding: .6rem; gap: 0; }
  .nachoben span { display: none; }   /* der Name steht im aria-label */
}


/* ------------------------------------------------------------
   10. FOOTER
   ------------------------------------------------------------ */

.fuss { color: var(--weiss); padding-bottom: 0; }

.fuss__innen {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: clamp(1.5rem, 4vw, 3.5rem);
}

.fuss a { color: var(--weiss); }
.fuss address { font-style: normal; }

/* Das Logo ist roter Schriftzug auf Transparenz. Statt einer
   zweiten Bilddatei wird es hier weiß eingefärbt. */
.fuss__logo { width: clamp(160px, 20vw, 200px); height: auto; filter: brightness(0) invert(1); }

/* Firmenanschrift als <p>, nicht als Ueberschrift */
.fuss__titel {
  font-family: "DM Sans", system-ui, sans-serif;
  font-size: 1.35rem;
  color: var(--weiss);
  margin: 0 0 .8em;
}

.fuss__claim {
  font-family: "DM Sans", system-ui, sans-serif;
  font-size: 1.2rem;
  margin: 1rem 0 0;
  color: var(--mint);
}

.fuss__social { display: flex; gap: .8rem; list-style: none; margin: 0; padding: 0; }
.fuss__social a {
  display: grid; place-items: center;
  width: 2.5rem; height: 2.5rem;
  border: 1px solid rgba(255,255,255,.35);
  border-radius: 50%;
}
.fuss__social a:hover { background: rgba(255,255,255,.14); }

.fuss__rechtliches {
  margin-top: clamp(2.5rem, 5vw, 3.5rem);
  padding-top: 1.4rem;
  padding-bottom: 1.6rem;
  border-top: 1px solid rgba(255,255,255,.2);
  display: flex;
  flex-wrap: wrap;
  gap: .6rem 1.6rem;
  align-items: center;
  justify-content: space-between;
  font-size: .875rem;
}

.fuss__rechtliches ul { display: flex; flex-wrap: wrap; gap: 1.4rem; list-style: none; margin: 0; padding: 0; }
.fuss__copy { margin: 0; color: rgba(255,255,255,.7); }


/* ------------------------------------------------------------
   11. BARRIEREFREIHEIT UND DRUCK

   Kontraste, Tastaturbedienung und Semantik stecken direkt im
   HTML und im CSS.
   ------------------------------------------------------------ */

.sprung {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 100;
  padding: .8rem 1.2rem;
  background: var(--gruen);
  color: var(--weiss);
}
.sprung:focus { left: 0; }

:focus-visible { outline: 3px solid var(--gruen); outline-offset: 2px; }
.fuss :focus-visible { outline-color: var(--mint); }

.nur-screenreader {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* -- 8.29 DOWNLOAD-VERZEICHNIS

   Die Seite Datenblätter: je Produkt Bild, Name, die PDFs, die
   für alle Packungen gelten (Sicherheitsdatenblatt), und eine
   Tabelle der Packungen mit Artikelnummer, EAN und — wo es eins
   gibt — dem Datenblatt dieser Packung. Geschrieben wird der
   Inhalt von werkzeuge/datenblaetter-bauen.mjs.

   Die Tabelle scrollt auf dem Handy in ihrem Rahmen seitlich,
   die Seite selbst nie.                                       */

.download {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr);
  gap: clamp(1rem, 3vw, 2rem);
  align-items: start;
  padding: clamp(1.25rem, 3vw, 2rem) 0;
  border-bottom: var(--linie);
}
.download:last-child { border-bottom: 0; }

.download__bild img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: .6rem;
  background: var(--weiss);
}

.download h3 { margin: 0 0 .7rem; }
.download h3 a { color: inherit; text-decoration: none; }
.download h3 a:hover { color: var(--gruen); text-decoration: underline; }

.download__dateien {
  list-style: none;
  margin: 0 0 1rem;
  padding: 0;
  display: grid;
  gap: .55rem;
}

/* Eine Zeile je Dokument: Name, Groesse, dann die beiden Wege
   Anzeigen und Herunterladen. */
.download__zeile {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: .35rem .9rem;
}

/* Die beiden Wege bleiben als Paar zusammen und rutschen
   notfalls gemeinsam in die naechste Zeile. */
.download__aktionen {
  display: inline-flex;
  flex: 0 0 auto;
  gap: .9rem;
}

.download__datei {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  font-weight: 500;
  color: var(--dunkel);
}

.download__aktion {
  font-size: .9rem;
  font-weight: 500;
  color: var(--gruen);
  text-decoration: underline;
  text-underline-offset: .2em;
}
.download__aktion:hover,
.download__aktion:focus-visible { color: var(--dunkel); }
.download__datei::before {
  content: "PDF";
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .04em;
  padding: .15rem .35rem;
  border-radius: .25rem;
  background: var(--gruen);
  color: var(--weiss);
}
.download__groesse { font-size: .85rem; color: var(--dunkel); opacity: .75; }
.download__fehlt   { font-size: .9rem; font-style: italic; color: var(--dunkel); opacity: .75; }
/* „Sicherheitsdatenblatt: nicht erforderlich" — eine Auskunft, kein Platzhalter */
.download__hinweis { font-size: .9rem; color: var(--dunkel); }

/* -- PDF-Schau: „Anzeigen" legt das PDF ueber die Seite.
   Groesse: fast das ganze Fenster, auf dem Telefon ganz. -- */

.pdfschau {
  width: min(92vw, 60rem);
  height: min(88vh, 52rem);
  max-width: none;
  max-height: none;
  padding: 0;
  border: 0;
  border-radius: var(--radius);
  background: var(--weiss);
  color: var(--dunkel);
  overflow: hidden;
}
.pdfschau[open] { display: flex; flex-direction: column; }
.pdfschau::backdrop { background: rgba(44, 54, 24, .55); }

.pdfschau__kopf {
  display: flex;
  align-items: center;
  flex: 0 0 auto;
  gap: 1rem;
  min-height: 3.4rem;
  padding: .5rem .7rem .5rem 1.2rem;
  background: var(--gruen);
  color: var(--mintweiss);
}

/* Ein langer Name darf den Kopf nicht auseinanderziehen —
   er wird gekuerzt, der volle Titel steht im PDF selbst. */
.pdfschau__titel {
  margin: 0;
  flex: 1 1 auto;
  min-width: 0;
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pdfschau__laden {
  flex: 0 0 auto;
  color: var(--mintweiss);
  font-size: .9rem;
  text-decoration: underline;
  text-underline-offset: .2em;
}
.pdfschau__laden:hover, .pdfschau__laden:focus-visible { color: var(--weiss); }

.pdfschau__zu {
  flex: 0 0 auto;
  width: 2.1rem;
  height: 2.1rem;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: .4rem;
  background: transparent;
  color: inherit;
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
}
.pdfschau__zu:hover, .pdfschau__zu:focus-visible { background: rgba(255, 255, 255, .18); }

.pdfschau__rahmen {
  display: block;
  flex: 1 1 auto;
  width: 100%;
  min-height: 0;
  border: 0;
  background: var(--weiss);
}

@media (max-width: 620px) {
  .pdfschau { width: 100vw; height: 100dvh; border-radius: 0; }
}

.tabelle-rahmen { overflow-x: auto; }

.artikeltabelle {
  width: 100%;
  border-collapse: collapse;
  font-size: .95rem;
}
.artikeltabelle th,
.artikeltabelle td {
  padding: .55rem .75rem;
  text-align: left;
  border-bottom: var(--linie);
  white-space: nowrap;
}
.artikeltabelle th { font-size: .85rem; font-weight: 700; color: var(--gruen); }
.artikeltabelle td:nth-child(2),
.artikeltabelle td:nth-child(3) { font-variant-numeric: tabular-nums; }
.artikeltabelle tr:last-child td { border-bottom: 0; }
.artikeltabelle .download__datei::before { display: none; }

@media (max-width: 620px) {
  .download { grid-template-columns: 90px minmax(0, 1fr); }
}


/* ------------------------------------------------------------
   MITGLIEDSCHAFTEN
   Logo und Name nebeneinander — das Logo allein sagt nicht jedem
   etwas. Uebernommen von leni-hydrokultur.de, Farben auf Blusana
   umgestellt. Der Pfeil fuer Links nach aussen sitzt am Namen,
   nicht am Link: im Raster bekaeme er sonst eine eigene Zelle.
   ------------------------------------------------------------ */
.mitglieder {
  padding: 28px 30px 30px;
  border-radius: var(--radius);
  background: var(--mint);
  border-left: 5px solid var(--gruen);
}

.mitglieder__titel {
  font-family: var(--ff-head);
  font-weight: 700;
  font-size: clamp(17px, 1.5vw, 20px);
  line-height: 1.3;
  color: var(--gruen);
  margin-bottom: 16px;
}

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

.mitglieder__liste a {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr);
  align-items: center;
  gap: 18px;
  padding: 12px 10px;
  border-radius: var(--radius-klein);
  color: inherit;
  text-decoration: none;
  transition: background-color .18s ease;
}

.mitglieder__liste a:hover { background: rgba(255, 255, 255, .55); }
.mitglieder__liste a:hover .mitglieder__name { text-decoration: underline; text-underline-offset: 3px; }

/* Feste Hoehe, damit die drei sehr unterschiedlich proportionierten
   Logos optisch gleich gross wirken und die Zeile nicht springt. */
.mitglieder__liste img {
  width: 100%;
  height: 58px;
  object-fit: contain;
}

.mitglieder__name { font-size: 16px; line-height: 1.45; }

.mitglieder__liste a[href^="http"] .mitglieder__name::after {
  content: "\2197";
  margin-left: .25em;
  font-size: .85em;
  line-height: 1;
}

@media (max-width: 900px) {
  .mitglieder { padding: 24px 22px 26px; }
}

@media (max-width: 560px) {
  .mitglieder__liste a { grid-template-columns: 80px minmax(0, 1fr); gap: 14px; }
  .mitglieder__liste img { height: 50px; }
}
@media print {
  .navi, .burger, .leiste, .fuss__social, .sprung,
  .nachoben, .trenner { display: none; }
  body { font-size: 11pt; color: #000; }
  .band { padding: 0; background: none; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 9pt; }
}
