/* cyber-overrides.css — 服务端混编(SSR)首页对 dist「cyber」设计的增量覆盖。
   themes.css 的视频卡是无图设计(渐变 .thumb-pattern + .thumb-theme 文字占位);
   本项目要求封面走真实解密图(apisvc.ImageURL 密文 + cover-decrypt.tpl 客户端解密),
   故在卡片缩略图内叠加真实封面 <img class="thumb-img">,
   覆盖在渐变占位之上、hover 遮罩(.thumb-overlay z3)与播放钮之下。
   纯增量样式,不改 themes.css 本体。 */

/* 卡片真实封面：填满 .thumb，盖住 .thumb-pattern 渐变占位，位于 .thumb-theme(z2)/overlay(z3) 之下 */
.video-card .thumb-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 1;
  background: #14091f url("/static/web/images/placeholder-cover.png?v=2") center / cover no-repeat;
  display: block;
}

/* 有真实封面时，居中主题文字降为左上角小角标，避免压在照片正中 */
.video-card .thumb.has-cover .thumb-theme {
  inset: auto auto 6px 8px;
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 4px;
  background: rgba(0, 0, 0, 0.45);
  color: rgba(236, 231, 245, 0.85);
  text-shadow: none;
  letter-spacing: 0.02em;
  z-index: 4;
}

/* 去掉 rail 小卡 / hero 大图链接的浏览器默认蓝色下划线（themes.css 未对这两类 <a> 复位） */
.hero-right,
.rail .scard {
  text-decoration: none;
  color: inherit;
}

/* hero 大卡真实封面解密前的占位：品牌占位切图 */
.hero-right img {
  background: #14091f url("/static/web/images/placeholder-cover.png?v=2") center / cover no-repeat;
}

/* hero 大标题改用真实视频名称（比设计稿的短主题词长）：再缩小字号，最多 2 行尽量全展示，
   超 2 行才省略；悬浮经 title 原生 tooltip 展示完整标题（见 cyber-home.tpl hover 脚本同步更新 title 属性）。 */
.hero-left .hero-title {
  font-size: clamp(20px, 2vw, 34px);
  letter-spacing: 1px;
  line-height: 1.25;
  margin-bottom: 16px;
  max-width: 100%;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* hero 简介固定高度（最多 2 行，超出省略）：无论内容长短，布局都不抖动。 */
.hero-left .hero-desc {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  min-height: calc(1.8em * 2);
  max-height: calc(1.8em * 2);
  margin-bottom: 18px;
}

/* ===== 登录/注册弹层（cyber 风格，配套 components/cyber/login-modal.tpl + cyber-shell.js）===== */
.cyber-auth[hidden] { display: none; }
.cyber-auth {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
}
.cyber-auth__mask {
  position: absolute;
  inset: 0;
  background: rgba(6, 3, 13, 0.78);
  backdrop-filter: blur(6px);
}
.cyber-auth__panel {
  position: relative;
  width: 360px;
  max-width: calc(100vw - 32px);
  padding: 30px 28px 28px;
  border-radius: 16px;
  background: linear-gradient(160deg, #160c24 0%, #0c0715 100%);
  border: 1px solid rgba(255, 46, 126, 0.25);
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(255, 255, 255, 0.03) inset;
}
.cyber-auth__close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--text-3);
  cursor: pointer;
}
.cyber-auth__close:hover { color: var(--text); background: rgba(255, 255, 255, 0.06); }
.cyber-auth__brand {
  font-family: var(--display);
  font-size: 26px;
  font-weight: 800;
  letter-spacing: 2px;
  margin-bottom: 18px;
  color: var(--text);
}
.cyber-auth__brand span { color: var(--accent); }
.cyber-auth__tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 20px;
}
.cyber-auth__tab {
  flex: 1;
  padding: 9px 0;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: transparent;
  color: var(--text-2);
  font-size: 14px;
  cursor: pointer;
  transition: all 0.2s;
}
.cyber-auth__tab.is-active {
  color: #fff;
  border-color: var(--accent);
  background: rgba(255, 46, 126, 0.14);
}
.cyber-auth__form { display: flex; flex-direction: column; gap: 12px; }
.cyber-auth__confirm[hidden] { display: none; }
.cyber-auth__input {
  width: 100%;
  padding: 11px 14px;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--bg-2);
  color: var(--text);
  font-size: 14px;
  outline: none;
}
.cyber-auth__input::placeholder { color: var(--text-3); }
.cyber-auth__input:focus { border-color: var(--accent); }
.cyber-auth__msg {
  min-height: 18px;
  font-size: 12.5px;
  color: #ff5a7a;
  line-height: 1.4;
}
.cyber-auth__submit {
  margin-top: 4px;
  padding: 12px 0;
  border: none;
  border-radius: 8px;
  background: var(--accent);
  color: #fff;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  transition: filter 0.2s;
}
.cyber-auth__submit:hover { filter: brightness(1.08); }
.cyber-auth__submit:disabled { opacity: 0.6; cursor: default; }
/* BUG #32964: 弹窗底部提示语（登录:「还没账号？立即注册」/ 注册:「已有账号？立即登录」） */
.cyber-auth__alt {
  margin-top: 14px;
  text-align: center;
  font-size: 12.5px;
  color: var(--text-3);
}
.cyber-auth__alt-link {
  background: transparent;
  border: none;
  padding: 0;
  margin-left: 4px;
  font-size: 12.5px;
  color: var(--accent);
  cursor: pointer;
  transition: filter 0.15s;
}
.cyber-auth__alt-link:hover { filter: brightness(1.15); text-decoration: underline; }
/* BUG #32970: iOS Safari 聚焦 font-size<16px 的输入框会自动放大页面（注册弹窗放大、
   登录成功后页面保持放大均源于此）。移动端把弹窗/搜索浮层输入框提到 16px，从源头消除。 */
