/* ============================================================================
 * 投稿平台 · 移动端皮肤层（样式部分） 2026-10-09 第二十七轮
 * ----------------------------------------------------------------------------
 * 参照抖音 / 小红书 / 今日头条的骨架重排手机端：
 *   底部 Tab 栏（首页 · 分类 · ＋发布 · 消息 · 我的）+ 头条式单列卡片流 +
 *   白底细顶栏 + 隐藏欢迎横幅与全部悬浮球，主内容留白放大。
 *
 * 全部规则包在 @media (max-width:1024px) 里：电脑端一行都不生效。
 * 层级约定（Flarum: header 1000 / composer 1010 / modal 1070）：
 *   Tab 栏 999（让 composer、弹窗都能盖过它）
 *   分类面板 1250 · 聊天面板沿用页脚原值 1201
 * 配套交互：/m/app.js
 *
 * ⚠️ 断点 2026-10-11 由 820px 提到 1024px（第五十八轮）：
 *   821~991px 这一段是 Flarum 的「平板排版」（顶部横排导航 + 卡片列表），
 *   原来的 820 断点让平板整段落进桌面逻辑 —— 底部 Tab 不生成，而 9 个悬浮球
 *   已全删，平板在竖屏下没有任何底部功能入口（用户投诉「平板上看不到下面的功能模块」）。
 *   提到 1024 后：平板=放大的手机（底部 Tab 常驻，顶部那排导航收起、进「分类」抽屉），
 *   ≥1025px 才是桌面版。改这个数字要同时改 app.js 的 MQ、页脚里两处 @media。
 * ==========================================================================*/

