/* flinthub_ui */
html.flinthub-ui-shell{--bg:#f4f5f7;--panel:#ffffff;--line:#e8eaee;--line-soft:#f0f1f3;--text:#1a1a2e;--text-muted:#5b6778;--text-subtle:#9ca3af;--text-disabled:#c3c8d0;--danger:#dc2626;--danger-soft:#fef2f2;--warning:#d97706;--warning-soft:#fff7ed;--info:#0969da;--info-soft:#eef4ff;--inverse:#0f172a;--inverse-border:#1f2937;--inverse-text:#ffffff;--color-dark-rgb:17,24,39;--shadow-base:rgba(16,24,40,.04);--shadow-medium:rgba(16,24,40,.08);--radius:8px;--radius-sm:6px;--flinthub-ui-nav:#ffffff;--flinthub-ui-input:#ffffff;--flinthub-ui-row-hover:#f8f9fb;--flinthub-ui-shadow-panel:0 1px 3px rgba(0,0,0,.06);--flinthub-ui-shadow-dropdown:0 4px 16px rgba(0,0,0,.1);--flinthub-ui-badge-pinned:#fef2f2;--flinthub-ui-badge-pinned-text:#dc2626;--flinthub-ui-chip-h:24px;--flinthub-ui-chip-pad:0 9px;--flinthub-ui-chip-gap:4px;--flinthub-ui-chip-radius:999px;--flinthub-ui-chip-font:12px;--flinthub-ui-chip-icon:14px;--flinthub-ui-chip-bg:var(--brand);--flinthub-ui-chip-color:var(--inverse-text);--flinthub-ui-chip-hover:var(--brand-hover);--flinthub-ui-chip-on-bg:var(--brand-soft);--flinthub-ui-chip-on-color:var(--brand);--flinthub-ui-chip-on-border:var(--brand);--flinthub-ui-chip-soft-h:20px;--flinthub-ui-chip-soft-pad:0 8px;--flinthub-ui-chip-soft-font:11px;--flinthub-ui-chip-soft-bg:var(--line-soft);--flinthub-ui-chip-soft-color:var(--text-muted);}html.flinthub-ui-shell[data-color-scheme-dark-mode-theme="dark"]{--bg:#0f121a;--panel:#171b27;--line:#262b3b;--line-soft:#1e2332;--text:#e2e5ed;--text-muted:#9399ab;--text-subtle:#636a80;--text-disabled:#4a5066;--danger:#f47278;--danger-soft:#241b20;--warning:#f6a04e;--warning-soft:#252019;--info:#6aaeff;--info-soft:#19212a;--inverse:#0b0f14;--inverse-border:#2b313b;--inverse-text:#f1f5f9;--color-dark-rgb:15,18,26;--shadow-base:rgba(0,0,0,.38);--shadow-medium:rgba(0,0,0,.52);--radius:8px;--radius-sm:6px;--flinthub-ui-nav:#171b27;--flinthub-ui-input:#0f121a;--flinthub-ui-row-hover:#1e2332;--flinthub-ui-shadow-panel:0 1px 3px rgba(0,0,0,.38);--flinthub-ui-shadow-dropdown:0 4px 16px rgba(0,0,0,.52);--flinthub-ui-badge-pinned:#241b20;--flinthub-ui-badge-pinned-text:#f47278;}@media(prefers-color-scheme:dark){html.flinthub-ui-shell:not([data-color-scheme-dark-mode-theme]){--bg:#0f121a;--panel:#171b27;--line:#262b3b;--line-soft:#1e2332;--text:#e2e5ed;--text-muted:#9399ab;--text-subtle:#636a80;--text-disabled:#4a5066;--danger:#f47278;--danger-soft:#241b20;--warning:#f6a04e;--warning-soft:#252019;--info:#6aaeff;--info-soft:#19212a;--inverse:#0b0f14;--inverse-border:#2b313b;--inverse-text:#f1f5f9;--color-dark-rgb:15,18,26;--shadow-base:rgba(0,0,0,.38);--shadow-medium:rgba(0,0,0,.52);--radius:8px;--radius-sm:6px;--flinthub-ui-nav:#171b27;--flinthub-ui-input:#0f121a;--flinthub-ui-row-hover:#1e2332;--flinthub-ui-shadow-panel:0 1px 3px rgba(0,0,0,.38);--flinthub-ui-shadow-dropdown:0 4px 16px rgba(0,0,0,.52);--flinthub-ui-badge-pinned:#241b20;--flinthub-ui-badge-pinned-text:#f47278;}}
/* ===== flinthub_ui · FlintHub Modern 结构层（三栏骨架 + 手写导航 + 卡片列表） =====
   配色（--brand 等）来自官方 color_scheme 插件，明暗来自官方写入的根属性；
   本文件只提供 FlintHub 独有的中性色与自定义 --flinthub-ui-* 变量。 */
html.flinthub-ui-shell{background:var(--bg);color-scheme:light;--flinthub-ui-nav-offset:74px;--flinthub-ui-left-w:168px;--flinthub-ui-right-w:260px}
html.flinthub-ui-shell.flinthub-ui-forum-open{--flinthub-ui-nav-offset:120px}
html.flinthub-ui-shell[data-color-scheme-dark-mode-theme="dark"]{color-scheme:dark}
@media(prefers-color-scheme:dark){html.flinthub-ui-shell:not([data-color-scheme-dark-mode-theme]){color-scheme:dark}}

/* ---------- 吸顶导航（FlintHub .mn-nav：54px / 卡片底 / 底边线 / sticky） ---------- */
.flinthub-ui-nav{position:sticky;top:0;z-index:100;background:var(--flinthub-ui-nav);border-bottom:1px solid var(--line);box-shadow:var(--flinthub-ui-shadow-panel)}
.flinthub-ui-nav-inner{position:relative;display:flex;align-items:center;height:54px;gap:20px;max-width:1320px;margin:0 auto;padding:0 20px}
/* logo 不带卡片效果：实测图标起点比内容左边缘多出的 14px 正好等于它自己的 padding-left，
   父容器与 flex 都没有额外偏移；因此直接去掉内边距/圆角/背景，让图标起点落在内容起始线，
   不再用负 margin 伪装对齐。hover 只改文字/图标颜色，保留可点反馈。 */
.flinthub-ui-logo{display:inline-flex;align-items:center;gap:7px;flex:0 1 auto;min-width:0;padding:6px 0;border-radius:0;font-size:var(--font-size-lg);font-weight:700;letter-spacing:-.3px;color:var(--text);white-space:nowrap;transition:color .15s}
.flinthub-ui-logo-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.flinthub-ui-logo:hover{color:var(--brand)}
.flinthub-ui-logo img,.flinthub-ui-logo svg{width:22px;height:22px;border-radius:5px;display:block;flex-shrink:0}
/* G 图标里的 rect 是固定品牌色方块，不跟随 color-scheme 变化（它本身就是视觉锚点） */
.flinthub-ui-logo svg rect{fill:#4f6ef7}
.flinthub-ui-nav-links{flex:1;display:flex;align-items:center;gap:4px;min-width:0}
.flinthub-ui-nav-link{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:6px;font-size:var(--font-size-md);color:var(--text-muted);white-space:nowrap;transition:background-color .15s,color .15s}
.flinthub-ui-nav-link:hover{background:var(--brand-soft);color:var(--brand)}
.flinthub-ui-nav-link.active{background:var(--brand-soft);color:var(--brand);font-weight:600}
/* 版块入口（top 模式）：按钮只切换主导航下方那条水平副导航的展开/收起，没有下拉菜单；
   按钮复用 .flinthub-ui-nav-link，补回按钮默认样式 */
.flinthub-ui-forum-toggle{border:0;background:transparent;font:inherit;font-size:var(--font-size-md);cursor:pointer;user-select:none}
.flinthub-ui-forum-toggle:hover{background:var(--flinthub-ui-row-hover);color:var(--text)}
.flinthub-ui-forum-toggle[aria-expanded="true"]{background:var(--panel);color:var(--text);box-shadow:inset 0 0 0 1px var(--line)}
/* ---------- 版块副导航（top 模式）：与顶栏同宽同内距，水平单行、超量横向滚动 ----------
   展开/收起用 max-height + opacity 过渡（高度只会缓动，不会整页跳）；
   visibility 收起后隐藏，避免折叠时里面的链接仍可被 Tab 聚焦 */
.flinthub-ui-subnav{max-height:0;opacity:0;visibility:hidden;overflow:hidden;background:var(--flinthub-ui-nav);transition:max-height .18s ease,opacity .18s ease,visibility 0s linear .18s}
html.flinthub-ui-forum-open .flinthub-ui-subnav{max-height:46px;opacity:1;visibility:visible;border-top:1px solid var(--line);transition:max-height .18s ease,opacity .18s ease,visibility 0s}
.flinthub-ui-subnav-track{display:flex;align-items:center;flex-wrap:nowrap;gap:6px;max-width:1320px;margin:0 auto;padding:6px 20px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}
.flinthub-ui-subnav-track::-webkit-scrollbar{display:none}
.flinthub-ui-subnav-item{display:inline-flex;align-items:center;height:32px;flex:0 0 auto;padding:0 12px;border-radius:6px;color:var(--text-muted);font-size:var(--font-size-sm);white-space:nowrap;transition:background-color .15s,color .15s}
.flinthub-ui-subnav-item:hover{background:var(--flinthub-ui-row-hover);color:var(--text)}
.flinthub-ui-subnav-item.active{background:var(--flinthub-ui-row-hover);color:var(--text);font-weight:600}
.flinthub-ui-nav-links-right{margin-left:auto;display:flex;align-items:center;gap:10px;min-width:0}
.flinthub-ui-nav-tools{display:flex;align-items:center;gap:8px;min-width:0;flex-shrink:0}
.flinthub-ui-nav-actions{display:flex;align-items:center;gap:6px;min-width:0}
.flinthub-ui-nav-user{display:flex;align-items:center;gap:8px}
.flinthub-ui-search{display:flex;align-items:center;gap:6px;flex:0 1 220px;min-width:120px}
.flinthub-ui-nav .flinthub-ui-search-toggle,.flinthub-ui-search .flinthub-ui-search-close{display:none}
.flinthub-ui-search input{flex:1;min-width:0;height:32px;padding:0 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--flinthub-ui-input);color:var(--text);font-size:var(--font-size-sm);transition:border-color .15s,box-shadow .15s}
.flinthub-ui-search input::placeholder{color:var(--text-subtle)}
/* 顶栏搜索框：鼠标点击不画焦点框（去掉 3px 光晕），只留品牌色边框；
   文本输入框在 Chromium 里点击也会命中 :focus-visible，所以键盘焦点改用输入模态属性区分（见 JS 的 data-flinthub-ui-input-mode） */
.flinthub-ui-search input:focus{outline:none;border-color:var(--brand);box-shadow:none}
html.flinthub-ui-shell[data-flinthub-ui-input-mode="keyboard"] .flinthub-ui-search input:focus{outline:2px solid var(--focus-ring);outline-offset:2px;box-shadow:none}
.flinthub-ui-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;padding:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--text-muted);cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}
.flinthub-ui-icon-btn:hover{background:var(--brand-soft);border-color:var(--brand);color:var(--brand)}
.flinthub-ui-icon-btn svg{width:16px;height:16px;display:block}
.flinthub-ui-user-btn{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 10px 0 6px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--text);font-size:var(--font-size-sm);font-weight:600;white-space:nowrap;transition:border-color .15s,color .15s}
.flinthub-ui-user-btn:hover{background:var(--flinthub-ui-row-hover);border-color:var(--line);color:var(--text)}
.flinthub-ui-user-btn img{width:22px;height:22px;border-radius:50%;display:block;object-fit:cover}
/* ---------- 用户菜单：可从右栏搬到顶栏头像下拉（设置项 user_menu=nav） ----------
   触发器与原来同尺寸同观感；面板贴右侧、宽度按两列卡片网格（≈242px），≤768 限宽不溢出 */
