/* 长按卡片快速预览（W5，2026-11-13，试点）：底部速览 sheet。只用 .qj-cpv-* 自有类名，
   不碰 Worker 2 的 qj-mobile.css（同日并行，之后可由协调人统一）；深色走 html.qj-dark。 */
html.qj-cpv .sw-card, html.qj-cpv .td-row { -webkit-touch-callout: none; }
.qj-cpv-backdrop {
  position: fixed; inset: 0; z-index: 9998;
  background: rgba(0, 0, 0, .45);
  opacity: 0; pointer-events: none; transition: opacity .18s ease;
}
.qj-cpv-backdrop.on { opacity: 1; pointer-events: auto; }
.qj-cpv-sheet {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 9999;
  max-width: 560px; margin: 0 auto;
  background: #fff; color: #1a1a1a;
  border-radius: 16px 16px 0 0;
  box-shadow: 0 -8px 32px rgba(0, 0, 0, .25);
  padding: 8px 16px calc(16px + env(safe-area-inset-bottom, 0px));
  transform: translateY(105%);
  transition: transform .22s ease;
  touch-action: none; /* 下滑关闭靠 Pointer Events：pan-y 会让浏览器接管竖滑（滚页面/发 pointercancel），
    拖动收不到 pointermove。sheet 内容短、无内部滚动，整片 none。 */
}
.qj-cpv-sheet.on { transform: translateY(0); }
.qj-cpv-sheet.dragging { transition: none; }
.qj-cpv-grip {
  width: 40px; height: 4px; border-radius: 2px;
  background: #d5dbe5; margin: 2px auto 10px;
}
.qj-cpv-x {
  position: absolute; top: 10px; right: 12px;
  width: 32px; height: 32px; border: 0; border-radius: 50%;
  background: #f0f2f5; color: #555; font-size: 15px; line-height: 1;
  cursor: pointer;
}
.qj-cpv-body { display: flex; gap: 12px; align-items: flex-start; }
.qj-cpv-img {
  width: 72px; height: 72px; object-fit: cover; flex: none;
  border-radius: 10px; background: #eef1f6;
}
.qj-cpv-main { flex: 1; min-width: 0; }
.qj-cpv-title {
  font-size: 16px; font-weight: 700; line-height: 1.35;
  padding-right: 28px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.qj-cpv-meta { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.qj-cpv-chip {
  font-size: 12px; line-height: 1; padding: 5px 8px; border-radius: 999px;
  background: #eef2fa; color: #1c60f3;
}
.qj-cpv-chip.qj-cpv-dl { background: #e7f6ec; color: #1a7f37; }
.qj-cpv-desc {
  font-size: 13px; line-height: 1.5; color: #555; margin-top: 8px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.qj-cpv-hint {
  font-size: 13px; line-height: 1.5; color: #1c60f3; margin-top: 10px;
  background: #eef2fa; border-radius: 8px; padding: 8px 10px;
}
.qj-cpv-actions { display: flex; gap: 10px; margin-top: 14px; }
.qj-cpv-open, .qj-cpv-close {
  flex: 1; text-align: center; font-size: 15px; line-height: 1;
  padding: 13px 0; border-radius: 10px; text-decoration: none;
  border: 0; cursor: pointer;
}
.qj-cpv-open { background: #1c60f3; color: #fff; }
.qj-cpv-close { background: #f0f2f5; color: #333; }
body.qj-cpv-open { overflow: hidden; }
/* 深色：与站内 html.qj-dark 口径一致（底 rgb(26,32,41) 一档）。 */
html.qj-dark .qj-cpv-sheet { background: #1a2029; color: #e8ecf2; box-shadow: 0 -8px 32px rgba(0, 0, 0, .6); }
html.qj-dark .qj-cpv-grip { background: #3a4452; }
html.qj-dark .qj-cpv-x { background: #2a323e; color: #c8d0dc; }
html.qj-dark .qj-cpv-img { background: #2a323e; }
html.qj-dark .qj-cpv-chip { background: #22304a; color: #7ea6f8; }
html.qj-dark .qj-cpv-chip.qj-cpv-dl { background: #173324; color: #5ec98a; }
html.qj-dark .qj-cpv-desc { color: #aab4c2; }
html.qj-dark .qj-cpv-hint { background: #22304a; color: #7ea6f8; }
html.qj-dark .qj-cpv-close { background: #2a323e; color: #e8ecf2; }
