# Phase 14 Integration Architecture

```text
Approved CTA trigger
→ localized native dialog
→ shared client/server schema
→ POST /api/demo
→ request marker + origin + content type + size checks
→ strict server validation and normalization
→ honeypot check
→ idempotency coordinator
→ bounded adapter orchestration
→ local-discard or blocked adapter
→ normalized result
→ localized success/failure state
→ consent-gated, allowlisted test analytics sink
```

UI code never imports a vendor SDK. The lead adapter interface is the only external-service boundary. The shipping repository contains no CRM, scheduler, email, consent, or analytics network client because none is approved.

The local adapter is deterministic, server-side, non-production, and discard-only. Production environment validation rejects local adapter activation except for an explicit loopback-only production-like browser test runtime. That escape requires `DEMO_LOCAL_TEST_MODE=true` and a `localhost` or `127.0.0.1` `SITE_ORIGIN`.

The native dialog does not create browser history. Back navigation therefore remains unchanged. Locale and theme are inherited from the document. Closing is blocked while submission is pending, and focus returns to the initiating control.
