/* ============================================================================
 * 卿梦 Site · v2.6.0
 * 运行期专用样式：只在真实主题里需要，不进设计稿构建。
 * 依赖：tokens.css → components.css → pages.css
 * ==========================================================================*/

/* ---------- 1. 图标基础 ---------- */
.qm-ico { width: 1.15em; height: 1.15em; flex: none; vertical-align: -.18em; }
.qm-btn .qm-ico, .qm-chip .qm-ico, .qm-menu-item .qm-ico { width: 16px; height: 16px; }
.qm-id .qm-ico { width: 13px; height: 13px; }

/* ---------- 2. 主内容与网格溢出保护 ---------- */
.qm-main { display: block; min-height: 50vh; }
.qm-main-col { min-width: 0; }
.qm-post-body { min-width: 0; }

/* ---------- 3. 文章卡片：横条模式 ---------- */
.qm-post-list.is-row { gap: var(--qm-sp-4); }
.qm-post-list.is-row .qm-post {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr);
  align-items: stretch;
}
.qm-post-list.is-row .qm-post-thumb {
  aspect-ratio: auto;
  height: 100%;
  min-height: 132px;
  border-radius: 0;
}
/* 2.6.8-f24：竖图撑爆横条的根因修复。
 * thumb 用 height:100% 与 grid 行高互相依赖，此时 <img> 的固有高度
 * （竖图 600x800 → 200 宽 = 267 高）会参与行高计算，把整条撑大。
 * 绝对定位让图脱离行高计算，行高只由文字决定，图 cover 裁切铺满。 */
.qm-post-list.is-row .qm-post-thumb img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.qm-post-list.is-row .qm-post-body { padding: var(--qm-sp-5) var(--qm-sp-6); }
.qm-post-list.is-row .qm-post-title { font-size: var(--qm-fs-lg); }
@media (max-width: 700px) {
  .qm-post-list.is-row .qm-post { grid-template-columns: 116px minmax(0, 1fr); }
  .qm-post-list.is-row .qm-post-thumb { min-height: 104px; }
  .qm-post-list.is-row .qm-post-body { padding: var(--qm-sp-4); gap: var(--qm-sp-2); }
  .qm-post-list.is-row .qm-post-excerpt { display: none; }
  .qm-post-list.is-row .qm-post-foot { padding-top: var(--qm-sp-3); }
}

/* 图片角标不吃缩略图圆角 */
.qm-post-thumb .qm-corner-img { overflow: hidden; }

/* ---------- 4. 顶部：用户下拉 ---------- */
.qm-user-menu { position: relative; flex: none; }
.qm-userpill { gap: var(--qm-sp-2); cursor: pointer; }
.qm-user-drop {
  position: absolute; right: 0; top: calc(100% + 8px);
  width: 220px; padding: var(--qm-sp-2);
  background: var(--qm-surface); border: 1px solid var(--qm-border);
  border-radius: var(--qm-r-lg); box-shadow: var(--qm-sh-lg);
  opacity: 0; visibility: hidden; transform: translateY(-6px);
  transition: opacity var(--qm-dur-2), transform var(--qm-dur-2), visibility var(--qm-dur-2);
  z-index: var(--qm-z-dropdown, 400);
}
.qm-user-drop.on { opacity: 1; visibility: visible; transform: none; }
.qm-user-drop-head {
  display: flex; align-items: center; gap: var(--qm-sp-3);
  padding: var(--qm-sp-3); margin-bottom: var(--qm-sp-2);
  border-radius: var(--qm-r-md); background: var(--qm-bg-soft);
}
.qm-user-drop-head b { display: block; font-size: var(--qm-fs-base); line-height: 1.3; }
.qm-user-drop-head small { font-size: 11px; color: var(--qm-text-3); }
.qm-user-drop .qm-menu-item { border-radius: var(--qm-r-sm); }

/* ---------- 5. 页脚 ---------- */
.qm-footer {
  margin-top: var(--qm-sp-12);
  padding: var(--qm-sp-10) 0 var(--qm-sp-6);
  border-top: 1px solid var(--qm-border);
  background: var(--qm-surface);
}
.qm-footer-grid {
  display: grid; grid-template-columns: 1.6fr repeat(3, 1fr);
  gap: var(--qm-sp-8);
}
/* 2.6.8-f10：手机端「发现 / 服务 / 关于」三列横排（后台「常规设置 → 移动端底栏」可改为单列） */
.qm-footer-links { display: contents; }
@media (max-width: 900px) {
  .qm-footer-grid { grid-template-columns: minmax(0, 1fr); gap: var(--qm-sp-6); }
  .qm-footer-links { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--qm-sp-5); align-items: start; }
  .qm-footer-grid.is-cols-1 .qm-footer-links { grid-template-columns: minmax(0, 1fr); gap: var(--qm-sp-4); }
}
@media (max-width: 560px) {
  .qm-footer-links { gap: 10px 12px; }
  .qm-footer-col { gap: 6px; font-size: var(--qm-fs-xs); }
  .qm-footer-col b { margin-bottom: 2px; font-size: var(--qm-fs-sm); }
  .qm-footer-col a { line-height: 1.5; word-break: break-word; }
}
.qm-footer-brand p { margin: var(--qm-sp-3) 0 0; max-width: 320px; line-height: 1.7; }
.qm-footer-col { display: flex; flex-direction: column; gap: var(--qm-sp-2); font-size: var(--qm-fs-sm); }
.qm-footer-col b { margin-bottom: var(--qm-sp-2); font-size: var(--qm-fs-base); color: var(--qm-text); }
.qm-footer-col a { color: var(--qm-text-2); }
.qm-footer-col a:hover { color: var(--qm-primary); }
.qm-footer-foot {
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--qm-sp-3);
  margin-top: var(--qm-sp-8); padding-top: var(--qm-sp-5);
  border-top: 1px solid var(--qm-divider);
  font-size: var(--qm-fs-xs); color: var(--qm-text-3);
}
/* 备案号（2.6.6）：与版权行同一行右侧，未配置时整段不渲染 */
.qm-footer-beian { display: flex; flex-wrap: wrap; align-items: center; gap: var(--qm-sp-4); }
.qm-footer-beian .qm-beian { color: var(--qm-text-3); }
.qm-footer-beian .qm-beian:hover { color: var(--qm-primary); }

