:root{--bg:#0d1117;--text:#e6edf3;--dim:#8b949e;--faint:#6e7681;--line:#1c2129;--line2:#30363d;--accent:#58a6ff;--card:#161b22;--header-bg:#0d1117e6;--accent-soft:#58a6ff1a;color-scheme:dark}
:root[data-theme=dark]{color-scheme:dark}
:root[data-theme=light]{--bg:#fff;--text:#1f2328;--dim:#59636e;--faint:#818b98;--line:#e8ebef;--line2:#d0d7de;--accent:#0969da;--card:#f6f8fa;--header-bg:#ffffffe6;--accent-soft:#0969da1a;color-scheme:light}
/* ── 字号体系（4 档变量 + h2；全部 font-size 只允许用这些变量，禁止散落 px；
   菜单栏 .mnav 与大标题 clamp 为固定框架不参与调节。放大档 data-fs=lg 只覆盖变量，
   布局零改动。偏好存 localStorage mbd-fs，head 内联脚本渲染前置位防闪烁）── */
:root{--fs-xs:13px;--fs-sm:14px;--fs-md:15px;--fs-base:17px;--fs-h2:22px}
html[data-fs=lg]{--fs-xs:14.5px;--fs-sm:16px;--fs-md:17px;--fs-base:19px;--fs-h2:24px}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:var(--fs-base)/1.7 ui-sans-serif,system-ui,"PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
/* ── 顶部菜单栏（移植主站 zbhgis.com 的 header，同源数值）：
   sticky 顶栏 · 发丝底边 · 90% 不透明底 + blur(12px) 毛玻璃；
   链接 hover 出下划线（scaleX 0→1），当前页 accent 常亮；
   右端一枚 30px 方形 icon 按钮（v3-nav-icon 同语言，当前为占位） ── */
.mnav{position:sticky;top:0;z-index:50;border-bottom:1px solid var(--line);background:var(--header-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.mnav-in{max-width:1080px;margin:0 auto;padding:0 24px;height:56px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.mnav-brand{flex:none;display:inline-flex;align-items:center;gap:10px;font-size:17px;font-weight:600;letter-spacing:-.01em;color:var(--text);transition:color .16s}
.mnav-brand img{width:26px;height:26px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 1px var(--line)}
.mnav-brand:hover{color:var(--accent)}
.mnav-links{display:flex;align-items:center;list-style:none;margin:0;padding:0}
.mnav-link{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;font-size:15px;line-height:1.4;color:var(--dim);position:relative;transition:color .16s}
.mnav-link:after{content:"";position:absolute;bottom:1px;left:10px;right:10px;height:1px;background:currentColor;opacity:.45;transform:scaleX(0);transform-origin:0;transition:transform .2s,opacity .2s}
.mnav-link:hover{color:var(--text)}
.mnav-link:hover:after{transform:scaleX(1)}
.mnav-link[data-active=true]{color:var(--accent)}
.mnav-link[data-active=true]:after{opacity:.9;transform:scaleX(1)}
/* 菜单项图标：主站 v3-nav-ico 同源（14px，currentColor，随 .mnav-link 的 5px gap 定位） */
.mnav-ico{flex:none;width:14px;height:14px}
/* 「更多」下拉：主站 v3-more / v3-nav-menu 同源 —— hover 或触发钮 focus-visible 展开，
   display 直切无动画；caret 11px 悬停旋转；面板 --bg 实底 + 描边 + 主站同款投影 */
.mnav-more{position:relative}
.mnav-more-trigger{cursor:pointer;font-family:inherit;background:none;border:none}
/* 只继承字族、字号仍取 .mnav-link 的固定 15px —— 用 font:inherit 会继承 body 的
   --fs-base 字号，字号体系一上按钮就跟着变大（踩坑记录） */
.mnav-more-caret{flex:none;width:11px;height:11px;transition:transform .16s}
.mnav-more:hover .mnav-more-caret,.mnav-more:has(.mnav-more-trigger:focus-visible) .mnav-more-caret{transform:rotate(180deg)}
.mnav-dd{display:none;position:absolute;top:100%;right:0;min-width:148px;margin:0;padding:5px;list-style:none;background:var(--bg);border:1px solid var(--line2);border-radius:6px;box-shadow:0 10px 28px rgba(0,0,0,.16);z-index:60}
.mnav-more:hover .mnav-dd,.mnav-more:has(.mnav-more-trigger:focus-visible) .mnav-dd{display:block}
.mnav-dd a{display:flex;align-items:center;gap:8px;padding:8px 11px;border-radius:4px;font-size:14px;color:var(--dim);white-space:nowrap;transition:color .16s,background-color .16s}
.mnav-dd a .mnav-ico{width:15px;height:15px;color:var(--faint)}
.mnav-dd a:hover{color:var(--text);background:var(--accent-soft)}
.mnav-dd-sep{height:1px;background:var(--line);margin:5px 4px}
/* 窄屏汉堡：主站 sm 断点的 details/summary 原生方案（无 JS），
   summary 即主站 .v3-nav-icon（30px 方形 hover accent + accent-soft 底） */
.mnav-m{display:none;position:relative}
.mnav-icon{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;color:var(--dim);cursor:pointer;transition:color .16s,background-color .16s;list-style:none}
.mnav-icon::-webkit-details-marker{display:none}
.mnav-icon:hover,.mnav-m[open] .mnav-icon{color:var(--accent);background:var(--accent-soft)}
.mnav-icon svg{width:18px;height:18px}
.mnav-m[open] .mnav-dd{display:block}
@media (max-width:640px){
  .mnav-in{padding:0 16px}
  .mnav-links{display:none}
  .mnav-m{display:block}
}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
/* 桌面/平板给右侧控件队列留出通道：队列占 right:16 + 42 = 58px，
   这里把正文右内边距顶到 74px，避免工具栏、卡片直接压到队列下面。
   只在队列仍是「垂直居中」的宽度区间生效（>640px），窄屏队列改横排后由 body 底边距接管。 */
@media (min-width:641px){
  .wrap{max-width:1180px;padding-right:74px}
}
header.site{padding:72px 0 0}
/* 右侧控件队列：桌面端垂直居中于视口右侧，与主站 zbhgis.com 的 .v3-rail 保持同一形状
   （42px 正圆 · --card 实底 · 发丝边框 · hover 变强调色并 scale 1.06） */
.fab{position:fixed;right:16px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:9px;z-index:50}
.tbtn{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border:1px solid var(--line2);border-radius:50%;background:var(--card);color:var(--dim);cursor:pointer;transition:color .16s,border-color .16s,transform .16s,opacity .25s ease}
.tbtn:hover{color:var(--accent);border-color:var(--accent);transform:scale(1.06)}
.tbtn svg{width:17px;height:17px;flex:none}
/* 控件内联小箭头：尺寸统一由 CSS 定，用 em 让图标跟着字号缩放；
   颜色一律 currentColor —— 与文字一起被 hover 染色，避免出现"文字变色图标不变"的割裂 */
.ico{width:1em;height:1em;flex:none;transition:transform .18s ease}
.ico-l{width:14px;height:14px}
.ico-r{width:13px;height:13px}
/* 回到顶部按钮：不参与 hover 的 scale 过渡，单独过渡 opacity，
   否则淡入淡出时会跟着缩放抖动 */
#topBtn{opacity:0;pointer-events:none}
#topBtn.show{opacity:1;pointer-events:auto}
/* 窄屏（≤640px）：垂直居中的队列会压住满宽内容，
   改为右下角横排 —— 断点、定位、尺寸全部对齐主站 zbhgis.com 的 .v3-rail 窄屏方案（统一设计）。
   同时给 body 补足底部内边距，避免遮住 footer。 */
@media (max-width:640px){
  .fab{right:12px;bottom:14px;top:auto;transform:none;flex-direction:row;gap:7px}
  .tbtn{width:36px;height:36px}
  .tbtn svg{width:15px;height:15px}
  body{padding-bottom:calc(14px + 36px + 16px + env(safe-area-inset-bottom))}
}
.tbtn .ic-sun{display:inline}.tbtn .ic-moon{display:none}
:root[data-theme=light] .tbtn .ic-sun{display:inline}:root[data-theme=light] .tbtn .ic-moon{display:none}
:root[data-theme=dark] .tbtn .ic-sun{display:none}:root[data-theme=dark] .tbtn .ic-moon{display:inline}
.kicker{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0}
/* 仅首页 header 的 logo+标题行需要 flex —— 用专用类而非元素/层叠选择器：
   search/statistics 的 h1.spage-title 也在 header.site 内，全局 h1 或
   header.site h1 都会以特异度反超 .spage-title 的设计字号 */
.home-title{display:flex;align-items:center;gap:18px;flex-wrap:wrap;font-size:clamp(44px,6.5vw,68px);line-height:1.08;letter-spacing:-.03em;margin:24px 0 0;font-weight:700}
h1 img.logo{height:clamp(44px,5.4vw,58px);width:auto;flex:none;border-radius:12px}
.lede{font-size:var(--fs-base);color:var(--dim);max-width:52ch;margin:20px 0 0}
.gh-note{display:inline-flex;align-items:center;gap:9px;margin:18px 0 0;padding:9px 16px;border:1px solid var(--accent);border-left-width:3px;border-radius:6px;background:var(--card);font-size:var(--fs-sm);color:var(--text)}
.gh-note svg{width:16px;height:16px;flex:none;color:var(--accent)}
.meta-row{margin:28px 0 0;padding:14px 0;border-top:1px solid var(--line);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--dim)}
.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:22px 0 6px}
.search{flex:1 1 260px;max-width:380px;padding:8px 12px;border:1px solid var(--line2);border-radius:4px;background:transparent;color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs)}
/* 搜索框 + 搜索按钮（连体） */
.searchbox{display:inline-flex;align-items:center;gap:0;flex:1 1 300px;max-width:430px;border:1px solid var(--line2);border-radius:4px;background:transparent;transition:border-color .16s}
.searchbox:focus-within{border-color:var(--accent)}
.searchbox .sic{width:14px;height:14px;flex:none;margin-left:11px;color:var(--faint)}
.searchbox .search{flex:1;min-width:0;border:none;background:transparent;padding:8px 10px;max-width:none}
.searchbox .search:focus{outline:none}
.searchbox button{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);padding:0 14px;height:34px;border:none;border-left:1px solid var(--line2);border-radius:0 3px 3px 0;background:transparent;color:var(--dim);cursor:pointer;transition:color .16s,background-color .16s}
.searchbox button:hover{color:var(--accent);background:var(--card)}
.search:focus{outline:none;border-color:var(--accent)}
.search::placeholder{color:var(--faint)}
select{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);padding:7px 9px;border:1px solid var(--line2);border-radius:4px;background:transparent;color:var(--dim)}
.reset{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);padding:7px 11px;border:1px solid var(--line2);border-radius:4px;background:transparent;color:var(--faint);cursor:pointer}
.reset:hover{color:var(--accent);border-color:var(--accent)}
#filters[hidden]{display:none}
.sorter{display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--line2);border-radius:999px;background:var(--card)}
.sorter button{display:inline-flex;align-items:center;gap:6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);padding:6px 13px;border:none;border-radius:999px;background:transparent;color:var(--dim);cursor:pointer;transition:color .15s,background-color .15s}
.sorter button:hover{color:var(--text)}
.sorter button[aria-pressed=true]{background:var(--accent);color:var(--bg)}
.sorter button svg{width:13px;height:13px;flex:none}
.dateinp{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);padding:6px 9px;border:1px solid var(--line2);border-radius:4px;background:transparent;color:var(--dim);color-scheme:dark light}
.fgroup{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:10px 0 0;padding-bottom:8px;border-bottom:1px solid var(--line)}
.flabel{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint);min-width:44px;letter-spacing:.06em}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chips button{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);padding:4px 10px;border:1px solid var(--line2);border-radius:4px;background:transparent;color:var(--dim);cursor:pointer;transition:color .16s,border-color .16s}
.chips button:hover{color:var(--text)}
.chips button[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}
/* ── 首页卡片瀑布流：移植 GeoSciPlot 的 multi-columns 方案（同源）。
   等宽 grid 同一行会被"最高的那张"定高、矮卡下方必然留空 —— columns
   每列独立堆叠，封面图自然比例不同，才能形成错落 ── */
