EmptyState — „nic tu není" (.acrm-empty · @acrm/ui EmptyState)
Výchozí — ikona + titulek + podtitulek + volitelná akce (DS Button)
Zatím žádné záznamy Až přibude první osoba nebo firma, objeví se tady.
Kompaktní (sm) — sloupec / inline sekce; ikona i akce volitelné
Nic nenalezeno Zkuste upravit hledaný výraz nebo filtry.
ErrorState — selhání načtení (.est · @acrm/ui ErrorState)
Výchozí — kritická ikona u titulku (bez dlaždice) + retry + volitelný ghost sekundár
Kompaktní (sm) — sloupec / inline sekce
Jeden primitiv na stav — nikdy neslučovat: loading = Skeleton · selhání načtení = ErrorState (vždy s retry) · „nic tu není" = EmptyState. Oba stavy: plochá ikona bez dlaždice (§0), sentence case, jedna krátká věta + max jedna primární akce; klidný tón, žádné ilustrace. Akce EmptyState je DS <Button> (.acrm-btn); ErrorState si nese vlastní .est-btn (primary retry + volitelný ghost). Kanonický kód: @acrm/ui EmptyState.tsx / ErrorState.tsx, CSS .acrm-empty* v apps/web/src/ds.css a .est* v ds/error-state.css (port 1:1 z _ds/error-state.css). Tato karta dokumentuje kanonickou app implementaci a nahrazuje neadoptovaný engine _ds/empty-state.css (.es* — ikona v dlaždici, vlastní .es-btn); screens karty „Empty states" / „Error states" zůstávají mockupy obrazovek, kontrakt komponenty je tady.