Skeleton

Loading placeholders that mimic real content shapes. A CSS-only opacity pulse communicates "loading" without a spinner. Three shapes: text (default), circle (avatar), and rect (block). Under reduced motion the pulse stops; the placeholder stays as a static grey block.

Text lines

Card skeleton

Rect + circle