/* Sparse decorative snow, isolated from layout, focus and pointer handling. */
.cm-snow { position:fixed; inset:0; z-index:35; overflow:hidden; pointer-events:none !important; user-select:none; contain:strict; }
.cm-snow > span { position:absolute; top:-8px; left:var(--snow-x); width:var(--snow-size); height:var(--snow-size); border-radius:50%; background:#eee9f8; opacity:0; pointer-events:none !important; animation:cm-snow-fall var(--snow-duration) var(--snow-delay) linear infinite; }
@keyframes cm-snow-fall {
  0% { transform:translate3d(0,-8px,0); opacity:0; }
  12% { opacity:var(--snow-opacity); }
  85% { opacity:var(--snow-opacity); }
  100% { transform:translate3d(var(--snow-drift),calc(100dvh + 16px),0); opacity:0; }
}
.cm-snow.is-paused > span { animation-play-state:paused; }
@media(max-width:640px) { .cm-snow > span:nth-child(n+11) { display:none; } }
@media(prefers-reduced-motion:reduce) { .cm-snow { display:none !important; } .cm-snow > span { animation:none; } }
@media print { .cm-snow { display:none !important; } }
