/* =============================================
   XenForo 风格主题 — 组件与配色
   复刻 XenForo 2 默认风格：深蓝导航 + 白色卡片 + 蓝橙点缀
   前台组件类统一 xen-* 前缀，配合 mn- 工具类使用
   ============================================= */

/* ===== 1. 配色变量：覆盖 mn- 为 XenForo 蓝 ===== */
.xen-body-page {
    --mn-primary: #1f4e79;
    --mn-primary-hover: #163f61;
    --mn-primary-light: #e4eef6;
    --mn-primary-subtle: #eef4f9;
    --mn-bg: #ffffff;
    --mn-bg-body: #eef0f5;
    --mn-bg-card: #ffffff;
    --mn-bg-nav: #1f4e79;
    --mn-bg-sidebar: #ffffff;
    --mn-bg-row-hover: #f4f7fa;
    --mn-bg-input: #ffffff;
    --mn-bg-tag: #e4eef6;
    --mn-text: #141414;
    --mn-text-secondary: #505a68;
    --mn-text-muted: #8a94a6;
    --mn-text-inverse: #ffffff;
    --mn-text-link: #185886;
    --mn-text-nav: #d6e2ec;
    --mn-text-nav-hover: #ffffff;
    --mn-bg-nav-hover: #1f6898;
    --mn-border: #dde0e5;
    --mn-border-light: #eef0f4;
    --mn-divider: #f0f1f3;
    --mn-success: #2ca55e;
    --mn-error: #e33244;
    --mn-warning: #d97706;
    --mn-tag-bg: #e4eef6;
    --mn-tag-text: #185886;
    --mn-tag-hot-bg: #fdecef;
    --mn-tag-hot-text: #d83345;
    --mn-tag-elite-bg: #fdf6e3;
    --mn-tag-elite-text: #a16207;
    --mn-shadow-sm: 0 1px 3px rgba(0,0,0,0.06);
    --mn-shadow: 0 1px 3px rgba(0,0,0,0.06);
    --mn-text-white: #ffffff;
    --mn-tag-warning-bg: #fdf3d7;
    --mn-tag-warning-text: #d97706;
    --mn-alert-success-bg: #edfaf0;
    --mn-alert-success-text: #1f8a4c;
    --mn-alert-success-border: #c3ecd2;
    --mn-alert-error-bg: #fdf1f2;
    --mn-alert-error-text: #d83345;
    --mn-alert-error-border: #f6c8cd;
    --mn-content-text: #333333;
    --mn-content-border: #dde0e4;
    --mn-code-bg: #1e1e2e;
    --mn-code-text: #cdd6f4;
    --mn-bg-theme-badge: rgba(255,255,255,0.2);
    --mn-bg-strength-track: #eeeeee;
    --mn-shadow-dropdown: 0 4px 18px rgba(0,0,0,0.12);
    --mn-shadow-dropdown-up: 0 -4px 18px rgba(0,0,0,0.12);
    --mn-shadow-mobile-nav: 0 -2px 8px rgba(0,0,0,0.06);
    --mn-shadow-primary-glow: 0 2px 8px rgba(24,88,134,0.28);
    --mn-shadow-float: 0 2px 10px rgba(0,0,0,0.14);
    --mn-editor-toolbar-bg: #f8f9fa;
    --mn-editor-tab-hover-bg: rgba(0,0,0,0.03);
    --mn-editor-btn-text: #495057;
    --mn-editor-btn-hover-bg: #e9ecef;
    --mn-editor-btn-hover-text: #212529;
    --mn-editor-btn-press-bg: #dee2e6;
    --mn-editor-separator-bg: #ced4da;
    --mn-editor-placeholder-text: #adb5bd;
    --mn-editor-quote-bg: #eef4f9;
    --mn-editor-quote-text: #495057;
    --mn-editor-quote-bg-2: #f4f5f7;
    --mn-editor-quote-text-2: #555555;
    --mn-editor-code-inline-bg: #e9ecef;
    --mn-editor-code-inline-text: #d83345;
    --mn-editor-table-border: #dee2e6;
    --mn-editor-table-th-bg: #f8f9fa;
    --mn-editor-emoji-border: #e0e0e0;
    --mn-editor-emoji-hover-bg: #f0f0f0;
    --mn-editor-btn-highlight-bg: #d0d7de;
    --mn-editor-btn-highlight-text: #0969da;
    --mn-editor-btn-highlight-shadow: inset 0 1px 3px rgba(0,0,0,0.12);
    --mn-editor-word-count-text: #8b949e;
    --xen-accent: #e99721;
    --xen-nav-hover: #2a5f92;
    --xen-radius: 2px;
    --xen-radius-sm: 3px;
    /* 主体容器圆角（内容大卡片：版块节点 / 主题列表 / 帖子标题栏 / 帖子楼层 / 回复框），
       与旧主题 modern 的 .mn-card / .mn-section（10px）一致；
       按钮、输入框、下拉、导航、抽屉等控件仍用 --xen-radius(-sm)，不受影响 */
    --xen-radius-main: 10px;
}

/* ===== 2. 页面骨架 ===== */
.xen-pageWrapper { display: flex; flex-direction: column; min-height: 100vh; }
.xen-body { flex: 1; background: var(--mn-bg-body); }
.xen-body-inner { max-width: 1320px; margin: 0 auto; padding: 12px 16px 24px; }

/* 主体：主内容 + 侧边栏 flex */
.xen-body-main { display: flex; align-items: flex-start; gap: 16px; }
.xen-body-content { flex: 1; min-width: 0; }
.xen-body-sidebar { width: 300px; flex-shrink: 0; }

/* 侧边栏卡片：沿用 mn-panel，但补足 XenForo 圆角/间距 */
.xen-body-sidebar .mn-panel { border-radius: var(--xen-radius-main); box-shadow: var(--mn-shadow-sm); }