.grid{columns:4;column-gap:18px;margin-top:26px}
@media (max-width:1100px){.grid{columns:3}}
@media (max-width:760px){.grid{columns:2;column-gap:12px}}
.card{break-inside:avoid;display:block;margin:0 0 18px;min-width:0;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--card);transition:border-color .16s}
.card:hover{border-color:var(--accent)}
.c-ty{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--dim);border:1px solid var(--line2);border-radius:3px;padding:1px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:12em}
.c-j{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);border-radius:3px;padding:1px 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
/* .c-y 详情页 .p-top 仍在复用 */
.c-y{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint);flex:none}
.c-t{font-size:var(--fs-sm);font-weight:600;line-height:1.5;color:var(--text);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
/* 封面通栏顶图：自然宽高比不裁切（瀑布流错落靠比例）；底色作加载占位防白闪 */
.c-cov{display:block;width:100%;height:auto;background:var(--line)}
/* 无封面占位块：期刊缩写居中（GeoSciPlot .ph 同语言） */
.c-ph{display:flex;align-items:center;justify-content:center;min-height:140px;padding:18px;background:var(--line);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);letter-spacing:.08em;color:var(--faint);text-align:center}
.c-cap{display:block;padding:10px 12px 12px}
.c-meta{display:flex;flex-wrap:wrap;gap:5px;min-width:0;margin:0 0 7px}
.pgbar{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px;margin:44px 0 0;padding-top:24px;border-top:1px solid var(--line)}
/* 步进按钮：只有文字 + 一枚内联箭头，hover 才点亮（与主站 .v3-pager-step 同语言） */
.pgbar button{display:inline-flex;align-items:center;gap:6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);line-height:1.35;padding:5px 11px;border:1px solid var(--line2);border-radius:6px;background:transparent;color:var(--dim);cursor:pointer;transition:color .16s,border-color .16s,background-color .16s}
.pgbar button:hover:not(:disabled){color:var(--accent);border-color:var(--accent);background:var(--card)}
.pgbar button:disabled{opacity:.3;cursor:not-allowed}
/* 箭头 hover 时朝翻页方向平移 2px；禁用态不动 */
#prev:hover:not(:disabled) .ico-l{transform:translateX(-2px)}
#next:hover:not(:disabled) .ico-r{transform:translateX(2px)}
/* 页码：等宽 + 定宽定高，选中态用强调色描边配极淡底，不填色（保持克制的工程感） */
.pgnum{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:30px;padding:0 7px;border:1px solid var(--line2);border-radius:6px;background:transparent;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);font-variant-numeric:tabular-nums;color:var(--dim);cursor:pointer;transition:color .16s,border-color .16s,background-color .16s}
.pgnum:hover{color:var(--text);border-color:var(--accent)}
.pgnum[data-on=true]{color:var(--accent);border-color:var(--accent);background:var(--card)}
/* 当前页附近被"窗口"截断时用省略号占位，不可点 */
.pggap{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:30px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint);user-select:none}
/* 页码区与「共 N 篇」之间用一条发丝竖线隔开 */
.pgbar .info{margin-left:8px;padding-left:14px;border-left:1px solid var(--line);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint);white-space:nowrap}
.empty{padding:52px 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint);display:none;text-align:center}
footer.site{margin-top:56px;padding:24px 0 64px;border-top:1px solid var(--line);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint);display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between}
/* ── 详情页（公众号推文式，移植「浩瀚地学」文献精选排版语言：
   窄栏 677px 居中 · 标题块居中 + accent 通栏底线 · 节标题 accent 左竖线 ·
   「字段名：值」同行字段行 · 摘要 15px/1.8 左对齐 · 图片撑栏淡蓝光晕；
   色值一律取本站 token，明暗主题各自适配） ── */