/* ---------- 6. 悬浮五按钮：桌面隐藏、内容预留 ---------- */
@media (min-width: 901px) {
  .qm-tabbar.is-on { display: none !important; }
  /* 底部预留只属于移动端（body 已带 .qm-has-tabbar） */
  .qm-has-tabbar { padding-bottom: 0; }
}
@media (max-width: 900px) {
  body.qm-has-tabbar { padding-bottom: calc(var(--qm-tabbar-h) + var(--qm-tabbar-gap) * 2 + 16px + env(safe-area-inset-bottom, 0px)); overflow-x: clip; }
  .qm-footer { margin-bottom: var(--qm-sp-6); }
  .qm-header-search { display: none; }
  .qm-nav { display: none; }  /* 移动端导航走抽屉 */
}

/* 键盘弹出时悬浮栏上移贴合（visualViewport，main.js 写入 --qm-vv-inset） */
@media (max-width: 900px) {
  .qm-tabbar { bottom: calc(var(--qm-tabbar-gap) + env(safe-area-inset-bottom, 0px) + var(--qm-vv-inset, 0px)); }
}

/* ---------- 6b. 抽屉（左侧滑入变体，运行期补充） ---------- */
@keyframes qmSlideRight { from { transform: translateX(-100%); } to { transform: none; } }
.qm-drawer-left .qm-drawer-panel {
  left: 0; right: auto; width: min(320px, 84vw);
  animation-name: qmSlideRight;
}
.qm-drawer-head {
  display: flex; align-items: center; justify-content: space-between; gap: var(--qm-sp-3);
  margin-bottom: var(--qm-sp-5);
}
.qm-drawer-head b { font-size: var(--qm-fs-xl); font-weight: var(--qm-fw-black); }

/* 抽屉关闭按钮（2.6.8-f22）：44→48px 圆形触控区，不再是挤在角落的小叉 */
.qm-drawer-x {
  display: inline-grid; place-items: center;
  flex: none; width: 44px; height: 44px; padding: 0;
  margin: -6px -8px -6px 0;
  border: 0; border-radius: 50%;
  background: var(--qm-bg-soft); color: var(--qm-text-2);
  cursor: pointer; -webkit-tap-highlight-color: transparent;
  transition: background var(--qm-dur-2) var(--qm-ease), color var(--qm-dur-2) var(--qm-ease), transform var(--qm-dur-2) var(--qm-ease);
}
.qm-drawer-x svg { width: 20px; height: 20px; stroke-width: 2.2; }
.qm-drawer-x:hover { background: var(--qm-primary-50); color: var(--qm-primary); }
.qm-drawer-x:active { transform: scale(.92); }
@media (max-width: 900px) {
  .qm-drawer-x { width: 40px; height: 40px; margin: -6px -8px -6px 0; }
  .qm-drawer-x svg { width: 18px; height: 18px; }
}
.qm-drawer-search { margin-bottom: var(--qm-sp-5); }
.qm-drawer-search .qm-input-group svg { width: 15px; height: 15px; align-self: center; margin-left: 12px; flex: none; }
.qm-drawer-search .qm-input { min-height: 40px; }
.qm-drawer-user {
  display: flex; align-items: center; gap: var(--qm-sp-3);
  padding: var(--qm-sp-3); margin-bottom: var(--qm-sp-5);
  border-radius: var(--qm-r-md); background: var(--qm-bg-soft);
}
.qm-drawer-user .qm-avatar { width: 40px; height: 40px; }
/* f38：抽屉头像认证角标容器（与用户中心同源 qm-av-badge） */
.qm-drawer-av { position: relative; flex: none; display: inline-flex; }
.qm-drawer-av .qm-av-badge { right: -3px; bottom: -3px; width: 17px; min-width: 17px; max-width: 17px; border-width: 2px; }
.qm-drawer-user-main { min-width: 0; }
.qm-drawer-nav { gap: 2px; }
.qm-drawer-nav .qm-menu-item { border-radius: var(--qm-r-sm); }
.qm-drawer-nav .qm-menu-item .qm-count { margin-left: auto; }
.qm-drawer-foot { display: flex; gap: var(--qm-sp-2); flex-wrap: wrap; }