@media (max-width: 1024px) {

  /* ------------------------------------------------ 0. 基调 */

  html {
    background: #f4f4f6 !important;
  }
  /* data-noskin：问卷公开填写页（/s/xxxx）这类「给站外人看的干净单页」自己带整套样式，
     皮肤层只在 JS 里 return 是不够的 —— 这两条全局规则会盖掉它自己的底色和底边距 */
  body:not([data-noskin]) {
    background: #f4f4f6 !important;
    /* 给底部 Tab 留位；自建页（/my-profile 等）同样受益 */
    padding-bottom: calc(60px + env(safe-area-inset-bottom, 0px)) !important;
    -webkit-tap-highlight-color: transparent;
  }
  .App-content {
    padding-bottom: 10px !important;
  }
  .App-content .container {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  /* ------------------------------------- 1. 顶栏：白底细栏、站点名粉色 */

  .App-header {
    background: #fff !important;
    box-shadow: 0 1px 0 rgba(20, 24, 40, .06) !important;
    padding: 5px 8px !important;
  }
  .App-header .container {
    padding: 0 !important;
    align-items: center !important;
  }
  .App-header a,
  .App-header .Button {
    color: #3c4250 !important;
  }
  /* 只压图标按钮（汉堡/返回），带文字的控件不动 */
  .App-header .Button--icon {
    height: 34px !important;
    min-height: 34px !important;
    width: 34px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  /* 首页有 Hero 时 Flarum 会隐藏站点名，但欢迎横幅已收起，这里强制显示 */
  .App-header .Header-title {
    visibility: visible !important;
    font-size: 15px !important;
    line-height: 1.2 !important;
  }
  .App-header .Header-title a,
  .App-header .Header-title {
    font-size: 15px !important;
    line-height: 1.2 !important;
    color: #9b2d2d !important;
    font-weight: 700 !important;
  }

  /* ------------------------------------- 2. 横幅：欢迎横幅隐藏，页头横幅压成轻条 */

  .WelcomeHero {
    display: none !important;
  }
  .Hero {
    padding: 0 !important;
    border-radius: 0 !important;
  }
  .Hero .container {
    padding: 13px 15px 12px !important;
  }
  .Hero .containerNarrow {
    padding: 0 !important;
  }
  .Hero-title {
    font-size: 16.5px !important;
    margin: 0 0 3px !important;
    line-height: 1.35 !important;
  }
  .Hero-subtitle {
    font-size: 12.5px !important;
    line-height: 1.6 !important;
    margin: 0 !important;
    opacity: .92;
    max-height: 3.2em;
    overflow: hidden;
  }
  .Hero-close {
    display: none !important;
  }

  /* ------------------------------------- 3. 左侧栏：隐藏（分类走底部 Tab） */

  .sideNavContainer {
    display: block !important;
    min-height: 0 !important;
  }
  .IndexPage-nav.sideNav {
    display: none !important;
  }
  .IndexPage-results.sideNavOffset {
    width: 100% !important;
    float: none !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  /* 中间容器全是白底会把卡片的灰隙吃掉，全部剥透明让灰底露出来 */
  main.App-content,
  .App-content #content,
  .App-content .container,
  .IndexPage,
  .IndexPage-results,
  .DiscussionPage,
  .DiscussionPage-discussion,
  .sideNavContainer,
  .DiscussionList,
  .DiscussionList-discussions,
  .PostStream,
  .PostStream-items {
    background: transparent !important;
  }

  /* ------------------------------------- 4. 列表工具条：轻量胶囊 */

  .IndexPage-toolbar {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 2px 12px 9px !important;
    margin: 0 !important;
  }
  .IndexPage-toolbar .Button {
    background: #fff !important;
    border: 0 !important;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .05) !important;
    border-radius: 10px !important;
    color: #5b6472 !important;
    font-size: 12.5px !important;
    height: 32px !important;
    padding: 0 10px !important;
  }
  .IndexPage-toolbar .Button .Button-label {
    font-size: 12.5px !important;
  }

  /* ------------------------------------- 5. 帖子流：头条式单列卡片 */

  .DiscussionList-discussions {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  /* li 原生自带白底和分割线，先剥掉，卡片感由 .DiscussionListItem 自己做；
     原生 .DiscussionList 用「left:-15px + 定宽 +30px」把内容撑出容器，一并恢复自适应 */
  .DiscussionList {
    position: relative !important;
    left: 0 !important;
    right: auto !important;
    width: auto !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  .DiscussionList-discussions {
    width: auto !important;
    margin: 0 !important;
    left: 0 !important;
  }
  .DiscussionList-discussions > li {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
    margin: 0 !important;
    width: auto !important;
    max-width: 100% !important;
    list-style: none !important;
  }
  .DiscussionListItem {
    background: #fff !important;
    border: 0 !important;
    border-radius: 14px !important;
    margin: 0 12px 10px !important;
    /* 原生用「负 margin + 定宽」把内容撑出 container 内边距，这里恢复自适应 */
    width: auto !important;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .05) !important;
    overflow: visible !important;
  }
  .DiscussionListItem--sticky {
    background: #fff7fa !important;
    box-shadow: 0 1px 2px rgba(155,45,45, .12) !important;
  }
  .DiscussionListItem-content {
    display: flex !important;
    align-items: flex-start !important;
    gap: 10px !important;
    padding: 13px 14px !important;
    border: 0 !important;
    background: transparent !important;
  }
  .DiscussionListItem-author {
    flex: 0 0 40px !important;
    margin: 0 !important;
    float: none !important;
    position: static !important;
  }
  .DiscussionListItem-author .Avatar {
    width: 40px !important;
    height: 40px !important;
    border-radius: 50% !important;
  }
  .DiscussionListItem-main {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    padding: 0 !important;
  }
  .DiscussionListItem-title {
    font-size: 15.5px !important;
    font-weight: 600 !important;
    line-height: 1.45 !important;
    color: #1c1e21 !important;
    margin: 0 !important;
    padding: 0 !important;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .DiscussionListItem-info {
    margin: 5px 0 0 !important;
    padding: 0 !important;
    font-size: 12px !important;
    color: #96a0ae !important;
    line-height: 1.5 !important;
  }
  .DiscussionListItem-info .item-terminalPost,
  .DiscussionListItem-info li {
    font-size: 12px !important;
    color: #96a0ae !important;
  }
  .DiscussionListItem-count {
    flex: 0 0 auto !important;
    align-self: flex-start !important;
    margin: 3px 0 0 4px !important;
    padding: 2px 9px !important;
    border-radius: 10px !important;
    background: #f2f3f5 !important;
    color: #8a8f99 !important;
    font-size: 12px !important;
    font-weight: 600 !important;
  }
  .DiscussionListItem-lastPost {
    display: none !important;
  }
  /* 加载更多：收成居中细按钮（app.js 会自动触发） */
  .DiscussionList-loadMore {
    margin: 2px 12px 14px !important;
  }
  .DiscussionList-loadMore .Button {
    background: #fff !important;
    border: 0 !important;
    border-radius: 12px !important;
    color: #8a8f99 !important;
    font-size: 12.5px !important;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .05) !important;
    width: 100% !important;
    height: 40px !important;
  }

  /* ------------------------------------- 6. 主题页（帖子详情） */

  .DiscussionPage .container {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
  .PostStream .PostStream-item {
    margin-bottom: 10px !important;
  }
  .Post {
    background: #fff !important;
    border-radius: 14px !important;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .05) !important;
    padding: 13px 14px !important;
    margin: 0 !important;
  }
  .Post-body {
    font-size: 15px !important;
    line-height: 1.72 !important;
  }
  .Post-body img {
    border-radius: 10px !important;
  }

  /* ------------------------------------- 7. 悬浮球：页脚已全删（2026-10-09） */

  /* 邀请码 / 开通会员 / 金币 / 聊天 / 提醒 / 小黑屋 / 我的资料 等悬浮球
     已从页脚移除，功能统一收进「我的」页。下面几条留作兜底：
     旧版页脚（浏览器缓存）残留的球在手机上也不会冒出来挡正文。 */

  #meFab, #chatFab, #coinFab, #noticeFab, #inviteFab,
  #qqFab, #vipFab, #brFab, #hubWrap {
    display: none !important;
  }

  /* ------------------------------------- 8. 底部 Tab 栏（app.js 构建） */

  #mTab {
    position: fixed;
    left: 0; right: 0; bottom: 0;
    z-index: 999;
    display: flex;
    align-items: stretch;
    justify-content: space-around;
    height: calc(56px + env(safe-area-inset-bottom, 0px));
    padding: 0 env(safe-area-inset-left, 0px) env(safe-area-inset-bottom, 0px);
    margin: 0;
    background: rgba(255, 255, 255, .97);
    -webkit-backdrop-filter: blur(14px);
    backdrop-filter: blur(14px);
    border-top: 1px solid rgba(20, 24, 40, .06);
    list-style: none;
  }
  #mTab .m-t {
    flex: 1 1 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end;
    padding-bottom: 7px;
    gap: 3px;
    color: #8a8f99;
    font-size: 10.5px;
    text-decoration: none !important;
    background: none;
    border: 0;
    cursor: pointer;
    position: relative;
    font-family: inherit;
  }
  #mTab .m-t.on {
    color: #9b2d2d;
  }
  #mTab .m-t-ic {
    display: block;
    width: 23px; height: 23px;
  }
  #mTab .m-t-ic svg {
    width: 100%; height: 100%;
    display: block;
  }
  #mTab .m-t-lb {
    font-weight: 600;
    line-height: 1;
  }
  #mTab .m-t-dot {
    position: absolute;
    top: 5px;
    left: calc(50% + 7px);
    min-width: 16px; height: 16px;
    padding: 0 4px;
    border-radius: 8px;
    background: #ff3d55;
    color: #fff;
    font-size: 10px;
    line-height: 16px;
    font-weight: 700;
    text-align: center;
    display: none;
    box-shadow: 0 0 0 2px #fff;
    box-sizing: content-box;
  }
  #mTab .m-t-dot.on {
    display: block;
  }
  /* 中间发布钮：凸起的圆角方块 */
  #mTab .m-t-pub .m-t-ic {
    width: 46px; height: 46px;
    margin-top: -17px;
    border-radius: 15px;
    background: linear-gradient(135deg, #ff86b3, #9b2d2d);
    color: #fff;
    box-shadow: 0 5px 14px rgba(155,45,45, .42);
    display: flex;
    align-items: center;
    justify-content: center;
  }
  #mTab .m-t-pub .m-t-ic svg {
    width: 22px; height: 22px;
  }
  #mTab .m-t-pub,
  #mTab .m-t-pub.on {
    color: #9b2d2d;
  }
  #mTab .m-t:active {
    transform: scale(.94);
  }

  /* ------------------------------------- 9. 分类面板（底部抽屉） */

  .m-sheet {
    position: fixed;
    inset: 0;
    z-index: 1250;
    display: none;
  }
  .m-sheet.on {
    display: block;
  }
  .m-sheet-bd {
    position: absolute;
    inset: 0;
    background: rgba(15, 18, 30, .45);
    opacity: 0;
    transition: opacity .18s ease;
  }
  .m-sheet.on .m-sheet-bd {
    opacity: 1;
  }
  .m-sheet-in {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    background: #fff;
    border-radius: 18px 18px 0 0;
    padding: 15px 15px calc(18px + env(safe-area-inset-bottom, 0px));
    transform: translateY(100%);
    transition: transform .22s ease;
    max-height: 74vh;
    overflow: auto;
  }
  .m-sheet.on .m-sheet-in {
    transform: none;
  }
  .m-sheet-hd {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 13px;
  }
  .m-sheet-t {
    font-size: 16px;
    font-weight: 700;
    color: #1c1e21;
  }
  .m-sheet-x {
    border: 0;
    background: #f2f3f5;
    width: 30px; height: 30px;
    border-radius: 50%;
    color: #8a8f99;
    font-size: 13px;
    line-height: 1;
    cursor: pointer;
  }
  .m-cats {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }
  /* 抽屉顶部的快捷入口：顶部那排原生导航（全部主题/我的关注/标签）在 ≤820px 被隐藏、
     2026-10-11 起平板（≤1024px）也一并隐藏，这里补回这三条，免得平板用户丢了「我的关注」。
     登录了才显示「我的关注」（游客点了只会被弹去 /login）。 */
  .m-quick {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 11px;
  }
  .m-qk {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    height: 30px;
    padding: 0 13px;
    border-radius: 15px;
    background: #f2f3f5;
    color: #5b6472;
    font-size: 12.5px;
    font-weight: 600;
    text-decoration: none !important;
    -webkit-tap-highlight-color: transparent;
  }
  .m-qk:active {
    background: #e9eaee;
  }
  .m-cat {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 11px;
    background: #f7f8fa;
    border-radius: 13px;
    text-decoration: none !important;
    -webkit-tap-highlight-color: transparent;
  }
  .m-cat:active {
    background: #f0f1f4;
  }
  .m-cat-ic {
    width: 42px; height: 42px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    flex: 0 0 42px;
  }
  .m-cat-tx {
    min-width: 0;
  }
  .m-cat-tx b {
    display: block;
    font-size: 14.5px;
    color: #1c1e21;
    line-height: 1.3;
  }
  .m-cat-tx b i {
    font-style: normal;
    font-size: 11px;
  }
  .m-cat-tx em {
    display: block;
    font-style: normal;
    font-size: 11.5px;
    color: #96a0ae;
    margin-top: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  /* 面板开着时锁住底下的滚动 */
  html.m-lock, html.m-lock body {
    overflow: hidden !important;
  }

  /* ------------------------------------- 10. 聊天面板：全屏化（让出底部 Tab） */

  /* 关键：bottom 让出 Tab 栏高度（56px + 安全区），导航栏始终露在外面可见可点，
     退出聊天点底部 Tab 即可，不必再去够右上角那个 ×。 */
  #chatPanel {
    position: fixed !important;
    left: 0 !important;
    right: 0 !important;
    top: 0 !important;
    bottom: calc(56px + env(safe-area-inset-bottom, 0px)) !important;
    width: auto !important;
    max-width: none !important;
    height: auto !important;
    max-height: none !important;
    transform: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    z-index: 1400 !important;
  }
  #chatPanel .c-body {
    -webkit-overflow-scrolling: touch;
  }
  /* 面板贴着 Tab 顶边，给一条细线分隔，视觉上「Tab 是在面板之上的独立层」 */
  #chatPanel.on::after {
    content: '';
    position: absolute;
    left: 0; right: 0; bottom: -1px;
    height: 1px;
    background: rgba(20, 24, 40, .06);
    pointer-events: none;
  }

  /* --------------------------------------------------------------------------
     2026-10-12 第七十四轮：修「在聊天里点底部就跳到投稿页」

     两个叠加的真因：
     ① /chat 全屏页（「我的」→「站内聊天」）里 chat.js 自己给的 z-index 只有 5，
        而底部 Tab 是 999 —— 面板铺到屏幕最底（bottom:0），输入框那一整条
        被 Tab 栏压在下面，点输入框实际点到的是 Tab。
     ② Tab 栏中间「发帖 / 投稿」两颗按钮是凸起的（margin-top:-17px 的 46px 方块），
        会往上戳出 Tab 顶边 ~17px，正好压在聊天面板的输入行上。
        在论坛页里面板 z-index 1400 > Tab 999，它俩被盖住点不到；
        但 /chat 全屏页里层级反过来，这两颗凸起钮就变成了「压在输入框上的陷阱」。

     所以两条一起改：面板让出 Tab 高度 + 聊天打开时把凸起钮压平。
     -------------------------------------------------------------------------- */

  /* ① 全屏聊天页：底部同样让出 Tab 栏，输入框不再被压住 */
  body.chat-fullpage #chatPanel {
    bottom: calc(56px + env(safe-area-inset-bottom, 0px)) !important;
  }

  /* ②-b 软键盘弹起（html.kb-on，由 app.js 判定）：底部 Tab 滑出屏幕。
       不这么做的话 adjustResize 会把整条 Tab 顶到键盘上方 —— 既挡输入区又容易误触。
       用 transform 而不是 display:none，键盘收起时能滑回来，不会突然闪一下。 */
  #mTab {
    transition: transform .18s ease, opacity .18s ease;
  }
  html.kb-on #mTab {
    transform: translateY(140%);
    opacity: 0;
    pointer-events: none;
  }
  /* 键盘弹起时全屏聊天页不用再给 Tab 让位（Tab 已经收走），直接贴到键盘上沿 */
  body.chat-fullpage.kb-on #chatPanel {
    bottom: 0 !important;
  }

  /* ② 聊天面板开着时：凸起钮压平回普通 Tab 尺寸，不再戳进面板 */
  body.chat-on #mTab .m-t-pub .m-t-ic {
    width: 23px !important;
    height: 23px !important;
    margin-top: 0 !important;
    border-radius: 0 !important;
    background: none !important;
    box-shadow: none !important;
    color: inherit !important;
  }
  body.chat-on #mTab .m-t-pub .m-t-ic svg {
    width: 100% !important;
    height: 100% !important;
  }
  body.chat-on #mTab .m-t-pub {
    color: #8f8577 !important;
  }
  body.chat-on #mTab .m-t-pub.on {
    color: #C9A86C !important;
    text-shadow: 0 0 8px rgba(201, 168, 108, .35);
  }

  /* --------------------- 11. 「我的」个人中心 /me（服务端渲染，无 JS 依赖） */

  /* 身份卡 / 功能列表在手机上略收紧，行高留足手指点 */
  .me-card {
    padding: 15px;
    gap: 12px;
    border-radius: 15px;
  }
  /* 竖版名片（可换头像 / 改昵称）单独给手机尺寸 */
  .me-hero {
    padding: 20px 14px 16px;
    gap: 8px;
  }
  .me-hero .me-av { width: 78px; height: 78px; }
  .me-avedit { width: 27px; height: 27px; font-size: 12px; }
  .me-nmrow b { font-size: 17px; }
  .me-row { padding: 15px; }
  .me-grp { margin: 16px 3px 8px; }
  .me-tip { margin-bottom: 18px; }

  /* 门禁卡按钮在窄屏被挤成竖排，锁住不换行 */
  .gate-btn {
    white-space: nowrap !important;
    flex: 0 0 auto !important;
  }

  /* ------------------------------------- 12. 弹层微调（与卡片风统一） */

  .Modal .Modal-content {
    border-radius: 16px !important;
  }
  .Alert {
    border-radius: 12px !important;
  }
  .CommentPost:not(:last-child) {
    border-bottom: 0 !important;
  }
}