.pbody{max-width:677px;margin:0 auto}
.p-top{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;margin:26px 0 0}
.p-top .c-j{font-size:var(--fs-xs)}
.p-top .p-type,.p-top .p-ct{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint)}
.p-head{padding-bottom:16px;border-bottom:1px solid var(--rs,var(--accent));text-align:center}
.p-title{font-size:clamp(22px,3.2vw,30px);line-height:1.5;letter-spacing:-.01em;margin:14px 0 0;font-weight:700}
.alt-title{font-size:var(--fs-sm);color:var(--dim);margin:8px 0 0;line-height:1.7}
.p-auth{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--dim);margin:12px 0 0;line-height:1.9;word-break:break-word}
/* 作者行折叠：papers.js 检测到超过两行才加 .auth-clamp 并亮出切换按钮；
   无 JS / 两行以内 = 完整展示（渐进增强，内容不因样式丢失） */
.p-auth.auth-clamp{max-height:3.8em;overflow:hidden;transition:max-height .25s ease}
.p-auth.auth-clamp.open{max-height:60em}
.auth-toggle{display:none;margin:4px 0 0;padding:0;border:none;background:none;cursor:pointer;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint);transition:color .16s}
.auth-toggle:hover{color:var(--accent)}
.auth-toggle.on{display:inline-block}
/* 图表：图片撑满栏宽、无圆角、淡蓝光晕（公众号 rgb(133,161,201) 同源） */
.p-cover{margin:6px 0 0;background:var(--bg);box-shadow:0 0 5px rgba(133,161,201,.5)}
.p-cover img{display:block;width:100%;height:auto}
/* 节标题：accent 5px 左竖线 + 18px 加粗（公众号同源：无底线、无背景） */
.sec{margin-top:32px}
.sec-h{display:flex;align-items:center;margin:0 0 14px;padding:2px 0 2px 11px;border-left:5px solid var(--rs,var(--accent));scroll-margin-top:80px}
.sec-h .tx{font-size:var(--fs-h2);font-weight:700;letter-spacing:0;color:var(--rs,var(--accent))}
/* ── 渲染颜色切换（文献详情 ↔ 周报文章，两页共用同一份用户偏好）：
   plain（周报默认）＝系统色标题、无装饰；accent（文献详情默认）/green/purple/orange
   ＝强调色渲染：--rs 按 data-rstyle 定义，节标题竖线与文字、详情页标题底线、备注线、
   周报彩色标题全部取 --rs；亮色主题下换深一档色值保证对比度 ── */
