---
stepsCompleted: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
inputDocuments: ['test-samples/sample-a/PRD-AquaFlow-V1.0.md']
workflowType: 'ux-design'
lastStep: 14
status: 'complete'
project_name: 'AquaFlow SaaS 專案管理協作平台'
user_name: '東杰'
date: '2025-12-25'
---

# UX Design Specification: AquaFlow SaaS 專案管理協作平台

**Author:** 東杰
**Date:** 2025年12月25日
**Version:** 1.0

---

## 產品背景摘要

**產品名稱:** AquaFlow
**產品類型:** 雲端 SaaS 專案管理協作平台
**目標受眾:** 中小型企業團隊領導者、專案經理、跨職能團隊成員

### 解決的核心問題
1. 現有工具太複雜或太輕量，團隊需要平衡清晰度、速度和適當結構的產品
2. 任務狀態追蹤困難
3. 新手上手時間過長

### 核心功能模組
- 專案管理（建立和管理多個專案）
- 任務看板（看板拖曳、快速新增）
- 任務詳情（指派、截止日期、優先級、評論）
- 搜尋與篩選
- 通知系統（應用內 + Email）

### 設計風格方向
- 關鍵字：trust、efficiency、clarity、professional
- 風格：Modern Professional SaaS

---

## Executive Summary

### Project Vision

AquaFlow 是專為中小型企業團隊打造的雲端專案管理協作平台。我們的目標是提供比 Jira 更輕量、更直覺的體驗，同時保持專業團隊所需的核心功能。

**核心價值主張：**
- 直覺的拖曳看板，讓任務管理變得簡單
- 清晰的團隊進度可見度，一眼掌握全局
- 快速上手，5分鐘即可開始使用
- 合理的價格，不需要企業級預算

### Target Users

**主要使用者：**
- 團隊領導者與專案經理（有 Jira 經驗）
- 跨職能團隊成員
- 營運與行銷團隊

**使用者特徵：**
- 技術熟練度：中高（有專案管理與 Jira 經驗）
- 主要設備：桌面電腦
- 使用情境：辦公室環境，團隊協作型任務

**核心痛點：**
- Jira 成本過高
- 現有工具過於複雜或功能不足

### Key Design Challenges

1. **避免「另一個 Jira」的印象** — 需要更簡潔但不失專業
2. **傳達價值感** — UI 需要讓用戶感受到「更划算且更好用」
3. **團隊協作可見度** — 清晰呈現「誰在做什麼、進度如何」

### Design Opportunities

1. **快速上手體驗** — 比 Jira 更低的學習門檻
2. **視覺化進度** — 一眼看清團隊全局
3. **極致拖曳體驗** — 讓核心互動成為產品亮點
4. **輕量專業** — 保持專業外觀，去除不必要複雜度

---

## Core User Experience

### Defining Experience

**核心互動：** 新增任務 + 拖曳任務狀態

這兩個動作是 AquaFlow 的靈魂。用戶每天會執行這些操作數十次，必須做到：
- **新增任務**：10 秒內完成，只需輸入標題
- **拖曳任務**：絲滑流暢，即時視覺回饋

**差異化策略（vs Jira）：**

| 面向 | Jira 痛點 | AquaFlow 解法 |
|------|-----------|---------------|
| 新增任務 | 要填很多欄位 | 「標題即任務」— 只需標題，其他選填 |
| 拖曳體驗 | 有時卡頓 | Spring 動畫 + 樂觀更新 |
| 進度可見度 | 要看報表 | 欄位計數器 + 進度環 |
| 設定複雜度 | 設定太多 | 智慧默認，開箱即用 |

### Platform Strategy

| 面向 | 決策 |
|------|------|
| **主要平台** | 響應式 Web App |
| **互動方式** | 滑鼠/鍵盤為主 |
| **離線功能** | V1 暫不支援（辦公室使用為主） |
| **瀏覽器支援** | Chrome, Firefox, Safari, Edge（最新兩版） |

### Effortless Interactions

1. **極速新增** — 浮動按鈕 + `Cmd+K` 快捷鍵
2. **絲滑拖曳** — Spring 動畫 + 樂觀更新
3. **一眼進度** — 欄位計數器 + 進度環
4. **快速搜尋** — `Cmd+K` 全域搜尋

### Critical Success Moments