/* ---------- 7. 显示 / 隐藏工具 ---------- */
.qm-show-sm { display: none !important; }
@media (max-width: 900px) {
  .qm-show-sm { display: inline-flex !important; }
  .qm-hide-sm  { display: none !important; }
}

/* ---------- 8. 首页微调 ---------- */
.qm-mod:last-child { margin-bottom: 0; }
.qm-hero-search .qm-btn { flex: none; }
.qm-hero-cta .qm-btn { min-width: 116px; justify-content: center; }
/* 方案 B 双列 hero：≤900 收成单列，避免窄屏挤压 */
@media (max-width: 900px) {
  .qm-hero-grid { grid-template-columns: minmax(0, 1fr); }
  .qm-hero-lead { min-height: 300px; }
}

/* 表格窄屏横向滚动（用户中心订单 / 流水列多） */
@media (max-width: 700px) {
  .qm-table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .qm-table th { white-space: nowrap; }
}
.qm-slide h2 a { color: #fff; }
.qm-slide h2 a:hover { color: #fff; opacity: .9; }
.qm-notes { align-items: flex-start; }

/* 分类横滑：隐藏滚动条但保留滚动 */
.qm-cats { scrollbar-width: none; }
.qm-cats::-webkit-scrollbar { display: none; }

/* 首页侧栏在窄屏隐藏，避免和主列抢空间 */
@media (max-width: 1100px) {
  .qm-side .qm-widget:nth-child(n+4) { display: none; }
}

/* ---------- 10. 用户中心补充 ---------- */
.qm-uc-cols {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--qm-sp-5); margin-top: var(--qm-sp-6);
}
@media (max-width: 1000px) { .qm-uc-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 700px)  { .qm-uc-cols { grid-template-columns: minmax(0, 1fr); } }
.qm-uc-cols .qm-list li {
  display: flex; align-items: center; gap: var(--qm-sp-3);
  padding: var(--qm-sp-3) 0; border-bottom: 1px dashed var(--qm-divider);
  font-size: var(--qm-fs-sm); list-style: none;
}
.qm-uc-cols .qm-list { margin: 0; padding: 0; }
.qm-uc-cols .qm-list li:last-child { border-bottom: 0; }
.qm-uc-cols .qm-list li > span { flex: 1; min-width: 0; }
.qm-uc-cols .qm-list li em { font-style: normal; }
.qm-uc-cols .qm-empty { padding: var(--qm-sp-8) 0; }
.qm-form-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--qm-sp-4); margin-bottom: var(--qm-sp-5); }
@media (max-width: 700px) { .qm-form-2 { grid-template-columns: minmax(0, 1fr); } }
.qm-number.is-empty { font-family: var(--qm-font-num); }

/* ============================================================================
 * 11. 广场：三 Tab / 发现流 / 视频流 / 分类详情 / 帖子详情
 * ==========================================================================*/

/* 页面容器：Tab 条自带下边距，页面区不必再留一大截 */
.qm-page-tight { padding-top: var(--qm-sp-2); }

/* Tab 条右侧工具组 */
.qm-plaza-tools { flex: none; }
@media (max-width: 700px) {
  .qm-tabs-sticky { gap: 2px; }
  .qm-tabs-sticky a { padding: 7px 12px; font-size: var(--qm-fs-sm); }
  .qm-plaza-tools .qm-btn { padding: 6px 10px; }
}

/* 搜索展开条 */
.qm-plaza-search { margin-bottom: var(--qm-sp-5); }
.qm-plaza-search[hidden] { display: none; }
.qm-plaza-search .qm-input-group .qm-btn { border-radius: 0; min-height: 44px; }

/* 公告条 */
.qm-plaza-notice {
  display: flex; align-items: center; gap: var(--qm-sp-2);
  margin-bottom: var(--qm-sp-5); font-size: var(--qm-fs-sm);
}

/* pages.css 的 .qm-slide 是 display:grid，会压过 hidden 的 UA 样式，必须显式关掉 */
.qm-slide[hidden] { display: none !important; }

/* 幻灯片：图片铺满后需要一层压暗，保证标题可读 */
.qm-plaza-slider { margin-bottom: var(--qm-sp-5); }
.qm-plaza-slider .qm-slide { position: relative; min-height: 240px; padding: var(--qm-sp-8) var(--qm-sp-9); }
.qm-plaza-slider .qm-slide-dots { left: var(--qm-sp-9); bottom: var(--qm-sp-5); }
@media (max-width: 700px) {
  .qm-plaza-slider .qm-slide { min-height: 190px; padding: var(--qm-sp-6); }
  .qm-plaza-slider .qm-slide > * { max-width: 100%; }
  .qm-plaza-slider .qm-slide h2 { font-size: var(--qm-fs-2xl); }
  .qm-plaza-slider .qm-slide p { display: none; }
  .qm-plaza-slider .qm-slide-dots { left: var(--qm-sp-6); bottom: var(--qm-sp-4); }
}
.qm-plaza-slider .qm-slide::after {
  content: ""; position: absolute; inset: 0; z-index: 0;
  background: linear-gradient(100deg, rgba(20, 16, 48, .78) 18%, rgba(20, 16, 48, .3) 60%, transparent);
}
.qm-plaza-slider .qm-slide > * { position: relative; z-index: 1; }
.qm-plaza-slider .qm-slide::before { z-index: 0; }

