/*
Theme Name: Neuland
Theme URI: https://www.initiative-neuland.de
Author: Initiative Neuland
Author URI: https://www.initiative-neuland.de
Description: Child-Theme von Twenty Twenty-Five im Corporate Design von Initiative Neuland. Farben, Schriften, Abstaende und Raster kommen aus theme.json; diese Datei enthaelt nur, was theme.json nicht abdecken kann. Massgeblich ist docs/ci-design.md.
Template: twentytwentyfive
Version: 1.0.1
Requires at least: 6.6
Tested up to: 6.8
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: neuland
*/

/* ============================================================
   Grundregeln aus docs/ci-design.md
   - border-radius: 0 ueberall, keine Schatten, keine Verlaeufe
   - Pro Bildschirm hoechstens ein gelbes Element. Ausnahme: das Logo
   - Auf Gelb und Salbei steht immer Tinte, nie Weiss
   ============================================================ */

:where(.wp-site-blocks) *,
:where(.wp-site-blocks) *::before,
:where(.wp-site-blocks) *::after { border-radius: 0; box-shadow: none; }

/* WordPress legt auf jede Tabellenzelle einen 1px-Rahmen in der jeweiligen
   Textfarbe. Der wird hier zurueckgenommen; die Trennlinien setzt jeder
   Baustein selbst. Ohne das erscheinen um jede Zelle Striche in wechselnden
   Farben, die wie Luecken in den Tabellenlinien aussehen. */
.wp-block-table td, .wp-block-table th { border: 0; }

/* Zeilenlaenge: keine Zeichenbegrenzung (entschieden am 13.09.2026).
   Jeder Textblock ist so breit wie das Raster und beginnt an derselben linken
   Kante. Eine engere Maximalbreite wuerde den Block im constrained Layout
   zentrieren und dadurch gegenueber den Ueberschriften einruecken. */

/* ---------- Abschnittsrhythmus ----------
   Papier (Einstieg) -> Salbei hell (Orientierung) -> Tinte (Haltung) -> Papier
   Nie zwei dunkle Bloecke hintereinander. */
.neuland-abschnitt { padding-block: 72px; }
@media (max-width: 640px) { .neuland-abschnitt { padding-block: 48px; } }

.neuland-auf-tinte { background: var(--wp--preset--color--tinte); color: var(--wp--custom--auf-tinte); }
.neuland-auf-tinte :is(h1,h2,h3) { color: #fff; }
.neuland-auf-salbei { background: var(--wp--preset--color--salbei-hell); color: var(--wp--custom--auf-salbei-hell); }
.neuland-auf-salbei :is(h1,h2,h3) { color: var(--wp--custom--auf-salbei-hell); }

/* ---------- Typografie-Details ---------- */
.neuland-lead { font-weight: 300; font-size: var(--wp--preset--font-size--lead); line-height: 1.6; }

.neuland-eyebrow {
  font-family: var(--wp--preset--font-family--sora);
  font-weight: 600; font-size: 11px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--wp--custom--label-salbei-hell);
  margin: 0 0 16px;
}
.neuland-auf-tinte .neuland-eyebrow { color: var(--wp--preset--color--salbei); }

/* Salbei-Unterstrich auf dem Schluesselwort der H1 */
.neuland-unterstrich { box-shadow: inset 0 -9px 0 var(--wp--preset--color--salbei); }

.neuland-h2-display {
  font-weight: 200; font-size: var(--wp--preset--font-size--display);
  letter-spacing: -.035em; line-height: 1.1;
}

/* ---------- Buttons ---------- */
/* Mindesthoehe statt fester Hoehe: bricht der Text um, waechst der Button mit (seit 1.0.1) */
.wp-block-button .wp-block-button__link {
  display: inline-flex; align-items: center; justify-content: center; text-align: center;
  min-height: 44px; line-height: 1.3; padding-block: 10px;
}

.wp-block-button.is-style-umriss .wp-block-button__link {
  background: transparent; color: var(--wp--preset--color--tinte);
  border: 1.5px solid var(--wp--preset--color--tinte);
}
.wp-block-button.is-style-umriss .wp-block-button__link:hover {
  background: var(--wp--preset--color--tinte); color: var(--wp--preset--color--papier);
}
.neuland-auf-tinte .wp-block-button.is-style-umriss .wp-block-button__link {
  color: #fff; border-color: var(--wp--preset--color--salbei);
}
.neuland-auf-tinte .wp-block-button.is-style-umriss .wp-block-button__link:hover {
  background: var(--wp--preset--color--salbei); color: var(--wp--preset--color--tinte);
}
.wp-block-button.is-style-sekundaer .wp-block-button__link {
  background: var(--wp--preset--color--salbei-hell); color: var(--wp--preset--color--tinte);
}