.flinthub-ui-user-menu{position:relative;display:inline-flex;align-items:center}
.flinthub-ui-user-toggle{cursor:pointer;font:inherit;font-size:var(--font-size-sm);font-weight:600}
/* 打开态与 hover 区分：hover 是浅档填充，打开是“留在面板底 + 正文色 + 描边”，不刷成深底；
   暗色下不取 --brand（官方暗色色系里它本身就是深灰 #586779，会和 --panel / --brand-soft 糊在一起） */
.flinthub-ui-user-toggle[aria-expanded="true"]{background:var(--panel);border-color:var(--text-subtle);color:var(--text)}
.flinthub-ui-user-toggle:focus-visible{outline:2px solid var(--text);outline-offset:2px}
.flinthub-ui-user-chevron{width:12px;height:12px;flex:0 0 12px;margin-left:-3px;transition:transform .15s}
.flinthub-ui-user-toggle[aria-expanded="true"] .flinthub-ui-user-chevron{transform:rotate(180deg)}
.flinthub-ui-user-panel{position:absolute;right:0;top:calc(100% + 10px);z-index:140;width:242px;max-width:calc(100vw - 24px);padding:8px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);box-shadow:var(--flinthub-ui-shadow-dropdown)}
.flinthub-ui-user-panel[hidden]{display:none}
.flinthub-ui-user-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 4px 8px;margin-bottom:8px;border-bottom:1px solid var(--line-soft);color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.3}
.flinthub-ui-user-panel-head a{color:var(--text);font-weight:600;text-decoration:underline;text-underline-offset:2px;text-decoration-color:var(--text-subtle)}
.flinthub-ui-user-panel-head a:hover{color:var(--text);text-decoration-color:var(--text)}
.flinthub-ui-user-panel .user-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;font-size:var(--font-size-sm)}
.flinthub-ui-user-panel .user-links>a{display:flex;align-items:center;justify-content:center;gap:5px;min-width:0;height:32px;margin:0;padding:4px 6px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--text-muted);line-height:1.2;text-align:center;white-space:nowrap;overflow:hidden;transition:background-color .15s,border-color .15s,color .15s}
/* hover / focus 用中性浅档（--flinthub-ui-row-hover），文字回到 --text；不用品牌色反白，也不压成深底。
   暗色下 row-hover(#1e2332) 只比面板(#171b27)亮一档，正文 #e2e5ed 对比度 12.4:1 */
.flinthub-ui-user-panel .user-links>a:hover,.flinthub-ui-user-panel .user-links>a:focus-visible{border-color:var(--line);background:var(--flinthub-ui-row-hover);color:var(--text)}
.flinthub-ui-user-panel .user-links>a:focus-visible{outline:2px solid var(--text);outline-offset:-2px}
.flinthub-ui-user-panel .user-links>a .meta-icon{width:14px;height:14px;flex:0 0 14px;color:currentColor}
.flinthub-ui-notify{position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--text-muted);transition:border-color .15s,color .15s}
.flinthub-ui-notify:hover{border-color:var(--brand);color:var(--brand)}
/* 顶栏通知铃铛：与同排最大图标（配色入口 20px）对齐；容器 32×32 不变，点击区不缩 */
.flinthub-ui-notify svg{width:20px;height:20px;flex:0 0 20px}
.flinthub-ui-unread{position:absolute;top:-7px;right:-7px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--danger);color:var(--inverse-text);font-size:var(--font-size-xxs);font-weight:700;display:inline-flex;align-items:center;justify-content:center;line-height:1}
.flinthub-ui-login{display:inline-flex;align-items:center;height:32px;padding:0 14px;border-radius:var(--radius);background:var(--brand);color:var(--inverse-text);font-size:var(--font-size-sm);font-weight:600;white-space:nowrap;box-shadow:0 2px 8px var(--focus-halo);transition:background-color .15s}
.flinthub-ui-login:hover{background:var(--brand-hover);color:var(--inverse-text)}
.flinthub-ui-ghost{display:inline-flex;align-items:center;height:32px;padding:0 12px;border:1px solid var(--line);border-radius:var(--radius);color:var(--text-muted);font-size:var(--font-size-sm);white-space:nowrap;transition:border-color .15s,color .15s}
.flinthub-ui-ghost:hover{border-color:var(--brand);color:var(--brand)}
.flinthub-ui-burger{display:none}
/* 移动端底部导航：桌面完全隐藏（带 !important 防止被 @media 或其他插件覆盖） */
.flinthub-ui-bottom-nav{display:none !important}

