/* ── PERSISTENT 3D WORLD CANVAS ──
   One fixed full-viewport canvas sits behind the entire page; js/world/
   drives which act is visible per scroll position. Never intercepts
   pointer events — all interaction is read at the window level in
   js/world/worldStage.js. */
#world-canvas {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  z-index: 0;
  display: block;
  pointer-events: none;
  transition: opacity 0.4s ease;
}

/* Soft dark scrim behind the nav so nav text stays legible over the bright
   chrome fabric regardless of what's reflecting underneath it. */
.hero-scrim {
  position: fixed;
  top: 0; left: 0; right: 0;
  height: 240px;
  background: linear-gradient(180deg, rgba(0,0,0,0.55), transparent);
  z-index: 0;
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  #world-canvas { transition: none; }
}
