# Story 1-5 Homepage - UX Pixel-Perfect Specifications

> **UX Expert Review Document**
> 參考來源: `research/www.enchun.tw/index.html` (Webflow Export)
> 設計系統: `apps/frontend/src/styles/theme.css`
> 目標視覺保真度: 100%

---

## 🎨 Design Token 驗證

### 色彩系統 (與 Webflow 原始設計一致)

| 用途 | 變數名稱 | Hex Color | CSS Variable | 驗證狀態 |
|------|----------|-----------|--------------|----------|
| 主品牌色 | Enchun Blue | `#23608c` | `--color-enchunblue` | ✅ 已定義 |
| 深品牌色 | Enchun Blue Dark | `#3083bf` | `--color-enchunblue-dark` | ✅ 已定義 |
| 淺藍色 | Tropical Blue | `#c7e4fa` | `--color-tropical-blue` | ✅ 已定義 |
| 頁腳文字 | St. Tropaz | `#5d7285` | `--color-st-tropaz` | ✅ 已定義 |
| CTA 強調 | Amber | `#f6c456` | `--color-amber` | ✅ 已定義 |
| 深色文字 | Tarawera | `#2d3748` | `--color-tarawera` | ✅ 已定義 |
| 通知紅 | Notification Red | `#d84038` | --color-notification-red | ⚠️ 需新增 |
| 深藍色 | Dark Blue | `#062841` | --color-dark-blue | ⚠️ 需新增 |
| 中藍色 | Medium Blue | `#67aee1` | --color-medium-blue | ⚠️ 需新增 |
| 超淺灰 | Grey 6 | `#f2f2f2` | `--color-gray-100` | ✅ 已定義 |
| 淺灰 | Grey 5 | `#e0e0e0` | --color-grey5 | ⚠️ 需新增 |
| 中灰 | Grey 3 | `#828282` | `--color-gray-700` | ✅ 已定義 |
| 深灰 | Grey 2 | `#4f4f4f` | `--color-gray-950` | ✅ 已定義 |

### 新增設計 Token 需求

請在 `theme.css` 中新增以下變數：

```css
/* Webflow 額外色彩 */
--color-notification-red: #d84038;
--color-dark-blue: #062841;
--color-medium-blue: #67aee1;
--color-grey5: #e0e0e0;
```

---

## 📐 Section 詳細規格

### 1. Hero Section

#### 組件檔案: `VideoHero.astro` (已存在，需調整)

#### 容器規格
```css
.centered-container-home {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    max-height: 88.5vh;  /* Webflow 原始值 */
    padding-top: 110px;   /* Desktop */
    padding-bottom: 100px;
}
```

#### 背景影片
```css
.background-video {
    position: absolute;
    z-index: -1;
    object-fit: cover;
    width: 100%;
    height: 100%;
}
```
- **Autoplay**: `true`
- **Loop**: `true`
- **Muted**: `true`
- **Playsinline**: `true`

#### 漸層遮罩
```css
.hero-overlay-home {
    background: linear-gradient(
        to right,
        rgba(0, 0, 0, 0.8) 0%,
        rgba(0, 0, 0, 0) 100%
    );
}
```

#### Logo
```css
.hero_logo {
    width: 135px;       /* Desktop */
    padding-top: 33px;
}
```

#### 標題文字
```css
.hero_title_head {
    font-size: 3.39em;           /* Desktop, ~64px base 19px */
    line-height: 1.2;
    text-align: left;
    color: #ffffff;
    font-family: "Noto Sans TC", sans-serif;
}

.hero_sub_paragraph-home {
    font-size: 1.56em;           /* Desktop, ~30px */
    font-weight: 300;
    line-height: 1.2;
    text-align: left;
    color: #f2f2f2;              /* var(--grey6) */
    font-family: "Quicksand", sans-serif;
}
```

#### 響應式調整

| Breakpoint | 標題字體大小 | 副標題字體大小 | Padding |
|------------|--------------|----------------|---------|
| Desktop (≥992px) | 3.39em (64px) | 1.56em (30px) | 110px/100px |
| Tablet (≤991px) | 2.45em (47px) | 1.15em (22px) | 0/0 |
| Mobile (≤767px) | 7vw | 3.4vw | 0/0 |

#### ❌ 當前實現問題
1. 當前字體大小使用 `text-6xl`，與 Webflow 的 `3.39em` 不符
2. 漸層遮罩方向需要確認
3. Logo 尺寸需要調整為 135px

---

### 2. 煩惱點區塊 (Painpoint Section)

#### 新組件: `PainpointSection.astro`

#### 容器規格
```css
.section_painpoint {
    height: 80vh;
    max-height: 80vh;
}
```

#### 標題區塊
```css
.section_header_w_line {
    text-align: center;
}

.header_subtitle_head {
    font-size: 1.8rem;           /* ~34px */
    text-align: center;
    color: var(--color-dark-blue);  /* #062841 */
}

.divider_line {
    background-color: var(--color-enchunblue);
    height: 1px;
    width: 60px;
    margin: 16px auto;
}
```

