/* Optional Seedance hero layer. The existing VIX and procedural 3D scene remain the fallback. */
.zl-hero {
  position: relative;
  isolation: isolate;
}

.zl-seedance-hero {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
  opacity: 0;
  transition: opacity 900ms ease;
  background: radial-gradient(circle at 70% 42%, rgba(47, 215, 255, 0.12), transparent 58%);
}

.zl-seedance-hero::before,
.zl-seedance-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
}

.zl-seedance-hero::before {
  background:
    linear-gradient(90deg, rgba(3, 10, 18, 0.96) 0%, rgba(3, 10, 18, 0.68) 42%, rgba(3, 10, 18, 0.2) 78%, rgba(3, 10, 18, 0.62) 100%),
    linear-gradient(180deg, rgba(3, 10, 18, 0.58), transparent 28%, transparent 68%, rgba(3, 10, 18, 0.86));
}

.zl-seedance-hero::after {
  opacity: 0.16;
  background-image: repeating-linear-gradient(0deg, transparent 0 3px, rgba(150, 238, 255, 0.18) 4px);
  mix-blend-mode: screen;
}

.zl-seedance-hero__video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  filter: saturate(0.82) contrast(1.08) brightness(0.72);
  transform: scale(1.025);
}

.zl-seedance-ready .zl-seedance-hero {
  opacity: 0.72;
}

.zl-seedance-failed .zl-seedance-hero {
  display: none;
}

/* Keep the decorative grid plane out of the hero grid flow.
 * zenvix-lab.css positions it absolutely; changing it to relative creates a
 * third grid item and splits desktop copy/VIX into separate rows. */
.zl-hero > .zl-hero-copy,
.zl-hero > .zl-hero-visual {
  position: relative;
  z-index: 2;
}

@media (max-width: 767px) {
  .zl-seedance-ready .zl-seedance-hero {
    opacity: 0.48;
  }

  .zl-seedance-hero::before {
    background: linear-gradient(180deg, rgba(3, 10, 18, 0.9), rgba(3, 10, 18, 0.56) 48%, rgba(3, 10, 18, 0.9));
  }
}

@media (prefers-reduced-motion: reduce) {
  .zl-seedance-hero {
    display: none !important;
  }
}
