/* ============================================================
   GEMÜSE-BALKON — gb-components.css
   Wiederverwendbare Komponenten-Styles für migrierten Content
   (außerhalb von Avadas Custom-CSS-Feld, da dieses moderne
   Properties wie display:grid/gap beim Kompilieren entfernt).
   Nutzt die --gb-*-Design-Tokens aus Avadas Custom CSS.
   ============================================================ */

/* Karten-Raster: Bild + Titel-Link + Text.
   Basis .gb-card-grid: 2 Spalten Desktop (z.B. "Pflege von Gemuesepflanzen").
   Modifier .gb-card-grid--3: 3 Spalten Desktop (z.B. "Zubehoer"), an
   .gb-card-grid dranhaengen: class="gb-card-grid gb-card-grid--3".
   Beide responsive: 3 -> 2 -> 1 Spalte je nach Breite, nie horizontal
   gequetscht auf Mobile. */
.gb-card-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--gb-space-lg, 32px);
  margin-top: var(--gb-space-lg, 32px);
}

.gb-card-grid--3 {
  grid-template-columns: repeat(3, 1fr);
}

.gb-card img {
  width: 100%;
  display: block;
  border-radius: var(--gb-radius-md, 12px);
  aspect-ratio: 16/9;
  object-fit: cover;
}

.gb-card h2 {
  text-align: center;
  margin: var(--gb-space-sm, 14px) 0 var(--gb-space-xs, 8px);
}

.gb-card p {
  text-align: center;
}

/* Tablet: 3-Spalten-Variante auf 2 Spalten reduzieren (Basis bleibt bei 2) */
@media (max-width: 1000px) {
  .gb-card-grid--3 {
    grid-template-columns: 1fr 1fr;
  }
}

/* Mobile: beide Varianten auf 1 Spalte, kein horizontales Quetschen */
@media (max-width: 700px) {
  .gb-card-grid,
  .gb-card-grid--3 {
    grid-template-columns: 1fr;
  }
}

/* Bild-Galerie-Reihe: mehrere Bilder nebeneinander, einheitliche Hoehe
   unabhaengig von Original-Seitenverhaeltnis/-Aufloesung (per aspect-ratio +
   object-fit:cover, crop statt Verzerrung). Ersetzt Avadas
   [fusion_images]-Galerie-Shortcode. Passt sich per auto-fit der Bildanzahl
   an, kein fester Spalten-Breakpoint noetig. */
.gb-img-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--gb-space-sm, 14px);
  margin: var(--gb-space-lg, 32px) 0;
}

.gb-img-row img {
  width: 100%;
  display: block;
  border-radius: var(--gb-radius-md, 12px);
  aspect-ratio: 16/9;
  object-fit: cover;
}

/* Text-Bild-Reihe: ein Absatz neben einem (meist Hochkant-)Foto, so wie es
   in aelteren Posts oft mit Handyfotos vorkommt. Anders als .gb-img-row wird
   das Bild NICHT auf ein festes Seitenverhaeltnis gecroppt, da es ein
   einzelnes bedeutungstragendes Foto ist, kein Vergleich mehrerer Bilder.
   Basis 3:2-Verhaeltnis (Text breiter). Modifier .gb-text-img-row--narrow
   fuer ein 3:1-Verhaeltnis (schmalere Bildspalte). Auf Mobile gestapelt. */
.gb-text-img-row {
  display: grid;
  grid-template-columns: 3fr 2fr;
  gap: var(--gb-space-lg, 32px);
  align-items: start;
  margin: var(--gb-space-lg, 32px) 0;
}

.gb-text-img-row--narrow {
  grid-template-columns: 3fr 1fr;
}

.gb-text-img-row img {
  width: 100%;
  display: block;
  border-radius: var(--gb-radius-md, 12px);
}

@media (max-width: 700px) {
  .gb-text-img-row,
  .gb-text-img-row--narrow {
    grid-template-columns: 1fr;
  }
}

/* ============================================================
   Sorten-Hub: filterbares Sorten-Verzeichnis (Suche, Kategorie-
   Chips, Zehrer-Typ-Chips, A-Z/Familie-Umschalter). Erste
   Verwendung: "Gemüsesorten auf dem Balkon". Reusable, da der
   Kräuter-Hub perspektivisch dasselbe Muster bekommen soll.
   Kategorie-Akzentfarben: Fruchtgemüse = --gb-orange (bereits
   Sorten-Akzent site-weit), Salate = --gb-green-mid, Wurzelgemüse
   = --gb-green-dark, Weiteres = --gb-green-lime. Für Kohlgemüse
   gibt es keinen eigenen Token -> Teal #5bb8a0 wiederverwendet
   (bisher nur als Zubehör-Akzent im Themen-Container genutzt,
   beide Kontexte erscheinen nie auf derselben Seite). */

.gb-sh-toolbar { margin: var(--gb-space-lg, 32px) 0; }