/* ---------- Textlink mit Pfeil ---------- */
.neuland-textlink {
  font-family: var(--wp--preset--font-family--sora);
  font-weight: 600; font-size: 15px;
  color: var(--wp--preset--color--tinte); text-decoration: none;
  border-bottom: 2px solid var(--wp--preset--color--signal); padding-bottom: 1px;
}
.neuland-auf-tinte .neuland-textlink { color: #fff; border-bottom-color: var(--wp--preset--color--salbei); }
.neuland-auf-salbei .neuland-textlink { color: var(--wp--custom--auf-salbei-hell); }

/* ---------- Badge ---------- */
.neuland-badge {
  display: inline-block; font-family: var(--wp--preset--font-family--sora);
  font-weight: 600; font-size: 11px; letter-spacing: .12em; text-transform: uppercase;
  background: var(--wp--preset--color--salbei); color: var(--wp--preset--color--tinte);
  padding: 5px 10px;
}

/* ---------- Liste mit Linien ---------- */
.neuland-linien { list-style: none; margin: 0; padding: 0; }
.neuland-linien > li { padding: 18px 0; border-top: 1px solid var(--wp--preset--color--linie); }
.neuland-linien > li:first-child { border-top: 0; }
.neuland-linien b, .neuland-linien strong {
  font-family: var(--wp--preset--font-family--sora); font-weight: 600; font-size: 17px;
}
.neuland-auf-tinte .neuland-linien > li { border-top-color: var(--wp--custom--rahmen-tinte); }
.neuland-auf-salbei .neuland-linien > li { border-top-color: rgba(62,100,96,.28); }


/* ---------- Chips: kurze Begriffe nebeneinander ----------
   Fuer Aufzaehlungen aus Stichworten, etwa die Kompetenzfelder im
   Trainerprofil. Die Liste mit Linien ist fuer ganze Saetze gedacht;
   bei vier Stichworten entsteht daraus eine Leiter aus Weissraum. */
.neuland-chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.neuland-chips > li {
  font-family: var(--wp--preset--font-family--sora); font-weight: 600; font-size: 13px;
  line-height: 1.3; padding: 7px 12px;
  background: var(--wp--preset--color--salbei-hell); color: var(--wp--preset--color--tinte);
}
.neuland-auf-salbei .neuland-chips > li { background: var(--wp--preset--color--papier); }
.neuland-auf-tinte .neuland-chips > li { background: var(--wp--custom--rahmen-tinte); color: #fff; }

/* ---------- Fakten-Block ----------
   Als core/table gebaut, damit Kathrin ihn im Editor bearbeiten kann.
   Spalte 1 ist das Label, Spalte 2 der Wert. Keine Kopfzeile. */
.neuland-fakten { width: 100%; border-collapse: collapse; }
.neuland-fakten table { width: 100%; border-collapse: collapse; }
.neuland-fakten :is(td, th) {
  border: 0; border-top: 1px solid rgba(62,100,96,.28);
  padding: 14px 16px 14px 0; vertical-align: top; text-align: left;
}
.neuland-fakten tr:first-child :is(td, th) { border-top: 0; }
.neuland-fakten td:first-child, .neuland-fakten th:first-child {
  width: 200px;
  font-family: var(--wp--preset--font-family--sora);
  font-weight: 600; font-size: 11px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--wp--custom--label-salbei-hell); padding-top: 18px;
}
@media (max-width: 640px) {
  .neuland-fakten :is(table, tbody, tr, td, th) { display: block; width: auto; }
  .neuland-fakten tr { border-top: 1px solid rgba(62,100,96,.28); padding: 12px 0; }
  .neuland-fakten tr:first-child { border-top: 0; padding-top: 0; }
  .neuland-fakten :is(td, th) { border-top: 0; padding: 0; }
  .neuland-fakten td:first-child, .neuland-fakten th:first-child {
    width: auto; padding-top: 0; margin-bottom: 2px;
  }
}

/* Nur Kompakt-Workshops: Icon in der ersten Spalte.
   Keine Emoji, einfarbige SVG in Stahl. */
.neuland-fakten.hat-icons td:first-child, .neuland-fakten.hat-icons th:first-child {
  width: 44px; padding-top: 16px;
}
.neuland-fakten.hat-icons td:nth-child(2), .neuland-fakten.hat-icons th:nth-child(2) {
  width: 200px;
  font-family: var(--wp--preset--font-family--sora);
  font-weight: 600; font-size: 11px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--wp--custom--label-salbei-hell); padding-top: 18px;
}
.neuland-fakten.hat-icons svg {
  width: 22px; height: 22px; display: block;
  fill: none; stroke: var(--wp--preset--color--stahl); stroke-width: 1.5;
  stroke-linecap: square; stroke-linejoin: miter;
}
@media (max-width: 640px) {
  .neuland-fakten.hat-icons tr {
    display: grid; grid-template-columns: 32px 1fr; column-gap: 10px;
  }
  .neuland-fakten.hat-icons td:first-child { grid-row: span 2; width: auto; padding-top: 2px; }
  .neuland-fakten.hat-icons td:nth-child(2) { width: auto; padding-top: 0; }
  .neuland-fakten.hat-icons svg { width: 19px; height: 19px; }
}

/* ---------- Terminfeld: einziger Ort fuer Termine auf einer Seite ---------- */
.neuland-termin {
  margin-top: 40px; padding: 24px; background: transparent;
  border: 1.5px solid var(--wp--custom--label-salbei-hell);
}
.neuland-termin .neuland-label {
  display: block; font-family: var(--wp--preset--font-family--sora);
  font-weight: 600; font-size: 11px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--wp--custom--label-salbei-hell); margin-bottom: 8px;
}
.neuland-termin .neuland-label svg {
  width: 16px; height: 16px; display: inline-block; vertical-align: -3px; margin-right: 6px;
  fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: square; stroke-linejoin: miter;
}
.neuland-termin p { margin: 0; }