| 時刻 | 用戶情感 | 設計策略 |
|------|----------|----------|
| **第一次拖曳到「完成」** | 「哇，好順！」 | 微慶祝動畫 |
| **看到團隊進度** | 「終於不用問了」 | 進度環 + 計數器 |
| **10秒內新增任務** | 「比 Jira 簡單」 | 快速新增流程 |
| **找到上週任務** | 「搜尋好用！」 | `Cmd+K` 全域搜尋 |

### Experience Principles

1. **🚀 速度優先** — 任何操作 200ms 內有視覺回應
2. **👁️ 資訊清晰** — 一眼看到：誰負責、何時截止、什麼狀態
3. **🎯 專注當下** — 減少干擾，專注於當前任務
4. **🔄 流暢過渡** — 所有狀態變化都有自然動畫
5. **⌨️ 效率捷徑** — 為專業用戶提供鍵盤快捷鍵

---

## Desired Emotional Response

### Primary Emotional Goals

| 情感 | 觸發時機 | 設計策略 |
|------|----------|----------|
| **掌控感** | 看到團隊進度 | 進度環 + 清晰的狀態欄 |
| **效率感** | 快速完成操作 | 200ms 內有回應 |
| **輕鬆感** | 首次使用 | 智慧默認，不需要設定 |
| **成就感** | 完成任務 | 微慶祝動畫 |

### Emotional Journey Mapping

| 階段 | 情感 | 設計策略 |
|------|------|----------|
| **發現** | 好奇 + 期待 | 清晰的價值主張，5秒內吸引注意 |
| **註冊** | 信任 + 輕鬆 | 最少步驟，支援社群登入 |
| **首次使用** | 自信 + 引導 | 引導式 onboarding，不壓迫 |
| **日常使用** | 高效 + 滿足 | 流暢操作，即時回饋 |
| **完成任務** | 成就感 | 微慶祝動畫，進度視覺化 |
| **出錯時** | 被理解 + 有方向 | 友善錯誤訊息，明確解決方案 |

### Micro-Emotions

**強化的正面情感：**
- ✅ **自信** vs ❌ 困惑 → 清晰的視覺層級
- ✅ **信任** vs ❌ 懷疑 → 一致的互動模式
- ✅ **成就感** vs ❌ 挫折 → 漸進式任務分解
- ✅ **歸屬感** vs ❌ 孤立 → 團隊活動可見性

**避免的負面情感：**
- 😰 焦慮 — 避免資訊過載（vs Jira 太多欄位）
- 😤 挫折 — 避免複雜操作流程
- 😵 困惑 — 避免不一致的 UI 元素
- 😒 厭煩 — 避免過多確認對話框

### Emotional Design Principles

1. **🏆 慶祝進步** — 每個完成的任務都值得微小的慶祝動畫
2. **🤝 溫暖的錯誤處理** — 錯誤訊息像朋友在幫忙，不像機器在責備
3. **✨ 驚喜時刻** — 隱藏的彩蛋讓日常使用不無聊
4. **🧘 減少認知負擔** — 默認值聰明，讓用戶少做決定
5. **👋 個人化觸點** — 使用者名字、偏好設定優先

---

## UX Pattern Analysis & Inspiration

### Inspiring Products Analysis

| 產品 | 優點 | 可借鑒的 UX 模式 |
|------|------|-----------------|
| **Trello** | 極致直覺的拖曳體驗 | 看板 + 卡片設計、封面圖片、標籤系統 |
| **Asana** | 多視圖無縫切換 | 列表/看板/時間軸視圖、右側滑出面板 |
| **Notion** | 鍵盤導向操作 | `Cmd+K` 萬能搜尋、斜線指令 |
| **Linear** | 極簡專業風格 | 清晰資訊層級、快捷鍵系統 |

### Transferable UX Patterns

**導航模式：**
- 側邊欄工作區切換（像 Slack 一樣快速切換）
- 麵包屑導航（工作區 > 專案 > 任務的清晰路徑）
- 全域搜尋 `Cmd+K`（快速找到任何東西）

**互動模式：**
- Trello 風格的流暢拖曳
- 右側滑出詳情面板（不離開上下文）
- @提及自動完成（自然的協作語法）

### Anti-Patterns to Avoid

| 反模式 | 來源 | 為什麼避免 |
|--------|------|-----------|
| 過度功能 | Jira | 中小企業不需要複雜設定 |
| 資訊過載 | Monday.com | 太多欄位造成認知負擔 |
| 強制教學 | 某些企業軟體 | 阻斷新手的探索慾望 |
| 深層導航 | 舊版 Basecamp | 超過 3 層深度造成迷失 |

### Design Inspiration Strategy

