# 随心瞰商家版 — Design System (MASTER)

> Global Source of Truth。页面级 override 见 `pages/[page].md`。

## 设计定位

| 维度 | 决策 |
|------|------|
| 产品 | B2B 户外作业工具（景区商户 / 摄影师 / 飞手） |
| 风格 | Flat Design + Executive Dashboard 卡片布局 |
| 字体 | SF Pro（System），不引入 Web 字体 |
| 主色 | `#0073FF`；Banner `#1677FF` |
| 触控 | 最小点击区域 44×44pt |
| 对比度 | 正文 ≥ 4.5:1 |

**不采用：** 渐变/Aurora 背景、Newsletter 布局、替换品牌主色。

## 色彩 Token（`AppColor`）

| Token | Hex | 用途 |
|-------|-----|------|
| `primary` | `#0073FF` | Tab 选中、主按钮、链接 |
| `primaryBanner` | `#1677FF` | 排队 Banner |
| `primaryLight` | `#EFF6FF` | 次要按钮底、info badge |
| `pageBackground` | `#F5F5F5` | 默认 Tab 页背景 |
| `pageBackgroundSoft` | `#F7FAFF` | 数据 / 个人中心 |
| `cardBackground` | `#FFFFFF` | 卡片、表单 |
| `inputBackground` | `#F4F4F4` | 输入框、离线 chip |
| `border` | `#EEEEEE` | 分割线 |
| `cardOutline` | `#E9ECEF` | 列表卡片描边 |
| `textPrimary` | `#333333` | 主文案 |
| `textSecondary` | `#666666` | 副文案 |
| `textTertiary` | `#999999` | 弱提示 |
| `textTabInactive` | `#7D8DA3` | Tab 未选中 |
| `success` / `successBackground` | `#10B981` / `#F0FDF4` | 成功、待叫号 |
| `warning` / `warningBackground` | `#FF7B00` / `#FFF0E2` | 待处理 |
| `danger` / `dangerBackground` | `#EF4444` / `#FFE7E7` | 错误、过号 |
| `info` / `infoBackground` | `#0073FF` / `#E8F4FF` | 进行中 |
| `online` | `#22C55E` | 在线 pill |
| `overlayScrim` | `#00000033` | Loading 遮罩 |

**规则：** 业务 View 禁止 `UIColor(hex:)`，一律引用 `AppColor`。

## 字体 Token（`AppFont`）

| Token | Size | Weight | 场景 |
|-------|------|--------|------|
| `caption` | 12 | regular | Tab、协议 |
| `captionMedium` | 12 | medium | Tab 选中 |
| `body` | 14 | regular | 按钮、列表 |
| `bodyMedium` | 14 | medium | Badge、chip |
| `subtitle` | 16 | medium | 卡片标题 |
| `title` | 16 | bold | Section 标题 |
| `metric` | 18 | bold | 统计数值 |
| `display` | 28 | semibold | 登录欢迎 |

## 间距 Token（`AppSpacing`）

| Token | pt |
|-------|-----|
| `xxs` | 4 |
| `xs` | 8 |
| `sm` | 12 |
| `md` | 16 |
| `lg` | 24 |
| `xl` | 32 |
| `xxl` | 48 |

常量：`screenHorizontalInset = 16`，`minTouchTarget = 44`，`homeHeaderHeight = 52`。

## 圆角 Token（`AppRadius`）

| Token | pt | 场景 |
|-------|-----|------|
| `xs` | 4 | Badge |
| `sm` | 8 | 小按钮 |
| `md` | 10 | 默认卡片、AppButton |
| `lg` | 12 | 输入框、统计卡 |
| `xl` | 16 | 登录表单、Dialog |
| `sheetTop` | 14 | 内容区顶圆角 |

## 阴影（`AppShadow`）

仅登录表单卡等浮层使用；普通卡片 **flat + 可选 1px `cardOutline` 描边**。

## 共享组件

| 组件 | 路径 | 说明 |
|------|------|------|
| `AppCardView` | `UI/Common/AppCardView.swift` | 白底卡片容器 |
| `AppStatusBadge` | `UI/Common/AppStatusBadge.swift` | 统一状态标签 |
| `AppButton` | `UI/Common/AppButton.swift` | 主/次按钮 |
| `AppNavigationBarAppearance` | `Theme/AppNavigationBarAppearance.swift` | 全局 NavBar |

## 页面模板（Tab 内页）

```
NavigationBar（白底，16pt title）— Home 例外：自定义 Header
pageBackground
  AppCardView × N（inset 16，stack gap 12）
TabBar（白底，primary tint）
```

## 反馈模式

| 场景 | 方式 |
|------|------|
| 提交 / 首次加载 | GlobalLoading |
| 列表刷新 | UIRefreshControl |
| 分页 | Footer UIActivityIndicatorView |
| 操作结果 | Toast |
|  destructive | Alert |

## Pre-Delivery Checklist

- [ ] 无 inline hex，使用 AppColor
- [ ] 触控区域 ≥ 44pt
- [ ] 正文对比度 ≥ 4.5:1
- [ ] 异步操作 >300ms 有 loading 反馈
- [ ] 状态不仅靠颜色（含文字标签）
- [ ] 圆角 / 间距来自 AppRadius / AppSpacing

## 路线图（后续）

1. Profile / Login / Auth 迁移
2. 排队管理（`Theme/Modules/ScenicQueueTokens.swift`）
3. 全工程 hex 清零
4. Orders EmptyState、FilterBar 组件化
