{
  "$comment": "모바일(안드로이드) 설치용 — 홈 화면 아이콘은 흰 배경 불투명 PNG를 쓴다. PC용은 manifest-desktop.json. 어느 쪽을 연결할지는 src/composables/usePwaInstall.ts의 applyDeviceManifest()가 deviceUtils 판별(UA OR 뷰포트 ≤900px)로 정한다. id가 같아야 두 manifest가 같은 앱으로 취급된다. start_url은 반드시 SPA 폴백 없이도 200이 나오는 경로여야 한다 — 안드로이드 Chrome은 설치 시 Google WebAPK 서버가 manifest·start_url·아이콘을 익명으로 내려받아 APK를 서명 생성하는데, 하나라도 실패하면 서명 없는 구형 APK로 폴백해 Play 프로텍트가 \"이전 버전에 맞게 개발된 앱\"이라며 차단한다(2026-09-02 실제 발생). 그래서 /dashboard가 아니라 / 를 쓴다. 아이콘은 용도별로 파일이 다르다 — any(icon-192·icon-512)는 그림이 캔버스의 70%(기획 문서 규칙), maskable(icon-512-maskable)은 54%다. 안드로이드 어댑티브 아이콘은 가운데 약 66.7%만 보이고 바깥을 잘라내므로, 70%짜리를 maskable로 쓰면 크롬 설치 아이콘에서 흰 여백 없이 꽉 차 보인다(2026-09-02 실기기 확인).",
  "id": "/",
  "name": "3초 ERP",
  "short_name": "3초 ERP",
  "description": "약국 경영 플랫폼 3초 ERP! 주문·반품·검수·결산까지 3초면 끝, 약국경영이 쉬워집니다.",
  "lang": "ko",
  "dir": "ltr",
  "start_url": "/",
  "scope": "/",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#2680eb",
  "prefer_related_applications": false,
  "related_applications": [
    {
      "platform": "webapp",
      "url": "/manifest.json"
    }
  ],
  "icons": [
    {
      "src": "/icon-192.png",
      "sizes": "192x192",
      "type": "image/png",
      "purpose": "any"
    },
    {
      "src": "/icon-512.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "any"
    },
    {
      "src": "/icon-512-maskable.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "maskable"
    }
  ]
}
