body {
  font-family: system-ui, sans-serif;
  margin: 0;
}

.hint {
  position: fixed;
  top: 0.5rem;
  left: 0.5rem;
  background: #fff;
  padding: 0.25rem 0.5rem;
  z-index: 1;
}

.parallax {
  position: relative;
  height: 100vh;
  overflow: hidden;
}

.bg {
  position: absolute;
  inset: -20% 0;
  background: linear-gradient(#6b8, #468);
}

.content {
  position: relative;
  height: 100%;
  display: grid;
  place-items: center;
  color: #fff;
  font-size: 2rem;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
}

.filler {
  height: 150vh;
}

/* Ohne Support bewegt sich der Hintergrund einfach nicht mit — kein Bruch,
   kein Fallback nötig. Gleiche Basis wie scroll-driven-animations.
   Robustere Alternative mit mehr Support (96.9%, alt aber bewährt):
   perspective + transform-style: preserve-3d + translateZ() + Scale-Ausgleich
   ("Keith Clark"-Technik) — mehr Rechenaufwand pro Layer, kein Scroll-Timeline
   nötig, aber Scale muss den translateZ-Wert manuell kompensieren. */
@media (prefers-reduced-motion: no-preference) {
  .bg {
    animation: parallax-move linear both;
    animation-timeline: scroll(root);
  }
}

@keyframes parallax-move {
  from {
    transform: translateY(-10%);
  }
  to {
    transform: translateY(10%);
  }
}
