/* ==========================================================================
   v7-mobile.css —— 移动端专属（<768px；768–1023 放宽间距复用同一套）
   --------------------------------------------------------------------------
   新增组件（桌面端不使用）：
     · .sheet             Bottom Sheet（顶角圆角 + 拖拽把手 + 下滑关闭 + 遮罩 + 焦点管理）
     · .sheet--full       全屏 Dialog（复杂表单/长内容）
     · .sheet--danger     L4 破坏性危险区样式
     · .action-sheet      L2 选项面板（替代桌面 Context Menu / hover 菜单）
     · .tabbar            底部 Tab Bar（≤5 项 + safe-area）
     · .card-list/.rec-card  表格 → 卡片列表（每卡 3–5 关键字段）
     · .swipe-row/.swipe-actions  滑动操作（配合 Undo Snackbar）
     · .ptr               下拉刷新指示器
   颜色全部取自既有令牌。桌面端不受本文件影响。
   ========================================================================== */

/* --------------------------------------------------------------------------
   Bottom Sheet 根容器 + 遮罩
   -------------------------------------------------------------------------- */
.sheet-root {
  position: fixed;
  inset: 0;
  z-index: var(--z-modal);
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  background: var(--overlay-scrim);
  animation: v7-scrim-in var(--m-scrim) var(--ease-standard) both;
  overscroll-behavior: contain;
}
.sheet-root.is-leaving { animation: v7-scrim-out var(--m-scrim) var(--ease-standard) both; }
.sheet-root--static { background: var(--overlay-scrim-strong); }

.sheet {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  /* 用 % 而不是 dvh：这样在 DEMO 手机框（fixed 根 = 手机框）里也是「相对屏幕」的高度 */
  max-height: 100%;
  background: var(--bg-surface-raised);
  border-top-left-radius: var(--radius-xl);   /* 顶部圆角 */
  border-top-right-radius: var(--radius-xl);
  border-top: 1px solid var(--border-subtle);
  box-shadow: var(--shadow-xl);
  padding-bottom: var(--safe-bottom);          /* safe-area 底部 padding */
  will-change: transform;
  animation: v7-sheet-in var(--m-sheet) var(--ease-standard) both;
}
.sheet-root.is-leaving .sheet { animation: v7-sheet-out var(--m-sheet) var(--ease-standard) both; }

/*
  ⚠️ 入场动画播完必须固定成 none：
     `v7-sheet-in` 是 translateY(100%→0)，也就是「从屏幕底部飞上来」。
     一旦这个动画因为任何类名变化被重新触发，用户会看到面板从底部猛地
     往上甩一下（拖动、换档时尤其明显）。`.is-entered` 在动画结束后锁死它，
     `.is-leaving` 写在后面，关闭动画仍然优先。
*/
.sheet.is-entered { animation: none; }

/* --------------------------------------------------------------------------
   吸附分级（snap points）
   --------------------------------------------------------------------------
   · 高度由 JS 内联控制（拖动时跟手、松手时过渡到目标档）
   · `.is-snapping` 才允许高度过渡，拖动中必须没有过渡，否则会「跟不上手」
   -------------------------------------------------------------------------- */
.sheet--snap {
  /* 高度由 JS 给，这里只兜底一个初始值，避免 JS 之前闪一下 */
  height: 55%;
}
/*
  v7-allow-layout-motion（全库唯一允许过渡布局属性的地方）：
  吸附确实是「可见高度」这个状态本身在变；若改用 translate 平移，Sheet 的内部
  滚动区会比可见区更大，滚动手感错位（能滚到看不见的区域）。这条只在松手
  吸附时生效（250ms），拖动过程中不加过渡（跟手）。
*/
.sheet--snap.is-snapping { transition: height var(--m-sheet) var(--ease-standard); } /* v7-allow-layout-motion */
.sheet-root.is-dragging .sheet--snap { transition: none; }

