.m7tsi-layer {
  position: fixed;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 9999;
}

.m7tsi-icon {
  position: absolute;
  width: var(--m7tsi-size, 30px);
  height: auto;
  max-width: none;
  user-select: none;
  pointer-events: none;
  will-change: transform;
}

.m7tsi-motion-fall .m7tsi-icon {
  top: -12%;
  animation: m7tsi-fall var(--m7tsi-duration, 18s) linear infinite;
  animation-delay: var(--m7tsi-delay, 0s);
}

.m7tsi-motion-float .m7tsi-icon {
  top: var(--m7tsi-random-top, 10%);
  animation: m7tsi-float var(--m7tsi-duration, 18s) ease-in-out infinite alternate;
  animation-delay: var(--m7tsi-delay, 0s);
}

@keyframes m7tsi-fall {
  0% { transform: translate3d(0, -10vh, 0) rotate(0deg); }
  100% { transform: translate3d(var(--m7tsi-drift, 20px), 120vh, 0) rotate(320deg); }
}

@keyframes m7tsi-float {
  0% { transform: translate3d(0, -8vh, 0) rotate(-8deg); }
  50% { transform: translate3d(var(--m7tsi-drift, 24px), 18vh, 0) rotate(8deg); }
  100% { transform: translate3d(calc(var(--m7tsi-drift, 24px) * -0.6), 36vh, 0) rotate(-5deg); }
}

@media (prefers-reduced-motion: reduce) {
  .m7tsi-icon { animation-duration: 30s !important; }
}