/* ---------- 动态流单项 ---------- */
.qm-feed-item { overflow: visible; }
.qm-feed-title { margin: var(--qm-sp-4) 0 0; font-size: var(--qm-fs-lg); font-weight: var(--qm-fw-bold); line-height: 1.45; }
.qm-feed-title a { color: var(--qm-text); }
.qm-feed-title a:hover { color: var(--qm-primary); }
.qm-feed-text a { color: inherit; display: block; }
.qm-feed-text a:hover { color: var(--qm-text); }
.qm-feed-pick { color: var(--qm-primary); font-weight: var(--qm-fw-semi); }
.qm-feed-imgs { margin-top: var(--qm-sp-4); }
.qm-feed-imgs.qm-n1 img { aspect-ratio: 16 / 10; }
.qm-feed-imgs.qm-n4 img, .qm-feed-imgs.qm-n5 img, .qm-feed-imgs.qm-n6 img { aspect-ratio: 4 / 3; }
.qm-feed-acts { margin-top: var(--qm-sp-4); }
.qm-feed-acts a { display: inline-flex; align-items: center; gap: 5px; color: inherit; }
.qm-feed-acts a:hover { color: var(--qm-primary); }
.qm-feed-acts .zb-fav.on { color: var(--qm-warning); }
.qm-feed-acts .zb-fav.on svg { fill: currentColor; }

/* 列表里的视频卡（点击进详情） */
.qm-feed-video { display: block; aspect-ratio: 16 / 10; margin-top: var(--qm-sp-4); max-width: 360px; }
.qm-feed-video .qm-video-cover img { opacity: .92; }

/* 「⋯」菜单 */
.qm-feed-menu { position: relative; margin-left: auto; flex: none; }
.qm-feed-drop {
  position: absolute; right: 0; top: calc(100% + 4px); z-index: var(--qm-z-dropdown, 400);
  min-width: 132px; padding: var(--qm-sp-1);
  background: var(--qm-surface); border: 1px solid var(--qm-border);
  border-radius: var(--qm-r-md); box-shadow: var(--qm-sh-lg);
  display: none;
}
.qm-feed-menu.on .qm-feed-drop { display: block; }
.qm-feed-drop .qm-menu-item { display: flex; align-items: center; gap: var(--qm-sp-2); width: 100%; }
.qm-feed-drop .is-danger { color: var(--qm-danger-ink); }
.qm-feed-drop .is-danger:hover { background: var(--qm-danger-bg); }

/* 无限滚动哨兵 */
.qm-feed-sentinel {
  padding: var(--qm-sp-6) 0 var(--qm-sp-2);
  text-align: center; font-size: var(--qm-fs-sm); color: var(--qm-text-3);
}

/* ---------- 视频流：全屏上下滑 ---------- */
.qm-video-feed {
  display: flex; flex-direction: column; gap: var(--qm-sp-5);
  align-items: center;
  max-height: calc(100vh - var(--qm-header-h) - 40px);
  overflow-y: auto; scroll-snap-type: y mandatory;
  scrollbar-width: none; padding-bottom: var(--qm-sp-6);
}
.qm-video-feed::-webkit-scrollbar { display: none; }
.qm-video-feed .qm-video-item { scroll-snap-align: center; width: 360px; max-width: 100%; flex: none; }