/* ---------- 三栏主体（FlintHub .mn-body：168 / 自适应 / 260，gap 20，居中 1320） ---------- */
.flinthub-ui-main{padding:20px 0 50px;line-height:1.6}
/* 左右栏宽度走根容器变量（后台可调，默认 168/260），CSS 里只保留一处默认值 */
.flinthub-ui-body{display:grid;grid-template-columns:var(--flinthub-ui-left-w) minmax(0,1fr) var(--flinthub-ui-right-w);gap:20px;align-items:start;max-width:1320px;margin:0 auto;padding:0 20px}
/* 左栏/右栏缺失时按实际列数降级，避免中栏被塞进首列 */
.flinthub-ui-body-no-left{grid-template-columns:minmax(0,1fr) var(--flinthub-ui-right-w)}
.flinthub-ui-body-no-right{grid-template-columns:var(--flinthub-ui-left-w) minmax(0,1fr)}
.flinthub-ui-body-no-left.flinthub-ui-body-no-right{grid-template-columns:minmax(0,1fr)}
.flinthub-ui-left,.flinthub-ui-center,.flinthub-ui-right{min-width:0}
.flinthub-ui-left{position:sticky;top:74px}
/* 右栏「固定」模式（现状，默认）：吸在顶栏下方（54px 导航 + 20px 间距）；内容高于视口时在右栏内部滚动，
   避免“下半截永远看不到也滚不到”；≤860 单列布局下既有规则会强制 static，这里只对多列桌面生效。
   top 模式展开副导航时 --flinthub-ui-nav-offset 由 74 变 120，右栏 sticky 同步下移，不被副导航压住。
   「跟随」模式：显式把基线的 sticky 归零，随页面滚出视口。 */
@media(min-width:861px){
html.flinthub-ui-shell .flinthub-ui-right-sticky{position:sticky;top:var(--flinthub-ui-nav-offset);max-height:calc(100vh - var(--flinthub-ui-nav-offset) - 20px);overflow-y:auto;overscroll-behavior:contain}
}
html.flinthub-ui-shell .flinthub-ui-right-follow{position:static;top:auto}
/* ---------- 右下角悬浮按钮组：回到顶部 + 返回（只有这两个，不做折叠） ----------
   z-index 30：高于正文，低于弹窗 40 / Toast 50 / 底部导航 90 / 抽屉与顶栏 100；
   桌面 bottom 90、right 20；移动端在 ≤768 里改为贴在底部导航上方。
   「回到顶部」默认 display:none，由脚本在滚动超过 300px 时加 .is-on 才出现 —— 无 JS 时不会留下死按钮。 */
.flinthub-ui-float{position:fixed;right:20px;bottom:90px;z-index:30;display:flex;flex-direction:column;align-items:center;gap:8px}
.flinthub-ui-float-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--panel);color:var(--text-muted);box-shadow:var(--flinthub-ui-shadow-dropdown);cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}
.flinthub-ui-float-btn:hover{background:var(--flinthub-ui-row-hover);color:var(--text);border-color:var(--text-subtle)}
.flinthub-ui-float-btn:focus-visible{outline:2px solid var(--text);outline-offset:2px}
.flinthub-ui-float-btn svg{width:20px;height:20px;display:block}
.flinthub-ui-float-top{display:none}
.flinthub-ui-float-top.is-on{display:inline-flex}
.flinthub-ui-panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px;box-shadow:var(--flinthub-ui-shadow-panel)}
.flinthub-ui-panel-title{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 8px 8px;font-size:var(--font-size-sm);font-weight:700;color:var(--text)}
.flinthub-ui-left-toggle{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--text-subtle);cursor:pointer;transition:background-color .15s,color .15s}
.flinthub-ui-left-toggle:hover{background:var(--brand-soft);color:var(--brand)}
.flinthub-ui-left-toggle svg{width:14px;height:14px;transition:transform .2s}
.flinthub-ui-cat-list{display:grid;gap:2px}
.flinthub-ui-cat-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--radius);font-size:var(--font-size-md);color:var(--text-muted);min-width:0;transition:background-color .15s,color .15s}
.flinthub-ui-cat-item:hover{background:var(--flinthub-ui-row-hover);color:var(--text)}
.flinthub-ui-cat-item.active{background:var(--brand-soft);color:var(--brand);font-weight:600}
.flinthub-ui-cat-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.flinthub-ui-cat-initial{display:none;width:24px;height:24px;flex:0 0 24px;border-radius:var(--radius);background:var(--brand-soft);color:var(--brand);font-size:var(--font-size-sm);font-weight:700;align-items:center;justify-content:center}

/* 左栏收缩态（类挂 <html>，仿 FlintHub mn-left-collapsed → 56px 窄条）
   ≥1181 才需要改写列宽；≤1180 的默认列宽已是 56px，否则会压过响应式断点 */
@media(min-width:1181px){
.flinthub-ui-left-collapsed .flinthub-ui-body:not(.flinthub-ui-body-no-left){grid-template-columns:56px minmax(0,1fr) var(--flinthub-ui-right-w)}
.flinthub-ui-left-collapsed .flinthub-ui-body-no-right:not(.flinthub-ui-body-no-left){grid-template-columns:56px minmax(0,1fr)}
}
.flinthub-ui-left-collapsed .flinthub-ui-panel{padding:8px 6px}
.flinthub-ui-left-collapsed .flinthub-ui-panel-title{justify-content:center;padding-bottom:6px}
.flinthub-ui-left-collapsed .flinthub-ui-panel-label{display:none}
.flinthub-ui-left-collapsed .flinthub-ui-left-toggle svg{transform:rotate(180deg)}
.flinthub-ui-left-collapsed .flinthub-ui-cat-item{justify-content:center;gap:0;padding:8px 4px}
.flinthub-ui-left-collapsed .flinthub-ui-cat-name{display:none}
.flinthub-ui-left-collapsed .flinthub-ui-cat-initial{display:inline-flex}
/* 收缩态浮层：hover / focus 显示完整版块名（::after 读 data-flinthub-ui-label）；
   绝对定位挂在左栏项上、不占布局，z-index 120 压过中栏卡片；左上栏链路上没有 overflow:hidden，故不会被裁切 */
.flinthub-ui-cat-item{position:relative}
.flinthub-ui-cat-item::after{content:attr(data-flinthub-ui-label);position:absolute;left:calc(100% + 10px);top:50%;z-index:120;pointer-events:none;white-space:nowrap;padding:5px 9px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--text);font-size:var(--font-size-sm);font-weight:500;line-height:1.3;box-shadow:var(--flinthub-ui-shadow-dropdown);opacity:0;visibility:hidden;transform:translate(-4px,-50%);transition:opacity .12s,transform .12s,visibility .12s}
.flinthub-ui-left-collapsed .flinthub-ui-cat-item:hover::after,.flinthub-ui-left-collapsed .flinthub-ui-cat-item:focus::after{opacity:1;visibility:visible;transform:translate(0,-50%)}

/* ---------- 中栏：拆平核心包壳，列表行改独立卡片 ---------- */
.flinthub-ui-shell .home-shell{background:transparent;border:0;border-radius:0;padding:0;box-shadow:none;overflow:visible}
.flinthub-ui-shell .forum-layout{gap:20px}
.flinthub-ui-shell .main-panel{background:transparent;border:0;border-radius:0;box-shadow:none;overflow:visible;padding:0}
/* 中栏统一为透明容器（padding 0）：标题、行、表单、Tab 条各自成卡，左缘对齐且无白卡套白卡 */
.flinthub-ui-shell .forum-main>.main-panel{background:transparent;border:0;border-radius:0;box-shadow:none;overflow:visible;padding:0}
/* 页面标题摘要块（插件页/详情页标题区）自成一卡，与下方行卡左边缘对齐 */
.flinthub-ui-shell .admin-plugin-summary,.flinthub-ui-shell .plugin-panel-body>.admin-plugin-summary{background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--flinthub-ui-shadow-panel);padding:14px 16px;margin-bottom:12px}
.flinthub-ui-shell .admin-plugin-summary strong{display:block;font-size:var(--font-size-xl);font-weight:700;color:var(--text);margin-bottom:2px}
.flinthub-ui-shell .admin-plugin-summary span{display:block;color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.6}
/* 后台 FlintHub 设置页（?a=admin&tab=flinthub_ui）：只在本 tab 作用域补一条说明文本样式 */
.plugin-admin-page-flinthub_ui .flinthub-ui-admin-note{margin:12px 0 0;padding-top:12px;border-top:1px solid var(--line-soft);color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.6}
/* 详情页：面包屑头部与回帖框各自成卡 */
.flinthub-ui-page-topic .topic-header,.flinthub-ui-page-topic .reply-panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--flinthub-ui-shadow-panel);padding:14px 16px;margin-bottom:12px}
/* 回帖框与上方楼层卡片间距 12px（与列表卡片间隔同值）；核心 .reply-panel 原先只有 border-top、无上间距故贴边 */
.flinthub-ui-page-topic .reply-panel{margin-top:12px}
/* 回帖编辑器（markdown_textarea 插件）：工具栏与 textarea 拼成一个完整盒子——
   工具栏只画上/左/右三边（border-bottom:0、上方圆角），textarea 只画下/左/右三边（border-top:0、下方圆角），
   接缝处本不应有线。皮肤原本给 textarea:focus 加的 1px outline（offset:-1）会沿 textarea 自身圆角再画一圈，
   在接缝处多出一条横线、圆角处与边框叠成双线 → 这里在回帖区块内取消该 outline，
   焦点只由「整盒 1px 品牌色描边 + 工具栏浅品牌底」表达，四边同色、上下圆角连续。 */
