- Add PrintJob types (PrintJob, PrintJobFilter) with status union type
- Add printJobService.ts using axios + TanStack Query
- Build PrintJobsPage.tsx with:
- Desktop table: job name, printer, color-coded status badge, started time, duration, filament used, cost
- Mobile card layout with grid-based info display
- Filter by status (pending/printing/completed/failed)
- Filter by printer name
- Sort by any column (name, started_at, duration, filament, cost)
- Pagination with 20 per page
- Loading spinner, error with retry, empty state
- Client-side text search by job/printer name
- Duration formatting (h/m/s)
- Add navigation bar in App.tsx with Inventory + Print Jobs tabs using NavLink