White on --green-dark (not --green) is the correct button background; --green (#3D8C4A) gives only 4.16:1 which fails AA for normal-size text. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add frontend service to docker-compose.yml (port 3000, BACKEND_URL env var) - Add frontend/Dockerfile using adapter-node for plain Node/Docker runtime - Switch svelte.config.js from adapter-auto to adapter-node - Generate OpenAPI types from backend spec (openapi-typescript + openapi-fetch) - Add src/lib/server/api.ts as server-only typed API client factory - Add generate:api script to regenerate types when backend spec changes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>