/*
 * Leo Fitnesscoaching: Bausteine der Startseite und der VSL-Strecke (/, /video1, /vsl-page-button-timer,
 * /video, /video2, /infovideo, /videoig, /willkommen, /bauchfett-reset, /schritte, /vorbereitung),
 * nachgebaut aus den Onepage-Seiten am 15.10.2026.
 *
 * Die Seiten sind fast ganz aus dem Onepage-Baukasten. Raster, Sektionen, Überschriften s/xs/m,
 * Fließtext, die rote Hervorhebung (vb-hl), Wistia, Laufband, „Instagram CTA Bild“ und das Team-
 * Karussell kommen aus /_cm/leo/vorbereitung.css (dort zuerst nachgebaut, gleiche Onepage-Site);
 * diese Datei ergänzt, was dort fehlt. Werte wie bei Onepage gemessen (Desktop 1440 px, Handy 390 px)
 * oder aus dem CSS der Onepage-Site übernommen:
 *
 * - Überschriften: Größe = 16 + Stufe x 2 (l 48, m 32, s 24, xs 20), Zeilenhöhe
 *   1,2 - (Größe - 32) / 1000 x 1,2. Am Handy bis 768 px fließend: max + (Größe - max) x (100vw - 450px) / 318
 *   mit max l 32, m 32, s 24, xs 18.
 * - Absätze in einem Textbaustein stehen 16 px auseinander; ein leerer Absatz ist eine Zeile hoch.
 * - Knöpfe: Höhe mindestens 56 px (mit Unterzeile) bzw. 40 px, Ring „soft-line“ (3 px, beim Zeigen 6 px).
 * - Die Hand-Unterstreichung (hand-underlined) ist bei Onepage je Zeile ein SVG im unteren Fünftel der
 *   Zeile; hier ein Hintergrundbild, das sich mit box-decoration-break je Zeile wiederholt.
 */

/* Montserrat kursiv 500 (Zitate der Kundenstimmen): bei Onepage ein echter Kursivschnitt, ohne ihn rechnet der Browser
   eine schräge Fassung mit anderen Breiten und anderen Zeilenumbrüchen. Datei von onecdn.io/font-storage/montserrat. */
@font-face { font-family: 'Montserrat'; font-style: italic; font-weight: 500; font-display: swap; src: url('/_cm/schrift/montserrat-500italic.woff2') format('woff2'); }

