Server-side jobs the user waits on — zip creation, remote upload, bulk move. States ride data-state="pending | loading | active | completed | failed". Determinate progress is a 4px --yellow-solid fill on --component-bg-active; unknown duration uses the sliding indeterminate bar (paused under reduced motion). Completed flips the icon tile green; failed goes red with an inline reason and a quiet Retry — never a red-filled row.
Creating zip · backup-photos-2025.zip
64% · 41.1 of 64.2 GB
Uploading to remote storage
preparing…
Moving 214 items to /archive
queued
Zip ready · concert-recordings.zip
Remote upload failed
Destination out of space (needs 12.1 GB, 3.4 GB free)
02Progress primitives
Three bar heights: 2px hairline (inside rows, under toolbars), 4px default (tasks, transfers), 8px emphasis (storage bar). Fill is --yellow-solid on --component-bg-active — green/red only as terminal states, never as in-flight colors. Spinners are a yellow arc on --component-bg-active at 16 / 20 / 28px.