# v2.2 — Server Offline Overlay 設計規格
> 本章對應 R5-2(關閉 Wails 視窗 = 結束 server,瀏覽器端顯示離線 Overlay)。
> 上層索引:`../design-spec-v2.md`
---
## 1. 背景與目的
R5-2 決定**關閉 Wails 控制台 = 結束 server**,但瀏覽器端不知道這件事發生。如果使用者一手把控制台關掉、另一手還停留在瀏覽器 tab:
- 下一次發 fetch → 連線被拒(`ECONNREFUSED`)
- 正在 stream 的 MJPEG / WebSocket → 突然斷線
- 使用者體感:「我只是關掉那個 log 視窗,為什麼網頁壞了?」
**Server Offline Overlay** 是當瀏覽器端偵測到 server 不可達時,**全螢幕蓋住整個 Web UI**的硬阻斷畫面,明確告訴使用者「server 真的沒了」,並提供重試 / 重開 app 的自助路徑。
---
## 2. 視覺 Wireframe
```
╔═══════════════════════════════════════════════════════════════════╗
║ ║
║ ║
║ ║
║ ┌─────────┐ ║
║ │ ⚠ │ ║
║ │ │ ║
║ └─────────┘ ║
║ ║
║ Local Server 已離線 ║
║ ║
║ visionA-local 已結束或崩潰,請重新開啟應用程式 ║
║ ║
║ ║
║ ┌────────────────────────┐ ║
║ │ 重試連線 │ ║
║ └────────────────────────┘ ║
║ ║
║ 了解更多 ↓ ║
║ ║
║ ║
║ ┌──────────────────────────────────────────────────┐ ║
║ │ 如何重新啟動 visionA-local: │ ║
║ │ │ ║
║ │ 1. 前往應用程式資料夾或 Dock │ ║
║ │ 2. 雙擊 visionA-local 圖示 │ ║
║ │ 3. 控制台會自動啟動伺服器並重新開啟瀏覽器 │ ║
║ │ │ ║
║ │ 如果問題持續發生,請檢查 Log 或回報問題 │ ║
║ └──────────────────────────────────────────────────┘ ║
║ ║
║ ║
╚═══════════════════════════════════════════════════════════════════╝
↑ 半透明黑色背景覆蓋整個 viewport,底下原 Web UI 仍隱約可見但不可互動
```
### 2.1 尺寸與位置
| 元素 | 規格 |
|------|------|
| Overlay 背景 | `position: fixed; inset: 0; z-index: 9999` |
| 背景色(Light) | `rgba(0, 0, 0, 0.55)` + `backdrop-filter: blur(8px)` |
| 背景色(Dark) | `rgba(0, 0, 0, 0.72)` + `backdrop-filter: blur(8px)` |
| 內容卡片寬度 | `clamp(320px, 42vw, 480px)` |
| 內容卡片背景 | `color.surface`(Light:近白;Dark:近黑) |
| 內容卡片圓角 | `radius.xl`(16 px) |
| 內容卡片 padding | 40 px |
| 內容卡片 shadow | `shadow.xl`(v1 token) |
### 2.2 元件規格
| 元素 | 類型 | 規格 | 文字 |
|------|------|------|------|
| Icon 容器 | `
` | 80×80,圓形 `color.destructive/10` 背景 | — |
| Icon | `