{
  "$comment_purpose": [
    "Web App Manifest for ecupilot.ai.",
    "",
    "Declares the brand identity that the OS / browser uses when the user",
    "installs the SPA as a Progressive Web App, adds it to the home screen",
    "on iOS / Android, or pins it to the dock on ChromeOS / desktop Chrome.",
    "",
    "What this file controls (vs index.html):",
    "  index.html  → favicons + theme-color for ordinary browser tabs.",
    "  manifest    → standalone-mode app identity (icon, name, splash,",
    "                start URL, display mode) once the user installs.",
    "",
    "Browser support: every modern engine (Chrome, Edge, Safari 16+,",
    "Firefox, all the WebView wrappers). Honoured even when the user",
    "doesn't install — Android Chrome surfaces an 'Install app' banner",
    "off the back of this manifest, and iOS Safari uses it to seed the",
    "Add-to-Home-Screen sheet with the right name + icon + colours.",
    "",
    "Editing notes:",
    "  - The icon entries point at the same PNGs index.html references",
    "    via <link rel='icon'>. Keep the two surfaces in sync — a manifest",
    "    icon that 404s makes the install prompt silently disappear in",
    "    Chrome rather than surfacing an error.",
    "  - 'purpose: any maskable' on the 192/512 PNGs lets Android use the",
    "    same image for both the legacy circular icon and the modern",
    "    adaptive-icon shape (the OS crops to whatever frame its launcher",
    "    expects). The faithful PNGs already include enough safe-zone",
    "    padding around the gauge mark to survive the maskable crop",
    "    without losing visual integrity.",
    "  - 'start_url: /' opens the SPA at its root when launched from the",
    "    installed icon. We don't deep-link to a specific view because",
    "    the auth state determines the landing page (LoginPage vs the",
    "    user's last-active view).",
    "  - 'display: standalone' hides the browser chrome on launch — the",
    "    PWA looks and feels like a native app. The user can still",
    "    long-press to access browser controls if they need to.",
    "",
    "Hidden by JSON parsers — leading-underscore property is convention",
    "for 'metadata only, ignore on consumption'."
  ],

  "name": "ecupilot.ai — AI Copilot for ECU Tuning",
  "short_name": "ecupilot",
  "description": "Calibrate. Optimize. Perform. Professional ECU calibration platform for tuners and OEM engineering teams.",

  "id": "/",
  "scope": "/",
  "start_url": "/",

  "display": "standalone",
  "orientation": "any",

  "theme_color": "#1a1d23",
  "background_color": "#0a0a0a",

  "lang": "en",
  "dir": "ltr",

  "categories": ["productivity", "utilities", "developer"],

  "icons": [
    {
      "src": "/favicon-16.png",
      "sizes": "16x16",
      "type": "image/png"
    },
    {
      "src": "/favicon-32.png",
      "sizes": "32x32",
      "type": "image/png"
    },
    {
      "src": "/favicon-64.png",
      "sizes": "64x64",
      "type": "image/png"
    },
    {
      "src": "/apple-touch-icon.png",
      "sizes": "180x180",
      "type": "image/png"
    },
    {
      "src": "/icon-192.png",
      "sizes": "192x192",
      "type": "image/png",
      "purpose": "any maskable"
    },
    {
      "src": "/icon-512.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "any maskable"
    }
  ],

  "screenshots": [
    {
      "src": "/og-image.png",
      "sizes": "1200x630",
      "type": "image/png",
      "form_factor": "wide",
      "label": "ecupilot.ai dashboard preview"
    }
  ]
}
