feat(security): Helmet+CSP, Origin-based CSRF protection, default-deny iframe sandbox
Three launch-blocking security fixes wired in apps/api/src/main.ts boot order: helmet first (security headers), cookieParser, CORS, then CSRF middleware. CVG-4: Helmet config in apps/api/src/config/helmet.configuration.ts - CSP enforced in prod, report-only in dev. Allowlist tuned for Apollo Sandbox CDN, Google Fonts, same-origin everything else. HSTS only in prod. X-Frame-Options DENY, hidePoweredBy, strict-origin-when-cross-origin referrer. CVG-6: Origin/Referer check on all state-changing requests. Browsers always send Origin and it can't be forged from a cross-site context. Combined with the existing sameSite:strict cookies (production) this is robust CSRF protection. Token-based double-submit pattern is defense-in-depth and tracked separately because it requires Apollo client link changes. CVViewPage iframe: sandbox=allow-same-origin allow-modals -> sandbox= (default deny). The CV preview srcDoc is user-supplied HTML (sanitized server-side via DOMPurify but defense-in-depth). Print button now uses parent window.print() with the existing .no-print toolbar class instead of iframe.contentWindow.print() so we don't need allow-same-origin.