.hearts-layer{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.heart{position:absolute;top:-10vh;will-change:transform,opacity;animation-name:heart-fall;animation-timing-function:linear;animation-iteration-count:infinite;filter:drop-shadow(0 10px 18px rgba(0,0,0,.25))}
.heart::before{content:"❤";display:block;line-height:1}
@keyframes heart-fall{
  0%{transform:translate3d(var(--x,0px),-10vh,0) rotate(var(--r,0deg));opacity:0}
  8%{opacity:var(--o,.9)}
  100%{transform:translate3d(calc(var(--x,0px) + var(--dx,0px)),110vh,0) rotate(calc(var(--r,0deg) + 240deg));opacity:0}
}