/* =====================================================================
   Tony's Blog — UI 精修层  ui-tidy.css   (v6, 2026-09-15)
   ---------------------------------------------------------------------
   定位：设计系统（ui-apple.css / v5）已上线且完好，本层只做两件事
         ① 修补设计令牌尚未覆盖的组件（分页、meta 灰阶、热门序号、徽章）
         ② 清理 8 项遗留视觉瑕疵（幽灵面板、破图 alt、坏图标、点击区…）

   加载顺序：  main.css  →  ui-apple.css  →  ui-tidy.css   （本文件务必最后）
   回退方式：  删除本文件的 <link> 即完全回退，前两层不受影响
   改动范围：  100% 纯 CSS。不涉及 HTML 结构、JS 逻辑、交互行为
   ===================================================================== */

/* ---------------------------------------------------------------------
   0. 变量兜底
   ui-apple.css 未加载时也能独立工作；已加载时直接复用其令牌
   --------------------------------------------------------------------- */
:where(:root) {
    --tn-blue:      var(--ap-blue, #0071e3);
    --tn-blue-tint: var(--ap-blue-tint, #eaf3ff);
    --tn-ink:       var(--ap-ink, #1d1d1f);
    --tn-ink-2:     var(--ap-ink-2, #424245);
    --tn-gray:      var(--ap-gray, #6e6e73);
    --tn-gray-2:    var(--ap-gray-2, #86868b);
    --tn-gray-3:    var(--ap-gray-3, #a1a1a6);
    --tn-line:      var(--ap-line-soft, #ececf0);
    --tn-border:    var(--ap-border, #e6e6eb);
    --tn-fill:      var(--ap-fill, #f2f2f5);
    --tn-surface:   var(--ap-surface, #fff);
    --tn-r-md:      var(--ap-r-md, 6px);
    --tn-r-lg:      var(--ap-r-lg, 8px);
    --tn-dur:       var(--ap-dur, .24s);
    --tn-ease:      var(--ap-ease, cubic-bezier(.28, .72, .28, 1));
}


/* =====================================================================
   ① 修补设计令牌未覆盖的组件
   ===================================================================== */

/* ---- 1.1 分页组件：此前 100% 沿用 layui 默认值 --------------------
   实测越界：文字 #333 / 省略号 #999 / 描边 #eee(#d2d2d2) / 按钮 #000 / 字重 700
   ---- */
.layui-laypage,
.layui-laypage a,
.layui-laypage span,
.layui-laypage em,
.layui-laypage button,
.layui-laypage input,
.layui-laypage select {
    font-family: var(--ap-font) !important;
    font-size: var(--fs-xs, 12px);
    font-weight: var(--fw-normal, 400);
    color: var(--tn-ink-2);
}

.layui-laypage a,
.layui-laypage input,
.layui-laypage select,
.layui-laypage button {
    border: 1px solid var(--tn-border);
    border-radius: var(--tn-r-md);
    background: var(--tn-surface);
    transition: color var(--tn-dur) var(--tn-ease),
                border-color var(--tn-dur) var(--tn-ease),
                background var(--tn-dur) var(--tn-ease);
}

.layui-laypage a:hover {
    color: var(--tn-blue);
    border-color: var(--tn-blue);
}

/* 当前页：唯一的实心蓝块 */
.layui-laypage .layui-laypage-curr em {
    background: var(--tn-blue);
    color: #fff;
    font-weight: var(--fw-semi, 600);
}

/* 省略号 …：不能比页码更重 */
.layui-laypage .layui-laypage-spr {
    color: var(--tn-gray-3) !important;
    font-weight: var(--fw-normal, 400);
}

/* 禁用态（上一页/下一页到头了） */
.layui-laypage .layui-disabled,
.layui-laypage a.layui-disabled,
.layui-laypage a.layui-laypage-prev.layui-disabled,
.layui-laypage a.layui-laypage-next.layui-disabled {
    color: var(--tn-gray-3) !important;
    border-color: var(--tn-line) !important;
}

.layui-laypage .layui-laypage-count,
.layui-laypage .layui-laypage-skip,
.layui-laypage .layui-laypage-limits {
    color: var(--tn-gray-2);
}

.layui-laypage .layui-icon,
.layui-laypage-refresh i {
    color: var(--tn-gray);
}

/* 「确定」按钮：跟随主题蓝 */
.layui-laypage .layui-laypage-btn {
    color: var(--tn-ink-2) !important;
    border-color: var(--tn-border) !important;
}
.layui-laypage .layui-laypage-btn:hover {
    color: #fff !important;
    background: var(--tn-blue) !important;
    border-color: var(--tn-blue) !important;
}


/* ---- 1.2 卡片 meta 行：灰阶归位 -------------------------------------
   实测越界：#999 文字（22 处）+ #bbb 图标（40 处）
   体系灰：--ap-gray-2 #86868b（文字） / --ap-gray-3 #a1a1a6（图标）
   ---- */
.tony-item-meta .tony-meta-text {
    color: var(--tn-gray-2) !important;
}
.tony-item-meta .tony-meta-text .layui-icon {
    color: var(--tn-gray-3) !important;
}
/* 阅读量数字等宽对齐，扫读时不会跳动 */
.tony-item-meta .tony-meta-text {
    font-variant-numeric: tabular-nums;
}


/* ---- 1.3 热门文章序号：冷色体系内 -------------------------------
   实测越界：#98a4b3 字 / #eef1f5 底 / 前 3 名橙红渐变 #ff7d4d→#f5484d
              且字重 700（体系上限 600）
   ---- */
.tony-hot-rank {
    background: var(--tn-fill) !important;
    color: var(--tn-gray-2) !important;
    font-weight: var(--fw-medium, 500) !important;
    font-variant-numeric: tabular-nums;
    border-radius: var(--tn-r-md);
}
/* 前 3 名：改用主题蓝实心，替换掉与冷色体系冲突的橙红渐变 */
.tony-hot-rank.top3 {
    background: var(--tn-blue) !important;
    color: #fff !important;
    box-shadow: none !important;
}
.tony-hot-articles li:hover .tony-hot-rank {
    background: var(--tn-blue-tint) !important;
    color: var(--tn-blue) !important;
}


/* ---- 1.4 layui 徽章色板：cyan 是深蓝灰 #2f4056，与蓝体系不搭 ------- */
.layui-badge.layui-bg-cyan {
    background: var(--tn-fill) !important;
    color: var(--tn-ink-2) !important;
    border-radius: var(--tn-r-md);
    font-weight: var(--fw-normal, 400);
}
.layui-badge.layui-bg-cyan a {
    color: var(--tn-ink-2) !important;
}
.layui-badge.layui-bg-cyan:hover {
    background: var(--tn-blue-tint) !important;
}
.layui-badge.layui-bg-cyan:hover a {
    color: var(--tn-blue) !important;
}


/* ---- 1.5 作者面板：旧主色残留 + 链接排布 --------------------------
   实测：.icon-github a 仍是旧主色 #01AAED（26+1 处唯一真实文字越界）
   ---- */
.icon-github a {
    color: var(--tn-ink-2) !important;
    font-size: var(--fs-sm, 13px);
    transition: color var(--tn-dur) var(--tn-ease);
}
.icon-github a:hover {
    color: var(--tn-blue) !important;
}
/* 面板内部：头像居中、链接成行、去掉裸 <br/> 的粗暴换行 */
.tony-right-panel .layui-card-body { text-align: center; }
.tony-right-panel .layui-card-body > br { display: none; }
.tony-right-panel .icon-github { display: inline-block; margin-top: 10px; }
.tony-right-panel p.tony-link {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 6px;
    margin: 8px 0 0;
}


/* =====================================================================
   ② 清理遗留视觉瑕疵
   ===================================================================== */

/* ---- 2.1 幽灵面板：侧栏第 2 个面板的内容被注释掉了，但 wrapper 仍在渲染 —
   实测它是一个 1px 上下描边、10px 外边距的空盒子（高 2px + 间距 10px）

   源 HTML：
     <div class="tony-right-panel">
       <div class="layui-card"><!-- <script …cse… ></script><div class="gcse-search"></div> --></div>
     </div>

   两种常见写法都不可用，实测确认：
     · :empty        —— 该 .layui-card 内含换行空白文本节点，:empty 不匹配（规范如此）
     · 嵌套 :has()   —— CSS 规范禁止在 :has() 内部再出现 :has()，
                        `.tony-right-panel:has(> .layui-card:not(:has(*)))` 直接抛
                        「is not a valid selector」

   可行写法：只用**一层** :has()，放在 :not() 里 → 合法。
   判定依据来自实测：侧栏 5 个面板里，只有这个空壳既没有 <a> 也没有 <img>。
   再叠加 p/ul/table 排除，避免误伤"纯文字型"面板。
   ---- */
.tony-right-panel:not(:has(a)):not(:has(img)):not(:has(p)):not(:has(ul)):not(:has(table)) {
    display: none !important;
}


/* ---- 2.2 破图兜底：头像 404 时浏览器会裸露渲染 alt 文字 ----------
   注意：这是兜底，根治办法是修好图片 URL（见报告 P0-1）
   ---- */
.tony-right-panel .author-avatar {
    width: 68px;
    height: 68px;
    margin: 2px auto 0;
    display: block;
    border-radius: 50%;
    object-fit: cover;
    background: var(--tn-fill);
    color: transparent;   /* 破图时不露 alt 文本 */
    font-size: 0;         /* 双保险 */
    overflow: hidden;
}


/* ---- 2.3 文章页 banner 副标题：Bootstrap glyphicon 在 layui 站无字体，
        渲染为空；且日期与分类之间没有分隔符，读成
        「2025-10-19 16:23:37应用软件」
        纯 CSS 方案：藏掉坏图标，用 ::before 画图标位 + 分隔点
   ---- */
.banner .tony-article-cate {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    column-gap: 8px;
    row-gap: 4px;
}
.banner .tony-article-cate > i.glyphicon {
    display: none;                /* 无字体的空图标 */
}
/* 注：原 v6 在此处有一个 ::before mask 日历图标方案；因视图层已将
   glyphicon 替换为真实 layui-icon（date/list/tabs），此处不再补伪元素
   图标，避免与真图标重复。分隔点方案保留（见下）。 */
/* 分类链接与日期之间：补一个分隔点 */
.banner .tony-article-cate a {
    position: relative;
    padding-left: 9px;
}
.banner .tony-article-cate a::before {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    width: 3px;
    height: 3px;
    margin-top: -1.5px;
    border-radius: 50%;
    background: currentColor;
    opacity: .45;
}


/* ---- 2.4 每张卡片标题尾部的「铅笔」图标 ---------------------------
   <i class="layui-icon layui-icon-release"></i> 挂在标题链接里，
   但点击后只做跳转，是典型的误导性 affordance。默认隐藏。
   （若想保留，见下方注释里的右对齐方案）
   ---- */
.item-cont h3 .layui-icon-release {
    display: none;
}
/*
   方案 B —— 保留但改为右对齐的「阅读」暗示：
   .item-cont a h3 { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
   .item-cont h3 .layui-icon-release { display: block; flex: 0 0 auto; color: var(--tn-gray-3);
       font-size: 15px; transition: color var(--tn-dur) var(--tn-ease), transform var(--tn-dur) var(--tn-ease); }
   .item-cont:hover h3 .layui-icon-release { color: var(--tn-blue); transform: translateX(3px); }
*/


/* ---- 2.5 标签云：63 个标签 / 桌面 14 行 459px，是侧栏最高、噪音最大的面板
   纯 CSS 方案：高度封顶 + 底部渐隐，把视觉重量压回合理区间。
   （根治办法是后端限制条数，见报告 P2-1）
   ---- */
.tony-article-tags {
    max-height: 174px;
    overflow: hidden;
    -webkit-mask-image: linear-gradient(to bottom, #000 0, #000 72%, transparent 100%);
            mask-image: linear-gradient(to bottom, #000 0, #000 72%, transparent 100%);
}


/* ---- 2.6 移动端汉堡按钮：实测点击区仅 27 × 9.6px -----------------
   WCAG 2.5.8 建议最小 44 × 44px
   ---- */
@media (max-width: 768px) {
    .header .menu-btn {
        min-width: 44px;
        min-height: 44px;
        display: flex !important;
        align-items: center;
        justify-content: flex-end;
        padding: 0 !important;
        /* 负外边距：点击区做到 44×44，但**不把页头撑高**。
           实测：不加负边距时页头 34px → 60px；加上后仍为 34px，
           而按钮命中区实测 44 × 44。 */
        margin: -6px 0 -6px auto;
        /* 刻意不覆盖 order：ui-apple.css 已排好
           logo(order:1) → menu-btn(order:2)。
           若在此处写 order:1，与 logo 同序，
           而 menu-btn 在 DOM 中位于 logo 之前 → 汉堡会跑到左侧（实测复现） */
    }
}


/* ---- 2.7 移动端展开后的导航：4 项挤成一行、左缩进与 Logo 不齐 -------
   改为 flex + gap，左边缘与 Logo 对齐（去掉自身的横向内边距）
   ---- */
@media (max-width: 768px) {
    .header .layui-nav.header-down-nav {
        display: none;             /* 默认收起，交由原 JS 切换 */
        width: 100%;
        padding: 6px 0 10px !important;
        background: transparent;
        border-top: 1px solid var(--tn-line);
        order: 2;
    }
    .header .layui-nav.header-down-nav.layui-nav-show,
    .header .layui-nav.header-down-nav[style*="display: block"],
    .header .layui-nav.header-down-nav[style*="display:block"] {
        display: flex !important;
        flex-wrap: wrap;
        gap: 6px 20px;
    }
    .header .layui-nav.header-down-nav li,
    .header .layui-nav.header-down-nav li.layui-nav-item {
        display: inline-block !important;
        width: auto !important;
    }
    .header .layui-nav.header-down-nav li a {
        display: inline-flex;
        align-items: center;
        min-height: 34px;          /* 增大纵向点击区 */
        padding: 0 2px !important;
        color: var(--tn-ink-2);
        font-size: var(--fs-base, 14px);
        line-height: 1.2;
    }
    .header .layui-nav.header-down-nav li a:hover,
    .header .layui-nav.header-down-nav li a:active {
        color: var(--tn-blue);
    }
    /* layui 下拉自带的背景/箭头在这里是多余的 */
    .header .layui-nav.header-down-nav .layui-nav-bar { display: none; }
}


/* ---- 2.8 768–991px 断档：layui 的 md 断点是 992px，因此 768–991 区间
        侧栏被折到列表下方、卡片拉满整宽。
        实测（视口 860px）：卡片宽 781px → 单行约 57 个汉字宽，读起来吃力。
        给内容区一个舒适上限（680px → 单行约 41 字宽）。
        这一条是"可调旋钮"：嫌两侧空就把数值往上加。
   ---- */
@media (min-width: 768px) and (max-width: 991px) {
    .content { max-width: 680px; }
}


/* ---- 2.9 焦点环统一（延续 ui-apple 的 :focus-visible，覆盖全部可点元素）---- */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
.menu-btn:focus-visible,
.layui-laypage a:focus-visible {
    outline: 2px solid var(--tn-blue);
    outline-offset: 2px;
    border-radius: var(--tn-r-md);
}


/* ---- 2.10 logo：位图 653×292 被缩到 67×30（比例 0.10），边缘发虚。
        略提显示高度找回品牌存在感（根治需换 SVG / 2x 图，见报告 P2）---- */
@media (min-width: 769px) {
    .tony-blog-logo { height: 34px; }
    .header h1.logo { margin-right: 30px; }
}


/* =====================================================================
   ③ 全白背景 + 布局统一 + header 调整（2026-09-15 用户指令）
   ===================================================================== */

/* 3.1 背景全白：页面画布由 #f5f5f7 灰改纯白，卡片/面板靠 1px 描边区分 */
body { background: #fff; }

/* 3.2 取消 header 滚动固定（sticky） */
.header { position: static; }

/* 3.3 header 导航文字放大：14 → 15px */
.header .nav a { font-size: 15px; }

/* 3.4 断档对齐：768-991px 时 content 限宽 680，header 同步限宽，
   保证「content 边界与正文边界对齐」在全断点成立 */
@media (min-width: 768px) and (max-width: 991px) {
    .header { max-width: 680px; }
}

/* 3.5 文章详情页与主页节奏统一：
   正文卡片与主页列表卡片同间距（10px），评论区紧随其后 */
.whisper-list .item-box { margin-bottom: 10px; }
.tony-article-content .tony-comment { margin-top: 0; }


/* =====================================================================
   ④ 广告位（banner 链接形式，后台广告管理维护）
   ===================================================================== */
.tony-ad-item {
    display: block;
    margin-bottom: 10px;
    border: 1px solid var(--tn-border);
    border-radius: var(--tn-r-lg);
    overflow: hidden;
    background: var(--tn-surface);
    transition: border-color var(--tn-dur) var(--tn-ease);
}
.tony-ad-item:hover { border-color: var(--tn-blue); }
.tony-ad-item img {
    display: block;
    width: 100%;
    height: auto;
}
/* 侧栏广告：卡片内图片不再额外描边 */
.tony-ad-sidebar .tony-ad-item { border: 0; border-radius: 0; }
.tony-ad-sidebar .tony-ad-item:last-child { margin-bottom: 0; }


/* =====================================================================
   ⑤ 详情页上一篇 / 下一篇
   ===================================================================== */
.tony-neighbor {
    display: flex;
    gap: 10px;
    margin-bottom: 10px;
}
.tony-neighbor-item {
    flex: 1 1 0;
    min-width: 0;
    padding: 10px 14px;
    border: 1px solid var(--tn-border);
    border-radius: var(--tn-r-lg);
    background: var(--tn-surface);
    transition: border-color var(--tn-dur) var(--tn-ease);
}
a.tony-neighbor-item:hover { border-color: var(--tn-blue); }
.tony-neighbor-item.next { text-align: right; }
.tony-neighbor-label {
    display: block;
    font-size: var(--fs-xs, 12px);
    color: var(--tn-gray-3);
}
.tony-neighbor-label .layui-icon { font-size: 1em; }
.tony-neighbor-title {
    display: block;
    margin-top: 3px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: var(--fs-sm, 13px);
    color: var(--tn-ink-2);
}
a.tony-neighbor-item:hover .tony-neighbor-title { color: var(--tn-blue); }
.tony-neighbor-item.disabled { opacity: .45; }
@media (max-width: 768px) {
    .tony-neighbor { flex-direction: column; }
    .tony-neighbor-item.next { text-align: left; }
}


/* =====================================================================
   ⑥ 一键回顶：滚动超过一屏（进入第二屏）时出现
   ===================================================================== */
.tony-backtop {
    position: fixed;
    right: 24px;
    bottom: 48px;
    z-index: 999;
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--tn-border);
    border-radius: 50%;
    background: var(--tn-surface);
    color: var(--tn-ink-2);
    cursor: pointer;
    box-shadow: 0 1px 6px rgba(0, 0, 0, .08);
    opacity: 0;
    visibility: hidden;
    transform: translateY(8px);
    transition: opacity var(--tn-dur) var(--tn-ease),
                transform var(--tn-dur) var(--tn-ease),
                visibility var(--tn-dur),
                border-color var(--tn-dur) var(--tn-ease),
                color var(--tn-dur) var(--tn-ease);
}
.tony-backtop.is-visible {
    opacity: 1;
    visibility: visible;
    transform: none;
}
.tony-backtop:hover {
    border-color: var(--tn-blue);
    color: var(--tn-blue);
}
.tony-backtop .layui-icon { font-size: 20px; }
@media (max-width: 768px) {
    .tony-backtop { right: 14px; bottom: 28px; }
}


/* =====================================================================
   ⑦ 科技感加载动效：顶部流光进度条 + 内容分层入场
   ===================================================================== */

/* 7.1 顶部加载进度条：蓝青渐变流光，load 后冲线淡出 */
#tonyLoadBar {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 2.5px;
    z-index: 9999;
    background: linear-gradient(90deg, #0071e3, #00c8ff, #0071e3);
    background-size: 200% 100%;
    transform-origin: 0 50%;
    transform: scaleX(0);
    pointer-events: none;
    box-shadow: 0 0 10px rgba(0, 140, 255, .55);
    animation: tonyBarRun 8s cubic-bezier(.2, .6, .3, 1) forwards,
               tonyBarGlow 1.5s linear infinite;
}
#tonyLoadBar.is-done { animation: tonyBarDone .35s ease forwards; }
@keyframes tonyBarRun {
    0% { transform: scaleX(0); }
    40% { transform: scaleX(.68); }
    75% { transform: scaleX(.88); }
    100% { transform: scaleX(.96); }
}
@keyframes tonyBarGlow { to { background-position: -200% 0; } }
@keyframes tonyBarDone { to { transform: scaleX(1); opacity: 0; } }

/* 7.2 内容分层入场：banner 文字、列表卡片、侧栏面板、分页依次上浮渐入 */
.banner .text-inner,
.list-item .item,
.tony-right-panel,
#tonyPage {
    animation: tonyRiseIn .55s cubic-bezier(.22, 1, .36, 1) both;
}
.banner .text-inner { animation-delay: .05s; }
.tony-right-panel:nth-of-type(1) { animation-delay: .12s; }
.tony-right-panel:nth-of-type(2) { animation-delay: .18s; }
.tony-right-panel:nth-of-type(3) { animation-delay: .24s; }
.tony-right-panel:nth-of-type(4) { animation-delay: .3s; }
.tony-right-panel:nth-of-type(5) { animation-delay: .36s; }
.tony-right-panel:nth-of-type(n+6) { animation-delay: .4s; }
.list-item .item:nth-child(1) { animation-delay: .1s; }
.list-item .item:nth-child(2) { animation-delay: .17s; }
.list-item .item:nth-child(3) { animation-delay: .24s; }
.list-item .item:nth-child(4) { animation-delay: .31s; }
.list-item .item:nth-child(5) { animation-delay: .38s; }
.list-item .item:nth-child(6) { animation-delay: .45s; }
.list-item .item:nth-child(7) { animation-delay: .52s; }
.list-item .item:nth-child(n+8) { animation-delay: .58s; }
#tonyPage { animation-delay: .5s; }
@keyframes tonyRiseIn {
    from { opacity: 0; transform: translateY(14px); }
    to { opacity: 1; transform: none; }
}

/* 7.3 动效降级：偏好减少动效时全部瞬时呈现 */
@media (prefers-reduced-motion: reduce) {
    #tonyLoadBar { animation-duration: .001s; }
    .banner .text-inner,
    .list-item .item,
    .tony-right-panel,
    #tonyPage { animation-duration: .001s; animation-delay: 0s; }
}


/* =====================================================================
   ⑧ 二级页面：面包屑导航 + 正文卡片与主页同构
   ===================================================================== */

/* 8.1 面包屑：小字灰阶，分隔符 ›，当前项墨色并限宽防溢出 */
.tony-breadcrumb {
    font-size: 13px;
    line-height: 1.5;
    color: var(--tn-gray-2);
    padding: 2px 4px 12px;
}
.tony-breadcrumb a {
    color: var(--tn-gray);
    text-decoration: none;
    transition: color .18s var(--tn-ease);
}
.tony-breadcrumb a:hover { color: var(--tn-blue); }
.tony-breadcrumb .sep {
    font-style: normal;
    margin: 0 9px;
    color: var(--tn-gray-3);
    user-select: none;
}
.tony-breadcrumb .current {
    color: var(--tn-ink-2);
    display: inline-block;
    max-width: 46em;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: bottom;
}

/* 8.2 正文卡片：与主页列表卡完全同形（白卡 / 4px 圆角 / 同款阴影），
       hover 保持静止 —— 工具型阅读区不做浮起反馈 */
.tony-article-card {
    background: var(--tn-surface);
    border-radius: 4px;
    box-shadow: 0 2px 8px rgba(15, 23, 42, .06);
    transition: none;
}
.tony-article-card:hover { box-shadow: 0 2px 8px rgba(15, 23, 42, .06); }

/* 8.3 详情页节奏：卡片上下间距对齐主页列表 16px；分页/上下篇同距 */
.cont > .tony-breadcrumb { padding: 0 2px 12px; }
.item-cont.tony-article-card { margin-bottom: 16px; }
.tony-neighbor { margin-bottom: 16px; }

/* 8.4 旧 CMS 导出正文容器：图片/表格自适应，避免内容撑破卡片 */
.tony-rich-content img { max-width: 100%; height: auto; }
.tony-rich-content table { max-width: 100%; }

/* 8.5 旧 CMS 导出正文的「整页底色」（根层满宽容器，如 #eef1f6 灰底）
      压平为透明，仅保留正文内部卡片与元素样式，使详情页背景与主页一致 */
.tony-rich-content,
.tony-rich-content > table,
.tony-rich-content > div {
    background: transparent !important;
}