/* ===== 3. 主导航 ===== */
.xen-navSticky { position: sticky; top: 0; z-index: 100; box-shadow: 0 1px 4px rgba(0,0,0,0.12); }
.xen-nav { background: #1f4e79; }
.xen-nav-inner { max-width: 1320px; margin: 0 auto; padding: 0 16px; display: flex; align-items: center; min-height: 56px; gap: 8px; }

/* 汉堡按钮（移动端） */
.xen-nav-trigger { display: none; background: none; border: 0; padding: 8px; cursor: pointer; flex-direction: column; gap: 4px; }
.xen-nav-trigger span { display: block; width: 20px; height: 2px; background: #fff; border-radius: 2px; transition: transform 0.2s, opacity 0.2s; }
.xen-nav-trigger.xen-open span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.xen-nav-trigger.xen-open span:nth-child(2) { opacity: 0; }
.xen-nav-trigger.xen-open span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* 站标 */
.xen-logo { display: flex; align-items: center; color: #fff; font-size: 18px; font-weight: 700; padding: 8px 4px; }
.xen-logo img { height: 26px; width: auto; }
.xen-logo--image { margin-right: 4px; }
.xen-logo--text { display: none; }

/* 主导航项 */
.xen-nav-tabs { display: flex; align-items: stretch; gap: 2px; flex: 1; }
.xen-navEl { display: flex; align-items: center; color: #d6e2ec; font-size: 14px; padding: 0 4px; }
.xen-navEl .xen-navEl-link { display: flex; align-items: center; gap: 6px; padding: 6px 14px; border-radius: 3px; color: inherit; }
.xen-navEl:hover { color: #fff; }
.xen-navEl:hover .xen-navEl-link { background: var(--xen-nav-hover); }
.xen-navEl.is-selected { color: #fff; }
.xen-navEl.is-selected .xen-navEl-link { background: rgba(255,255,255,0.22); }
/* 插件注入的主导航项：nav_main_links 钩子输出的是裸 <a>（如「问答」），
   套用与核心导航项一致的观感（浅色图标/文字 + hover + 选中态） */
.xen-nav-tabs > a:not(.xen-navEl) {
    display: flex;
    align-items: center;
    gap: 6px;
    align-self: center;
    padding: 6px 14px;
    margin: 0 4px;
    border-radius: var(--xen-radius-sm);
    color: #d6e2ec;
    font-size: 14px;
    /* 行高不另设：继承主题行高（1.6），与核心项 .xen-navEl-link 的内容高度一致，
       否则药丸会比「首页/论坛/博客」矮约 8px（尺寸不一致） */
}
.xen-nav-tabs > a:not(.xen-navEl):hover {
    color: #fff;
    background: var(--xen-nav-hover);
}
/* 插件钩子输出的图标尺寸写在元素内联 style 上（font-size:16px），
   这里收敛到与核心项一致的 13px —— 因需覆盖内联样式，必须 !important */
.xen-nav-tabs > a:not(.xen-navEl) i { font-size: 13px !important; }

/* ===== 主导航内的快捷入口（主题 / 布局 / 语言 / 应用）=====
   桌面端显示在「搜索」左侧（.xen-navLinks），与下方白底副导航条共用同一份标记；
   窄屏隐藏、改回白底条显示（见文件末尾媒体查询） */
.xen-navLinks { display: flex; align-items: center; gap: 2px; }
.xen-navLinks .xen-sectionLink,
.xen-navLinks .xen-linkForm-btn {
    padding: 8px 10px;
    border-radius: var(--xen-radius);
    color: #d6e2ec;
    font-size: 13px;
}
/* 下拉容器（语言 / 应用）自身不带内边距，避免与内部 <a> 叠成双重内边距 */
.xen-navLinks .xen-sectionLink--lang,
.xen-navLinks .xen-sectionLink--apps { padding: 0; }
.xen-navLinks .xen-linkForm { display: inline-flex; align-items: center; }
.xen-navLinks .xen-sectionLink:hover,
.xen-navLinks .xen-linkForm-btn:hover { background: var(--xen-nav-hover); color: #fff; }
.xen-navLinks .xen-sectionLink.is-selected { background: rgba(255,255,255,0.22); color: #fff; font-weight: 400; }
.xen-nav-tabs > a:not(.xen-navEl).mn-active,
.xen-nav-tabs > a:not(.xen-navEl).mn-cat-active,
.xen-nav-tabs > a:not(.xen-navEl).is-selected {
    color: #fff;
    background: rgba(255,255,255,0.22);
}

/* 右侧组 */
.xen-nav-opposite { display: flex; align-items: center; gap: 4px; margin-left: auto; }
.xen-navgroup { display: flex; align-items: center; position: relative; }
.xen-navgroup-link { display: flex; align-items: center; gap: 6px; color: #d6e2ec; font-size: 13px; padding: 8px 10px; border-radius: var(--xen-radius); }
.xen-navgroup-link:hover { color: #fff; background: var(--xen-nav-hover); }
.xen-navgroup-username { max-width: 140px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.xen-navgroup-link--trigger { background: none; border: 0; cursor: pointer; font-size: inherit; }
.xen-navgroup-link--register { background: var(--xen-accent); color: #fff; font-weight: 600; }
.xen-navgroup-link--register:hover { background: #d98f16; color: #fff; }
/* 窄屏专用的图标化登录按钮：默认隐藏，仅 ≤900px 显示（见文件末尾媒体查询） */
.xen-navgroup-link--loginIcon { display: none; }

/* 搜索下拉 */
.xen-searchMenu { position: absolute; top: calc(100% + 6px); right: 0; width: 320px; background: #fff; border: 1px solid var(--mn-border); border-radius: var(--xen-radius); box-shadow: var(--mn-shadow-dropdown); padding: 12px; z-index: 120; }
.xen-searchMenu-title { font-size: 13px; font-weight: 700; margin-bottom: 8px; }
.xen-searchMenu-btns { display: flex; gap: 8px; margin-top: 10px; }
.xen-searchMenu-btns .xen-btn { flex: 1; }

/* 用户下拉 */
.xen-userMenu { position: absolute; top: calc(100% + 6px); right: 0; width: 260px; background: #fff; border: 1px solid var(--mn-border); border-radius: var(--xen-radius); box-shadow: var(--mn-shadow-dropdown); overflow: hidden; z-index: 120; }
.xen-userMenu-header { display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: var(--mn-bg-row-hover); border-bottom: 1px solid var(--mn-border-light); }
.xen-userMenu-user { min-width: 0; }
.xen-userMenu-name { font-size: 14px; font-weight: 600; display: block; }
.xen-userMenu-role { font-size: 11px; color: var(--mn-primary); }
.xen-userMenu-links { padding: 6px; }
.xen-userMenu-links a { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: var(--xen-radius-sm); font-size: 13px; color: var(--mn-text); }
.xen-userMenu-links a:hover { background: var(--mn-bg-row-hover); color: var(--mn-primary); }
.xen-userMenu-divider { height: 1px; background: var(--mn-border-light); margin: 6px 0; }
.xen-userMenu-logout { width: 100%; text-align: left; background: none; border: 0; display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: var(--xen-radius-sm); font-size: 13px; color: var(--mn-error); cursor: pointer; }
.xen-userMenu-logout:hover { background: var(--mn-alert-error-bg); }

/* 消息徽标 */
.xen-badge { background: #e33244; color: #fff; font-size: 10px; font-weight: 700; min-width: 16px; height: 16px; line-height: 16px; border-radius: 8px; text-align: center; padding: 0 4px; }
.xen-badge--text { display: inline-block; margin-left: 4px; }

/* 通知铃铛（_components/notification_bell 组件输出的裸 <a>，由包裹层补 XenForo 导航皮肤） */
.xen-bell > a { display: flex; align-items: center; gap: 6px; color: #d6e2ec; font-size: 13px; padding: 8px 10px; border-radius: var(--xen-radius); }
.xen-bell > a:hover { color: #fff; background: var(--xen-nav-hover); }

/* 副导航快捷链接条 */
.xen-sectionLinks { background: #fff; border-bottom: 1px solid var(--mn-border); }
.xen-sectionLinks-inner { max-width: 1320px; margin: 0 auto; padding: 0 16px; display: flex; align-items: center; justify-content: center; gap: 4px; flex-wrap: wrap; min-height: 34px; }
.xen-sectionLink { display: flex; align-items: center; gap: 5px; padding: 5px 10px; border-radius: var(--xen-radius-sm); font-size: 13px; color: var(--mn-text-secondary); }
.xen-sectionLink:hover { background: var(--mn-bg-row-hover); color: var(--mn-primary); }
.xen-sectionLink.is-selected { color: var(--mn-primary); font-weight: 600; }
.xen-sectionLink--lang { display: flex; align-items: center; }
/* 布局开关：POST 表单（CSRF 校验）包裹，按钮皮肤与副导航/抽屉链接保持一致 */
.xen-linkForm { display: inline-flex; }
/* 行高必须显式继承：<button> 受浏览器 UA 样式影响为 line-height:normal，
   而旁边的 <a class="xen-sectionLink"> 继承站点行高，两者内容盒高度会差几像素，
   导致「布局」盒子比「主题」矮一截、顶部对不齐（font-family/font-size 已复位，行高同样要复位） */
.xen-linkForm-btn { display: flex; align-items: center; gap: 5px; padding: 5px 10px; border: 0; background: none; border-radius: var(--xen-radius-sm); font-size: 13px; font-family: inherit; line-height: inherit; color: var(--mn-text-secondary); cursor: pointer; }
.xen-linkForm-btn:hover { background: var(--mn-bg-row-hover); color: var(--mn-primary); }

/* 通用下拉（语言等） */
.xen-dropdown { position: absolute; top: calc(100% + 6px); left: 0; min-width: 120px; background: #fff; border: 1px solid var(--mn-border); border-radius: var(--xen-radius); box-shadow: var(--mn-shadow-dropdown); padding: 4px; z-index: 120; }
.xen-dropdown-item { display: block; padding: 6px 12px; border-radius: var(--xen-radius-sm); font-size: 13px; color: var(--mn-text-secondary); }
.xen-dropdown-item:hover { background: var(--mn-bg-row-hover); color: var(--mn-primary); }
.xen-dropdown-item.is-selected { color: var(--mn-primary); font-weight: 600; background: var(--mn-primary-subtle); }
/* 应用下拉（副导航最右侧，插件入口） */
.xen-appsMenu { min-width: 160px; }
.xen-sectionLink--apps .xen-dropdown { left: auto; right: 0; }
.xen-appsMenu a { display: flex; align-items: center; gap: 8px; padding: 6px 12px; border-radius: var(--xen-radius-sm); font-size: 13px; color: var(--mn-text-secondary); }
.xen-appsMenu a:hover { background: var(--mn-bg-row-hover); color: var(--mn-primary); }
.xen-appsMenu a.mn-cat-active { color: var(--mn-primary); font-weight: 600; background: var(--mn-primary-subtle); }

/* ===== 5. 移动端抽屉 ===== */
.xen-offCanvas { position: fixed; inset: 0; z-index: 200; }
.xen-offCanvas-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.5); }
.xen-offCanvas-panel { position: absolute; top: 0; bottom: 0; left: 0; width: 280px; max-width: 85vw; background: #fff; display: flex; flex-direction: column; box-shadow: 2px 0 12px rgba(0,0,0,0.15); }
.xen-offCanvas-header { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; background: #185886; color: #fff; }
.xen-offCanvas-title { font-size: 15px; font-weight: 700; }
.xen-offCanvas-close { background: none; border: 0; color: #fff; cursor: pointer; padding: 4px; }
.xen-offCanvas-nav { flex: 1; overflow-y: auto; padding: 8px; }
.xen-offCanvas-link { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: var(--xen-radius); font-size: 14px; color: var(--mn-text); }
.xen-offCanvas-link:hover { background: var(--mn-bg-row-hover); color: var(--mn-primary); }
.xen-offCanvas-link.is-selected { background: var(--mn-primary-subtle); color: var(--mn-primary); font-weight: 600; }
/* 抽屉内布局开关（POST 表单形态） */
.xen-linkForm--drawer { display: block; }
.xen-linkForm--drawer .xen-linkForm-btn { width: 100%; gap: 10px; padding: 10px 12px; border-radius: var(--xen-radius); font-size: 14px; color: var(--mn-text); text-align: left; }
.xen-linkForm--drawer .xen-linkForm-btn:hover { background: var(--mn-bg-row-hover); color: var(--mn-primary); }
/* 抽屉分类子列表（竖向罗列） */
.xen-offCanvas-sub { padding: 2px 8px 8px 30px; display: flex; flex-direction: column; gap: 2px; }
.xen-offCanvas-subLink { display: flex; align-items: center; gap: 8px; padding: 7px 10px; border-radius: var(--xen-radius); font-size: 13px; color: var(--mn-text-secondary); }
.xen-offCanvas-subLink:hover { background: var(--mn-bg-row-hover); color: var(--mn-primary); }
.xen-offCanvas-sep { height: 1px; background: var(--mn-border-light); margin: 8px 4px; }
/* 移动端抽屉「发帖」主按钮（对齐核心底部导航的发帖入口） */
.xen-offCanvas-cta { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 4px 4px 8px; padding: 10px 12px; border-radius: var(--xen-radius); background: var(--mn-primary); color: #fff; font-size: 14px; font-weight: 600; }
.xen-offCanvas-cta:hover { filter: brightness(1.08); color: #fff; }
/* 抽屉内的通知铃铛（notification_bell 组件裸 <a>）与插件抽屉链接 */
.xen-offCanvas-bell > a, .xen-offCanvas-nav > a:not([class]) { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: var(--xen-radius); font-size: 14px; color: var(--mn-text); }
.xen-offCanvas-bell > a:hover, .xen-offCanvas-nav > a:not([class]):hover { background: var(--mn-bg-row-hover); color: var(--mn-primary); }

/* ===== 6. 面包屑 ===== */
.xen-breadcrumb { display: flex; align-items: center; flex-wrap: wrap; gap: 2px; padding: 8px 0; font-size: 12px; color: var(--mn-text-muted); }
.xen-breadcrumb--top { padding-top: 4px; }
.xen-crumb { display: flex; align-items: center; gap: 2px; }
.xen-crumb + .xen-crumb::before { content: '/'; margin: 0 6px; color: var(--mn-border); }
.xen-crumb a { color: var(--mn-text-secondary); }
.xen-crumb a:hover { color: var(--mn-primary); }
.xen-crumb.is-current a, .xen-crumb.is-current span { color: var(--mn-text); font-weight: 700; }

/* ===== 7. 通用组件 ===== */
/* 按钮 */
.xen-btn { display: inline-flex; align-items: center; justify-content: center; gap: 5px; padding: 8px 16px; border: 1px solid var(--mn-border); border-radius: var(--xen-radius-sm); font-size: 13px; font-weight: 500; cursor: pointer; background: #fff; color: var(--mn-text); transition: all 0.15s; }
.xen-btn:hover { background: var(--mn-bg-row-hover); color: var(--mn-primary); }
.xen-btn--primary { background: var(--mn-primary); border-color: var(--mn-primary); color: #fff; }
.xen-btn--primary:hover { background: var(--mn-primary-hover); border-color: var(--mn-primary-hover); color: #fff; }
.xen-btn--accent { background: #e99721; border-color: #e99721; color: #fff; font-weight: 600; }
.xen-btn--accent:hover { background: #d98f16; border-color: #d98f16; color: #fff; }
.xen-btn--sm { padding: 5px 12px; font-size: 12px; }
.xen-btn--xs { padding: 3px 9px; font-size: 12px; }
.xen-btn--danger { color: var(--mn-error); border-color: var(--mn-border); }
.xen-btn--danger:hover { background: var(--mn-alert-error-bg); color: var(--mn-error); }

/* 输入框 */
.xen-input { width: 100%; padding: 9px 13px; border: 1px solid var(--mn-border); border-radius: var(--xen-radius-sm); background: var(--mn-bg-input); color: var(--mn-text); font-size: 13px; }
.xen-input:focus { border-color: var(--mn-primary); box-shadow: 0 0 0 2px rgba(24,88,134,0.15); }
.xen-input--textarea { min-height: 140px; resize: vertical; line-height: 1.6; }

/* 头像 */
.xen-avatar { display: inline-flex; align-items: center; justify-content: center; background: var(--mn-bg-row-hover); color: var(--mn-text-secondary); font-weight: 600; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.xen-avatar--xxs { width: 18px; height: 18px; font-size: 10px; }
.xen-avatar--sm { width: 34px; height: 34px; font-size: 14px; }
.xen-avatar--lg { width: 64px; height: 64px; font-size: 22px; }
.xen-avatar--placeholder { background: var(--mn-primary-light); color: var(--mn-primary); }

/* 标签 */
.xen-tag { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: var(--xen-radius-sm); font-size: 11px; font-weight: 600; background: var(--mn-tag-bg); color: var(--mn-tag-text); vertical-align: middle; }
.xen-tag--cat { background: var(--mn-tag-bg); color: var(--mn-tag-text); }
.xen-tag--pinned { background: var(--mn-tag-hot-bg); color: var(--mn-tag-hot-text); }
.xen-tag--highlight { background: var(--mn-tag-elite-bg); color: var(--mn-tag-elite-text); }
.xen-tag--warning { background: var(--mn-tag-warning-bg); color: var(--mn-tag-warning-text); }
.xen-tag--primary { background: var(--mn-tag-bg); color: var(--mn-tag-text); }

/* 提示框 */
.xen-alert { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-radius: var(--xen-radius); font-size: 13px; margin-bottom: 12px; border: 1px solid; }
.xen-alert--success { background: var(--mn-alert-success-bg); color: var(--mn-alert-success-text); border-color: var(--mn-alert-success-border); }
.xen-alert--error { background: var(--mn-alert-error-bg); color: var(--mn-alert-error-text); border-color: var(--mn-alert-error-border); }
.xen-alert--warning { background: var(--mn-tag-warning-bg); color: var(--mn-tag-warning-text); border-color: #f0dcae; }

/* 空状态 */
.xen-empty { padding: 40px 20px; text-align: center; color: var(--mn-text-muted); font-size: 14px; }
.xen-empty-action { margin-top: 12px; }

/* ===== 8. 版块节点列表 ===== */
.xen-nodeBlock { background: #fff; border: 1px solid var(--mn-border); border-radius: var(--xen-radius-main); margin-bottom: 14px; box-shadow: var(--mn-shadow-sm); overflow: hidden; }
.xen-nodeBlock-header { display: flex; align-items: baseline; gap: 10px; padding: 10px 14px; background: var(--mn-bg-row-hover); border-bottom: 1px solid var(--mn-border); }
.xen-nodeBlock-name { font-size: 14px; font-weight: 700; color: var(--mn-text); }
.xen-nodeBlock-desc { font-size: 12px; color: var(--mn-text-muted); }

.xen-node { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-bottom: 1px solid var(--mn-border-light); }
.xen-node:last-child { border-bottom: 0; }
.xen-node:hover { background: var(--mn-bg-row-hover); }
.xen-node-icon { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: var(--xen-radius); background: var(--mn-primary-light); color: var(--mn-primary); flex-shrink: 0; font-size: 16px; }
.xen-node-main { flex: 1; min-width: 0; }
.xen-node-title a { font-size: 15px; font-weight: 600; color: var(--mn-text); }
.xen-node-title a:hover { color: var(--mn-primary); }
.xen-node-desc { font-size: 12px; color: var(--mn-text-muted); margin-top: 2px; }
.xen-node-stats { display: flex; gap: 20px; padding: 0 8px; }
.xen-node-stats dl { text-align: center; }
.xen-node-stats dt { font-size: 11px; color: var(--mn-text-muted); }
.xen-node-stats dd { font-size: 14px; font-weight: 600; color: var(--mn-text); }
.xen-node-lastPost { width: 250px; min-width: 0; padding-left: 14px; border-left: 1px solid var(--mn-border-light); }
.xen-node-lastTitle { font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.xen-node-lastTitle a { color: var(--mn-text-secondary); }
.xen-node-lastTitle a:hover { color: var(--mn-primary); }
.xen-node-lastMeta { display: flex; align-items: center; gap: 6px; margin-top: 4px; font-size: 12px; color: var(--mn-text-muted); }
.xen-node-lastUser { color: var(--mn-text-secondary); }
.xen-node-noPosts { font-size: 12px; color: var(--mn-text-muted); }

/* ===== 9. 主题列表 ===== */
.xen-threadBlock { background: #fff; border: 1px solid var(--mn-border); border-radius: var(--xen-radius-main); margin-bottom: 14px; box-shadow: var(--mn-shadow-sm); overflow: hidden; }
.xen-threadBlock-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border-bottom: 1px solid var(--mn-border); background: var(--mn-bg-row-hover); flex-wrap: wrap; }
.xen-threadBlock-title { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.xen-threadBlock-title h2 { font-size: 15px; font-weight: 700; display: flex; align-items: center; gap: 6px; }
.xen-threadTabs { display: flex; gap: 4px; }
.xen-threadTab { display: flex; align-items: center; gap: 5px; padding: 5px 12px; border-radius: var(--xen-radius-sm); font-size: 12px; color: var(--mn-text-secondary); }
.xen-threadTab:hover { background: #fff; color: var(--mn-primary); }
.xen-threadTab.is-selected { background: var(--mn-primary); color: #fff; font-weight: 600; }

.xen-threadGroup--pinned { background: #fbfaf5; }
.xen-threadRow { display: flex; align-items: center; gap: 12px; padding: 10px 14px; border-bottom: 1px solid var(--mn-border-light); }
.xen-threadGroup:last-child .xen-threadRow:last-child { border-bottom: 0; }
.xen-threadRow:hover { background: var(--mn-bg-row-hover); }
.xen-threadRow-icon { flex-shrink: 0; }
.xen-threadRow-main { flex: 1; min-width: 0; }
.xen-threadRow-title { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.xen-threadRow-title a { font-size: 14px; font-weight: 600; color: var(--mn-text); }
.xen-threadRow-title a:hover { color: var(--mn-primary); }
.xen-threadRow-meta { display: flex; align-items: center; gap: 10px; margin-top: 3px; font-size: 12px; color: var(--mn-text-muted); flex-wrap: wrap; }
.xen-threadRow-author { color: var(--mn-text-secondary); }
/* 列表行徽章组：积分等级 + 信任等级并排（窄屏各自收敛为仅图标） */
.xen-threadRow-badges { display: inline-flex; align-items: center; gap: 4px; flex-wrap: wrap; vertical-align: middle; }
.xen-threadRow-stats { flex-shrink: 0; min-width: 70px; text-align: right; }
.xen-threadRow-replies { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; color: var(--mn-text-secondary); font-weight: 600; }

/* 列表摘要模式（showExcerpt 开启且该帖有摘要/缩略图时）：标题行下加摘要 + 缩略图，
   大头像收起，改在元信息前显示 18px 小头像（对齐核心 mn-row-excerpt 结构） */
.xen-threadRow-excerpt { display: flex; flex-direction: column; gap: 6px; margin-top: 6px; margin-bottom: 6px; }
.xen-threadRow-excerptText { font-size: 13px; line-height: 1.6; color: var(--mn-text-muted); overflow-wrap: break-word; word-break: break-word; }
/* 摘要图网格（对齐核心 .mn-excerpt-thumbs）：正文下方三列、格子统一 4:3，单图同样只占一格 */
.xen-excerpt-thumbs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; max-width: 330px; }
.xen-excerpt-thumb { display: block; width: 100%; aspect-ratio: 4 / 3; height: auto; object-fit: cover; border: 1px solid var(--mn-border); border-radius: var(--xen-radius-sm); }
.xen-threadRow-meta-avatar { display: inline-flex; align-items: center; }
.xen-threadRow-meta-avatar img { width: 18px; height: 18px; border-radius: var(--xen-radius-sm); object-fit: cover; }
.xen-threadRow-meta-avatar-ph { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: var(--xen-radius-sm); background: var(--mn-primary-light); color: var(--mn-primary); font-size: 10px; font-weight: 600; }

/* 分页 */
.xen-pagination { justify-content: center; margin-top: 16px; }
.xen-pagination .mn-page-link { border-radius: var(--xen-radius-sm); }

/* ===== 9b. 博客文章 / 评论（XenForo 卡片化） ===== */
.xen-articleTitle { font-size: 22px; }
.xen-articleMeta { margin-top: 10px; border-top: 1px solid var(--mn-border-light); padding-top: 12px; margin-bottom: 16px; }
.xen-articleActions { margin-left: auto; display: flex; gap: 8px; flex-wrap: wrap; }
.xen-articleBody { font-size: 15px; line-height: 1.8; }
.xen-cover { margin-bottom: 20px; }
.xen-cover img { width: 100%; aspect-ratio: 16/6; object-fit: cover; border-radius: var(--xen-radius); display: block; }
/* 评论行：嵌在 .xen-threadBlock 内，去掉单条卡片的外框/圆角，仅留分隔线 */
/* 博客评论：容器（.xen-threadBlock）本身即整块卡片，评论行应平铺 + 单条分隔线。
   注意：必须用双类选择器，否则优先级与 .xen-message（其后定义）相同会被覆盖，
   导致每条评论各自变成带边框/圆角/阴影的卡片。 */
.xen-message.xen-comment-row { border: 0; border-bottom: 1px solid var(--mn-border-light); border-radius: 0; box-shadow: none; }
.xen-message.xen-comment-row:last-of-type { border-bottom: 0; }

/* ===== 10. 帖子详情：消息列表 ===== */
.xen-threadTitleBlock { background: #fff; border: 1px solid var(--mn-border); border-radius: var(--xen-radius-main); padding: 16px; margin-bottom: 14px; box-shadow: var(--mn-shadow-sm);
    /* 标签与标题同一行：标签是行内元素，跟着标题文字排（与站点其它 .xen-tag 用法一致）。
       这样标题换行后自动回到容器左缘，与标签（图标）左对齐，而不是挂在标题起始位缩进 */
    display: block; }
/* 行内标签：与标题第一行垂直居中。
   vertical-align: middle 是按「基线 + x-height/2」定位的，中文墨迹的视觉中心比这个点高，
   像素实测偏低 3px，故再上移 3px（正文 19px/行高 1.35 下实测居中）；
   右侧 10px 为与标题文字之间的间距 */
.xen-threadTitleBlock-tags { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; vertical-align: middle; position: relative; top: -3px; margin: 0 10px 0 0; }
/* 无分类/置顶等标签时容器为空，隐藏以免多占间距 */
.xen-threadTitleBlock-tags:empty { display: none; }
/* 底部的 #标签 行仍独占一行（不受上面 3px 上移影响） */
.xen-threadTitleBlock-tags--bottom { display: flex; margin-top: 10px; margin-right: 0; position: static; top: 0; }
/* 行内标题：换行后回到容器左缘（与标签左对齐） */
.xen-threadTitle { font-size: 19px; font-weight: 700; line-height: 1.35; display: inline; }
/* 标题栏与主帖无缝相接：去掉中间空隙，相接处圆角收平（仅当后面紧跟的正是主帖） */
.xen-threadTitleBlock:has(+ .xen-message--thread) { margin-bottom: 0; border-bottom: 0; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
/* 博客详情页的标题栏没有 .xen-threadTitleBlock 外层（分类标签容器与 h1 是同级兄弟），
   这里用等价的一行 flex 包裹，让「分类标签 + 标题」同样落在同一行 */
.xen-articleTitleRow { display: block; }
/* 与帖子页一致：行内标签 + 行内标题，标题换行后回到容器左缘（与标签左对齐） */
.xen-articleTitleRow > .xen-threadTitleBlock-tags { display: inline-flex; vertical-align: middle; margin: 0 10px 0 0; }
.xen-articleTitleRow > .xen-threadTitle { display: inline; }

/* 楼层列表：各楼层贴合（去掉中间缝隙），相邻楼层共用一条分隔线；
   整体仍是一个圆角卡片（首层上圆角 / 末层下圆角），阴影移到整列上 */
.xen-messageList {
    display: flex;
    flex-direction: column;
    gap: 0;
    border-radius: var(--xen-radius-main);
    box-shadow: var(--mn-shadow-sm);
}
.xen-message { background: #fff; border: 1px solid var(--mn-border); border-radius: var(--xen-radius-main); box-shadow: var(--mn-shadow-sm); overflow: hidden; }
/* 列表内的回复：不各自圆角/阴影（圆角交由整块的首/末条处理） */
.xen-messageList > .xen-message { border-radius: 0; box-shadow: none; }
/* 相邻回复只保留一条分隔线（上一层下边框） */
.xen-messageList > .xen-message + .xen-message { border-top: 0; }
/* 回复块：首条上圆角（保留自身顶边线）、末条下圆角；只有一条回复时四角圆角 */
.xen-messageList > .xen-message:first-child { border-radius: var(--xen-radius-main) var(--xen-radius-main) 0 0; }
.xen-messageList > .xen-message:last-child { border-radius: 0 0 var(--xen-radius-main) var(--xen-radius-main); }
.xen-messageList > .xen-message:only-child { border-radius: var(--xen-radius-main); }
/* 主帖：位于列表之外，独立卡片（独立阴影，默认 .xen-message 自带），与回复块之间留空隙；
   上圆角收平 —— 与上方标题栏无缝拼成一体（见 .xen-threadTitleBlock:has(+ …) ） */
.xen-message--thread { margin-bottom: 14px; border-top-left-radius: 0; border-top-right-radius: 0; }
.xen-message-inner { display: flex; align-items: stretch; }

/* 左侧用户栏 */
.xen-message-user { width: 150px; flex-shrink: 0; background: #ffffff; border-right: 1px solid var(--mn-border-light); padding: 16px 12px; text-align: center; }
.xen-message-userAvatar { margin-bottom: 8px; }
.xen-message-username { font-size: 14px; font-weight: 600; word-break: break-all; }
.xen-message-username a { color: var(--mn-text); }
.xen-message-username a:hover { color: var(--mn-primary); }
/* 头像右侧内容列：第一行（用户名 + 勋章）・第二行（头衔 + 等级/信任徽章）。
   桌面端两行各自居中 —— 与改造前观感一致；
   窄屏改为「用户名 + 勋章同一行紧邻、头衔另起一行左对齐」（见媒体查询） */
.xen-message-userInfo { min-width: 0; }
.xen-message-userTop { display: flex; flex-direction: column; align-items: center; gap: 2px; }
/* 楼层用户名下方的「勋章 + 头衔 + 积分等级 + 信任等级」块：列向居中，
   避免徽章换行时第二行贴左（列宽仅 150px，两枚徽章常常放不下） */
.xen-message-role { margin-top: 4px; font-size: 12px; display: flex; flex-direction: column; align-items: center; gap: 2px; }
.xen-message-badges { display: inline-flex; align-items: center; justify-content: center; gap: 6px; flex-wrap: wrap; margin-top: 2px; vertical-align: middle; }

/* 右侧内容栏 */
.xen-message-content { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.xen-message-header { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-bottom: 1px solid var(--mn-border-light); background: var(--mn-bg-row-hover); }
.xen-message-actions { display: flex; align-items: center; gap: 6px; margin-left: auto; order: 3; }
.xen-message-anchor { font-size: 13px; color: var(--mn-text-muted); font-weight: 600; }
.xen-message-date { font-size: 12px; color: var(--mn-text-muted); }
.xen-message-body { padding: 16px; flex: 1; }
.xen-message-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 14px; border-top: 1px solid var(--mn-border-light); background: var(--mn-bg-row-hover); }
.xen-message-footerLeft { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.xen-message-footerRight { margin-left: auto; display: flex; align-items: center; gap: 4px; }
/* 回复行：举报按钮 + 楼层号靠右成组（post_report_button 钩子输出位） */
.xen-message-report { display: inline-flex; align-items: center; gap: 8px; margin-left: auto; }
.xen-messageSep { color: var(--mn-border); }

/* 锁定内容 */
.xen-locked { padding: 20px; text-align: center; }
.xen-locked-icon { margin-bottom: 8px; color: var(--mn-text-muted); }
.xen-text-muted { color: var(--mn-text-muted); }
.xen-text-secondary { color: var(--mn-text-secondary); }

/* 阅读全文：展开条样式统一见 §14c（.xen-expandBar / .xen-expandBtn），此处不再重复定义 */

/* 编辑记录 / 签名 */
.xen-editInfo { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--mn-border); font-size: 12px; color: var(--mn-text-muted); }
.xen-signature { margin-top: 14px; padding-top: 10px; border-top: 1px dashed var(--mn-border); font-size: 12px; color: var(--mn-text-muted); }

/* 附件 */
.xen-attachments { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--mn-border-light); }
.xen-attachments h4 { margin-bottom: 8px; }
.xen-attachmentItem { display: inline-block; margin: 0 8px 8px 0; vertical-align: top; }
.xen-attachmentImg { max-width: 220px; max-height: 220px; border: 1px solid var(--mn-border); border-radius: var(--xen-radius-sm); object-fit: cover; }
.xen-attachmentName { font-size: 11px; color: var(--mn-text-muted); text-align: center; max-width: 220px; }
.xen-attachmentFile { margin-bottom: 6px; }
.xen-attachmentFile a { color: var(--mn-text-link); }

/* ===== 11. 回复表单 ===== */
.xen-replyBlock { background: #fff; border: 1px solid var(--mn-border); border-radius: var(--xen-radius-main); margin-top: 14px; box-shadow: var(--mn-shadow-sm); }
/* 表头背景需跟随父级圆角：父级 .xen-replyBlock 无 overflow:hidden，
   故此处补上顶部圆角（= 父级圆角 10px 减去 1px 边框，正好贴合内曲线） */
.xen-replyBlock-header { padding: 12px 14px; border-bottom: 1px solid var(--mn-border); background: var(--mn-bg-row-hover); border-radius: calc(var(--xen-radius-main) - 1px) calc(var(--xen-radius-main) - 1px) 0 0; }
.xen-replyBlock-header h2 { display: flex; align-items: center; gap: 6px; }
.xen-replyBlock-body { padding: 14px; }
.xen-replyForm-actions { display: flex; align-items: center; gap: 12px; margin-top: 10px; flex-wrap: wrap; }

/* ===== 12. 浮动操作栏 ===== */
.xen-floatBar { position: fixed; right: 20px; bottom: 20px; display: flex; flex-direction: column; gap: 8px; z-index: 90; }
.xen-floatBtn { display: flex; align-items: center; justify-content: center; gap: 6px; width: 44px; height: 44px; padding: 0; border-radius: 50%; background: #fff; border: 1px solid var(--mn-border); color: var(--mn-text-secondary); box-shadow: var(--mn-shadow-float); font-size: 13px; }
.xen-floatBtn:hover { color: var(--mn-primary); border-color: var(--mn-primary); }
.xen-floatBtn--primary { background: #e99721; border-color: #e99721; color: #fff; }
.xen-floatBtn--primary:hover { background: #d98f16; color: #fff; }

/* ===== 13. 页脚 ===== */
.xen-footer { background: #1f4e79; color: #dde7f0; margin-top: auto; }
.xen-footer-inner { max-width: 1320px; margin: 0 auto; padding: 20px 16px 24px; }
.xen-footer-row { display: flex; justify-content: flex-end; align-items: center; gap: 20px; flex-wrap: wrap; padding-bottom: 14px; border-bottom: 1px solid rgba(255,255,255,0.12); }
.xen-footer-links { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 18px; }
.xen-footer-links a { color: #e3ebf3; font-size: 13px; }
.xen-footer-links a:hover { color: #fff; }
/* 页脚左侧品牌徽章（对齐核心 layouts/main.php 的 mn-footer-badge）：靠左，链接行仍靠右 */
.xen-footer-left { display: flex; align-items: center; margin-right: auto; }
.xen-footer-badge { height: 20px; width: 138px; display: block; }
.xen-footer-copyright { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding-top: 14px; font-size: 12px; color: #a4b8cb; }
.xen-footer-copyright a { color: #d6e2ec; }
.xen-footer-debug { margin-left: auto; }
/* 插件页脚链接（footer_links 钩子输出位，与静态链接同排） */
.xen-footer-hooks { margin-left: 20px; }
.xen-footer-hooks:empty { margin-left: 0; }

/* ===== 14. 工具类（xen- 命名，供主题内使用） ===== */
.xen-flex-center { display: flex; align-items: center; }
.xen-gap-3 { gap: 3px; }
.xen-gap-4 { gap: 4px; }
.xen-fs-12 { font-size: 12px; }
.xen-fs-13 { font-size: 13px; }
.xen-fs-14 { font-size: 14px; }
.xen-fw-600 { font-weight: 600; }
.xen-lh-17 { line-height: 1.7; }
.xen-hidden { display: none !important; }
.xen-cursor-pointer { cursor: pointer; }
.xen-inline-form { display: inline; }
.xen-link-strong { color: var(--mn-primary); font-weight: 600; }
.xen-desktop-only { display: inline; }

/* ===== 14b. 表单 / 认证页聚焦卡片 ===== */
.xen-authBox { max-width: 480px; margin: 0 auto; display: flex; flex-direction: column; }
.xen-formLabel { display: block; font-size: 12px; font-weight: 600; color: var(--mn-text-secondary); margin-bottom: 6px; }
.xen-formHint { font-size: 12px; color: var(--mn-text-muted); margin-top: 4px; }

/* ===== 14c. 长帖正文折叠（Alpine + CSS，全文直出不发请求） =====
   折叠高度变量 --thread-body-collapsed-height（600px）由 modern.css :root 提供；
   .thread-body / --collapsed / --expanded 及其渐变遮罩同样沿用 core，这里只补 XenForo 皮肤的展开条。 */
.xen-expandBar { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 8px; margin-top: 16px; padding-top: 14px; border-top: 1px dashed var(--mn-border); }
.xen-expandBtn { min-width: 160px; justify-content: center; font-size: 14px; font-weight: 600; padding: 10px 24px; border-radius: var(--xen-radius-sm); }
.xen-expandBtn:hover { opacity: 0.9; }
.xen-message-body .thread-body--collapsed::after { background: linear-gradient(to bottom, transparent, var(--mn-bg-card)); }

/* ===== 14d. 模板已用、此前 CSS 缺定义的类（语义标记说明 + 工具类补全） ===== */
.xen-pageContent { min-width: 0; }
.xen-nodeList { display: flex; flex-direction: column; }
/* .xen-searchButton / .xen-account 只是导航分组的语义标记，样式由 .xen-navgroup 提供，无需单独规则 */
/* 同类「只标记未定义」类（样式由父级或工具类提供，不建空规则）：
   .xen-navgroup-link--search/--user/--auth        → 基类 .xen-navgroup-link（:134）已定义
   .xen-threadRow-stat                              → 父级 .xen-threadRow-meta（:307）已定义
   .xen-node-lastTime                               → 父级 .xen-node-lastPost（:280）已定义
   .xen-groupTitle                                  → 样式由 mn-fs-14/mn-fw-600/mn-pb-8/mn-border-bottom 工具类提供 */
.xen-gap-8 { gap: 8px; }
.xen-fs-11 { font-size: 11px; }
.xen-fs-18 { font-size: 18px; }
.xen-fs-20 { font-size: 20px; }
.xen-fs-48 { font-size: 48px; }
.xen-dropdown-wrap { position: relative; }
.xen-message--thread .xen-message-user { background: var(--mn-bg-row-hover); }
/* 间距/内边距工具类（收敛 A 组模板里的内联 style） */
.xen-mb-4 { margin-bottom: 4px; }
.xen-mb-14 { margin-bottom: 14px; }
.xen-mb-16 { margin-bottom: 16px; }
.xen-ml-4 { margin-left: 4px; }
.xen-mt-4 { margin-top: 4px; }
.xen-mt-8 { margin-top: 8px; }
.xen-mt-3 { margin-top: 3px; }
.xen-mt-14 { margin-top: 14px; }
.xen-mt-40 { margin-top: 40px; }
.xen-p-14 { padding: 14px; }
.xen-p-20 { padding: 20px; }
.xen-p-6-12 { padding: 6px 12px; }
.xen-p-40-24 { padding: 40px 24px; }
.xen-fs-17 { font-size: 17px; }
.xen-maxw-520 { max-width: 520px; }
.xen-minw-200 { min-width: 200px; }
.xen-minh-80 { min-height: 80px; }
.xen-va-middle { vertical-align: middle; }
.xen-mb-20 { margin-bottom: 20px; }
/* 博客列表封面缩略图：静态尺寸走类，仅 background-image 留内联（每条不同） */
.xen-blogCoverThumb { width: 150px; height: 90px; border-radius: 2px; overflow: hidden; flex-shrink: 0; background: var(--mn-bg-row-hover); background-size: cover; background-position: center; }
.xen-threadBlock-body { padding: 22px 26px; }
.xen-editorArea { min-height: 320px; }

/* ===== 14e. 表单页（博客编辑/认证页）===== */
.xen-formRow { margin-bottom: 14px; }
.xen-formRow--last { margin-bottom: 16px; }
.xen-formSelect { max-width: 300px; }
.xen-coverRow { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.xen-coverFile { max-width: 400px; padding: 6px 13px; }
.xen-coverPreviewWrap { margin-top: 4px; }
.xen-coverPreviewImg { width: 320px; height: 200px; object-fit: cover; border-radius: var(--xen-radius-sm); border: 1px solid var(--mn-border); display: block; }
.xen-coverHint { margin-top: 4px; font-size: 12px; color: var(--mn-text-muted); }
.xen-formActions { display: flex; align-items: center; gap: 10px; }

/* ===== 14f. 认证页（登录/注册/找回/重置）===== */
.xen-btn--block { width: 100%; padding: 10px; font-size: 15px; }
.xen-authHead { justify-content: center; }
.xen-authBody { padding: 24px; }
.xen-authFoot { text-align: center; margin-top: 16px; font-size: 13px; color: var(--mn-text-muted); }
.xen-formRight { text-align: right; margin-top: 4px; }
.xen-rememberRow { gap: 6px; margin-bottom: 14px; }
.xen-strengthWrap { margin-top: 4px; }
.xen-strengthBar { height: 100%; width: 0; border-radius: 2px; transition: width .3s, background .3s; }
.xen-captchaRow { display: flex; align-items: center; gap: 10px; }
.xen-captchaInput { flex: 1; }
.xen-captchaImg { height: 38px; border-radius: var(--xen-radius-sm); border: 1px solid var(--mn-border); cursor: pointer; }
.xen-captchaHint { margin-top: 3px; font-size: 11px; color: var(--mn-text-muted); }

/* ===== 14g. 标签云 ===== */
.xen-p-24-20 { padding: 24px 20px; }
.xen-tagCloud { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
/* 字号由模板按热度内联给出（每标签不同），其余外观全部走类 */
.xen-tagCloud-item { display: inline-flex; align-items: center; gap: 4px; padding: 6px 14px; border-radius: var(--xen-radius-sm); color: var(--mn-text-secondary); background: var(--mn-bg-body); border: 1px solid var(--mn-border-light); text-decoration: none; transition: all 0.12s; }
.xen-tagCloud-item:hover { background: var(--mn-primary); color: #fff; border-color: var(--mn-primary); }
.xen-tagCloud-count { font-size: 0.7em; opacity: 0.6; }

/* ===== 14h. 主题设置（主题卡片网格） ===== */
.xen-themeGrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
.xen-themeCard { display: block; position: relative; cursor: pointer; border: 2px solid var(--mn-border); border-radius: var(--xen-radius-main); overflow: hidden; transition: all 0.15s; background: var(--mn-bg-card); }
.xen-themeCard.is-active { border-color: var(--xen-theme-color, var(--mn-primary)); box-shadow: 0 0 0 1px var(--xen-theme-color, var(--mn-primary)); }
.xen-themeCard-swatch { height: 48px; background: var(--xen-theme-color, var(--mn-primary)); display: flex; align-items: center; justify-content: center; }
.xen-themeCard-radio { position: absolute; opacity: 0; }
/* 界面偏好面板（隐藏右栏 / 夜间 / 摘要 / 首页模式）：变更即提交，无需保存按钮 */
.xen-prefPanel { padding: 14px 16px; margin-bottom: 20px; background: var(--mn-bg-row-hover); border: 1px solid var(--mn-border); border-radius: var(--xen-radius-sm); }
.xen-prefRow { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; cursor: pointer; }
.xen-prefRow--indent { margin-left: 24px; }
.xen-prefRow-label { font-size: 13px; font-weight: 600; }
.xen-prefRow-num { width: 80px; }
.xen-prefRow-select { width: 140px; }
.xen-prefHint { margin: 0 0 10px 24px; font-size: 12px; color: var(--mn-text-muted); }

/* ===== 16. 门户首页适配：xen-portal 容器下把 pr-* 卡片对齐 XenForo 观感 ===== */
.xen-portal .pr-card { border: 1px solid var(--mn-border); border-radius: var(--xen-radius); box-shadow: var(--mn-shadow-sm); }
.xen-portal .pr-hero { border-radius: var(--xen-radius); }
.xen-portal .pr-btn { border-radius: var(--xen-radius-sm); }
.xen-portal .pr-btn-primary { background: var(--mn-primary); }
.xen-portal .pr-btn-primary:hover { background: var(--mn-primary-hover); }
.xen-portal .pr-btn-ghost { border-color: var(--mn-border); color: var(--mn-text-secondary); }
.xen-portal .pr-eyebrow { color: var(--mn-text-secondary); }
.xen-portal .pr-section-title { color: var(--mn-text); }
.xen-portal .pr-spec-value { color: var(--mn-primary); }
.xen-portal .pr-feature-icon { background: var(--mn-primary-subtle); color: var(--mn-primary); }

/* ===== 15. 响应式 ===== */
@media (max-width: 1024px) {
    .xen-body-sidebar { width: 260px; }
    .xen-node-lastPost { width: 200px; }
    /* 帖子详情头像：桌面 64px → 平板 48px（<900px 顶栏形态由下方 40px 接管） */
    .xen-avatar--lg { width: 48px; height: 48px; font-size: 17px; }
}

@media (max-width: 900px) {
    /* 主内容单栏：必须显式改回 stretch，否则继承桌面的 align-items:flex-start，
       列向 flex 下主轴变纵向、交叉轴宽度取 fit-content，会被最小内容宽度撑破视口（出现横拉条） */
    .xen-body-main { flex-direction: column; align-items: stretch; }
    .xen-body-sidebar { width: 100%; }

    /* 导航折叠为汉堡 */
    .xen-nav-trigger { display: flex; }
    .xen-logo--image { display: none; }
    .xen-logo--text { display: flex; }
    .xen-nav-tabs { display: none; }
    .xen-navgroup-search-label { display: none; }
    .xen-navgroup-username { display: none; }
    .xen-navgroup-link--register { padding: 6px 10px; }
    /* 顶栏在窄屏要同时容纳「汉堡 + 站标 + 快捷图标 + 搜索 + 账号区」，
       收紧外边距与间距，避免 375px 下横向溢出 */
    .xen-nav-inner { padding: 0 10px; gap: 6px; }
    .xen-navLinks { gap: 0; }
    /* 搜索入口保留；「布局」开关在抽屉里已有一份，顶栏收起它，把位置让给搜索 */
    .xen-searchButton { display: flex; }
    .xen-navLinks .xen-linkForm { display: none; }
    /* 「登录 / 注册」文字按钮收起，只留一个登录图标按钮 */
    .xen-navgroup-link--auth { display: none; }
    .xen-navgroup-link--loginIcon { display: flex; }
    .xen-navgroup-link--loginIcon i { font-size: 17px !important; }
    /* 顶栏图标内边距统一 6px 8px（未登录 · 登录一致）：搜索 / 登录图标；
       快捷图标那条在下方「快捷入口的桌面/窄屏切换」里；头像与下拉箭头保持现状，不参与统一 */
    .xen-searchButton .xen-navgroup-link--search,
    .xen-navgroup-link--loginIcon { padding: 6px 8px; }

    /* ===== 窄屏列表重排（仅本断点生效，桌面端保持原样）=====
       1) 版块行：标题与统计同行（统计紧跟标题）、简介另起一行、最后回复整行
       2) 主题行：徽标（置顶/精华）与标题同行、分类标签贴右上角
       3) 卡片头：标题与简介同行，主操作按钮铺满整行便于点按 */
    /* 图标脱离文档流固定左上角（与标题行盒顶端齐平）：
       否则 40px 的图标会撑高「标题」这一行，把简介顶到图标下方（间距被拉到 ~30px），
       与参考图「简介紧贴标题、图标覆盖标题+简介整块」的节奏不符。
       行内间距：与标题/统计保持 14px，标题行与简介之间只留 row-gap 4px */
    .xen-node { position: relative; flex-wrap: wrap; padding: 12px; column-gap: 14px; row-gap: 4px; min-height: 64px; }
    .xen-node-icon { position: absolute; left: 12px; top: 12px; }
    /* 标题/简介不再各自成盒，直接参与外层 flex 排序：
       标题(order 1) → 统计(order 2) → 简介(order 3) → 最后回复(order 4) */
    .xen-node-main { display: contents; }
    /* 左侧让出图标位（40px 图标 + 14px 间距） */
    .xen-node-title { order: 1; min-width: 0; margin-left: 54px; }
    .xen-node-title a { display: inline; }
    /* 无简介的版块（标题是 .xen-node-main 的唯一子元素）：标题行补足图标高度，
       否则图标虽不占行高，但「最后回复」整行的文字会顶到图标下面被盖住 */
    .xen-node-title:only-child { display: flex; align-items: center; min-height: 40px; }
    /* 统计：标签与数字同行（「主题数 3」），与标题同一行但靠右对齐（margin-left:auto 吃掉剩余空间） */
    .xen-node-stats { order: 2; width: auto; flex: 0 1 auto; margin: 0 0 0 auto; padding: 0; gap: 14px; }
    .xen-node-stats dl { display: flex; align-items: baseline; gap: 4px; flex: 0 0 auto; white-space: nowrap; text-align: left; }
    .xen-node-stats dt { font-size: 12px; }
    .xen-node-stats dd { margin: 0; font-size: 13px; }
    /* 简介紧贴标题下方（间距只由容器 row-gap 4px 提供），并与标题左对齐：
       左缩进 = 图标宽 40px + 14px 间距，宽度同步扣掉，右侧仍对齐行尾。
       图标是绝对定位，不占行高，所以这里不会像原来那样被图标顶下去 */
    /* 简介只显示一行，多出的部分省略号隐藏（不换行、不撑高版块行） */
    .xen-node-desc { order: 3; flex: 0 0 calc(100% - 54px); margin: 0 0 0 54px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    /* 最后回复整行：帖子标题与「头像 + 作者 + 时间」同一行（标题占余宽、超出省略，作者信息靠右） */
    .xen-node-lastPost { order: 4; width: 100%; padding: 8px 0 0; border-left: 0; border-top: 1px solid var(--mn-border-light); margin-top: 4px; display: flex; align-items: center; gap: 10px; }
    .xen-node-lastTitle { flex: 1 1 auto; min-width: 0; }
    .xen-node-lastMeta { margin-top: 0; margin-left: auto; flex: 0 0 auto; white-space: nowrap; }

    /* 主题行：内容顶部对齐、内边距收紧；徽标不许被压缩（否则「置/顶」竖排、图标压扁），
       只让标题在自身内部换行 */
    .xen-threadRow { align-items: flex-start; gap: 10px; padding: 12px; }
    /* 徽标与标题同处一行文本流（不再 flex 分列）：首行紧跟徽标，标题换行后
       自动回到徽标左边缘对齐 —— 即「换行标题与徽标左边对齐」 */
    .xen-threadRow-title { display: block; }
    .xen-threadRow-title .xen-tag { display: inline-flex; margin-right: 2px; white-space: nowrap; }
    .xen-threadRow-title a { display: inline; overflow-wrap: anywhere; }
    .xen-threadRow-meta { margin-top: 5px; gap: 10px; row-gap: 3px; }
    /* 分类标签贴右上角：原先 align-items:center 让它在多行标题旁显得孤立 */
    .xen-threadRow-stats { align-self: flex-start; min-width: 0; }

    /* 卡片头：标题与简介同行；主操作按钮铺满 */
    .xen-threadBlock-header { padding: 12px; }
    /* 标题与简介同处一行文本流：简介换行后回到标题（含图标）左边缘对齐 */
    .xen-threadBlock-title { display: block; }
    .xen-threadBlock-title h2 { display: inline-flex; align-items: center; gap: 6px; margin-right: 2px; white-space: nowrap; }
    .xen-threadBlock-title > span { display: inline; overflow-wrap: anywhere; }
    /* 卡片头里内嵌了选项卡（主题列表的「最新主题 / 精华」）：窄屏不再折到第二行，
       与「论坛」标题同行，并贴到行尾。
       用 :has(> .xen-threadTabs) 限定，只影响「标题内嵌选项卡」的头部，
       其余页面（搜索/私信/标签等）仍走上面的 display:block 文本流规则 */
    .xen-threadBlock-title:has(> .xen-threadTabs) { display: flex; align-items: center; flex-wrap: nowrap; gap: 8px; flex: 1 1 auto; }
    .xen-threadBlock-title:has(> .xen-threadTabs) > h2 { min-width: 0; }
    .xen-threadBlock-title:has(> .xen-threadTabs) > .xen-threadTabs { margin-left: auto; flex: 0 0 auto; }
    .xen-threadBlock-header > .xen-btn--primary { width: 100%; justify-content: center; }

    /* 分类标签行（博客中心 / 版块页）：窄屏强制单行 + 左右滑动，不再折成两行；
       隐藏滚动条保留滑动（与原生 App 的分段导航一致）。
       容器选择器 .mn-flex-wrap.mn-p-10-14 仅这两处标签行使用，不会误伤其它块 */
    .mn-flex-wrap.mn-p-10-14 { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
    .mn-flex-wrap.mn-p-10-14::-webkit-scrollbar { display: none; }
    .mn-flex-wrap.mn-p-10-14 > .xen-threadTab { flex: 0 0 auto; white-space: nowrap; }

    /* 帖子详情：用户栏折叠为顶栏 */
    .xen-message-inner { flex-direction: column; }
    .xen-message-user { width: 100%; display: flex; align-items: center; gap: 12px; text-align: left; border-right: 0; border-bottom: 1px solid var(--mn-border-light); padding: 10px 14px; }
    /* 窄屏用户栏改白底（桌面端保持原浅灰底）。
       第二条与 .xen-message--thread .xen-message-user 同权重、且在文件中位置更靠后，可覆盖主帖那条灰底 */
    .xen-message-user,
    .xen-message--thread .xen-message-user { background: #fff; }
    .xen-message-userAvatar { margin-bottom: 0; }
    .xen-avatar--lg { width: 40px; height: 40px; font-size: 16px; }
    /* 头像右侧为文字列：第一行「用户名 + 勋章」紧邻，第二行「头衔/等级」左缘与用户名对齐 */
    .xen-message-userInfo { flex: 1; }
    .xen-message-userTop { flex-direction: row; align-items: center; gap: 8px; }
    .xen-message-username { font-size: 14px; }
    .xen-message-role { margin-top: 4px; margin-left: 0; align-items: flex-start; }
    .xen-message-badges { justify-content: flex-start; }
}

@media (min-width: 901px) {
    /* 博客评论：桌面端用较窄的用户栏，移动端（<900px）自动折叠为顶栏 */
    .xen-comment .xen-message-user { width: 120px; }
    /* 桌面端：楼层头部（「时间 / 楼层号」那一行）改白底；窄屏仍保持浅灰底 */
    .xen-message-header { background: #fff; }
}

@media (max-width: 600px) {
    .xen-body-inner { padding: 8px 10px 20px; }
    .xen-threadRow-replies { min-width: 0; }
    .xen-threadRow-stats { min-width: 52px; }
    .xen-message-header { flex-wrap: wrap; }
    /* 时间与楼层号同一行：时间在左、#1 在右（原来时间被排成整行宽，独占一行） */
    .xen-message-date { order: 1; width: auto; flex: 1; }
    .xen-message-anchor { order: 2; margin-left: auto; }
    .xen-message-actions { order: 3; }
    .xen-floatBar { right: 12px; bottom: 12px; }
    .xen-desktop-only { display: none; }
    .xen-footer-debug { margin-left: 0; width: 100%; }
    /* 资料统计：4 列挤在一行过紧，手机上收紧为 2 列 */
    .profile-stats-grid { grid-template-columns: repeat(2, 1fr); }
    /* 个人主页（user_profile 插件）统计条：单行放不下且被 .up-card 的 overflow:hidden 裁掉，
       窄屏改为换行排列，避免右侧统计项被切掉 */
    .xen-body-content .up-stats { flex-wrap: wrap; gap: 8px 0; }
}

/* ===== 快捷入口的桌面/窄屏切换 =====
   桌面（>900px）：入口在主导航「搜索」左侧（图标 + 文字），白底副导航条隐藏；
   窄屏（≤900px）：入口收进主导航右侧、只保留图标；但「登录后」顶栏还要放通知铃铛与账号区，
   横向放不下，此时整体改到汉堡抽屉内（.xen-offCanvas-quick），未登录时才显示在顶栏 */
@media (min-width: 901px) {
    .xen-sectionLinks { display: none; }
}
@media (max-width: 900px) {
    /* 白底副导航条已并入顶栏，不再显示 */
    .xen-sectionLinks { display: none; }
    /* 顶栏放不下：收起通知铃铛（抽屉里已有带未读数的铃铛），其余图标全部保留；
       账号区收紧，让头像与下拉箭头挨得更近 */
    .xen-nav .xen-bell { display: none; }
    .xen-account .xen-navgroup-link--user { padding: 8px 4px; }
    .xen-account .xen-navgroup-link--trigger { padding: 8px 3px; }
    /* 只留图标：文字用 font-size:0 收起（图标 <i> 的内联 font-size 需 !important 覆盖） */
    .xen-navLinks .xen-sectionLink,
    .xen-navLinks .xen-linkForm-btn { padding: 6px 8px; font-size: 0; gap: 0; }
    /* 语言 / 应用是「容器 + 内层 <a>」两层同用 .xen-sectionLink 类，
       上面那条会给两层各加一次内边距，这里把外层的补回 0（与桌面端一致） */
    .xen-navLinks .xen-sectionLink--lang,
    .xen-navLinks .xen-sectionLink--apps { padding: 0; }
    .xen-navLinks .xen-sectionLink i,
    .xen-navLinks .xen-linkForm-btn i { font-size: 16px !important; }
    /* 排列顺序对齐参考图：主题 → 语言 → 应用 → 布局 */
    .xen-navLinks > .xen-sectionLink:not(.xen-sectionLink--lang):not(.xen-sectionLink--apps) { order: 1; }
    .xen-navLinks > .xen-sectionLink--lang { order: 2; }
    .xen-navLinks > .xen-sectionLink--apps { order: 3; }
    .xen-navLinks > .xen-linkForm { order: 4; }
}

/* ===== 返回顶部（全站浮动按钮）=====
   默认隐藏；仅当「内容超过一屏（出现滚动条）」且「用户已滚动」时由 JS 加 .is-visible 显示，
   逻辑见 themes/Xenforo/xenforo-float.js */
.xen-backTop {
    position: fixed;
    right: 20px;
    bottom: 20px;
    z-index: 95;
    display: none;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 1px solid var(--mn-border);
    border-radius: 50%;
    background: #fff;
    color: var(--mn-text-secondary);
    box-shadow: var(--mn-shadow-float);
    cursor: pointer;
}
.xen-backTop:hover { color: var(--mn-primary); border-color: var(--mn-primary); }
.xen-backTop.is-visible { display: flex; }
/* 说明：页面上若存在「浮动操作条」(.xen-floatBar，帖子/博客详情页)，返回顶部按钮
   由 xenforo-float.js 动态排到该浮动条上方（右对齐）；无浮动条时用上面的默认位置 */
@media (max-width: 900px) {
    /* 窄屏默认位置（页面无浮动条时）；有浮动条时仍由 JS 动态排到其上方 */
    .xen-backTop { right: 12px; bottom: 12px; }
}