html.flinthub-ui-shell .reply-panel .markdown-textarea-field{display:grid;row-gap:0;margin:0}
html.flinthub-ui-shell .reply-panel .markdown-textarea-field>[data-markdown-textarea]{border-bottom:0;border-radius:var(--radius) var(--radius) 0 0}
html.flinthub-ui-shell .reply-panel .markdown-textarea-field>textarea[name=body]{border-top:0;border-radius:0 0 var(--radius) var(--radius)}
html.flinthub-ui-shell .flinthub-ui-main .reply-panel textarea:focus,
html.flinthub-ui-shell .flinthub-ui-main .reply-panel textarea:focus-visible{outline:none;box-shadow:none;border-color:var(--brand)}
html.flinthub-ui-shell .reply-panel .markdown-textarea-field:focus-within>[data-markdown-textarea]{border-color:var(--brand)}
html.flinthub-ui-shell .reply-panel .markdown-textarea-field:focus-within>textarea[name=body]{border-color:var(--brand)}

/* 列表工具条：独立卡片 */
.flinthub-ui-shell .mobile-forum-strip{background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--flinthub-ui-shadow-panel);padding:6px 10px;margin-bottom:12px}
.flinthub-ui-shell .topic-toolbar,.flinthub-ui-shell .profile-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--flinthub-ui-shadow-panel);padding:6px 10px;margin-bottom:12px}
/* Tab 条：核心是拼接式分段按钮（描边+负边距重叠），这里改成 FlintHub 药丸式：去边框、留间距、选中浅蓝无描边 */
.flinthub-ui-shell .tab-bar{gap:6px;flex-wrap:wrap}
.flinthub-ui-shell .tab-bar>.tab{display:inline-flex;align-items:center;border:0;margin-left:0;background:transparent;color:var(--text-muted);padding:6px 12px;border-radius:var(--radius);transition:background-color .15s,color .15s}
.flinthub-ui-shell .tab-bar>.tab:hover{background:var(--flinthub-ui-row-hover);color:var(--text)}
.flinthub-ui-shell .tab-bar>.tab.active{color:var(--brand);font-weight:600;background:var(--brand-soft);border-color:transparent}
/* 中间栏右上角的快捷发帖由核心 topic-toolbar 输出：桌面隐藏，移动端在下方 768 断点内恢复；右栏 .btn-post 保留 */
.flinthub-ui-main .topic-toolbar .tab-post{display:none}

/* 帖子列表（FlintHub 合并式）：整组一个面板，行内用细分隔线，行自身不再画卡片、也不再留卡片间距；
   外层边框用 --line，行间分隔用更浅的 --line-soft（与页脚/其它分隔线同一档），不会与卡片边框叠成双线 */
.flinthub-ui-shell .post-list{display:block;list-style:none;margin:0;padding:0;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--flinthub-ui-shadow-panel);overflow:hidden}
/* 列表前若有插件插入的横幅（官方插件市场播报 .plugin-market-ticker 直接挂在 main-panel 内、紧挨列表），
   给列表补 12px 上间距；正常页面的 .topic-toolbar 自带 12px 下间距，块级相邻外边距折叠后仍为 12px，不叠加 */
html.flinthub-ui-shell .main-panel>.post-list{margin-top:12px}
.flinthub-ui-shell .post-item{background:transparent;border:0;border-radius:0;box-shadow:none;padding:14px 16px;min-height:0;margin:0;transition:background-color .15s}
.flinthub-ui-shell .post-item:hover{background:var(--flinthub-ui-row-hover)}
/* 快速回复插入的新楼层（quick_reply 插件的 .quick-reply-new-reply）：插件只给了上下 10px 外边距、左右 0，
   浅底 + 描边会与列表卡片左右边框重合、看起来和容器帖子连成一体；这里沿用列表行的 16px 横向内距（移动端 12px），
   并保留插件自己的浅底/描边，让它成为一张独立的内嵌小卡 */
html.flinthub-ui-shell .topic-post-list .quick-reply-new-reply{margin:12px 16px;border-radius:var(--radius);border-color:var(--line-soft);background:var(--bg)}
/* 行间分隔：除首行外的直接子项补顶边线（末行自然不画线） */
.flinthub-ui-shell .post-list>:not(:first-child){border-top:1px solid var(--line-soft)}
/* 列表为空时 .empty-state 作为容器内的一行：底由容器面板提供，行本身不画框 */
.flinthub-ui-shell .post-list .empty-state{background:transparent;border:0;border-radius:0;box-shadow:none;padding:14px 16px;color:var(--text-muted)}
/* 十连/称号插件全局写了 .post-list > .empty-state:first-child:last-child{display:none}，会把真正的空列表藏掉、只剩容器的边框；
   这里用更高特异性把它恢复成一行；个人主页“称号”Tab 里 .gacha-profile-titles 后面那个空列表例外（否则“暂无主题”会与“暂无称号”重复），
   连容器一起收掉，避免面板塌成一条 2px 边 */
html.flinthub-ui-shell .flinthub-ui-main .post-list>.empty-state:only-child{display:block}
html.flinthub-ui-shell .flinthub-ui-main .gacha-profile-titles+.post-list:has(>.empty-state:only-child){display:none}
/* 列表页行：核心本就是 flex，这里只补间距与头像 */
.flinthub-ui-page-list .post-item{display:flex;align-items:flex-start;gap:12px}
/* 列表里的作者头像：方形圆角 8px（与输入框/按钮的 --radius 统一），1px --line 边框给浅色头像边界；
   仅作用于 .post-list 内的行，详情页楼层头像（.flinthub-ui-page-topic .post-entry）仍由下方规则保持圆形 */
.flinthub-ui-page-list .post-list .post-avatar{width:40px;height:40px;flex:0 0 40px;border-radius:8px;border:1px solid var(--line);overflow:hidden;font-size:var(--font-size-md);margin-top:0}
/* 详情页楼层：保持核心 grid 区域布局，只卡片化（avatar 列加宽到 40px） */
.flinthub-ui-page-topic .post-entry{grid-template-columns:40px minmax(0,1fr);column-gap:12px;padding:16px}
.flinthub-ui-page-topic .post-entry .post-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden}
.flinthub-ui-shell .post-body{gap:6px}
.flinthub-ui-shell .post-title{font-size:var(--font-size-md);line-height:1.45;color:var(--text)}
.flinthub-ui-shell .post-title:hover{color:var(--brand)}
/* 详情页大标题同样下调一档（核心 16px → 14px），只在皮肤作用域内覆盖 */
.flinthub-ui-shell .post-content-title{font-size:var(--font-size-md);line-height:1.45}
.flinthub-ui-shell .post-meta{font-size:var(--font-size-sm)}
.flinthub-ui-shell .post-meta,.flinthub-ui-shell .post-meta span,.flinthub-ui-shell .post-meta a{color:var(--text-muted)}
.flinthub-ui-shell .post-meta a:hover{color:var(--brand)}
.flinthub-ui-shell .profile-reply-excerpt{color:var(--text-subtle)}
/* ---------- 统一「可点标签 / 胶囊按钮」定义：flinthub-ui-chip ----------
   规格来源：主题收藏插件 topic_favorites 1.0.5 的 .fav-btn（24×24、14px 图标、active 两态，
   plugin.php L40 结构与 L124 样式）+ 截图中“收藏”胶囊的比例（24px 高、左右 9px、全圆角、12px/600）。
   其它插件/模板可直接复用：可点胶囊加 class="flinthub-ui-chip"（选中态再加 .is-active）；
   静态小标签加 class="flinthub-ui-chip--soft"。全部走 --flinthub-ui-chip-* 令牌，只在皮肤内生效。 */
