# 响应式自适应布局

## 需求描述

当前首页已按设计稿完成桌面端还原，但大部分区域使用固定宽高，在平板和移动端显示异常。需要实现从大到小屏幕的三断点自适应布局。

## 断点定义

| 断点   | 范围            | Tailwind 前缀 |
| ------ | --------------- | ------------- |
| 移动端 | < 768px         | 默认（无前缀） |
| 平板   | 768px - 1023px  | `md:`         |
| 桌面   | >= 1024px       | `lg:`         |

## 设计决策

- **导航**：移动端使用汉堡菜单 + 侧边滑出面板
- **触摸交互**：4步流程、全球POD货盘、客户案例支持触摸滑动
- **组件拆分**：先拆分 `app.vue` 为独立组件，再逐个做响应式
- **字号系统**：桌面大号 → 平板中号 → 移动端小号

## 工作阶段

### 阶段一：组件拆分

将 `app.vue` 拆为以下组件：

| 组件名             | 区块         |
| ------------------ | ------------ |
| `AppHeader`        | 导航栏       |
| `HeroBanner`       | 主视觉       |
| `TrustSection`     | 信任背书     |
| `StepProcess`      | 4步流程      |
| `PodProducts`      | 全球POD货盘  |
| `FeatureCards`     | 功能特性     |
| `WhyInkReach`      | 为什么选我们 |
| `CompanyProfile`   | 公司简介     |
| `CustomerCases`    | 客户案例     |
| `CtaBanner`        | 行动号召     |
| `AppFooter`        | 页脚         |

### 阶段二：响应式适配

逐组件适配三断点布局。

### 阶段三：通用修复

- 修复缺失的 `pulse-animation` CSS 动画
- 统一容器宽度为响应式

## 任务列表

- [x] 1. 创建 develop 分支和 feature 分支
- [x] 2. 拆分 AppHeader 组件
- [x] 3. 拆分 HeroBanner 组件
- [x] 4. 拆分 TrustSection 组件
- [x] 5. 拆分 StepProcess 组件
- [x] 6. 拆分 PodProducts 组件
- [x] 7. 拆分 FeatureCards 组件
- [x] 8. 拆分 WhyInkReach 组件
- [x] 9. 拆分 CompanyProfile 组件
- [x] 10. 拆分 CustomerCases 组件
- [x] 11. 拆分 CtaBanner 组件
- [x] 12. 拆分 AppFooter 组件
- [x] 13. 重构 app.vue 为组件组合
- [x] 14. AppHeader 响应式（汉堡菜单 + 侧边滑出）
- [x] 15. HeroBanner 响应式
- [x] 16. TrustSection 响应式
- [x] 17. StepProcess 响应式（触摸滑动）
- [x] 18. PodProducts 响应式（触摸滑动）
- [x] 19. FeatureCards 响应式
- [x] 20. WhyInkReach 响应式
- [x] 21. CompanyProfile 响应式
- [x] 22. CustomerCases 响应式（触摸滑动）
- [x] 23. CtaBanner 响应式
- [x] 24. AppFooter 响应式
- [x] 25. 修复 pulse-animation + 通用样式
- [x] 26. 全页面三断点验证
- [x] 27. 更新 docs/references/structs.md

## 任务详情

### 1. 创建 develop 分支和 feature 分支

从 `main` 创建 `develop` 分支，再从 `develop` 创建 `feature/responsive-layout` 分支。

### 2. 拆分 AppHeader 组件

从 `app.vue` 提取导航栏部分为 `app/components/AppHeader.vue`，包含 logo、导航链接、登录和 CTA 按钮。

### 3. 拆分 HeroBanner 组件

提取主视觉区块为 `app/components/HeroBanner.vue`，包含标题、副标题、产品图片和 CTA。

### 4. 拆分 TrustSection 组件

提取信任背书区块为 `app/components/TrustSection.vue`，包含 4 个数据统计卡片。

### 5. 拆分 StepProcess 组件

提取 4 步流程为 `app/components/StepProcess.vue`，包含步骤选择器和图片预览。

### 6. 拆分 PodProducts 组件

提取全球 POD 货盘为 `app/components/PodProducts.vue`，包含国家 tab 和 5 列产品网格。

### 7. 拆分 FeatureCards 组件

提取功能特性为 `app/components/FeatureCards.vue`，包含 4 个带 hover 效果的特性卡片。

### 8. 拆分 WhyInkReach 组件

提取为什么选我们为 `app/components/WhyInkReach.vue`，包含 4 个理由卡片。

### 9. 拆分 CompanyProfile 组件

提取公司简介为 `app/components/CompanyProfile.vue`，包含 3 列文字和 4 个能力卡片。

### 10. 拆分 CustomerCases 组件

提取客户案例为 `app/components/CustomerCases.vue`，包含 marquee 滚动的案例卡片。

### 11. 拆分 CtaBanner 组件

提取行动号召为 `app/components/CtaBanner.vue`，包含 CTA 标题和按钮。

### 12. 拆分 AppFooter 组件

提取页脚为 `app/components/AppFooter.vue`，包含 4 列链接和版权信息。

### 13. 重构 app.vue 为组件组合

将 `app.vue` 简化为引入所有拆分组件的组合文件。

### 14. AppHeader 响应式（汉堡菜单 + 侧边滑出）

- 移动端：隐藏导航链接，显示汉堡图标
- 点击汉堡图标：从右侧滑出半透明遮罩 + 导航面板
- 平板：保持桌面导航或简化

### 15. HeroBanner 响应式

- 移动端：字号缩小（text-7xl → text-3xl），产品图竖向堆叠或隐藏
- 平板：中等字号，产品图适当缩小

### 16. TrustSection 响应式

- 移动端：2x2 网格布局，缩小卡片尺寸
- 平板：4 列但间距缩小

### 17. StepProcess 响应式（触摸滑动）

- 移动端：步骤选择器变为横向滚动标签，图片预览支持触摸滑动
- 平板：保持桌面布局但缩小尺寸

### 18. PodProducts 响应式（触摸滑动）

- 移动端：产品网格变为横向滚动列表，支持触摸滑动
- 平板：3 列网格

### 19. FeatureCards 响应式

- 移动端：2 列或堆叠布局
- 平板：保持 4 列但缩小卡片

### 20. WhyInkReach 响应式

- 移动端：2x2 网格
- 平板：4 列（已有 md:grid-cols-4）

### 21. CompanyProfile 响应式

- 移动端：文字单列，能力卡片 2 列
- 平板：完善现有响应式类

### 22. CustomerCases 响应式（触摸滑动）

- 移动端：取消 marquee 自动滚动，改为触摸滑动卡片列表
- 平板：保持 marquee 但缩小卡片

### 23. CtaBanner 响应式

- 移动端：缩小字号和内边距
- 平板：适度缩小

### 24. AppFooter 响应式

- 移动端：单列堆叠布局
- 平板：2x2 网格（已有 md:grid-cols-4）

### 25. 修复 pulse-animation + 通用样式

在 `tailwind.css` 的 `@theme` 中定义缺失的 `pulse-animation`，检查所有固定宽度改为响应式。

### 26. 全页面三断点验证

在浏览器中分别用移动端（375px）、平板（768px）、桌面（1440px）宽度验证每个区块的显示效果。

### 27. 更新 docs/references/structs.md

记录拆分后的项目目录结构和组件功能描述。
