First-Run Empty List
The zero-projects state: one action that populates the screen, one import fallback, and copy that says what this space is for. The default for any list a user creates.
Create a first-run empty state for a projects list. Vertically center in the content region a 160px line-art illustration slot, an 18px semibold heading "No projects yet", a supporting sentence in zinc-500 explaining that projects hold your tasks and reports, a primary indigo button "Create your first project", and a secondary "Import from CSV" text link. Cap the text block at 360px wide, give the container role="status", and render it only when the list request succeeds with zero items — a failed request must render the error variant instead. Keep the page header and navigation fully interactive so the user can orient while deciding. On click, the create button opens the same new-project modal used elsewhere in the app, not a one-off form.