.qm-video-el { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.qm-video-play {
  position: absolute; inset: 0; border: 0; padding: 0; background: none;
  display: grid; place-items: center; cursor: pointer; z-index: 2;
}
.qm-video-play span { transition: opacity var(--qm-dur-2); }
.qm-video-item.is-playing .qm-video-play span { opacity: 0; }
.qm-video-item.is-playing .qm-video-cover img { opacity: 0; }
.qm-video-cover { transition: opacity var(--qm-dur-3); }

.qm-video-side a { display: flex; flex-direction: column; align-items: center; gap: 2px; color: #fff; font-size: 11px; }
.qm-video-author { position: relative; }
.qm-video-follow {
  position: absolute; left: 50%; bottom: -6px; transform: translateX(-50%);
  width: 18px; height: 18px; border-radius: 50%; display: grid; place-items: center;
  background: var(--qm-primary); color: #fff; font-size: 13px; line-height: 1;
}
.qm-video-info { z-index: 3; }
.qm-video-info .qm-name { color: #fff; }
.qm-video-info .qm-ids .qm-id { border-color: rgba(255, 255, 255, .4); color: #fff; }
.qm-video-sound { opacity: .7; font-size: var(--qm-fs-xs); }

/* ---------- 分类 Tab：横滑卡片 ---------- */
.qm-cat-scroll { scrollbar-width: none; }
.qm-cat-scroll::-webkit-scrollbar { display: none; }
.qm-cat-card em { display: block; margin-top: 2px; }
.qm-cat-card b { color: var(--qm-text); }

/* ---------- 分类详情 ---------- */
.qm-cat-sort { margin: var(--qm-sp-5) 0 var(--qm-sp-4); flex-wrap: wrap; }
.qm-cat-hero-acts .qm-btn-outline.on { border-color: var(--qm-primary); color: var(--qm-primary); }
@media (max-width: 700px) {
  .qm-cat-hero { flex-wrap: wrap; padding: var(--qm-sp-5); }
  .qm-cat-hero-avatar { width: 56px; height: 56px; border-radius: var(--qm-r-lg); }
  .qm-cat-hero h1 { font-size: var(--qm-fs-2xl); }
  .qm-cat-hero-acts { margin-left: 0; width: 100%; }
  .qm-cat-hero-acts .qm-btn { flex: 1; justify-content: center; }
}

/* 列表模式：一条一行，收起配图 */
.qm-feed.is-list { gap: var(--qm-sp-2); }
.qm-feed.is-list .qm-feed-item { padding: var(--qm-sp-4) var(--qm-sp-5); }
.qm-feed.is-list .qm-feed-item:first-child { margin-top: 0; }
.qm-feed.is-list .qm-feed-imgs,
.qm-feed.is-list .qm-feed-video,
.qm-feed.is-list .qm-feed-title { display: none; }
.qm-feed.is-list .qm-feed-text { margin: var(--qm-sp-2) 0; font-size: var(--qm-fs-sm); }
.qm-feed.is-list .qm-feed-acts { margin-top: var(--qm-sp-3); }

/* ---------- 帖子详情 ---------- */
.qm-thread .qm-comments { margin-top: var(--qm-sp-7); border-top: 1px solid var(--qm-divider); padding-top: var(--qm-sp-2); }
.qm-thread .qm-comments .qm-card-head { margin: var(--qm-sp-5) 0 var(--qm-sp-2); }
.qm-thread-media.qm-n2 { grid-template-columns: repeat(2, 1fr); }
.qm-thread-media.qm-n1 { grid-template-columns: minmax(0, 1fr); }
.qm-thread-media a { display: block; }
.qm-thread-media img { border-radius: var(--qm-r-sm); }
.qm-thread-acts button, .qm-thread-acts a { color: inherit; }
.qm-thread-acts button:hover, .qm-thread-acts a:hover { color: var(--qm-primary); }
.qm-thread-acts .zb-fav.on { color: var(--qm-warning); }
.qm-thread-acts .zb-fav.on svg { fill: currentColor; }
.qm-thread-video { aspect-ratio: 16 / 9; max-height: none; margin: var(--qm-sp-5) 0; }
.qm-thread-video video { width: 100%; height: 100%; object-fit: contain; background: #000; }
.qm-thread .qm-author { flex-wrap: wrap; }
@media (max-width: 700px) {
  .qm-thread { padding: var(--qm-sp-5); }
  .qm-thread-body { font-size: var(--qm-fs-md); }
  .qm-thread-acts { gap: var(--qm-sp-4); flex-wrap: wrap; }
}

/* 分页禁用态 */
.qm-pager .is-disabled { opacity: .45; }

/* ============================================================================
 * 12. 消息中心 / 发布页
 * ==========================================================================*/

/* ---------- 收件箱 ---------- */
.qm-msg-head-acts { margin-left: auto; flex: none; }
.qm-msg-item { text-decoration: none; color: inherit; }
.qm-msg-item.on { background: var(--qm-primary-50); }
.qm-msg-item.on::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--qm-primary); }
.qm-msg-avatar { display: grid; place-items: center; flex: none; border-radius: 50%; }
.qm-msg-avatar.is-sys { background: var(--qm-primary-100); color: var(--qm-primary); }
.qm-msg-avatar.is-wallet { background: var(--qm-success-bg); color: var(--qm-success-ink); }
.qm-msg-blank { padding: var(--qm-sp-9) var(--qm-sp-5); text-align: center; color: var(--qm-text-3); }
.qm-msg-blank p { margin: 0 0 4px; font-size: var(--qm-fs-sm); font-weight: var(--qm-fw-semi); color: var(--qm-text-2); }
.qm-msg-blank span { font-size: var(--qm-fs-xs); }

/* ---------- 对话 ---------- */
.qm-chat-blank { flex: 1; display: grid; place-items: center; }
.qm-chat-blank .qm-empty { padding: var(--qm-sp-7); }
.qm-chat-back { display: none; flex: none; }
.qm-chat-body { min-height: 320px; }
.qm-chat-tip { margin: auto; font-size: var(--qm-fs-sm); color: var(--qm-text-3); text-align: center; }
.qm-chat-input.is-locked { align-items: center; gap: var(--qm-sp-2); font-size: var(--qm-fs-sm); color: var(--qm-text-3); }
.qm-chat-input.is-locked svg { color: var(--qm-text-3); }
.qm-bubble-body { word-break: break-word; }
.qm-msg-rules { margin-top: var(--qm-sp-6); }
.qm-msg-rules .qm-list { margin: 0; }

body.qm-modal-open { overflow: hidden; }

/* ---------- 发布页 ---------- */
.qm-compose-head { align-items: baseline; margin-bottom: var(--qm-sp-4); }
.qm-compose-head h2 { margin: 0; font-size: var(--qm-fs-2xl); font-weight: var(--qm-fw-black); }
.qm-compose-card { margin-bottom: var(--qm-sp-4); }
.qm-compose-body { min-height: 180px; }
.qm-compose-type .qm-type-card svg { width: 22px; height: 22px; }

/* 字段组切换：pages.css 里的 display 会压过 hidden，必须显式声明 */
.qm-compose [data-group][hidden] { display: none !important; }

/* 上传预览 */
.qm-compose-thumbs { display: grid; grid-template-columns: repeat(auto-fill, minmax(88px, 1fr)); gap: var(--qm-sp-3); margin-top: var(--qm-sp-3); }
.qm-compose-thumb { position: relative; aspect-ratio: 1; border-radius: var(--qm-r-sm); overflow: hidden; border: 1px solid var(--qm-border); }
.qm-compose-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.qm-thumb-x {
  position: absolute; top: 3px; right: 3px; width: 20px; height: 20px;
  display: grid; place-items: center; border: 0; border-radius: 50%;
  background: rgba(15, 17, 26, .62); color: #fff; font-size: 13px; line-height: 1;
  cursor: pointer;
}
.qm-thumb-x:hover { background: var(--qm-danger); }

.qm-drop img { max-height: 140px; border-radius: var(--qm-r-sm); }

.qm-compose-files { margin: var(--qm-sp-3) 0 0; padding: 0; list-style: none; }
.qm-compose-files li {
  display: flex; align-items: center; gap: var(--qm-sp-3);
  padding: 8px 12px; border-radius: var(--qm-r-sm);
  background: var(--qm-bg-soft); font-size: var(--qm-fs-sm);
}
.qm-compose-files li + li { margin-top: 6px; }
.qm-compose-files li span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.qm-compose-files li em { font-style: normal; font-size: var(--qm-fs-xs); color: var(--qm-text-3); }
.qm-compose-files .qm-thumb-x { position: static; background: transparent; color: var(--qm-text-3); }
.qm-compose-files .qm-thumb-x:hover { background: var(--qm-danger-bg); color: var(--qm-danger); }

.qm-compose-video { margin-top: var(--qm-sp-3); }
.qm-compose-video video { width: 100%; max-height: 320px; border-radius: var(--qm-r-md); background: #000; }

.qm-chip-add { border-style: dashed; color: var(--qm-text-3); }

/* ---------- 13. 评论 / 404 / 搜索 / 作者页 / 独立页面（2.6.1） ---------- */

/* 评论列表：ol 去符号，子评论缩进 */
.qm-comment-list, .qm-comment-list .children { list-style: none; margin: 0; padding: 0; }
.qm-comment-list .children { flex: 0 0 100%; padding-left: var(--qm-sp-9); }
.qm-comment-list .children .qm-comment { border-bottom: 0; padding-bottom: 0; }
.qm-comment-avatar { flex: none; display: block; line-height: 0; }
/* WP 输出里 children 是 .qm-comment 的直接子元素，需换行占满 */
.qm-comment { flex-wrap: wrap; }
.qm-comment .qm-author-top { display: flex; align-items: center; gap: var(--qm-sp-2); flex-wrap: wrap; }
.qm-comment-text p { margin: 0 0 var(--qm-sp-2); }
.qm-comment-text p:last-child { margin-bottom: 0; }
.qm-comment-foot a { color: var(--qm-text-3); text-decoration: none; transition: color var(--qm-dur-2); }
.qm-comment-foot a:hover { color: var(--qm-primary); }
.qm-comment-reply, .qm-comment-edit { display: inline-flex; }
.qm-comment-field { margin-bottom: var(--qm-sp-4); }
.qm-comment-pager { padding: var(--qm-sp-5) 0 0; }
.qm-comment-pager .page-numbers.current { background: var(--qm-primary); border-color: var(--qm-primary); color: #fff; font-weight: var(--qm-fw-semi); }
.qm-comment-first { padding: var(--qm-sp-8) var(--qm-sp-6); }

/* 评论表单 */
.qm-comment-form-wrap { margin-top: var(--qm-sp-7); padding-top: var(--qm-sp-6); border-top: 1px solid var(--qm-divider); }
.qm-comment-form-title { margin: 0 0 var(--qm-sp-4); font-size: var(--qm-fs-lg); font-weight: var(--qm-fw-bold); }
.qm-comment-form .qm-field { margin-bottom: var(--qm-sp-4); }
.qm-comment-form .qm-comment-guest {
  display: inline-flex; vertical-align: top;
  width: calc(50% - var(--qm-sp-3)); margin-right: var(--qm-sp-3);
}
.qm-comment-form .qm-comment-guest:nth-of-type(2) { margin-right: 0; }
.qm-comment-submit { display: flex; align-items: center; gap: var(--qm-sp-4); flex-wrap: wrap; }
.qm-comment-as, .qm-comment-login { margin: 0 0 var(--qm-sp-4); font-size: var(--qm-fs-xs); color: var(--qm-text-3); }
.qm-comment-as a, .qm-comment-login a { color: var(--qm-primary); }

/* 404 */
.qm-404 { position: relative; text-align: center; padding: var(--qm-sp-12) var(--qm-sp-6) var(--qm-sp-10); }
.qm-404-art { position: relative; display: inline-flex; align-items: center; justify-content: center; margin-bottom: var(--qm-sp-4); }
.qm-404-num {
  font-size: clamp(72px, 15vw, 132px); font-weight: var(--qm-fw-black); line-height: 1;
  letter-spacing: -.04em;
  background: var(--qm-grad-brand); -webkit-background-clip: text; background-clip: text; color: transparent;
  opacity: .92;
}
.qm-404-ghost { position: absolute; right: -6px; bottom: 6px; color: var(--qm-primary); opacity: .28; transform: rotate(-8deg); }
.qm-404-title { margin: var(--qm-sp-4) 0 var(--qm-sp-3); font-size: var(--qm-fs-3xl); font-weight: var(--qm-fw-black); letter-spacing: var(--qm-ls-tight); }
.qm-404-desc { margin: 0 0 var(--qm-sp-7); font-size: var(--qm-fs-base); line-height: 1.8; color: var(--qm-text-2); }
.qm-404-search { max-width: 460px; margin: 0 auto var(--qm-sp-6); }
.qm-404-links { display: flex; align-items: center; justify-content: center; gap: var(--qm-sp-3); flex-wrap: wrap; }
.qm-404 + .qm-mod { margin-top: var(--qm-sp-10); }

/* 搜索页 */
.qm-search-hero {
  padding: var(--qm-sp-7) var(--qm-sp-7) var(--qm-sp-6); margin-bottom: var(--qm-sp-7);
  border: 1px solid var(--qm-border); border-radius: var(--qm-r-lg);
  background: var(--qm-bg-soft);
}
.qm-search-title { margin: 0 0 var(--qm-sp-2); font-size: var(--qm-fs-2xl); font-weight: var(--qm-fw-black); letter-spacing: var(--qm-ls-tight); }
.qm-search-kw { color: var(--qm-primary); }
.qm-search-meta { margin: 0 0 var(--qm-sp-5); font-size: var(--qm-fs-sm); color: var(--qm-text-2); }
.qm-search-meta b { color: var(--qm-text); font-variant-numeric: tabular-nums; }
.qm-search-hero-main { min-width: 0; }
.qm-search-form { max-width: 560px; }
.qm-search-tags { display: flex; align-items: center; gap: var(--qm-sp-2); flex-wrap: wrap; margin-top: var(--qm-sp-5); font-size: var(--qm-fs-xs); }

/* 输入组里的图标与按钮 */
.qm-input-group > svg { flex: none; margin-left: var(--qm-sp-4); color: var(--qm-text-3); }
.qm-input-group .qm-btn { flex: none; border-radius: 0; height: auto; }

/* 作者主页 */
.qm-author-hero { display: flex; align-items: center; gap: var(--qm-sp-6); padding: var(--qm-sp-7); margin-bottom: var(--qm-sp-7); }
.qm-author-hero-avatar { flex: none; width: 96px; height: 96px; border-radius: 50%; object-fit: cover; }
.qm-author-hero-main { flex: 1; min-width: 0; }
.qm-author-hero-top { font-size: var(--qm-fs-xl); font-weight: var(--qm-fw-bold); }
.qm-author-hero-bio { margin: var(--qm-sp-3) 0; font-size: var(--qm-fs-sm); line-height: 1.7; color: var(--qm-text-2); }
.qm-author-hero-meta { display: flex; align-items: center; gap: var(--qm-sp-3); flex-wrap: wrap; font-size: var(--qm-fs-xs); color: var(--qm-text-3); }
.qm-author-hero-meta span { display: inline-flex; align-items: center; gap: var(--qm-sp-2); }
.qm-author-hero-acts { flex: none; }
.qm-author-list-head { margin: 0 0 var(--qm-sp-4); }

/* 独立页面 */
.qm-page-single { max-width: 880px; margin: 0 auto; }
.qm-page-article { padding: var(--qm-sp-8); }
.qm-page-cover { border-radius: var(--qm-r-md); overflow: hidden; margin-bottom: var(--qm-sp-6); }
.qm-page-comments { margin-top: var(--qm-sp-6); padding: var(--qm-sp-6); }
.qm-page-links { padding: var(--qm-sp-5) 0 0; justify-content: flex-start; }

/* ---------- 移动端 ---------- */
@media (max-width: 900px) {
  /* 收件箱与对话拆成两屏，返回时列表位置由 JS 记住 */
  .qm-msg-wrap { min-height: 0; }
  .qm-msg-wrap .qm-msg-list { border-right: 0; }
  .qm-msg-wrap.is-chat .qm-msg-list { display: none; }
  .qm-msg-wrap:not(.is-chat) .qm-chat { display: none; }
  .qm-chat-back { display: inline-grid; }
  /* 视口高度减头部，再减去悬浮五按钮占位，输入框不被栏体遮住 */
  .qm-chat-body { min-height: 220px; max-height: calc(100vh - 300px); }
  .qm-msg-wrap.is-chat .qm-chat { min-height: calc(100vh - var(--qm-header-h) - var(--qm-tabbar-h) - var(--qm-tabbar-gap) * 2 - 40px); }
  .qm-msg-items { max-height: none; }
  .qm-msg-item { padding: 12px var(--qm-sp-4); }
  .qm-msg-rules { margin-top: var(--qm-sp-5); }

  .qm-compose-type { gap: var(--qm-sp-2); }
  .qm-compose-type .qm-type-card { padding: var(--qm-sp-4) var(--qm-sp-2); }
  .qm-compose-type .qm-type-card b { font-size: var(--qm-fs-sm); }
  .qm-compose-type .qm-type-card em { font-size: 10px; }
  /* 移动端底栏不放 sticky：body 已预留悬浮栏高度，贴流排版即可 */
  .qm-compose-foot { position: static; flex-wrap: wrap; gap: var(--qm-sp-3); }
  .qm-compose-foot .qm-btn { margin-left: 0; }
  .qm-compose-perm { order: 3; width: 100%; font-size: 11px; }

  /* 评论 / 404 / 搜索 / 作者页 */
  .qm-comment-list .children { padding-left: var(--qm-sp-5); }
  .qm-comment-form .qm-comment-guest { width: 100%; margin-right: 0; }
  .qm-author-hero { flex-wrap: wrap; gap: var(--qm-sp-4); padding: var(--qm-sp-5); }
  .qm-author-hero-avatar { width: 64px; height: 64px; }
  .qm-author-hero-acts { width: 100%; }
  .qm-author-hero-acts .qm-btn { width: 100%; justify-content: center; }
  .qm-404 { padding: var(--qm-sp-9) var(--qm-sp-4) var(--qm-sp-8); }
  .qm-search-hero { padding: var(--qm-sp-5); }
  .qm-page-article { padding: var(--qm-sp-5); }
  .qm-page-comments { padding: var(--qm-sp-4); }
}

/* 旧 style.css 的 .qm-list li span { flex:1 } 会把状态圆点拉满整行，恢复点尺寸 */
.qm-list li .qm-dot { flex: 0 0 auto; width: 7px; height: 7px; }

/* ---------- 主页信息流增强（2.6.8）：横条卡细节 ---------- */
.qm-post-list.is-row .qm-post-thumb { border-radius: 0; }
.qm-post-list.is-row .qm-post { border-radius: var(--qm-r-lg); overflow: hidden; }
.qm-post-list.is-row .qm-post-title { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.qm-post-list.is-row .qm-post-excerpt { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* ---------- 评论小工具（2.6.8） ---------- */
.qm-cmt-list { display: flex; flex-direction: column; gap: var(--qm-sp-4); }
.qm-cmt-item { display: flex; gap: var(--qm-sp-3); align-items: flex-start; }
.qm-cmt-item .qm-avatar-sm { width: 32px; height: 32px; border-radius: 50%; flex: none; }
.qm-cmt-main { min-width: 0; flex: 1; }
.qm-cmt-main b { font-size: var(--qm-fs-sm); }
.qm-cmt-main p { margin: 2px 0; font-size: var(--qm-fs-sm); color: var(--qm-text-2); line-height: 1.6; }
.qm-cmt-src { font-size: var(--qm-fs-xs); color: var(--qm-text-3); text-decoration: none; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.qm-cmt-src:hover { color: var(--qm-primary); }

/* ==========================================================================
 * 2.6.8-f26 视频封面帧选择器（发布页：拖动滑杆挑一帧）
 * ========================================================================*/
.qm-vframe {
  display: flex;
  gap: 14px;
  align-items: stretch;
  margin-top: 10px;
  padding: 12px;
  border-radius: var(--qm-r-md, 12px);
  background: var(--qm-surface-2, #f6f7fa);
  border: 1px solid var(--qm-border, #e3e6ee);
}
.qm-vframe[hidden] { display: none !important; }

.qm-vframe-shot { position: relative; flex: 0 0 auto; width: 108px; }
.qm-vframe-shot canvas {
  display: block;
  width: 108px;
  height: 192px;
  border-radius: 10px;
  background: #000;
}
.qm-vframe-badge {
  position: absolute;
  left: 6px;
  top: 6px;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(0, 0, 0, .58);
  color: #fff;
  font-size: 10px;
  line-height: 1.5;
}

.qm-vframe-side { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.qm-vframe-side input[type="range"] {
  width: 100%;
  height: 24px;
  margin: 2px 0 0;
  accent-color: var(--qm-primary, #6c5ce7);
  cursor: pointer;
}
.qm-vframe-meta { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; font-size: 12px; color: var(--qm-text-2, #5a6070); }
.qm-vframe-meta em { font-style: normal; font-weight: 700; color: var(--qm-text, #16181d); }
.qm-vframe-side .qm-btn-sm { align-self: flex-start; }

.qm-vframe-picked {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-top: 10px;
  padding: 10px;
  border-radius: var(--qm-r-md, 12px);
  background: var(--qm-surface-2, #f6f7fa);
  border: 1px solid var(--qm-border, #e3e6ee);
}
.qm-vframe-picked[hidden] { display: none !important; }
.qm-vframe-picked img {
  width: 64px;
  height: 96px;
  object-fit: cover;
  border-radius: 8px;
  flex: 0 0 auto;
  background: #000;
}
.qm-vframe-picked > div { display: flex; flex-direction: column; gap: 3px; font-size: 12px; min-width: 0; }
.qm-vframe-picked b { font-size: 13px; }
.qm-vframe-picked span { color: var(--qm-text-3, #9aa0ae); }
.qm-vframe-picked .qm-btn-sm { align-self: flex-start; margin-top: 2px; }

@media (max-width: 480px) {
  .qm-vframe { gap: 10px; padding: 10px; }
  .qm-vframe-shot { width: 86px; }
  .qm-vframe-shot canvas { width: 86px; height: 153px; }
  .qm-vframe-side .qm-btn-sm { width: 100%; }
}