**採用 (Adopt)：**
- ✅ Trello 的拖曳體驗 → 核心看板互動
- ✅ Asana 的視圖切換 → 列表/看板無縫切換
- ✅ Notion 的 Cmd+K → 全域快捷搜尋

**改編 (Adapt)：**
- 🔄 Asana 的慶祝動畫 → 更輕量的完成微動畫
- 🔄 Linear 的鍵盤導向 → 簡化為常用快捷鍵

**避免 (Avoid)：**
- ❌ 任何需要培訓的功能 → 自助可發現
- ❌ 深層選單 → 最多 3 層

---

## Design System Foundation

### Design System Choice

**選定方案：** Chakra UI v2 + React

**技術組合：**
- UI 框架：Chakra UI v2
- 圖標庫：Lucide Icons
- 拖曳：@dnd-kit/core
- 動畫：Framer Motion（內建）
- 表單：React Hook Form + Chakra

### Rationale for Selection

| 考量因素 | Chakra UI 優勢 |
|----------|----------------|
| **React 整合** | 原生支援，符合 PRD 技術栈 |
| **可主題化** | 輕鬆建立 AquaFlow 品牌識別 |
| **無障礙** | 內建 WCAG 標準支援 |
| **開發體驗** | 清晰文件、TypeScript 支援 |
| **拖曳支援** | 易於整合 @dnd-kit |

### Implementation Approach

1. **Phase 1: 基礎設定**
   - 安裝 Chakra UI 和依賴套件
   - 配置主題 (theme.ts)
   - 建立設計令牌 (Design Tokens)

2. **Phase 2: 基礎組件**
   - Button, Input, Card 等基礎組件
   - 導航組件 (Sidebar, Navbar)
   - 版面配置組件

3. **Phase 3: 業務組件**
   - TaskCard (任務卡片)
   - KanbanColumn (看板欄)
   - ProjectList (專案列表)

### Customization Strategy

**設計令牌 (Design Tokens)：**
- 品牌色：待 Step 8 定義
- 字型：Inter (Google Fonts)
- 間距：4px 基礎單位
- 圓角：sm=4px, md=8px, lg=16px
- 陰影：使用 Chakra 默認 shadow tokens

---

## Visual Design Foundation

### Color System

**色彩來源：** UI/UX Pro Max 知識庫 (SaaS Modern Professional)

| 角色 | Hex 色碼 | 用途 |
|------|----------|------|
| **Primary** | `#2563EB` | 主按鈕、連結、品牌識別 |
| **Secondary** | `#3B82F6` | hover 狀態、次要強調 |
| **CTA** | `#F97316` | 行動呼籲按鈕 |
| **Background** | `#F8FAFC` | 頁面背景 |
| **Text** | `#1E293B` | 主要文字 |
| **Border** | `#E2E8F0` | 邊框、分隔線 |

**語意色彩：**
- Success: `#22C55E`
- Warning: `#EAB308`
- Error: `#EF4444`
- Info: `#3B82F6`

**設計理念：** Trust blue + accent contrast（信任藍 + 對比強調色）

### Typography System

**字型來源：** UI/UX Pro Max 知識庫 (Minimal Swiss)

**主要字型：** Inter (Google Fonts)
```css
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
```

**字級階層：**

| 元素 | 大小 | 粗細 | 行高 |
|------|------|------|------|
| H1 | 32px | 700 | 1.2 |
| H2 | 24px | 600 | 1.3 |
| H3 | 20px | 600 | 1.4 |
| Body | 16px | 400 | 1.5 |
| Small | 14px | 400 | 1.5 |
| Caption | 12px | 400 | 1.4 |

### Spacing & Layout Foundation

**基礎單位：** 4px

**間距系統 (Chakra UI)：**
```
space.1 = 4px
space.2 = 8px    ← 最小按鈕間距
space.3 = 12px
space.4 = 16px   ← 常用內邊距
space.6 = 24px   ← 區塊間距
space.8 = 32px
space.10 = 40px
space.12 = 48px
```

**版面配置：**
- 最大寬度：1280px
- 側邊欄寬度：240px
- 卡片內邊距：16px
- 欄位間距：16px

### Accessibility Considerations

- ✅ 色彩對比度符合 WCAG AA 標準（4.5:1）
- ✅ 主要按鈕使用至少 44x44px 觸控區域
- ✅ 相鄰按鈕間距至少 8px
- ✅ Inter 字型具備優秀的可讀性
- ✅ 支援鍵盤導航（Tab/Shift+Tab）

---

