Lock file was generated with npm 11.x (Node 24 local) but node:20-alpine
has npm 10.x which enforces stricter lock file consistency. Using
npm install avoids the picomatch version conflict on CI.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
npm ci fails on alpine when lock file was generated on a different npm
version. --legacy-peer-deps handles the styled-components peer dep too.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Builds studio/ separately during Docker build and copies output to
public/studio/ so it is served as static files by the Astro Node adapter.
Catch-all route redirects deep studio links back to /studio for SPA routing.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>