/* 论坛插件样式 */

/* 瀑布流帖子卡片 */
.thread-masonry {
    columns: 2;
    column-gap: 1.25rem;
}
.thread-masonry-item {
    break-inside: avoid;
    margin-bottom: 1.25rem;
    background: var(--card-bg, #fff);
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);
    cursor: pointer;
    transition: all 0.2s;
}
.thread-masonry-item:hover {
    transform: translateY(-3px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.12);
}
.thread-masonry-cover {
    width: 100%;
    aspect-ratio: 4/3;
    object-fit: cover;
    display: block;
}
.thread-masonry-body {
    padding: 1rem;
}
.thread-masonry-title {
    font-size: 1rem;
    font-weight: 600;
    color: var(--text-color, #1e293b);
    margin: 0 0 0.5rem 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: 1.4;
}
.thread-masonry-summary {
    font-size: 0.875rem;
    color: var(--text-muted, #64748b);
    margin: 0 0 0.625rem 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: 1.6;
}

/* 版块导航标签 */
.badge.rounded-pill {
    padding: 0.4rem 0.8rem;
    font-size: 0.8rem;
    font-weight: 500;
    transition: all 0.2s;
}
.badge.rounded-pill:hover {
    transform: scale(1.05);
}

/* 版块卡片网格响应式 */
@media (max-width: 768px) {
    .board-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    .board-card {
        height: 100px;
    }
    .board-card-name {
        font-size: 0.9rem;
    }
    .thread-masonry {
        columns: 1;
    }
}

/* ============ 帖子列表（forum 模式 thread-list-item） ============
   基础 flex 布局必须在社区样式内自带：subsite 频道/论坛壳只加载 bootstrap+common.css+本文件，
   不加载主题 themes/default/css/style.css（该文件原有同名规则）。缺失时 .thread-list-item
   退化为 block、.thread-thumb 以内联原图尺寸（实测 1024×1024）铺开，列表整行错位。
   主站壳会同时加载两份，规则同值不冲突。 */
.thread-list-item {
    display: flex;
    gap: 1rem;
    padding: 1rem;
    border-bottom: 1px solid var(--border, #e5e7eb);
    transition: background 0.2s;
    cursor: pointer;
}
.thread-list-item:last-child { border-bottom: none; }
.thread-list-item:hover { background: #f7fafc; }
.thread-thumb {
    width: 120px;
    height: 80px;
    border-radius: 8px;
    object-fit: cover;
    flex-shrink: 0;
    background: #1e293b;
}
.thread-content { flex: 1; min-width: 0; }
.thread-title { font-size: 1rem; font-weight: 600; margin: 0 0 .25rem; }
.thread-excerpt {
    font-size: .85rem;
    color: var(--text-light, #6b7280);
    margin: 0 0 .5rem;
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.thread-meta {
    display: flex;
    align-items: center;
    gap: 1rem;
    font-size: .8rem;
    color: var(--text-light, #6b7280);
}
body.dark .thread-list-item:hover { background: #2d3748; }

/* 帖子列表移动端 */
@media (max-width: 576px) {
    .thread-list-item {
        flex-direction: column;
        gap: 0.5rem;
    }
    .thread-thumb {
        width: 100%;
        height: 160px;
    }
    .thread-meta {
        flex-wrap: wrap;
        gap: 0.5rem;
        font-size: 0.8125rem;
    }
}

/* 帖子详情桌面端标题：与社区卡片/板块标题同档（22.4px），覆盖 Bootstrap h1 默认大字号 */
.article-title{font-size:1.4rem;}

/* 帖子详情移动端 */
@media (max-width: 768px) {
    .article-title {
        font-size: 1.3rem;
    }
    .article-actions {
        flex-wrap: wrap;
    }
    .comment-input textarea {
        font-size: 0.9rem;
    }
}

/* 发帖页移动端 */
@media (max-width: 576px) {
    .btn-group label {
        font-size: 0.8125rem;
        padding: 0.375rem 0.5rem;
    }
}

/* 话题标签小尺寸 */
.tag {
    font-size: 0.8125rem !important;
    padding: 0.2rem 0.6rem !important;
}

/* 图片轮播指示器 */
.carousel-indicators button {
    width: 8px !important;
    height: 8px !important;
    border-radius: 50%;
}

/* 评论区 */
.comment-item:hover {
    background: #f8fafc;
}
.comment-replies .comment-item:hover {
    background: transparent;
}

/* 版块横幅（#158：基础样式原在 themes/default/css 主站主题，subsite 频道壳不加载主题 CSS，
   导致 UFO/军事板块页 hero 塌陷为 925px 裸图流——overlay 绝对定位失效、标题被推到图外。
   此处完整移植，普通板块页主题侧同名规则共存，值一致无冲突） */
.board-hero{position:relative;border-radius:16px;overflow:hidden;height:180px;margin-bottom:20px;background-image:url('../../assets/img/products/community_hero.jpg'),linear-gradient(135deg,#0a1628 0%,#1e3a5f 50%,#1e1b4b 100%);background-size:cover;background-position:center;transition:height .6s cubic-bezier(.2,.8,.2,1),margin-bottom .6s cubic-bezier(.2,.8,.2,1);}
.board-hero.collapsed{height:62px;margin-bottom:12px;border-radius:12px;}
.board-hero.collapsed .board-hero-overlay{padding:.6rem 1.25rem;}
.board-hero.collapsed h1{font-size:20px;margin:0;}
.board-hero.collapsed p{display:none;}
.board-hero.collapsed .breadcrumb{display:none;}
.board-hero.collapsed .comm-stat-num{font-size:15px;}
.board-hero.collapsed .comm-stat-label{display:none;}
.board-hero.collapsed .comm-banner-actions .btn{padding:4px 10px;font-size:12px;}
.board-hero .comm-banner-stats{display:flex;gap:22px;flex-shrink:0;}
.board-hero .comm-stat{text-align:center;}
.board-hero .comm-stat-num{font-size:22px;font-weight:900;line-height:1.1;color:#fff;display:block;}
.board-hero .comm-stat-label{font-size:11px;opacity:.8;margin-top:2px;}
.board-hero .comm-banner-actions{display:flex;gap:10px;align-items:center;flex-shrink:0;}
.board-hero .mode-switcher .btn-outline-light{color:#fff;border-color:rgba(255,255,255,.5);}
.board-hero .mode-switcher .btn-outline-light:hover{background:rgba(255,255,255,.15);}
.board-hero .mode-switcher .mode-label{font-size:.78rem;font-weight:500;margin-left:3px;}
@media(max-width:576px){.board-hero .mode-switcher .mode-label{display:none;}}
.board-hero img{width:100%;height:100%;object-fit:cover;display:block;}
.board-hero-overlay{position:absolute;inset:0;display:flex;align-items:center;padding:2rem;color:#fff;background:linear-gradient(90deg,rgba(10,22,40,.75) 0%,rgba(10,22,40,.5) 45%,rgba(10,22,40,.15) 100%);z-index:1;}
.board-hero h1{text-shadow:0 2px 4px rgba(0,0,0,0.3);}
.board-hero p{opacity:0.9;margin-bottom:0;}
.board-hero .breadcrumb-item+.breadcrumb-item::before{color:rgba(255,255,255,.6);}
/* 流光扫过 */
.board-hero::after{content:'';position:absolute;top:0;left:-60%;width:50%;height:100%;background:linear-gradient(120deg,transparent 0%,rgba(125,211,252,.18) 35%,rgba(255,255,255,.35) 50%,rgba(125,211,252,.18) 65%,transparent 100%);transform:skewX(-20deg);animation:board-hero-sweep 5s ease-in-out infinite;z-index:1;pointer-events:none;}
@keyframes board-hero-sweep{0%,100%{left:-60%;}50%{left:120%;}}

/* 帖子卡片hover效果 */
.post-card {
    transition: transform 0.2s, box-shadow 0.2s;
    overflow: hidden;
}
.post-card:hover {
    transform: translateY(-3px);
}

/* 帖子卡片图片限制 - 防止放大（不影响封面图固定高度） */
.post-card img:not(.post-cover) {
    max-width: 100%;
    height: auto;
}

/* 瀑布流布局 */
.masonry-grid {
    column-count: 2;
    column-gap: 16px;
}
.masonry-item {
    break-inside: avoid;
    margin-bottom: 16px;
}
@media (max-width: 768px) {
    .masonry-grid {
        column-count: 1;
    }
}

/* 操作按钮（subsite 频道壳不加载主题 style.css，基础重置必须在社区样式内自带，
   否则按钮退化为浏览器原生灰白底 + 2px 黑色 outset 边框） */
.action-btn {
    display:inline-flex;align-items:center;gap:.4rem;
    padding:.45rem .8rem;border:none;border-radius:8px;
    background:transparent;color:inherit;
    font-size:.9rem;line-height:1.4;cursor:pointer;
    transition: all 0.2s;
}
.action-btn:hover {
    background: #f1f5f9;
    transform: scale(1.05);
}
.action-btn.liked {
    color: #ef4444;
}
.action-btn.favorited {
    color: #f59e0b;
}

/* YouTube风格评论操作按钮 - 纯图标无边框 */
.comment-action-btn {
    background: none !important;
    border: none !important;
    outline: none !important;
    box-shadow: none !important;
    padding: 6px 8px;
    border-radius: 50%;
    color: #606060;
    font-size: 14px;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    cursor: pointer;
    transition: all 0.2s;
}

.comment-action-btn:hover {
    background: #f0f0f0;
    color: #0f0f0f;
}

.comment-action-btn i {
    font-size: 18px;
}

.comment-action-btn span {
    font-size: 13px;
}

.comment-action-btn.liked {
    color: #065fd4;
}

.comment-action-btn.disliked {
    color: #065fd4;
}

.comment-action-btn.hearted {
    color: #ff0000;
}
.comment-action-btn.heart-btn {
    color: #ff4d6d;
}
.comment-action-btn.heart-btn:hover {
    color: #ff0000;
    background: #ffebee;
}

/* 黑夜模式适配 */
body.dark .comment-item:hover {
    background: #374151;
}
body.dark .action-btn:hover {
    background: #374151;
}

/* ============ 社区双模式（方案C T1 追加，不改动上方原有选择器） ============ */

/* 模式切换器 */
.mode-switcher{box-shadow:0 2px 8px rgba(59,130,246,.35);border-radius:8px;}
.mode-switcher .btn{border-radius:8px;}
@media (max-width:576px){
    .mode-switcher .btn{height:44px;padding:0 12px;}
}

/* 模式可见性（body class 由 header 输出 mode-feed / mode-forum） */
body.mode-forum #view-feed{display:none!important;}
body.mode-feed #view-forum{display:none!important;}

/* 帖子详情页类可见性（thread.php 用 .feed-only / .forum-only 包裹两种布局） */
body.mode-feed .feed-only{display:block!important;}
body.mode-feed .forum-only{display:none!important;}
body.mode-forum .feed-only{display:none!important;}
body.mode-forum .forum-only{display:block!important;}
/* 视频模式打开单帖：按沉浸式详情渲染（视频置顶），隐藏论坛经典布局，否则两套 DOM 同显内容重复 */
body.mode-video .feed-only{display:block!important;}
body.mode-video .forum-only{display:none!important;}

/* Feed 沉浸式详情（thread.php）：阅读场景，收窄到 900 居中（P3 密度策略），≤768 铺满 */
.feed-only{max-width:var(--site-read,900px);margin:0 auto;}
@media (max-width:768px){.feed-only{max-width:100%;}}

/* Feed 沉浸式详情 Hero（thread.php）
   #166 对齐军事专题 .mil-banner：用 height:420px 固定高度（原 min-height:420px 在某些布局下会被压缩变矮，
   导致大图被自动截取显示成矮条；固定 height 后无论图片比例与父容器如何，hero 永远 420px 高，
   background-size:cover 按容器比例裁剪图片而非容器被图片压扁） */
.feed-hero{position:relative;height:420px;background-size:cover;background-position:center;border-radius:12px;overflow:hidden;}
.feed-hero-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,23,42,.25) 0%,rgba(15,23,42,.75) 100%);padding:20px;display:flex;flex-direction:column;justify-content:flex-end;z-index:1;}
/* 底部加厚遮罩：hero 86% 以下才陡升（保住老图 cy≈631 的图标），到 90% 处近全遮，盖住海报 SVG 标题带（y≥700） */
.feed-hero::after{content:'';position:absolute;left:0;right:0;bottom:0;height:30%;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(15,23,42,0) 0%,rgba(15,23,42,0) 53%,rgba(15,23,42,.97) 62%,rgba(15,23,42,.98) 100%);}
.feed-hero-title{color:#fff;font-size:1.4rem;font-weight:700;line-height:1.3;text-shadow:0 2px 8px rgba(0,0,0,.5);}

/* Forum 经典楼层：楼层锚点 */
.comment-item{scroll-margin-top:80px;}
.comment-header{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.comment-floor{margin-left:auto;color:#a8b8cc;font-size:0.8rem;text-decoration:none;flex-shrink:0;}
.comment-floor:hover{color:#3b82f6;text-decoration:none;}

/* Feed 列表流（#view-feed 仅存在于社区首页与版块列表）：#152 用户要求与页面上下（hero 统计栏/话题栏/分页/页脚）总宽度一致，
   取消原 1280 居中限宽，恢复与 container-main 版心同宽铺满 */
#view-feed{max-width:100%;}

/* Feed 瀑布流：回退方案（CSS columns） */
/* 列表小标题「最新帖子」：翻页后视口锚定此处（#193 用户要求翻页从"最新帖子"字样开始）；
   子站导航为普通文档流（非吸顶），仅留 12px 呼吸间距 */
.feed-list-title{display:flex;align-items:center;gap:8px;font-size:1rem;font-weight:700;color:#e2e8f0;margin:0 0 1rem;padding-left:10px;border-left:3px solid #3b82f6;scroll-margin-top:12px;line-height:1.45;}
.feed-list-title i{color:#60a5fa;}
html.light-theme .feed-list-title{color:#1e293b;}
/* #194 社区(forum)「最新帖子」工具栏标题 / 新媒体(feed)「编辑推荐」标题：同为翻页锚点，留原生锚点呼吸间距 */
#modeListTitle,#editorPicksTitle{scroll-margin-top:12px;}
/* 容器不再设 margin-bottom：子元素 .feed-card 已有 margin-bottom:1.25rem，
   容器多余 margin 会与下方 .feed-recommend-grid 的 margin-top:20px 折叠产生隐性双倍空白风险 */
.feed-grid{columns:1;column-gap:1.25rem;}
.feed-card{break-inside:avoid;margin-bottom:1.25rem;background:rgba(30,41,59,0.7);border:1px solid rgba(59,130,246,0.2);box-shadow:0 0 20px rgba(59,130,246,0.15);backdrop-filter:blur(10px);border-radius:12px;overflow:hidden;cursor:pointer;transition:transform .3s,box-shadow .3s;}
.feed-card:hover{transform:translateY(-2px);box-shadow:0 0 30px rgba(96,165,250,0.4);}
.feed-card .feed-cover{width:100%;display:block;object-fit:cover;background:#1e293b;}
.feed-card .feed-body{padding:14px 16px;}
.feed-card .feed-title{font-size:16px;font-weight:600;color:#fff;margin-bottom:8px;line-height:1.4;}
.feed-card .feed-summary{font-size:14px;color:#a8b8cc;line-height:1.6;margin-bottom:10px;}
.feed-card .feed-meta{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:#a8b8cc;}
@media (min-width:576px){.feed-grid{columns:2;}}
@media (min-width:768px){.feed-grid{columns:3;}}
@media (min-width:1200px){.feed-grid{columns:4;}}

/* 支持 CSS Masonry Level3 时改用原生瀑布流 */
@supports (grid-template-rows: masonry) {
    .feed-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:masonry;gap:1rem;columns:auto;}
    .feed-card{margin-bottom:0;}
    @media (max-width:575.98px){.feed-grid{grid-template-columns:1fr;}}
    @media (min-width:576px) and (max-width:767.98px){.feed-grid{grid-template-columns:repeat(2,1fr);}}
}

/* 懒加载淡入（IntersectionObserver 加载后加 .lazy-loaded） */
img.lazy-img{opacity:0;transition:opacity .4s ease;}
img.lazy-img.lazy-loaded{opacity:1;}

/* 点赞爱心动效（不影响原有 like 提交逻辑） */
@keyframes heart-pop{0%{transform:scale(1);}40%{transform:scale(1.45);}100%{transform:scale(1);}}
.like-btn.heart-pop i{animation:heart-pop .45s ease;}

/* ============ Feed 模式：精选横幅 + 推荐卡片（纯CSS，无外部依赖） ============ */
/* ===== #207 今日精选横幅：精华头条榜 Top5 + 常驻统计 + 极光流光底边 ===== */
.feed-hero-banner{
    height:200px;border-radius:12px;
    background:linear-gradient(135deg,#1e293b 0%,#0f172a 50%,#1e3a5f 100%);
    border:1px solid rgba(59,130,246,0.3);
    box-shadow:0 0 30px rgba(59,130,246,0.2);
    margin-bottom:24px;overflow:hidden;position:relative;
    display:flex;align-items:stretch;gap:28px;padding:20px 28px;
}
.feed-hero-banner::before{
    content:'';position:absolute;inset:0;
    background:radial-gradient(ellipse at top right,rgba(59,130,246,0.15),transparent 60%);
    pointer-events:none;z-index:0;
}
/* 彩色流光底边 */
.feed-hero-banner::after{
    content:'';position:absolute;left:0;right:0;bottom:0;height:2px;z-index:3;
    background:linear-gradient(90deg,transparent 0%,#3b82f6 22%,#8b5cf6 48%,#22d3ee 74%,#3b82f6 100%);
    background-size:200% 100%;animation:fhb-flow 5s linear infinite;
}
@keyframes fhb-flow{to{background-position:-200% 0;}}
/* 极光光斑（两团蓝紫径向光缓慢漂移） */
.fhb-aurora{position:absolute;border-radius:50%;filter:blur(50px);pointer-events:none;z-index:0;}
.fhb-aurora-1{width:440px;height:440px;top:-200px;left:26%;
    background:radial-gradient(circle,rgba(59,130,246,.26),transparent 65%);
    animation:fhb-drift1 15s ease-in-out infinite alternate;}
.fhb-aurora-2{width:400px;height:400px;bottom:-210px;right:16%;
    background:radial-gradient(circle,rgba(139,92,246,.24),transparent 65%);
    animation:fhb-drift2 19s ease-in-out infinite alternate;}
@keyframes fhb-drift1{from{transform:translateX(-70px)}to{transform:translateX(90px)}}
@keyframes fhb-drift2{from{transform:translateX(70px)}to{transform:translateX(-80px)}}
/* 左侧标题区 */
.fhb-intro{position:relative;z-index:2;width:168px;flex-shrink:0;display:flex;flex-direction:column;justify-content:center;}
.fhb-intro h5{margin:0 0 8px;font-size:1.22rem;font-weight:800;color:#fff;white-space:nowrap;}
.fhb-intro h5 i{background:linear-gradient(135deg,#fde047,#f59e0b);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;margin-right:5px;}
.fhb-intro p{margin:0;font-size:13px;color:#a8b8cc;line-height:1.6;}
/* 中间头条榜（微博热榜式：序号+标题+热度） */
.fhb-list{position:relative;z-index:2;flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:2px;}
.fhb-item{display:flex;align-items:center;gap:12px;height:28px;padding:0 10px;border-radius:8px;text-decoration:none;transition:background .2s,transform .2s;}
.fhb-item:hover{background:rgba(96,165,250,.12);transform:translateX(4px);}
.fhb-rank{width:26px;flex-shrink:0;font-size:15px;font-weight:900;font-style:italic;font-family:Georgia,'Times New Roman',serif;text-align:center;color:#7dd3fc;}
.fhb-rank.r1{background:linear-gradient(135deg,#fde047,#f59e0b);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:0 0 14px rgba(251,191,36,.55);}
.fhb-rank.r2{background:linear-gradient(135deg,#fecdd3,#fb7185);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.fhb-rank.r3{background:linear-gradient(135deg,#fdba74,#f97316);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.fhb-title{flex:1;min-width:0;font-size:14px;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.fhb-item:hover .fhb-title{color:#93c5fd;}
.fhb-hot{flex-shrink:0;width:54px;text-align:right;font-size:12px;color:#fbbf24;font-weight:700;white-space:nowrap;}
.fhb-hot i{font-size:11px;margin-right:2px;}
/* 右侧常驻统计（精华/热门/7日活跃，替代冷清的今日0帖） */
.fhb-stats{position:relative;z-index:2;flex-shrink:0;width:152px;display:flex;flex-direction:column;justify-content:center;gap:10px;
    border-left:1px solid rgba(148,163,184,.18);padding-left:22px;}
.fhb-stats span{font-size:13px;color:#a8b8cc;white-space:nowrap;display:flex;align-items:center;gap:7px;}
.fhb-stats b{color:#fff;font-weight:800;font-size:15px;margin-left:auto;}
.fhb-stats i{font-size:14px;}
.fhb-ic-essence{color:#fbbf24;}.fhb-ic-hot{color:#fb7185;}.fhb-ic-active{color:#60a5fa;}
/* 浅色态 */
html.light-theme .fhb-intro h5{color:#0f172a;}
html.light-theme .fhb-intro p{color:#6b7280;}
html.light-theme .fhb-item:hover{background:rgba(0,113,227,.08);}
html.light-theme .fhb-title{color:#1e293b;}
html.light-theme .fhb-item:hover .fhb-title{color:#0071e3;}
html.light-theme .fhb-hot{color:#ea580c;}
html.light-theme .fhb-stats{border-left-color:#dbe3ef;}
html.light-theme .fhb-stats span{color:#64748b;}
html.light-theme .fhb-stats b{color:#0f172a;}
html.light-theme .fhb-rank{color:#2563eb;}
html.light-theme .fhb-rank.r1{background:none;-webkit-text-fill-color:#d97706;text-shadow:0 0 12px rgba(217,119,6,.28);}
html.light-theme .fhb-rank.r2{background:none;-webkit-text-fill-color:#e11d48;}
html.light-theme .fhb-rank.r3{background:none;-webkit-text-fill-color:#ea580c;}
@media (prefers-reduced-motion:reduce){
    .feed-hero-banner::after,.fhb-aurora-1,.fhb-aurora-2{animation:none;}
}

/* 底部推荐版块卡片（板块海报大图） */
/* #154 统一区块纵向节奏 24px：实测 Chrome 142 平衡多列布局会截断末卡 margin-bottom
   （瀑布流容器高度不含末卡 mb 20px），故此处直接给足 24px，勿按"末卡 mb 参与"折叠计算 */
.feed-recommend-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-top:24px;}
.feed-recommend-card{
    position:relative;height:130px;border-radius:12px;overflow:hidden;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
    text-decoration:none!important;color:#fff!important;
    border:1px solid rgba(59,130,246,0.2);
    transition:transform .3s,box-shadow .3s;
}
.feed-recommend-card:hover{transform:translateY(-2px);box-shadow:0 0 30px rgba(96,165,250,0.4);}
.feed-recommend-icon{font-size:2rem;color:rgba(255,255,255,0.8);}
.feed-recommend-name{font-size:16px;font-weight:600;}
.feed-recommend-count{font-size:13px;color:rgba(255,255,255,0.7);}

/* ============ Forum 模式：经典三栏布局（CSS类化，响应式友好） ============ */
.forum-layout{display:grid;grid-template-columns:200px minmax(0,1fr) 240px;gap:20px;width:100%;min-width:0;max-width:100%;overflow:hidden;}
.forum-panel{
    background:rgba(30,41,59,0.7);border:1px solid rgba(59,130,246,0.2);
    backdrop-filter:blur(10px);border-radius:12px;
    min-width:0; /* grid 子元素默认 min-width:auto 不会缩到内容以下，长用户名/标签会撑破列宽 */
    overflow:hidden;
}
.forum-sidebar-left,.forum-sidebar-right{padding:18px;}
.forum-panel-title{color:#7db8fc;margin-bottom:14px;font-size:15px;font-weight:600;}
.forum-board-link{display:flex;align-items:center;gap:8px;color:#e2e8f0;padding:0 12px;height:36px;border-radius:6px;text-decoration:none;font-size:14px;transition:background .2s,border-color .2s;border-left:3px solid transparent;}
.forum-board-link:hover{background:rgba(59,130,246,0.1);border-left-color:#60a5fa;}
.forum-board-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.forum-board-icon{font-size:1rem;width:18px;text-align:center;color:#7db8fc;flex-shrink:0;}
html.light-theme .forum-board-icon{color:#0b5ed7;}
.forum-board-count{color:#a8b8cc;font-size:12px;background:rgba(59,130,246,.15);padding:1px 7px;border-radius:10px;}
/* 主题列表直接置顶，去除上方白色留白 */
.forum-main{overflow:hidden;padding-top:0;}
.forum-thread-header{display:grid;grid-template-columns:1fr 80px 80px;padding:10px 12px;background:rgba(59,130,246,0.1);color:#a8b8cc;font-size:13px;font-weight:600;border-bottom:1px solid rgba(59,130,246,.2);}
.forum-thread-row{display:grid;grid-template-columns:1fr 80px 80px;padding:10px 12px;border-bottom:1px solid rgba(59,130,246,0.08);color:#e2e8f0;text-decoration:none;font-size:14px;align-items:center;transition:background .2s,padding-left .2s;}
.forum-thread-row:nth-child(odd){background:rgba(255,255,255,.015);}
.forum-thread-row:hover{background:rgba(59,130,246,0.08);padding-left:16px;}
.forum-thread-row.is-top{background:rgba(239,68,68,.04);border-left:3px solid #ef4444;padding-left:9px;}
.forum-thread-row.is-top:hover{background:rgba(239,68,68,.08);}
.forum-thread-title{line-height:1.4;}
.forum-thread-author{color:#a8b8cc;font-size:12px;display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;}
.forum-thread-author .author-mini-av,.forum-thread-author img.m2m-av{width:18px;height:18px;border-radius:50%;object-fit:cover;flex-shrink:0;}
img.m2m-av{object-fit:cover;display:inline-block;vertical-align:middle;flex-shrink:0;border-radius:50%;}
.forum-thread-replies{color:#7db8fc;text-align:center;}
.forum-thread-views{color:#a8b8cc;text-align:center;}
.forum-user-item{display:flex;align-items:center;gap:8px;margin-bottom:12px;min-width:0;}
.forum-user-avatar{width:32px;height:32px;border-radius:50%;background:transparent;color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0;position:relative;overflow:hidden;padding:0;}
.forum-user-avatar img{width:32px;height:32px;border-radius:50%;object-fit:cover;}
.forum-user-avatar.is-online::after{content:'';position:absolute;right:-1px;bottom:-1px;width:11px;height:11px;border-radius:50%;background:#22c55e;border:2px solid #0f172a;box-shadow:0 0 4px rgba(34,197,94,0.6);}
html.light-theme .forum-user-avatar.is-online::after{border-color:#fff;}
.forum-user-name{color:#e2e8f0;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
.forum-tag-cloud{display:flex;flex-wrap:wrap;gap:8px;}
.forum-tag-cloud .hashtag{padding:5px 12px;font-size:12px;}
.forum-tag{background:rgba(59,130,246,0.15);color:#7db8fc;padding:5px 12px;border-radius:20px;font-size:13px;text-decoration:none;transition:background .2s;}
.forum-tag:hover{background:rgba(59,130,246,0.3);}

/* ============ 移动端响应式优化（重构：堆叠而非隐藏） ============ */
/* 平板：Feed 横幅缩高、推荐卡片两列（统计栏在 140+152 宽度下仍放得下，保留显示） */
@media (max-width:992px){
    .feed-hero-banner{height:176px;padding:14px 20px;gap:18px;}
    .fhb-intro{width:140px;}
    .fhb-intro h5{font-size:1.08rem;}
    .fhb-intro p{font-size:12px;}
    .feed-recommend-grid{grid-template-columns:1fr 1fr;}
}
/* 手机：Forum 三栏 → 单栏堆叠（侧边栏移到帖子列表下方，不再隐藏） */
@media (max-width:768px){
    .forum-layout{grid-template-columns:1fr;}
    /* 帖子行缩小回复/浏览列 */
    .forum-thread-header,.forum-thread-row{grid-template-columns:1fr 60px 60px;}
    /* #207 横幅纵向堆叠：标题单行，头条榜只留 Top3，统计栏隐藏 */
    .feed-hero-banner{height:auto;padding:12px 14px;flex-direction:column;align-items:stretch;gap:6px;}
    .fhb-intro{width:auto;flex-direction:row;align-items:center;gap:10px;}
    .fhb-intro p{display:none;}
    .fhb-stats{display:none;}
    .fhb-item:nth-child(n+4){display:none;}
    .fhb-item{height:30px;}
    .feed-recommend-grid{grid-template-columns:1fr;}
    .feed-recommend-card{height:90px;flex-direction:row;justify-content:flex-start;padding:0 20px;gap:12px;}
    .feed-recommend-icon{font-size:1.4rem;}
}
/* 超小屏：瀑布流单列、统计卡片紧凑 */
@media (max-width:576px){
    .feed-grid{columns:1;}
    .forum-thread-header,.forum-thread-row{grid-template-columns:1fr 50px 50px;font-size:14px;}
    .stat-card{padding:12px 8px;}
    .stat-card .h4{font-size:1.1rem;}
    .board-hero{height:180px;}
    .board-hero-overlay{padding:1.25rem;}
    /* #166 对齐军事专题 .mil-banner 移动端降级（640px→340px 标准，取 576px 阈值） */
    .feed-hero{height:340px;}
    .mode-switcher .btn{flex:1;text-align:center;}
    .feed-card .feed-body{padding:12px 14px;}
    .feed-card .feed-title{font-size:15px;}
    .feed-card .feed-summary{font-size:13px;}
    .feed-card .feed-meta{font-size:12px;}
}

/* ============================================================
   聚合广场页（版块导航 category / 话题广场 tags / 话题详情）
   ============================================================ */

/* 广场横幅（延续 board-hero 设计语言） */
.hub-hero{position:relative;border-radius:var(--radius,16px);overflow:hidden;margin-bottom:1.75rem;
    background:linear-gradient(135deg,#667eea 0%,#764ba2 55%,#a855f7 100%);
    box-shadow:0 12px 40px rgba(102,126,234,.25);}
.hub-hero--tags{background:linear-gradient(135deg,#0ea5e9 0%,#6366f1 55%,#8b5cf6 100%);}
.hub-hero-overlay{position:relative;padding:2.6rem 2.2rem;color:#fff;
    background:radial-gradient(circle at 88% 12%,rgba(255,255,255,.20),transparent 46%);}
.hub-hero .breadcrumb{margin-bottom:.5rem;}
.hub-hero-title{font-size:2rem;font-weight:800;margin:.2rem 0 .55rem;text-shadow:0 2px 10px rgba(0,0,0,.25);}
.hub-hero-subtitle{opacity:.92;margin:0 0 1.05rem;font-size:1.02rem;}
.hub-hero-stats{font-size:.95rem;opacity:.95;display:flex;gap:.55rem;align-items:center;flex-wrap:wrap;}
.hub-hero-stats b{font-size:1.18rem;font-weight:800;}
.hub-hero-dot{opacity:.55;}

/* 通用卡片网格 */
.hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.1rem;}

/* 版块卡片 */
.board-tile{position:relative;display:flex;flex-wrap:wrap;align-items:flex-start;gap:.9rem;
    background:var(--card-bg-solid,#fff);border:1px solid var(--border,#e2e8f0);border-radius:12px;
    padding:1.25rem 1.25rem 1.25rem 1.4rem;text-decoration:none;color:var(--text,#1e293b);overflow:hidden;
    transition:transform .25s,box-shadow .25s,border-color .25s;}
.board-tile:hover{transform:translateY(-6px);color:var(--text,#1e293b);
    box-shadow:0 18px 42px -14px color-mix(in srgb,var(--tile-color) 48%,transparent);
    border-color:color-mix(in srgb,var(--tile-color) 45%,var(--border,#e2e8f0));}
.board-tile-accent{position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--tile-color);}
.board-tile-icon{flex:0 0 auto;width:54px;height:54px;border-radius:14px;display:flex;align-items:center;justify-content:center;
    font-size:1.6rem;background:color-mix(in srgb,var(--tile-color) 14%,#fff);
    box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--tile-color) 26%,transparent);}
.board-tile-body{flex:1;min-width:0;}
.board-tile-name{font-size:1.1rem;font-weight:700;margin:0 0 .25rem;}
.board-tile-desc{font-size:.86rem;color:var(--text-secondary,#64748b);margin:0 0 .65rem;line-height:1.5;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.board-tile-meta{display:flex;gap:1rem;font-size:.8rem;color:var(--text-light,#a8b8cc);}
.board-tile-meta i{margin-right:2px;}
.board-tile-go{flex:0 0 auto;align-self:center;color:var(--tile-color);opacity:0;transform:translateX(-6px);transition:.25s;font-size:1.1rem;}
.board-tile:hover .board-tile-go{opacity:1;transform:translateX(0);}
/* #219 封面条：有 cover_image 时卡片顶部横幅（负边距出血到卡片边缘，圆角对齐卡片） */
.board-tile-cover{flex:0 0 calc(100% + 2.65rem);height:104px;margin:-1.25rem -1.25rem .1rem -1.4rem;
    background-size:cover;background-position:center;border-radius:11px 11px 0 0;position:relative;}
/* #219 子版块 chip 行：父级卡片内独占一行（a 内不能再嵌 a，chip 用 span+onclick 跳转） */
.board-tile-subs{flex:0 0 100%;display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;
    margin-top:.35rem;padding-top:.7rem;border-top:1px dashed var(--border,#e2e8f0);}
.board-tile-subs-label{font-size:.72rem;color:var(--text-light,#a8b8cc);display:inline-flex;align-items:center;gap:3px;margin-right:.15rem;}
.board-sub-chip{display:inline-flex;align-items:center;gap:4px;font-size:.78rem;font-weight:600;padding:2px 10px;border-radius:20px;cursor:pointer;
    color:color-mix(in srgb,var(--tile-color) 72%,var(--text,#1e293b));
    background:color-mix(in srgb,var(--tile-color) 10%,transparent);
    border:1px solid color-mix(in srgb,var(--tile-color) 28%,transparent);
    transition:background .2s,transform .2s;}
.board-sub-chip:hover{background:color-mix(in srgb,var(--tile-color) 20%,transparent);transform:translateY(-1px);}
body.dark .board-sub-chip{color:color-mix(in srgb,var(--tile-color) 55%,#e9edf7);
    background:color-mix(in srgb,var(--tile-color) 20%,transparent);
    border-color:color-mix(in srgb,var(--tile-color) 42%,transparent);}
body.dark .board-sub-chip:hover{background:color-mix(in srgb,var(--tile-color) 30%,transparent);}
body.dark .board-tile-subs{border-top-color:rgba(148,163,184,.25);}

/* 话题分组 */
.tag-group{margin-bottom:1.9rem;}
.tag-group-title{display:flex;align-items:center;gap:.55rem;font-size:1.15rem;font-weight:700;margin:0 0 .95rem;
    padding-bottom:.65rem;border-bottom:2px solid var(--border-light,#f1f5f9);}
.tag-group-title i{color:var(--cat-color);font-size:1.2rem;}
.tag-group-count{font-size:.75rem;font-weight:700;color:color-mix(in srgb,var(--cat-color) 52%,#000);background:color-mix(in srgb,var(--cat-color) 12%,#fff);border:1px solid color-mix(in srgb,var(--cat-color) 35%,#fff);border-radius:20px;padding:1px 10px;}
.hub-grid--tags{grid-template-columns:repeat(auto-fill,minmax(265px,1fr));gap:.85rem;}

/* 话题卡片 */
.tag-tile{display:flex;align-items:center;gap:.8rem;background:var(--card-bg-solid,#fff);
    border:1px solid var(--border,#e2e8f0);border-radius:12px;padding:.85rem 1rem;text-decoration:none;color:var(--text,#1e293b);
    transition:transform .2s,box-shadow .2s,border-color .2s;}
.tag-tile:hover{transform:translateY(-6px);color:var(--text,#1e293b);border-color:var(--tile-color);
    box-shadow:0 14px 30px -12px color-mix(in srgb,var(--tile-color) 50%,transparent);}
.tag-tile-hash{flex:0 0 auto;width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;
    font-size:1.35rem;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--tile-color),#764ba2);}
.tag-tile-cover{flex:0 0 auto;width:52px;height:52px;border-radius:11px;object-fit:cover;}
.tag-tile-body{flex:1;min-width:0;display:flex;flex-direction:column;}
.tag-tile-name{font-weight:700;font-size:.98rem;display:flex;align-items:center;gap:.4rem;}
.tag-tile-desc{font-size:.8rem;color:var(--text-secondary,#64748b);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tag-tile-hot{font-size:.62rem;font-weight:800;color:#fff;background:#dc2626;border-radius:5px;padding:1px 5px;letter-spacing:.5px;}
.tag-tile-count{flex:0 0 auto;text-align:right;font-weight:800;font-size:1.05rem;color:var(--tile-color);line-height:1;}
.tag-tile-count small{display:block;font-size:.68rem;font-weight:500;color:var(--text-light,#a8b8cc);margin-top:2px;}

/* 底部 CTA */
.hub-footer-cta{display:flex;align-items:center;justify-content:center;gap:1rem;flex-wrap:wrap;
    margin:2.2rem 0 1rem;padding:1.5rem 1rem;border:1px dashed var(--border,#e2e8f0);border-radius:12px;
    color:var(--text-secondary,#64748b);font-size:.95rem;background:rgba(255,255,255,.5);}
html.dark .hub-footer-cta, body.dark .hub-footer-cta{background:rgba(30,41,59,0.7);border-color:rgba(59,130,246,0.15);color:#a8b8cc;}
.hub-cta-btn{display:inline-flex;align-items:center;gap:.4rem;background:var(--bg-gradient,linear-gradient(135deg,#667eea,#764ba2));
    color:#fff!important;padding:.55rem 1.35rem;border-radius:30px;text-decoration:none;font-weight:600;font-size:.92rem;
    box-shadow:0 8px 20px -6px rgba(102,126,234,.6);transition:transform .2s,box-shadow .2s;}
.hub-cta-btn:hover{transform:translateY(-2px);color:#fff;box-shadow:0 12px 28px -6px rgba(102,126,234,.75);}

/* 话题详情 hero 的 # 装饰 */
.tag-hero-symbol{opacity:.55;font-weight:800;margin-right:2px;}

/* 广场页移动端 */
@media (max-width:576px){
    .hub-hero-overlay{padding:1.6rem 1.2rem;}
    .hub-hero-title{font-size:1.5rem;}
    .hub-grid,.hub-grid--tags{grid-template-columns:1fr;}
    .board-tile-go{opacity:1;transform:none;}
}

/* ============ 首页板块海报卡 / 话题海报卡（feed 模式） ============ */
/* 海报内嵌文字设计在左下角，小卡片用右侧取景（object-position:right）裁掉文字侧，只露 emoji 视觉区 */
.frc-cover,.topic-card-cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:right center;display:block;}
.frc-overlay,.topic-card-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(2,6,23,.06) 30%,rgba(2,6,23,.74));}
.feed-recommend-card .feed-recommend-icon,
.feed-recommend-card .feed-recommend-name,
.feed-recommend-card .feed-recommend-count{position:relative;z-index:1;}
.feed-recommend-card:hover{transform:translateY(-3px);}

/* 话题海报卡片 */
.topic-rail{margin-top:20px;margin-bottom:20px;}
.topic-rail-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;}
.topic-rail-head h6{margin:0;font-size:1.05rem;font-weight:700;color:#e2e8f0;}
.topic-rail-head a{font-size:.85rem;color:#7db8fc;text-decoration:none;}
.topic-rail-head a:hover{color:#93c5fd;}
.topic-rail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;}
.topic-card{position:relative;height:132px;border-radius:12px;overflow:hidden;display:block;
    text-decoration:none!important;color:#fff!important;border:1px solid rgba(59,130,246,.2);
    transition:transform .3s,box-shadow .3s;}
.topic-card:hover{transform:translateY(-3px);box-shadow:0 0 26px rgba(96,165,250,.35);}
.topic-card-body{position:absolute;left:16px;right:16px;bottom:16px;z-index:1;display:flex;flex-direction:column;gap:4px;min-width:0;}
.topic-card-body b{font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.topic-card-hot{font-style:normal;font-size:.6rem;font-weight:800;color:#fff;background:#dc2626;border-radius:4px;padding:1px 4px;margin-left:5px;vertical-align:2px;}
.topic-card-body small{font-size:.75rem;color:rgba(255,255,255,.78);}

/* Forum 侧栏缩略图 */
.fbl-thumb{width:26px;height:26px;border-radius:6px;object-fit:cover;margin-right:8px;vertical-align:-8px;}
.ft-thumb{width:20px;height:20px;border-radius:50%;object-fit:cover;margin-right:5px;vertical-align:-5px;}

/* @提及自动补全面板 */
.mention-popup{position:absolute;z-index:1080;background:#fff;border:1px solid #e2e8f0;border-radius:10px;
  box-shadow:0 10px 30px rgba(15,23,42,.18);overflow:hidden;font-size:.9rem;max-height:240px;overflow-y:auto;}
.mention-item{display:flex;align-items:center;gap:10px;padding:8px 12px;cursor:pointer;color:#0f172a;}
.mention-item:hover{background:#eff6ff;}
.mention-item.active{background:var(--m-sel-bg);color:var(--m-sel-fg);border-color:transparent;}
.mention-item img{width:28px;height:28px;border-radius:50%;object-fit:cover;flex:0 0 28px;}
.mention-fallback{width:28px;height:28px;border-radius:50%;flex:0 0 28px;display:flex;align-items:center;justify-content:center;
  background:#6366f1;color:#fff;font-size:.8rem;}
.mention-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mention-empty{padding:10px 12px;color:#a8b8cc;text-align:center;font-size:.85rem;}

/* 发帖页深色态：alert-info / form-text / text-muted 可读性 */
body.dark .alert-info{background:rgba(59,130,246,0.12)!important;border-color:rgba(59,130,246,0.25)!important;color:#7dd3fc!important;}
body.dark .form-text,body.dark .text-muted{color:#a8b8cc!important;}

/* 发帖页深色态：card / form-control / form-select / 标题 Bootstrap 默认白底深字覆盖 */
body.dark .card{background-color:#2d3748!important;border-color:rgba(255,255,255,0.08)!important;color:#e2e8f0!important;}
body.dark .card h3,body.dark .card .form-label{color:#e2e8f0!important;}
body.dark .form-control,body.dark .form-select,
body.dark input[type="file"].form-control{background-color:rgba(45,55,72,0.7)!important;border-color:rgba(255,255,255,0.12)!important;color:#e2e8f0!important;}
body.dark .form-control::placeholder{color:#a8b8cc!important;}
body.dark .form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23a8b8cc' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")!important;}
body.dark .alert-danger{background:rgba(239,68,68,0.15)!important;border-color:rgba(239,68,68,0.3)!important;color:#fca5a5!important;}
body.dark .btn-outline-secondary{color:#a8b8cc!important;border-color:rgba(255,255,255,0.15)!important;}
body.dark .btn-outline-secondary:hover{background:rgba(255,255,255,0.08)!important;color:#fff!important;}

/* ===== 暗色可读性补全（三模式全页对比度扫描后集中修复，统一链接色 #9db8ff / 弱文字 #cbd5e1） ===== */
/* 「全部」版块药丸：Bootstrap bg-light 在暗色下仍是浅底，改为深紫玻璃态 */
body.dark a.board-pill.bg-light{background:rgba(99,102,241,.14)!important;border:1px solid rgba(129,140,248,.35)!important;color:#c7d2fe!important;}
/* 彩色版块药丸（颜色由行内 --board-color 注入）：暗色下饱和深色直接做文字对比不足，浅/暗双态分别混合 */
.board-nav-pills .board-pill[style]{background:color-mix(in srgb,var(--board-color) 15%,#fff)!important;color:color-mix(in srgb,var(--board-color) 55%,#000)!important;border:1px solid color-mix(in srgb,var(--board-color) 32%,#fff)!important;}
body.dark .board-nav-pills .board-pill[style]{background:color-mix(in srgb,var(--board-color) 26%,transparent)!important;color:color-mix(in srgb,var(--board-color) 50%,#fff)!important;border-color:color-mix(in srgb,var(--board-color) 45%,transparent)!important;}
/* 帖子内 tabs / 排序 nav：Bootstrap 默认 #0d6efd 在 #0a0e27 上仅 4.2:1，提亮（active 保持各组件原配色，不覆盖） */
body.dark .nav-link:not(.active){color:#9db8ff;}
/* 面包屑（hero 图上的 text-white 不受影响，BS 工具类 !important 优先） */
body.dark .breadcrumb-item.active{color:#cbd5e1;}
body.dark .breadcrumb a{color:#9db8ff;}
/* outline-primary 按钮描边/文字提亮 */
body.dark .btn-outline-primary{color:#9db8ff;border-color:rgba(157,184,255,.45);}
body.dark .btn-outline-primary:hover{background:rgba(13,110,253,.28);color:#dbe7ff;border-color:#9db8ff;}
/* 标签页：计数数字不再用深靛 #6366f1，组计数徽章改半透明同色系（--cat-color 行内注入） */
body.dark .tag-tile-count{color:#a5b4fc;}
body.dark .tag-group-count{background:color-mix(in srgb,var(--cat-color) 28%,transparent);color:#e9edf7;border:1px solid color-mix(in srgb,var(--cat-color) 50%,transparent);}
/* 版块宫格图标盒：浅色态是 14% 彩+白的淡彩块；暗色下改半透明同色系，避免白亮块刺眼（与彩色药丸暗色态一致） */
body.dark .board-tile-icon{background:color-mix(in srgb,var(--tile-color) 22%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--tile-color) 42%,transparent);}

/* ===== 浅色模式统一覆盖（board/tag/category 等页复用 dark-first 组件，收敛为与首页一致的白卡浅字） ===== */
html.light-theme .feed-card{background:#fff;border-color:#e8e8ed;box-shadow:0 1px 3px rgba(0,0,0,.06);}
html.light-theme .feed-card:hover{box-shadow:0 10px 28px rgba(0,113,227,.14);}
html.light-theme .feed-card .feed-cover{background:#eef1f5;}
html.light-theme .feed-card .feed-title{color:#1d1d1f;}
html.light-theme .feed-card .feed-summary,
html.light-theme .feed-card .feed-meta{color:#6b7280;}
html.light-theme .thread-excerpt{color:#6e6e73;}
html.light-theme .board-tile-meta{color:#6e6e73;}
html.light-theme .nav-link:not(.active){color:#0b5ed7;}
html.light-theme .breadcrumb a{color:#0b5ed7;}
html.light-theme .btn-outline-primary{color:#0b5ed7;border-color:#9ec5fe;}
html.light-theme .btn-outline-primary:hover{background:#0b5ed7;border-color:#0b5ed7;color:#fff;}
html.light-theme .tag-tile-count{color:color-mix(in srgb,var(--tile-color) 50%,#000);}

/* ============ 视频流沉浸模式（方案C） ============ */

/* 模式可见性：body.mode-video 由 header.php 注入，隐藏 feed/forum 及顶部欢迎框/统计条/排序工具栏
   - glass-card/hero-stats 在 index.php 中未做 PHP 条件包裹，靠此 CSS 隐藏
   - .feed-forum-toolbar 在 index.php 中已有 PHP 条件包裹（VIEW_MODE !== VIDEO 时不输出），此 CSS 作兜底
   - class 命名收敛到 .feed-forum-toolbar，避免长链选择器与 class 顺序敏感问题 */
body.mode-video #view-feed,
body.mode-video #view-forum,
body.mode-video .glass-card,
body.mode-video .hero-stats,
body.mode-video .feed-forum-toolbar,
body.mode-video .hashtag-bar:not(.vc-channel-bar),
body.mode-video .board-nav-row{display:none!important;}
body.mode-feed #view-video,
body.mode-forum #view-video{display:none!important;}

/* 视频模式专属筛选栏（频道 + 视频板块）：仅 mode-video 显示；
   让出约 96px 高度给两行筛选栏，避免页面与 #view-video 双滚动 */
.video-filter-bar{display:none;}
body.mode-video .video-filter-bar{display:block;margin-bottom:8px;}
body.mode-video #view-video{height:calc(100vh - 60px - 96px);}
.vc-channel-bar{margin-bottom:10px;}
.hashtag i{margin-right:2px;}
/* 视频板块药丸（含条数；active 用蓝紫渐变，CSS !important 覆盖板块行内色） */
.vc-board-row{margin:0;}
.vc-board-pill{
    border:1px solid rgba(148,163,184,.35);
    background:rgba(30,41,59,.6)!important;color:#cbd5e1!important;
    padding:.35rem .8rem;font-size:.8rem;transition:all .2s;
}
.vc-board-pill:hover{transform:translateY(-1px);}
.vc-board-pill.active{
    background:var(--m-sel-bg)!important;
    color:var(--m-sel-fg)!important;border-color:transparent!important;
    box-shadow:0 4px 12px -2px rgba(59,130,246,.5);
}
.vc-board-cnt{opacity:.7;font-size:.72rem;margin-left:2px;}
html.light-theme .vc-board-pill{background:#fff!important;color:#4b5563!important;}
/* 视频卡底部标签：a 标签化后保持药丸外观 */
.video-card-tags .tag{display:inline-block;text-decoration:none;cursor:pointer;transition:background .2s,border-color .2s;}
.video-card-tags .tag:hover{background:rgba(59,130,246,.45);border-color:rgba(147,197,253,.7);color:#fff;}

/* 视频流容器：全屏 + 垂直 scroll-snap 吸附 */
#view-video{height:calc(100vh - 60px);overflow-y:scroll;scroll-snap-type:y mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;}
.video-feed-container{display:flex;flex-direction:column;}

/* 单卡：全屏高度 + 背景图 + snap 起点 */
.video-card{
    height:calc(100vh - 60px);
    scroll-snap-align:start;
    scroll-snap-stop:always;
    position:relative;
    background-size:cover;
    background-position:center;
    background-color:#0f172a;
    overflow:hidden;
}
.video-card-inner{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;}

/* 中心大播放按钮 */
.video-card-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
    width:84px;height:84px;border-radius:50%;
    background:rgba(0,0,0,0.55);border:2px solid rgba(255,255,255,0.85);
    display:flex;align-items:center;justify-content:center;color:#fff;font-size:2.3rem;
    cursor:pointer;transition:all .3s;text-decoration:none;}
.video-card-play:hover{background:rgba(0,0,0,0.78);transform:translate(-50%,-50%) scale(1.08);color:#fff;}
.video-card-play i{filter:drop-shadow(0 2px 4px rgba(0,0,0,.5));}

/* 原生视频元素（沉浸流真播放）：absolute 全屏铺满卡片，object-fit:cover 不变形；
   首屏未激活时不显示（避免 poster 加载前出现黑底），激活后透明度过渡 */
.video-card-video{
    position:absolute;inset:0;width:100%;height:100%;
    object-fit:cover;background:#000;z-index:0;
    opacity:0;transition:opacity .4s ease;
}
.video-card.vc-active .video-card-video{opacity:1;}

/* 播放进度条：卡片底部细条，timeupdate 驱动宽度 */
.video-progress{position:absolute;left:0;right:0;bottom:0;height:3px;z-index:6;
    background:rgba(255,255,255,.14);pointer-events:none;}
.video-progress span{display:block;height:100%;width:0;
    background:linear-gradient(90deg,#ff4d6d,#ff7a9c);
    box-shadow:0 0 6px rgba(255,77,109,.55);
    transition:width .18s linear;}

/* 双击点赞爱心爆裂：中心放大上浮渐隐 */
.vc-heart-burst{position:absolute;top:50%;left:50%;z-index:8;pointer-events:none;
    transform:translate(-50%,-50%) scale(.4);opacity:0;
    animation:vcHeartPop .85s ease-out forwards;}
.vc-heart-burst i{font-size:96px;color:#ff4d6d;
    filter:drop-shadow(0 4px 16px rgba(255,77,109,.6));}
@keyframes vcHeartPop{
    0%{transform:translate(-50%,-50%) scale(.4) rotate(-8deg);opacity:0;}
    22%{transform:translate(-50%,-50%) scale(1.18) rotate(4deg);opacity:1;}
    55%{transform:translate(-50%,-58%) scale(1) rotate(0deg);opacity:1;}
    100%{transform:translate(-50%,-92%) scale(1.05);opacity:0;}
}
/* 有原生视频时，背景图不再铺卡片（由 video 接管） */
.video-card.has-video{background-image:none!important;}

/* 静音切换按钮（沉浸流真播放专用，替代中心 play 按钮） */
.video-mute-btn{
    position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
    width:84px;height:84px;border-radius:50%;
    background:rgba(0,0,0,0.55);border:2px solid rgba(255,255,255,0.85);
    display:flex;align-items:center;justify-content:center;color:#fff;font-size:2.3rem;
    cursor:pointer;transition:all .3s;padding:0;z-index:3;
}
.video-mute-btn:hover{background:rgba(0,0,0,0.78);transform:translate(-50%,-50%) scale(1.08);}
.video-mute-btn i{filter:drop-shadow(0 2px 4px rgba(0,0,0,.5));}
/* 激活卡播放中：静音态常驻半透明（保证无 hover 的触屏也能点开声）；已解除静音后移开鼠标才隐藏；hover 时全显 */
.video-card.vc-active:not(:hover) .video-mute-btn{opacity:.55;}
.video-card.vc-active:not(:hover) .video-mute-btn[data-muted="0"]{opacity:0;pointer-events:none;}
.video-card.vc-active .video-mute-btn{transition:opacity .4s ease,transform .3s,background .3s;}

/* 全屏播放按钮（右上角小圆形；点它或点画面都进入全屏） */
.video-fs-btn{
    position:absolute;top:14px;right:14px;z-index:3;
    width:40px;height:40px;border-radius:50%;
    background:rgba(0,0,0,0.45);border:1px solid rgba(255,255,255,0.45);
    color:#fff;font-size:1.05rem;display:flex;align-items:center;justify-content:center;
    cursor:pointer;padding:0;backdrop-filter:blur(4px);transition:background .25s;
}
.video-fs-btn:hover{background:rgba(0,0,0,0.75);}
/* 视频画面可点（播放/暂停）；底部标题/摘要文字可点（进详情），给出明确指针 */
.video-card-video{cursor:pointer;}
.video-card-title,.video-card-summary{cursor:pointer;}
/* 全屏后必须 contain：卡片内 object-fit:cover 是裁切铺满，全屏裁切会看不到完整画面 */
.video-card-video:fullscreen{object-fit:contain;width:100%;height:100%;background:#000;}
.video-card-video:-webkit-full-screen{object-fit:contain;width:100%;height:100%;background:#000;}

/* 底部信息遮罩 */
.video-card-overlay{
    background:linear-gradient(0deg,rgba(0,0,0,0.88) 0%,rgba(0,0,0,0.5) 30%,transparent 60%);
    padding:24px 20px 32px;color:#fff;
}
.video-card-author{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.video-card-author img{width:38px;height:38px;border-radius:50%;border:2px solid rgba(255,255,255,0.5);object-fit:cover;}
.video-card-author span{font-weight:600;font-size:0.95rem;}
.video-card-title{font-size:1.25rem;font-weight:700;line-height:1.35;
    text-shadow:0 2px 8px rgba(0,0,0,.6);margin:0 0 6px 0;color:#fff;}
.video-card-summary{font-size:0.95rem;color:rgba(255,255,255,0.88);line-height:1.5;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:0 0 8px 0;}
.video-card-tags{display:flex;gap:6px;flex-wrap:wrap;}
.video-card-tags .tag{background:rgba(59,130,246,0.25);color:#fff;border:1px solid rgba(59,130,246,0.4);
    font-size:0.78rem;padding:0.15rem 0.6rem;border-radius:999px;}

/* 暂停图标覆盖层（居中，暂停时显示） */
.video-pause-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(.6);
    width:72px;height:72px;border-radius:50%;background:rgba(0,0,0,.5);
    display:flex;align-items:center;justify-content:center;color:#fff;font-size:2rem;
    opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;z-index:4;}
.video-card.vc-paused .video-pause-icon{opacity:1;transform:translate(-50%,-50%) scale(1);}
.video-card.vc-paused .video-mute-btn{opacity:0;pointer-events:none;}

/* 右侧浮动互动按钮（垂直排列：点赞/评论/收藏） */
.video-card-actions{position:absolute;right:8px;bottom:100px;
    display:flex;flex-direction:column;gap:12px;}
.video-action-btn{width:42px;height:42px;border-radius:50%;
    background:rgba(0,0,0,0.45);border:none;color:#fff;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    cursor:pointer;transition:all .2s;text-decoration:none;padding:0;}
.video-action-btn i{font-size:1.15rem;}
.video-action-btn span{font-size:0.65rem;margin-top:1px;}

/* 底部浏览量 */
.video-card-views{margin-left:auto;font-size:.82rem;color:rgba(255,255,255,.75);
    display:flex;align-items:center;gap:4px;}
.video-action-btn.liked{color:#ef4444;}
.video-action-btn.favorited{color:#f59e0b;}
.video-action-btn:hover{background:rgba(0,0,0,0.7);transform:scale(1.08);color:#fff;}

/* 空状态 */
.video-feed-empty{color:#a8b8cc;padding:80px 20px;}

/* 滑动提示（移至左下角，避免与右下角 FAB 重叠） */
.video-feed-hint{position:fixed;left:16px;bottom:16px;
    background:rgba(0,0,0,0.6);color:rgba(255,255,255,0.7);
    padding:6px 12px;border-radius:999px;font-size:0.8rem;z-index:10;
    pointer-events:none;opacity:0;animation:vcHintFade 3s ease-out 1s forwards;}
@keyframes vcHintFade{0%{opacity:0;}20%{opacity:1;}80%{opacity:1;}100%{opacity:0;}}

/* 分页：位于所有视频之下，深色玻璃拟态，在 #view-video（snap 滚动容器）内本身作 snap 起点，
   高度足够保证 mandatory 吸附后页码稳定停留、按钮可点 */
.vc-pagination-wrap{
    scroll-snap-align:start;scroll-snap-stop:always;
    min-height:60vh;display:flex;align-items:flex-start;justify-content:center;
    padding:48px 16px 120px;
    background:linear-gradient(180deg,#0b1220 0%,#0f172a 100%);
}
.vc-pagination{max-width:720px;}
.vc-page-info{color:rgba(255,255,255,0.65);}
.vc-page-btn{
    color:#e2e8f0;background:rgba(255,255,255,0.06);
    border:1px solid rgba(255,255,255,0.18);border-radius:8px!important;
    min-width:36px;
}
.vc-page-btn:hover{background:rgba(255,255,255,0.16);color:#fff;}
.vc-page-btn.active{background:var(--m-sel-bg);border-color:transparent;color:var(--m-sel-fg);}
.vc-page-btn.disabled{opacity:.45;cursor:not-allowed;}

/* ============ 视频帖详情布局：视频置顶、标题/正文在下，单卡内对齐不跳位 ============ */
/* Feed 模式：卡片去顶部内边距 + overflow:hidden，视频区负边距顶到卡片边缘（跟随圆角裁切） */
.thread-has-video{padding-top:0!important;overflow:hidden;}
.thread-has-video .thread-video-top{
    margin:0 -1.5rem 1.25rem;background:#000;
}
/* 渲染器自带 .video-embed(my-3)/.thread-video(my-3) 外边距在置顶区清零，由外层统一间距 */
.thread-video-top .video-embed{margin:0!important;}
/* 原生 video 渲染器自带 w-100(!important)：竖屏视频若强制 100% 宽会撑出超高画面，
   改 auto + 双向 max（替换元素约束单边时自动保比例），横竖屏都居中不溢出；两种布局共用 */
.thread-video-top video{
    display:block;margin:0 auto;background:#000;
    width:auto!important;height:auto;max-width:100%;max-height:75vh;
}
/* #194 全屏态：下面规则特异性(0,2,1)高于上面(0,1,1)，全屏匹配时自然胜出；
   不写进 :not() 链——Firefox 不识别 :-webkit-full-screen 会令整条规则失效。
   原规则 width:auto!important + max-height:75vh 在全屏态仍命中会让视频缩在卡片大小，
   即用户报"全屏按钮无效"的观感成因之一。 */
.thread-video-top video:fullscreen{
    width:100%!important;height:100%!important;max-width:none;max-height:none;
    object-fit:contain;background:#000;
}
.thread-video-top video:-webkit-full-screen{
    width:100%!important;height:100%!important;max-width:none;max-height:none;
    object-fit:contain;background:#000;
}
.thread-has-video .thread-video-breadcrumb{margin-bottom:.75rem;}

/* 沉浸流右下角悬浮发帖按钮（FAB）
   仅 body.mode-video 显示；fixed 定位不跟随 #view-video 滚动；
   圆角胶囊形 + 渐变背景 + hover 上浮，符合社区紫蓝色调 */
.video-fab{
    position:fixed;right:20px;bottom:24px;z-index:20;
    display:inline-flex;align-items:center;gap:6px;
    padding:12px 18px;border-radius:999px;
    background:linear-gradient(135deg,#7c3aed,#4f46e5);
    color:#fff!important;text-decoration:none!important;
    font-size:0.95rem;font-weight:600;
    box-shadow:0 6px 20px -4px rgba(124,58,237,0.55),0 4px 10px -2px rgba(0,0,0,0.35);
    transition:transform .25s ease,box-shadow .25s ease;
}
.video-fab:hover{transform:translateY(-3px) scale(1.03);
    box-shadow:0 10px 28px -4px rgba(124,58,237,0.7),0 6px 14px -2px rgba(0,0,0,0.4);
    color:#fff!important;}
.video-fab:active{transform:translateY(-1px) scale(1);}
.video-fab i{font-size:1.15rem;line-height:1;}
.video-fab-label{display:inline-block;}
/* 移动端：图标为主，文字可选隐藏 */
@media(max-width:575.98px){
    .video-fab{padding:14px;right:16px;bottom:20px;border-radius:50%;}
    .video-fab-label{display:none;}
}
/* 浅色态：FAB 渐变本身高对比，无需调整 */
/* feed/forum 模式下 FAB 不显示（由 index.php 条件渲染保证，此 CSS 作兜底） */
body.mode-feed .video-fab,
body.mode-forum .video-fab{display:none!important;}

/* 移动端调整 */
@media (max-width:768px){
    .video-card-actions{bottom:100px;right:8px;gap:14px;}
    .video-action-btn{width:44px;height:44px;}
    .video-card-title{font-size:1.1rem;}
    .video-card-overlay{padding:18px 14px 24px;}
}

/* 深色态（视频流本身就是深色基调，兼容主站深色） */
body.dark .video-card-overlay{background:linear-gradient(0deg,rgba(0,0,0,0.92) 0%,rgba(0,0,0,0.5) 30%,transparent 60%);}
body.dark .video-feed-empty{color:#a8b8cc;}

/* ============ 连续阅读模式（feed/forum 共用；颜色全部走主题变量，黑天/白天自适应） ============ */
.reader-shell{max-width:var(--site-read,900px);margin:0 auto;padding:16px 14px 24px;}
.reader-mode-tip{color:var(--text-secondary);font-size:.85rem;margin:4px 0 14px;}
.reader-item + .reader-item{margin-top:20px;}
.reader-card{background:var(--card-bg-solid);border:1px solid var(--border);box-shadow:var(--shadow-sm);width:100%;}
.reader-title{word-break:break-word;}
.reader-board-chip{font-weight:600;}

/* 连续阅读内容图片统一：最大不超过容器宽，小图居中不拉伸，保持比例 */
.reader-content img,.article-content img{
    max-width:100%;height:auto;display:block;margin:0 auto;
    border-radius:8px;cursor:zoom-in;
}
.reader-content img:hover,.article-content img:hover{opacity:.92;}
/* carousel 封面图：统一高度比例，避免有宽有窄 */
.reader-carousel-img{width:100%!important;height:100%!important;object-fit:cover;}

/* 吸顶指示条：返回 / 板块 / 第几篇 / 首页 / 切单独；底部 2px 阅读进度 */
.reader-topbar{
    position:sticky;top:0;z-index:1020;
    background:var(--card-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
    border-bottom:1px solid var(--border);
}
.reader-topbar-inner{max-width:var(--site-read,900px);margin:0 auto;display:flex;align-items:center;gap:10px;padding:9px 14px;flex-wrap:wrap;}
.reader-back{display:inline-flex;align-items:center;gap:3px;color:var(--primary);text-decoration:none;font-weight:600;font-size:.9rem;white-space:nowrap;}
.reader-back:hover{opacity:.82;}
.reader-topbar-sep{color:var(--text-light);}
.reader-top-board{
    display:inline-flex;align-items:center;gap:4px;
    color:var(--reader-board-color,var(--primary));text-decoration:none;font-weight:700;font-size:.92rem;
    max-width:40vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.reader-pos-badge{
    flex:none;font-size:.78rem;border:1px solid var(--border);border-radius:999px;
    padding:3px 11px;color:var(--text-secondary);white-space:nowrap;background:var(--bg);
}
.reader-pos-badge b{color:var(--text);}
.reader-pos-sep{margin:0 3px;color:var(--text-light);}
.reader-top-spacer{flex:1 1 auto;}
.reader-top-btn{--bs-btn-font-size:.8rem;white-space:nowrap;}
.reader-progress{height:2px;}
.reader-progress-bar{height:2px;width:0;background:linear-gradient(90deg,var(--primary),#a855f7);transition:width .35s ease;}

/* 哨兵加载 / 失败重试 */
.reader-sentinel{min-height:84px;}
.reader-loading{text-align:center;color:var(--text-secondary);padding:26px 0 40px;font-size:.9rem;}
.reader-load-error{padding:24px 0 40px;color:var(--text-secondary);}

/* 板块结束选择卡 / 全站读完终态卡 */
.reader-board-end{
    max-width:580px;margin:40px auto 120px;padding:46px 24px;
    background:var(--card-bg-solid);border:1px solid var(--border);box-shadow:var(--shadow);
}
.reader-end-icon{font-size:3rem;line-height:1;margin-bottom:14px;color:var(--primary);}
.reader-board-end h4{font-weight:700;margin-bottom:6px;color:var(--text);}
.reader-end-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;}

/* 列表页阅读模式开关 + 切换轻提示 */
.read-mode-switch .btn{font-weight:500;}
.read-mode-toast{
    position:fixed;left:50%;bottom:88px;transform:translateX(-50%) translateY(10px);
    z-index:2000;background:rgba(15,23,42,.92);color:#fff;font-size:.85rem;
    padding:10px 16px;border-radius:10px;max-width:88vw;text-align:center;
    box-shadow:0 8px 24px rgba(0,0,0,.25);opacity:0;pointer-events:none;transition:all .3s ease;
}
.read-mode-toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
html.light-theme .read-mode-toast{background:rgba(30,41,59,.94);}

/* 浅色主题下 reader 卡片微调（变量已切换，这里只补遮罩层观感） */
html.light-theme .reader-topbar{background:rgba(255,255,255,.88);}

@media (max-width:575.98px){
    .reader-shell{padding:12px 10px 20px;}
    .reader-topbar-inner{gap:7px;padding:8px 10px;}
    .reader-top-board{max-width:34vw;}
    .reader-board-end{margin:28px 8px 100px;padding:36px 18px;}
}

/* ============ 防代码块/长串内容横向溢出（连续阅读 .reader-content 与单篇 .article-content 共用） ============ */
.reader-shell,.reader-item,.reader-card{min-width:0;}
.reader-content,.article-content,.comment-content{min-width:0;overflow-wrap:anywhere;word-break:break-word;}
/* 帖子正文+评论正文统一 15px（连续阅读 .reader-content、单篇 .article-content、评论 .comment-content） */
.reader-content,.article-content,.comment-content{font-size:15px;line-height:1.7;}

/* 主楼排版间距（#189 后续微调）：
   ① 正文与上方作者meta（时间/浏览次数）间距 16px→28px；
   ② 正文底部"话题:#xx"标签行 与 下一行操作栏 间距 0→20px。
   仅作用 forum 模式 .article-content 紧随 .article-meta 的结构（feed 模式 .article-content 自带 mt-3 不受影响） */
.article-meta + .article-content{margin-top:28px;}
.article-content + .mt-4.pt-3.border-top{margin-bottom:20px;}
.reader-content pre,.article-content pre,.comment-content pre{
    max-width:100%;overflow-x:auto;padding:14px 16px;border-radius:8px;
    background:#0f172a;color:#e2e8f0;font-size:.86rem;line-height:1.6;
    -webkit-overflow-scrolling:touch;
}
.reader-content code,.article-content code,.comment-content code{white-space:pre-wrap;word-break:break-word;}
.reader-content pre code,.article-content pre code,.comment-content pre code{
    background:none;padding:0;border-radius:0;white-space:pre;word-break:normal;color:inherit;
}
.reader-content video,.article-content video,
.reader-content iframe,.article-content iframe{max-width:100%;}
.reader-content table,.article-content table{display:block;max-width:100%;overflow-x:auto;}

/* ============ YouTube 风格评论（单篇 thread.php / 连续阅读共用；颜色全走主题变量） ============ */
.ytc{display:flex;gap:12px;margin:0 0 18px;scroll-margin-top:80px;}
.ytc-avatar{flex:0 0 auto;line-height:0;}
.ytc-col{flex:1 1 auto;min-width:0;}
.ytc-bubble{display:inline-block;max-width:100%;border-radius:14px;padding:7px 13px 9px;transition:background .15s ease;}
.ytc-is-op .ytc-bubble{background:rgba(255,255,255,.07);}
.ytc-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:2px;}
.ytc-name{font-size:.86rem;font-weight:600;color:var(--text);line-height:1.35;}
.ytc-op-badge{
    font-size:.68rem;line-height:1.65;padding:0 6px;border-radius:5px;font-weight:500;
    background:rgba(255,255,255,.13);color:var(--text);
}
.ytc-time,.ytc-edited{font-size:.75rem;color:var(--text-light);}
.ytc-edited{margin-left:-2px;}
.ytc-text{font-size:15px;line-height:1.7;color:var(--text);overflow-wrap:anywhere;word-break:break-word;}

/* 操作行：赞(数字) · 踩 · 回复 · 三点更多 · 楼号 */
.ytc-bar{display:flex;align-items:center;gap:1px;margin:1px 0 0 -9px;}
.ytc-icon{
    width:32px;height:32px;border:0;background:transparent;border-radius:50%;padding:0;
    display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
    color:var(--text-secondary);transition:background .12s ease;
}
.ytc-icon i{font-size:1.02rem;}
.ytc-icon:hover{background:rgba(255,255,255,.08);}
.ytc-count{font-size:.78rem;margin-left:5px;color:var(--text-secondary);}
.ytc-icon.liked,.ytc-icon.liked i,.ytc-icon.liked .ytc-count{color:var(--primary);}
.ytc-icon.disliked{color:var(--primary);}
.ytc-replybtn{
    border:0;background:transparent;border-radius:999px;padding:5px 11px;cursor:pointer;
    color:var(--text-secondary);font-size:.8rem;font-weight:500;
}
.ytc-replybtn:hover{background:rgba(255,255,255,.08);}
.ytc-floor{margin-left:6px;font-size:.75rem;color:var(--text-light);text-decoration:none;white-space:nowrap;}
.ytc-floor:hover{color:var(--text-secondary);}

/* 三点更多：默认收敛，行 hover/键盘聚焦时显现；触屏常显 */
.ytc-more{position:relative;opacity:0;transition:opacity .15s ease;}
.ytc:hover>.ytc-col>.ytc-bar>.ytc-more,
.ytc:focus-within>.ytc-col>.ytc-bar>.ytc-more,
.ytc-more.open{opacity:1;}
.ytc-menu{
    position:absolute;bottom:calc(100% + 4px);right:0;min-width:148px;z-index:1000;
    display:none;padding:6px;border-radius:12px;
    background:var(--card-bg-solid);border:1px solid var(--border);
    box-shadow:0 8px 28px rgba(0,0,0,.32);
}
.ytc-more.open .ytc-menu{display:block;}
.ytc-menu button{
    display:flex;align-items:center;gap:10px;width:100%;margin:0;padding:8px 10px;
    border:0;border-radius:8px;background:transparent;cursor:pointer;
    color:var(--text);font-size:.85rem;text-align:left;white-space:nowrap;
}
.ytc-menu button:hover{background:rgba(255,255,255,.08);}
.ytc-menu button i{font-size:.95rem;}
.ytc-menu .ytc-menu-danger{color:#ff6b6b;}
@media (hover:none){.ytc-more{opacity:1;}}

/* 楼中楼：竖线缩进（YouTube 回复线程样式） */
.ytc-replies{margin:5px 0 0 4px;padding-left:16px;border-left:2px solid var(--border);}
.ytc-replies .ytc{margin-bottom:12px;}
.ytc-is-reply .ytc-bubble{padding:6px 11px 7px;}
.ytc-is-reply .ytc-text{font-size:15px;}

/* 行内编辑 */
.ytc-edit-ta{margin-top:6px;font-size:.9rem;resize:vertical;}
.ytc-edit-bar{display:flex;gap:8px;justify-content:flex-end;margin-top:6px;}
.ytc-edit-cancel{color:var(--text-secondary);text-decoration:none;font-size:.85rem;padding:6px 8px;}
.ytc-edit-cancel:hover{color:var(--text);}

/* 轻量提示 toast（分享复制等） */
.ytc-toast{
    position:fixed;left:50%;bottom:32px;transform:translate(-50%,12px);z-index:2000;
    background:rgba(28,32,40,.96);color:#fff;font-size:.86rem;line-height:1.4;
    padding:10px 18px;border-radius:999px;box-shadow:0 8px 28px rgba(0,0,0,.3);
    opacity:0;pointer-events:none;transition:opacity .22s ease,transform .22s ease;max-width:88vw;
}
.ytc-toast.show{opacity:1;transform:translate(-50%,0);}

/* 浅色主题修正 */
html.light-theme .ytc-is-op .ytc-bubble{background:rgba(0,0,0,.055);}
html.light-theme .ytc-op-badge{background:#e9e9ee;color:#505055;}
html.light-theme .ytc-icon:hover,
html.light-theme .ytc-replybtn:hover{background:rgba(0,0,0,.06);}
html.light-theme .ytc-menu button:hover{background:rgba(0,0,0,.05);}
html.light-theme .ytc-menu .ytc-menu-danger{color:#d93025;}

/* ================= 投票卡片（帖子附属；深浅色自适应） ================= */
.c-title-poll{font-size:.72em;color:#0d6efd;margin-left:6px;vertical-align:.08em;}
.c-list-poll{color:#0d6efd;font-size:.82em;margin-right:3px;vertical-align:.05em;}
.cpo{
    border:1px solid var(--border,#e5e7eb);border-radius:14px;
    padding:16px 16px 12px;background:rgba(13,110,253,.045);
}
.cpo-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-wrap:wrap;}
.cpo-title{font-weight:600;font-size:1rem;line-height:1.5;color:var(--text,#1d1d1f);}
.cpo-title i{color:#0d6efd;margin-right:4px;}
.cpo-tags{display:inline-flex;gap:6px;flex-wrap:wrap;}
.cpo-tag{
    display:inline-flex;align-items:center;gap:3px;font-size:.72rem;line-height:1;
    padding:5px 8px;border-radius:999px;color:var(--text-dim,#6b7280);
    background:rgba(127,127,127,.12);white-space:nowrap;
}
.cpo-tag-multi{color:#0d6efd;background:rgba(13,110,253,.12);}
.cpo-tag-end{color:#dc2626;background:rgba(220,38,38,.12);}

.cpo-opt{
    position:relative;display:flex;align-items:center;gap:9px;
    margin:0 0 9px;padding:11px 13px;border-radius:11px;cursor:pointer;
    border:1.5px solid var(--border,#e5e7eb);background:transparent;
    color:var(--text,#1d1d1f);font-size:.92rem;line-height:1.45;
    transition:border-color .18s ease,background .18s ease;
}
.cpo-opt:last-of-type{margin-bottom:2px;}
.cpo-bar{
    position:absolute;left:0;top:0;bottom:0;width:0;border-radius:10px;
    background:rgba(13,110,253,.10);transition:width .5s cubic-bezier(.22,.61,.36,1);z-index:0;
}
.cpo-opt input{position:relative;z-index:1;accent-color:#0d6efd;margin:0;flex:0 0 auto;}
.cpo-opt-text{position:relative;z-index:1;flex:1 1 auto;min-width:0;word-break:break-word;}
.cpo-mine-icon{position:relative;z-index:1;color:#0d6efd;font-size:1rem;flex:0 0 auto;}
.cpo-pct{position:relative;z-index:1;flex:0 0 auto;font-variant-numeric:tabular-nums;font-weight:600;color:var(--text-dim,#6b7280);font-size:.86rem;min-width:42px;text-align:right;}
.cpo-opt:hover{border-color:rgba(13,110,253,.55);}
.cpo-opt:has(input:checked){border-color:#0d6efd;background:rgba(13,110,253,.06);}
.cpo-opt.is-locked{cursor:default;}
.cpo-opt.is-locked:hover{border-color:var(--border,#e5e7eb);}
.cpo-opt.is-mine{border-color:#0d6efd;}
.cpo-opt.is-mine .cpo-bar{background:rgba(13,110,253,.16);}
.cpo-opt.is-mine .cpo-pct{color:#0d6efd;}
.cpo-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;flex-wrap:wrap;}
.cpo-count{font-size:.84rem;color:var(--text-dim,#6b7280);}
.cpo-count b{color:var(--text,#1d1d1f);font-weight:700;}
.cpo-status{font-size:.84rem;}
.cpo-vote-btn{--bs-btn-padding-y:.35rem;--bs-btn-padding-x:1.1rem;font-weight:600;}

/* 发帖编辑器内的投票设置区 */
.cpe-body{
    margin-top:12px;padding:14px 16px;border:1.5px dashed var(--border,#e5e7eb);
    border-radius:12px;background:rgba(127,127,127,.05);
}
html.light-theme .cpo{background:#f7f9fc;}
html.light-theme .cpe-body{background:#fafafc;}

/* ===== 辩论卡片 ===== */
.c-title-debate{color:#f59e0b;margin-left:4px;}
.c-list-debate{color:#f59e0b;font-size:.82em;margin-right:3px;vertical-align:.05em;}
.cdebate{background:var(--card-bg,#fff);border:1px solid var(--border,#e5e7eb);border-radius:14px;padding:18px;box-shadow:0 2px 12px rgba(0,0,0,.06);}
html.light-theme .cdebate{background:#fff;}
.cdebate-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-wrap:wrap;}
.cdebate-title{font-weight:700;font-size:1.05rem;color:var(--text,#1d1d1f);}
.cdebate-title i{color:#f59e0b;margin-right:4px;}
.cdebate-tag{font-size:.8rem;color:var(--text-dim,#6b7280);}
.cdebate-bar{display:flex;height:10px;border-radius:6px;overflow:hidden;margin-bottom:6px;background:#f1f5f9;}
.cdebate-bar-fill{height:100%;transition:width .5s ease;}
.cdebate-bar-fill.support{background:linear-gradient(90deg,#22c55e,#16a34a);}
.cdebate-bar-fill.question{background:linear-gradient(90deg,#ef4444,#dc2626);}
.cdebate-bar-labels{display:flex;justify-content:space-between;font-size:.82rem;font-weight:600;margin-bottom:14px;}
.cdebate-side-label.support{color:#16a34a;}
.cdebate-side-label.question{color:#dc2626;}
.cdebate-cols{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:start;}
.cdebate-col{border:1px solid var(--border,#e5e7eb);border-radius:12px;overflow:hidden;}
.cdebate-col.support{border-top:3px solid #16a34a;}
.cdebate-col.question{border-top:3px solid #dc2626;}
.cdebate-col-head{padding:10px 14px;border-bottom:1px solid var(--border,#e5e7eb);font-weight:700;font-size:.9rem;background:rgba(127,127,127,.04);}
.cdebate-args{padding:10px;display:flex;flex-direction:column;gap:8px;}
.cdebate-arg{background:var(--card-2,rgba(127,127,127,.06));border-radius:10px;padding:10px 12px;position:relative;}
.cdebate-arg.is-voted{box-shadow:inset 3px 0 0 #f59e0b;}
.cdebate-arg-text{font-size:.88rem;color:var(--text,#1d1d1f);line-height:1.55;margin:0 0 8px;}
.cdebate-arg-vote{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:14px;border:1px solid var(--border,#e5e7eb);background:var(--card-bg,#fff);font-size:.78rem;color:var(--text-dim,#6b7280);cursor:pointer;transition:.2s;}
.cdebate-arg-vote:hover:not(:disabled){color:#f59e0b;border-color:#f59e0b;}
.cdebate-arg-vote:disabled{cursor:default;opacity:.7;}
.cdebate-arg-vote i.bi-hand-thumbs-up-fill{color:#f59e0b;}
.cdebate-vs{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,#f59e0b,#ef4444);color:#fff;font-weight:900;font-size:.8rem;margin-top:28px;box-shadow:0 3px 10px rgba(245,158,11,.35);}
.cdebate-foot{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:14px;padding-top:14px;border-top:1px dashed var(--border,#e5e7eb);}
.cdebate-status{font-size:.88rem;}
.cdebate-status i.support{color:#16a34a;}
.cdebate-status i.question{color:#dc2626;}
@media(max-width:576px){
  .cdebate-cols{grid-template-columns:1fr;}
  .cdebate-vs{margin:4px auto;transform:rotate(90deg);}
}

/* ============ 图片灯箱（单篇/连续阅读共用：单击查看，双击/按钮新标签打开原图） ============ */
#communityImgLightbox{
    display:none;position:fixed;inset:0;z-index:9999;
    background:rgba(0,0,0,.92);align-items:center;justify-content:center;
    cursor:zoom-out;
}
#communityImgLightbox.is-open{display:flex!important;}
#communityImgLightbox .c-lb-img{
    max-width:92vw;max-height:88vh;object-fit:contain;
    border-radius:8px;box-shadow:0 8px 40px rgba(0,0,0,.6);cursor:default;
    margin:auto;display:block;
}
#communityImgLightbox .c-lb-close{
    position:absolute;top:16px;right:22px;color:#fff;font-size:2.2rem;
    line-height:1;cursor:pointer;opacity:.8;transition:opacity .2s;z-index:2;
}
#communityImgLightbox .c-lb-close:hover{opacity:1;}
#communityImgLightbox .c-lb-open{
    position:absolute;top:22px;left:22px;color:#fff;font-size:.9rem;
    background:rgba(255,255,255,.12);padding:6px 14px;border-radius:20px;
    cursor:pointer;border:1px solid rgba(255,255,255,.2);transition:background .2s;z-index:2;
    text-decoration:none;
}
#communityImgLightbox .c-lb-open:hover{background:rgba(255,255,255,.22);}

/* ============ 帖子操作栏：放不下自动换行（不挤压、不横向溢出） ============ */
#threadCarousel img{cursor:zoom-in;}
.forum-only .article-actions{flex-wrap:wrap;row-gap:.6rem;}
.forum-only .article-actions > div:first-child{flex-wrap:wrap;row-gap:.5rem;}
/* 操作栏嵌在卡片内，深色下不再套一层颜色不一致的盒子 */
body.dark .forum-only .article-actions,
body.dark .feed-only .article-actions{background:transparent;box-shadow:none;padding:.5rem 0;}

/* ============ 现代表情回应（GitHub / Discord 风格：触发按钮 + 弹层 + 胶囊） ============ */
.reaction-widget{position:relative;display:inline-flex;align-items:center;gap:.4rem;flex-wrap:wrap;}
.react-trigger{
    border:1px solid var(--border,#e5e7eb);background:transparent;color:var(--text-secondary,#6b7280);
    border-radius:20px;padding:.3rem .8rem;font-size:.85rem;line-height:1.4;
    display:inline-flex;align-items:center;gap:.35rem;cursor:pointer;transition:all .18s;
}
.react-trigger:hover{background:rgba(59,130,246,.08);border-color:rgba(59,130,246,.45);color:#3b82f6;transform:none;}
.react-trigger i{font-size:1.05rem;line-height:1;}
.react-trigger.is-active{background:rgba(59,130,246,.12);border-color:rgba(59,130,246,.55);color:#3b82f6;}
/* 弹层 */
.react-popover{
    display:none;position:absolute;bottom:calc(100% + 8px);left:0;z-index:1080;
    background:var(--card-bg-solid,#fff);border:1px solid var(--border,#e5e7eb);
    border-radius:14px;padding:6px;box-shadow:0 10px 34px rgba(0,0,0,.18);
    grid-template-columns:repeat(7,auto);gap:2px;
}
.react-popover.is-open{display:grid;animation:rpPop .16s ease-out;}
@keyframes rpPop{from{opacity:0;transform:translateY(6px) scale(.96);}to{opacity:1;transform:none;}}
.react-popover button{
    width:38px;height:38px;padding:0;border:none;background:transparent;border-radius:10px;
    font-size:1.35rem;line-height:1;cursor:pointer;transition:transform .12s,background .12s;
}
.react-popover button:hover{transform:scale(1.28) translateY(-3px);background:rgba(59,130,246,.1);}
/* 已选回应胶囊 */
.reaction-pills{display:inline-flex;flex-wrap:wrap;gap:.35rem;}
.reaction-pills:empty,.reaction-pills:not(.has-reactions){display:none;}
.reaction-pill{
    display:inline-flex;align-items:center;gap:.3rem;border:1px solid var(--border,#e5e7eb);
    background:transparent;color:var(--text-secondary,#6b7280);
    border-radius:20px;padding:.18rem .6rem;font-size:.85rem;line-height:1.5;cursor:pointer;transition:all .15s;
}
.reaction-pill:hover{border-color:#f87171;color:#ef4444;}
.reaction-pill .rp-emoji{font-size:1rem;line-height:1;}
.reaction-pill .rp-count{font-weight:600;font-size:.78rem;}
.reaction-pill.is-mine{background:rgba(59,130,246,.1);border-color:rgba(59,130,246,.45);color:#3b82f6;}
body.dark .react-popover{background:#1e293b;border-color:#334155;}
body.dark .reaction-pill.is-mine{background:rgba(59,130,246,.18);color:#93c5fd;}
body.dark .react-trigger.is-active{background:rgba(59,130,246,.2);color:#93c5fd;}

/* ============ 右栏对齐：面包屑已提为 forum-only 下全宽元素，左右列天然同顶线，无需 margin ============ */
/* 水平约束与 .layout-2col(common.css: max-width1200 居中、无 padding) 完全一致，
   保证面包屑左缘与主卡对齐；padding 交由外层壳容器(.container-main 20px / subsite 壳)统一提供 */
.forum-breadcrumb{max-width:var(--site-col,1200px);margin:0 auto .75rem;}
.forum-breadcrumb .breadcrumb{margin-bottom:0;}
/* 主题 .layout-2col{overflow:hidden} 会让 grid 容器成为侧栏 sticky 的滚动包含块：
   侧栏正常流位置距容器顶=0 < sticky top:80，规范要求其距包含块顶至少 80px，
   导致页面初始（未滚动）侧栏就被下推 80px，与主卡顶错位（subsite 壳 common.css 版无 overflow:hidden 故正常）。
   改为 visible 后 sticky 相对视口定位：初始与主卡同顶，滚动时仍粘在 80px 避开导航栏。
   防横向溢出仍由 .layout-2col > *{min-width:0;overflow:hidden} 子项承担。 */
.forum-only .layout-2col,
#view-forum .layout-2col{overflow:visible;}

/* ============ 详情页"相关推荐"固定 3 列 ============
   不复用首页 .feed-grid 的视口断点（≥1200px 变 4 列）：详情页推荐区是帖子卡下方的窄容器，
   主站壳/subsite 壳内容宽度不同，跟随视口断点会出现有的 3 列有的 4 列；
   同时覆盖 @supports(masonry) 块的列数，6 张卡片固定两行 3+3 */
.feed-grid-related{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr));
    grid-template-rows:auto;
    gap:1rem;
    columns:auto!important;
}
.feed-grid-related > .feed-card{margin-bottom:0;width:100%;}
@media (max-width:767px){
    .feed-grid-related{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:480px){
    .feed-grid-related{grid-template-columns:minmax(0,1fr);}
}

/* ============ 深色配色统一：侧栏卡与主卡同底，标签改深色态 ============ */
/* 标题在深色下用近白色 + 加粗，避免继承的浅灰(#e2e8f0)在大字下显得发灰不醒目 */
body.dark .article-title{color:#f8fafc!important;font-weight:700;}
body.dark .forum-only .sidebar-card,
body.dark #view-forum .sidebar-card{background-color:#2d3748;border-color:rgba(255,255,255,.08);}
/* 版主昵称链接写死了 Bootstrap text-dark(#1d1d1f)，在暗色 #2d3748 背景上对比度不足，
   暗色主题下覆盖为浅灰近白；不动 PHP、不依赖 Bootstrap text-body 版本 */
body.dark .forum-only .sidebar-card a.text-dark,
body.dark #view-forum .sidebar-card a.text-dark{color:#e2e8f0!important;}
body.dark .tag-blue{background:rgba(59,130,246,.16)!important;color:#93c5fd!important;}
body.dark .tag-purple{background:rgba(139,92,246,.18)!important;color:#c4b5fd!important;}
body.dark .tag-green{background:rgba(16,185,129,.16)!important;color:#6ee7b7!important;}
body.dark .tag-orange{background:rgba(245,158,11,.16)!important;color:#fcd34d!important;}
body.dark .tag-pink{background:rgba(236,72,153,.16)!important;color:#f9a8d4!important;}
body.dark .tag-teal{background:rgba(20,184,166,.16)!important;color:#5eead4!important;}

/* ============ 板块 forum 模式头部行（tabs｜阅读开关） ============
   与下方 .layout-2col 用完全相同的列模板/间距/版心（见 common.css），
   tabs 与开关同居一行（字对字）；行底与两栏卡片间距 16px（= sidebar-card 节奏）。 */
.forum-topbar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: 1.5rem;
    max-width: var(--site-col, 1200px);
    margin: 0 auto;
    align-items: center;
    /* 与下方 block 间距 = sidebar-card 间距 16px（版主/版块规则间距），对齐侧栏节奏 */
    margin-bottom: 16px !important;
}
.forum-topbar .nav-tabs {
    border-bottom: 1px solid var(--border, #dee2e6);
}
.forum-topbar-side { min-width: 0; }
@media (max-width: 576px) {
    .forum-topbar { grid-template-columns: 1fr; }
    .forum-topbar-side { display: none !important; }
}

/* ============ 头像在 flex 行内不居中：模板 avatar() 内联 margin:0 auto 在有多余空间时
   会把头像居中、昵称推到最右（版主卡等场景）。参照 news 插件做法重置 margin，
   仅命中 flex 行内的头像，不影响 .sidebar-card.text-center 等需要居中的独立头像 */
/* 主楼作者区：头像在左、作者名+时间在右（subsite 壳不加载 theme style.css，
   此处补 flex 定义，否则头像在上、名字在下纵向堆叠） */
.article-meta{display:flex;align-items:center;gap:1rem;margin-bottom:1rem;flex-wrap:wrap;}
.article-author{display:flex;align-items:center;gap:.5rem;}
.sidebar-card .d-flex .avatar-initial,
.sidebar-card .d-flex img.rounded-circle,
.thread-meta .avatar-initial,
.thread-meta img.rounded-circle,
.article-author .avatar-initial,
.article-author img.rounded-circle {
    margin: 0 !important;
    flex: none;
}

/* ==================== #244 社区首页 12 项改进 ==================== */
/* ⑦ NEW / 10w+ 火焰徽章（feed + forum 列表通用） */
.feed-badge-new{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;font-weight:800;letter-spacing:.5px;}
.feed-badge-mega{background:linear-gradient(135deg,#f97316,#ef4444);color:#fff;font-weight:700;}
.feed-badge-mega i{margin-right:1px;}

/* ② 悬浮发帖 + 回顶 FAB（feed/forum 模式；video 模式沿用 .video-fab） */
.comm-fab{position:fixed;right:26px;bottom:26px;z-index:1060;display:flex;flex-direction:column;gap:10px;align-items:center;}
.comm-fab-top{width:42px;height:42px;border-radius:50%;background:#1e293b;border:1px solid rgba(148,163,184,.25);color:#94a3b8;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.35);opacity:0;visibility:hidden;transform:translateY(8px);transition:all .25s;}
.comm-fab-top.show{opacity:1;visibility:visible;transform:translateY(0);}
.comm-fab-top:hover{color:#fff;border-color:#60a5fa;}
.comm-fab-post{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#8b5cf6);color:#fff;font-size:24px;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(59,130,246,.45);transition:transform .2s;}
.comm-fab-post:hover{transform:scale(1.08);color:#fff;}
html.light-theme .comm-fab-top{background:#fff;border-color:#e2e8f0;color:#64748b;}

/* ③ 骨架屏（模式/排序/筛选切换、加载更多时的灰块占位） */
.comm-skel{position:relative;overflow:hidden;background:#1e293b;border-radius:8px;}
.comm-skel::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(148,163,184,.18) 50%,transparent 75%);background-size:200% 100%;animation:comm-skel-sh 1.4s infinite;}
@keyframes comm-skel-sh{to{background-position:-200% 0;}}
.comm-skel-card{display:flex;gap:14px;padding:16px;background:#111c30;border:1px solid rgba(148,163,184,.14);border-radius:14px;margin-bottom:12px;}
html.light-theme .comm-skel{background:#e2e8f0;}
html.light-theme .comm-skel-card{background:#fff;border-color:#e2e8f0;}

/* ④ 悬停预览卡（forum 列表标题 hover：摘要+首图） */
.comm-preview{position:fixed;z-index:1070;width:300px;background:#15223a;border:1px solid rgba(96,165,250,.5);border-radius:12px;padding:14px;box-shadow:0 12px 40px rgba(0,0,0,.5);pointer-events:none;opacity:0;transform:translateY(6px);transition:opacity .18s,transform .18s;}
.comm-preview.show{opacity:1;transform:translateY(0);}
.comm-preview .cp-title{font-size:13px;font-weight:700;color:#e8eef7;margin-bottom:6px;line-height:1.4;}
.comm-preview .cp-summary{font-size:12px;color:#94a3b8;line-height:1.7;margin-bottom:8px;}
.comm-preview .cp-cover{width:100%;height:120px;object-fit:cover;border-radius:8px;}
html.light-theme .comm-preview{background:#fff;border-color:#93c5fd;}
html.light-theme .comm-preview .cp-title{color:#1a2433;}
html.light-theme .comm-preview .cp-summary{color:#5b6b80;}

/* ① 无限滚动加载条（feed/forum；传统分页保留作 no-JS 回退，JS 启用后隐藏） */
.comm-infinite{display:flex;align-items:center;justify-content:center;gap:10px;padding:22px;color:#64748b;font-size:13px;}
.comm-infinite .spinner{width:18px;height:18px;border:2px solid rgba(148,163,184,.25);border-top-color:#3b82f6;border-radius:50%;animation:comm-spin .8s linear infinite;}
@keyframes comm-spin{to{transform:rotate(360deg);}}
.comm-infinite.done{color:#475569;}
.c-index-pagination.infinite-on{display:none;}

/* ⑤ 热门榜 日/周/月 切换（trend-bar 热门面板内） */
.hotrank{margin-top:10px;border-top:1px dashed rgba(148,163,184,.2);padding-top:10px;}
.hotrank-head{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#e8eef7;margin-bottom:6px;}
.hotrank-tabs{margin-left:auto;display:flex;gap:2px;background:rgba(148,163,184,.12);border-radius:8px;padding:2px;}
.hotrank-tab{padding:3px 10px;border-radius:6px;font-size:11px;color:#94a3b8;cursor:pointer;border:none;background:transparent;}
.hotrank-tab.on{background:#3b82f6;color:#fff;font-weight:700;}
.hotrank-row{display:flex;align-items:center;gap:10px;padding:6px 4px;font-size:13px;color:#cbd5e1;text-decoration:none;border-radius:6px;}
.hotrank-row:hover{background:rgba(148,163,184,.1);color:#fff;}
.hotrank-rk{width:19px;height:19px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;background:rgba(100,116,139,.3);color:#cbd5e1;flex-shrink:0;}
.hotrank-rk.r1{background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#fff;}
.hotrank-rk.r2{background:linear-gradient(135deg,#e5e7eb,#9ca3af);color:#334155;}
.hotrank-rk.r3{background:linear-gradient(135deg,#fb923c,#ea580c);color:#fff;}
.hotrank-t{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hotrank-v{color:#64748b;font-size:11px;flex-shrink:0;}
html.light-theme .hotrank{border-top-color:#e2e8f0;}
html.light-theme .hotrank-head{color:#1a2433;}
html.light-theme .hotrank-tabs{background:#eef2f9;}
html.light-theme .hotrank-tab{color:#64748b;}
html.light-theme .hotrank-row{color:#334155;}
html.light-theme .hotrank-row:hover{background:#f1f5f9;color:#0f172a;}

/* ⑥ 每周话题挑战横幅 */
.weekly-challenge{position:relative;display:flex;align-items:center;gap:14px;background:linear-gradient(120deg,rgba(139,92,246,.2),rgba(59,130,246,.12));border:1px solid rgba(139,92,246,.35);border-radius:14px;padding:12px 18px;margin-bottom:10px;overflow:hidden;text-decoration:none;color:inherit;}
.weekly-challenge::before{content:'';position:absolute;right:-30px;top:-30px;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,rgba(167,139,250,.25),transparent 70%);}
.weekly-challenge:hover{border-color:rgba(167,139,250,.6);color:inherit;}
.wk-badge{background:linear-gradient(135deg,#8b5cf6,#6366f1);color:#fff;font-size:11px;font-weight:800;padding:4px 10px;border-radius:8px;letter-spacing:1px;flex-shrink:0;}
.wk-info{flex:1;min-width:0;}
.wk-info h4{font-size:15px;margin:0;color:#e8eef7;}
.wk-info h4 em{font-style:normal;color:#c4b5fd;}
.wk-info p{font-size:12px;color:#94a3b8;margin:2px 0 0;}
.wk-meta{text-align:right;font-size:12px;color:#94a3b8;flex-shrink:0;line-height:1.5;}
.wk-meta b{color:#c4b5fd;font-size:16px;}
html.light-theme .wk-info h4{color:#1a2433;}
html.light-theme .wk-info h4 em{color:#7c3aed;}
html.light-theme .wk-info p,.weekly-challenge html.light-theme .wk-meta{color:#5b6b80;}
html.light-theme .wk-meta{color:#5b6b80;}
html.light-theme .wk-meta b{color:#7c3aed;}

/* ⑧ 板块推荐卡标题行 */
.reco-head{display:flex;align-items:center;gap:8px;margin:24px 0 4px;font-size:15px;font-weight:700;color:#e8eef7;}
.reco-head .reco-reason{font-size:11px;color:#64748b;font-weight:400;}
html.light-theme .reco-head{color:#1a2433;}

/* ⑩ 签到条（社区首页顶部，复用主站 /api/checkin.php） */
.checkin-bar{display:flex;align-items:center;gap:14px;background:linear-gradient(120deg,rgba(251,146,60,.14),rgba(59,130,246,.10));border:1px solid rgba(251,146,60,.3);border-radius:14px;padding:10px 18px;margin-bottom:10px;}
.checkin-bar .ck-flame{font-size:24px;}
.checkin-bar .ck-info{flex:1;min-width:0;}
.checkin-bar .ck-info h4{font-size:14px;margin:0;color:#e8eef7;}
.checkin-bar .ck-info h4 b{color:#fb923c;}
.checkin-bar .ck-info p{font-size:12px;color:#94a3b8;margin:2px 0 0;}
.btn-ck{background:linear-gradient(135deg,#f59e0b,#f97316);color:#fff;border:none;border-radius:10px;padding:8px 18px;font-size:13px;font-weight:700;cursor:pointer;box-shadow:0 4px 14px rgba(249,115,22,.35);white-space:nowrap;}
.btn-ck:disabled{opacity:.7;cursor:default;}
.btn-ck.done{background:rgba(16,185,129,.2);color:#34d399;box-shadow:none;}
html.light-theme .checkin-bar .ck-info h4{color:#1a2433;}
html.light-theme .checkin-bar .ck-info p{color:#5b6b80;}

/* ⑪ 在线用户头像墙 */
.online-wall-card{margin-top:24px;}
.online-wall{display:flex;flex-wrap:wrap;gap:8px;}
.online-wall .ow-a{position:relative;width:34px;height:34px;}
.online-wall .ow-a img,.online-wall .ow-a .ow-initial{width:34px;height:34px;border-radius:50%;object-fit:cover;display:flex;align-items:center;justify-content:center;font-size:13px;color:#fff;background:#5560d0;}
.online-wall .ow-a i{position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;border-radius:50%;background:#22c55e;border:2px solid #0f172a;}
.online-wall .ow-more{align-self:center;font-size:12px;color:#64748b;}
.online-wall-head{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700;color:#e8eef7;margin-bottom:10px;}
.online-wall-head .ow-count{margin-left:auto;font-size:12px;color:#22c55e;font-weight:600;}
html.light-theme .online-wall-head{color:#1a2433;}
html.light-theme .online-wall .ow-a i{border-color:#fff;}

/* ⑫ 语言分区 tab */
.lang-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px;}
.lang-tab{display:inline-flex;align-items:center;padding:7px 16px;border-radius:20px;background:#111c30;border:1px solid rgba(148,163,184,.2);font-size:13px;color:#94a3b8;cursor:pointer;text-decoration:none;}
.lang-tab:hover{color:#e8eef7;border-color:rgba(96,165,250,.5);}
.lang-tab.on{background:linear-gradient(135deg,rgba(59,130,246,.25),rgba(59,130,246,.08));border-color:#3b82f6;color:#60a5fa;font-weight:600;}
.lang-tab .cnt{font-size:11px;color:#64748b;margin-left:4px;}
.lang-tab.on .cnt{color:#93c5fd;}
html.light-theme .lang-tab{background:#fff;border-color:#e2e8f0;color:#5b6b80;}
html.light-theme .lang-tab:hover{color:#1a2433;border-color:#93c5fd;}
html.light-theme .lang-tab.on{border-color:#3b82f6;color:#2563eb;}

/* ===== 社区首页改版：与顶栏 shell-align / --site-wide 同宽，三模式共用 ===== */
body.mode-feed .subsite-main,
body.mode-forum .subsite-main,
body.mode-video .subsite-main{padding-top:10px;}
.comm-rev-page{max-width:none;width:100%;margin:0;padding:0 0 48px;display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:16px;}
.comm-rev-page.is-video{grid-template-columns:1fr;padding-bottom:0;}
body.mode-feed .live-ticker,
body.mode-forum .live-ticker{margin-bottom:10px;}
.comm-rev-main{min-width:0;}
.comm-rev-side{display:flex;flex-direction:column;gap:16px;}
.comm-rev-page.is-video .comm-rev-side,
.comm-rev-page.is-video .checkin-bar,
.comm-rev-page.is-video .live-ticker,
.comm-rev-page.is-video .weekly-challenge{display:none;}
.comm-side-card{background:#111c30;border:1px solid rgba(148,163,184,.14);border-radius:14px;overflow:hidden;}
.comm-side-card .hotrank{margin:0;border:0;border-radius:0;padding:0 0 8px;}
.comm-side-card .hotrank-head,.comm-side-card .online-wall-head{padding:13px 16px;margin:0;border-bottom:1px solid rgba(148,163,184,.14);}
.comm-side-card .hotrank-row{padding:10px 16px;}
.badge-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:20px;background:#15223a;border:1px solid rgba(148,163,184,.14);font-size:11px;color:#94a3b8;}
html.light-theme .badge-chip{background:#f6f8fc;color:#5b6b80;}
html.light-theme .comm-side-card{background:#fff;border-color:rgba(30,50,80,.12);}
.ck-streak{display:flex;gap:4px;align-items:center;}
.ck-day{width:26px;height:26px;border-radius:8px;background:#15223a;border:1px solid rgba(148,163,184,.14);display:flex;align-items:center;justify-content:center;font-size:11px;color:#64748b;}
.ck-day.lit{background:linear-gradient(135deg,#fb923c,#f59e0b);color:#fff;border-color:transparent;}
html.light-theme .ck-day{background:#f6f8fc;color:#93a1b5;}
.comm-mode-row{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap;}
.comm-mode-row .mode-switcher.mode-switcher-labeled .btn{padding:8px 14px;border-radius:10px;}
.comm-mode-row .comm-sort{margin-left:auto;}
.comm-rev-page:not(.is-video) .feed-forum-toolbar,
.comm-rev-page:not(.is-video) .creators-section,
.comm-rev-page:not(.is-video) .online-wall-card,
.comm-rev-page:not(.is-video) .reco-head,
.comm-rev-page:not(.is-video) .feed-recommend-grid,
.comm-rev-page:not(.is-video) .topic-rail,
.comm-rev-page:not(.is-video) .forum-sidebar-left,
.comm-rev-page:not(.is-video) .forum-sidebar-right,
.comm-rev-page:not(.is-video) .forum-thread-header{display:none !important;}
.comm-rev-page:not(.is-video) .forum-layout{display:block;grid-template-columns:none;width:100%;max-width:none;}
.comm-rev-page:not(.is-video) .forum-panel.forum-main{background:transparent;border:0;backdrop-filter:none;padding:0;overflow:visible;}
.comm-rev-page:not(.is-video) .forum-thread-row{display:flex;gap:14px;padding:18px 16px;min-height:92px;background:#111c30;border:1px solid rgba(148,163,184,.14);border-radius:14px;margin-bottom:12px;align-items:flex-start;position:relative;grid-template-columns:none;}
.comm-rev-page:not(.is-video) .forum-thread-row:nth-child(odd){background:#111c30;}
.comm-rev-page:not(.is-video) .forum-thread-row:hover{background:#1a2a45;border-color:rgba(96,165,250,.4);transform:translateY(-1px);padding-left:16px;}
.comm-rev-page:not(.is-video) .forum-thread-row.is-top{border-left:3px solid #ef4444;padding-left:13px;background:rgba(239,68,68,.06);}
.comm-rev-page:not(.is-video) .ft-av{width:44px;height:44px;border-radius:12px;flex-shrink:0;object-fit:cover;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.comm-rev-page:not(.is-video) .ft-av img,.comm-rev-page:not(.is-video) .ft-av .avatar-initial{width:44px;height:44px;border-radius:12px;object-fit:cover;}
.comm-rev-page:not(.is-video) .ft-av .avatar-initial{background:#334155;color:#e2e8f0;font-weight:700;font-size:16px;}
.comm-rev-page:not(.is-video) .ft-body{flex:1;min-width:0;}
.comm-rev-page:not(.is-video) .forum-thread-title{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:15px;font-weight:600;}
.comm-rev-page:not(.is-video) .forum-thread-title br{display:none;}
.comm-rev-page:not(.is-video) .forum-thread-author{display:flex;align-items:center;gap:6px;width:100%;margin-top:4px;font-weight:400;}
.comm-rev-page:not(.is-video) .forum-thread-author .author-mini-av{width:18px;height:18px;border-radius:50%;}
.comm-rev-page:not(.is-video) .ft-stats{margin-left:auto;display:flex;gap:14px;color:#64748b;font-size:12px;flex-shrink:0;align-items:center;padding-top:4px;}
.comm-rev-page:not(.is-video) .forum-thread-replies,
.comm-rev-page:not(.is-video) .forum-thread-views{text-align:left;color:#64748b;}
html.light-theme .comm-rev-page:not(.is-video) .forum-thread-row,
html.light-theme .comm-rev-page:not(.is-video) .forum-thread-row:nth-child(odd){background:#fff;color:#1a2433;}
html.light-theme .comm-rev-page:not(.is-video) .forum-thread-row:hover{background:#eef2f9;}
.comm-side-reco{display:flex;gap:10px;padding:10px 14px;align-items:center;text-decoration:none;color:inherit;}
.comm-side-reco:hover{background:rgba(255,255,255,.04);}
.comm-side-reco .reco-ic{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;background:#15223a;flex-shrink:0;}
.comm-side-reco .t{flex:1;min-width:0;}
.comm-side-reco .t b{font-size:13px;display:block;color:#e8eef7;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.comm-side-reco .t span{font-size:11px;color:#64748b;}
.comm-side-reco .btn-j{font-size:11px;padding:4px 12px;border-radius:8px;border:1px solid #3b82f6;color:#60a5fa;background:transparent;flex-shrink:0;}
html.light-theme .comm-side-reco .t b{color:#1a2433;}
html.light-theme .comm-side-reco .reco-ic{background:#f6f8fc;}
.comm-side-badges{display:flex;flex-wrap:wrap;gap:6px;padding:12px 14px;}
.comm-board-pills{display:flex;gap:8px;flex-wrap:nowrap;overflow-x:auto;margin-bottom:14px;padding-bottom:4px;-webkit-overflow-scrolling:touch;}
.comm-board-pills .hashtag{flex-shrink:0;}
.comm-mode-row .read-mode-switch{flex-shrink:0;}
.vc-chrome-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;}
.vc-more{margin-left:auto;color:#94a3b8;font-size:13px;}
.vc-more summary{cursor:pointer;list-style:none;padding:6px 12px;border:1px solid rgba(148,163,184,.25);border-radius:10px;}
.vc-more summary::-webkit-details-marker{display:none;}
.vc-more[open] summary{border-color:#3b82f6;color:#60a5fa;}
.vc-lang-tabs{margin-top:8px;}
body.mode-video .video-filter-bar .mode-switcher .btn-outline-light{color:#fff;border-color:rgba(255,255,255,.45);}
@media(max-width:1100px){
  .comm-rev-page{grid-template-columns:1fr;}
  .comm-rev-side{display:none;}
  .ck-streak{display:none;}
}
@media(max-width:767.98px){
  .weekly-challenge{flex-wrap:wrap;align-items:flex-start;gap:10px;padding:12px;}
  .weekly-challenge .wk-info h4{font-size:14px;line-height:1.4;overflow-wrap:anywhere;}
  .weekly-challenge .wk-meta{text-align:left;}
  .checkin-bar{flex-wrap:wrap;gap:8px;padding:10px 12px;}
}
/* m2m-mobile-flatten-v1 */
@media (max-width:767.98px){
  .feed-card,.thread-masonry-item,.sidebar-card,.card.mb-3,.card.mb-4,.forum-thread-row{
    border:0!important;box-shadow:none!important;
  }
  .feed-card,.thread-masonry-item{
    border-radius:0!important;background:transparent!important;margin-bottom:0!important;
    border-bottom:1px solid var(--border,#e5e7eb)!important;
  }
  html.light-theme .feed-card,html.light-theme .thread-masonry-item{background:transparent!important;box-shadow:none!important;}
  body.dark .feed-card,body.dark .thread-masonry-item{background:transparent!important;box-shadow:none!important;}
  .feed-card .feed-body,.thread-masonry-item .feed-body{padding:12px 0!important;}
  .feed-card .feed-cover{border-radius:8px;max-height:160px;object-fit:cover;}
  .feed-card .feed-summary{display:none!important;}
  .sidebar-card{border-radius:0!important;background:transparent!important;padding:12px 0!important;}
  .forum-thread-row{
    border-radius:0!important;background:transparent!important;padding:12px 0!important;
    border-bottom:1px solid var(--border,#e5e7eb)!important;
  }
}
