/* =========================================================
   May & Glass — beforeafter.css
   Styles für das Partial referenzen/beforeafter
   (fixer Bildframe, Scroll-Reveal, mehrere Projekte möglich).

   Eigenständig einsetzbar: Theme-Variablen aus app.css werden
   genutzt, wenn vorhanden — sonst greifen die Fallback-Werte.
   Erwartet lediglich eine .container-Klasse aus dem Theme
   (zentrierte Inhaltsspalte).

   Funktionsweise: Der äußere Wrapper liefert nur den Scrollweg
   (100vh pro Slide, gesetzt über --ba-slides aus dem Partial).
   Das Panel darin ist sticky gepinnt und bleibt komplett stehen —
   beim Scrollen schieben sich im fixen Bildframe die Bilder
   nacheinander übereinander (Projekt 1 Before → After →
   Projekt 2 Before → …); Texte und Hintergrund blenden synchron.

   Steuerung: beforeafter.js setzt auf dem Panel die Custom
   Properties --ba-pos (aktuelle Slide-Position, 0 … Slides-1,
   kontinuierlich) und --ba-bg (0 = Before-Hintergrund,
   1 = After-Hintergrund). Jede Slide (Textblock + Bildlayer)
   trägt ihren Index als --i im Markup.
   ========================================================= */

.beforeafter { position: relative; height: calc(var(--ba-slides, 2) * 100vh); }
.beforeafter__sticky {
    --ba-pos: 0;
    --ba-bg: 0;
    position: sticky;
    top: 0;
    min-height: 100vh;
    min-height: 100svh;
    display: flex;
    align-items: center;
    padding: clamp(2.5rem, 5vw, 4rem) 0;
    overflow: hidden;
    background: linear-gradient(135deg, var(--earth, #9a8770) 0%, var(--earth-dark, #7a6852) 100%);
    color: #fff;
}
/* Heller After-Hintergrund — blendet bei jedem After-Slide ein */
.beforeafter__bg-after {
    position: absolute; inset: 0;
    background: var(--green-50, #ebf0d8);
    opacity: var(--ba-bg);
    pointer-events: none;
}
.beforeafter__inner {
    position: relative;
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: clamp(1.5rem, 4vw, 3rem);
    align-items: center;
}
.beforeafter__label {
    font-family: var(--font-body, "Plus Jakarta Sans", system-ui, sans-serif);
    font-weight: 600;
    font-size: .8rem; letter-spacing: 0.16em;
    text-transform: uppercase; margin: 0 0 1rem;
    opacity: .9;
}
.beforeafter__title {
    font-family: var(--font-display, "Cormorant Garamond", Georgia, serif);
    font-weight: 500;
    font-size: clamp(1.6rem, 3.4vw, 2.3rem);
    text-transform: uppercase; letter-spacing: 0.04em;
    line-height: 1.15; margin: 0 0 1.25rem;
    color: inherit;
}
/* Textblöcke liegen übereinander; sichtbar ist jeweils der Block,
   dessen Index --i der aktuellen Position --ba-pos am nächsten ist
   (weich ausblendend ab einem Abstand von 0,5 Slides) */
.beforeafter__texts { display: grid; }
.beforeafter__texts > * { grid-area: 1 / 1; }
.beforeafter__textblock {
    opacity: clamp(0, calc(1 - max(var(--ba-pos) - var(--i, 0), var(--i, 0) - var(--ba-pos)) * 2), 1);
}
.beforeafter__textblock--before { color: rgba(255,255,255,.88); }
.beforeafter__textblock--before .beforeafter__title { color: #fff; }
.beforeafter__textblock--after { color: var(--ink, #1a2614); }
.beforeafter__textblock--after .beforeafter__title { color: var(--ink-strong, #14200d); }
.beforeafter__text {
    font-size: .95rem; max-width: 40ch;
    color: inherit;
}
/* Fixer Bildframe — die Bildlayer schieben sich beim Scrollen
   nacheinander von unten übereinander (Layer i während des
   Übergangs von Slide i-1 nach i) */
.beforeafter__frame {
    position: relative;
    aspect-ratio: 16 / 10;
    border-radius: var(--radius, 20px);
    overflow: hidden;
    box-shadow: 0 18px 40px rgba(0,0,0,.18);
}
.beforeafter__media {
    position: absolute; inset: 0;
    background: var(--ba-image, linear-gradient(135deg, #4a6b30 0%, #7aa83c 100%));
    background-size: cover; background-position: center;
    transform: translateY(calc(clamp(0, calc(var(--i, 0) - var(--ba-pos)), 1) * 101%));
    box-shadow: 0 -12px 30px rgba(0,0,0,.35);
}

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

@media (prefers-reduced-motion: reduce) {
    /* Statt Schieben nur Überblenden */
    .beforeafter__media {
        transform: none;
        opacity: clamp(0, calc(1 + var(--ba-pos) - var(--i, 0)), 1);
    }
}