html.flinthub-ui-shell .flinthub-ui-chip,
html.flinthub-ui-shell .topic-favorites-action .fav-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--flinthub-ui-chip-gap);width:auto;min-width:0;height:var(--flinthub-ui-chip-h);padding:var(--flinthub-ui-chip-pad);border:1px solid transparent;border-radius:var(--flinthub-ui-chip-radius);background:var(--flinthub-ui-chip-bg);color:var(--flinthub-ui-chip-color);font-size:var(--flinthub-ui-chip-font);font-weight:600;line-height:1;white-space:nowrap;vertical-align:middle;transition:background-color .15s,border-color .15s,color .15s}
html.flinthub-ui-shell .flinthub-ui-chip:hover,
html.flinthub-ui-shell .topic-favorites-action .fav-btn:hover{background:var(--flinthub-ui-chip-hover);border-color:transparent;color:var(--flinthub-ui-chip-color)}
html.flinthub-ui-shell .flinthub-ui-chip.is-active,
html.flinthub-ui-shell .topic-favorites-action .fav-btn.active{background:var(--flinthub-ui-chip-on-bg);border-color:var(--flinthub-ui-chip-on-border);color:var(--flinthub-ui-chip-on-color)}
html.flinthub-ui-shell .flinthub-ui-chip.is-active:hover,
html.flinthub-ui-shell .topic-favorites-action .fav-btn.active:hover{background:var(--flinthub-ui-chip-on-bg);border-color:var(--flinthub-ui-chip-on-border);color:var(--flinthub-ui-chip-on-color)}
html.flinthub-ui-shell .flinthub-ui-chip:focus-visible,
html.flinthub-ui-shell .topic-favorites-action .fav-btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
html.flinthub-ui-shell .flinthub-ui-chip .meta-icon,
html.flinthub-ui-shell .topic-favorites-action .fav-btn .meta-icon{width:var(--flinthub-ui-chip-icon);height:var(--flinthub-ui-chip-icon);flex:0 0 var(--flinthub-ui-chip-icon);color:currentColor}
/* 收藏按钮原本是 24×24 纯图标（文字 sr-only），这里放开文字、回到“图标+文字”的胶囊布局 */
html.flinthub-ui-shell .topic-favorites-action .fav-btn span{position:static;width:auto;height:auto;margin:0;padding:0;overflow:visible;clip:auto;white-space:nowrap}
/* 静态小标签：置顶/精华/普通徽标、版块名、帖子标签统一成 20px 高小胶囊；语义色仍由下方 pinned/highlight/post-tag 规则覆盖 */
html.flinthub-ui-shell .flinthub-ui-chip--soft,
html.flinthub-ui-shell .topic-badge,
html.flinthub-ui-shell .post-tag,
html.flinthub-ui-shell .post-forum-badge{display:inline-flex;align-items:center;gap:var(--flinthub-ui-chip-gap);height:var(--flinthub-ui-chip-soft-h);margin-right:6px;padding:var(--flinthub-ui-chip-soft-pad);border:1px solid transparent;border-radius:var(--flinthub-ui-chip-radius);background:var(--flinthub-ui-chip-soft-bg);color:var(--flinthub-ui-chip-soft-color);font-size:var(--flinthub-ui-chip-soft-font);font-weight:600;line-height:1;vertical-align:middle;white-space:nowrap}
.flinthub-ui-shell .topic-badge.pinned{background:var(--flinthub-ui-badge-pinned);color:var(--flinthub-ui-badge-pinned-text)}
html.flinthub-ui-shell .topic-badge.highlight{background:var(--danger-soft);color:var(--danger)}
html.flinthub-ui-shell .post-tag,html.flinthub-ui-shell .post-forum-badge{background:var(--brand-soft);color:var(--brand);border:0}
.flinthub-ui-shell .empty-state{background:var(--panel);border:1px solid var(--line);border-radius:12px;color:var(--text-muted)}
.flinthub-ui-shell .pagination-bar{display:flex;justify-content:center;flex-wrap:wrap;gap:6px;margin:16px 0 0}
/* 搜索结果列表：合并式单列（容器为面板，行间分隔线由 .post-list 统一处理） */
.flinthub-ui-shell .search-page-pagination .pagination{margin:0}
.flinthub-ui-shell .search-page-pagination li.active>span{background:var(--brand);color:var(--inverse-text)}
/* 搜索页：核心 .search-page .forum-main 自带 max-width:820px + 居中，会把头部与结果整体向内缩进；
   皮肤内解除限宽与列表页保持一致，并给头部/结果摘要补卡片底（核心这两块原本直接坐在页面底色上） */
.flinthub-ui-shell .search-page .forum-main{max-width:none;margin:0}
.flinthub-ui-shell .search-page-head,.flinthub-ui-shell .search-page-summary{background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--flinthub-ui-shadow-panel);padding:14px 16px;margin:0 0 12px}
.flinthub-ui-shell .search-page-head h2{margin-bottom:12px}
/* 搜索框：去掉容器外框（无底、无边、无内距），输入框自带 1px --line 边框作为可输入边界；
   按钮与输入框同高 34px、8px 圆角，中间留 6px，视觉上仍是输入框右端的后缀（核心表单结构不变） */
.flinthub-ui-shell .search-page-query{display:flex;align-items:center;gap:6px;height:auto;padding:0;border:0;border-radius:0;background:transparent;overflow:visible}
/* 用更高特异性压过 L262 的正文输入框规则与 L266 的主按钮规则 */
html.flinthub-ui-shell .flinthub-ui-main .search-page-query input[type=search]{flex:1;min-width:0;height:34px;padding:0 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--flinthub-ui-input)}
html.flinthub-ui-shell .flinthub-ui-main .search-page-query button[type=submit]{flex:0 0 auto;height:34px;min-height:34px;margin-left:0;padding:0 16px;border-radius:var(--radius)}
/* 搜索页焦点：核心 .search-page-query:focus-within 会给整行加 3px 品牌光晕（容器已无底无边，这圈就是用户看到的“方形外框”），
   这里收掉它；输入框鼠标聚焦只保留品牌色边框，键盘 Tab 进入时才画 2px 焦点环（外观与核心 input:focus-visible 一致） */
html.flinthub-ui-shell .search-page-query:focus-within{box-shadow:none;border-color:transparent}
html.flinthub-ui-shell .flinthub-ui-main .search-page-query input[type=search]:focus{outline:none;border-color:var(--brand);box-shadow:none}
html.flinthub-ui-shell[data-flinthub-ui-input-mode="keyboard"] .flinthub-ui-main .search-page-query input[type=search]:focus{outline:2px solid var(--focus-ring);outline-offset:2px;box-shadow:none}

/* ---------- 右栏：核心侧栏卡片升级（12px 圆角、标题加粗、内距统一 16px） ---------- */
.flinthub-ui-right{position:sticky;top:74px}
.flinthub-ui-right .sidebar{width:auto;display:grid;gap:16px;align-content:start}
.flinthub-ui-right .card,.flinthub-ui-right .sidebar-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--flinthub-ui-shadow-panel);margin-bottom:0}
.flinthub-ui-right .quick-wrap,.flinthub-ui-right .user-wrap,.flinthub-ui-right .stats-wrap{padding:14px 16px}
.flinthub-ui-right .quick-title,.flinthub-ui-right .stats-title,.flinthub-ui-right .new-users-title{font-size:var(--font-size-sm);font-weight:700;color:var(--text);padding:0 0 6px;margin-bottom:6px;border-bottom:1px solid var(--line-soft)}
.flinthub-ui-right .quick-links a{color:var(--text-muted);border-radius:var(--radius);padding:5px 8px;margin:0 -8px}
.flinthub-ui-right .quick-links a:hover{background:var(--flinthub-ui-row-hover);color:var(--brand)}
.flinthub-ui-right .user-name{font-weight:700;color:var(--text)}
.flinthub-ui-right .user-rank{color:var(--text-subtle)}
.flinthub-ui-right .side-auth a{background:var(--brand-soft);color:var(--brand);font-weight:600;border-radius:var(--radius)}
.flinthub-ui-right .btn-post{display:block;width:120px;margin:12px auto 14px;padding:8px 0;text-align:center;background:var(--brand);color:var(--inverse-text);font-weight:600;border-radius:var(--radius);box-shadow:0 2px 8px var(--focus-halo)}
.flinthub-ui-right .btn-post:hover{background:var(--brand-hover);color:var(--inverse-text)}
/* 按钮上方的个人菜单 / 快捷功能：图标 + 文字居中的小卡片，两列 109px、高 32px（与下方按钮行同高） */
.flinthub-ui-right .user-links,.flinthub-ui-right .feature-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;font-size:var(--font-size-sm);margin-top:2px}
.flinthub-ui-right .feature-links>li{display:block;min-width:0;margin:0;padding:0}
.flinthub-ui-right .user-links>a,.flinthub-ui-right .feature-links>li>a{display:flex;align-items:center;justify-content:center;gap:5px;min-width:0;height:32px;margin:0;padding:4px 6px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--text-muted);line-height:1.2;text-align:center;white-space:nowrap;transition:background-color .15s,border-color .15s,color .15s}
.flinthub-ui-right .user-links>a:hover,.flinthub-ui-right .user-links>a:focus-visible,.flinthub-ui-right .feature-links>li>a:hover,.flinthub-ui-right .feature-links>li>a:focus-visible{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}
.flinthub-ui-right .user-links>a .meta-icon,.flinthub-ui-right .feature-links>li>a .flinthub-ui-quick-icon{width:14px;height:14px;flex:0 0 14px;color:currentColor}
/* 圆点来源是核心 .quick-links a:before（6px 圆点），这里在右栏快捷功能作用域内关掉，改由图标替代 */
.flinthub-ui-right .feature-links>li>a:before{display:none}
/* 登录态：发帖/回帖与退出同一行，并与上方卡片列严格对齐
   左右 16px（同 .user-wrap 内边距）、gap 8px → 每枚按钮 109px，与卡片列一致；
   上边距 0，卡片组与按钮行的间距仅由 .user-wrap 的 8px 下内边距提供 */