#### Tabs 系統
```css
.painpoint_tabs {
    padding-top: 32px;
    padding-bottom: 70px;
    display: grid;
    grid-template-columns: 1fr 1fr;    /* Desktop: 2 columns */
    gap: 32px;
}

.painpoint_text {
    font-size: 2.08em;                /* ~40px */
    font-weight: 500;
    line-height: 1;
    color: var(--color-dark-blue);
    font-family: "Noto Sans TC", sans-serif;
    cursor: pointer;
    transition: text-shadow 0.3s ease;
}

.painpoint_text:hover {
    text-shadow: 7px 4px 13px rgba(0, 0, 0, 0.5);
}

.tab_panel_frame {
    border: 1px solid var(--color-enchunblue);
    border-radius: 10px;
    position: relative;
    top: -47px;
    padding: 32px;
}

.painpoint_icon {
    height: 110px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.icon_holder {
    width: 130px;
    height: 115px;
    background-color: var(--color-gray-100);  /* #f2f2f2 */
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}
```

#### 響應式調整

| Breakpoint | Grid | 字體調整 |
|------------|------|----------|
| Desktop (≥992px) | 2 columns | 100% |
| Tablet (≤991px) | 1 column | 85% |
| Mobile (≤767px) | 1 column | 70% |

---

### 3. 數據統計區塊 (Statistics Section)

#### 新組件: `StatisticsSection.astro`

#### 容器規格
```css
.section_digi_running {
    padding: var(--spacing-3xl) 0;  /* 64px vertical */
}

.digi_holder_grid {
    display: grid;
    grid-column-gap: 85px;
    grid-row-gap: 16px;
    grid-template-columns: repeat(4, max-content);
    justify-content: center;
    max-width: 1150px;
    margin: 0 auto;
}
```

#### 數字顯示
```css
.text_no {
    font-size: 72px;
    font-weight: 700;
    line-height: 1.2;
    color: var(--color-amber);  /* #f6c456 */
    /* Animation: countup, duration 3s */
}

.text_percentage {
    font-size: 36px;
    font-weight: 700;
    line-height: 1.2;
    color: var(--color-gray-700);  /* #828282 */
}

.text_description {
    font-size: 30px;
    font-weight: 100;
    line-height: 1.2;
    color: var(--color-dark-blue);  /* #062841 */
}
```

#### 動畫規格
- **Countup 動畫**: 持續時間 3 秒
- **Easing**: `ease-out`

#### 響應式調整

| Breakpoint | Grid Columns | Gap |
|------------|--------------|-----|
| Desktop (≥992px) | 4 columns | 85px |
| Tablet (≤991px) | 2 columns | 40px |
| Mobile (≤767px) | 1 column | 24px |

---

### 4. 客戶案例區塊 (Client Cases)

#### 新組件: `ClientCasesSection.astro`

#### 容器規格
```css
.section_client-case {
    padding: var(--spacing-3xl) 0;
}

.client_case_sub {
    font-size: 24px;
    font-weight: 300;
    line-height: 1.1;
    color: var(--color-enchunblue);  /* #23608c */
    margin-top: 55px;
    text-align: center;
}
```

#### 輪播設定
```css
.case_slider_wrapper {
    height: 77vh;
    /* Autoplay: 2500ms */
    /* Animation: slide */
    /* Infinite: true */
}

.case_content_grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-column-gap: 55px;
    grid-row-gap: 55px;
}
```

#### 案例卡片
```css
.case_slide_image {
    object-fit: cover;
    width: 100%;
    aspect-ratio: 16/9;
}

.case_heading {
    font-size: 1.7em;
    color: var(--color-dark-blue);
    font-family: "Noto Sans TC", sans-serif;
    margin-bottom: 8px;
}

.case_job_title {
    font-size: 18px;
    color: var(--color-enchunblue-dark);  /* #3083bf */
    font-weight: 100;
    margin-bottom: 16px;
}

.case_review {
    font-size: 18px;
    color: var(--color-gray-700);
    font-weight: 100;
    line-height: 1.6;
}
```

#### 響應式調整

| Breakpoint | Grid | Height |
|------------|------|--------|
| Desktop (≥992px) | 2 columns | 77vh |
| Tablet (≤991px) | 1 column | auto |
| Mobile (≤767px) | 1 column | 59vh |

---

### 5. 行動呼籲區塊 (CTA Section)

#### 新組件: `CTASection.astro`

#### 容器規格
```css
.section_call4action {
    padding: 105px 0 126px 0;
}

.c4a_grid {
    display: grid;
    grid-column-gap: 60px;
    grid-template-columns: max-content max-content;
    place-items: center;
    justify-content: center;
}
```

#### 標題
```css
.c4a_heading {
    color: var(--color-dark-blue);
    font-size: 1.88em;
    font-weight: 500;
    line-height: 1.1;
}
```