html[data-rstyle=accent]{--rs:var(--accent)}
html[data-rstyle=green]{--rs:#3fb950}
html[data-rstyle=purple]{--rs:#a371f7}
html[data-rstyle=orange]{--rs:#f0883e}
html[data-theme=light][data-rstyle=green]{--rs:#1a7f37}
html[data-theme=light][data-rstyle=purple]{--rs:#8250df}
html[data-theme=light][data-rstyle=orange]{--rs:#bc4c00}
html[data-rstyle=plain] .sec-h{border-left:none;padding-left:0}
html[data-rstyle=plain] .sec-h .tx{color:var(--text)}
html[data-rstyle]:not([data-rstyle=plain]) .wk-content h2.md-h1,
html[data-rstyle]:not([data-rstyle=plain]) .wk-content h3.md-h2{padding:2px 0 2px 11px;border-bottom:none;border-left:5px solid var(--rs,var(--accent));color:var(--rs,var(--accent))}
/* 强调色渲染：正文作用域内所有用 accent 的文字相关元素（内容链接 / DOI 链接 /
   悬停反馈 / 期刊徽章 / 关键词胶囊 / 周报分类 chip / strong）一并跟随渲染颜色
   —— 直接重映射作用域内的 --accent，规则无需逐条改；plain 保持站点原色 */
html[data-rstyle]:not([data-rstyle=plain]) .pbody,
html[data-rstyle]:not([data-rstyle=plain]) .wk-main,
html[data-rstyle]:not([data-rstyle=plain]) .back{--accent:var(--rs)}
html[data-rstyle]:not([data-rstyle=plain]) .wk-content strong{color:var(--rs)}
.rstyle{display:inline-flex;align-items:center;gap:6px;margin-left:auto}
.rst-btn{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;background:none;border-radius:50%;cursor:pointer}
.rst-btn:hover{background:none}
.rst-dot{position:relative;display:block;width:15px;height:15px;border-radius:50%;transition:opacity .16s,box-shadow .16s}
.rst-dot-plain{border:1.5px solid var(--dim)}
.rst-dot-plain:before{content:"";position:absolute;left:1.5px;right:1.5px;top:50%;height:1.5px;margin-top:-1px;background:var(--dim);transform:rotate(-45deg)}
.rst-dot-accent{background:#58a6ff;border:1.5px solid #58a6ff}
html[data-theme=light] .rst-dot-accent{background:#0969da;border-color:#0969da}
.rst-dot-green{background:#3fb950;border:1.5px solid #3fb950}
.rst-dot-purple{background:#a371f7;border:1.5px solid #a371f7}
.rst-dot-orange{background:#f0883e;border:1.5px solid #f0883e}
html[data-theme=light] .rst-dot-green{background:#1a7f37;border-color:#1a7f37}
html[data-theme=light] .rst-dot-purple{background:#8250df;border-color:#8250df}
html[data-theme=light] .rst-dot-orange{background:#bc4c00;border-color:#bc4c00}
.rst-btn[aria-pressed=true] .rst-dot{box-shadow:0 0 0 2px var(--bg),0 0 0 3.5px var(--rs,var(--accent))}
.rst-btn[aria-pressed=true] .rst-dot-plain{box-shadow:0 0 0 2px var(--bg),0 0 0 3.5px var(--dim)}
.rst-btn[aria-pressed=false] .rst-dot{opacity:.4}
.p-top{position:relative}
.p-top .rstyle{position:absolute;right:0;top:50%;transform:translateY(-50%);margin-left:0}
@media (max-width:640px){.p-top .rstyle{position:static;transform:none;margin-left:auto}}
/* 信息节：字段行（字段名：值 同行，15px / 1.8 行高 / 8px 上下呼吸，与推文一致） */
.frows{margin:0}
.frow{display:flex;flex-wrap:wrap;margin:0;padding:8px 0;font-size:var(--fs-md);line-height:1.8;color:var(--text)}
.frow .fk{flex:none;color:var(--dim);font-style:normal}
.frow .fk::after{content:"："}
.frow .fv{flex:1;min-width:0;word-break:break-word}
.frow .fv a{border-bottom:1px solid var(--line2);transition:color .16s,border-color .16s}
.frow .fv a:hover{color:var(--accent);border-color:var(--accent)}
.frow .fv a.tag{display:inline-block;margin:0 8px 6px 0;padding:2px 10px;border:1px solid var(--line2);border-radius:4px;font-size:var(--fs-xs);color:var(--dim)}
.frow .fv a.tag:hover{color:var(--accent);border-color:var(--accent)}
/* 摘要：15px / 1.8 行高左对齐（对齐推文正文）；英文原题收合、备注强调块保留 */
.abs-main{font-size:var(--fs-md);line-height:1.8;margin:0;color:var(--text);text-align:left}
.abs-main.abs-en-only{color:var(--dim)}
.abs-alt{margin-top:16px}
.abs-alt summary{cursor:pointer;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint);transition:color .16s}
.abs-alt summary:hover{color:var(--accent)}
.abs-alt p{margin:10px 0 0;font-size:var(--fs-xs);line-height:1.8;color:var(--dim);text-align:justify}
.abs-note{margin:16px 0 0;padding:10px 13px;border-left:2px solid var(--rs,var(--accent));background:var(--card);border-radius:0 6px 6px 0;font-size:var(--fs-xs);line-height:1.8;color:var(--dim)}
/* 引用条（GB/T 7714）+ 复制按钮 */
.cite-line{padding:13px 15px;border:1px solid var(--line);border-radius:6px;background:var(--card);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);line-height:1.85;color:var(--dim);word-break:break-word;margin:0 0 12px}
.a-end{margin:46px 0 0;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);letter-spacing:.4em;color:var(--faint);user-select:none}
/* BibTeX：复制按钮 + 折叠查看 */
.btx{margin-top:28px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.btx button{display:inline-flex;align-items:center;gap:6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);padding:6px 13px;border:1px solid var(--line2);border-radius:6px;background:transparent;color:var(--dim);cursor:pointer;transition:color .16s,border-color .16s,background-color .16s}
.btx button:hover{color:var(--accent);border-color:var(--accent);background:var(--card)}
.btx summary{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint);cursor:pointer}
.btx summary:hover{color:var(--accent)}
.btx pre{margin:12px 0 0;padding:12px 14px;border:1px solid var(--line);border-radius:6px;background:var(--card);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);line-height:1.65;color:var(--dim);overflow:auto;max-height:320px;white-space:pre-wrap;word-break:break-all}
.btx .full{flex-basis:100%}
/* ── 详情页：上一篇 / 下一篇（与主站 .v3-prevnext 同语言）
   两列等宽卡片；缺一篇时用虚线占位，避免唯一那篇被拉成通栏 ── */
.pager{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:46px 0 0;padding-top:24px;border-top:1px solid var(--line)}
.pager a{display:flex;flex-direction:column;gap:7px;min-width:0;padding:12px 14px;border:1px solid var(--line2);border-radius:6px;transition:color .16s,border-color .16s,background-color .16s}
.pager a:hover{border-color:var(--accent);background:var(--card)}
.pager .dir{display:inline-flex;align-items:center;gap:5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);letter-spacing:.1em;color:var(--faint);transition:color .16s}
.pager a:hover .dir{color:var(--accent)}
.pager a:hover .ico-l{transform:translateX(-2px)}
.pager a:hover .ico-r{transform:translateX(2px)}
.pager .ttl{font-size:var(--fs-sm);line-height:1.5;color:var(--text);transition:color .16s;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pager a:hover .ttl{color:var(--accent)}
.pager .pn-next{text-align:right}
.pager .pn-next .dir{justify-content:flex-end}
.pager .pn-empty{min-height:68px;border:1px dashed var(--line);border-radius:6px}
/* ── 返回全部：发丝边框小按钮，箭头 hover 左移 ── */
.back{display:inline-flex;align-items:center;gap:7px;margin:36px 0 20px;padding:5px 11px 5px 9px;border:1px solid var(--line2);border-radius:6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);line-height:1.35;color:var(--dim);transition:color .16s,border-color .16s,background-color .16s}
.back:hover{color:var(--accent);border-color:var(--accent);background:var(--card)}
.back:hover .ico-l{transform:translateX(-2px)}
/* ── 窄屏收尾（必须写在上面这些规则之后，否则同优先级会被覆盖） ──
   分页条允许换行、末页提示去掉那根竖线；上一篇/下一篇改为上下堆叠，
   右对齐失去意义统一左对齐；被隐藏的占位块正是"堆叠后不再需要"的元素 */
@media (max-width:640px){
  .pgbar{gap:5px}
  .pgbar .info{margin-left:0;padding-left:0;border-left:none}
  .pager{grid-template-columns:1fr}
  .pager .pn-next{text-align:left}
  .pager .pn-next .dir{justify-content:flex-start}
  .pager .pn-empty{display:none}
}
/* ── 全站搜索独立页（/search/）：版式参考主站 zbhgis.com 的 /search
   （kicker + 大标题 + 结果行）；文献没有缩略图，结果行就是标题 + 元信息；
   颜色一律取自主题变量，明暗两套自动跟随 ── */
.spage-title{font-size:clamp(30px,4.5vw,44px);letter-spacing:-.02em;margin:18px 0 0}
.spage-q{display:block;width:100%;max-width:520px;margin:24px 0 0;padding:10px 13px;border:1px solid var(--line2);border-radius:6px;background:transparent;color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs)}
.spage-q:focus{outline:none;border-color:var(--accent)}
.spage-count{margin:14px 0 2px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint)}
.spage-list{margin-top:6px}
.sres{display:flex;align-items:center;gap:14px;padding:11px 6px;border-top:1px solid var(--line)}
.sres:hover{background:var(--card)}
.sres-body{min-width:0;flex:1}
.sres-id{display:block;font-size:var(--fs-sm);line-height:1.5;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sres:hover .sres-id{color:var(--accent)}
.sres-meta{display:block;margin-top:3px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sres-meta .sres-sep{font-style:normal;color:var(--faint);margin:0 6px}
/* 周报结果：分组标题 + 正文命中片段（可多行，弱化色） */
.spage-grouphd{margin:22px 0 2px;padding:7px 6px;border-top:1px solid var(--line);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);letter-spacing:.08em;color:var(--faint)}
.sres-snip{margin-top:5px;font-size:var(--fs-xs);line-height:1.7;color:var(--dim);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
mark{background:color-mix(in srgb,var(--accent) 24%,transparent);color:inherit;border-radius:2px;padding:0 1px}
.spage-hint,.spage-empty{padding:26px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint)}
@media (max-width:640px){
  .sres{gap:10px}
}
/* ── 每周速递（/weekly/）：移植自 mystation（zbhgis.com 主站）globals.css 的
   v3-* / blog-content 同款数值，token 已换名（--text-primary→--text、
   --text-secondary/muted→--dim、--text-faint→--faint、--hairline→--line、
   --hairline-strong/--border→--line2、accent-soft-fade→transparent）。
   静态站裁剪：ViewToggle/RSS/分组分页/侧栏手风琴/TOC scrollspy 均不做 ── */
.wk-col{max-width:760px;margin:0 auto;padding:56px 24px 96px}
.wk-head{display:flex;align-items:flex-end;gap:16px;margin:0 0 40px}
.wk-kicker{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.wk-deco{margin:16px 0 0;font-size:clamp(28px,4vw,40px);font-weight:600;letter-spacing:-.03em;line-height:1.15;color:var(--text)}
.wk-lede{margin:18px 0 0;font-size:var(--fs-base);line-height:1.75;color:var(--dim);max-width:46ch}
/* QuickNav 月份跳转 chip（v3-btn 同源） */
.wk-quicknav{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:0 0 36px}
.wk-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);line-height:1.3;border:1px solid var(--line2);border-radius:4px;color:var(--dim);background:transparent;transition:color .16s,border-color .16s,background-color .16s}
.wk-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}
.wk-btn .n{color:var(--faint)}
/* 分组 section（v3-label 同源：mono 大写 + 右侧计数） */
.wk-groups{display:flex;flex-direction:column;gap:40px}
.wk-label{display:flex;align-items:baseline;justify-content:space-between;gap:16px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--dim);padding-bottom:10px;border-bottom:1px solid var(--line2);margin:0 0 18px}
.wk-label-right{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);letter-spacing:.04em;text-transform:none;color:var(--dim)}
/* 条目行（v3-line 同源：标题 + 摘要两行 + 右侧标签列） */
.wk-line{display:block;padding:13px 2px;border-top:1px solid var(--line);transition:background-color .16s}
.wk-line:last-child{border-bottom:1px solid var(--line)}
.wk-line:hover{background:linear-gradient(90deg,var(--accent-soft),transparent 70%)}
.wk-line-in{display:flex;flex-direction:column;gap:8px}
.wk-line-main{min-width:0}
.wk-line-ttl{margin:0;font-size:var(--fs-md);font-weight:600;letter-spacing:-.012em;line-height:1.5;color:var(--text);transition:color .16s}
.wk-line:hover .wk-line-ttl{color:var(--accent)}
.wk-line-sum{margin:4px 0 0;font-size:var(--fs-xs);line-height:1.65;color:var(--dim);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.wk-line-side{flex:none}
.wk-line-tags{display:flex;gap:6px;flex-wrap:wrap}
.wk-line-date{display:block;margin:6px 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint);font-variant-numeric:tabular-nums}
@media (min-width:640px){.wk-line-in{flex-direction:row;justify-content:space-between;align-items:flex-start;gap:24px}.wk-line-main{flex:1}.wk-line-side{text-align:right}}
/* 标签 chip（v3-tag 同源） */
.wk-tag{display:inline-flex;align-items:center;height:19px;padding:0 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);line-height:1;border:1px solid var(--line2);border-radius:3px;color:var(--dim);white-space:nowrap}
.wk-tag-accent{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}
/* ── 文章页三栏骨架（max-1400：左文章导航 250 / 中正文 760 / 右 TOC 180）── */
.wk-shell{display:flex;max-width:1400px;margin:0 auto}
.wk-side{display:none;width:250px;flex:none;border-right:1px solid var(--line)}
.wk-side-in{position:sticky;top:80px;height:calc(100vh - 80px);overflow-y:auto;padding:24px 12px 24px 0}
.wk-side-nav{padding:24px 16px}
.wk-side-hd{margin:0 0 6px;padding-bottom:8px;border-bottom:1px solid var(--line);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.wk-side-link{display:block;padding:6px 8px;border-left:1px solid transparent;font-size:var(--fs-xs);line-height:1.5;color:var(--dim);transition:color .16s,border-color .16s}
.wk-side-link:hover{color:var(--text);border-left-color:var(--line2)}
.wk-side-link[data-active="true"]{color:var(--accent);border-left-color:var(--accent)}
.wk-toc{display:none;width:180px;flex:none}
.wk-toc-in{position:sticky;top:80px;height:calc(100vh - 80px);overflow-y:auto;padding:24px 8px 32px 0}
.wk-toc nav{display:flex;flex-direction:column;gap:4px}
.wk-toc-link{position:relative;display:block;padding:6px 8px;border-left:1px solid transparent;font-size:var(--fs-xs);line-height:1.5;color:var(--dim);transition:color .16s,border-color .16s,padding-left .16s}
.wk-toc-link:hover{color:var(--text);border-left-color:var(--line2)}
.wk-toc-link[data-lv="1"]{padding-left:8px;color:var(--dim)}
.wk-toc-link[data-lv="2"]{padding-left:20px}
.wk-toc-link[data-lv="3"]{padding-left:30px;font-size:var(--fs-xs);color:var(--faint)}
.wk-toc-link[data-lv="4"]{padding-left:42px;font-size:var(--fs-xs);color:var(--faint)}
/* 导轨竖线（lv3 起挂在父级文字下方，主站同源） */
.wk-toc-link[data-lv="3"]::before,.wk-toc-link[data-lv="4"]::before{content:"";position:absolute;top:5px;bottom:5px;width:1px;background:var(--line)}
.wk-toc-link[data-lv="3"]::before{left:26px}
.wk-toc-link[data-lv="4"]::before{left:36px}
.wk-toc-link[data-lv="3"]:hover::before,.wk-toc-link[data-lv="4"]:hover::before{background:var(--line2)}
@media (min-width:1024px){.wk-side{display:block}.wk-main{padding:40px 32px}}
@media (min-width:1280px){.wk-toc{display:block}.wk-main{padding-left:40px;padding-right:24px}}
/* ── 文章 TOC 组件（article-toc.js 配套样式；拷自 mystation，类名 v3- 前缀保留，
   CSS 变量已映射本站 token：--background→--bg · --hairline→--line ·
   --hairline-strong→--line2 · --text-muted→--dim · --text-primary→--text ·
   --text-faint→--faint）── */
.v3-side-hd{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--dim);padding-bottom:8px;border-bottom:1px solid var(--line);margin-bottom:6px}
.v3-side-link{display:block;font-size:var(--fs-xs);line-height:1.5;padding:6px 8px;border-left:1px solid transparent;color:var(--dim);transition:color .16s,border-color .16s}
.v3-side-link:hover{color:var(--text);border-left-color:var(--line2)}
.v3-side-link[data-active="true"]{color:var(--accent);border-left-color:var(--accent)}
/* 目录层级：缩进阶跃 + 左侧导轨竖线（h2 起），层级越深字号/字色递减 —— 主站同源 */
.v3-toc-link{position:relative;padding-left:8px;transition:color .16s,border-color .16s,padding-left .16s}
.v3-toc-link[data-lv="1"]{padding-left:8px;font-size:var(--fs-xs);color:var(--dim)}
.v3-toc-link[data-lv="2"]{padding-left:20px;font-size:var(--fs-xs)}
.v3-toc-link[data-lv="3"]{padding-left:30px;font-size:var(--fs-xs);color:var(--faint)}
.v3-toc-link[data-lv="4"]{padding-left:42px;font-size:var(--fs-xs);color:var(--faint)}
.v3-toc-link[data-lv="3"]::before,.v3-toc-link[data-lv="4"]::before{content:"";position:absolute;top:5px;bottom:5px;width:1px;background:var(--line)}
.v3-toc-link[data-lv="3"]::before{left:26px}
.v3-toc-link[data-lv="4"]::before{left:36px}
.v3-toc-link[data-lv="3"]:hover::before,.v3-toc-link[data-lv="4"]:hover::before{background:var(--line2)}
.v3-toc-link[data-active="true"]::before{background:var(--accent)}
.v3-toc-link[data-lv="3"][data-active="true"],.v3-toc-link[data-lv="4"][data-active="true"]{color:var(--accent)}
.v3-noscrollbar{scrollbar-width:none;-ms-overflow-style:none}
.v3-noscrollbar::-webkit-scrollbar{width:0;height:0;display:none}
/* 周报既有侧栏链接的 active 态（组件同步点亮） */
.wk-toc-link[data-active="true"]{color:var(--accent);border-left-color:var(--accent)}
.wk-toc-link[data-lv="3"][data-active="true"]::before,.wk-toc-link[data-lv="4"][data-active="true"]::before{background:var(--accent)}
/* FAB + 全高抽屉：<1280px 显示（桌面侧栏 / 周报 aside 的档位） */
.toc-fab{display:none;position:fixed;right:16px;bottom:16px;z-index:40}
.toc-fab button{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line2);border-radius:50%;background:var(--card);color:var(--dim);cursor:pointer;transition:color .16s,border-color .16s}
.toc-fab button:hover{color:var(--accent);border-color:var(--accent)}
.toc-drawer{position:fixed;inset:0;z-index:60}
.toc-drawer .toc-mask{position:absolute;inset:0;background:rgba(0,0,0,.6)}
.toc-drawer .toc-panel{position:absolute;right:0;top:0;height:100%;width:288px;max-width:86vw;border-left:1px solid var(--line);background:var(--bg);padding:24px;overflow-y:auto}
.toc-panel-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.toc-panel-hd .v3-side-hd{flex:1;margin:0}
.toc-close{border:0;background:transparent;color:var(--faint);cursor:pointer;padding:4px;display:flex}
.toc-close:hover{color:var(--text)}
.toc-nav{display:flex;flex-direction:column;gap:4px}
@media (max-width:1279px){.toc-fab{display:flex}}
@media (max-width:640px){.toc-fab{bottom:62px}}   /* 避让底部横排 .fab 工具排（mystation 同款抬升） */
/* 详情页桌面侧栏：fixed 右栏，右移 70px 避让竖排 .fab 工具排（右 16–58px） */
.p-toc{display:none;position:fixed;right:70px;top:80px;width:180px;max-height:calc(100vh - 104px);overflow-y:auto;padding-bottom:24px}
@media (min-width:1280px){.p-toc{display:block}}
/* ── 全站统计页（/statistics/，客户端聚合 + 纯 CSS 条形图）── */
.st-filter{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:20px 0 4px}
.st-filter select,.st-filter input{width:auto;padding:7px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs)}
.st-year{display:inline-flex;align-items:center;gap:6px}
.st-dash{color:var(--faint)}
.st-count{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint)}
.st-overview{margin:10px 0 0;font-size:var(--fs-xs);color:var(--dim)}
.st-empty{margin:26px 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint)}
.st-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
@media (max-width:860px){.st-grid{grid-template-columns:1fr}}
.st-card{border:1px solid var(--line);border-radius:8px;background:var(--card);padding:14px 16px 16px}
.st-card h3{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);font-weight:500;letter-spacing:.06em;color:var(--dim)}
.st-bars{display:flex;flex-direction:column;gap:7px;margin-top:12px}
.st-row{display:grid;grid-template-columns:minmax(84px,190px) 1fr 34px;gap:8px;align-items:center}
.st-k{font-size:var(--fs-xs);color:var(--dim);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-bar{position:relative;height:14px}
.st-bar i{position:absolute;left:0;top:2px;bottom:2px;min-width:2px;background:var(--accent);opacity:.8;border-radius:2px}
.st-n{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint);text-align:right}
.st-none{margin:4px 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint)}
/* 被浏览排行卡（Top 5）：独立于筛选网格 —— 浏览数是全量口径，不随筛选重算 */
.st-rankcard{margin:18px 0 0}
.st-ranks{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.st-rank{display:flex;align-items:baseline;gap:10px;font-size:var(--fs-xs);min-width:0}
.st-rank .rk{flex:none;min-width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line2);border-radius:4px;color:var(--dim);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs)}
.st-rank a{flex:1;min-width:0;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .16s}
.st-rank a:hover{color:var(--accent)}
.st-rank .n{flex:none;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint);font-variant-numeric:tabular-nums}
/* 词云：字号 ∝ 频次，flex 换行自然流式排布（不定位，避免重叠） */
.st-cloud{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline;min-height:60px;margin-top:12px}
.st-cloud .st-w{line-height:1.4;cursor:default;transition:color .16s,opacity .16s}
.st-cloud .st-w:hover{color:var(--accent);opacity:1!important}
/* 字号切换按钮（FAB 内）：A 字标，放大档点亮 */
.tbtn-fs{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:16px;font-weight:600}
.tbtn-fs.on{color:var(--accent);border-color:var(--accent)}
.wk-main{flex:1;min-width:0;max-width:760px;width:100%;margin:0 auto;padding:40px 20px}
.wk-h1{margin:0 0 20px}
.wk-tagsrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 20px}
.wk-tagsrow .dot{color:var(--faint)}
.wk-meta{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin:0 0 12px;padding-bottom:16px;border-bottom:1px solid var(--line);font-size:var(--fs-xs);color:var(--dim)}
.wk-meta span,.wk-meta a{display:inline-flex;align-items:center;gap:6px}
.wk-meta svg{width:16px;height:16px;flex:none}
.wk-dates{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin:0 0 40px;padding-bottom:16px;border-bottom:1px solid var(--line);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);color:var(--faint)}
/* 正文排版（blog-content 同源） */
.wk-content{font-size:var(--fs-base);color:var(--dim)}
.wk-content h2.md-h1{margin:40px 0 16px;padding-bottom:8px;border-bottom:1px solid var(--line2);font-size:var(--fs-h2);font-weight:700;line-height:1.35;color:var(--text);scroll-margin-top:80px}
.wk-content h3.md-h2{margin:32px 0 12px;font-size:var(--fs-h2);font-weight:600;line-height:1.4;color:var(--text);scroll-margin-top:80px}
.wk-content h4{margin:20px 0 8px;font-size:var(--fs-base);font-weight:600;color:var(--text)}
.wk-content p{margin:0 0 16px;line-height:1.75}
.wk-content strong{color:#85a4ff}
.wk-content em{font-style:italic}
.wk-content a{color:var(--accent);overflow-wrap:anywhere}
.wk-content a:hover{text-decoration:underline}
.wk-content .wk-img{margin:24px 0}
.wk-content .wk-img img{display:block;max-width:100%;height:auto;border:1px solid var(--line2);border-radius:8px}
.wk-content blockquote{margin:0 0 16px;padding-left:16px;border-left:4px solid var(--line2);font-style:italic;color:var(--faint)}
.wk-content hr{border:none;border-top:1px solid var(--line2);margin:32px 0}
/* 上一篇 / 下一篇（v3-prevnext 同源：双栏边框卡 + 虚线空位） */
.wk-prevnext{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:46px;padding-top:24px;border-top:1px solid var(--line2)}
.wk-pn{display:flex;flex-direction:column;gap:7px;min-width:0;padding:12px 14px;border:1px solid var(--line2);border-radius:6px;transition:border-color .16s,background-color .16s}
.wk-pn:hover{border-color:var(--accent);background:var(--accent-soft)}
.wk-pn-dir{display:inline-flex;align-items:center;gap:5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs);letter-spacing:.1em;color:var(--faint);transition:color .16s}
.wk-pn:hover .wk-pn-dir{color:var(--accent)}
.wk-pn-dir svg{width:12px;height:12px;flex:none;transition:transform .18s ease}
.wk-pn:hover .wk-pn-dir svg{transform:translateX(-2px)}
.wk-pn-to-next{text-align:right}
.wk-pn-to-next .wk-pn-dir{justify-content:flex-end}
.wk-pn:hover .wk-pn-to-next .wk-pn-dir svg{transform:translateX(2px)}
.wk-pn-ttl{font-size:var(--fs-sm);line-height:1.5;letter-spacing:-.008em;color:var(--text);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.wk-pn-empty{min-height:68px;border:1px dashed var(--line2);border-radius:6px}
@media (max-width:640px){
  .wk-col{padding:40px 16px 80px}
  .wk-shell{display:block}
  .wk-main{padding:32px 16px}
  .wk-prevnext{grid-template-columns:1fr}
}