/* ============================================================
 * ≤767px：与 Flarum 原生移动断点对齐
 * 原生在这里把 Header-secondary 设成 visibility:hidden 却保留占位，
 * 顶栏被撑到 215px、白吃 150px 首屏；display:none 后顶栏缩回一条。
 * 顶部真正显示的是 #app-navigation 那条 46px 的品牌条（app.js 会在
 * 里面补站点名），.App-header 与它完全重叠，一并隐藏免得叠罗汉。
 * ============================================================ */
@media (max-width: 767.98px) {
  .Header-secondary,
  .App-header {
    display: none !important;
  }
  /* 站点名（app.js 插入 .App-navigation） */
  .App-navigation {
    position: relative;
  }
  .App-navigation .m-site {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    font-size: 15px;
    font-weight: 700;
    color: #fff;
    letter-spacing: .5px;
    pointer-events: none;
    white-space: nowrap;
  }
  /* 帖子页楼层数（PostStreamScrubber，如「1 / 6 条 ▾」）：
     Flarum 手机断点把它 position:absolute + top:0 顶到栏内正中，跟居中的「月下欢」叠字。
     第九十二轮把它挪到品牌条（46px）正下方，但**仍然居中**——
     ── 第一百轮实测发现：居中 + 定宽 200px 的它，正好压在封面头图上那排**居中**的标签
        （如「自曝」）上面；标签是白底，透过来就成了用户反馈的「顶部一块厚厚的白框」。
        所以这轮不只是缩字号，而是：**改成右上角贴边、宽度收成内容宽、深墨实底**，
        彻底让开标题/标签/状态那一竖列。 */
  .App--discussion .PostStreamScrubber.App-titleControl {
    top: 52px !important;
    left: auto !important;
    right: 12px !important;
    margin-left: 0 !important;
    transform: none !important;
    width: auto !important;
    background: rgba(11, 11, 11, .9) !important;
    border: 1px solid rgba(201, 168, 108, .34) !important;
    border-radius: 999px !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .38);
    opacity: .92;
    transition: opacity .18s ease, background .18s ease, border-color .18s ease;
  }
  .App--discussion .PostStreamScrubber.App-titleControl:hover,
  .App--discussion .PostStreamScrubber.App-titleControl.open {
    background: rgba(11, 11, 11, .97) !important;
    border-color: rgba(201, 168, 108, .55) !important;
    opacity: 1;
  }
  /* 里层按钮：把「1 / 6 ▾」压成小药丸（表格式数字，宽度不跳）。
     ⚠️ 必须把 Flarum 默认的 .Button 底色/边框/阴影清掉 —— 它是一块奶白色实心，
        叠在容器上面就把深色药丸整个盖住了（量出来容器是深色，眼睛看到的却还是那块白框）。 */
  .App--discussion .PostStreamScrubber.App-titleControl .Button,
  .App--discussion .PostStreamScrubber.App-titleControl button {
    padding: 2px 9px !important;
    min-height: 0 !important;
    height: auto !important;
    width: auto !important;
    font-size: 12px !important;
    line-height: 1.6 !important;
    font-variant-numeric: tabular-nums;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    color: #EDE6D9 !important;
  }
  .App--discussion .PostStreamScrubber.App-titleControl .Button * ,
  .App--discussion .PostStreamScrubber.App-titleControl button * {
    color: #EDE6D9 !important;
  }
  .App--discussion .PostStreamScrubber.App-titleControl .icon {
    font-size: 10px !important;
    margin-left: 2px !important;
    color: #C9A86C !important;
  }
}

  /* ===================================== 11. 月下欢覆盖层（水墨夜色） */

