/* ═══════════════════════════════════════════
   phase4.css — WebGL canvas visibility
   No CSS transition here — JS controls opacity
   directly after Three.js confirms first frame.
═══════════════════════════════════════════ */
#webgl-canvas {
  position: fixed; inset: 0; z-index: 0;
  pointer-events: none;
  opacity: 0;
  /* transition intentionally omitted — set by JS after load */
}

/* Applied by JS during Three.js CDN load */
#webgl-canvas.p4-warming {
  opacity: 0.40;
}

/* Applied by JS after first render frame confirmed */
#webgl-canvas.p4-active {
  opacity: 1.0;
}
