Checklist anti-error:
- Isi demoUrl/cvUrl bila ada, kalau kosong tombol akan disabled.
- Image kosong => fallback placeholder otomatis.
- projects.json bukan array => empty state.
- Test responsive: 360px, 768px, 1024px.