/* ---------- Tabellen: stapeln unter 760px, nie seitlich scrollen ---------- */
.neuland-tabelle { width: 100%; border-collapse: collapse; font-size: 16px; }
.neuland-tabelle th {
  text-align: left; font-family: var(--wp--preset--font-family--sora);
  font-weight: 600; font-size: 11px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--wp--preset--color--salbei); padding: 0 16px 12px 0;
  border-bottom: 1px solid var(--wp--custom--rahmen-tinte); vertical-align: bottom;
}
.neuland-tabelle td {
  padding: 16px 16px 16px 0; vertical-align: top;
  border-bottom: 1px solid var(--wp--custom--rahmen-tinte);
}
.neuland-tabelle td:first-child {
  font-family: var(--wp--preset--font-family--sora); font-weight: 600; color: #fff; width: 30%;
}
.neuland-tabelle td:last-child {
  width: 22%; font-family: var(--wp--preset--font-family--sora); font-size: 13px;
  color: var(--wp--preset--color--salbei);
}
@media (max-width: 760px) {
  .neuland-tabelle, .neuland-tabelle tbody, .neuland-tabelle tr, .neuland-tabelle td { display: block; width: auto; }
  .neuland-tabelle thead { display: none; }
  .neuland-tabelle tr { border-top: 1px solid var(--wp--custom--rahmen-tinte); padding: 24px 0; }
  .neuland-tabelle tr:first-child { border-top: 0; padding-top: 0; }
  .neuland-tabelle td { border-bottom: 0; padding: 0; width: auto; }
  .neuland-tabelle td:first-child { width: auto; font-size: 19px; line-height: 1.3; margin-bottom: 10px; }
  .neuland-tabelle td:nth-child(2) { color: var(--wp--custom--auf-tinte); margin-bottom: 14px; }
  .neuland-tabelle td:last-child {
    width: auto; display: inline-block; padding: 5px 10px;
    background: var(--wp--preset--color--salbei); color: var(--wp--preset--color--tinte);
    font-weight: 600; font-size: 11px; letter-spacing: .12em; text-transform: uppercase;
  }
}

/* ---------- Modul mit Nummer ---------- */
.neuland-modul { border-top: 1px solid var(--wp--preset--color--linie); padding-top: 32px; margin-top: 40px; }
.neuland-modul:first-of-type { margin-top: 0; }
.neuland-nr {
  font-family: var(--wp--preset--font-family--sora);
  font-weight: 600; font-size: 11px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--wp--custom--label-salbei-hell); margin-bottom: 10px;
}

/* Nummerierte Schrittliste. Nur wenn die Reihenfolge eine Aussage traegt. */
.neuland-schritte { list-style: none; margin: 32px 0 0; padding: 0; counter-reset: schritt; }
.neuland-schritte > li {
  counter-increment: schritt; display: grid; grid-template-columns: 64px 1fr;
  column-gap: 24px; padding: 24px 0; border-top: 1px solid var(--wp--preset--color--linie);
}
.neuland-schritte > li::before {
  content: counter(schritt, decimal-leading-zero); grid-column: 1; grid-row: 1;
  font-family: var(--wp--preset--font-family--sora);
  font-weight: 600; font-size: 11px; letter-spacing: .16em;
  color: var(--wp--custom--label-salbei-hell); padding-top: 7px;
}
.neuland-schritte > li > * { grid-column: 2; }
.neuland-schritte h3 { grid-row: 1; margin: 0 0 8px; }
.neuland-schritte p { margin: 0; max-width: none; }
@media (max-width: 640px) {
  .neuland-schritte > li { grid-template-columns: 1fr; }
  .neuland-schritte > li::before { grid-column: 1; padding-top: 0; margin-bottom: 6px; }
  .neuland-schritte > li > * { grid-column: 1; }
  .neuland-schritte h3 { grid-row: auto; }
}

/* ---------- Kundenstimme ---------- */
.neuland-stimmen { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; }
@media (max-width: 820px) { .neuland-stimmen { grid-template-columns: 1fr; } }
.neuland-stimme { border: 1px solid var(--wp--custom--rahmen-tinte); padding: 32px; }
.neuland-stimme::before {
  content: "\201E"; display: block;
  font-family: var(--wp--preset--font-family--spectral); font-weight: 400;
  font-size: clamp(68px, 8vw, 92px); line-height: .62;
  color: var(--wp--preset--color--salbei); margin-bottom: 20px;
}
.neuland-stimme blockquote { margin: 0; }
.neuland-stimme cite {
  display: block; margin-top: 20px; font-style: normal;
  font-family: var(--wp--preset--font-family--sora); font-weight: 600; font-size: 13px; color: #fff;
}
.neuland-stimme cite span {
  display: block; font-weight: 400; font-size: 12px; letter-spacing: .04em; margin-top: 4px;
  color: var(--wp--preset--color--salbei);
}

/* ---------- Trainerprofil: Portraet links, nie im Hero ---------- */
.neuland-trainerin { display: grid; grid-template-columns: 300px 1fr; gap: 48px; align-items: start; }
@media (max-width: 820px) {
  .neuland-trainerin { grid-template-columns: 1fr; gap: 32px; }
  .neuland-trainerin .neuland-portraet { max-width: 300px; }
}
.neuland-portraet img {
  display: block; width: 100%; height: auto; aspect-ratio: 3/4; object-fit: cover;
  border-bottom: 5px solid var(--wp--preset--color--salbei);
}

