/* =====================================================================
   BODEN — Start ↔ Arbeiten als Kamerafahrt (js/boden.js, 21.09.2026)
   Der Hallenboden des Heros ist eine 3D-Ebene im Projektfeld: Kachel- und
   Render-Ebenen, Wand und Monument als Kulissen, ihre Spiegelung in einem
   eigenen preserve-3d-Baum #pfSpiegel über dem Feld. Alle Ebenen sind <img>
   in Bildgröße mit scale() (direkt komponierbar), das Feld trägt je Frame
   eine matrix3d. Die Würfel sind während der Fahrt aus dem Rendering
   (display none, .pf-szene) und kommen erst am Ende mit Kachel-Deckeln.
   .pf-boden setzt js/boden.js, sobald die Szene steht; ohne die Klasse
   ändert diese Datei nichts an der Arbeiten-Sektion.
   ===================================================================== */

.pf-stage.pf-boden {
  --pfbg: 0;                       /* Arbeiten-Hintergrund und Vignette, blenden in Phase 2 ein */
  --pfshot: 0;                     /* Projektbilder auf den Deckeln, blenden am Ende ein */
  background: transparent;
}
.pf-boden .pf-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: var(--pfbg);
  background: linear-gradient(135deg, #070809 0%, #0d0e10 52%, #17181a 100%);
}
.pf-stage.pf-boden::before,
.pf-stage.pf-boden::after { opacity: var(--pfbg); }
.pf-boden .pf-shot img { opacity: var(--pfshot); }
.pf-boden .pf-soon-label { opacity: calc(.9 * var(--pfshot)); }

/* Ebenen der Szene */
.pf-field.pf-szene .pf-cube { display: none; }
.pf-field.pf-boden-ruhe .pf-ebene { display: none; }   /* Arbeiten-Ruhe: Ebenen aus, Deckel tragen die Kachel */
.pf-ebene {
  position: absolute;
  display: block;
  max-width: none;                 /* base.css: img { max-width: 100% } deckelte die Wand auf die Feldbreite */
  max-height: none;
  pointer-events: none;
  backface-visibility: hidden;
  transform-origin: 0 0;
  user-select: none;
  -webkit-user-drag: none;
}
/* transform je Ebene setzt boden.js (translateZ + scale auf Kachelmaß) */
.pf-ebene--kulisse { transform-origin: 50% 100%; }

/* Spiegelung: eigener 3D-Baum über dem Feld, gleiche Lage und Größe wie .pf-field
   (im Feld-Baum deckte der opake Boden sie zu); Deckkraft nur auf den Blatt-<img> */
.pf-spiegel {
  position: absolute;
  left: 50%;
  top: 56%;
  z-index: 2;
  transform-style: preserve-3d;
  pointer-events: none;
  visibility: hidden;
}
/* nach unten geklappt (rotateX(+90)) zeigt die Ebene der Kamera ihre Rückseite */
.pf-ebene--spiegel { backface-visibility: visible; opacity: 0; }

/* Deckel mit derselben Kachelebene wie der Boden (Fuge mittig in der 2-px-Lücke:
   die Kachel beginnt 1 px vor dem Deckel); --kx/--ky je Würfel, --ksize = Ebenenbreite */
.pf-field.pf-szene-deckel .pf-top,
.pf-field.pf-szene-deckel .pf-top.pf-empty-top,
.pf-field.pf-szene-deckel .pf-soon-top,
.pf-field.pf-szene-deckel .pf-shot {
  background: var(--kachel) var(--kx, -1px) var(--ky, -1px) / var(--ksize, calc(20 * (var(--e) + 2px))) var(--ksize, calc(20 * (var(--e) + 2px))) no-repeat;
  box-shadow: none;
}
.pf-field.pf-szene-deckel .pf-shot::after { display: none; }

/* Während der Fahrt (body.fp-boden-flight, fullpage.js): die Startsektion liegt
   ÜBER der Szene, zeigt aber nur ihren Text — Kulisse, Glow und Clip-Grund sind
   aus, damit der Hero-Text über der laufenden Kamerafahrt ausblenden kann. */
body.fp-active.fp-boden-flight .section--hero .fp-clip { background: transparent; }
body.fp-active.fp-boden-flight .section--hero .fp-clip > :not(.fp-content) { visibility: hidden; }
