/* 3D hero object: WebGL canvas layered over the stage, replacing the CSS grill. */
.hero-3d {
  position: absolute;
  inset: 0;
  touch-action: pan-y; /* vertical scroll stays native; horizontal drags rotate */
  user-select: none;
}

.hero-stage.is-3d .hero-3d {
  cursor: grab;
}

.hero-stage.is-3d .hero-3d:active {
  cursor: grabbing;
}

.hero-stage.is-3d .hero-3d:focus-visible {
  outline: 2px solid #bf1e2e;
  outline-offset: -8px;
  border-radius: 50%;
}

.hero-3d canvas {
  display: block;
  width: 100%;
  height: 100%;
  opacity: 0;
  transition: opacity var(--dur) var(--ease-out);
}

/* Set by hero-3d.js once the first frame is drawn. */
.hero-stage.is-3d .hero-3d canvas {
  opacity: 1;
}

.hero-stage.is-3d .hero-grill,
.hero-stage.is-3d .hero-scan {
  display: none;
}

@media (prefers-reduced-motion: reduce) {
  .hero-3d canvas {
    transition: none;
  }
}
