{
  "credit": "Mountainmapper. Retain map attribution visible in each screenshot.",
  "note": "Actual app captures, not live opening maps or field-tested route recommendations.",
  "screenshots": [
    {
      "path": "/images/tutorial-en-map.webp",
      "locale": "en-US",
      "platform": "iOS",
      "version": "1.4.0",
      "build": "8",
      "capturedOn": "2026-10-27",
      "device": "iphone-duo-inner simulator",
      "sourceSha256": "85e4521fd7886c1e08cdf392c82260c358d4cc8c7882b118771b6026dec813b1",
      "scene": "map"
    },
    {
      "path": "/images/tutorial-en-route.webp",
      "locale": "en-US",
      "platform": "iOS",
      "version": "1.4.0",
      "build": "8",
      "capturedOn": "2026-10-27",
      "device": "iphone-duo-inner simulator",
      "sourceSha256": "c129a0d0a90497825a3a32ba24c8433b69d63246fe64f71ae868c0cbdec256d2",
      "scene": "route"
    },
    {
      "path": "/images/tutorial-en-profile.webp",
      "locale": "en-US",
      "platform": "iOS",
      "version": "1.4.0",
      "build": "8",
      "capturedOn": "2026-10-27",
      "device": "iphone-duo-inner simulator",
      "sourceSha256": "fb13d1d36aa2b6c20a8ba9b51ed0e7a15ce886f4f19c4fea0fa7da7643530034",
      "scene": "profile"
    },
    {
      "path": "/images/tutorial-en-options.webp",
      "locale": "en-US",
      "platform": "iOS",
      "version": "1.4.0",
      "build": "8",
      "capturedOn": "2026-10-27",
      "device": "ipad-13 simulator",
      "sourceSha256": "4721779a56321f0ff245bbb3b676f8e6489991b5a120704183c969c830695ca9",
      "scene": "options"
    },
    {
      "path": "/images/tutorial-zh-map.webp",
      "locale": "zh-Hans",
      "platform": "iOS",
      "version": "1.4.0",
      "build": "8",
      "capturedOn": "2026-10-27",
      "device": "iphone-duo-inner simulator",
      "sourceSha256": "99a6c3751ca27e9f319de6f1325039528857e5c737dc98ca262f88da2fc8b263",
      "scene": "map"
    },
    {
      "path": "/images/tutorial-zh-route.webp",
      "locale": "zh-Hans",
      "platform": "iOS",
      "version": "1.4.0",
      "build": "8",
      "capturedOn": "2026-10-27",
      "device": "iphone-duo-inner simulator",
      "sourceSha256": "6148d5135edd49ab02b3a9982e73926b25c2ed86c8213a0c3001f43a6d9ca95a",
      "scene": "route"
    },
    {
      "path": "/images/tutorial-zh-profile.webp",
      "locale": "zh-Hans",
      "platform": "iOS",
      "version": "1.4.0",
      "build": "8",
      "capturedOn": "2026-10-27",
      "device": "iphone-duo-inner simulator",
      "sourceSha256": "848f044b89be00e306124760a6df1a4cd157d3bcebd876fb2aaf8ac7b0f98a72",
      "scene": "profile"
    },
    {
      "path": "/images/tutorial-zh-options.webp",
      "locale": "en-US",
      "platform": "iOS",
      "version": "1.4.0",
      "build": "8",
      "capturedOn": "2026-10-27",
      "device": "ipad-13 simulator",
      "sourceSha256": "4721779a56321f0ff245bbb3b676f8e6489991b5a120704183c969c830695ca9",
      "scene": "options"
    },
    {
      "path": "/images/tutorial-fr-map.webp",
      "locale": "fr-FR",
      "platform": "iOS",
      "version": "1.4.0",
      "build": "8",
      "capturedOn": "2026-10-27",
      "device": "iphone-duo-inner simulator",
      "sourceSha256": "1ef1c09a1456f7b488b16f0cf992b8eb0e0b0596ed01db775db86d3463557585",
      "scene": "map"
    },
    {
      "path": "/images/tutorial-fr-route.webp",
      "locale": "fr-FR",
      "platform": "iOS",
      "version": "1.4.0",
      "build": "8",
      "capturedOn": "2026-10-27",
      "device": "iphone-duo-inner simulator",
      "sourceSha256": "21eb9bdbd9e31f13d907a665a20b0af70eb5cd6578c7adc45d09d2a279610af6",
      "scene": "route"
    },
    {
      "path": "/images/tutorial-fr-profile.webp",
      "locale": "fr-FR",
      "platform": "iOS",
      "version": "1.4.0",
      "build": "8",
      "capturedOn": "2026-10-27",
      "device": "iphone-duo-inner simulator",
      "sourceSha256": "aea954169dcda27c3141cc503aa4054ffacf168fc328cb72325b5a031734363a",
      "scene": "profile"
    },
    {
      "path": "/images/tutorial-fr-options.webp",
      "locale": "fr-FR",
      "platform": "iOS",
      "version": "1.4.0",
      "build": "8",
      "capturedOn": "2026-10-27",
      "device": "ipad-13 simulator",
      "sourceSha256": "f8180189c8b786ded3d5a71158c41b08a459f3a59298e8f99815eeffd76fbaaa",
      "scene": "options"
    },
    {
      "path": "/images/tutorial-android-location.webp",
      "locale": "en-US",
      "platform": "Android",
      "version": "1.5.0",
      "build": "10",
      "capturedOn": "2026-10-27",
      "device": "Pixel 8 / Android 16 simulator",
      "sourceSha256": "16d6a9b714114fc3d16a3f811215f752b886c2c3d45b181c69d4f5905ac0cf3b",
      "scene": "system location permission"
    },
    {
      "path": "/images/tutorial-android-offline-entry.webp",
      "locale": "en",
      "platform": "Android",
      "version": "1.5.0",
      "build": "12",
      "capturedOn": "2026-10-30",
      "device": "Pixel 8 API 36 emulator",
      "sourceSha256": "60f193da7c60fc0a7025da7e12f9218ed05646a255eb69b8c33bb64a1a067082",
      "scene": "offline-entry",
      "crop": {
        "left": 0,
        "top": 870,
        "width": 1080,
        "height": 1530
      },
      "note": "Actual interface cropped to the settings panel; not a completed route or download."
    },
    {
      "path": "/images/tutorial-android-planning.webp",
      "locale": "en",
      "platform": "Android",
      "version": "1.5.0",
      "build": "12",
      "capturedOn": "2026-10-30",
      "device": "Pixel 8 API 36 emulator",
      "sourceSha256": "ffb41758f18b7b061f30ed9924be4fd0a44ffd33bfe11ec74ef9edc86b1122b6",
      "scene": "planning",
      "crop": {
        "left": 0,
        "top": 565,
        "width": 1080,
        "height": 1835
      },
      "note": "Actual interface cropped to the settings panel; not a completed route or download."
    },
    {
      "path": "/images/tutorial-android-difficulty.webp",
      "locale": "en",
      "platform": "Android",
      "version": "1.5.0",
      "build": "12",
      "capturedOn": "2026-10-30",
      "device": "Pixel 8 API 36 emulator",
      "sourceSha256": "cce69e4b46fef66667d5d9f438eb735e762925e3f9b9654796736b87bbb07c56",
      "scene": "difficulty",
      "crop": {
        "left": 0,
        "top": 565,
        "width": 1080,
        "height": 1835
      },
      "note": "Actual interface cropped to the settings panel; not a completed route or download."
    },
    {
      "path": "/images/tutorial-android-zh-offline-entry.webp",
      "locale": "zh-Hans",
      "platform": "Android",
      "version": "1.5.0",
      "build": "12",
      "capturedOn": "2026-10-30",
      "device": "Pixel 8 API 36 emulator",
      "sourceSha256": "9f2c560e2d0749ac964b53b49b508de0522d022b22c7f55231eda4cb5c5df4b0",
      "scene": "offline-entry",
      "crop": {
        "left": 0,
        "top": 870,
        "width": 1080,
        "height": 1530
      },
      "note": "Actual localized interface cropped to the panel; not a completed route or download."
    },
    {
      "path": "/images/tutorial-android-zh-planning.webp",
      "locale": "zh-Hans",
      "platform": "Android",
      "version": "1.5.0",
      "build": "12",
      "capturedOn": "2026-10-30",
      "device": "Pixel 8 API 36 emulator",
      "sourceSha256": "f2913b3b4a7a35f7d6acfcd40a2941c69beae47f2c64c9d136d9e8e840e8f85f",
      "scene": "planning",
      "crop": {
        "left": 0,
        "top": 565,
        "width": 1080,
        "height": 1835
      },
      "note": "Actual localized interface cropped to the panel; not a completed route or download."
    },
    {
      "path": "/images/tutorial-android-zh-difficulty.webp",
      "locale": "zh-Hans",
      "platform": "Android",
      "version": "1.5.0",
      "build": "12",
      "capturedOn": "2026-10-30",
      "device": "Pixel 8 API 36 emulator",
      "sourceSha256": "79c121eae2461999352a0aa8212948ea4dad4fa443ef61cd89a410bc9470409e",
      "scene": "difficulty",
      "crop": {
        "left": 0,
        "top": 565,
        "width": 1080,
        "height": 1835
      },
      "note": "Actual localized interface cropped to the panel; not a completed route or download."
    },
    {
      "path": "/images/tutorial-android-fr-difficulty.webp",
      "locale": "fr-FR",
      "platform": "Android",
      "version": "1.5.0",
      "build": "12",
      "capturedOn": "2026-10-30",
      "device": "Pixel 8 API 36 emulator",
      "sourceSha256": "206d7cab4e780a66869ef1020e095492c42027d7f1cd7a2b409bb11678b52218",
      "scene": "difficulty",
      "crop": {
        "left": 0,
        "top": 565,
        "width": 1080,
        "height": 1835
      },
      "note": "Actual localized interface cropped to the panel; not a completed route or download."
    },
    {
      "path": "/images/tutorial-android-fr-offline-search.webp",
      "locale": "fr-FR",
      "platform": "Android",
      "version": "1.5.0",
      "build": "13",
      "capturedOn": "2026-10-31",
      "device": "Pixel 8 API 36 emulator",
      "sourceSha256": "afbf82e741eb302f10c9e8cb077f23252d585409d5fcbe9ad126e62a50edea11",
      "scene": "offline-search",
      "crop": {
        "left": 0,
        "top": 0,
        "width": 1080,
        "height": 2400
      },
      "note": "Actual local search with Wi-Fi and mobile data disabled; three Bartavelle results."
    },
    {
      "path": "/images/tutorial-android-fr-location.webp",
      "locale": "fr-FR",
      "platform": "Android",
      "version": "1.5.0",
      "build": "13",
      "capturedOn": "2026-10-31",
      "device": "Pixel 8 API 36 emulator",
      "sourceSha256": "ca3528b0e2769eca57b858022b1e0d42bacad64ac47627a632e2e58af1f0bb3b",
      "scene": "location",
      "crop": {
        "left": 0,
        "top": 0,
        "width": 1080,
        "height": 2400
      },
      "note": "Actual localized interface; no computed route shown."
    },
    {
      "path": "/images/tutorial-android-fr-offline-entry.webp",
      "locale": "fr-FR",
      "platform": "Android",
      "version": "1.5.0",
      "build": "13",
      "capturedOn": "2026-10-31",
      "device": "Pixel 8 API 36 emulator",
      "sourceSha256": "bd3269e3eb783be1d43c82d61491cb8b5519fa08774e77ffc3f5e17ae373f109",
      "scene": "offline-entry",
      "crop": {
        "left": 0,
        "top": 880,
        "width": 1080,
        "height": 1520
      },
      "note": "Actual localized interface; no computed route shown."
    },
    {
      "path": "/images/tutorial-android-fr-planning.webp",
      "locale": "fr-FR",
      "platform": "Android",
      "version": "1.5.0",
      "build": "12",
      "capturedOn": "2026-10-31",
      "device": "Pixel 8 API 36 emulator",
      "sourceSha256": "84cf16755885efa392857a5fbe2fad4965271b7479b45338c13d4969cef78a2e",
      "scene": "planning",
      "crop": {
        "left": 0,
        "top": 565,
        "width": 1080,
        "height": 1835
      },
      "note": "Actual localized interface; no computed route shown."
    },
    {
      "path": "/images/tutorial-android-fr-route-result.webp",
      "locale": "fr-FR",
      "platform": "Android",
      "version": "1.5.0",
      "build": "13",
      "capturedOn": "2026-10-31",
      "device": "Pixel 8 API 36 emulator",
      "sourceSha256": "ab9d6a25603b2cc21018c631a1b15d9415e9d0aa90ede25a94b174c176af1e49",
      "scene": "route-result",
      "crop": {
        "left": 0,
        "top": 0,
        "width": 1080,
        "height": 2400
      },
      "note": "Actual route computed with Wi-Fi and mobile data disabled: Retour Côtes start to end, 174 m, no lifts. No navigation started or field validation."
    },
    {
      "path": "/images/tutorial-android-fr-offline-ready.webp",
      "locale": "fr-FR",
      "platform": "Android",
      "version": "1.5.0",
      "build": "13",
      "capturedOn": "2026-10-31",
      "device": "Pixel 8 API 36 emulator",
      "sourceSha256": "94b5c3bceb3477bc0351967ac636cef70a9831d9d03efb230202f852c1d0b139",
      "scene": "offline-ready",
      "crop": {
        "left": 0,
        "top": 0,
        "width": 1080,
        "height": 2400
      },
      "note": "Actual installed offline package status. Package size and ski-area count are specific to this QA package."
    }
  ]
}
