§17.5 — Pick one of 6 premium themes. Tenant layout.tsx reads brands.theme_slug (SSR) + dynamic importthemes/{slug}/layout.tsx. Preview → Apply stores localStorage.theme_slug (mock); in prod POST/api/v1/admin/appearance/theme + Cache-Tag: brand:{id} bust + Flutter sync via GET /api/v1/brand/config.
localStorage.theme_slug and cookie theme_slug; tenant layout.tsx also reads X-Brand-Slug header./demo?theme={slug} → SSR [brand]/layout.tsx dynamically imports themes/{slug}/layout.tsx. Fallback: clinic-clean.https://images.unsplash.com URLs — no local files needed; fallback stock per block type (hero, provider card, product card, testimonial avatar) guaranteed.