/* 档位指示点：让「分级」可见 */
.sheet__snaps {
  position: absolute;
  left: 50%;
  bottom: 4px;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 5px;
  pointer-events: none;
}
.sheet__snap-dot {
  width: 5px;
  height: 5px;
  border-radius: var(--radius-full);
  background: var(--border-strong);
  transition: background-color var(--m-hover) var(--ease-standard), transform var(--m-hover) var(--ease-standard);
}
.sheet__snap-dot.is-active {
  background: var(--brand-500);
  transform: scale(1.25);
}
/* 把手里有了指示点，稍微加高一点避免挤 */
.sheet--snap .sheet__grabber { height: 26px; }

/* 手指拖拽跟手期间禁用动画 */
.sheet-root.is-dragging .sheet { animation: none; transition: none; }
.sheet-root.is-settling .sheet { transition: transform var(--m-sheet) var(--ease-standard); }

@keyframes v7-sheet-in {
  from { transform: translate3d(0, 100%, 0); }
  to { transform: none; }
}
@keyframes v7-sheet-out {
  from { transform: none; }
  to { transform: translate3d(0, 100%, 0); }
}

/* 拖拽把手（里面还要放档位指示点，所以用 position: relative） */
.sheet__grabber {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 22px;
  flex-shrink: 0;
  cursor: grab;
  touch-action: none;
  background: transparent;
}
.sheet__grabber::after {
  content: '';
  width: 40px;
  height: 4px;
  border-radius: var(--radius-full);
  background: var(--border-strong);
  transition: background var(--dur-press) var(--ease-standard);
}
.sheet__grabber:hover::after { background: var(--text-tertiary); }

.sheet__head {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-4) var(--space-3);
  flex-shrink: 0;
}
.sheet__icon {
  display: grid; place-items: center;
  width: 36px; height: 36px; flex-shrink: 0;
  border-radius: var(--radius-md);
  background: var(--bg-active);
  color: var(--brand-500);
}
.sheet__icon--danger { background: var(--danger-soft); color: var(--danger); }
.sheet__icon--warning { background: var(--warning-soft); color: var(--warning); }
.sheet__icon--success { background: var(--success-soft); color: var(--success); }
.sheet__titles { flex: 1 1 auto; min-width: 0; }
.sheet__title { font-size: var(--text-lg); font-weight: 650; line-height: 1.35; }
.sheet__subtitle { margin-top: 2px; font-size: var(--text-sm); color: var(--text-tertiary); }
.sheet__close { width: var(--tap-min); height: var(--tap-min); margin: -6px -8px 0 0; }

.sheet__body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: 0 var(--space-4) var(--space-4);
  font-size: var(--text-base);
  line-height: 1.65;
  color: var(--text-secondary);
  -webkit-overflow-scrolling: touch;
}
.sheet__body strong { color: var(--text-primary); font-weight: 640; }

/* 底部操作区：吸底 + 主按钮全宽（拇指可达） */
.sheet__foot {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4) var(--space-4);
  border-top: 1px solid var(--border-subtle);
  background: var(--bg-surface-raised);
}
.sheet__foot-row { display: flex; gap: var(--space-2); }
.sheet__foot .btn { min-height: var(--tap-min); }     /* 44px 触控目标 */
.sheet__foot .btn--danger { order: -1; }              /* 危险操作在下、需够到才按到 */

/* L4 危险区（现有 danger 令牌 + 图标 + 文案） */
.sheet__danger {
  display: flex;
  gap: var(--space-3);
  margin-top: var(--space-3);
  padding: var(--space-3);
  border-radius: var(--radius-md);
  background: var(--danger-soft);
  border: 1px solid color-mix(in srgb, var(--danger) 28%, transparent);
}
.sheet__danger-icon { display: grid; place-items: center; color: var(--danger); flex-shrink: 0; }
.sheet__danger-text { font-size: var(--text-sm); color: var(--text-primary); line-height: 1.55; }
.sheet__danger-text b { color: var(--danger); font-weight: 650; }