## Design Direction Decision

### Design Directions Explored

由於設計決策已在前面步驟中明確定義，跳過多變體 mockups 生成。

**已確定的設計元素：**
- 設計系統：Chakra UI v2
- 配色：Trust Blue (#2563EB) + Orange CTA (#F97316)
- 字型：Inter
- 風格：Modern Professional SaaS

### Chosen Direction

**選定方向：Modern Professional SaaS**

| 面向 | 設計決策 |
|------|----------|
| **布局** | 側邊欄導航 + 主內容區看板 |
| **視覺密度** | 中等密度，留白適當 |
| **互動風格** | 輕量動畫、Spring 拖曳 |
| **導航模式** | 左側邊欄 + 頂部麵包屑 |
| **卡片風格** | 白底圓角 + 輕陰影 |

### Design Rationale

1. **側邊欄導航** — 符合 SaaS 產品標準，用戶有 Jira 經驗
2. **中等密度** — 平衡資訊呈現和清晰度（vs Jira 的高密度）
3. **輕量動畫** — 支持「速度優先」原則，不影響效能
4. **白底圓角卡片** — 現代專業感，符合 Trust + Efficiency 關鍵字

### Implementation Approach

1. **Chakra UI Theme** — 配置自訂顏色和字型
2. **Layout Components** — Sidebar + Main + SlidePanel
3. **Card Components** — TaskCard、ProjectCard
4. **Animation Library** — Framer Motion for Spring animations

---

## User Journey Flows

### Journey 1: 新增任務

**目標：** 10 秒內建立新任務

```mermaid
flowchart TD
    A[點擊 + 按鈕 / Cmd+K] --> B[輸入任務標題]
    B --> C{按 Enter?}
    C -->|是| D[任務建立成功 ✓]
    C -->|否| E[展開詳情面板]
    E --> F[填寫其他欄位]
    F --> D
    D --> G[微慶祝動畫]
```

**關鍵設計決策：**
- 只需標題即可建立任務
- 其他欄位皆為選填
- 支援快捷鍵 `Cmd+K`

### Journey 2: 拖曳任務狀態

**目標：** 絲滑流暢的狀態切換

```mermaid
flowchart TD
    A[抓取任務卡片] --> B[拖曳中 - 陰影提升]
    B --> C[放置到目標欄]
    C --> D{樂觀更新}
    D -->|成功| E[Spring 動畫完成]
    D -->|失敗| F[回滾位置 + 錯誤提示]
    E --> G[欄位計數器更新]
```

**關鍵設計決策：**
- 樂觀更新（先顯示成功，再同步後端）
- Spring 動畫增加流暢感
- 失敗時優雅回滾

### Journey 3: 全域搜尋

**目標：** 快速找到任何任務

```mermaid
flowchart TD
    A[按 Cmd+K] --> B[搜尋框浮現]
    B --> C[輸入關鍵字]
    C --> D[即時顯示結果]
    D --> E{選擇結果}
    E -->|Enter/Click| F[跳轉到任務]
    E -->|Esc| G[關閉搜尋]
```

**關鍵設計決策：**
- 全域快捷鍵 `Cmd+K`
- 即時搜尋結果
- 支援鍵盤導航

### Journey Patterns

**通用模式：**
1. **快捷鍵入口** — 所有常用功能支援 keyboard shortcut
2. **即時回饋** — 200ms 內有視覺回應
3. **樂觀更新** — 先顯示成功，後台同步
4. **優雅錯誤處理** — 自動回滾 + 友善訊息

### Flow Optimization Principles

| 原則 | 說明 |
|------|------|
| **10 秒法則** | 核心操作必須在 10 秒內完成 |
| **200ms 回應** | 任何操作有即時視覺回饋 |
| **一鍵可及** | 最常用功能一次點擊/按鍵即可 |
| **漸進揭露** | 進階功能隱藏，需要時才顯示 |

---

## Component Strategy

### Design System Components (Chakra UI v2)

**基礎組件（直接使用）：**
- Button, IconButton, ButtonGroup
- Input, Select, Checkbox, Radio, Switch
- Card, Box, Flex, Grid, Stack
- Modal, Drawer, Popover, Tooltip
- Alert, Toast, Progress, Spinner
- Tabs, Breadcrumb, Menu

### Custom Components

#### 1. TaskCard (任務卡片)

| 項目 | 規格 |
|------|------|
| **用途** | 看板上的可拖曳任務卡片 |
| **內容** | 標題、標籤、負責人頭像、截止日期、優先級 |
| **狀態** | default, hover, dragging, selected, loading |

**KB 指南參考：**
- #28 Focus States → `focus:ring-2 focus:ring-blue-500`
- #29 Hover States → `hover:bg-gray-50 cursor-pointer`
- #30 Active States → `active:scale-[0.99]`
- #84 Truncation → 標題超長用 `line-clamp-2`
- #40 ARIA Labels → 拖曳需 `aria-grabbed` 屬性

#### 2. KanbanColumn (看板欄)

| 項目 | 規格 |
|------|------|
| **用途** | 任務狀態欄（待辦/進行中/完成） |
| **內容** | 欄標題、任務計數器、進度環、新增按鈕 |
| **狀態** | default, drop-target-active, empty |

**KB 指南參考：**
- #80 Empty States → 空欄顯示「尚無任務，拖曳或點擊新增」
- #10 Loading States → 載入中顯示 Skeleton

#### 3. CommandPalette (快捷指令面板)

| 項目 | 規格 |
|------|------|
| **用途** | Cmd+K 全域搜尋/快捷指令 |
| **內容** | 搜尋框、分類結果、最近項目 |
| **狀態** | open, searching, results, empty |

**KB 指南參考：**
- #41 Keyboard Navigation → 完整鍵盤支援（↑↓ Enter Esc）
- #28 Focus States → 清晰的選項焦點指示
- #89 Search Autocomplete → 即時顯示搜尋建議

#### 4. ProgressRing (進度環)

| 項目 | 規格 |
|------|------|
| **用途** | 視覺化任務完成進度 |
| **內容** | 百分比數字、動畫環 |
| **尺寸** | sm(24px), md(32px), lg(48px) |

**KB 指南參考：**
- #8 Duration Timing → 動畫 200ms
- #9 Reduced Motion → 尊重 `prefers-reduced-motion`

### Component Implementation Strategy

**通用狀態規範（基於 KB 指南）：**

```css
/* 所有互動組件必須實作 */
.interactive {
  /* #28 Focus States */
  focus:ring-2 focus:ring-blue-500 focus:ring-offset-2
  
  /* #29 Hover States */
  hover:bg-gray-50 transition-colors
  
  /* #30 Active States */
  active:scale-[0.98]
  
  /* #22 Touch Target */
  min-h-[44px] min-w-[44px]
}

/* #8 Animation Timing */
transition: all 200ms ease-out;

/* #9 Reduced Motion */
@media (prefers-reduced-motion: reduce) {
  transition: none;
}
```

### Implementation Roadmap

| 階段 | 組件 | 優先級 | 依賴 |
|------|------|--------|------|
| **Phase 1** | TaskCard | 🔴 P0 | @dnd-kit |
| **Phase 1** | KanbanColumn | 🔴 P0 | TaskCard |
| **Phase 2** | CommandPalette | 🟡 P1 | - |
| **Phase 2** | ProgressRing | 🟡 P1 | - |
| **Phase 3** | ActivityFeed | 🟢 P2 | - |
| **Phase 3** | UserAvatar | 🟢 P2 | - |

---

## UX Consistency Patterns

**KB 指南參考：** #61 Submit Feedback, #4 Back Button, #43 Form Labels

### Button Hierarchy

| 層級 | 用途 | 樣式 | 範例 |
|------|------|------|------|
| **Primary** | 主要行動 | 填充藍色 `#2563EB` + 白字 | 儲存、建立、提交 |
| **Secondary** | 次要行動 | 邊框藍色 + 藍字 | 取消、返回 |
| **Ghost** | 低調行動 | 透明背景 + 灰字 | 更多選項、展開 |
| **Danger** | 破壞性行動 | 紅色 `#EF4444` | 刪除（需確認對話框） |

**按鈕狀態：**
- Default → Hover (`brightness(1.1)`) → Active (`scale(0.98)`) → Disabled (`opacity-50`)

### Feedback Patterns

| 類型 | 觸發 | 呈現 | 持續時間 |
|------|------|------|----------|
| **Success** | 操作完成 | Toast 右上角 ✓ | 3 秒自動消失 |
| **Error** | 操作失敗 | 紅色 Alert + 說明 | 用戶關閉 |
| **Warning** | 需要注意 | 黃色 Alert | 用戶確認 |
| **Info** | 提示資訊 | 藍色 Toast | 5 秒自動消失 |
| **Loading** | 等待中 | Spinner 或 Skeleton | 完成後消失 |

**回饋規則：**
- 小於 300ms 的操作：無需顯示 loading
- 300ms-1s：顯示 spinner
- 大於 1s：顯示 skeleton 或進度條

### Form Patterns

**輸入欄位規範：**
- ✅ 每個 input 都有 `<label>` 關聯
- ✅ 必填欄位標示 `*`
- ✅ 即時驗證（onBlur）
- ✅ 錯誤訊息在欄位下方（紅色）
- ✅ 送出按鈕顯示 loading 狀態
- ✅ 成功後顯示確認訊息 + 自動跳轉

**表單佈局：**
```
[Label]          * (required)
[Input Field    ]
[Error message in red]
```

### Navigation Patterns

**一致性規則：**
- ✅ 側邊欄高亮當前頁面
- ✅ 麵包屑顯示完整路徑
- ✅ 支援瀏覽器返回鍵（`history.pushState`）
- ✅ URL 反映當前狀態（可分享）
- ✅ Cmd+K 開啟搜尋面板

### Modal & Overlay Patterns

| 類型 | 用途 | 關閉方式 |
|------|------|----------|
| **Modal** | 需要用戶決策 | 按鈕、Esc、點擊外部 |
| **Drawer** | 側邊詳情面板 | 按鈕、Esc、點擊外部 |
| **Popover** | 短暫資訊 | 點擊外部、Esc |
| **Toast** | 通知訊息 | 自動消失、點擊關閉 |

---

<!-- UX design content will be appended sequentially through collaborative workflow steps -->

## Responsive Design & Accessibility

### Responsive Strategy

**平台優先級：**

| 優先級 | 平台 | 螢幕尺寸 | 說明 |
|--------|------|----------|------|
| 🔴 P0 | **Desktop** | 1024px+ | 主要使用環境 |
| 🟡 P1 | Tablet | 768-1023px | 次要環境 |
| 🟢 P2 | Mobile | 320-767px | 輕量查看 |

**設計策略：** Desktop-first（根據 PRD 主要為桌面辦公室環境）

### Breakpoint Strategy

| 名稱 | 尺寸 | 佈局變化 |
|------|------|----------|
| `mobile` | 320px+ | 單欄佈局、底部導航、隱藏側邊欄 |
| `tablet` | 768px+ | 可收合側邊欄、簡化看板 |
| `desktop` | 1024px+ | 側邊欄常駐、多欄看板、詳情面板 |
| `wide` | 1440px+ | 更寬內容區域、三欄佈局 |

**Chakra UI 對應：**
```javascript
const breakpoints = {
  sm: '320px',   // mobile
  md: '768px',   // tablet
  lg: '1024px',  // desktop
  xl: '1440px',  // wide
}
```

### Accessibility Strategy

**合規等級：** WCAG 2.1 Level AA ✅

| 類別 | 要求 | 實施方式 |
|------|------|----------|
| **色彩對比** | 4.5:1（正常文字）、3:1（大文字） | 已驗證配色符合標準 |
| **觸控區域** | 最小 44x44px | 所有按鈕和互動元素 |
| **鍵盤導航** | 完整 Tab 支援 | Chakra UI 內建 |
| **焦點指示** | 可見焦點環 | `focus:ring-2 focus:ring-blue-500` |
| **Screen Reader** | ARIA 標籤 | 所有圖標按鈕 |
| **動態效果** | 尊重偏好 | `prefers-reduced-motion` |
| **Skip Links** | 跳過導航 | 首個焦點元素 |

### Testing Strategy

**自動化測試：**
- axe-core — 掃描 a11y 問題
- Lighthouse — 效能和無障礙評分
- ESLint jsx-a11y — 程式碼檢查

**手動測試：**
- ✅ 純鍵盤操作測試
- ✅ VoiceOver (macOS) / NVDA (Windows) 螢幕閱讀器
- ✅ 高對比模式
- ✅ 200% 縮放

**裝置測試：**
- Chrome DevTools 裝置模擬
- 實機：iPhone、Android 手機

### Implementation Guidelines

**響應式開發：**
```jsx
// Chakra UI 響應式語法
<Box
  w={{ base: '100%', md: '50%', lg: '33%' }}
  display={{ base: 'none', lg: 'block' }}
/>
```

**無障礙開發：**
```jsx
// 圖標按鈕必須有 aria-label
<IconButton
  aria-label="關閉選單"
  icon={<CloseIcon />}
/>

// 尊重動態偏好
const prefersReducedMotion = usePrefersReducedMotion()
```

---

<!-- End of UX Design Specification -->











