npm ci ran with NODE_ENV=production (Coolify build arg) which skipped devDeps,
so vite was missing. Force --include=dev. Bump base image to node:22.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
vite-plugin-pwa peer-depends on vite <=5 but project uses vite 7 (works fine);
npm ci needs legacy-peer-deps which lives in .npmrc (now copied before install).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>