/* 闪光笔的镜头层：压暗（暗角）→ 泛光 → 横向光痕 → 外扩光环。中心点由 JS 写入 --fx/--fy（视口像素） */
.flash { position: fixed; inset: 0; z-index: 80; pointer-events: none; overflow: hidden; }
.flash > * { position: absolute; opacity: 0; will-change: transform, opacity; }
.flash__dim { inset: 0; background: radial-gradient(120vmax circle at var(--fx, 50%) var(--fy, 60%), rgba(14,14,13,0) 0, rgba(14,14,13,.06) 22%, rgba(14,14,13,.22) 70%); }
.flash__bloom { left: var(--fx); top: var(--fy); width: 260vmax; height: 260vmax; border-radius: 50%;
  background: radial-gradient(closest-side, #fff 0, #fff 4%, rgba(252,253,255,.96) 10%, rgba(244,249,255,.82) 20%, rgba(236,244,255,.5) 36%, rgba(255,255,255,0) 64%); mix-blend-mode: screen; }
/* 横向光晕：镜头里的变形光斑。以前是一根 3px 的硬白线，横切气泡和角色像渲染出错；
   现在是一团扁椭圆的柔光，两端和上下都是渐隐，读起来是「光」而不是「线」 */
.flash__streak { left: var(--fx); top: var(--fy); width: 90vw; height: 56px;
  background: radial-gradient(closest-side, rgba(255,255,255,.95), rgba(236,244,255,.55) 32%, rgba(220,234,255,.16) 62%, rgba(220,234,255,0)); }
.flash__ring { left: var(--fx); top: var(--fy); width: 120vmin; height: 120vmin; border-radius: 50%; border: 1.5px solid rgba(255,255,255,.9); box-shadow: 0 0 0 1px rgba(210,228,255,.35); }
