.ribbon{
  --ribbon-gap:24px;
  justify-content:flex-start;
  gap:var(--ribbon-gap);
  overflow:hidden;
}
.ribbon > span{
  flex:0 0 max(240px,20vw);
  justify-content:center;
  animation:ribbon-slide 7s linear infinite;
  will-change:transform;
}
@keyframes ribbon-slide{
  from{transform:translateX(0)}
  to{transform:translateX(calc(-100% - var(--ribbon-gap)))}
}
@media(prefers-reduced-motion:reduce){
  .ribbon > span{animation:none;will-change:auto}
}