/* 全屏 Dialog（复杂表单/长内容）：相对浮层根（= 视口/手机框）的 100% */
.sheet--full {
  height: 100%;
  max-height: 100%;
  border-radius: 0;
  border-top: none;
  padding-top: var(--safe-top);
}
.sheet--full .sheet__grabber { display: none; }
.sheet--full .sheet__head { padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border-subtle); }
.sheet--full .sheet__body { padding: var(--space-4); }
.sheet--full .sheet__foot { padding-bottom: calc(var(--space-4) + var(--safe-bottom)); }

/* --------------------------------------------------------------------------
   ActionSheet（L2 / 长按菜单 / 「更多」）—— 微信样式
   --------------------------------------------------------------------------
   结构（微信 = 分组卡片 + 独立取消按钮，整体浮在遮罩上，没有白色大底板）：
     .sheet.action-sheet        透明容器（只负责上滑入场与 safe-area）
       .action-sheet__group       白色圆角卡片：可选灰色说明头 + 若干居中选项
       .action-sheet__cancel-group 另一张白色圆角卡片，只放「取消」
   选项之间是发丝分隔线、右对齐 meta/✓；破坏性操作用 --danger 文字（不新增颜色）。
   -------------------------------------------------------------------------- */
.action-sheet {
  /* 覆盖 .sheet 的白色底板：微信是「卡片浮在遮罩上」而不是一整块面板 */
  background: transparent;
  border-top: none;
  box-shadow: none;
  padding: var(--space-2) var(--space-2) calc(var(--space-2) + var(--safe-bottom));
  gap: var(--space-2);
  max-height: 88%;
  overflow: visible;
}

.action-sheet__group {
  display: flex;
  flex-direction: column;
  flex: 0 1 auto;
  min-height: 0;
  border-radius: var(--radius-lg);
  background: var(--bg-surface-raised);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
  /* 逐组上浮（微信那种「卡片依次到位」的观感） */
  animation: v7-as-rise var(--m-panel-in) var(--ease-standard) both;
}

.action-sheet__header {
  padding: var(--space-3) var(--space-4);
  text-align: center;
  border-bottom: 1px solid var(--border-subtle);
}
.action-sheet__title {
  font-size: var(--text-sm);
  font-weight: 500;
  color: var(--text-secondary);
  overflow-wrap: anywhere;
}
.action-sheet__subtitle {
  margin-top: 2px;
  font-size: var(--text-xs);
  color: var(--text-tertiary);
  overflow-wrap: anywhere;
}

.action-sheet__list {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
}

.action-sheet__item {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 56px;                  /* ≥44px 触控目标 */
  padding: var(--space-3) var(--space-4);
  font-size: var(--text-md);         /* 16px，微信的选项字号 */
  font-weight: 500;
  color: var(--text-primary);
  text-align: center;
  background: transparent;
  transition: background-color var(--m-hover) var(--ease-standard);
}
/* 发丝分隔线：只画在「相邻两项之间」，两侧留白（微信质感） */
.action-sheet__item + .action-sheet__item::before {
  content: '';
  position: absolute;
  top: 0;
  left: var(--space-4);
  right: var(--space-4);
  height: 1px;
  background: var(--border-subtle);
}
.action-sheet__item:active { background: var(--bg-hover); }
.action-sheet__item--danger { color: var(--danger); }
.action-sheet__item--danger:active { background: var(--danger-soft); }
.action-sheet__item[disabled] { opacity: 0.42; cursor: not-allowed; }
.action-sheet__item[disabled]:active { background: transparent; }

/* 选中项：右侧 ✓（下拉选择器复用 ActionSheet 时用） */
.action-sheet__check {
  position: absolute;
  right: var(--space-4);
  display: grid;
  place-items: center;
  color: var(--brand-600);
}
/* 次要信息：右侧小字（档位/数量之类） */
.action-sheet__meta {
  position: absolute;
  right: var(--space-4);
  font-size: var(--text-xs);
  font-weight: 400;
  color: var(--text-tertiary);
}
/* 可选图标（默认不显示，保持微信样式；需要时传 showIcons: true） */
.action-sheet__item-icon {
  position: absolute;
  left: var(--space-4);
  display: grid;
  place-items: center;
  color: var(--text-tertiary);
}
.action-sheet__item--danger .action-sheet__item-icon { color: var(--danger); }

