你是一名资深前端原型工程师。你的任务是：为“原型工程（/specs/prototypes/）”补齐移动端购物车页面与交互，确保可演示“加购 → 调整 → 结算 → 去支付”的主链路。

路由（必须）：
1. 移动端路由前缀必须为 `/m/*`。
2. 本页面路由为 `/m/cart`（必须稳定可访问）。

页面结构（必须）：
1. 顶部栏：返回 + 标题“购物车”。
2. 购物车列表（支持多商家可选做）：
   - 列表项至少包含：商品图、标题、规格/属性、单价、数量 Stepper、库存/失效提示、勾选框、删除入口
   - 支持“全选/反选”
   - 支持“编辑模式”（按钮放在顶部栏右侧）：
     - 编辑模式下：展示批量删除/移入收藏（mock）等操作；结算栏切换为“删除/移入收藏”操作
   - 支持“滑动操作”（可选但建议）：左滑出现删除/收藏快捷按钮
3. 促销与优惠（必须可演示，需覆盖多样性）：
   - 必须支持优惠券选择（Coupon Picker），并在 mock 中包含至少 4 类优惠：
     - 满减
     - 固定比例折扣
     - 指定商品/服务折扣
     - 免运费
   - 每张优惠券必须具备有效期（start/end 或 expiredAt），过期不可用且要提示原因
   - 低值券：至少 1 张面额较低的券（例如 2~5 元），用于验证最小折扣链路
   - 叠加规则：至少包含“可叠加/不可叠加”两类券，并在 UI 上明确提示；当用户选择了不可叠加券时，必须阻止再选其他券并给出原因
   - 客群限制：至少 1 张券要求特定客群可用（例如新用户/会员等级），不满足则置灰并提示
   - 价格展示必须拆分并可追溯：商品小计、优惠（可展开看到每张券/每类优惠的抵扣）、运费（可为 0 或被免运费券抵扣）、应付合计
   - 优惠券选择 UI（必须）：
     - 入口使用“优惠/券”行（List.Item 风格）+ 当前选中摘要（如“已选 1 张券 / 省¥20.00”）
     - 点击后用 BottomSheet/Drawer 打开优惠券列表：支持筛选“可用/不可用”，不可用券置灰并显示原因（过期/不满足客群/不可叠加等）
4. 底部吸底结算栏（必须）：
   - 展示已选商品数量（例如“已选 3 件”）
   - 合计金额（格式化：千分位 + 两位小数，右对齐）
   - “去结算”按钮：跳转到 `/m/payment`
   - 结算按钮禁用规则（必须）：
     - 未选中任何有效商品时禁用并提示原因
     - 存在失效/缺货且被选中时必须阻止结算并提示

交互与状态（必须可演示）：
1. 数量变更：加减/输入数量后，合计实时变化，并写回 mock 数据。
2. 删除：删除后提示成功；支持撤销（可选）。
3. 失效/缺货处理：失效项需置灰并提示原因，且不能结算。
4. 加载/空/错误状态：
   - 初次加载占位（Skeleton/Loading）
   - 空态：引导去逛逛（跳转 `/m/products`）
   - 错误态：提示 + 重试按钮（可与 config 失败注入联动或本页开关）

数据要求（必须）：
1. 购物车数据来自 mock（例如 `mock.cart.items`），字段至少包含：id、productId、title、spec、price、qty、selected、status（normal/out_of_stock/invalid）、cover。
2. 与商品页联动：在商品详情页“加入购物车”后，购物车应可见新增项（最小可用联动即可）。

与 Landing 串联（必须）：
1. 移动端 Landing 的金刚区必须提供“购物车”入口，跳转到 `/m/cart`。