#### 按鈕
```css
.c4a_button {
    background-color: var(--color-notification-red);  /* #d84038 */
    border-radius: 15px;
    padding: 18px 24px;
    text-decoration: none;
    display: inline-block;
    transition: all var(--transition-base);
}

.c4a_button:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}

.c4a_button-text {
    color: #f2f2f2;
    font-size: 1.56em;
    line-height: 1.1;
    text-align: center;
    font-weight: 500;
}
```

#### 響應式調整

| Breakpoint | Grid | Button Width |
|------------|------|--------------|
| Desktop (≥992px) | 2 columns | auto |
| Tablet (≤991px) | 1 column | auto |
| Mobile (≤767px) | 1 column | 160px (min-width) |

---

## 📱 響應式斷點總結

### 主要斷點
```css
/* Webflow 原始斷點 */
@media (min-width: 1440px) { /* Desktop Large */ }
@media (max-width: 991px)  { /* Tablet */ }
@media (max-width: 767px)  { /* Mobile Landscape */ }
@media (max-width: 479px)  { /* Mobile Portrait */ }
```

### HTML 字體大小調整
```css
/* Desktop default */
html { font-size: 19px; }

/* Tablet */
@media (max-width: 991px) {
    html { font-size: 19px; }
}

/* Mobile Landscape */
@media (max-width: 767px) {
    html { font-size: 16px; }
}

/* Mobile Portrait */
@media (max-width: 479px) {
    html { font-size: 13px; }
}
```

---

## 🎯 互動效果規格

### Hover 效果
```css
/* Tab 文字 Hover */
.painpoint_text:hover {
    text-shadow: 7px 4px 13px rgba(0, 0, 0, 0.5);
}

/* 導航連結 Hover */
.nav-link:hover {
    background-color: var(--color-dark-blue);
}

/* 連結 Hover */
a:hover {
    opacity: 0.6;
}
a:active {
    opacity: 1;
}

/* 按鈕 Hover */
.c4a_button:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}
```

### 過渡動畫
```css
/* Tabs */
--transition-tabs: ease-in-out-cubic;

/* 輪播 */
--transition-slider: ease-in-out-quint;

/* 數字 Countup */
--animation-countup: 3s ease-out;
```

---

## 🏗️ 組件實現清單

### ✅ 已實現
- [x] `VideoHero.astro` - 需調整字體大小和間距
- [x] `Header.astro` - 已完成
- [x] `Footer.astro` - 已完成

### ⏳ 需新增/修改
- [ ] `VideoHero.astro` - 調整字體大小、漸層遮罩
- [ ] `PainpointSection.astro` - 新增組件
- [ ] `StatisticsSection.astro` - 新增組件，含 countup 動畫
- [ ] `ClientCasesSection.astro` - 新增組件，含輪播功能
- [ ] `CTASection.astro` - 新增組件

---

## 📋 驗收標準 (Acceptance Criteria)

### 視覺保真度檢查
- [ ] 所有顏色與 Webflow 原始設計 100% 一致
- [ ] 所有字體大小（含響應式）與規格一致
- [ ] 所有間距（padding, margin, gap）與規格一致
- [ ] 所有圓角（border-radius）與規格一致
- [ ] 所有陰影（box-shadow）與規格一致

### 響應式檢查
- [ ] Desktop (≥1440px) 佈局正確
- [ ] Tablet (≤991px) 佈局正確
- [ ] Mobile (≤767px) 佈局正確
- [ ] Mobile Portrait (≤479px) 佈局正確

### 互動效果檢查
- [ ] Hover 效果流暢
- [ ] 動畫過渡自然
- [ ] 輪播功能正常
- [ ] Countup 動畫正常

### 效能檢查
- [ ] Lighthouse Performance ≥ 90
- [ ] 影片載入優化（WebM + MP4 fallback）
- [ ] 圖片 lazy loading
- [ ] CSS/JS minification

---

## 🔄 實現順序建議

1. **階段 1: 設計系統更新**
   - 新增缺失的 CSS 變數到 `theme.css`
   - 更新響應式字體大小斷點

2. **階段 2: Hero Section 調整**
   - 修改 `VideoHero.astro` 字體大小
   - 調整漸層遮罩方向
   - 調整 Logo 尺寸

3. **階段 3: 新增 Sections**
   - `PainpointSection.astro`
   - `StatisticsSection.astro`
   - `ClientCasesSection.astro`
   - `CTASection.astro`

4. **階段 4: 響應式測試**
   - 測試所有斷點
   - 調整移動端佈局

5. **階段 5: 動畫與互動**
   - Countup 動畫
   - 輪播功能
   - Hover 效果

6. **階段 6: 效能優化**
   - 影片壓縮
   - 圖片優化
   - Code splitting

---

*此文件由 UX Expert 創建，最後更新：2026-02-10*
*參考來源：Webflow Export HTML (7.4MB)*