@media (max-width: 1024px) {
  /* 原生导航抽屉空壳：手机端导航已全部收进底部 Tab，
     抽屉内容（顶栏）被隐藏后只剩色块，按钮和面板一并下线。
     抽屉里真正独有的「退出登录」已补进「我的」页功能网格（app.js）。
     ⚠️ 必须待在 ≤820px 里：.App-drawer 是桌面端顶栏（搜索/通知/头像）的
     容器，裸露在外会把桌面顶栏整个藏掉。 */
  #app-navigation .Navigation-drawer { display: none !important; }
  .App-drawer { display: none !important; }

  /* 品牌条：深墨黑 + 金线，站点名楷体 */
  .App-navigation {
    background: #0B0B0B !important;
    box-shadow: 0 1px 0 rgba(201, 168, 108, .35) !important;
  }
  .App-navigation .m-site {
    font-family: 'KaiTi', 'STKaiti', 'Kaiti SC', 'SimSun', serif !important;
    color: #EDE6D9 !important;
    font-size: 17px !important;
    font-weight: 400 !important;
    letter-spacing: 6px !important;
  }

  /* 底部 Tab 栏：深墨黑，选中朱砂＋暗金 */
  #mTab {
    background: rgba(11, 11, 11, .97) !important;
    border-top: 1px solid rgba(201, 168, 108, .3) !important;
  }
  #mTab .m-t { color: #8f8577 !important; }
  #mTab .m-t.on {
    color: #C9A86C !important;
    text-shadow: 0 0 8px rgba(201, 168, 108, .35);
  }
  #mTab .m-t-pub .m-t-ic {
    background: linear-gradient(135deg, #9b2d2d, #7e2334) !important;
    color: #EDE6D9 !important;
    box-shadow: 0 5px 14px rgba(0, 0, 0, .55), 0 0 0 1px rgba(201, 168, 108, .5) !important;
  }
  #mTab .m-t-dot {
    background: #b03a30 !important;
    box-shadow: 0 0 0 2px #0B0B0B !important;
  }

  /* 内容卡：浅宣纸 + 极细金线 */
  .DiscussionListItem,
  .Post,
  .DiscussionList-loadMore .Button,
  .IndexPage-toolbar .Button {
    background: #F6F1E6 !important;
  }
  .DiscussionListItem {
    border: 1px solid rgba(201, 168, 108, .32) !important;
    box-shadow: 0 2px 10px rgba(0, 0, 0, .45) !important;
  }
  .DiscussionListItem--sticky {
    background: #F1E9D7 !important;
    border-color: rgba(201, 168, 108, .55) !important;
  }
  .DiscussionList-loadMore .Button {
    color: #9b2d2d !important;
    border: 1px solid rgba(201, 168, 108, .4) !important;
  }
  .IndexPage-toolbar .Button { color: #5b5346 !important; }
  /* 主题页控制条（回复 / 关注）：手机端被移到正文上方、落在浅灰底上，
     而水墨夜色的次级钮是「暗金字」（那是给桌面墨底调的）→ 浅底上糊掉
     （「关注」钮实测对比度仅 2.06）。换朱砂 + 白底。 */
  .DiscussionPage-nav .Button:not(.Button--primary) {
    color: #7E2334 !important;
    border-color: rgba(155, 45, 45, .35) !important;
    background: #fff !important;
  }

  /* 分类抽屉：宣纸卷轴卡 */
  .m-sheet-in { background: #F6F1E6 !important; }
  .m-sheet-t {
    font-family: 'KaiTi', 'STKaiti', 'SimSun', serif !important;
    font-weight: 400 !important;
    font-size: 18px !important;
    letter-spacing: 3px !important;
    color: #2B2622 !important;
  }
  .m-sheet-x { background: #E9E1CF !important; color: #6E6252 !important; }
  .m-cat {
    background: #EFE8D8 !important;
    border: 1px solid rgba(201, 168, 108, .28) !important;
  }
  .m-cat:active { background: #E7DFCA !important; }
  .m-qk {
    background: #EFE8D8 !important;
    border: 1px solid rgba(201, 168, 108, .28);
    color: #5b5346 !important;
  }
  .m-qk:active { background: #E7DFCA !important; }

  /* 正文与标签：墨字 */
  .DiscussionListItem-title, .m-cat-tx b { color: #2B2622 !important; }
  .DiscussionListItem-title { font-family: 'KaiTi', 'STKaiti', 'SimSun', serif; font-size: 16.5px !important; }

  /* 顶部条右侧：搜索 + 下载 App。
     2026-10-17 第九十七轮：补搜索入口 —— .App-drawer（搜索/通知/头像）被手机皮肤整块藏了，
     通知有「消息」Tab、头像有「我的」Tab 兜底，只有搜索没有替代品。
     同时把「下载 App」从文字按钮收成图标：390px 宽下两个文字按钮会跟居中的站点名打架。
     ⚠️ 两颗钮必须住在**同一个 flex 容器**里 —— 各自绝对定位的话，宽度一变就重叠。 */
  .App-navigation .m-navr {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
    gap: 7px;
    z-index: 3;
  }
  .App-navigation .m-navr a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 17px;
    font-size: 15px;
    line-height: 1;
    text-decoration: none;
    background: linear-gradient(135deg, #9b2d2d, #7e2334);
    border: 1px solid rgba(201, 168, 108, .6);
    color: #EDE6D9 !important;
    box-shadow: 0 3px 10px rgba(0, 0, 0, .45), inset 0 1px 0 rgba(201, 168, 108, .28);
  }
  .App-navigation .m-navr a:active { opacity: .82; }

  /* ============================================================================
   * 11. 排版令牌：字号 / 行高 / 间距 / 触控热区（2026-10-14 第八十六轮）
   * ----------------------------------------------------------------------------
   * 站长反馈「页面有点紧凑」。线上实测（getComputedStyle）：
   *   标签徽章 10px、底部 Tab 文字 10.5px、列表元信息（作者·时间·回复数）12px
   *   —— 均低于可读下限；正文 15px 本身达标，问题集中在「小字」与「间距」。
   * 只调字号、行高、间距、热区，不动布局与配色。整块可整体删除回退。
   * 桌面端对应改动在 gate-footer.html 的 wb-typo-tokens 块，两边须同时上线。
   * ==========================================================================*/

  /* 列表卡：元信息 12 -> 13px（作者·时间·回复数是最该被扫读的信息） */
  .DiscussionListItem-info,
  .DiscussionListItem-info li,
  .DiscussionListItem-info .item-terminalPost,
  .DiscussionListItem-info .username,
  .DiscussionListItem-info time {
    font-size: 13px !important;
    line-height: 1.5 !important;
  }
  .DiscussionListItem-count { font-size: 12.5px !important; }

  /* 卡片标题 16.5 -> 17.5px，行高 1.45 -> 1.5（中文不再贴字） */
  .DiscussionListItem-title {
    font-size: 17.5px !important;
    line-height: 1.5 !important;
  }

  /* 标签徽章 10 -> 12px：字大了框不能还是小的，内边距同步放大 */
  .TagLabel-name { font-size: 12px !important; padding: 2px 8px !important; }
  .TagLabel { line-height: 1.7 !important; }

  /* 底部 Tab 文字 10.5 -> 11.5px */
  #mTab .m-t { font-size: 11.5px !important; }

  /* 楼层正文：本就 15px/1.72，微调字号并把行高统一到 1.75 */
  .Post-body,
  .Post-body p,
  .Post-body li {
    font-size: 15.5px !important;
    line-height: 1.75 !important;
  }
  .Post-body p + p { margin-top: 12px !important; }

  /* 间距节奏：卡片内边距 13 -> 16px、帖子间距 10 -> 12px */
  .Post { padding: 16px 15px !important; }
  .PostStream .PostStream-item { margin-bottom: 12px !important; }

  /* 首页 Hero 副标题 12.5 -> 13px，标题行高放开 */
  .Hero-title { line-height: 1.4 !important; }
  .Hero-subtitle { font-size: 13px !important; line-height: 1.65 !important; }

  /* 触控热区补足 44px（Apple HIG / Material 的下限），视觉尽量不变 */
  /* 顶栏图标按钮：视觉仍 34px，用透明伪元素把可点区撑到 44×44 */
  .App-header .Button--icon { position: relative !important; }
  .App-header .Button--icon::after {
    content: '';
    position: absolute;
    left: 50%; top: 50%;
    width: 44px; height: 44px;
    transform: translate(-50%, -50%);
  }
  /* 排序/筛选下拉：整条加高（32 -> 40px），不碰它自己的 ::after 箭头 */
  .Dropdown-toggle { min-height: 40px !important; }
  /* 作者链接 40 -> 44px（在列表项内部，不会撑高任何容器） */
  .DiscussionListItem-author { min-height: 44px !important; align-items: center !important; }

  /* ============================================================================
   * 12. 标签页网格 + 首页关注分段（2026-10-17 第九十七轮 · 对标优化 P0-2 / P0-5）
   * ----------------------------------------------------------------------------
   * P0-2：/tags 是 Flarum 原生 TagTile —— 手机上一屏一个 200px 高的纯色块
   *       （一屏只看得到 3 个标签），而且它和「分类」抽屉是**同一个概念的重复界面**，
   *       一套精致一套灾难。这里把它压成与抽屉同款的两列图标网格；
   *       图标与帖数由 app.js 的 buildTagGrid() 注入，本块只管视觉。
   * P0-5：首页列表顶部的「关注 / 全部」分段（HTML 来自 buildHomeSeg()）。
   * 纯样式，整块可整体删除回退。
   * ==========================================================================*/
  .TagsPage .TagTiles {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
    width: auto !important;              /* 原生是 420px，在 390 屏上横向溢出 30px */
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  .TagsPage .TagTile {
    height: auto !important;
    min-height: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    border-radius: 13px !important;
    overflow: hidden !important;
    box-shadow: 0 2px 9px rgba(0, 0, 0, .22) !important;
  }
  .TagsPage .TagTile-info {
    display: grid !important;
    grid-template-columns: 26px minmax(0, 1fr) !important;
    gap: 2px 9px !important;
    align-items: center !important;
    height: auto !important;
    padding: 12px 12px 5px !important;
    /* ⚠️ 原生的 .TagTile-info 是 position:absolute（铺满色块的设计）；
       不改成 static 它就**不参与流**，父级 li 高度会塌成 0（实测过）。
       同样原因下面的 lastPostedDiscussion 也是 absolute，一并拉回文档流。 */
    position: static !important;
  }
  .TagsPage .TagTile-name {
    grid-column: 2 !important;
    margin: 0 !important;
    font-size: 15px !important;
    line-height: 1.35 !important;
    white-space: normal !important;
  }
  .TagsPage .m-tg-ic {
    grid-row: 1; grid-column: 1;
    width: 26px; height: 26px;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
  }
  .TagsPage .m-tg-ic svg { width: 16px; height: 16px; }
  .TagsPage .m-tg-cnt {
    grid-column: 2;
    font-size: 11.5px;
    line-height: 1.4;
    opacity: .85;
  }
  .TagsPage .TagTile-description,
  .TagsPage .TagTile-children { display: none !important; }
  .TagsPage .TagTile-lastPostedDiscussion {
    display: block !important;
    height: auto !important;
    padding: 0 12px 11px !important;
    font-size: 11.5px !important;
    line-height: 1.5 !important;
    opacity: .92;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    position: static !important;     /* 原生 absolute，必须拉回流内（见 TagTile-info 注释） */
  }

  /* 首页「关注 / 全部」分段 */
  .m-seg { display: flex; gap: 8px; margin: 0 0 12px; }
  .m-seg-i {
    flex: 1;
    text-align: center;
    padding: 9px 0;
    border-radius: 12px;
    font-size: 14px;
    text-decoration: none;
    background: #EFE8D8;
    color: #6b5a45;
    border: 1px solid rgba(201, 168, 108, .28);
  }
  .m-seg-i.on {
    background: linear-gradient(135deg, #9b2d2d, #7e2334);
    color: #EDE6D9;
    font-weight: 600;
    border-color: rgba(201, 168, 108, .5);
  }

  /* ------------------------------------------------------------------
   * 13. 列表卡片封面（2026-10-17 第九十八轮 · 对标优化 P0-1）
   *
   * 卡片左侧加 72×72 方图（.wb-cov 由 app.js 注入，src 是服务端生成的
   * /assets/thumbs/… 缩略图，不是原图）。
   *
   * 为什么顺便把头像藏掉：手机 390px 下卡内容区只有 336px，
   * 「头像 40 + 徽标 33 + 正文 + 计数 26」已经塞满；再插 72px 方图，
   * 正文只剩不到 100px，标题会碎成每行 5 个字。
   * 头像的职能（这是谁发的）在卡片下方 .DiscussionListItem-info 里本来就有文字，
   * 所以有封面时让位给图，没封面时一切照旧。
   *
   * ⚠️ 原生的 Slidable 排版用「负 margin」把徽标/正文叠进头像与计数里
   *    （badges: margin-left:-45px、main: margin-right:-45px），
   *    多一个 flex item 后这套错位会把正文挤没 —— 有封面时必须把这些负 margin 归零。
   * ------------------------------------------------------------------ */
  li.has-cov .DiscussionListItem-author { display: none !important; }
  li.has-cov .DiscussionListItem-badges { margin: 6px 0 0 0 !important; }
  li.has-cov .DiscussionListItem-main { margin-right: 0 !important; }
  li.has-cov .DiscussionListItem-content { align-items: flex-start !important; }

  .wb-cov {
    flex: 0 0 72px;
    width: 72px;
    height: 72px;
    border-radius: 11px;
    object-fit: cover;
    background: #f2ece3;
    display: block;
  }
}

/* ============================================================
 * 第一百零二轮：原生手感三件套（下拉刷新 / 回到顶部 / 骨架屏）
 * ----------------------------------------------------------------------------
 * 三个节点全部由 app.js 创建（buildPull / buildTop / buildSkeleton），
 * 这里只管长相。仍然整块包在 ≤1024px 里：桌面端一行都不生效。
 *
 * ⚠️ 一律**实底 / 半透明实底**，绝不用 backdrop-filter ——
 *    浅色（水印）内容会被「模糊」进药丸，洗成浅灰底 + 浅色文字直接读不出来
 *    （第一百轮移动端楼层指示器就是这么白了一整版的）。
 *
 * ⚠️ 下拉刷新提示条**故意不给 transform 过渡**：拖动时要严格跟手，
 *    加了 transition 每帧设 transform 会变成「拖 120px 只动 15px」的橡皮感
 *    （99 轮媒体查看器踩过同一个坑）。回弹的过渡由 JS 临时挂内联 transition。
 * ============================================================ */

@media (max-width: 1024px) {

  /* ------------------------------------------------ ① 下拉刷新提示条 */

  .m-pull {
    position: fixed;
    top: 0;
    left: 50%;
    z-index: 1000;
    width: 40px;
    height: 40px;
    margin-top: 5px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(24, 21, 19, .88);
    color: #EDE6D9;
    box-shadow: 0 3px 12px rgba(0, 0, 0, .3);
    transform: translate3d(-50%, -130%, 0);
    opacity: 0;
    transition: opacity .18s;      /* 只有透明度；transform 一律由 JS 逐帧给 */
    pointer-events: none;
  }
  .m-pull.on { opacity: 1; }
  .m-pull .m-pull-ic {
    display: flex;
    /* 默认箭头朝上（还没够）；够阈值后翻转朝下 = 「松手」
       —— 与 iOS 原生「下拉时箭头翻转」的暗示一致 */
    transform: rotate(180deg);
  }
  .m-pull.ready {
    background: rgba(160, 58, 48, .95);
    box-shadow: 0 3px 14px rgba(160, 58, 48, .4);
  }
  .m-pull.ready .m-pull-ic { transform: rotate(0deg); }
  .m-pull.loading .m-pull-ic { animation: mPullSpin .75s linear infinite; }
  @keyframes mPullSpin { to { transform: rotate(360deg); } }

  /* ------------------------------------------------ ② 回到顶部 */

  .m-top {
    position: fixed;
    right: 14px;
    /* 悬在底部 Tab 之上（Tab 高 56 + 8 间距），否则会压在「投稿」凸起钮上 */
    bottom: calc(70px + env(safe-area-inset-bottom, 0px));
    z-index: 996;
    width: 42px;
    height: 42px;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(201, 168, 108, .42);
    border-radius: 50%;
    background: rgba(24, 21, 19, .82);
    color: #EDE6D9;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .3);
    opacity: 0;
    visibility: hidden;
    transform: translateY(8px);
    transition: opacity .2s, transform .2s, visibility .2s;
    -webkit-tap-highlight-color: transparent;
  }
  .m-top.on { opacity: 1; visibility: visible; transform: none; }
  /* 聊天面板 / 卡片抽屉打开时让位（它们都是全屏浮层，浮钮会露在边缘） */
  body.chat-on .m-top,
  html.m-lock .m-top { opacity: 0; visibility: hidden; }

  /* ------------------------------------------------ ③ Flarum 冷启动加载骨架（纯 CSS） */

  /* ⚠️ 为什么是 CSS 而不是 JS（第一百零二轮真机探测两次验证的结论）：
     本站的 app.js 由 nginx 注入在 </body> 之前，它的执行时机**永远晚于 Flarum 的
     首屏渲染** —— 实测 appjs-ran 与 content-filled 落在同一毫秒（正常网络 2.8s、
     弱网 16.8s 都一样）。也就是说 JS 根本看不到"还没渲染"的那一瞬，写多少判据都是死代码
     （试过三个：「列表容器在但没 li」「#app 为空」「#content 为空」，全废，详见 app.js 注释）。
     改由 <link> 承担就成立了：<link> 会**阻塞渲染** ⇒ 本文件早在渲染前就已生效；
     而 `#content:empty` 只要 Flarum 往里填了东西就立刻不匹配，骨架自动消失 ——
     零时机依赖、零 JS 维护、也不会残留。 */
  .App-content > #content:empty {
    min-height: 54vh;
    padding: 0 12px;
    /* 🚨 这几条**必须带 !important**：本文件第 4 节有一条
         `main.App-content, .App-content #content, … { background: transparent !important; }`
       （目的是剥掉中间容器的白底、让卡片灰隙露出来），它会把 #content 的 background-image
       强行洗成 none。踩过的现象非常有迷惑性：**min-height 生效（456px）、animation 生效
       （mSkelPulse 在跑），唯独 backgroundImage 计算出来是 none** ⇒ 骨架看不见但规则明明匹配了。
       我们的选择器 .App-content > #content:empty 特异度 (1,2,0) 高于那条 (1,1,0)，
       同为 !important 时按特异度取胜 ⇒ 加 !important 即可稳定生效，不必去动那条设计规则。 */
    background-origin: content-box !important;
    /* 标题条 + 3 张卡片：纯 background 画出来，不依赖任何脚本 */
    background-image:
      linear-gradient(#e6dfd5, #e6dfd5),
      linear-gradient(#ffffff, #ffffff),
      linear-gradient(#ffffff, #ffffff),
      linear-gradient(#ffffff, #ffffff) !important;
    background-size: 44% 16px, 100% 84px, 100% 84px, 100% 84px !important;
    background-position: 0 16px, 0 52px, 0 146px, 0 240px !important;
    background-repeat: no-repeat !important;
    animation: mSkelPulse 1.4s ease-in-out infinite;
  }
  @keyframes mSkelPulse {
    0%, 100% { opacity: 1; }
    50%      { opacity: .45; }
  }
}

/* ============================================================
 * 第一百零三轮：图文栏目的双列瀑布（对标速览第三行）
 * ----------------------------------------------------------------------------
 * 只对**看图栏目**（自曝 / 鉴定 / 分享）生效，由 app.js 的 buildDuo() 打上 .wb-duo。
 * 文字栏目（锐评 / 调教 / 问卷）保持单列 —— 一刀切双列会把长文字压成窄条。
 *
 * 这一段是**在真机上量着改出来的**，四个坑都踩过，改之前先看注释：
 *   ① `1fr` 的轨道最小值是 auto ⇒ 标题的最小内容宽度把两列一起顶宽
 *      （实测排成 287 + 273，比 390 的视口还宽，页面直接横滚）⇒ 必须 minmax(0,1fr)。
 *   ② 卡片的白底/描边/圆角与内边距**不在 li 上**，在 li > div.DiscussionListItem 上；
 *      只写 li 打不中，封面左右各缩进 13px 露出底色。
 *   ③ `.DiscussionListItem-content` 同时是 `.Slidable-content`，皮肤给它 padding:13px 14px
 *      （横向卡片的气口）—— 竖排时这是「封面被缩进去」的真凶，要压到 (0,4,0) 才盖得住。
 *   ④ 单列靠 .DiscussionListItem 的负外边距留出左右气口；双列把这些外边距归零后，
 *      气口必须由网格自己补（padding:0 12px），否则卡片贴着屏幕边。
 *
 * 另外：无图帖补一块同高米色空位（li:not(.has-cov) 的 ::before）——
 * 不补的话它在网格里矮一大截，整行被拉出参差缺口，看起来像加载失败。
 * ============================================================ */
@media (max-width: 1024px) {
  .DiscussionList-discussions.wb-duo {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);   /* 见 ① */
    gap: 10px;
    align-items: start;
    padding: 0 12px 4px !important;                          /* 见 ④ */
  }
  .DiscussionList-discussions.wb-duo > li {
    margin: 0 !important;
    min-width: 0;
    padding: 0 !important;
  }
  .DiscussionList-discussions.wb-duo > li > .DiscussionListItem {   /* 见 ② */
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden;
  }
  .DiscussionList-discussions.wb-duo .DiscussionListItem-content.Slidable-content {
    display: block !important;                               /* 竖排：封面在上、文字在下 */
    padding: 0 !important;                                   /* 见 ③ */
    margin: 0 !important;
  }
  /* 头像与徽标是绝对定位浮在 content 上的，竖过来正好压在封面上 ⇒ 双列时拿掉头像 */
  .DiscussionList-discussions.wb-duo .DiscussionListItem-author { display: none !important; }
  .DiscussionList-discussions.wb-duo .DiscussionListItem-content > .wb-cov {
    width: 100% !important;
    height: 116px !important;
    flex: none !important;
    border-radius: 0 !important;
    object-fit: cover;
    margin: 0 !important;
    display: block !important;
  }
  .DiscussionList-discussions.wb-duo li:not(.has-cov) .DiscussionListItem-content::before {
    content: '';
    display: block;
    height: 116px;
    background:
      radial-gradient(circle at 50% 46%, rgba(201, 168, 108, .42) 0 7px, transparent 7px),
      linear-gradient(135deg, #F5EDDF, #EFE5D3);
  }
  /* 右上角 ⋯ 下拉在窄卡里会压住封面（长按卡片同样能进帖子，功能不丢） */
  .DiscussionList-discussions.wb-duo .DiscussionListItem-controls { display: none !important; }
  .DiscussionList-discussions.wb-duo .DiscussionListItem-main {
    display: block !important;
    padding: 9px 10px 5px !important;
  }
  .DiscussionList-discussions.wb-duo .DiscussionListItem-title {
    font-size: 13px !important;
    line-height: 1.38 !important;
    margin: 0 !important;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .DiscussionList-discussions.wb-duo .DiscussionListItem-info {
    padding: 0 10px 10px !important;
    font-size: 10.5px !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .DiscussionList-discussions.wb-duo .DiscussionListItem-info .item-excerpt { display: none !important; }
}

/* 备案期登录门禁页：没有底部 Tab，就不要给它留 60px 空隙 */
html[data-wb-gate] body { padding-bottom: 26px !important; }