@media (max-width: 980px) {
  .cyber-auth__input,
  .search-overlay__input { font-size: 16px; }
}
.login-btn.is-logged { max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ===== 登录后：头像 + 下拉菜单（cyber-shell.js applyUser 注入）===== */
.cyber-user { position: relative; flex-shrink: 0; }
.cyber-user__avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: none;
  cursor: pointer;
  display: grid;
  place-items: center;
  overflow: hidden;
  font-family: var(--display);
  font-size: 17px;
  font-weight: 700;
  color: #fff;
  background: linear-gradient(135deg, #9d4edd 0%, #ff2e7e 100%);
  box-shadow: 0 0 0 2px rgba(255, 46, 126, 0.25), 0 2px 10px rgba(157, 78, 221, 0.4);
  transition: box-shadow 0.2s, transform 0.2s;
}
.cyber-user__avatar:hover { transform: translateY(-1px); box-shadow: 0 0 0 2px var(--accent), 0 4px 16px rgba(255, 46, 126, 0.5); }
.cyber-user__avatar img { width: 100%; height: 100%; object-fit: cover; }
.cyber-user__menu {
  position: absolute;
  top: calc(100% + 12px);
  right: 0;
  min-width: 220px;
  padding: 6px;
  border-radius: 14px;
  background: linear-gradient(160deg, #160c24 0%, #0c0715 100%);
  border: 1px solid rgba(255, 46, 126, 0.28);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity 0.18s, transform 0.18s, visibility 0.18s;
  z-index: 1001;
}
.cyber-user.is-open .cyber-user__menu { opacity: 1; visibility: visible; transform: translateY(0); }
.cyber-user__head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 4px;
}
.cyber-user__ava {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  overflow: hidden;
  flex-shrink: 0;
  font-family: var(--display);
  font-weight: 700;
  color: #fff;
  background: linear-gradient(135deg, #9d4edd 0%, #ff2e7e 100%);
}
.cyber-user__ava img { width: 100%; height: 100%; object-fit: cover; }
.cyber-user__name { font-size: 16px; font-weight: 600; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cyber-user__item {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 11px 14px;
  border: none;
  background: transparent;
  border-radius: 8px;
  color: var(--text-2);
  font-size: 14px;
  text-decoration: none;
  cursor: pointer;
  text-align: left;
}
.cyber-user__item svg { color: var(--text-3); flex-shrink: 0; }
.cyber-user__item:hover { background: rgba(255, 46, 126, 0.12); color: #fff; }
.cyber-user__item:hover svg { color: var(--accent); }

/* ===== 顶栏自适应修正 =====
   1) 搜索框图标：themes.css 用 search.png 背景图 + 透明字（我们未迁该图 → 图标空白）。
      改用 ⌕ 字形上色显示，不依赖缺失图片。
   2) 真实分类（12 项）比设计稿（8 项）多，固定 360px 搜索框会把搜索框/登录按钮挤出视口。
      收窄搜索框 + 压缩导航间距/内距，保证搜索与登录在 ≥1280 桌面宽度始终完整可见。 */
.search-box .search-icon {
  background: none;
  color: var(--text-2);
  font-size: 19px;
  left: 13px;
  width: auto;
  height: auto;
}
.search-box .search-input { padding-left: 42px; }
/* 移动端右上角搜索按钮：themes.css 用 mobile-search.png 背景图 + 透明字(图未迁→按钮空白)。
   改用 ⌕ 字形上色显示，不依赖缺失图片。 */
/* 移动端顶部左右按钮：横向「图标 + 文字」，深色圆角背景 */
@media (max-width: 980px) {
  .mobile-menu-btn,
  .mobile-search-btn {
    display: inline-flex; flex-direction: row; align-items: center; justify-content: center;
    gap: 6px; width: auto; height: auto; padding: 7px 12px;
    background: rgba(255, 255, 255, .08); border-radius: 10px;
    color: var(--text); font-size: 0; line-height: 1;
  }
  .mobile-menu-btn .mm-ico {
    display: flex; flex-direction: column; justify-content: space-between;
    width: 18px; height: 13px;
  }
  .mobile-search-btn .ms-ico {
    width: 16px; height: 16px; color: var(--text); fill: currentColor;
  }
  .nav-mb-label { font-size: 13px; line-height: 1; font-weight: 500; color: var(--text); }
}
/* 复制成功提示 toast（cyber-shell.js 复制地址用） */
.cyber-toast {
  position: fixed;
  left: 50%;
  bottom: 40px;
  transform: translate(-50%, 16px);
  z-index: 2000;
  max-width: 80vw;
  padding: 10px 18px;
  border-radius: 10px;
  background: rgba(22, 12, 36, 0.96);
  border: 1px solid rgba(255, 46, 126, 0.4);
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
  color: var(--text);
  font-size: 13.5px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s, transform 0.2s;
}
.cyber-toast.is-show { opacity: 1; transform: translate(-50%, 0); }

/* 移动抽屉登录态用户块（cyber-shell.js applyUser 注入到 .mobile-sidebar-footer） */
.mobile-user { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.mobile-user__ava {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  overflow: hidden;
  flex-shrink: 0;
  font-family: var(--display);
  font-size: 18px;
  font-weight: 700;
  color: #fff;
  background: linear-gradient(135deg, #9d4edd 0%, #ff2e7e 100%);
}
.mobile-user__ava img { width: 100%; height: 100%; object-fit: cover; }
.mobile-user__name { font-size: 16px; font-weight: 600; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mobile-user__actions { display: flex; gap: 10px; }
.mobile-user__btn {
  flex: 1;
  padding: 11px 0;
  text-align: center;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: transparent;
  color: var(--text-2);
  font-size: 14px;
  text-decoration: none;
  cursor: pointer;
}
.mobile-user__btn:active { background: rgba(255, 46, 126, 0.08); border-color: var(--accent); color: var(--accent); }

/* 折叠组表头用 <button>，需清除浏览器默认外观(白底/边框)，铺满整行。 */
.mobile-cat-header {
  width: 100%;
  background: transparent;
  border: none;
  -webkit-appearance: none;
  appearance: none;
  text-align: left;
  font: inherit;
  color: inherit;
}

.nav-row-1 { gap: 14px; }
.nav-row-1 .search-box { flex: 0 1 clamp(180px, 17vw, 270px); }
/* 导航紧凑左排（产品 7/14：原 flex:1+space-evenly 会把菜单拉满全宽，显得太分散）。
   不拉伸、左对齐、菜单项间留小 gap；搜索框仍 margin-left:auto 靠右。 */
.nav-row-1 .nav-links-flat { min-width: 0; flex: 0 1 auto; justify-content: flex-start; gap: 2px; }
.nav-cat-trigger, .nav-flat-link {
  padding-left: clamp(6px, 0.7vw, 12px);
  padding-right: clamp(6px, 0.7vw, 12px);
  white-space: nowrap;
}

/* ===== cyber 视频分类列表页(layouts/cyber-category) 增量覆盖 =====
   真 SSR 用 <a> 渲染排序 chip / 分页按钮(list.js 原本是 <button>)，去链接默认下划线；
   禁用态分页用 .is-disabled(原 <button:disabled> 选择器对 <span> 不生效)；
   移动端走路径式分页 → 保持 .pagination 可见(list.css ≤640 默认隐藏并改 load-more，本页不渲染 load-more)。 */
a.sort-chip, a.page-btn, .breadcrumb a { text-decoration: none; }
.page-btn.is-disabled { opacity: 0.35; cursor: not-allowed; }
@media (max-width: 640px) {
  .pagination { display: flex; }
}

/* ===== 视频详情页 点赞/收藏/关注 激活态 =====
   BUG #33106: 对齐 UI 设计 —— 激活态胶囊保持暗底(--bg-card)暗边(--border)、计数仍 --text-2，
   仅图标变色填充：点赞=主题粉(--accent)，收藏=收藏蓝 #0095FF(设计稿专用色)；
   关注 is-followed 用弱化态表示「已关注」(区别于未关注的实底粉 CTA)。 */
.vd-action-c.is-liked svg { color: var(--accent); fill: var(--accent); }
.vd-action-c.is-favorited svg { color: #0095ff; fill: #0095ff; }
.follow.is-followed { border-color: var(--border-2); background: transparent; color: var(--text-3); }

/* ===== 视频详情页 评论「加载更多」按钮 ===== */
.vd-load-more {
  display: block;
  margin: 22px auto 8px;
  padding: 10px 30px;
  background: transparent;
  border: 1px solid var(--accent-subtle);
  color: var(--accent);
  font-family: var(--mono, monospace);
  font-size: 12px;
  letter-spacing: 0.15em;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.2s;
}
.vd-load-more:hover { background: var(--accent-bg); }

/* ===== cyber 标签首页(/tags)：SSR 全量渲染各时间窗/维度，JS 仅切换 [hidden] ===== */
.board-wrap[hidden],
.m-board-list[hidden] { display: none !important; }
.board-empty { padding: 22px 14px; text-align: center; color: var(--text-3); font-size: 13px; letter-spacing: .05em; }

/* ===== cyber 社区 feed：行优先瀑布流(CSS grid + JS 行跨度)，覆盖 community.css 的 columns(列优先) ===== */
.cm-feed {
  -moz-columns: auto !important;
       columns: auto !important;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-auto-rows: 8px;          /* JS 按卡片实际高度设 grid-row-end: span N */
  gap: 16px;
  align-items: start;
}
.cm-feed > .cm-post-card.feed { margin: 0; }   /* 取消 columns 模式下的下边距，交给 grid gap */
.cm-feed-empty { grid-column: 1 / -1; }
@media (max-width: 980px) { .cm-feed { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .cm-feed { grid-template-columns: 1fr; } }

/* ===== cyber 帖子详情正文(.article-body)：约束图片/视频宽度，防大图溢出贴右；HLS 视频显示 ===== */
/* 正文图片统一与正文同宽（产品 7/14）：width:100% 撑满正文内容宽，高度按原图比例，
   小图放大、大图缩小，与视频宽度一致；块级居中（产品 7/8）。 */
.article-body img {
  width: 100%;
  height: auto;
  display: block;
  border-radius: 8px;
  margin: 12px auto;
}
.article-body video {
  display: block;
  width: 100%;
  border-radius: 8px;
  margin: 14px 0;
  background: #000;
}
/* 正文视频播放器挂载点(plugins/player 注入 xgplayer) */
.article-body .post-video-player {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: 70vh;
  margin: 14px 0;
  border-radius: 8px;
  overflow: hidden;
  background: #000;
}
/* 全屏播放占满整屏（产品 7/14，对齐玩物社区）：xgplayer 全屏元素就是挂载点本身，
   两个问题叠加导致不满屏——① 上面的 max-height/aspect-ratio/圆角 在全屏下仍生效；
   ② 本规则的 position:relative 在加载顺序上压过了 xgplayer.css 内置的
   .xgplayer-is-(css)fullscreen{position:fixed;...}。故全屏态显式写全 fixed 满屏布局，
   原生全屏(:fullscreen)与 xgplayer 网页全屏(.xgplayer-is-cssfullscreen)同修。 */
.article-body .post-video-player:fullscreen,
.article-body .post-video-player.xgplayer-is-fullscreen,
.article-body .post-video-player.xgplayer-is-cssfullscreen {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  max-height: none;
  aspect-ratio: auto;
  border-radius: 0;
  margin: 0;
  z-index: 9999;
}
/* 播放器内部 <video> 尺寸交还 xgplayer 管理：上面 .article-body video 的
   max-height:70vh/margin/圆角 是给裸 video 的，命中播放器内 video 会把全屏画面压成 70vh。 */
.article-body .post-video-player video {
  max-height: none;
  margin: 0;
  border-radius: 0;
}
.article-body iframe { max-width: 100%; }

/* ===== 小说书卡真实封面（cyber 小说首页 layouts/cyber-novel）=====
   themes.css 的 .book-cover 为无图抽象封面(渐变 ::before z0 + 纹理 ::after z0)。
   本项目封面走真实解密图：在渐变之上铺真图(z1)，蒙层 .bc-fade(z3)/标题 overlay(z4) 仍在其上，
   保证封面内标题/简介可读；封面未解密(占位 gif)时显示渐变兜底。纯增量，不改 themes.css。 */
.book-cover .cover-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 1;
  background: transparent;
  display: block;
}

/* ===== 小说分类/全部页页头（cyber layouts/cyber-novel-list）=====
   设计稿分类页主区无大 hero，仅 filter-card 起手；这里补一个轻量页头：
   分类名 + 描述，给当前分类上下文（纯增量，不改 themes.css/novel.css）。 */
.novel-main .nc-head { margin: 4px 0 18px; }
.novel-main .nc-head-title {
  margin: 0;
  font-family: var(--display);
  font-size: clamp(22px, 3vw, 30px);
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--text);
}
.novel-main .nc-head-desc {
  margin: 8px 0 0;
  font-size: 13px;
  line-height: 1.6;
  color: var(--text-3);
  max-width: 760px;
}

/* nc-* 交互元素在设计稿是 <button>(JS 驱动)，本项目改 <a>(分类/排序/分页走 SSR 路径)，
   去掉浏览器对链接的默认下划线（cyber 主题下 <a> 默认带下划线）。 */
.nc-type-btn,
.nc-sort-opt,
.nc-sort-btn,
.nc-pg-btn { text-decoration: none; }

/* 帖子详情作者卡名字链接(→ /a/{uid}/)：去掉 cyber 主题 <a> 默认下划线，hover 转 accent */
.author-card .author-name-link { color: inherit; text-decoration: none; transition: color 0.15s; }
.author-card .author-name-link:hover { color: var(--accent); }

/* 作者详情页类型切换 tab / 分页在设计稿是 <button>(JS 驱动)，本项目改 <a>(SSR 路径)，去掉默认下划线 */
.author-type-btn,
.author-pg-btn { text-decoration: none; }

/* ===== 全站 cyber 404 页(layouts/cyber-404)===== */
.cyber-404 {
  max-width: 720px;
  margin: 64px auto;
  padding: 60px clamp(16px, 4vw, 40px);
  text-align: center;
  min-height: calc(100vh - 360px);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.cyber-404__code {
  font-family: var(--mono);
  font-size: clamp(72px, 12vw, 110px);
  font-weight: 800;
  line-height: 1;
  background: linear-gradient(135deg, var(--accent), var(--accent-2));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  letter-spacing: 0.05em;
  margin-bottom: 18px;
}
.cyber-404__title { font-size: clamp(20px, 3vw, 26px); font-weight: 700; color: var(--text); margin: 0 0 10px; }
.cyber-404__sub { font-size: 14px; line-height: 1.7; color: var(--text-3); margin: 0 0 30px; }
.cyber-404__actions { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; }
.cyber-404__btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 12px 26px; border-radius: 8px;
  font-size: 14px; font-weight: 600; text-decoration: none; cursor: pointer;
  transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s, color 0.2s;
}
.cyber-404__btn--solid { background: linear-gradient(135deg, var(--accent), #c026d3); color: #fff; box-shadow: 0 6px 18px rgba(255, 46, 126, 0.3); border: none; }
.cyber-404__btn--solid:hover { transform: translateY(-1px); box-shadow: 0 10px 24px rgba(255, 46, 126, 0.45); }
.cyber-404__btn--ghost { background: rgba(255, 255, 255, 0.04); border: 1px solid var(--border-2); color: var(--text-2); }
.cyber-404__btn--ghost:hover { border-color: var(--accent); color: var(--accent); }
/* ── 无作者变体(BUG #33134，对齐 UI「找不到该作者」)：人形剪影 + 粉描边 404 胶囊 ── */
.cyber-404__figure { display: block; margin: 0 auto 26px; }
.cyber-404__chip {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 4px 18px; margin-bottom: 22px;
  border: 1px solid var(--accent); border-radius: 999px;
  font-family: var(--mono); font-size: 15px; font-weight: 500;
  color: var(--accent); letter-spacing: 0.06em;
}

/* ===== 法务/静态单页正文(layouts/cyber-legal)：sq_setting 正文用 .legal-* 类，
   原 legal-content.css 作用域是 body.theme-app，cyber 页用 data-theme 不命中，
   故在 .cyber-legal 下用 cyber 调色重写一份(布局沿用 860 宽容器)。 ===== */
.cyber-legal { max-width: 880px; margin: 0 auto; padding: 40px clamp(16px, 4vw, 24px) 72px; }
.cyber-legal .page-legal { background: transparent; min-height: 0; }
.cyber-legal .legal-wrap { max-width: 100%; margin: 0; padding: 0; }
.cyber-legal .legal-title {
  margin: 0 0 6px; color: var(--text);
  font-family: "Noto Serif SC", Georgia, serif;
  font-size: clamp(24px, 4vw, 30px); line-height: 1.35; font-weight: 700;
}
.cyber-legal .legal-title small,
.cyber-legal .legal-meta,
.cyber-legal .legal-sec h2 small {
  color: var(--text-3); font-family: var(--mono); font-size: 12.5px; line-height: 1.5;
  letter-spacing: 0.04em; font-weight: 400;
}
.cyber-legal .legal-title small { display: block; margin-top: 4px; }
.cyber-legal .legal-meta { margin: 0 0 28px; padding-bottom: 18px; border-bottom: 1px solid var(--border-2); }
.cyber-legal .legal-sec { margin: 0 0 26px; }
.cyber-legal .legal-sec h2 { margin: 0 0 6px; color: var(--text); font-size: 17px; line-height: 1.45; font-weight: 600; }
.cyber-legal .legal-sec h2 small { display: block; margin: 2px 0 8px; }
.cyber-legal .legal-sec p,
.cyber-legal .legal-sec li { color: var(--text-2); font-size: 14px; line-height: 1.85; margin: 0 0 9px; }
.cyber-legal .legal-sec p.en { color: var(--text-3); font-size: 13px; }
.cyber-legal .legal-sec ul { margin: 0 0 9px; padding-left: 20px; }
.cyber-legal .legal-sec strong { color: var(--text); font-weight: 600; }
.cyber-legal .legal-link { color: var(--accent); text-decoration: none; }
.cyber-legal .legal-link:hover { text-decoration: underline; }

/* 个人中心(layouts/cyber-user)：tab/收藏筛选/关注卡/评论目标 等设计稿是 <button>，
   本项目改 <a>(SSR 链接)，统一去掉 cyber 主题 <a> 默认下划线。 */
.user-main a { text-decoration: none; }

/* 搜索结果页(layouts/cyber-search)：类型 tab/分页/空态按钮 设计稿是 <button>，本项目改 <a>，去默认下划线 */
.search-page a { text-decoration: none; }

/* ── BUG #33005: 回家方法页图标对齐 UI 设计 ──
   区块头 + 联系我们四行图标全部换为 Figma 导出的 @2x PNG 素材
   （自带圆角方块底与霓虹光效，/static/web/images/transfer/gh-*.png），
   结构沿用 contact.css 的 ct-* 布局。 */
.ct-icon-img { display: block; flex-shrink: 0; }
.ct-icon-img--head { width: 38px; height: 38px; border-radius: 9px; }
.ct-icon-img--contact { width: 44px; height: 44px; border-radius: 10px; }

/* BUG #33012: 首页 hero 播放量/时长 meta 行（.hero-views 字号/颜色沿用 themes.css） */
.hero-meta { display: flex; align-items: center; gap: 14px; margin-top: 10px; }

/* ── BUG #32956 + #32975: 移动抽屉「登录/注册」常驻可见 & 紧跟列表 ──
   themes.css 让整个 .categories-sidebar 滚动且 footer margin-top:auto 钉底：
   分类一多 footer 被推出视口(#32956)、分类少时列表和按钮之间又留大片空白(#32975)。
   改为：抽屉本体不滚，分类列表区按内容自适应高度(过长时内部滚动)，
   footer 以固定小间距紧跟列表 —— 两种场景下都无需滑动即可见。 */
.categories-sidebar { overflow-y: hidden; }
/* BUG #33280: 部分安卓 Chrome 不支持 dvh → 回退 100vh(含地址栏)比可视区高，
   贴底的「登录/注册」被推出屏幕外。改钉顶+钉底、高度自动：fixed 元素 bottom:0
   在所有浏览器都严格等于可视区底部，footer 恒可见。 */
.categories-sidebar { height: auto; top: 0; bottom: 0; }
.mobile-main-nav {
  flex: 0 1 auto;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.mobile-sidebar-footer { margin-top: 12px; }

/* ── BUG #33075: H5 首页 hero 轮播与「近期上新」楼层间距太窄 ──
   themes.css 里 .m-hero-carousel 仅 padding-bottom:4px、首个楼层又无上边距。
   对齐 Figma(H5 首页 750 稿)：hero 卡底 y=479 → 内容区 y=549，间距 70px@2x = 35px。 */
@media (max-width: 760px) {
  .m-hero-carousel { padding-bottom: 0; margin-bottom: 35px; }
}

/* ── BUG #33115: 安卓 H5 视频详情「相关推荐/评论/最新地址」tab 文字换行 ──
   桌面 padding(14px 28px)+17px 标签在窄屏挤爆 → 标签逐字折行。
   收窄 padding + 标签禁断行，极窄屏由 nav 横向滚动兜底。 */
@media (max-width: 760px) {
  .vd-anchor-nav { overflow-x: auto; scrollbar-width: none; }
  .vd-anchor-nav::-webkit-scrollbar { display: none; }
  .vd-anav-tab { padding: 12px 16px 10px; flex-shrink: 0; }
  .vd-anav-label { white-space: nowrap; font-size: 15px; }
}

/* ── BUG #33125: iOS Safari 聚焦评论输入框整页自动放大 ──
   iOS 对 font-size<16px 的输入控件聚焦时自动 zoom(同 themes.css 搜索浮层 16px 的修法)。 */
@media (max-width: 760px) {
  .vd-composer-input { font-size: 16px; }
}

/* ── BUG #33434: 全局视频卡封面内不再叠标题 ──
   .thumb-theme 本是无封面/解密前的占位文案，有封面时仍显示会与图和卡下标题重复；
   有封面(has-cover)即隐藏，无封面保留占位。 */
.thumb.has-cover .thumb-theme { display: none; }

/* ── BUG #33349: H5 小说卡标题叠加在封面内底部（对齐 UI，与 PC 一致）──
   themes.css ≤768px 原规则是「隐藏封面内蒙层+标题、显示卡下标题行」(旧设计)，这里反转；
   .shelf-book 选择器加权覆盖 novel.css 的书架卡 H5 规则。 */
@media (max-width: 768px) {
  .bc-fade,
  .bc-title-overlay { display: block; }
  .book-info,
  .shelf-book .book-info { display: none; }
  /* H5 窄卡(≈140-180px)标题字号/内边距缩小；书架卡沿用 novel.css 的 18px 内距 */
  .bc-title-overlay { font-size: 13px; left: 10px; right: 10px; }
  .shelf-book .bc-title-overlay { font-size: 14px; left: 12px; right: 12px; }
  /* H5 无 hover，简介蒙层保持隐藏 */
  .bc-synopsis-overlay { display: none; }
}

/* ── 首页合集楼层固定展示 8 个（产品 7/14）──
   后端每楼层仍取 16 条(与合集详情页共用 collection:cards 缓存, 参数不能改)，
   展示层恒裁到前 8 个；窄屏列数减少(themes.css: 默认4列/≤1280 3列/≤640 2列)时
   行数自然增加，不再按断点减少展示数量。 */
.floor .video-grid .video-card:nth-child(n + 9) { display: none; }

/* ── 帖子首页瀑布流: 封面拉满比例框 ──
   community.css 的 .post-cover 用 aspect-ratio 定框但 img 只有 width:100%,
   横图落进竖版(2/3)卡时高度不足 → 下方大片留白; 拉满高度由 object-fit:cover 裁切。 */
.cm-post-card.feed .post-cover img { height: 100%; }

/* ── 视频卡 hover 预览(与旧主题 modules/video-card-preview.js 同一套状态类) ──
   <video.card-preview-video> 由预览模块播放, 盖在封面之上、遮罩/播放钮之下;
   加载中扫光 + 播放中显示视频并隐藏封面占位。移动端(≤768px 无 hover)整体隐藏。 */
.video-card .card-preview-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 2;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s ease;
  background: transparent;
}
.video-card.is-previewing .card-preview-video { opacity: 1; }
.video-card.is-previewing .thumb-play,
.video-card.is-previewing .thumb-theme { opacity: 0; }
.video-card .thumb::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 3;
  opacity: 0;
  pointer-events: none;
  background: linear-gradient(100deg, transparent 30%, rgba(255, 255, 255, 0.12) 50%, transparent 70%);
}
.video-card.is-preview-loading .thumb::before {
  opacity: 1;
  animation: cyber-preview-sweep 1.1s ease-in-out infinite;
}
@keyframes cyber-preview-sweep {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}
@media (max-width: 768px) {
  .video-card .card-preview-video { display: none; }
}

/* ── 搜索结果页面包屑左对齐 ──
   themes.css .breadcrumb 自带 max-width+margin:auto+4vw padding(详情页顶格用),
   叠加 .search-page 容器自身 padding 导致整条右移; 搜索页内清掉, 与 h1 左对齐。 */
.search-page .breadcrumb {
  max-width: none;
  margin: 0 0 6px;
  padding: 0;
}

/* ── 分页手动跳页（pager.tpl .pager-jump）──
   pager.css(编译产物)给 .dx-pager 固定 width/height，容不下新增的跳页输入项；
   放开为自适应，跳页输入框风格对齐现有 pager-item。 */
.dx-pager { width: auto; max-width: 100%; height: auto; }
.dx-pager .pager-jump { display: inline-flex; align-items: center; gap: 6px; }
.dx-pager .pager-jump-input {
  width: 56px; height: 34px;
  background: #1c1c1d; border: 1px solid #2a2826; border-radius: 2px;
  color: #a8a39a; font-size: 12px; text-align: center;
  -moz-appearance: textfield; appearance: textfield;
}
.dx-pager .pager-jump-input::-webkit-outer-spin-button,
.dx-pager .pager-jump-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.dx-pager .pager-jump-input:focus { outline: none; border-color: rgba(224,38,56,.8); color: #fff; }
.dx-pager .pager-jump-btn { width: 52px; cursor: pointer; }
.dx-pager .pager-jump-btn:hover { border-color: rgba(224,38,56,.8); color: #fff; }
@media (max-width: 768px) {
  .dx-pager .pager-jump-input { width: 44px; height: 26px; font-size: 11px; }
  .dx-pager .pager-jump-btn { width: 44px; }
}

/* ── H5 抽屉分类组图标（浏览分类 3 个一级分类补图标，对齐下方平铺项）── */
.mobile-cat-header .nav-icon { margin-right: 10px; }
.mobile-cat-header:hover .nav-icon { color: var(--accent); }

/* ── 跳页输入框（cyber 自绘分页布局共用，partials/pager-jump 块级版本）── */
.pager-jump--block {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin: 14px 0 4px;
}
.pager-jump--block .pager-jump-input {
  width: 64px; height: 34px;
  background: var(--bg-2, #16121f);
  border: 1px solid var(--border, rgba(255,255,255,.12));
  border-radius: 6px;
  color: var(--text-2, #a8a3b5);
  font-size: 13px; text-align: center;
  -moz-appearance: textfield; appearance: textfield;
}
.pager-jump--block .pager-jump-input::-webkit-outer-spin-button,
.pager-jump--block .pager-jump-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.pager-jump--block .pager-jump-input:focus { outline: none; border-color: var(--accent, #ff2e7e); color: var(--text, #fff); }
.pager-jump--block .pager-jump-btn {
  height: 34px; padding: 0 14px;
  background: var(--bg-2, #16121f);
  border: 1px solid var(--border, rgba(255,255,255,.12));
  border-radius: 6px;
  color: var(--text-2, #a8a3b5);
  font-size: 13px; cursor: pointer;
}
.pager-jump--block .pager-jump-btn:hover { border-color: var(--accent, #ff2e7e); color: var(--text, #fff); }

/* ==================== 产品优化 7/9 批次（详见 Google 需求文档「91porsm产品优化需求7/9」tab） ==================== */

/* ---- 页码只展示一排（web/H5 全站分页：分类/合集/社区/小说/搜索）+ 手动跳页同排展示 ---- */
.pagination,
.cm-pager,
.nc-pagination {
  flex-wrap: nowrap !important;
  overflow-x: auto;
  max-width: 100%;
  scrollbar-width: none;
}
.pagination::-webkit-scrollbar,
.cm-pager::-webkit-scrollbar,
.nc-pagination::-webkit-scrollbar { display: none; }
.pager-jump--block { display: inline-flex; align-items: center; gap: 6px; justify-content: center; margin: 0 0 0 6px; flex: 0 0 auto; }
.pager-jump--block .pager-jump-input {
  width: 72px; padding: 7px 10px; background: var(--input-bg, rgba(255,255,255,.04));
  border: 1px solid var(--border-2, rgba(255,255,255,.12)); color: var(--text); font-size: 12.5px; outline: none;
}
.pager-jump--block .pager-jump-btn {
  padding: 7px 16px; background: transparent; border: 1px solid var(--border-2, rgba(255,255,255,.12));
  color: var(--text-2); font-size: 12.5px; cursor: pointer; transition: all .2s;
}
.pager-jump--block .pager-jump-btn:hover { color: var(--accent); border-color: var(--accent); }

/* ---- 顶部导航视觉紧凑 ---- */
.nav-row-1 { padding-top: 8px; padding-bottom: 8px; gap: 16px; }
.brand { font-size: 20px; }
.nav-cat-trigger, .nav-flat-link { padding-top: 6px; padding-bottom: 6px; }

/* ---- 首页 hero 标签可点击（a.tag 替代 span.tag） ---- */
.hero-tags a.tag { text-decoration: none; cursor: pointer; }
.hero-tags a.tag:hover { color: var(--accent); border-color: var(--accent); }

/* ---- 视频详情：简介固定展示（无按钮交互），标签在简介下方 ---- */
.vd-synopsis-inline.is-open { display: block; margin-top: 10px; }
/* 简介标题中文化 + 字体加大纯白（产品 7/14）：覆盖 video-detail.css 的 10px mono 灰字 */
.vd-synopsis-inline .label { font-family: inherit; font-size: 15px; font-weight: 600; color: #fff; letter-spacing: .04em; }
.vd-synopsis-inline p { font-size: 14px; color: #fff; }
.vd-tags-row--lib { margin-top: 10px; }

/* ---- 帖子详情：关键字展示（#词），标签不带 # ---- */
/* 容器宽度/内边距对齐正文 .article-body(1080px/28px)，保证与文章内容左对齐（产品 7/14） */
.article-keywords {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  margin: 18px auto 0; max-width: 1080px; padding: 0 28px;
  color: var(--text-2); font-size: 13px;
}
.article-keywords-label { color: var(--text-3); }
.article-keyword { color: var(--accent); }

/* ---- 404 相关内容入口 ---- */
.nf-explore { margin-top: 28px; width: min(640px, 92vw); }
.nf-search { display: flex; gap: 8px; }
.nf-search-input {
  flex: 1; padding: 10px 14px; background: var(--input-bg, rgba(255,255,255,.04));
  border: 1px solid var(--border-2, rgba(255,255,255,.12)); color: var(--text); font-size: 13px; outline: none;
}
.nf-search-input:focus { border-color: var(--accent); }
.nf-search-btn {
  padding: 10px 22px; background: var(--accent); color: #fff; border: none; cursor: pointer; font-size: 13px;
}
.nf-cates { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 14px; justify-content: center; }
.nf-cates-label { color: var(--text-3); font-size: 12px; }
.nf-cate-chip {
  padding: 5px 12px; border: 1px solid var(--border-2, rgba(255,255,255,.12));
  color: var(--text-2); font-size: 12px; text-decoration: none; border-radius: 999px; transition: all .2s;
}
.nf-cate-chip:hover { color: var(--accent); border-color: var(--accent); }
.nf-rec { max-width: 1280px; margin: 12px auto 40px; padding: 0 20px; }

/* ---- 搜索无结果推荐 ---- */
.search-rec { margin-top: 8px; }

/* ---- 浏览记录页 ---- */
.rec-clear-btn {
  padding: 8px 18px; background: transparent; border: 1px solid var(--border-2, rgba(255,255,255,.12));
  color: var(--text-2); font-size: 12.5px; cursor: pointer; transition: all .2s;
}
.rec-clear-btn:hover { color: var(--accent); border-color: var(--accent); }
.rec-time { margin: 4px 0 0; color: var(--text-3); font-size: 11.5px; }
.records-page .list-grid { min-height: 120px; }

/* ---- 全站悬浮按钮：回到顶部 + 浏览记录（参考玩物社区） ---- */
.sm-float-btns {
  position: fixed; right: 18px; bottom: 84px; z-index: 210;
  display: flex; flex-direction: column; gap: 10px;
}
.sm-float-btn {
  display: flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: 50%;
  background: var(--accent, #ff2e7e); color: #fff; border: none; cursor: pointer;
  box-shadow: 0 4px 16px rgba(255, 46, 126, .4); text-decoration: none; transition: transform .2s, opacity .2s;
}
.sm-float-btn:hover { transform: translateY(-2px); }
.sm-float-top { opacity: 0; pointer-events: none; }
.sm-float-top.is-visible { opacity: 1; pointer-events: auto; }

/* ---- H5 添加主屏幕引导条 ---- */
.sm-a2hs-bar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 300;
  background: #111; border-top: 1px solid var(--border, rgba(255,255,255,.1));
  padding: 8px 12px calc(8px + env(safe-area-inset-bottom, 0px)); font-size: 13px; color: var(--text);
}
.sm-a2hs-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.sm-a2hs-check { display: flex; align-items: center; gap: 6px; color: var(--text-3); font-size: 11.5px; }
.sm-a2hs-main { display: flex; align-items: center; gap: 10px; }
.sm-a2hs-ico { flex: 0 0 auto; width: 43px; height: 43px; object-fit: contain; border-radius: 6px; align-self: center; }
.sm-a2hs-text { flex: 1; font-weight: 600; }
.sm-a2hs-add {
  display: inline-flex; align-items: center; justify-content: center; align-self: center;
  padding: 6px 18px; border-radius: 999px; background: var(--accent, #ff2e7e); color: #fff; border: none; font-size: 13px; line-height: 1;
}
.sm-a2hs-close { flex: 0 0 auto; background: none; border: none; color: var(--text-3); font-size: 15px; line-height: 1; padding: 4px; }
.sm-a2hs-tip-mask {
  position: fixed; inset: 0; z-index: 310; background: rgba(0,0,0,.65);
  display: flex; align-items: center; justify-content: center;
}
.sm-a2hs-tip {
  width: min(320px, 86vw); background: #1a1a20; border: 1px solid var(--border-2, rgba(255,255,255,.12));
  border-radius: 12px; padding: 20px; text-align: center;
}
.sm-a2hs-tip h4 { margin: 0 0 10px; color: var(--text); }
.sm-a2hs-tip p { margin: 0 0 16px; color: var(--text-2); font-size: 13px; line-height: 1.7; }
.sm-a2hs-tip button { padding: 8px 26px; border-radius: 999px; background: var(--accent, #ff2e7e); color: #fff; border: none; }

/* ---- 回家办法页：推荐内容入口按钮网格 ---- */
.ct-recommend-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.ct-recommend-btn {
  display: flex; align-items: center; justify-content: center; padding: 12px 8px;
  background: rgba(255,255,255,.03); border: 1px solid var(--border-2, rgba(255,255,255,.12));
  color: var(--text-2); font-size: 13px; text-decoration: none; border-radius: 8px; transition: all .2s;
}
.ct-recommend-btn:hover { color: var(--accent); border-color: var(--accent); }
@media (max-width: 760px) { .ct-recommend-grid { grid-template-columns: repeat(2, 1fr); } }

/* ---- 小说首页：空分类楼层占位 ---- */
.book-hscroll-empty { padding: 28px 48px; width: 100%; text-align: center; color: var(--text-3); font-size: 13px; }

/* ---- H5 字体调优 + 线路链接展示到 H5 底部 ---- */
@media (max-width: 980px) {
  /* 线路链接（官方入口/最新地址/永久地址发布页）H5 也展示（themes.css 原为 display:none） */
  .footer-addr-block { display: block !important; margin-top: 12px; }
  /* 品牌块整体左对齐（产品 7/14：tagline「91PornSM · …」左对齐，覆盖 themes.css 的居中） */
  .footer-brand { text-align: left; }
  .footer-tagline { margin-left: 0; margin-right: 0; }
}
@media (max-width: 640px) {
  /* 帮助/政策/防失联手风琴放上面、品牌+线路块放下面（产品 7/14 调换顺序）。
     themes.css 此档为 display:block(DOM 序=品牌在前)，改 flex+order 交换视觉顺序 */
  .footer-inner { display: flex !important; flex-direction: column; }
  .footer-brand {
    order: 2;
    border-bottom: none !important;
    border-top: 1px solid var(--border);
    padding: 16px 0 0 !important;
    margin: 4px 0 0 !important;
  }
  .footer-acc { order: 1; }
}
@media (max-width: 760px) {
  /* 视频详情观看次数/时间行字体加大（原样式过小看不清） */
  .vd-meta-line { font-size: 14px !important; color: var(--text-2) !important; }
  /* 首页楼层「查看更多」字体加大 */
  .floor-more { font-size: 14px !important; font-weight: 600; }
  /* 悬浮按钮别压到 H5 底部 tab/footer */
  .sm-float-btns { right: 12px; bottom: 96px; }
  .sm-float-btn { width: 40px; height: 40px; }
}

/* ---- 搜索结果页：搜索词下方介绍（产品 7/15，文案后台可配 web_search_intro_tpl） ---- */
.search-summary { flex-wrap: wrap; } /* search.css 为 flex 行布局，介绍需换行占满整行 */
/* 标题改整句文案(您正在搜索“X”相关的…)：整句常规色，仅搜索词 <em> 走强调色 */
.search-summary__query { color: var(--text); font-size: 22px; }
.search-summary__query em { font-style: normal; color: var(--accent); }
.search-summary__intro {
  /* min-width:100% 强制独占一行(flex 断行基准取 min-width，max-width 会被钳回同行) */
  min-width: 100%;
  margin: 10px 0 0;
  font-size: 13px;
  line-height: 1.7;
  color: var(--text-2);
}
@media (max-width: 760px) { .search-summary__intro { font-size: 12.5px; } }

/* ---- 首页可见 H1（产品 7/9 确认版：文案后台可配 web_home_h1） ---- */
.home-h1-row { padding: 44px 0 44px; }
.home-h1 {
  margin: 0; font-size: 20px; font-weight: 700; letter-spacing: .02em; color: var(--text);
  padding-left: 12px; border-left: 3px solid var(--accent, #ff2e7e);
}
@media (max-width: 760px) { .home-h1 { font-size: 16px; } }

/* ---- H5 抽屉分类图标：玩物社区同款雪碧图（wanwu-icons.svg，扁平白灰风格，产品 7/13） ---- */
.mobile-cat-header .nav-icon,
.mobile-nav-item .nav-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 24px; height: 24px; flex: 0 0 24px;
  color: var(--text-2);
}
.nav-icon .nav-icon-svg { width: 24px; height: 24px; display: block; }
.mobile-cat-header .nav-icon svg,
.mobile-nav-item .nav-icon svg { width: 24px; height: 24px; }

/* ---- 分页布局修正（PC 紧凑居中；H5 强制单行） ---- */
/* 分类/合集页 .pagination-wrap：meta + 页码 + 跳转 一行居中，紧凑间距 */
.pagination-wrap {
  justify-content: center !important;
  align-items: center;
  gap: 14px !important;
  flex-wrap: nowrap;
}
/* H5：覆盖 list.css 的 flex-direction:column（≤980）与 display:none（≤640），保持同一行 */
@media (max-width: 980px) {
  .pagination-wrap { flex-direction: row !important; gap: 8px !important; overflow-x: auto; }
  .pagination { flex-wrap: nowrap !important; }
}
@media (max-width: 640px) {
  .pagination { display: flex !important; }   /* list.css 原本隐藏并等一个不存在的加载更多按钮 */
  .pagination-wrap .pagination-meta { display: none; } /* 小屏收起计数，保住单行 */
  .page-btn, .pg-btn { min-width: 30px; width: 30px; height: 30px; font-size: 11px; }
  .pager-jump--block .pager-jump-input { width: 52px; padding: 6px 6px; }
  .pager-jump--block .pager-jump-btn { padding: 6px 10px; white-space: nowrap; }
}
/* 搜索/社区/小说列表页：跳转块已移入分页 nav 内，nav 内元素不换行、超窄横向滚动 */
.pagination .pager-jump--block,
.cm-pager .pager-jump--block,
.nc-pagination .pager-jump--block { margin-left: 10px; }

/* ---- 视频详情「最新地址」整块自定义 HTML（web_video_addr_html）兜底样式 ---- */
.vd-address-custom { color: var(--text-2); font-size: 13px; line-height: 1.9; }
.vd-address-custom a { color: var(--accent, #ff2e7e); text-decoration: none; }
.vd-address-custom a:hover { text-decoration: underline; }
.vd-address-custom p { margin: 0 0 6px; }

/* ---- 帖子正文：空段落不撑高（Quill 导入内容常见 <p><br></p> 残留） ---- */
.article-body p:empty { display: none; }
.article-body p:has(> br:only-child) { display: none; }

/* ---- 帖子详情标签去 #（产品 7/9：标签直接展示，关键词才带 #；覆盖 community.css ::before） ---- */
.article-tag::before, .article-tag:hover::before { content: none; }


/* ---- 全局顶部导航栏：下滑隐藏/上滑吸顶显示（产品 7/13，web/H5 全站） ---- */
.topnav { transition: transform .28s ease; will-change: transform; }
.topnav.is-hidden { transform: translateY(-110%); }

/* ===== 品牌 LOGO 切图（替换原 CSS 文字 91SM，见 components/cyber/{topnav,drawer,footer,login-modal}.tpl）===== */
.topnav .brand { display: inline-flex; align-items: center; line-height: 0; }
.topnav .brand .brand-logo { height: 26px; width: auto; display: block; }
.sidebar-brand .brand-logo { height: 22px; width: auto; display: block; }
.footer-logo .brand-logo { height: 26px; width: auto; display: block; }
.cyber-auth__brand { line-height: 0; }
.cyber-auth__brand .brand-logo { height: 30px; width: auto; display: block; margin-bottom: 4px; }
@media (max-width: 768px) {
  .topnav .brand { flex: 1; justify-content: center; }
  .topnav .brand .brand-logo { height: 24px; }
}

/* ===== 封面加载/解密占位图（品牌切图，替换原渐变占位）=====
   懒加载 <img> 初始 src 为透明 1×1 GIF，解密前透出此背景切图；真实封面解密完成后
   不透明图覆盖背景。横向 16:9 用 placeholder-cover，竖版小说 2:3 用方形 placeholder-square。 */
body[data-theme="cyber"] .scard .thumb img,
body[data-theme="cyber"] .m-hero-card img,
body[data-theme="cyber"] img[data-src] {
  background: #292929 url("/static/web/images/placeholder-cover.png?v=2") center / contain no-repeat;
}
body[data-theme="cyber"] .thumb--novel img,
body[data-theme="cyber"] .thumb--novel img[data-src] {
  background-image: url("/static/web/images/placeholder-square.png?v=2");
}

/* ---- 导航隐藏时，页内吸顶子栏顶到视口顶部（避免悬空浮带，bug 7/13） ---- */
.list-filterbar-wrap, .cm-subcat-wrap, .vd-anchor-nav, .gs-tabs { transition: top .28s ease; }
body.nav-hidden .list-filterbar-wrap,
body.nav-hidden .cm-subcat-wrap,
body.nav-hidden .vd-anchor-nav,
body.nav-hidden .gs-tabs { top: 0; }

/* ===== SEO 需求六：标签页 H1 下文案改为 <h2>（保持原 <p class="list-hero-desc"> 视觉）===== */
h2.list-hero-desc { font-weight: 400; }

/* ===== SEO 需求七回归修复：img 的 height="450" 演示属性会钉死显示高度（H5 hero 轮播卡被
   撑成竖长条）。themes.css 的 .m-hero-card img 只写了 width+aspect-ratio 没写 height，
   CSS aspect-ratio 仅在 height:auto 时生效 → 此处显式交还 auto，让 16/9 恢复接管。
   其余卡片图(.thumb-img/.cover-img/post-cover 等)容器均有 height:100% 显式控高，不受影响。 ===== */
@media (max-width: 760px) {
  .m-hero-card img { height: auto; }
}

/* H5 hero 轮播：激活卡的粉圈是 box-shadow(0 0 0 2px, 画在盒外)，容器 padding-bottom 为 0
   时底边一圈被滚动容器裁掉 → 补齐与顶部一致的 8px（bug 7/16）。 */
@media (max-width: 760px) {
  .m-hero-carousel { padding-bottom: 8px; }
}

/* ===== SEO H标签优化(需求六补充)：语义标签替换后复位 UA 默认样式，视觉不变 ===== */
/* 合集详情视频卡标题 h3→h2 */
h2.card-title { margin-top: 0; }
/* /tags/ 热门 TAG chip 内嵌 h2(关键词入 heading) */
.trending-chip h2 {
  display: inline;
  font: inherit;
  letter-spacing: inherit;
  color: inherit;
  margin: 0;
}

/* ===== 7/16 需求：一级导航(带子菜单)可点击 —— 触发器由 div 换成 <a>，复位链接默认样式 ===== */
a.nav-cat-trigger {
  text-decoration: none;
  cursor: pointer;
}

/* ===== 7/17 需求：导航栏字体统一白色（默认态；hover/active 的粉色高亮保留） ===== */
.nav-cat-trigger,
a.nav-cat-trigger,
.nav-flat-link {
  color: var(--text, #fff);
}

/* H5 移动抽屉同步白色：子分类/底部入口 themes.css 默认 --text-2(灰紫)，
   与桌面导航统一为 --text；hover/active 粉色高亮由原规则保留。 */
.mobile-sub-item,
.mobile-nav-item {
  color: var(--text, #fff);
}

/* ===== 7/16 需求：/tags/ 时间窗 tab 与移动端时间选项改为真实链接 —— 复位 <a> 默认样式 ===== */
a.time-tab,
a.m-time-opt {
  text-decoration: none;
  color: inherit;
  display: inline-block;
}
