{
  "$comment": [
    "Web app manifest — what Add to Home Screen installs.",
    "Named .json, not .webmanifest, on purpose: the smoke harness's static",
    "server maps extensions to content types from a fixed table and would serve",
    "an unknown extension as application/octet-stream. Both spellings are valid;",
    "this one cannot be served wrong by any of the three servers that host it",
    "(webpack-dev-server, the smoke harness, Vercel).",
    "",
    "NO service worker, and therefore no offline mode. display:standalone gives",
    "the app-window chrome without one; caching a vector-tile map for offline use",
    "is a separate, much larger decision (which regions, how much of a 21 MB",
    "archive, how a stale archive is invalidated against the ?v=<builtAt> cache",
    "key) and is left as a follow-up rather than smuggled in with an icon change.",
    "Icons are generated by scripts/make-icons.ts."
  ],
  "name": "Bike Network — Bay Area bikeability map",
  "short_name": "Bike Network",
  "description": "Every street in the Bay Area, scored for biking — traffic stress, hills and bike infrastructure, plus directions that pick the calmer streets.",
  "start_url": "/",
  "scope": "/",
  "id": "/",
  "display": "standalone",
  "orientation": "any",
  "background_color": "#e5e9f0",
  "theme_color": "#e5e9f0",
  "categories": ["navigation", "travel", "utilities"],
  "icons": [
    {
      "src": "/favicon.svg",
      "sizes": "any",
      "type": "image/svg+xml"
    },
    {
      "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"
    }
  ]
}
