@keyframes niPacket{0%{top:10%;opacity:0}18%,82%{opacity:.8}100%{top:88%;opacity:0}}
@keyframes niScan{0%{top:0;opacity:0}20%,80%{opacity:.55}100%{top:100%;opacity:0}}
@keyframes niWave{to{stroke-dashoffset:-80}}
@keyframes niBelt{to{stroke-dashoffset:-72}}
@keyframes niScanSweep{0%{transform:translateY(0);opacity:0}15%{opacity:.8}100%{transform:translateY(250px);opacity:0}}
@keyframes niBeam{0%,100%{opacity:.15}50%{opacity:.45}}

.ni-packet.p1{left:12%;animation:niPacket 8s linear infinite}
.ni-packet.p2{right:12%;animation:niPacket 8s 4s linear infinite}
.ni-scan{animation:niScan 7s linear infinite}
.ni-wave polyline{stroke-dasharray:8 5;animation:niWave 9s linear infinite}
.ni-cell-belt line{animation:niBelt 2.4s linear infinite}
.ni-cell-stage[data-stage="scan"] .ni-cell-scanline{animation:niScanSweep 1.8s linear infinite}
.ni-cell-stage[data-stage="scan"] .ni-cell-beam,
.ni-cell-stage[data-stage="fuse"] .ni-cell-beam{animation:niBeam 2.2s ease-in-out infinite}

@media(prefers-reduced-motion:reduce){
    html{scroll-behavior:auto!important}
    .ni-packet,.ni-scan,.ni-wave polyline,.ni-cell-belt line,.ni-cell-scanline,.ni-cell-beam{animation:none!important}
}
html[data-boost="true"] .ni-packet,
html[data-boost="true"] .ni-scan,
html[data-boost="true"] .ni-wave polyline,
html[data-boost="true"] .ni-cell-belt line,
html[data-boost="true"] .ni-cell-scanline,
html[data-boost="true"] .ni-cell-beam{animation:none!important}
