{
  "name": "Travel Forecast",
  "short_name": "Travel Forecast",
  "description": "See the 15-day forecast for every port on your cruise. Plan your trip with confidence and enjoy your vacation with no surprises.",
  "icons": [
    {
      "src": "/icons/android-chrome-192x192.png",
      "sizes": "192x192",
      "type": "image/png",
      "purpose": "any"
    },
    {
      "src": "/icons/android-chrome-512x512.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "any"
    },
    {
      "src": "/icons/maskable-192.png",
      "sizes": "192x192",
      "type": "image/png",
      "purpose": "maskable"
    },
    {
      "src": "/icons/maskable-512.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "maskable"
    }
  ],
  "start_url": "/",
  "scope": "/",
  "id": "/",
  "lang": "en",
  "dir": "ltr",
  "categories": ["travel", "weather", "utilities"],
  "screenshots": [
    {
      "src": "/screenshots/home-wide.jpg",
      "sizes": "1280x650",
      "type": "image/jpeg",
      "form_factor": "wide",
      "label": "Search cruises and see the forecast for every port"
    },
    {
      "src": "/screenshots/home-narrow.jpg",
      "sizes": "390x754",
      "type": "image/jpeg",
      "form_factor": "narrow",
      "label": "Search cruises and see the forecast for every port"
    }
  ],
  "shortcuts": [
    {
      "name": "Search Cruises",
      "short_name": "Search",
      "url": "/search",
      "icons": [{ "src": "/icons/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }]
    },
    {
      "name": "Favorites",
      "short_name": "Favorites",
      "url": "/favorites",
      "icons": [{ "src": "/icons/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }]
    },
    {
      "name": "Destinations",
      "short_name": "Destinations",
      "url": "/destinations",
      "icons": [{ "src": "/icons/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }]
    }
  ],
  "_notes": {
    "_": "This is the dark-mode variant, served only via the media-gated <link rel=\"manifest\" media=\"(prefers-color-scheme: dark)\"> in pwa-headers.tsx (Chromium-only; other browsers always get the default light public/manifest.json). Keep every field except theme_color/background_color in sync with manifest.json by hand — the manifest spec has no include/merge mechanism, so this is a full duplicate, not a diff.",
    "id": "Stabilizes this PWA's identity across reinstalls/updates (without it, some platforms can treat a manifest change as a different app). Set to start_url per the common recommendation when there's no reason to diverge.",
    "screenshots": "Home-page captures (desktop 1280x650, mobile 390x754) — feeds the richer install UI on Android/desktop and Play Store listings generated via tools like PWABuilder. Regenerate if the hero section changes meaningfully.",
    "theme_color": "Standalone PWA launch only: tints the splash-screen status bar and the Android task-switcher. It does NOT control the browser/PWA chrome while browsing — that is the theme-aware <meta name=\"theme-color\"> in lib/constants.ts (#ffffff in light, #0e1f29 in dark). Set to #0e1f29 to match the dark app header.",
    "background_color": "PWA splash-screen background shown while the app boots from the home screen. Matches the icon tile color baked into /icons/* (#1e2c38) so the icon blends in with no visible box. Unrelated to the Open Graph share image (that is a static PNG at /images/opengraph-image.png)."
  },
  "theme_color": "#0e1f29",
  "background_color": "#1e2c38",
  "display": "standalone",
  "orientation": "portrait"
}
