{
  "comment": "DELIBERATELY NAMES NO BRAND. A manifest is JSON and cannot hold the reasoning, so it is written beside the <link rel=manifest> in apps/web/index.html and in public/pwa.js. Short version: this is a white-label platform, the brand is resolved per hostname from GET /api/tenant/resolve, and a hardcoded name here would print the platform owner's identity on every operator's Home Screen. name/short_name/icons are the three fields that still need a per-host server route (outside_ask); everything else below is true of every brand, because tokens.css's surfaces are shared and only the accent trio is overridden per tenant.",
  "id": "/",
  "name": "Exchange",
  "short_name": "Exchange",
  "start_url": "/?src=a2hs",
  "scope": "/",
  "display": "standalone",
  "display_override": ["standalone", "minimal-ui"],
  "background_color": "#0b0e17",
  "theme_color": "#0b0e17",
  "categories": ["finance"],
  "dir": "auto",
  "prefer_related_applications": false,
  "icons": [
    { "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any" },
    { "src": "/icons/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any" },
    { "src": "/icons/icon-maskable-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" },
    { "src": "/icons/mark.svg", "sizes": "any", "type": "image/svg+xml", "purpose": "any" }
  ]
}