/* 独立取消按钮（微信的「取消」永远是单独一张卡片） */
.action-sheet__cancel-group {
  flex: 0 0 auto;
  border-radius: var(--radius-lg);
  background: var(--bg-surface-raised);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
  animation: v7-as-rise var(--m-panel-in) var(--ease-standard) both;
  animation-delay: 40ms;
}
.action-sheet__cancel {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 54px;
  font-size: var(--text-md);
  font-weight: 650;
  color: var(--text-primary);
  background: transparent;
  transition: background-color var(--m-hover) var(--ease-standard);
}
.action-sheet__cancel:active { background: var(--bg-hover); }

/* 卡片依次上浮 + 淡入 */
@keyframes v7-as-rise {
  from { opacity: 0; transform: translate3d(0, 12px, 0); }
  to { opacity: 1; transform: none; }
}

/* 额外内容（如自定义提示块）也放进分组卡片里 */
.action-sheet__extra {
  padding: var(--space-2) var(--space-4) var(--space-3);
  border-top: 1px solid var(--border-subtle);
  font-size: var(--text-sm);
  color: var(--text-secondary);
}

/* --------------------------------------------------------------------------
   底部 Tab Bar（≤5 项 + safe-area）
   -------------------------------------------------------------------------- */
.tabbar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: var(--z-sticky);
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 1fr;
  height: calc(var(--tabbar-h) + var(--safe-bottom));
  padding-bottom: var(--safe-bottom);
  padding-left: var(--safe-left);
  padding-right: var(--safe-right);
  background: var(--bg-glass-strong);
  backdrop-filter: blur(12px);
  border-top: 1px solid var(--border-subtle);
  box-shadow: 0 -8px 24px var(--neu-shadow);
}
.tabbar__item {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  min-height: var(--tap-min);
  color: var(--text-tertiary);
  font-size: 11px;
  font-weight: 560;
  transition: color var(--dur-press) var(--ease-standard);
  -webkit-tap-highlight-color: transparent;
}
.tabbar__item:active { background: var(--bg-hover); }
.tabbar__item[aria-current='page'] { color: var(--brand-600); }
.tabbar__item[aria-current='page'] .tabbar__icon { color: var(--brand-600); }
.tabbar__icon { display: grid; place-items: center; width: 24px; height: 24px; }
.tabbar__badge {
  position: absolute;
  top: 6px;
  right: calc(50% - 18px);
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  border-radius: var(--radius-full);
  background: var(--danger);
  color: var(--text-on-brand);
  font-size: 10px;
  font-weight: 700;
  line-height: 16px;
  text-align: center;
}

/* 内容区为 Tab Bar 让位 */
.has-tabbar { padding-bottom: calc(var(--tabbar-h) + var(--safe-bottom) + var(--space-4)); }

/* --------------------------------------------------------------------------
   表格 → 卡片列表
   -------------------------------------------------------------------------- */
.card-list { display: flex; flex-direction: column; gap: var(--space-3); }

.rec-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-4);
  border-radius: var(--radius-lg);
  background: var(--bg-surface-raised);
  border: 1px solid var(--border-subtle);
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--dur-press) var(--ease-standard), transform var(--dur-press) var(--ease-standard);
  overflow: hidden;
}
.rec-card:active { transform: scale(0.995); }
.rec-card.is-selected { border-color: var(--border-strong); background: var(--bg-active); }

.rec-card__head { display: flex; align-items: center; gap: var(--space-3); }
.rec-card__title { font-size: var(--text-md); font-weight: 640; color: var(--text-primary); line-height: 1.35; }
.rec-card__sub { font-size: var(--text-xs); color: var(--text-tertiary); }
.rec-card__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2) var(--space-4);
  font-size: var(--text-sm);
  color: var(--text-secondary);
}
.rec-card__meta-item { display: inline-flex; align-items: center; gap: 4px; }
.rec-card__meta-label { color: var(--text-tertiary); font-size: var(--text-xs); }
.rec-card__right { margin-left: auto; display: flex; align-items: center; gap: var(--space-2); }

