{
  "name": "Speck - Sensor Analysis & Dust Mapping",
  "short_name": "Speck",
  "description": "Sensor analysis and dust mapping utility for photographers. Visualize sensor dust, map spots, and inspect camera hardware.",
  "start_url": "./index.html",
  "scope": "./",
  "display": "standalone",
  "orientation": "portrait-primary",
  "background_color": "#232136",
  "theme_color": "#2a273f",
  "categories": ["photography", "utilities"],
  "screenshots": [
    {
      "src": "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='540' height='720'><rect width='540' height='720' fill='%23232136'/><text x='270' y='360' text-anchor='middle' dy='.3em' fill='%23e0def4' font-size='48' font-family='system-ui'>Speck</text></svg>",
      "sizes": "540x720",
      "type": "image/svg+xml",
      "form_factor": "narrow"
    },
    {
      "src": "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='1280' height='720'><rect width='1280' height='720' fill='%23232136'/><text x='640' y='360' text-anchor='middle' dy='.3em' fill='%23e0def4' font-size='48' font-family='system-ui'>Speck - Sensor Analysis</text></svg>",
      "sizes": "1280x720",
      "type": "image/svg+xml",
      "form_factor": "wide"
    }
  ],
  "icons": [
    {
      "src": "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='192' height='192'><defs><linearGradient id='grad' x1='0%' y1='0%' x2='100%' y2='100%'><stop offset='0%' style='stop-color:%23eb6f92;stop-opacity:1' /><stop offset='100%' style='stop-color:%23ea9a97;stop-opacity:1' /></linearGradient></defs><rect width='192' height='192' fill='url(%23grad)'/><circle cx='96' cy='96' r='60' fill='none' stroke='%23e0def4' stroke-width='3'/><circle cx='96' cy='96' r='40' fill='none' stroke='%23e0def4' stroke-width='2'/><circle cx='96' cy='96' r='8' fill='%23e0def4'/></svg>",
      "sizes": "192x192",
      "type": "image/svg+xml",
      "purpose": "any"
    },
    {
      "src": "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='512' height='512'><defs><linearGradient id='grad' x1='0%' y1='0%' x2='100%' y2='100%'><stop offset='0%' style='stop-color:%23eb6f92;stop-opacity:1' /><stop offset='100%' style='stop-color:%23ea9a97;stop-opacity:1' /></linearGradient></defs><rect width='512' height='512' fill='url(%23grad)'/><circle cx='256' cy='256' r='160' fill='none' stroke='%23e0def4' stroke-width='8'/><circle cx='256' cy='256' r='100' fill='none' stroke='%23e0def4' stroke-width='6'/><circle cx='256' cy='256' r='20' fill='%23e0def4'/></svg>",
      "sizes": "512x512",
      "type": "image/svg+xml",
      "purpose": "any"
    },
    {
      "src": "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='192' height='192'><defs><linearGradient id='grad' x1='0%' y1='0%' x2='100%' y2='100%'><stop offset='0%' style='stop-color:%23eb6f92;stop-opacity:1' /><stop offset='100%' style='stop-color:%23ea9a97;stop-opacity:1' /></linearGradient></defs><rect width='192' height='192' fill='url(%23grad)' rx='45'/><circle cx='96' cy='96' r='60' fill='none' stroke='%23e0def4' stroke-width='3'/><circle cx='96' cy='96' r='40' fill='none' stroke='%23e0def4' stroke-width='2'/><circle cx='96' cy='96' r='8' fill='%23e0def4'/></svg>",
      "sizes": "192x192",
      "type": "image/svg+xml",
      "purpose": "maskable"
    },
    {
      "src": "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='512' height='512'><defs><linearGradient id='grad' x1='0%' y1='0%' x2='100%' y2='100%'><stop offset='0%' style='stop-color:%23eb6f92;stop-opacity:1' /><stop offset='100%' style='stop-color:%23ea9a97;stop-opacity:1' /></linearGradient></defs><rect width='512' height='512' fill='url(%23grad)' rx='120'/><circle cx='256' cy='256' r='160' fill='none' stroke='%23e0def4' stroke-width='8'/><circle cx='256' cy='256' r='100' fill='none' stroke='%23e0def4' stroke-width='6'/><circle cx='256' cy='256' r='20' fill='%23e0def4'/></svg>",
      "sizes": "512x512",
      "type": "image/svg+xml",
      "purpose": "maskable"
    }
  ],
  "shortcuts": [
    {
      "name": "Load Image",
      "short_name": "Load",
      "description": "Quick access to load an image for analysis",
      "url": "./index.html?action=load",
      "icons": [
        {
          "src": "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='96' height='96'><rect width='96' height='96' fill='%23ea9a97'/><text x='48' y='48' text-anchor='middle' dy='.3em' fill='%23232136' font-size='60' font-family='system-ui'>📷</text></svg>",
          "sizes": "96x96",
          "type": "image/svg+xml"
        }
      ]
    },
    {
      "name": "Light Screen",
      "short_name": "Light",
      "description": "Quick access to Light Screen Mode",
      "url": "./index.html?action=lightscreen",
      "icons": [
        {
          "src": "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='96' height='96'><rect width='96' height='96' fill='%23f6c177'/><text x='48' y='48' text-anchor='middle' dy='.3em' fill='%23232136' font-size='60' font-family='system-ui'>💡</text></svg>",
          "sizes": "96x96",
          "type": "image/svg+xml"
        }
      ]
    }
  ]
}