/* ---------- FAQ ---------- */
.neuland-faq { list-style: none; margin: 0; padding: 0; }
.neuland-faq > li { padding: 24px 0; border-top: 1px solid var(--wp--preset--color--linie); }
.neuland-faq > li:first-child { border-top: 0; }
.neuland-faq h3 { margin: 0 0 8px; }
.neuland-faq p { margin: 0; }

/* ---------- Formular (Fluent Forms) ----------
   Gilt fuer alle Fluent-Forms-Formulare. Basis fuer hellen Grund, darunter
   die Variante fuer .neuland-auf-tinte, auf der der Anfrageabschnitt steht. */
.neuland-formular { display: grid; grid-template-columns: 1fr 1fr; gap: 40px 64px; align-items: start; }
@media (max-width: 820px) { .neuland-formular { grid-template-columns: 1fr; } }

.fluentform .frm-fluent-form { font-family: var(--wp--preset--font-family--spectral); color: var(--wp--preset--color--tinte); }
.fluentform .ff-el-group { margin-bottom: 12px; }
/* Textfelder tragen ihre Beschriftung als Platzhalter im Feld. Das Label bleibt
   fuer Screenreader im Markup und wird nur optisch ausgeblendet. Checkbox-Gruppen
   (Termin, Datenschutz) behalten ihr sichtbares Label. */