.flinthub-ui-right .user-wrap{padding-bottom:8px}
.flinthub-ui-right .flinthub-ui-side-actions{display:flex;align-items:stretch;height:32px;gap:8px;margin:0 16px 14px}
/* 用户菜单搬到顶栏后，右栏用户卡里只剩头像/昵称：把 header 的 12px 下边距收掉，
   与 user-wrap 自带的 8px 底部内距合成 8px 一档，发帖/退出上移后不会留出一大块空白 */
html.flinthub-ui-shell .flinthub-ui-right-user-nav .user-wrap{padding-bottom:8px}
html.flinthub-ui-shell .flinthub-ui-right-user-nav .user-wrap .user-header{margin-bottom:0}
.flinthub-ui-right .flinthub-ui-side-actions>.btn-post{display:flex;align-items:center;justify-content:center;flex:1 1 0;width:auto;min-width:0;height:100%;margin:0;padding:0}
.flinthub-ui-right .flinthub-ui-side-actions>.flinthub-ui-logout{display:flex;flex:1 1 0;min-width:0;height:100%;margin:0}
.flinthub-ui-right .flinthub-ui-side-actions>.flinthub-ui-logout>.btn{display:flex;flex:1;align-items:center;justify-content:center;width:100%;height:100%;min-height:0;padding:0;font-size:var(--font-size-md);font-weight:600;border-radius:var(--radius)}
/* 右栏动作按钮（发帖/回帖/私信TA/退出）与游客「登录/注册」：线性图标 14px、图标与文字 5px，
   盒模型沿用原值（动作行仍 32px 高、各占一列；side-auth 仍 30px 高），只多出图标本身的横向占用 */
.flinthub-ui-right .flinthub-ui-side-actions>.btn-post,
.flinthub-ui-right .flinthub-ui-side-actions>.flinthub-ui-logout>.btn,
.flinthub-ui-right .side-auth a{display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap}
.flinthub-ui-right .flinthub-ui-side-actions .flinthub-ui-btn-icon,
.flinthub-ui-right .side-auth .flinthub-ui-btn-icon{width:14px;height:14px;flex:0 0 14px;color:currentColor}
/* 顶栏游客「注册/登录」：与右栏同一套图标（14px、gap 5px），高度仍 32px，不撑高 54px 导航 */
.flinthub-ui-nav-user .flinthub-ui-login,
.flinthub-ui-nav-user .flinthub-ui-register{display:inline-flex;align-items:center;justify-content:center;gap:5px}
.flinthub-ui-nav-user .flinthub-ui-btn-icon{width:14px;height:14px;flex:0 0 14px;color:currentColor}

/* ---------- 其余核心容器统一卡片化（默认页 main-panel 透明，内容各自成卡） ---------- */
.flinthub-ui-shell .box,.flinthub-ui-shell .form-panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--flinthub-ui-shadow-panel);padding:16px}
.flinthub-ui-shell .form-panel h2{font-size:var(--font-size-xl);font-weight:700;margin-bottom:12px}
/* 分页：整组装进一张小卡片，页码圆角、当前页品牌底 */
.flinthub-ui-shell .pagination{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--flinthub-ui-shadow-panel);padding:4px 6px;margin:16px auto 0;width:max-content}
.flinthub-ui-shell .pagination a,.flinthub-ui-shell .pagination .ellipsis{border-radius:var(--radius-sm)}
.flinthub-ui-shell .pagination li.active a{background:var(--brand);color:var(--inverse-text)}
/* 通知分箱 Tabs 是 .post-list 卡片内的第一个子项：不再套第二层卡片（与外层卡片边框重合、看起来“贴在一起”），
   直接作为列表工具栏：透明底、只留一条底分隔线，左右 16px 与 .post-item 内容对齐。
   上下内距取 .post-item 同款 14px，并清掉核心 .tab-bar 自带的 10px 下外边距，否则 Tabs 会贴着卡片顶边、上下不均 */
html.flinthub-ui-shell .notification-box-tabs{display:flex;align-items:center;background:transparent;border:0;border-bottom:1px solid var(--line-soft);border-radius:0;box-shadow:none;padding:14px 16px;margin:0}
html.flinthub-ui-shell .notification-box-tabs>.tab-bar{margin:0;flex:1 1 auto;min-width:0}
/* 已读分隔行同样是 .post-list 内的裸 li，左右补齐与 .post-item 相同的 16px（≤768 为 12px） */
.flinthub-ui-shell .notification-read-divider{border-bottom:0;color:var(--text-subtle);padding:8px 16px}
/* 表单控件：只在正文区域统一皮肤，避免影响导航与其他插件的独立控件 */
.flinthub-ui-main input[type=text],.flinthub-ui-main input[type=search],.flinthub-ui-main input[type=email],.flinthub-ui-main input[type=url],.flinthub-ui-main input[type=password],.flinthub-ui-main input[type=number],.flinthub-ui-main textarea,.flinthub-ui-main select{background:var(--flinthub-ui-input);border:1px solid var(--line);border-radius:var(--radius);color:var(--text)}
/* 聚焦态收敛：去掉 3px 大面积光晕，改为 1px 品牌色描边（内缩 1px 与边框重合）+ 无阴影；仍保留可见焦点 */
.flinthub-ui-main input:focus,.flinthub-ui-main textarea:focus,.flinthub-ui-main select:focus{outline:1px solid var(--brand);outline-offset:-1px;border-color:var(--brand);box-shadow:none}
/* 主按钮：仅正文区域，且不接管核心的次级/危险按钮（.alt/.danger） */
.flinthub-ui-main button[type=submit]:not(.alt):not(.danger),.flinthub-ui-main .btn:not(.alt):not(.danger),.flinthub-ui-main input[type=submit]{background:var(--brand);color:var(--inverse-text);font-weight:600;border-radius:var(--radius)}
.flinthub-ui-main button[type=submit]:not(.alt):not(.danger):hover,.flinthub-ui-main .btn:not(.alt):not(.danger):hover,.flinthub-ui-main input[type=submit]:hover{background:var(--brand-hover);color:var(--inverse-text)}
/* 官方 color_scheme 设置页的选项块本身就是 <button type=submit>（外层 form.color-scheme-choice），
   不能套用上面的主按钮品牌底。这里恢复官方机制：默认面板底 + 线边框，hover 浅品牌底，active 品牌描边。
   注意特异性：上面的主按钮规则 (0,4,1)，本组复位规则用 html + [type=submit] 抬到 (0,4,2)/(0,5,2) 才能覆盖 */
html.flinthub-ui-shell .color-scheme-page .color-scheme-choice button[type=submit]{background:var(--panel);color:var(--text);font-weight:400;border-radius:6px;box-shadow:none}
html.flinthub-ui-shell .color-scheme-page .color-scheme-choice button[type=submit]:hover{background:var(--brand-soft);border-color:var(--brand);color:var(--text)}
html.flinthub-ui-shell .color-scheme-page .color-scheme-choice.active button[type=submit]{background:var(--panel);border-color:var(--brand);color:var(--text);box-shadow:0 0 0 1px var(--brand)}