/* 次要信息折叠 */
.rec-card__more-btn {
  display: inline-flex; align-items: center; gap: 4px;
  min-height: 32px;
  font-size: var(--text-xs);
  color: var(--text-tertiary);
}
.rec-card__detail {
  display: none;
  flex-direction: column;
  gap: var(--space-1);
  padding-top: var(--space-2);
  border-top: 1px dashed var(--border-subtle);
  font-size: var(--text-sm);
  color: var(--text-secondary);
}
.rec-card.is-expanded .rec-card__detail { display: flex; }
.rec-card__detail-row { display: flex; justify-content: space-between; gap: var(--space-3); }
.rec-card__detail-row span:first-child { color: var(--text-tertiary); }

/* --------------------------------------------------------------------------
   滑动操作（Swipe actions）
   -------------------------------------------------------------------------- */
.swipe-row { position: relative; overflow: hidden; border-radius: var(--radius-lg); }
.swipe-row__content { position: relative; z-index: 1; touch-action: pan-y; transition: transform var(--dur-fast) var(--ease-standard); }
.swipe-row.is-open .swipe-row__content { transform: translateX(calc(-1 * var(--swipe-w, 152px))); }
.swipe-row.is-dragging .swipe-row__content { transition: none; }

.swipe-actions {
  position: absolute;
  top: 0; right: 0; bottom: 0;
  display: flex;
  z-index: 0;
}
.swipe-actions__btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  width: 76px;
  font-size: var(--text-xs);
  font-weight: 600;
  color: var(--text-inverse);
  background: var(--text-tertiary);
  border: none;
}
.swipe-actions__btn:active { filter: brightness(0.94); }
.swipe-actions__btn--danger { background: var(--danger); color: var(--text-on-brand); }
.swipe-actions__btn--brand { background: var(--brand-600); color: var(--text-on-brand); }

/* --------------------------------------------------------------------------
   下拉刷新
   -------------------------------------------------------------------------- */
.ptr-indicator {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  height: 0;
  overflow: hidden;
  font-size: var(--text-sm);
  color: var(--text-tertiary);
  /* 高度由手势直接驱动（不做高度过渡，避免布局抖动）；只过渡透明度 */
  opacity: 0;
  transition: opacity var(--m-hover) var(--ease-standard);
}
.ptr-indicator.is-pulling, .ptr-indicator.is-refreshing { height: 56px; opacity: 1; }
.ptr-indicator__spinner {
  width: 16px; height: 16px;
  border-radius: 50%;
  border: 2px solid var(--border-strong);
  border-top-color: var(--brand-500);
  transform: rotate(var(--ptr-rot, 0deg));
}
.ptr-indicator.is-refreshing .ptr-indicator__spinner { animation: v7-spin 700ms linear infinite; transform: none; }

/* --------------------------------------------------------------------------
   触控目标、表单与反馈位置
   --------------------------------------------------------------------------
   同一套规则给两个作用域用：
     1) 真实移动端 —— @media (max-width: 767.98px)
     2) DEMO 手机框 —— .v7-force-mobile（宽窗口下媒体查询不会命中框内，
        靠类名把同一套规则套到框上，保证框里看到的就是真机效果）
   尺寸类用变量（一个作用域一次声明）；定位类直接写规则（两边各写一次，
   避免变量解析失败导致弹层掉回页面顶部）。
   -------------------------------------------------------------------------- */
@media (max-width: 767.98px) {
  :root {
    --v7-mobile-scope: 1;

    /* 触控尺寸：所有可点击元素 ≥44×44 */
    --btn-h: var(--tap-min);
    --btn-h-sm: var(--tap-min);
    --btn-h-lg: var(--tap-min);
    --icon-btn: var(--tap-min);
    --tab-h: var(--tap-min);
    --more-btn: var(--tap-min);
    --cbx-h: var(--tap-min);
    --cbx-size: 22px;

    /* 表单：16px 字号避免 iOS 聚焦缩放 */
    --input-h: var(--tap-min);
    --input-fs: 16px;
  }
}

