/* 首屏粒子层：只负责视觉，不接管任何指针事件。 */
.spark-layer {
  position: absolute;
  inset: 0;
  z-index: 4;
  width: 100%;
  height: 100%;
  pointer-events: none;
  opacity: 0;
  transition: opacity 700ms ease;
}
.spark-layer.is-on { opacity: 1; }

/* 关掉动效就等于关掉这一层，不留空 canvas 占位。 */
@media (prefers-reduced-motion: reduce) {
  .spark-layer { display: none; }
}