/* ---------- 页脚 ---------- */
.flinthub-ui-shell .footer{max-width:1320px;padding:18px 20px 26px;border-top:1px solid var(--line-soft);color:var(--text-subtle);text-align:center}

/* ---------- 右栏：隐藏退出按钮（核心写死的，CSS 硬干掉） ---------- */
/* 登录态用户卡片底部的 form.logout-form 或含"退出"文字的按钮 */
.flinthub-ui-shell .sidebar form[action*=logout],
.flinthub-ui-shell .sidebar form[action*=signout],
.flinthub-ui-shell .sidebar .logout-btn,
.flinthub-ui-shell .sidebar .user-card form,
.flinthub-ui-shell .sidebar-card.user-card form,
.flinthub-ui-shell .sidebar .side-actions form,
.flinthub-ui-shell .sidebar .action-row form,
.flinthub-ui-shell .sidebar form button:has(svg),
.flinthub-ui-shell .sidebar form input[type=submit],
.flinthub-ui-shell .sidebar form button[type=submit]{display:none !important}
/* 如果发帖和退出在同一个 action-row 里，退出 form 隐藏后发帖按钮可能要占满整行 */
.flinthub-ui-shell .sidebar .action-row{gap:0}
.flinthub-ui-shell .sidebar .action-row > *{flex:1 1 100%}

/* ---------- color_scheme 弹窗：选完自动关闭靠 JS，这里补样式微调 ---------- */
.color-scheme-overlay .color-scheme-panel{box-shadow:0 8px 32px rgba(0,0,0,.18);border-radius:12px;overflow:hidden}

/* ---------- 响应式：中屏左栏自动收成窄条 → 窄屏隐藏左栏 → 更窄隐藏右栏 ---------- */
@media(max-width:1180px){
.flinthub-ui-body{grid-template-columns:56px minmax(0,1fr) var(--flinthub-ui-right-w)}
.flinthub-ui-body-no-left{grid-template-columns:minmax(0,1fr) var(--flinthub-ui-right-w)}
.flinthub-ui-body-no-right{grid-template-columns:56px minmax(0,1fr)}
.flinthub-ui-body-no-left.flinthub-ui-body-no-right{grid-template-columns:minmax(0,1fr)}
.flinthub-ui-left .flinthub-ui-panel{padding:8px 6px}
.flinthub-ui-left .flinthub-ui-panel-title{justify-content:center;padding-bottom:6px}
.flinthub-ui-left .flinthub-ui-panel-label{display:none}
.flinthub-ui-left .flinthub-ui-cat-item{justify-content:center;gap:0;padding:8px 4px}
.flinthub-ui-left .flinthub-ui-cat-name{display:none}
.flinthub-ui-left .flinthub-ui-cat-initial{display:inline-flex}
/* ≤1180 自动收成窄条：同样显示完整版块名浮层 */
.flinthub-ui-left .flinthub-ui-cat-item:hover::after,.flinthub-ui-left .flinthub-ui-cat-item:focus::after{opacity:1;visibility:visible;transform:translate(0,-50%)}
}
@media(max-width:1000px){
.flinthub-ui-body{grid-template-columns:minmax(0,1fr) var(--flinthub-ui-right-w)}
.flinthub-ui-body-no-right{grid-template-columns:minmax(0,1fr)}
.flinthub-ui-body-no-left.flinthub-ui-body-no-right{grid-template-columns:minmax(0,1fr)}
.flinthub-ui-left{display:none}
}
@media(max-width:860px){
.flinthub-ui-body{grid-template-columns:minmax(0,1fr);row-gap:12px}
.flinthub-ui-body-no-left,.flinthub-ui-body-no-right,.flinthub-ui-body-no-left.flinthub-ui-body-no-right{grid-template-columns:minmax(0,1fr)}
/* 移动端不再隐藏右栏：按 DOM 顺序（左栏已在 ≤1000 隐藏）堆到中栏下方，整列自适应全宽、取消吸顶；
   核心 ≤720 的 .sidebar{display:none} 也需在右栏作用域内恢复，否则右栏内容仍不可见 */
.flinthub-ui-right{position:static;top:auto}
.flinthub-ui-right .sidebar{display:grid;width:auto;gap:12px}
}
@media(max-width:768px){
.flinthub-ui-nav-inner{gap:12px;padding:0 12px}
/* 移动端三段式：logo 占剩余宽度（文字省略号），工具组（配色/管理/头像）整体贴右内边距；
   logo 无内边距/背景，图标起点天然就是 12px 内容左边缘，与桌面一致 */
.flinthub-ui-logo{flex:1 1 auto;min-width:0}
.flinthub-ui-nav-tools{margin-left:auto;flex:0 0 auto;gap:8px}
.flinthub-ui-nav-tools .flinthub-ui-nav-actions{gap:8px}
/* 配色入口在官方插件 ≤720 规则里是 28×28 无边框图标，移动端提到 32×32 与“管理/头像”同高、可点 */
html.flinthub-ui-shell .flinthub-ui-nav-tools .color-scheme-top-link{box-sizing:border-box;flex:0 0 32px;width:32px;height:32px;min-width:32px;min-height:32px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--text-muted)}
html.flinthub-ui-shell .flinthub-ui-nav-tools .color-scheme-top-link svg{width:20px;height:20px;flex-basis:20px}
.flinthub-ui-nav-links{display:none}
/* top 模式的版块副导航 ≤768 不显示：入口随 nav-links 一起隐藏，等于没有新增结构；
   移动端入口仍由核心抽屉与底部导航提供，行为与改动前完全一致 */
.flinthub-ui-subnav{display:none}
.flinthub-ui-burger{display:inline-flex;position:relative}
/* 汉堡与同排「管理」「头像」完全同高同宽：沿用 .flinthub-ui-icon-btn 的 32×32 / 1px 描边 / 8px 圆角，
   图标 16px 居中；用透明伪元素把可点区外扩到 40×40（间隙 8px，不会与相邻按钮重叠），
   既满足触控尺寸又不改变视觉盒模型，抽屉触发行为与 aria-* 不变 */
html.flinthub-ui-shell .flinthub-ui-burger::after{content:"";position:absolute;inset:-4px;border-radius:10px}
.flinthub-ui-nav .flinthub-ui-search-toggle{display:none}
.flinthub-ui-nav-user .flinthub-ui-notify{display:none}
/* 移动端顶栏游客入口只留图标：32×32 可点区、图标 16px，文字隐藏（aria-label 仍保留） */
html.flinthub-ui-shell .flinthub-ui-nav-user .flinthub-ui-login,
html.flinthub-ui-shell .flinthub-ui-nav-user .flinthub-ui-register{width:32px;height:32px;padding:0;gap:0}
html.flinthub-ui-shell .flinthub-ui-nav-user .flinthub-ui-btn-label{display:none}
html.flinthub-ui-shell .flinthub-ui-nav-user .flinthub-ui-btn-icon{width:16px;height:16px;flex-basis:16px}
/* 底部导航：56px（安全区另加），固定全宽，上边线 --line；抽屉/遮罩的 z-index 100 仍高于它 */
.flinthub-ui-bottom-nav{display:grid !important;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;z-index:90;height:calc(56px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--panel);border-top:1px solid var(--line);box-shadow:0 -1px 3px var(--shadow-base)}
.flinthub-ui-bottom-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;height:100%;color:var(--text-muted);font-size:var(--font-size-xs,12px);text-decoration:none;-webkit-tap-highlight-color:transparent}
.flinthub-ui-bottom-item svg{width:22px;height:22px;display:block}
.flinthub-ui-bottom-item.active{color:var(--brand);font-weight:600}
.flinthub-ui-bottom-post{display:flex;align-items:center;justify-content:center;height:100%;text-decoration:none}
.flinthub-ui-bottom-plus{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:var(--brand);color:var(--inverse-text);box-shadow:0 2px 8px var(--focus-halo)}
.flinthub-ui-bottom-plus svg{width:22px;height:22px;display:block}
.flinthub-ui-bottom-icon{position:relative;display:inline-flex;align-items:center;justify-content:center}
.flinthub-ui-bottom-badge{position:absolute;top:-6px;right:-11px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--danger);color:var(--inverse-text);font-size:var(--font-size-xxs);font-weight:700;line-height:1;display:inline-flex;align-items:center;justify-content:center}
/* 底部导航占位：body 底部留出与导航等高的空白，最后一行与页脚不被遮 */
html.flinthub-ui-shell body{padding-bottom:calc(56px + env(safe-area-inset-bottom) + 8px)}
/* 悬浮按钮组（开启时）：贴在底部导航上方 12px；同时在 body 底部多留 56px，
   让最后一行内容停在「返回」按钮上方，不被悬浮组吃掉（实测值见交付报告） */