/* ---------- Ergänzungen zum Raster aus vorbereitung.css ---------- */
/* Sektion mit Abstand „xs“: 16 px zwischen den Spalten (xxl 56, xl 48 stehen in vorbereitung.css). */
.vb-sektion--xs .vb-container { --rinne: 16px; }
.vb-sektion--hell { --vb-grund: var(--color-kit-white, #ffffff); }
/* Spalte senkrecht in der Mitte der Reihe (Baukasten align_vertical middle); am Handy stehen Spalten untereinander. */
@media (min-width: 769px) { .vb-spalte--senkrecht-mitte { align-self: center; } }
.vb-spalte--mitte-text { text-align: center; }

/* Überschrift „l“ (48 px) und Größen außerhalb des Font-Kits. */
.vb-titel--l { font-size: 48px; line-height: 1.1808; }
@media (max-width: 768px) { .vb-titel--l { font-size: calc(32px + (100vw - 450px) * 16 / 318); } }

/* Textbausteine mit mehreren Absätzen: <div class="vb-text"><p>…</p><p>…</p></div>. */
.vb-text > p { margin: 0; }
.vb-text > p + p { margin-top: 16px; }
.vb-text--s { font-size: 14px; line-height: 21px; }
.vb-text--halbfett { font-weight: 600; }
.vb-text b, .vb-titel b { font-weight: 700; }

/* ---------- Hand-Unterstreichung (Hervorhebung „hand-underlined“) ----------
   Onepage zeichnet je Zeile ein SVG mit dem Pfad M 0,30 q 50,-35 100,0 (viewBox 100 x 40, verzerrt) über die
   Breite der markierten Wörter, 20 % der Zeilenhöhe hoch am unteren Rand, Strich 3 x 0,04 em = 1,92 px bei 16 px,
   in der Akzentfarbe. */
.bk-hand {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 40' preserveAspectRatio='none'%3E%3Cpath d='M 0,30 q 50,-35 100,0' fill='none' stroke='%23D12530' stroke-width='1.92' stroke-miterlimit='10' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") left bottom / 100% 20% no-repeat;
  -webkit-box-decoration-break: clone; box-decoration-break: clone;
}

/* ---------- Etikett (label-text, Stil „solid“, Größe s) ---------- */
.bk-etikett {
  display: inline-block; padding: 4px 12px; border-radius: 100px;
  background: var(--color-kit-key1, #d12530); color: var(--color-kit-white, #ffffff);
  font-family: var(--font-kit-text-font), sans-serif; font-size: 12px; font-weight: 700; line-height: 20px;
  letter-spacing: 0.5px; text-transform: uppercase;
}

/* ---------- Bild-Baustein: Höhe als Anteil der Breite (resize_percent), Ausschnitt per object-position ---------- */
.bk-bild { position: relative; width: 100%; overflow: hidden; border-radius: var(--rand, 0); }
.bk-bild::before { content: ""; display: block; padding-bottom: var(--hoehe, 100%); }
.bk-bild img { position: absolute; inset: 0; display: block; width: 100%; height: 100%; object-fit: cover; }

/* ---------- Knopf (Onepage-Baustein button, Typ „solid“, Effekt „soft-line“) ----------
   Farbe als RGB-Tripel in --knopf (Standard WhatsApp-Grün 24,173,52). Mit Unterzeile ist das Symbol 56 px breit
   und ragt in den Innenabstand (Höhe / -2,5 + Rundung / 30). */
.bk-knopf {
  --knopf: 24, 173, 52;
  position: relative; display: inline-flex; align-items: center; justify-content: center; max-width: 100%;
  min-height: 56px; padding: 7px 28px; box-sizing: border-box; border: 0; border-radius: 8px; cursor: pointer;
  background: rgb(var(--knopf)); color: var(--color-kit-white, #ffffff); text-decoration: none; text-align: center;
  font-family: var(--font-kit-text-font), sans-serif; font-size: 15px; font-weight: 600; line-height: 1.5;
  box-shadow: 0 0 0 3px rgba(var(--knopf), .3), 0 0 0 16px rgba(var(--knopf), 0);
  transition: box-shadow .3s, background-color .3s;
}
@media (hover: hover) { .bk-knopf:hover { box-shadow: 0 0 0 6px rgba(var(--knopf), .3), 0 0 0 16px rgba(var(--knopf), 0); } }
.bk-knopf:active { box-shadow: 0 0 0 3px rgba(var(--knopf), 0), 0 0 0 0 rgba(var(--knopf), .3); transition: box-shadow .1s; }
.bk-knopf:focus-visible { outline: 3px solid var(--color-kit-dark, #1a212a); outline-offset: 4px; }
.bk-knopf__symbol { display: flex; align-items: center; justify-content: center; flex: 0 0 auto; min-width: 56px; min-height: 22.5px; margin-left: -22.1333px; }
.bk-knopf__symbol svg { display: block; width: 26.25px; height: 26.25px; fill: currentColor; }
.bk-knopf__text { display: flex; flex-direction: column; align-items: flex-start; text-align: left; max-width: 100%; transform: translateY(-3%); }
.bk-knopf__titel { display: flex; padding: 4px 0; }
.bk-knopf__unter { display: flex; margin-top: -2px; font-size: 12px; font-weight: 500; line-height: 18px; letter-spacing: 0.5px; opacity: .7; }
@media (max-width: 768px) {
  .bk-knopf { line-height: 1.2; }
  .bk-knopf__text { margin: 4px 0; }
}
.bk-knoepfe { display: flex; gap: 16px; max-width: 100%; }
.bk-knoepfe--mitte { justify-content: center; }

/* ---------- Bewertung (Baustein person: fünf Sterne und Titel, als Link) ---------- */
.bk-bewertung { display: inline-flex; flex-direction: column; max-width: 100%; color: inherit; text-decoration: none; cursor: pointer; }
.bk-bewertung__sterne { display: block; height: 24px; line-height: 24px; }
.bk-bewertung__stern { display: inline-block; width: 16px; height: 16px; margin: 0 2px 4px 0; vertical-align: top; position: relative; top: 0; }
.bk-bewertung__stern:last-child { margin-right: 0; }
.bk-bewertung__stern svg { display: block; width: 11.2px; height: 11.2px; margin: 2.4px; fill: #E4DB6C; }
.bk-bewertung__titel { font-family: var(--font-kit-text-font), sans-serif; font-size: 14px; font-weight: 700; line-height: 21px; }

/* ---------- Fußzeile (globale Sektion „Fußzeile“ der Site) ---------- */
.bk-fuss { --vb-grund: #272e38; color: var(--color-kit-white, #ffffff); text-align: center; }
.bk-fuss .vb-spalte { align-items: center; }
.bk-fuss__name { font-family: var(--font-kit-text-font), sans-serif; font-size: 16px; font-weight: 500; line-height: 24px; }
.bk-fuss__name b { font-weight: 700; }
.bk-fuss__social { display: flex; justify-content: center; gap: 16px; }
.bk-fuss__knopf {
  --knopf: 255, 255, 255;
  display: inline-flex; align-items: center; justify-content: center; min-height: 40px; padding: 5px 20px; box-sizing: border-box;
  border-radius: 100px; background: #ffffff; color: var(--color-kit-dark, #1a212a); text-decoration: none;
  font-family: var(--font-kit-text-font), sans-serif; font-size: 13px; font-weight: 600; line-height: 1.5;
  box-shadow: 0 0 0 3px rgba(var(--knopf), .3), 0 0 0 16px rgba(var(--knopf), 0); transition: box-shadow .3s;
}
@media (hover: hover) { .bk-fuss__knopf:hover { box-shadow: 0 0 0 6px rgba(var(--knopf), .3), 0 0 0 16px rgba(var(--knopf), 0); } }
.bk-fuss__knopf:focus-visible { outline: 3px solid #ffffff; outline-offset: 4px; }
.bk-fuss__symbol { display: flex; align-items: center; justify-content: center; min-width: 32px; min-height: 19.5px; margin-left: -12.6667px; }
.bk-fuss__symbol svg { display: block; width: 18.2px; height: 18.2px; fill: currentColor; }
.bk-fuss__beschriftung { display: flex; padding: 4px 0; transform: translateY(-3%); }
.bk-fuss__text { color: #ffffff52; }
.bk-fuss__text a { color: inherit; text-decoration: none; border-bottom: 1px solid currentColor; }
@media (max-width: 768px) {
  .bk-fuss__knopf { line-height: 1.2; }
  .bk-fuss__beschriftung { margin: 4px 0; }
}

/* ---------- Kundenstimmen (Vibe-Sektion „Kundenstimmen“, CSS-Modul unverändert, Klassen lesbar) ----------
   Dieselbe React-App liegt bei Onepage dreimal (/, /infovideo, /videoig), Code und Werte gleich. */
.stimmen { width: 100%; padding: 5.5rem 1.25rem; box-sizing: border-box; background: var(--color-kit-light, #fff9f9); }
.stimmen__container { max-width: 1250px; margin: 0 auto; width: 100%; }
.stimmen__kopf { max-width: 900px; margin: 0 auto 4rem; text-align: center; }
.stimmen__titel {
  margin: 0; font-family: var(--font-kit-header-font), sans-serif; font-weight: var(--font-kit-header-font-weight, 800);
  font-size: clamp(2rem, 5vw, 3.2rem); line-height: 1.25; letter-spacing: -0.01em; color: var(--color-kit-dark, #1a212a); text-align: center;
}
.stimmen__hervor {
  color: var(--color-kit-white, #ffffff); background: var(--color-kit-key1, #d12530); padding: 0.05em 0.3em; border-radius: 4px;
  -webkit-box-decoration-break: clone; box-decoration-break: clone;
}
.stimmen__liste { display: flex; flex-direction: column; gap: 2rem; }
.stimmen__karte { display: grid; grid-template-columns: 0.85fr 1fr; border-radius: 20px; overflow: hidden; box-shadow: 0 18px 50px -30px #1a212a55; background: var(--color-kit-white, #ffffff); }
.stimmen__karte--umgekehrt .stimmen__medien { order: 2; }
.stimmen__karte--umgekehrt .stimmen__inhalt { order: 1; }
.stimmen__medien { position: relative; min-height: 340px; background: var(--color-kit-key2, #ebc7c8); }
.stimmen__bild { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.stimmen__inhalt { padding: 2.75rem 2.75rem; display: flex; flex-direction: column; justify-content: center; gap: 1.5rem; }
.stimmen__person { display: flex; flex-direction: column; gap: 0.35rem; }
.stimmen__name {
  margin: 0; font-family: var(--font-kit-header-font), sans-serif; font-weight: var(--font-kit-header-font-weight, 800);
  font-size: clamp(1.1rem, 2vw, 1.35rem); line-height: 1.1; letter-spacing: -0.01em; color: var(--color-kit-dark, #1a212a);
}
.stimmen__rolle {
  margin: 0; font-family: var(--font-kit-text-font), sans-serif; font-weight: var(--font-kit-text-font-weight, 500); font-size: 0.9rem; line-height: 1.6;
  text-transform: uppercase; letter-spacing: 0.12em; color: var(--color-kit-dark, #1a212a); opacity: 0.5;
}
.stimmen__ergebnis { padding: 1.1rem 0; border-top: 1px solid #1a212a14; border-bottom: 1px solid #1a212a14; }
/* @siteui/result-stat */
.stimmen__stat { display: inline-flex; align-items: baseline; gap: 0.5rem; flex-wrap: wrap; }
.stimmen__wert { font-family: var(--font-kit-header-font), sans-serif; font-weight: 800; font-size: clamp(2.2rem, 5vw, 3.2rem); line-height: 1; letter-spacing: -0.02em; color: var(--color-kit-key1, #d12530); }
.stimmen__zeitraum { font-family: var(--font-kit-text-font), sans-serif; font-weight: 600; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--color-kit-dark, #1a212a); opacity: 0.6; }
.stimmen__zitat-rahmen { position: relative; padding-left: 2.25rem; }
.stimmen__zeichen { position: absolute; left: 0; top: -0.35rem; font-family: var(--font-kit-header-font), sans-serif; font-size: 2.6rem; font-weight: 800; line-height: 1; color: var(--color-kit-key1, #d12530); }
.stimmen__zitat { margin: 0; font-family: var(--font-kit-text-font), sans-serif; font-weight: var(--font-kit-text-font-weight, 500); font-size: 1rem; line-height: 1.6; color: var(--color-kit-dark, #1a212a); opacity: 0.85; font-style: italic; }
.stimmen__videos { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2rem; margin-top: 3.5rem; }
.stimmen__video { border-radius: 20px; overflow: hidden; background: var(--color-kit-dark, #1a212a); box-shadow: 0 18px 50px -30px #1a212a55; }
.stimmen__einbettung { position: relative; width: 100%; padding-top: 56.25%; }
.stimmen__einbettung iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.stimmen__unterschrift { padding: 1.1rem 1.25rem 0.9rem; display: flex; flex-direction: column; gap: 0.25rem; }
.stimmen__video-name, .stimmen__video-text { margin: 0; font-family: var(--font-kit-text-font), sans-serif; font-size: 0.9rem; line-height: 1.6; color: var(--color-kit-white, #ffffff); }
.stimmen__video-name { font-weight: 700; }
.stimmen__video-text { font-weight: var(--font-kit-text-font-weight, 500); opacity: 0.75; }
.stimmen__band {
  margin-top: 3.5rem; width: 100%; overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.stimmen__spur { display: flex; gap: 1.25rem; width: max-content; animation: stimmen-band 80s linear infinite; }
.stimmen__band:hover .stimmen__spur { animation-play-state: paused; }
.stimmen__eintrag { flex: 0 0 auto; width: 560px; border-radius: 14px; overflow: hidden; background: var(--color-kit-white, #ffffff); box-shadow: 0 12px 34px -24px #1a212a66; }
.stimmen__eintrag img { display: block; width: 100%; height: auto; }
@keyframes stimmen-band { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .stimmen__spur { animation: none; } }
@media (max-width: 820px) {
  .stimmen { padding: 4rem 1.1rem; }
  .stimmen__kopf { margin-bottom: 2.5rem; }
  .stimmen__karte { grid-template-columns: 1fr; }
  .stimmen__karte--umgekehrt .stimmen__medien, .stimmen__karte--umgekehrt .stimmen__inhalt { order: 0; }
  .stimmen__medien { min-height: 300px; }
  .stimmen__inhalt { padding: 2rem 1.75rem; }
  .stimmen__videos { grid-template-columns: 1fr; gap: 1.5rem; }
  .stimmen__eintrag { width: 88vw; }
}

/* ---------- Sektionen übereinander wie bei Onepage ----------
   Jede Sektion liegt einen Pixel über der vorigen (basis.css) und die obere wird zuletzt gemalt: die gemeinsame
   Pixelzeile gehört der oberen Sektion (sichtbar an hellen und dunklen Übergängen). */
.bk-seite > main > :nth-child(1) { z-index: 12; }
.bk-seite > main > :nth-child(2) { z-index: 11; }
.bk-seite > main > :nth-child(3) { z-index: 10; }
.bk-seite > main > :nth-child(4) { z-index: 9; }
.bk-seite > main > :nth-child(5) { z-index: 8; }
.bk-seite > main > :nth-child(6) { z-index: 7; }
.bk-seite > main > :nth-child(7) { z-index: 6; }
.bk-seite > main > :nth-child(8) { z-index: 5; }
.bk-seite > main > :nth-child(9) { z-index: 4; }
.bk-seite > main > :nth-child(10) { z-index: 3; }

/* ---------- Vorher-Nachher (Baustein before-after, waagerecht, Griff „solid“) ----------
   Das Vorher-Bild liegt oben und wird rechts der Teilung abgeschnitten; der Teiler ist 4 px breit, oben und unten
   eine Linie in Dunkel, in der Mitte der runde Griff (40 px). Höhe als Anteil der Breite (--hoehe). Mit der Maus
   folgt die Teilung dem Zeiger (Interaktion „hover“), mit dem Finger beim Ziehen (vsl.js). */
.bk-vergleich {
  --teilung: 50%;
  position: relative; width: 100%; overflow: hidden; border-radius: var(--rand, 0); color: var(--color-kit-dark, #1a212a);
  touch-action: pan-y; -webkit-user-select: none; user-select: none;
}
.bk-vergleich::before { content: ""; display: block; padding-bottom: var(--hoehe, 79%); }
.bk-vergleich__vorher, .bk-vergleich__nachher { position: absolute; inset: 0; }
.bk-vergleich__vorher { z-index: 2; clip-path: inset(-0.5px calc(100% - var(--teilung)) -0.5px -0.5px); }
.bk-vergleich__nachher { z-index: 1; }
.bk-vergleich img { display: block; width: 100%; height: 100%; object-fit: cover; pointer-events: none; -webkit-user-drag: none; }
.bk-vergleich__etikett {
  position: absolute; z-index: 3; bottom: 16px; left: 16px; max-width: calc(100% - 32px); box-sizing: border-box;
  padding: 6px 12px; border-radius: 16px; background: #ffffff; color: var(--color-kit-dark, #1a212a);
  font-family: var(--font-kit-text-font), sans-serif; font-size: 14px; font-weight: 500; line-height: 24px; text-align: center;
}
.bk-vergleich__etikett--rechts { left: auto; right: 16px; color: #1a212af5; }
.bk-vergleich__teiler {
  position: absolute; z-index: 3; top: 0; left: var(--teilung); width: 4px; height: 100%; transform: translateX(-2px);
  display: flex; align-items: center; justify-content: center; cursor: ew-resize;
}
.bk-vergleich__teiler::before, .bk-vergleich__teiler::after {
  content: ""; position: absolute; width: 100%; height: calc(50% - 20px);
  background: var(--color-kit-dark, #1a212a); box-shadow: 0 1px 4px #11111a0d, 0 0 8px #11111a1a;
}
.bk-vergleich__teiler::before { top: 0; }
.bk-vergleich__teiler::after { bottom: 0; }
.bk-vergleich__griff {
  position: relative; z-index: 10; display: flex; align-items: center; justify-content: center; flex: 0 0 auto;
  width: 40px; height: 40px; border-radius: 100px; background: #ffffff; color: var(--color-kit-dark, #1a212a);
  box-shadow: inset 0 0 0 .1px #ffffff;
}
.bk-vergleich__griff svg { display: block; width: 24px; height: 24px; transform: scale(1.1111); }

/* ---------- Fragen (Baustein list, Ansicht „accordion“, Stil „solid“) ----------
   Immer nur eine Frage offen (cm.js, data-akkordeon). Die Antwort klappt in 0,3 s auf, steht dabei 8 px tiefer
   (bei Onepage translateY(8px) und 8 px mehr Höhe) und blendet ein; das Plus dreht sich zum Minus. */
.bk-fragen { display: flex; flex-direction: column; gap: 16px; text-align: left; }
.bk-frage {
  display: grid; padding: 32px; border-radius: 16px; background: var(--color-kit-white, #ffffff); color: var(--color-kit-dark, #1a212a);
  box-shadow: 0 4px 32px 0 #11111a0d, 0 8px 48px 0 #11111a0d;
}
.bk-frage__kopf {
  display: flex; align-items: center; width: 100%; margin: 0; padding: 0; border: 0; background: none; cursor: pointer; text-align: left;
  color: inherit; font: inherit;
}
.bk-frage__kopf:focus-visible { outline: 3px solid var(--color-kit-key1, #d12530); outline-offset: 6px; border-radius: 6px; }
.bk-frage__text {
  flex: 1 1 auto; min-width: 0; white-space: pre-wrap; overflow-wrap: break-word;
  font-family: var(--font-kit-header-font), sans-serif; font-size: 20px; font-weight: 700; line-height: 1.2144;
}
.bk-frage__zeichen { display: flex; align-items: center; justify-content: center; flex: 0 0 auto; width: 26px; height: 19.5px; transition: transform .3s; }
.bk-frage__zeichen svg { display: block; width: 18.2px; height: 18.2px; overflow: visible; }
.bk-frage__zeichen line { stroke: currentColor; stroke-width: 1.6343; stroke-linecap: square; transform-origin: 16px 16px; transition: transform .3s; }
.bk-frage__kopf[aria-expanded="true"] .bk-frage__zeichen { transform: rotate(180deg); }
.bk-frage__kopf[aria-expanded="true"] .bk-frage__zeichen line:first-child { transform: rotate(90deg); }
.bk-frage__antwort { display: grid; grid-template-rows: 0fr; opacity: 0; transform: translateY(8px); transition: grid-template-rows .3s, opacity .3s; }
.bk-frage__kopf[aria-expanded="true"] + .bk-frage__antwort { grid-template-rows: 1fr; opacity: 1; }
.bk-frage__huelle { min-height: 0; overflow: hidden; }
.bk-frage__antworttext { padding-bottom: 8px; color: #1a212ac7; }
@media (prefers-reduced-motion: reduce) { .bk-frage__antwort, .bk-frage__zeichen, .bk-frage__zeichen line { transition: none; } }

/* ---------- VSL-Strecke (/video1, /vsl-page-button-timer) ---------- */
/* Knopf in Größe „xl“ über die ganze Breite (WhatsApp, /video1): 72 px hoch, Ecken 4 px, Symbol 57,6 px breit. */
.bk-knopf--xl { width: 100%; min-height: 72px; padding: 9px 36px; border-radius: 4px; font-size: 18px; }
.bk-knopf--xl .bk-knopf__symbol { min-width: 57.6px; min-height: 27px; margin-left: -28.6667px; }
.bk-knopf--xl .bk-knopf__symbol svg { width: 25.2px; height: 25.2px; }
.bk-knopf--xl .bk-knopf__titel { text-transform: none; }

/* Bild in voller Breite mit eigener Höhe (Bild-Baustein „autoheight“), ohne Ecken. */
.bk-bild-auto { width: 100%; }
.bk-bild-auto img { display: block; width: 100%; height: auto; }

/* Linie (Baustein line, „solid“): 32 px hoch, in der Mitte 2 px in Hellgrau. */
.bk-linie { width: 100%; height: 32px; background: linear-gradient(#f2f2f2, #f2f2f2) 0 15px / 100% 2px no-repeat; }

/* Laufband (Galerie „marquee“, volle Fensterbreite, ohne ausgeblendete Ränder, hält nicht an): Bilder 250 px hoch,
   24 px auseinander, ein Durchlauf in 78 s (bei Onepage gemessen 39 px/s). */
.bk-band { position: relative; display: flex; overflow: hidden; width: 100vw; margin-left: calc(50% - 50vw); text-align: left; }
.bk-band__inhalt { position: relative; display: flex; flex: 0 0 auto; will-change: transform; animation: bk-band var(--dauer, 78s) linear infinite; }
.bk-band__reihe { display: flex; flex: 0 0 auto; }
.bk-band__wiederholung { position: absolute; top: 0; left: 0; height: 100%; display: flex; }
.bk-band__wiederholung--1 { transform: translateX(100%); }
.bk-band__wiederholung--2 { transform: translateX(200%); }
.bk-band__bild { flex: 0 0 auto; padding: 0 12px; }
.bk-band__bild img { display: block; height: 250px; width: auto; }
@keyframes bk-band { from { transform: translateX(0); } to { transform: translateX(-100%); } }
@media (prefers-reduced-motion: reduce) { .bk-band__inhalt { animation: none; } }

/* Knopf ohne Symbol (/video, /video2): Titel und Unterzeile stehen mittig. */
.bk-knopf--ohne-symbol .bk-knopf__text { align-items: center; text-align: center; }

/* ---------- /schritte, /willkommen ---------- */
/* Knopf „xl“ über die ganze Breite mit Ecken 8 px (/schritte). */
.bk-knopf--xl.bk-knopf--rund8 { border-radius: 8px; }
.bk-knopf--xl.bk-knopf--rund8 .bk-knopf__symbol { margin-left: -28.5333px; }
/* Video-Baustein mit eigener Höhe (Proportion „custom“, resize_percent): Höhe als Anteil der Breite in --hoehe. */
.vb-video--eigen::after { padding-bottom: var(--hoehe, 179%); }

/* ---------- /bauchfett-reset ---------- */
/* Knopf in Größe „s“ (48 px hoch, 14 px) und mit Ecken 4 px. */
.bk-knopf--s { min-height: 48px; padding: 6px 24px; font-size: 14px; }
.bk-knopf--rund4 { border-radius: 4px; }
button.bk-knopf { margin: 0; -webkit-appearance: none; appearance: none; }

/* Glanz (Endlos-Animation „blink“ eines Knopfs): ein schräger Lichtstreif, 30 % Weiß, alle 2,5 s von links nach rechts.
   Keyframes und Verlauf wie im CSS der Onepage-Site. */
.bk-knopf__glanz { position: absolute; inset: 0; z-index: 3; overflow: hidden; border-radius: inherit; pointer-events: none; }
.bk-knopf__glanz::before {
  content: ""; position: absolute; left: 0; top: 0; width: 100%; height: 100%; opacity: 0;
  background: linear-gradient(120deg, rgba(255, 255, 255, 0) 30%, rgba(255, 255, 255, .3) 50%, rgba(255, 255, 255, 0) 70%); background-size: 100%;
  animation: bk-glanz 2.5s ease infinite;
}
@keyframes bk-glanz {
  0% { transform: translate3d(-100%, 0, 0) scale(2); opacity: 1; }
  50% { transform: translate3d(100%, 0, 0); opacity: 0; }
  51% { transform: translate3d(-100%, 0, 0); opacity: 0; }
  100% { transform: translate3d(-100%, 0, 0); opacity: 1; }
}

/* Bild ganz sichtbar im Kasten (Bild-Baustein „fit“): Höhe als Anteil der Breite in --hoehe, das Bild mittig darin. */
.bk-bild--ganz img { object-fit: contain; }

/* Formular-Karte (Onepage-Formular „Freebie Form“): Karte „solid“ mit 1 % Dunkel, Ecken 16 px, Schatten „l“, Innenabstand
   48 px (am Handy 24 px). Felder 56 px hoch in 7 % der Textfarbe, Ecken 6 px; der Rahmen ist ein Ring aus box-shadow,
   bei einem Fehler in Orangerot wie die Meldung darunter (13,5 px, 6,75 px Abstand). */
.bf-karte {
  width: 100%; margin: 0; padding: 48px; border-radius: 16px; background: rgba(26, 33, 42, .01); color: rgb(39, 50, 63);
  box-shadow: 0 8px 56px 0 rgba(17, 17, 26, .1), 0 32px 140px 0 rgba(17, 17, 26, .1);
}
.bf-karte .vb-titel { color: rgb(39, 50, 63); }
.bf-feld { margin: 0 0 var(--abstand, 20px); text-align: left; }
.bf-feld__huelle {
  position: relative; display: flex; align-items: center; height: 56px; border-radius: 6px; background: rgba(39, 50, 63, .07);
  box-shadow: 0 0 0 1px rgba(255, 255, 255, .2), inset 0 0 0 .1px rgba(255, 255, 255, .2);
}
.bf-feld--fehler .bf-feld__huelle { box-shadow: 0 0 0 1px rgb(255, 97, 57), inset 0 0 0 .1px rgb(255, 97, 57); }
.bf-feld__eingabe {
  display: block; width: 100%; height: 56px; margin: 0; padding: 13.25px 17px 14.75px; border: 0; border-radius: 6px; outline: none;
  background: transparent; color: rgb(39, 50, 63); font-family: var(--font-kit-text-font), sans-serif; font-size: 15px; font-weight: 400;
  line-height: normal; -webkit-appearance: none; appearance: none;
}
.bf-feld__eingabe::placeholder { color: rgba(39, 50, 63, .3); opacity: 1; }
/* Onepage schaltete das Zoomen der Seite ganz ab; hier bleibt es an, dafür am Handy 16 px, sonst zoomt iOS beim Antippen. */
@media (hover: none) and (pointer: coarse) { .bf-feld__eingabe { font-size: 16px; } }
.bf-feld--telefon .bf-feld__eingabe { padding-left: 56px; }
.bf-feld__flagge { position: absolute; left: 16px; top: 20px; width: 24px; height: 16px; pointer-events: none; }
.bf-feld__flagge svg { display: block; width: 24px; height: 16px; }
.bf-feld__flagge .telefon__iso {
  display: flex; align-items: center; justify-content: center; width: 24px; height: 16px; border-radius: 2px;
  background: rgba(39, 50, 63, .12); font: 800 9px/16px var(--font-kit-text-font), sans-serif; letter-spacing: .04em;
}
/* Die Länderwahl liegt unsichtbar über der Flagge, damit das Handy seine eigene Auswahl öffnet (wie bei Onepage). */
.bf-feld__land {
  position: absolute; left: 0; top: 0; z-index: 1; width: 56px; height: 56px; margin: 0; padding: 0; border: 0; opacity: 0;
  cursor: pointer; font-size: 16px; -webkit-appearance: none; appearance: none;
}
.bf-feld__meldung, .bf-feld__hinweis {
  margin: 0; padding-top: 6.75px; font-family: var(--font-kit-text-font), sans-serif; font-size: 13.5px; font-weight: 500;
  line-height: 24px; text-align: left;
}
.bf-feld__meldung { color: rgb(255, 97, 57); }
.bf-feld__meldung[hidden], .bf-feld__hinweis[hidden] { display: none; }
/* Tippfehler-Vorschlag (nicht bei Onepage, in jedem Anmeldefenster hier, docs/nachbau.md): wie .fenster__tippfehler in basis.css. */
.bf-feld__hinweis { color: #6b7280; }
.bf-feld__hinweis button {
  margin: 0; padding: 0; border: 0; background: none; font: inherit; font-weight: 800; color: var(--color-kit-key1, #d12530);
  text-decoration: underline; cursor: pointer;
}
@media (max-width: 768px) { .bf-karte { padding: 24px; } }

/* Häkchen nach dem Absenden (Lottie „Check Mark 01“ als SVG, abgespielt von vsl.js): Kasten 38 % so hoch wie breit,
   die Animation (1080 x 1080) mittig darin. Ohne Skript steht das letzte Bild da. */
.bf-haken { position: relative; width: 100%; }
.bf-haken::before { content: ""; display: block; padding-bottom: 38%; }
.bf-haken svg { position: absolute; inset: 0; display: block; width: 100%; height: 100%; }

/* Fußzeile dieser Seite (Sektion „Fußzeile“: Zeile und Impressum, weiß auf Dunkel). */
.bk-fusszeile a { color: inherit; text-decoration: none; border-bottom: 1px solid currentColor; }

/* ---------- /vorbereitung: Schritte ohne Felder (Onepage-Formular „Vorbereitung“, Ablauf in vsl.js) ---------- */
/* Montserrat kursiv 700 („Schritt 1 von 4“): ohne echten Schnitt rechnet der Browser eine schräge Fassung mit anderen
   Breiten. Datei von onecdn.io/font-storage/montserrat. */
@font-face { font-family: 'Montserrat'; font-style: italic; font-weight: 700; font-display: swap; src: url('/_cm/schrift/montserrat-700italic.woff2') format('woff2'); }

/* Fortschritt „sticky-line“: 8 px am oberen Rand der Sektion, scrollt mit (klebt bei Onepage trotz des Namens nicht),
   der erledigte Anteil in Rot, Breite in 0,3 s. Im Abschluss ausgeblendet. */
.vs-linie { position: absolute; top: 0; left: 0; z-index: 1; width: 100%; height: 8px; background: rgba(26, 33, 42, .1); pointer-events: none; }
.vs-linie__fortschritt { height: 100%; background: var(--color-kit-key1, #d12530); transition: width .3s ease; }
.vs-linie[hidden], .vs-schritt[hidden] { display: none; }
/* Über jedem Schritt außer dem Abschluss steht der Platz der eingebauten Fortschrittsanzeige (20 px, unsichtbar). */
.vs-schritt__platz { height: 20px; }
/* Wechsel „slide-vertical“: der neue Schritt kommt um 5 % seiner Höhe von unten (zurück: von oben) und blendet ein,
   0,5 s mit der Kurve des Baukastens; der alte verschwindet sofort. */
.vs-schritt--vor .vs-schritt__inhalt { animation: vs-vor .5s cubic-bezier(.25, .46, .45, .94) both; }
.vs-schritt--zurueck .vs-schritt__inhalt { animation: vs-zurueck .5s cubic-bezier(.25, .46, .45, .94) both; }
@keyframes vs-vor { from { transform: translate3d(0, 5%, 0); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes vs-zurueck { from { transform: translate3d(0, -5%, 0); opacity: 0; } to { transform: none; opacity: 1; } }
.vs-schritt__inhalt:focus { outline: none; }

/* Knöpfe der Schritte (link-group „xs“ mit Schrift 14 px): Ecken 16 px, Unterzeile 0,8 em ohne Abdunkeln; „Zurück“ in
   Hellrot mit dunkler Schrift. Zwei Knöpfe stehen am Handy untereinander über die volle Breite, einer bleibt mittig. */
.bk-knopf--rund16 { border-radius: 16px; }
.bk-knopf--14 { font-size: 14px; }
.bk-knopf--14 .bk-knopf__unter { font-size: 11.2px; line-height: 16.8px; letter-spacing: normal; opacity: 1; }
.bk-knopf--hell { color: var(--color-kit-dark, #1a212a); }
@media (max-width: 768px) {
  .vs-knoepfe { flex-direction: column; }
  .vs-knoepfe .bk-knopf { width: 100%; }
}

/* Laufband „Das sagen meine Klienten“: Bilder 186 px hoch mit eigenem Schatten (sonst wie .vb-band). */
.vs-band .vb-band__bild img { height: 186px; box-shadow: 2px 8px 11px -4px rgba(0, 0, 0, .32); }

/* Bild mit Schatten (Verlauf in Proof2): Ecken 16 px, Schatten 2 3 22 px in 48 % Schwarz. */
.vs-bild-schatten { border-radius: 16px; overflow: hidden; box-shadow: 2px 3px 22px 0 rgba(0, 0, 0, .48); }

/* Zwei Bilder nebeneinander (Galerie „masonry“, quadratisch, 32 px Abstand, Ecken 16 px), am Handy untereinander. */
.vs-paar { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; }
.vs-paar img { display: block; width: 100%; height: auto; aspect-ratio: 1; object-fit: cover; border-radius: 16px; }
@media (max-width: 768px) { .vs-paar { grid-template-columns: 1fr; } }

/* Fragen ohne Schatten (Liste „accordion“, Stil „solid“ in Weiß, ohne shadow_key). */
.bk-fragen--flach .bk-frage { box-shadow: none; }

/* Bilderraster ohne Ecken (Galerie „list“ ohne radius_key, „Und so sehen meine Jungs aus“). */
.vs-raster .vb-raster__bild { border-radius: 0; }

/* Hervorhebung, die am Handy umbricht: Die rote Fläche aus vorbereitung.css (::before am Inline-Element) verschwindet,
   sobald das Ende auf der zweiten Zeile links vom Anfang auf der ersten liegt. Hier ist sie der Hintergrund jeder Zeile
   (box-decoration-break), gleich breit: Innenabstand 0,25 em plus Außenabstand bis zum halben Zeichenschritt. */
.vb-hl--umbruch { padding: 0 .25em; margin: 0 calc(.5ch - .25em); background: var(--color-kit-key1, #d12530); border-radius: .08em; }
.vb-hl--umbruch::before { content: none; }
