An indeterminate "still working" cue for a wide, horizontal spot — the bottom of a card, the top of a page. The moment real progress becomes calculable, this loader has done its job; keep the same track shape but switch to the determinate progress-bar instead, which is more honest with the user.
Built with a track (a full-width gray bar) holding one shorter block, and a keyframe that oscillates translateX between 0% and the track's width with ease-in-out. Unlike indeterminate-bar below, there's only one block and it never stretches, which keeps the implementation simpler.
Skip it for loads under 200ms — it'll just flash — and prefer a skeleton for a long wait covering most of the screen. role="progressbar" is the wrong role when progress is unknown; wrap it with role="status" and aria-live="polite" instead, and put aria-busy="true" on the actual loading container. Under prefers-reduced-motion, you can tone the back-and-forth down to a faint pulse on the track.