.flinthub-ui-float{right:12px;bottom:calc(56px + env(safe-area-inset-bottom) + 12px)}
html.flinthub-ui-shell.flinthub-ui-float-on body{padding-bottom:calc(56px + env(safe-area-inset-bottom) + 64px)}
.flinthub-ui-nav .flinthub-ui-search{display:none}
.flinthub-ui-search .flinthub-ui-search-close{display:inline-flex}
.flinthub-ui-nav.flinthub-ui-searching .flinthub-ui-logo,
.flinthub-ui-nav.flinthub-ui-searching .flinthub-ui-burger,
.flinthub-ui-nav.flinthub-ui-searching .flinthub-ui-nav-user,
.flinthub-ui-nav.flinthub-ui-searching .flinthub-ui-nav-actions>:not(.flinthub-ui-search){display:none}
.flinthub-ui-nav.flinthub-ui-searching .flinthub-ui-nav-tools,
.flinthub-ui-nav.flinthub-ui-searching .flinthub-ui-nav-actions{flex:1}
.flinthub-ui-nav.flinthub-ui-searching .flinthub-ui-search{display:flex;flex:1;min-width:0}
.flinthub-ui-main{padding:12px 0 40px}
.flinthub-ui-body{padding:0 12px}
.flinthub-ui-shell .post-item{padding:12px}
/* 移动端主题列表行右侧的版块胶囊：行内 meta 已有版块（.post-forum-meta），去掉重复标记，
   把被它占掉的 60px 还给标题/元信息；只作用于主题列表行，通知行里同样带 .post-forum-badge 的“回复TA”不受影响；
   桌面端不在此断点内，保持原样 */
html.flinthub-ui-shell .post-list>.post-item:not(.notification-item)>.post-forum-badge{display:none}
html.flinthub-ui-shell .topic-post-list .quick-reply-new-reply{margin:12px}
/* 通知分箱 Tabs / 已读分隔行随列表行一起收窄到 12px */
.flinthub-ui-shell .notification-box-tabs{padding:12px}
.flinthub-ui-shell .notification-read-divider{padding:8px 12px}
.flinthub-ui-page-topic .reply-panel{margin-top:8px}
/* 移动端恢复核心的工具栏发帖按钮：按核心原值 display:inline-flex，补 32px 可点高度；右栏卡片 32px 不受影响 */
.flinthub-ui-main .topic-toolbar .tab-post{display:inline-flex;min-height:32px;padding:0 12px;margin-left:0;flex-shrink:0}
/* 搜索页头部/摘要与列表卡片同样的 12px 内距 */
.flinthub-ui-shell .search-page-head,.flinthub-ui-shell .search-page-summary{padding:12px}
}
@media(max-width:560px){
/* 窄屏顶栏只留头像，用户名文字隐藏（title 属性仍保留用户名） */
.flinthub-ui-user-name{display:none}
.flinthub-ui-user-btn{padding:0 6px}
}
/* ===== 自定义页脚：4 栏 PC / 单列手机 ===== */
.flinthub-ui-footer{background:var(--bg);border-top:1px solid var(--line);padding:32px 20px 20px;color:var(--text-subtle);font-size:var(--font-size-sm)}
.flinthub-ui-footer-inner{max-width:1320px;margin:0 auto;display:flex;gap:32px;flex-wrap:wrap}
.flinthub-ui-footer-group{flex:1 1 180px;min-width:160px}
.flinthub-ui-footer-group h4{margin:0 0 12px;font-size:var(--font-size-sm);font-weight:600;color:var(--text);letter-spacing:.3px}
.flinthub-ui-footer-group ul{margin:0;padding:0;list-style:none}
.flinthub-ui-footer-group li{margin-bottom:6px}
.flinthub-ui-footer-group a{color:var(--text-subtle);text-decoration:none;transition:color .15s}
.flinthub-ui-footer-group a:hover{color:var(--brand)}
.flinthub-ui-footer-brand .flinthub-ui-logo{margin-bottom:10px}
.flinthub-ui-footer-desc{margin:0;line-height:1.6;color:var(--text-subtle);font-size:var(--font-size-xs)}
.flinthub-ui-footer-copy{max-width:1320px;margin:20px auto 0;padding-top:14px;border-top:1px solid var(--line);text-align:center;font-size:var(--font-size-xs);color:var(--text-subtle)}
/* 手机端：单列，各栏间距收紧 */
@media(max-width:768px){
.flinthub-ui-footer{padding:20px 16px 16px}
.flinthub-ui-footer-inner{flex-direction:column;gap:18px}
.flinthub-ui-footer-group{flex:1 1 auto;min-width:0}
.flinthub-ui-footer-group h4{margin-bottom:8px}
.flinthub-ui-footer-copy{margin-top:14px}
}
/* ===== 自定义页面（规则/隐私/条款/联系）===== */
.flinthub-ui-custom-panel{max-width:800px;margin:0 auto;padding:32px 28px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}
.flinthub-ui-custom-page h1{margin:0 0 20px;font-size:var(--font-size-xl);font-weight:700;color:var(--text)}
.flinthub-ui-custom-page h2{margin:28px 0 12px;font-size:var(--font-size-base);font-weight:600;color:var(--text);padding-bottom:6px;border-bottom:1px solid var(--line)}
.flinthub-ui-custom-page p{margin:0 0 12px;line-height:1.7;color:var(--text)}
.flinthub-ui-custom-page ul{margin:0 0 12px;padding-left:22px;line-height:1.8;color:var(--text)}
.flinthub-ui-custom-page li{margin-bottom:4px}
.flinthub-ui-custom-page a{color:var(--brand);text-decoration:underline;text-underline-offset:3px}
.flinthub-ui-custom-page a:hover{color:var(--brand-hover)}
.flinthub-ui-custom-page strong{color:var(--text)}
/* 联系我们：4 个卡片网格 */
.flinthub-ui-contact-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin:20px 0 24px}
.flinthub-ui-contact-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:20px;transition:border-color .18s,transform .18s}
.flinthub-ui-contact-card:hover{border-color:var(--brand);transform:translateY(-2px)}
.flinthub-ui-contact-icon{font-size:28px;line-height:1;margin-bottom:8px}
.flinthub-ui-contact-card h3{margin:0 0 6px;font-size:16px;color:var(--text);font-weight:700}
.flinthub-ui-contact-card p{margin:0 0 4px;color:var(--text-muted);font-size:14px;line-height:1.6}
.flinthub-ui-contact-card a{color:var(--brand);text-decoration:none;font-weight:600}
.flinthub-ui-contact-card a:hover{color:var(--brand-hover)}
.flinthub-ui-contact-hint{font-size:12px;color:var(--text-subtle)}
.flinthub-ui-contact-meta{display:flex;flex-wrap:wrap;gap:16px;margin-top:24px;padding-top:16px;border-top:1px solid var(--border);font-size:13px;color:var(--text-muted)}
.flinthub-ui-contact-meta a{color:var(--brand);text-decoration:none}
.flinthub-ui-contact-meta a:hover{color:var(--brand-hover)}
@media(max-width:520px){
.flinthub-ui-contact-grid{grid-template-columns:1fr}
.flinthub-ui-contact-card{padding:16px}
.flinthub-ui-contact-meta{flex-direction:column;gap:8px}
}
@media(max-width:768px){
.flinthub-ui-custom-panel{padding:20px 16px;border-radius:0;border-left:none;border-right:none}
}
/* friend_links */
.friend-links-card{order:999}.friend-links-title{display:flex;align-items:center;justify-content:space-between;gap:8px}.friend-links-title a{font-size:var(--font-size-sm);font-weight:400}.friend-links-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 10px;margin:0}.friend-links-list li{min-width:0;border-bottom:none}.friend-links-list a{min-width:0;color:var(--text-muted);font-size:var(--font-size-sm)}.friend-links-list a:before{flex:0 0 6px}.friend-links-list a>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.friend-links-list a:hover{color:var(--brand)}.friend-links-empty{margin:0;color:var(--text-subtle);font-size:var(--font-size-sm)}.friend-links-submit>p{color:var(--text-muted)}@media(max-width:600px){.friend-links-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