.fluentform .ff-el-group:has(.ff-el-form-control) > .ff-el-input--label {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
}
.fluentform .ff-el-input--label,
.fluentform .ff-el-input--label label {
  font-family: var(--wp--preset--font-family--sora); font-weight: 600; font-size: 12px; line-height: 1.4;
  letter-spacing: .12em; text-transform: uppercase; color: var(--wp--custom--label-salbei-hell); margin-bottom: 8px;
}
.fluentform .ff-el-is-required.asterisk-right label::after,
.fluentform .ff-el-is-required.asterisk-left label::before { color: inherit !important; }
.fluentform .ff-el-form-control {
  background: var(--wp--custom--input-flaeche); color: var(--wp--preset--color--tinte);
  border: 1px solid var(--wp--custom--input-rahmen); border-radius: 0; box-shadow: none;
  font-family: var(--wp--preset--font-family--spectral); font-size: 16px; line-height: 1.4; padding: 8px 12px; min-height: 40px;
}
.fluentform textarea.ff-el-form-control { min-height: 88px; }
.fluentform .ff-el-form-control::placeholder { color: var(--wp--preset--color--stahl); opacity: 1; }
.fluentform .ff-el-form-control:focus {
  border-color: var(--wp--preset--color--tinte); box-shadow: none;
  outline: 2px solid var(--wp--preset--color--tinte); outline-offset: 1px;
}
.fluentform .ff-el-form-check { margin-bottom: 6px; }
.fluentform .ff-el-form-check-label,
.fluentform .ff_tc_label {
  font-family: var(--wp--preset--font-family--spectral); font-size: 16px; line-height: 1.5; font-weight: 400;
  letter-spacing: 0; text-transform: none; color: var(--wp--preset--color--tinte);
}
.fluentform input.ff-el-form-check-input,
.fluentform input.ff_gdpr_field {
  width: 18px; height: 18px; margin-right: 10px; vertical-align: -3px; accent-color: var(--wp--preset--color--tinte);
}
.fluentform input.ff-el-form-check-input:focus-visible,
.fluentform input.ff_gdpr_field:focus-visible { outline: 2px solid var(--wp--preset--color--tinte); outline-offset: 2px; }
.fluentform .ff_t_c a { color: inherit; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.fluentform .ff-el-tooltip { color: var(--wp--preset--color--stahl); }
.fluentform .ff-el-tooltip svg,
.fluentform .ff-el-tooltip svg path { fill: currentColor !important; }
.fluentform .ff-el-help-message { font-size: 14px; font-style: normal; color: var(--wp--preset--color--stahl); }
.fluentform .ff-t-container { gap: 16px; align-items: flex-end; }
.fluentform .ff-t-container .ff-t-cell { padding-left: 0; padding-right: 0; }
@media (max-width: 640px) {
  .fluentform .ff-t-container { flex-direction: column; gap: 0; }
  .fluentform .ff-t-container .ff-t-cell { width: 100% !important; flex-basis: 100% !important; }
}
.fluentform .ff-btn-submit,
.fluentform .ff-btn-submit.ff_btn_style {
  background: var(--wp--preset--color--signal) !important; color: var(--wp--preset--color--tinte) !important;
  border: 0 !important; border-radius: 0 !important; box-shadow: none !important; opacity: 1 !important;
  min-height: 44px; height: auto; line-height: 1.3; padding: 10px 22px !important; white-space: normal; text-align: center;
  font-family: var(--wp--preset--font-family--sora); font-weight: 600; font-size: 14px; transition: background-color .15s ease;
}
.fluentform .ff-btn-submit:hover,
.fluentform .ff-btn-submit:focus-visible { background: var(--wp--custom--signal-hover) !important; }
.fluentform .ff-btn-submit:focus-visible { outline: 2px solid var(--wp--preset--color--tinte); outline-offset: 2px; }
.fluentform .ff-el-is-error .ff-el-form-control { border-color: var(--wp--preset--color--tinte); border-width: 2px; }
.fluentform .error.text-danger {
  font-family: var(--wp--preset--font-family--sora); font-size: 13px; font-weight: 600; margin-top: 6px;
  color: var(--wp--preset--color--tinte);
}
.fluentform .ff-message-success {
  background: var(--wp--preset--color--salbei-hell); color: var(--wp--preset--color--tinte);
  border: 0; border-left: 4px solid var(--wp--preset--color--salbei); border-radius: 0; box-shadow: none;
  padding: 16px 20px; font-family: var(--wp--preset--font-family--spectral);
}

/* Formular auf Tinte */
.neuland-auf-tinte .fluentform .frm-fluent-form { color: var(--wp--custom--auf-tinte); }
.neuland-auf-tinte .fluentform .ff-el-input--label,
.neuland-auf-tinte .fluentform .ff-el-input--label label { color: var(--wp--preset--color--salbei); }
.neuland-auf-tinte .fluentform .ff-el-form-control:focus { border-color: var(--wp--custom--input-rahmen); outline-color: var(--wp--preset--color--papier); }
.neuland-auf-tinte .fluentform .ff-el-form-check-label,
.neuland-auf-tinte .fluentform .ff_tc_label { color: var(--wp--custom--auf-tinte); }
.neuland-auf-tinte .fluentform input.ff-el-form-check-input,
.neuland-auf-tinte .fluentform input.ff_gdpr_field { accent-color: var(--wp--preset--color--signal); }
.neuland-auf-tinte .fluentform input.ff-el-form-check-input:focus-visible,
.neuland-auf-tinte .fluentform input.ff_gdpr_field:focus-visible { outline-color: var(--wp--preset--color--papier); }
.neuland-auf-tinte .fluentform .ff_t_c a { color: var(--wp--preset--color--salbei); }
.neuland-auf-tinte .fluentform .ff_t_c a:hover { color: #fff; }
.neuland-auf-tinte .fluentform .ff-el-help-message,
.neuland-auf-tinte .fluentform .ff-el-tooltip { color: var(--wp--custom--auf-tinte); }
.neuland-auf-tinte .fluentform .ff-btn-submit:focus-visible { outline-color: var(--wp--preset--color--papier); }
.neuland-auf-tinte .fluentform .ff-el-is-error .ff-el-form-control { border-color: var(--wp--preset--color--signal); }
.neuland-auf-tinte .fluentform .error.text-danger { color: var(--wp--preset--color--signal); }

/* ---------- Links auf dunklem Grund ----------
   theme.json setzt die Linkfarbe global auf Tinte. Auf Tinte waere das
   unsichtbar, deshalb hier ueberschrieben. */
.neuland-auf-tinte a:where(:not(.wp-element-button):not(.neuland-textlink)) {
  color: var(--wp--preset--color--salbei);
  text-decoration-thickness: 1px; text-underline-offset: 3px;
}
.neuland-auf-tinte a:where(:not(.wp-element-button):not(.neuland-textlink)):hover { color: #fff; }
.neuland-auf-salbei a:where(:not(.wp-element-button):not(.neuland-textlink)) {
  color: var(--wp--custom--auf-salbei-hell);
}

/* ---------- Header und Footer ---------- */
.neuland-kopf { border-bottom: 1px solid var(--wp--preset--color--linie); }
.neuland-marke img { display: block; width: auto; }
.neuland-kopf .neuland-marke img { height: 34px; }
/* Im Footer steht dieselbe Marke groesser und in Weiss auf Tinte. */
.neuland-fuss .neuland-marke img { height: 72px; }
.neuland-fuss .neuland-marke .wp-block-site-title,
.neuland-fuss .neuland-marke .wp-block-site-title a {
  color: #fff; font-size: 18px; line-height: 1.25; text-decoration: none;
}
.neuland-fuss { background: var(--wp--preset--color--tinte); color: var(--wp--custom--auf-tinte); }
.neuland-fuss .neuland-label { color: var(--wp--preset--color--salbei); }

/* ---------- Adressen im Footer nebeneinander ----------
   Zwei Standorte untereinander machen den Footer unnoetig hoch.
   Unter etwa 340px Spaltenbreite bricht das Raster von selbst um. */
.neuland-adressen { display: grid; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)); gap: 8px 20px; align-items: start; }
/* Der Blockabstand von Gutenberg setzt dem zweiten Kind einen margin-top,
   der im Raster als Versatz sichtbar wird. */
.neuland-adressen > * { margin-block-start: 0; }

/* ---------- Footer: Abstaende (0.6.1) ----------
   Linker Block mit Logo und Adressen bekommt mehr Luft zu den Link-Spalten,
   zwischen den beiden Link-Spalten bleiben 40px. Unter 782px stapeln die
   Spalten, dort entfaellt der Zusatzabstand. */
@media (min-width: 782px) {
  .wp-site-blocks > footer .wp-block-columns > .wp-block-column:first-child { padding-right: 56px; }
}
/* Link-Listen im Footer enger als Inhaltslisten mit .neuland-linien. */
.wp-site-blocks > footer .neuland-linien > li { padding-block: 8px; margin-block-start: 0; }

/* ---------- Beitragsarchiv: /news/ und Kategorien (seit 0.6.0) ----------
   Themenfilter als Chips, neuester Beitrag als Aufmacher (nur Seite 1),
   darunter Dreierraster. Beitragsbilder sind meist Carousel-Cover im
   Hochformat 4:5 mit Text im Bild: nie beschneiden, nur einpassen. */
.neuland-themen { margin-block-start: 40px; }
.neuland-themen-liste > li { padding: 0; }
.neuland-themen-liste a { display: block; padding: 7px 12px; color: inherit; text-decoration: none; }
.neuland-themen-liste a:hover { background: var(--wp--preset--color--salbei); }
.neuland-themen-liste a[aria-current] { background: var(--wp--preset--color--tinte); color: var(--wp--preset--color--papier); }

.neuland-beitraege { margin-block-start: 64px; }
.neuland-beitraege .wp-block-post-template {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 64px 24px;
  list-style: none; margin: 0; padding: 0;
}
.neuland-beitraege .wp-block-post { display: flex; flex-direction: column; gap: 16px; margin: 0; }
.neuland-beitraege .wp-block-post > * { margin-block: 0; }
.neuland-karte-bild { margin: 0; background: var(--wp--preset--color--salbei-hell); }
.neuland-karte-bild a, .neuland-karte-bild img { display: block; width: 100%; height: 100%; }
.neuland-karte-text { display: flex; flex-direction: column; gap: 8px; }
.neuland-karte-text > * { margin-block: 0; }

.neuland-karte-thema {
  font-family: var(--wp--preset--font-family--sora); font-weight: 600; font-size: 11px;
  letter-spacing: .12em; text-transform: uppercase; color: var(--wp--custom--label-salbei-hell);
}
.neuland-karte-thema a { color: inherit; text-decoration: none; }
.neuland-karte-thema a:hover { text-decoration: underline; }

.neuland-karte-titel {
  font-family: var(--wp--preset--font-family--sora); font-weight: 600;
  font-size: var(--wp--preset--font-size--titel-klein); line-height: 1.3; letter-spacing: -.01em;
}
.neuland-karte-titel a { color: var(--wp--preset--color--tinte); text-decoration: none; }
.neuland-karte-titel a:hover {
  text-decoration: underline; text-decoration-color: var(--wp--preset--color--signal);
  text-decoration-thickness: 2px; text-underline-offset: 4px;
}

.neuland-karte-auszug { font-size: 15px; line-height: 1.6; color: var(--wp--preset--color--stahl); }
.neuland-karte-auszug .wp-block-post-excerpt__excerpt {
  margin: 0; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden;
}
.neuland-karte-datum {
  font-family: var(--wp--preset--font-family--sora); font-size: 13px;
  color: var(--wp--preset--color--stahl); font-variant-numeric: tabular-nums;
}

/* Aufmacher: der erste Beitrag auf Seite 1 (body ohne .paged) */
body:not(.paged) .neuland-beitraege .wp-block-post:first-child {
  grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: 40px; align-items: center;
  padding-block-end: 64px; border-bottom: 1px solid var(--wp--preset--color--linie);
}
body:not(.paged) .neuland-beitraege .wp-block-post:first-child .neuland-karte-titel {
  font-size: var(--wp--preset--font-size--titel-mittel); font-weight: 300; line-height: 1.15; letter-spacing: -.03em;
}
body:not(.paged) .neuland-beitraege .wp-block-post:first-child .neuland-karte-auszug { font-size: 17px; }
body:not(.paged) .neuland-beitraege .wp-block-post:first-child .wp-block-post-excerpt__excerpt { display: block; -webkit-line-clamp: unset; }

/* Seitennavigation */
.neuland-beitraege .wp-block-query-pagination {
  margin-block-start: 64px; gap: 8px 16px;
  font-family: var(--wp--preset--font-family--sora); font-size: 14px;
}
.neuland-beitraege .wp-block-query-pagination a { color: var(--wp--preset--color--tinte); text-decoration: none; }
.neuland-beitraege .wp-block-query-pagination a:hover { text-decoration: underline; }
.neuland-beitraege .page-numbers { display: inline-block; min-width: 32px; padding: 4px 8px; text-align: center; }
.neuland-beitraege .page-numbers.current { font-weight: 600; border-bottom: 2px solid var(--wp--preset--color--signal); }

@media (max-width: 960px) {
  .neuland-beitraege .wp-block-post-template { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body:not(.paged) .neuland-beitraege .wp-block-post:first-child { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px; }
}
@media (max-width: 640px) {
  .neuland-beitraege .wp-block-post-template { grid-template-columns: minmax(0, 1fr); gap: 48px; }
  body:not(.paged) .neuland-beitraege .wp-block-post:first-child { display: flex; gap: 16px; padding-block-end: 48px; }
}

/* ---------- Fakten-Block auf Tinte (0.6.2) ----------
   Das Label-Gruen fuer Salbei hell (#3E6460) ist auf Tinte praktisch
   unsichtbar. Auf Tinte stehen Labels deshalb in Salbei, Trennlinien in
   der Rahmenfarbe auf Tinte. */
.neuland-auf-tinte .neuland-fakten td:first-child,
.neuland-auf-tinte .neuland-fakten th:first-child,
.neuland-auf-tinte .neuland-fakten.hat-icons td:nth-child(2) {
  color: var(--wp--preset--color--salbei); font-size: 12px;
}
.neuland-auf-tinte .neuland-fakten.hat-icons td:first-child { color: inherit; }
.neuland-auf-tinte .neuland-fakten :is(td, th) { border-top-color: var(--wp--custom--rahmen-tinte); }
@media (max-width: 640px) {
  .neuland-auf-tinte .neuland-fakten tr { border-top-color: var(--wp--custom--rahmen-tinte); }
}
/* Fakten in einer schmalen Spalte, etwa neben einem Formular */
.neuland-formular .neuland-fakten td:first-child,
.neuland-formular .neuland-fakten th:first-child { width: 130px; }

/* ---------- Kasten: allgemeine Angaben vor den Einzelangeboten (0.6.2) ----------
   Hebt Preis- und Formatangaben, die fuer mehrere Angebote gelten, von den
   Karten der einzelnen Angebote ab. Flaeche wechselt mit dem Untergrund. */
.neuland-kasten {
  background: var(--wp--preset--color--salbei-hell);
  border-top: 3px solid var(--wp--preset--color--salbei);
  padding: 32px 40px; margin-block: 40px 64px;
}
.neuland-auf-salbei .neuland-kasten { background: var(--wp--preset--color--papier); }
.neuland-kasten > * { margin-block: 0; }
.neuland-kasten > * + * { margin-block-start: 16px; }
.neuland-kasten-titel {
  font-family: var(--wp--preset--font-family--sora);
  font-weight: 600; font-size: 13px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--wp--custom--label-salbei-hell);
}
@media (max-width: 640px) { .neuland-kasten { padding: 24px 20px; } }

/* ---------- Karten im Zweierraster (0.6.2) ----------
   Einzelangebote nebeneinander statt untereinander. Kinder sind
   Gruppen-Bloecke (z. B. .neuland-modul). Karte Salbei hell auf Papier,
   Papier auf Salbei hell. Der Textlink sitzt immer unten. */
.neuland-karten { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.neuland-karten > * + * { margin-block-start: 0; }
.neuland-karten > .wp-block-group {
  display: flex; flex-direction: column; gap: 12px;
  margin: 0; padding: 32px; border-top: 3px solid var(--wp--preset--color--salbei);
  background: var(--wp--preset--color--salbei-hell);
}
.neuland-auf-salbei .neuland-karten > .wp-block-group { background: var(--wp--preset--color--papier); }
.neuland-karten > .wp-block-group > * { margin-block: 0; }
.neuland-karten > .wp-block-group > :last-child:has(.neuland-textlink) { margin-block-start: auto; padding-top: 8px; }
.neuland-karten :is(h2, h3) {
  font-family: var(--wp--preset--font-family--sora); font-weight: 600;
  font-size: var(--wp--preset--font-size--titel-klein); line-height: 1.3; letter-spacing: -.01em;
}
.neuland-karten .neuland-chips > li { background: var(--wp--preset--color--papier); }
.neuland-auf-salbei .neuland-karten .neuland-chips > li { background: var(--wp--preset--color--salbei-hell); }
@media (max-width: 760px) {
  .neuland-karten { grid-template-columns: minmax(0, 1fr); }
  .neuland-karten > .wp-block-group { padding: 24px 20px; }
}

/* ---------- Hero mit Portraet (0.6.2) ----------
   Nur ausserhalb der Schulungsseiten (dort gilt: kein Portraet im Hero).
   core/columns: Textspalte und Portraetspalte mit .neuland-portraet. */
.neuland-hero-bild { gap: 64px; align-items: center; }
.neuland-hero-bild .neuland-portraet { max-width: 380px; align-self: center; }
@media (max-width: 781px) {
  .neuland-hero-bild { gap: 40px; }
  .neuland-hero-bild .neuland-portraet { max-width: 300px; }
}

/* ---------- Referenzleiste gross (0.6.2) ---------- */
.neuland-referenzen-titel {
  font-family: var(--wp--preset--font-family--sora);
  font-weight: 600; font-size: 15px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--wp--custom--label-salbei-hell); margin: 0 0 24px;
}
.neuland-chips.neuland-referenzen { gap: 16px; }
.neuland-chips.neuland-referenzen > li {
  font-size: clamp(16px, 1.6vw, 20px); line-height: 1.3; padding: 18px 28px;
}

/* ---------- Argumente nummeriert: 3 Spalten, oben 2px Salbei (0.6.2) ---------- */
.neuland-argumente {
  list-style: none; margin: 40px 0 0; padding: 0; counter-reset: argument;
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px;
}
.neuland-argumente > li {
  counter-increment: argument; border-top: 2px solid var(--wp--preset--color--salbei); padding-top: 24px;
}
.neuland-argumente > li::before {
  content: counter(argument, decimal-leading-zero); display: block; margin-bottom: 16px;
  font-family: var(--wp--preset--font-family--sora); font-weight: 200; font-size: 34px; line-height: 1;
  color: var(--wp--preset--color--salbei);
}
.neuland-argumente h3 { margin: 0 0 12px; }
.neuland-argumente p { margin: 0; }
@media (max-width: 820px) { .neuland-argumente { grid-template-columns: minmax(0, 1fr); gap: 32px; } }

/* ---------- Formate: vier Spalten (0.6.2) ---------- */
.neuland-formate {
  list-style: none; margin: 40px 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px;
}
.neuland-formate > li {
  background: var(--wp--preset--color--papier); border-top: 3px solid var(--wp--preset--color--tinte);
  padding: 28px 24px; display: flex; flex-direction: column; gap: 10px;
}
.neuland-formate h3 { margin: 0; }
.neuland-formate .neuland-dauer {
  font-family: var(--wp--preset--font-family--sora); font-weight: 200; font-size: 24px; line-height: 1.1;
  letter-spacing: -.02em; color: var(--wp--preset--color--tinte); margin: 0;
}
.neuland-formate p { margin: 0; }
@media (max-width: 960px) { .neuland-formate { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .neuland-formate { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Kontakt neben Formular (0.6.2) ---------- */
.neuland-formular > * { margin-block-start: 0; }
.neuland-formular > .wp-block-group > * { margin-block-start: 0; }
.neuland-formular > .wp-block-group > * + * { margin-block-start: 16px; }

/* ---------- Sichtbarer Fokus ueberall ---------- */
.wp-site-blocks :is(a,button,input,select,textarea,summary):focus-visible {
  outline: 2px solid var(--wp--preset--color--tinte); outline-offset: 2px;
}
.neuland-auf-tinte :is(a,button,input,select,textarea,summary):focus-visible {
  outline-color: var(--wp--preset--color--papier);
}

@media (prefers-reduced-motion: reduce) {
  .wp-site-blocks *, .wp-site-blocks *::before, .wp-site-blocks *::after {
    animation-duration: .01ms !important; transition-duration: .01ms !important;
  }
}

/* ---------- Seiten ohne Abschnitts-Bausteine (0.6.3) ----------
   Faktenseiten unter /facts/ und Rechtliches bestehen aus einfachen Bloecken
   ohne .neuland-abschnitt und liefen bis an den Bildschirmrand. Hier bekommen
   sie Satzbreite, Randabstand und etwas Typografie. Seiten mit Abschnitten
   sind nicht betroffen. */
body.page .wp-block-post-content:not(:has(> .neuland-abschnitt)) {
  box-sizing: border-box; max-width: calc(820px + 48px); margin-inline: auto;
  padding: 64px 24px 96px;
}
body.page .wp-block-post-content:not(:has(> .neuland-abschnitt)) > h1 { margin-block: 0 24px; }
body.page .wp-block-post-content:not(:has(> .neuland-abschnitt)) > h2 {
  margin-block-start: 64px; padding-top: 24px; border-top: 1px solid var(--wp--preset--color--linie);
}
body.page .wp-block-post-content:not(:has(> .neuland-abschnitt)) > h3 { margin-block-start: 36px; }
body.page .wp-block-post-content:not(:has(> .neuland-abschnitt)) :is(ul, ol) { padding-left: 1.2em; }
body.page .wp-block-post-content:not(:has(> .neuland-abschnitt)) li + li { margin-top: 6px; }
body.page .wp-block-post-content:not(:has(> .neuland-abschnitt)) .lead-definition {
  font-size: 1.15em; line-height: 1.55; color: var(--wp--preset--color--tinte);
}
body.page .wp-block-post-content:not(:has(> .neuland-abschnitt)) dl.data-grid dt {
  font-family: var(--wp--preset--font-family--sora); font-size: 12px; font-weight: 600;
  letter-spacing: .08em; text-transform: uppercase; color: var(--wp--preset--color--stahl); padding-top: 3px;
}
body.page .wp-block-post-content:not(:has(> .neuland-abschnitt)) :is(table) { width: 100%; border-collapse: collapse; }
body.page .wp-block-post-content:not(:has(> .neuland-abschnitt)) :is(td, th) {
  border: 0; border-top: 1px solid var(--wp--preset--color--linie); padding: 10px 12px 10px 0; vertical-align: top; text-align: left;
}
@media (max-width: 640px) {
  body.page .wp-block-post-content:not(:has(> .neuland-abschnitt)) { padding: 40px 20px 64px; }
  body.page .wp-block-post-content:not(:has(> .neuland-abschnitt)) > h2 { margin-block-start: 48px; }
  body.page .wp-block-post-content:not(:has(> .neuland-abschnitt)) :is(table, tbody, tr, td, th) { display: block; width: auto; }
}

/* ---------- Header und Handy-Menue (0.6.3) ----------
   Unter 600px passt der Kontakt-Button nicht mehr neben Logo und Menue-Symbol
   und rutschte in eine zweite Zeile. Kontakt steht im Menue, der Button
   entfaellt dort. Im geoeffneten Menue stehen alle Eintraege links, das
   Untermenue eingerueckt mit Salbei-Linie, statt teils rechts, teils links. */
@media (max-width: 600px) {
  .neuland-kopf .wp-block-buttons { display: none; }
}
.neuland-kopf .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.neuland-kopf .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,
.neuland-kopf .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item,
.neuland-kopf .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
  align-items: flex-start !important; justify-content: flex-start !important; text-align: left;
}
.neuland-kopf .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
  padding-top: 64px; gap: 20px;
}
.neuland-kopf .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
  font-size: 18px; line-height: 1.35; padding: 0;
}
.neuland-kopf .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
  gap: 12px !important; margin: 14px 0 4px !important; padding: 0 0 0 16px !important;
  border-left: 2px solid var(--wp--preset--color--salbei) !important;
}
.neuland-kopf .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  font-size: 15px;
}

/* ---------- Buttons unter 600px (seit 1.0.1) ----------
   Seitlicher Innenabstand 16px statt 22px, damit kurze Buttontexte einzeilig bleiben.
   Laengere Texte brechen um, der Button waechst mit (min-height oben). */
@media (max-width: 600px) {
  .wp-block-button .wp-block-button__link { padding-inline: 16px; }
  .fluentform .ff-btn-submit,
  .fluentform .ff-btn-submit.ff_btn_style { padding-inline: 16px !important; }
}