.gb-sh-hint {
  color: var(--gb-text-muted, #4a5a44);
  font-size: 13px;
  margin: 0 0 var(--gb-space-xs, 8px);
}

.gb-sh-toolbar-card {
  background: var(--gb-white, #fff);
  border: 1px solid var(--gb-border-soft, rgba(42,74,30,0.13));
  border-radius: var(--gb-radius-lg, 16px);
  box-shadow: var(--gb-shadow-card, 0 2px 12px rgba(0,0,0,0.06));
  padding: var(--gb-space-md, 20px);
  display: flex;
  flex-direction: column;
  gap: var(--gb-space-sm, 14px);
}

.gb-sh-search { max-width: 420px; width: 100%; position: relative; }
.gb-sh-search input {
  width: 100%;
  padding: 12px 16px 12px 44px;
  border-radius: var(--gb-radius-pill, 999px);
  border: 1.5px solid var(--gb-border-soft, rgba(42,74,30,0.13));
  background: var(--gb-cream, #f0ede4);
  color: var(--gb-text-heading, #1a4d0e);
  font-family: inherit;
  font-size: 14.5px;
}
.gb-sh-search input::placeholder { color: var(--gb-text-muted, #4a5a44); }
.gb-sh-search input:focus-visible { outline: 2px solid var(--gb-green-mid, #4a9635); border-color: var(--gb-green-mid, #4a9635); }
.gb-sh-search svg {
  position: absolute;
  left: 16px;
  top: 50%;
  transform: translateY(-50%);
  width: 16px;
  height: 16px;
  stroke: var(--gb-text-muted, #4a5a44);
  pointer-events: none;
}

.gb-sh-toolbar-top {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gb-space-sm, 14px);
  align-items: center;
  justify-content: space-between;
}
.gb-sh-toolbar-bottom {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  padding-top: var(--gb-space-sm, 14px);
  border-top: 1px solid var(--gb-border-soft, rgba(42,74,30,0.13));
}
.gb-sh-label {
  font-size: 12.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--gb-text-muted, #4a5a44);
  flex: none;
}

.gb-sh-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.gb-sh-chip {
  font-size: 13.5px;
  font-weight: 700;
  padding: 8px 15px;
  border-radius: var(--gb-radius-pill, 999px);
  border: 1.5px solid var(--gb-border-soft, rgba(42,74,30,0.13));
  background: transparent;
  color: var(--gb-text-muted, #4a5a44);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-family: inherit;
}
.gb-sh-chip-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--dot, var(--gb-green-mid)); flex: none; }
.gb-sh-chip[aria-pressed="true"] { background: var(--dot, var(--gb-green-mid)); border-color: var(--dot, var(--gb-green-mid)); color: #fff; }
.gb-sh-chip[aria-pressed="true"] .gb-sh-chip-dot { background: #fff; }

.gb-sh-viewtoggle { display: inline-flex; background: var(--gb-cream, #f0ede4); border-radius: var(--gb-radius-pill, 999px); padding: 3px; gap: 2px; flex: none; }
.gb-sh-viewtoggle button {
  font-size: 13px;
  font-weight: 700;
  padding: 7px 14px;
  border-radius: var(--gb-radius-pill, 999px);
  border: none;
  background: transparent;
  color: var(--gb-text-muted, #4a5a44);
  cursor: pointer;
  font-family: inherit;
}
.gb-sh-viewtoggle button[aria-pressed="true"] { background: var(--gb-white, #fff); color: var(--gb-text-heading, #1a4d0e); box-shadow: var(--gb-shadow-card, 0 2px 12px rgba(0,0,0,0.06)); }

.gb-sh-count { color: var(--gb-text-muted, #4a5a44); font-size: 13px; margin: var(--gb-space-xs, 8px) 0 0; }

.gb-sh-collection { margin-top: var(--gb-space-xl, 48px); }
.gb-sh-collection:first-of-type { margin-top: var(--gb-space-lg, 32px); }
.gb-sh-collection-head {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: var(--gb-space-md, 20px);
  padding-bottom: var(--gb-space-xs, 8px);
  border-bottom: 2.5px solid var(--accent, var(--gb-green-mid));
}
.gb-sh-collection-head h2 { margin: 0; font-size: 22px; }
.gb-sh-collection-count { color: var(--gb-text-muted, #4a5a44); font-size: 13.5px; }

.gb-sh-subgroup { margin-top: var(--gb-space-md, 20px); }
.gb-sh-subgroup:first-of-type { margin-top: 0; }
.gb-sh-subgroup-title { font-size: 12.5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--gb-text-muted, #4a5a44); margin-bottom: var(--gb-space-sm, 14px); }

.gb-sh-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--gb-space-md, 20px); }

.gb-sh-card {
  background: var(--gb-white, #fff);
  border: 1px solid var(--gb-border-soft, rgba(42,74,30,0.13));
  border-radius: var(--gb-radius, 14px);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  display: flex;
  flex-direction: column;
  transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}
.gb-sh-card:hover { transform: translateY(-3px); box-shadow: var(--gb-shadow-card-hover, 0 4px 20px rgba(0,0,0,0.10)); border-color: var(--accent, var(--gb-green-mid)); }

.gb-sh-card-media { aspect-ratio: 4/3; background: var(--accent-soft, var(--gb-cream)); position: relative; overflow: hidden; }
.gb-sh-card-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gb-sh-card-media svg { position: absolute; inset: 0; margin: auto; width: 46%; height: 46%; opacity: 0.55; }
.gb-sh-card-new {
  position: absolute;
  top: 10px;
  left: 10px;
  background: rgba(20,30,15,0.82);
  color: #fff;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 3px 8px;
  border-radius: var(--gb-radius-pill, 999px);
  z-index: 1;
}

.gb-sh-card-body { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.gb-sh-card-name { font-weight: 700; font-size: 18px; color: var(--gb-text-heading, #1a4d0e); }
.gb-sh-card-zehrer {
  align-self: flex-start;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 3px 9px;
  border-radius: var(--gb-radius-pill, 999px);
  background: var(--accent-soft, var(--gb-cream));
  color: var(--accent-ink, var(--gb-text-heading));
}
.gb-sh-card-fact { font-size: 13.5px; color: var(--gb-text-muted, #4a5a44); flex: 1; }
.gb-sh-card-fact--pending { font-style: italic; opacity: 0.75; }
.gb-sh-card-link { font-size: 13px; font-weight: 700; color: var(--accent-ink, var(--gb-green-mid)); display: flex; align-items: center; gap: 5px; margin-top: 2px; }
.gb-sh-card-link svg { width: 13px; height: 13px; transition: transform 0.15s ease; }
.gb-sh-card:hover .gb-sh-card-link svg { transform: translateX(3px); }

.gb-sh-card--cross {
  background: linear-gradient(160deg, var(--gb-green-dark, #1a4d0e) 0%, var(--gb-green-darker, #1a3d1d) 100%);
  justify-content: center;
  align-items: center;
  text-align: center;
  padding: 24px;
  gap: 10px;
}
.gb-sh-card--cross .gb-sh-card-name { color: #fff; }
.gb-sh-card--cross p { color: var(--gb-text-on-dark, #e8e4d8); font-size: 13.5px; margin: 0; }
.gb-sh-card--cross .gb-sh-card-link { color: var(--gb-green-lime, #a3c940); justify-content: center; }

.gb-sh-empty {
  display: none;
  padding: 48px 20px;
  text-align: center;
  color: var(--gb-text-muted, #4a5a44);
  border: 1.5px dashed var(--gb-border-soft, rgba(42,74,30,0.13));
  border-radius: var(--gb-radius-lg, 16px);
  margin-top: var(--gb-space-lg, 32px);
}
.gb-sh-empty.is-visible { display: block; }

@media (max-width: 620px) {
  .gb-sh-toolbar-top { flex-direction: column; align-items: stretch; }
  .gb-sh-viewtoggle { align-self: flex-start; }
}

/* Medien-Reihe: zwei gleich breite Spalten nebeneinander (Anbau-Seiten).
   Generischer Einsatz: Video+[gb_toc], Bild+Video, o.ae. - kein Crop,
   beide Kinder behalten ihr natuerliches Seitenverhaeltnis. Rein
   optionaler Wrapper, jedes Kind (inkl. [gb_toc]) funktioniert auch
   allein/volle Breite ohne diesen Wrapper. */
.gb-media-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--gb-space-lg, 32px);
  align-items: start;
  margin: var(--gb-space-lg, 32px) 0;
}

.gb-media-row img {
  width: 100%;
  display: block;
  border-radius: var(--gb-radius-md, 12px);
}

/* Wrapper-Div nur fuer ein direktes <img>-Kind in .gb-media-row: wpautop
   fuegt sonst eine verwaiste schliessende </p> zwischen einem bare <img>
   und einem direkt folgenden <div> ein (Grid bekommt ein drittes Phantom-
   Kind, Video/zweites Element rutscht in die naechste Zeile). Zwei <img>
   nebeneinander (siehe .gb-img-row) loest den Bug nicht aus - nur die
   Kombination img+div. Deshalb: <img> immer in .gb-media-img einpacken,
   sobald ein Geschwisterelement ein <div> ist (Video, etc.). */
.gb-media-img { display: block; }

@media (max-width: 700px) {
  .gb-media-row {
    grid-template-columns: 1fr;
  }
}

/* Checkliste (z.B. "haeufige Pflegefehler"): schlichte Liste mit
   kleinem Punkt-Icon statt Standard-Bullet. Ersetzt Avadas
   [fusion_checklist]/[fusion_li_item]. */
.gb-checklist {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.gb-checklist > li {
  position: relative;
  padding-left: 26px;
  color: var(--gb-text-body, #747474);
}

.gb-checklist > li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 7px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--gb-green-mid, #4a9635);
}

/* Bild-Paar mit Bildunterschrift: zwei (oder mehr) Fotos nebeneinander,
   jedes mit eigener kurzer Caption darunter (z.B. Wachstumsschritte im
   zeitlichen Vergleich, "vorher/nachher"). Anders als .gb-img-row (reine
   Bildergalerie ohne Text je Bild) und .gb-text-img-row (ein Fliesstext
   neben einem Foto). Semantisch figure/figcaption statt img+p. */
.gb-img-caption-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--gb-space-lg, 32px);
  margin: var(--gb-space-lg, 32px) 0;
}

.gb-img-caption-row figure {
  margin: 0;
}

.gb-img-caption-row img {
  width: 100%;
  display: block;
  border-radius: var(--gb-radius-md, 12px);
}

.gb-img-caption-row figcaption {
  text-align: center;
  font-style: italic;
  font-size: 14px;
  color: var(--gb-text-muted, #4a5a44);
  margin-top: 8px;
}

@media (max-width: 700px) {
  .gb-img-caption-row {
    grid-template-columns: 1fr;
  }
}

/* Modifier fuer genau 4 Bilder (z.B. Wachstumsschritte in 4 Etappen):
   auto-fit/minmax(220px) der Basisklasse braucht bei 4 Bildern mehr Breite
   als typische Content-Spalten bieten und bricht in 2 Reihen um. Erzwingt
   stattdessen immer exakt 4 gleich breite Spalten (Bilder werden schmaler,
   nicht die Reihe umgebrochen) - entspricht dem Original-Avada-Verhalten
   mit vier festen 1_4-Spalten. Sebastian, 14.07.2026 (Minze). */
.gb-img-caption-row--4 {
  grid-template-columns: repeat(4, 1fr);
}

@media (max-width: 700px) {
  .gb-img-caption-row--4 {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* Aktivitäts-Box: gruppiert mehrere Teilschritte eines Themas (z.B. alle
   Einzelschritte der Anzucht) sichtbar in einem eigenen Kasten, damit der
   rote Faden einer langen Seite (Anzucht -> Anbau -> Ernte) beim Scrollen
   leichter zu verfolgen bleibt (Sebastian, 14.07.2026: bewusste Absicht
   hinter Avadas [fusion_checklist type="icons"] mit betitelten Eintraegen).
   Nicht zu verwechseln mit .gb-checklist (kurze Einzeiler ohne eigene
   Ueberschrift, z.B. Ernte-Kriterien) - .gb-activity-box ist fuer Eintraege
   mit eigenem Titel + Absatztext. Kommt vermutlich bei Kraeuter-Seiten und
   manchen Beitraegen wieder vor. */
.gb-activity-box {
  background: var(--gb-cream, #f0ede4);
  border: 1px solid var(--gb-border-soft, rgba(42,74,30,0.13));
  border-radius: var(--gb-radius-lg, 16px);
  padding: var(--gb-space-lg, 32px);
  margin: var(--gb-space-lg, 32px) 0;
  display: flex;
  flex-direction: column;
  gap: var(--gb-space-lg, 32px);
}

.gb-activity-box-item {
  display: flex;
  gap: 16px;
  align-items: flex-start;
}

.gb-activity-box-icon {
  flex: none;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--gb-green-mid, #4a9635);
  display: flex;
  align-items: center;
  justify-content: center;
}

.gb-activity-box-icon svg {
  width: 17px;
  height: 17px;
  stroke: #fff;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.gb-activity-box-item h3 {
  margin: 0 0 6px;
  font-size: 17px;
  color: var(--gb-text-heading, #1a4d0e);
}

.gb-activity-box-item p {
  margin: 0;
  color: var(--gb-text-body, #747474);
}

@media (max-width: 600px) {
  .gb-activity-box-item {
    flex-direction: column;
    gap: 8px;
  }
}

/* .gb-activity-box kann auch den ganzen Abschnitt umfassen (H2-Titel +
   Einleitungstext/Video + Teilschritte), nicht nur die Teilschritte
   allein (Sebastian, 14.07.2026: soll wie ein zusammenhaengendes Paket
   wirken, nicht durch ein dazwischenliegendes Bild getrennt). Verschachtelte
   .gb-media-row (Einleitung Text+Video, oder Text+Bild innerhalb eines
   einzelnen Eintrags) braucht eigene Abstandsregeln, da .gb-activity-box
   bereits per flex-gap Abstand zwischen den direkten Kindern erzeugt. */
.gb-activity-box > h2:first-child,
.gb-activity-box > h3:first-child {
  margin-top: 0;
}

.gb-activity-box > .gb-media-row {
  margin: 0;
}

.gb-activity-box-item .gb-media-row {
  margin: var(--gb-space-sm, 14px) 0 0;
}

/* Icon-Font fuer .gb-activity-box: selbst gehostet aus dem bereits
   vorhandenen Icomoon-Set unter wp-content/uploads/fusion-icons/ (von
   Sebastian selbst via icomoon.io erstellt und bewusst pro Textabschnitt
   ausgewaehlt - physisch unabhaengig von Avada/Fusion Builder, bisher nur
   ueber Avadas Custom-Icon-Feature eingebunden). Eigene @font-face-
   Deklaration hier, damit die Icons auch nach einer moeglichen
   Avada-Abloesung weiter funktionieren, ohne Fusion-Builder-Laufzeit.
   Aktuell nur die 5 fuer Basilikum genutzten Icons definiert - bei Bedarf
   weitere Codepoints aus derselben style.css (gleicher Font-Ordner)
   ergaenzen, gleiches Muster. */
@font-face {
  font-family: 'gb-icons';
  src: url('/wp-content/uploads/fusion-icons/icomoon_custom_set-v1.0-1/fonts/icomoon_custom_set.woff') format('woff'),
       url('/wp-content/uploads/fusion-icons/icomoon_custom_set-v1.0-1/fonts/icomoon_custom_set.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
  font-display: block;
}

.gb-icon {
  font-family: 'gb-icons' !important;
  speak: never;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.gb-icon-calendar:before { content: "\e953"; }
.gb-icon-inbox:before { content: "\e9fe"; }
.gb-icon-seedling:before { content: "\ea63"; }
.gb-icon-leaf:before { content: "\e9f3"; }
.gb-icon-hand-lizard:before { content: "\e917"; }
.gb-icon-hands-wash:before { content: "\ea51"; }
.gb-icon-braille:before { content: "\ea50"; }
.gb-icon-store:before { content: "\ea4e"; }
.gb-icon-spa:before { content: "\ea4b"; }
.gb-icon-edit:before { content: "\e9f5"; }

.gb-activity-box-icon {
  color: #fff;
  font-size: 16px;
}

/* CTA-Box mit Hintergrundbild: fuer externe Partner-Empfehlungen mit
   Button (z.B. Wurmkiste.at auf der Wurmkompostierer-Seite). Bild wird
   per Inline-style="background-image:url(...)" pro Instanz gesetzt, da
   es sich um Content handelt (kein wiederverwendbares Layout-Detail).
   Sebastian, 15.07.2026 (Zubehoer-Batch). */
.gb-cta-box {
  position: relative;
  border-radius: var(--gb-radius-lg, 16px);
  padding: 48px 24px;
  margin: var(--gb-space-lg, 32px) 0;
  text-align: center;
  color: #fff;
  background-size: cover;
  background-position: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  overflow: hidden;
}

.gb-cta-box::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.4);
}

.gb-cta-box > * {
  position: relative;
  z-index: 1;
}

.gb-cta-box p {
  margin: 0;
  font-size: 20px;
  font-weight: 700;
}

.gb-cta-button {
  display: inline-block;
  background: var(--gb-green-mid, #4a9635);
  color: #fff;
  padding: 12px 28px;
  border-radius: var(--gb-radius-pill, 999px);
  text-decoration: none;
  font-weight: 600;
}

.gb-cta-button:hover {
  background: var(--gb-green-dark, #1a3d1d);
}

/* Homepage "Themen"-Kachelleiste (ersetzt die frueheren 3 Feature-Karten
   + 4-spaltige "Themen auf dem Gemuese-Balkon"-Zeile, die teils auf
   dieselben Ziele verlinkten). Sebastian, 17.07.2026. */
.gb-topics-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 1.1rem;
}

@media (max-width: 980px) {
  .gb-topics-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 620px) {
  .gb-topics-grid { grid-template-columns: repeat(2, 1fr); }
}

.gb-topic-card {
  position: relative;
  background: var(--gb-white, #fff);
  border: 1px solid var(--gb-border-soft, rgba(42,74,30,0.13));
  border-radius: var(--gb-radius-lg, 16px);
  box-shadow: var(--gb-shadow-card, 0 2px 12px rgba(0,0,0,0.06));
  padding: 1.5rem 1.25rem;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  text-decoration: none;
  transition: transform 0.15s, box-shadow 0.15s, border-color 0.15s;
}

/* 18.07.2026: .gb-topic-card was originally the <a> itself, but wrapping a
   <h3>/<p> pair directly inside an <a> breaks under wpautop (block-level tags
   nested in an inline element get split apart into separate paragraphs,
   regardless of indentation/blank-line fixes - a different trigger than the
   already-known ones). Restructured to a plain <div> card with the <a> only
   around the title text; this "stretched link" makes the whole card
   clickable again via the invisible ::after overlay below. */
.gb-topic-card-title a {
  color: inherit;
  text-decoration: none;
}
.gb-topic-card-title a::after {
  content: '';
  position: absolute;
  inset: 0;
}

.gb-topic-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--gb-shadow-card-hover, 0 4px 20px rgba(0,0,0,0.10));
  border-color: var(--gb-green-mid, #4a9635);
}

.gb-topic-card--featured {
  background: linear-gradient(150deg, var(--gb-green-dark, #1a4d0e), var(--gb-green-mid-dark, #2d7318));
  border-color: transparent;
}

.gb-topic-card--featured .gb-topic-card-title,
.gb-topic-card--featured .gb-topic-card-text {
  color: rgba(255,255,255,0.92);
}

.gb-topic-card--featured .gb-topic-icon {
  background: rgba(255,255,255,0.16);
  color: #fff;
}

.gb-topic-card--featured .gb-topic-arrow {
  color: var(--gb-green-lime, #a3c940);
}

.gb-topic-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--gb-radius-md, 12px);
  background: var(--gb-green-tint, #dff0d4);
  display: flex;
  align-items: center;
  justify-content: center;
  flex: none;
}

.gb-topic-icon .gb-icon {
  font-size: 20px;
  color: var(--gb-green-mid, #4a9635);
}

.gb-topic-card-title {
  font-size: 1.02rem;
  font-weight: 700;
  color: var(--gb-text-heading, #1a4d0e);
  line-height: 1.25;
  margin: 0;
}

.gb-topic-card-text {
  font-size: 0.82rem;
  color: var(--gb-text-muted, #4a5a44);
  line-height: 1.55;
  flex: 1;
  margin: 0;
}

.gb-topic-arrow {
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--gb-orange, #e07b2a);
}

/* Homepage "Letzte Beitraege": Fusion-Wrapper entfernt, die eigentliche
   Post-Auflistung bleibt Avadas [fusion_recent_posts]-Shortcode (wie
   AAWP-Boxen unveraendert als Shortcode-Text behandelt). Nur das
   Grid-Layout ist neu. Sebastian, 17.07.2026. */
.gb-recent-grid {
  display: grid;
  grid-template-columns: 3fr 2fr;
  gap: 1.75rem;
}

@media (max-width: 780px) {
  .gb-recent-grid { grid-template-columns: 1fr; }
}

/* Homepage "Die Idee des Gemuese-Balkons": gleiches Split-Karten-Muster
   wie der Hero oben (Bild + gruener Verlauf), gespiegelt. Sebastian,
   17.07.2026. */
#gb-idee {
  display: flex;
  background: var(--gb-cream-warm, #ede8dd);
  border-radius: var(--gb-radius-xl, 28px);
  overflow: hidden;
}

#gb-idee .gb-idee-media {
  flex: 0 0 40%;
  background-size: cover;
  background-position: center;
  min-height: 260px;
}

#gb-idee .gb-idee-text {
  flex: 1;
  background: linear-gradient(160deg, var(--gb-green-dark, #1a4d0e), var(--gb-green-mid-dark, #2d7318) 60%, var(--gb-green-mid, #4a9635));
  padding: 2.75rem;
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
  justify-content: center;
}

#gb-idee .gb-idee-rule {
  display: block;
  width: 32px;
  height: 3px;
  background: var(--gb-orange, #e07b2a);
  border-radius: 2px;
}

#gb-idee h2 {
  font-size: 1.55rem;
  font-weight: 700;
  color: #fff;
  margin: 0;
  line-height: 1.25;
}

#gb-idee h2 em {
  color: var(--gb-green-lime, #a3c940);
  font-style: normal;
}

#gb-idee p {
  color: rgba(255,255,255,0.85);
  font-size: 0.92rem;
  line-height: 1.75;
  margin: 0;
  max-width: 56ch;
}

.gb-idee-cta {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: #fff;
  color: var(--gb-green-dark, #1a4d0e);
  font-weight: 700;
  font-size: 0.85rem;
  padding: 0.85rem 1.5rem;
  border-radius: var(--gb-radius-pill, 999px);
  text-decoration: none;
  box-shadow: 0 4px 14px rgba(0,0,0,0.25);
  margin-top: 0.4rem;
  transition: transform 0.15s, box-shadow 0.15s;
}

.gb-idee-cta:hover {
  transform: translateY(-1px);
  box-shadow: 0 5px 16px rgba(0,0,0,0.28);
}

@media (max-width: 860px) {
  #gb-idee { flex-direction: column; }
  #gb-idee .gb-idee-media { flex: none; height: 220px; }
}

/* Kraeuter-Hub (180): Vorteile-Box, Video+Kurzuebersicht-Zeile, Equipment-/Pflege-Karten,
   Naehrstofftabelle, Aussaatkalender-Mini-Teaser. Sebastian, 17.07.2026. Wiederverwendbar
   fuer aehnliche Hub-Seiten (z.B. falls weitere Sorten-Hubs redesignt werden). */
.gb-benefits {
  background: var(--gb-cream, #f0ede4);
  border-radius: var(--gb-radius-lg, 16px);
  padding: 28px 32px;
  margin: 24px 0;
}
.gb-benefits h3 { font-size: 1rem; margin: 0 0 14px; color: var(--gb-text-heading, #1a4d0e); }
.gb-benefits ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 10px; }
.gb-benefits li { display: flex; gap: 10px; font-size: 0.92rem; color: var(--gb-text-muted, #4a5a44); }
.gb-benefits li::before { content: "\2713"; color: var(--gb-green-mid, #4a9635); font-weight: 700; flex: none; }

.gb-video-nav-row { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; align-items: start; }
@media (max-width: 700px) { .gb-video-nav-row { grid-template-columns: 1fr; } }
.gb-video-nav-row .video-cap { text-align: center; font-style: italic; color: var(--gb-text-muted, #4a5a44); font-size: 0.88rem; margin: 10px 0 18px; }

.gb-herb-nav {
  background: var(--gb-white, #fff);
  border: 1px solid var(--gb-border-soft, rgba(42,74,30,0.13));
  border-radius: var(--gb-radius-lg, 16px);
  padding: 20px 22px;
  box-shadow: var(--gb-shadow-card, 0 2px 12px rgba(0,0,0,0.06));
}
.gb-herb-nav h3 { font-size: 0.95rem; margin: 0 0 12px; color: var(--gb-text-heading, #1a4d0e); }
.gb-herb-nav .chips { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 12px; }
.gb-herb-chip {
  background: var(--gb-cream, #f0ede4);
  border: 1px solid var(--gb-border-soft, rgba(42,74,30,0.13));
  border-radius: var(--gb-radius-pill, 999px);
  padding: 5px 12px;
  font-size: 0.8rem;
  color: var(--gb-text-heading, #1a4d0e);
  text-decoration: none;
}
.gb-herb-chip.is-plain { color: var(--gb-text-muted, #4a5a44); background: transparent; border-style: dashed; }
.gb-herb-nav .more { font-size: 0.82rem; }

.gb-equip-grid { display: grid; grid-template-columns: 1fr; gap: 24px; margin: 20px 0; }
.gb-equip-card {
  background: var(--gb-white, #fff);
  border: 1px solid var(--gb-border-soft, rgba(42,74,30,0.13));
  border-radius: var(--gb-radius-lg, 16px);
  padding: 22px;
  box-shadow: var(--gb-shadow-card, 0 2px 12px rgba(0,0,0,0.06));
}
.gb-equip-card h3 { font-size: 1.05rem; margin: 0 0 8px; color: var(--gb-text-heading, #1a4d0e); }
.gb-equip-card p { font-size: 0.92rem; color: var(--gb-text-muted, #4a5a44); margin: 0 0 12px; }

.gb-tip-grid { display: grid; grid-template-columns: 1fr; gap: 18px; margin: 20px 0; }
.gb-tip-card {
  background: var(--gb-white, #fff);
  border: 1px solid var(--gb-border-soft, rgba(42,74,30,0.13));
  border-radius: var(--gb-radius-lg, 16px);
  padding: 20px;
  box-shadow: var(--gb-shadow-card, 0 2px 12px rgba(0,0,0,0.06));
}
.gb-tip-card h3 { font-size: 0.98rem; margin: 0 0 8px; color: var(--gb-text-heading, #1a4d0e); }
.gb-tip-card p { font-size: 0.88rem; color: var(--gb-text-muted, #4a5a44); margin: 0 0 10px; line-height: 1.6; }

.gb-aawp-chip {
  display: inline-block;
  background: var(--gb-orange-tint, #fbe3cf);
  color: #8a4a12;
  font-size: 0.72rem;
  font-weight: 700;
  padding: 5px 12px;
  border-radius: var(--gb-radius-pill, 999px);
  margin-top: 6px;
}

.gb-nutrient-table { width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 0.85rem; background: var(--gb-white, #fff); border-radius: var(--gb-radius-md, 12px); overflow: hidden; box-shadow: var(--gb-shadow-card, 0 2px 12px rgba(0,0,0,0.06)); }
.gb-nutrient-table th { background: var(--gb-cream, #f0ede4); color: var(--gb-text-heading, #1a4d0e); text-align: left; padding: 10px 14px; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.04em; }
.gb-nutrient-table td { padding: 8px 14px; border-top: 1px solid var(--gb-border-soft, rgba(42,74,30,0.13)); color: var(--gb-text-muted, #4a5a44); }
.gb-nutrient-table td a { color: var(--gb-text-heading, #1a4d0e); font-weight: 600; }
.gb-badge { display: inline-block; padding: 2px 9px; border-radius: var(--gb-radius-pill, 999px); font-size: 0.74rem; font-weight: 600; }
.gb-badge--hoch { background: var(--gb-orange-tint, #fbe3cf); color: #8a4a12; }
.gb-badge--maessig { background: var(--gb-cream, #f0ede4); color: var(--gb-text-heading, #1a4d0e); }
.gb-badge--niedrig { background: var(--gb-green-tint, #dff0d4); color: var(--gb-green-mid-dark, #2d7318); }

.gb-aussaat-mini {
  background: linear-gradient(160deg, #f4f8f0, #eef5ea 60%, var(--gb-cream, #f0ede4));
  border-radius: var(--gb-radius-xl, 28px);
  padding: 2rem;
  display: flex;
  gap: 1.5rem;
  align-items: center;
}
@media (max-width: 700px) { .gb-aussaat-mini { flex-direction: column; align-items: stretch; } }
.gb-aussaat-mini .txt { flex: 1; }
.gb-aussaat-mini h2 { font-size: 1.4rem; margin: 0 0 6px; }
.gb-aussaat-mini p { font-size: 0.88rem; color: var(--gb-text-muted, #4a5a44); margin: 0; }
.gb-aussaat-cta {
  white-space: nowrap;
  background: var(--gb-green-dark, #1a4d0e);
  color: #fff;
  padding: 0.8rem 1.4rem;
  border-radius: var(--gb-radius-pill, 999px);
  text-decoration: none;
  font-weight: 700;
  font-size: 0.85rem;
}

.gb-faq-item { border-bottom: 1px solid var(--gb-border-soft, rgba(42,74,30,0.13)); padding: 16px 0; }
.gb-faq-item h3 { font-size: 0.98rem; margin: 0 0 6px; color: var(--gb-text-heading, #1a4d0e); }
.gb-faq-item p { font-size: 0.87rem; color: var(--gb-text-muted, #4a5a44); margin: 0; }

/* Vertikaler Abstand zwischen den grossen Hub-Abschnitten (Anbauen-/Kraeuter-Hub).
   Noetig geworden, seit die Fusion-Builder-Container/Row-Huelle (die frueher den
   Abstand automatisch mitbrachte) beim Aufraeumen entfernt wurde. Sebastian,
   17.07.2026. */
.gb-hub-section { margin-top: var(--gb-space-2xl, 60px); }
.gb-hub-section:first-of-type { margin-top: 0; }

/* Prominente Such-/Kategorie-Box auf der Blog-Seite (18.07.2026) - Sebastian:
   der bisherige schlichte Bereich fiel zu wenig auf, Besucher sollen aktiv
   zum Recherchieren/Stoebern angeregt werden. Ersetzt den vorherigen
   .gb-divider-Trenner (die Box selbst schafft schon genug visuelle Trennung). */
.gb-blog-search-box {
  background: var(--gb-cream, #f5f3ea);
  border-radius: var(--gb-radius, 14px);
  box-shadow: var(--gb-shadow-card);
  padding: 40px 32px;
  text-align: center;
  margin: var(--gb-space-xl, 40px) 0;
}
.gb-blog-search-box h2 {
  font-size: 28px;
  margin: 0 0 8px 0;
}
.gb-blog-search-box > p {
  margin: 0 0 28px 0;
  color: var(--gb-text-muted, #4a5a44);
  font-size: 16px;
}
.gb-blog-search-row {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 16px;
  max-width: 700px;
  margin: 0 auto;
  align-items: center;
}
.gb-blog-search-row .fusion-search-form-content { display: flex; }
/* Avada's own search-form CSS drives sizing via --form_* custom properties
   with matching specificity - html body prefix + !important needed to
   reliably win (same technique already used for AAWP overrides). */
html body .gb-blog-search-row input.s {
  height: 52px !important;
  font-size: 16px !important;
  padding: 0 20px !important;
}
html body .gb-blog-search-row .fusion-search-submit {
  height: 52px !important;
  width: 52px !important;
}
.gb-blog-search-row .gb-category-dropdown {
  height: 52px;
  font-size: 15px;
}
.gb-blog-more-heading {
  text-align: center;
  margin: 0 0 var(--gb-space-lg, 32px) 0;
}
@media (max-width: 640px) {
  .gb-blog-search-row {
    grid-template-columns: 1fr;
  }
}

/* Natives Kategorien-Dropdown (Blog-Seite, 18.07.2026) - Ersatz fuer Avadas
   [fusion_widget type="WP_Widget_Categories"], das als bare Shortcode ausserhalb
   einer Fusion-Builder-Column nicht funktioniert. Rahmen/Radius angelehnt an
   Avadas Such-Feld (border_radius=10) daneben, fuer optische Konsistenz. */
.gb-category-dropdown {
  display: block;
  width: 100%;
  padding: 12px 16px;
  border-radius: 10px;
  border: 1px solid var(--gb-border-soft, rgba(42,74,30,0.13));
  background: var(--gb-white, #fff);
  font-family: inherit;
  font-size: 15px;
  color: var(--gb-text-body, #333);
  cursor: pointer;
}

/* Homepage (38): eigener Breiten-Container, da die Seite ein dediziertes Avada
   Theme-Builder-Layout ("Homepage_Statseite_Layout") nutzt, das die "content"-
   Sektion nicht ueberschreibt -- dadurch fehlt der sonst ueberall via Fusion-
   Builder-Row erzeugte Seitenabstand komplett. Werte per Live-Messung auf
   Blog/Anbauen-Hub/Basilikum ermittelt: NICHT die 3/4-Inhaltsspalte (die hat
   eine zusaetzliche, fuer Artikel-Seiten mit Sidebar-Reservierung gedachte
   Verengung, die auf einer Landingpage ohne Sidebar zu schmal wirkt), sondern
   die aeussere Fusion-Builder-Row, die alle Seiten gemeinsam als Randmass
   nutzen: Desktop >=1100px ca. 92.5% vom Viewport, darunter (Avadas
   "medium"/"small") ca. 92%.
   "Breakout"-Technik noetig (left:50vw + transform statt reinem max-width):
   der generische `.fusion-row`-Elternwrapper dieser Seite (aus dem WP-
   Seiten-Template, nicht aus einer echten Fusion-Builder-Row) hat selbst
   schon ein hartes max-width:90%-Limit, das enger ist als die Zielbreite --
   ein simples max-width auf einem Kind kann diese Elternbreite nie
   ueberschreiten. left:50vw ist Viewport- statt Elternbreiten-relativ und
   umgeht dieses Limit; alle Vorfahren haben overflow:visible (geprueft),
   daher wird nichts abgeschnitten. */
.gb-page-container {
  width: 92.5vw;
  position: relative;
  left: 50%;
  margin-left: -46.25vw;
}
@media (max-width: 1099px) {
  .gb-page-container {
    width: 92vw;
    margin-left: -46vw;
  }
}

/* Konsistenter Sektionsabstand zwischen den 7 Homepage-Bloecken, analog zum
   60px-Abstand zwischen .gb-hub-section-Bloecken auf Anbauen-Hub/Kraeuter-Hub
   (Seite 18/180) -- vorher hatten die Bloecke nur eigenes Innenpadding, aber
   keinen Aussenabstand zueinander (z. B. Hero-Hintergrund stiess direkt an
   den Themen-Hintergrund ohne Luft dazwischen). */
.gb-page-container > * + * {
  margin-top: 60px;
}

/* Shop-Seite (1379): dezente gruene Willkommens-Box um die Intro-Absaetze --
   Original nutzte eine Fusion-Column mit border/gradient in aehnlichem Gruenton,
   hier mit --gb-*-Tokens nachgebaut. Bewusst NUR fuer die reine Text-Intro (kein
   AAWP-Widget darin) -- Produkt-Abschnitte mit AAWP-Widget bleiben unboxed, siehe
   etablierte Konvention (kein Karten-Look um Abschnitte mit AAWP-Box). */
.gb-shop-intro {
  border: 2px solid var(--gb-green-mid, #4a9635);
  border-radius: var(--gb-radius-lg, 16px);
  background: var(--gb-green-tint, #dff0d4);
  padding: 24px 28px;
  margin-bottom: 40px;
}
.gb-shop-intro h1 {
  margin-top: 0;
}
.gb-shop-intro p:last-child {
  margin-bottom: 0;
}