/* DEMO 手机框：复用同一套尺寸变量 */
.v7-force-mobile {
  --v7-mobile-scope: 1;

  --btn-h: var(--tap-min);
  --btn-h-sm: var(--tap-min);
  --btn-h-lg: var(--tap-min);
  --icon-btn: var(--tap-min);
  --tab-h: var(--tap-min);
  --more-btn: var(--tap-min);
  --cbx-h: var(--tap-min);
  --cbx-size: 22px;

  --input-h: var(--tap-min);
  --input-fs: 16px;
}

/* ---------- 反馈贴底：Toast 与 Snackbar 都在底部，避开 Tab Bar ---------- */
@media (max-width: 767.98px) {
  .toast-stack {
    top: auto;
    bottom: calc(var(--tabbar-h) + var(--safe-bottom) + var(--space-3));
    left: var(--space-3);
    right: var(--space-3);
    width: auto;
    flex-direction: column-reverse;
  }
  .snackbar-host {
    left: var(--space-3);
    right: var(--space-3);
    transform: none;
    width: auto;
    bottom: calc(var(--tabbar-h) + var(--safe-bottom) + var(--space-3));
  }
}
.v7-force-mobile .toast-stack {
  top: auto;
  bottom: calc(var(--tabbar-h) + var(--safe-bottom) + var(--space-3));
  left: var(--space-3);
  right: var(--space-3);
  width: auto;
  flex-direction: column-reverse;
}
.v7-force-mobile .snackbar-host {
  left: var(--space-3);
  right: var(--space-3);
  transform: none;
  width: auto;
  bottom: calc(var(--tabbar-h) + var(--safe-bottom) + var(--space-3));
}

/* 移动端专属微调（同一组选择器在两个作用域下都生效） */
@media (max-width: 767.98px) {
  .row-more { opacity: 1; }
  .snackbar { border-radius: var(--radius-lg); }
  .snackbar__action { min-height: var(--tap-min); }
  .toast { border-radius: var(--radius-lg); }
  .textarea { min-height: 120px; }
}
.v7-force-mobile .row-more { opacity: 1; }
.v7-force-mobile .snackbar { border-radius: var(--radius-lg); }
.v7-force-mobile .snackbar__action { min-height: var(--tap-min); }
.v7-force-mobile .toast { border-radius: var(--radius-lg); }
.v7-force-mobile .textarea { min-height: 120px; }

/* 768–1023：复用移动交互但放宽间距 */
@media (min-width: 768px) and (max-width: 1023.98px) {
  .sheet {
    max-width: 560px;
    margin: 0 auto;
    border-top-left-radius: var(--radius-xl);
    border-top-right-radius: var(--radius-xl);
  }
  .card-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); }
  .sheet__body { padding-left: var(--space-6); padding-right: var(--space-6); }
  .sheet__foot { padding-left: var(--space-6); padding-right: var(--space-6); }
}

@media (prefers-reduced-motion: reduce) {
  .sheet,
  .sheet-root,
  .swipe-row__content,
  .rec-card,
  .ptr-indicator,
  .tabbar__item {
    animation: none !important;
    transition: none !important;
  }
  /* 吸附改为瞬时换档（不做高度过渡） */
  .sheet--snap.is-snapping { transition: none !important; }
  /* ActionSheet 分组卡片不做上浮，直接显示 */
  .action-sheet__group,
  .action-sheet__cancel-group {
    animation: none !important;
    transform: none !important;
  }
  .sheet-root .sheet,
  .sheet-root.is-leaving .sheet {
    animation: none !important;
    transform: none !important;
  }
  .rec-card:active { transform: none !important; }
  .ptr-indicator.is-refreshing .ptr-indicator__spinner { animation: none !important; }
}
