Add white-label brand pipeline: flat dir in, all logos/icons generated master
Brand imagery now comes from a single flat directory of image files (brand/, overridable via SP_BRAND_DIR or a gitignored brand/custom/). js/brand/generate.mjs derives everything from it: the four Expo source PNGs (expo prebuild derives all native iOS/Android icon formats from those), web favicons, the OG link banner, desktop ICO/ICNS, docs light/dark logos, the /brand download SVGs, and a typed brand.ts module the app's logo components render from. All outputs are gitignored. The checked-in brand/ carries the generic open-source identity (the pink cube from streamplace-logo.svg); first-party art ships via the override dir at build time. logo.tsx is now brand-agnostic (SvgXml over generated art, currentColor tinting for monochrome marks) and the /brand guidelines screen gates its mark-specific sections on an optional story block in brand.json. Generation is hooked into root prepare, app prebuild/build:web, docs build, and desktop package/make. Superseded static assets (app icon PNGs, public favicon/linkbanner, public/brand SVGs, desktop icons, docs cube.png, root streamplace-logo.svg) are removed from git. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>