/* ==========================================================================
 * ENDFIELD THEME for cnblogs —— 明日方舟：终末地 风格博客主题
 * 版本   : 1.9.5
 * 前提   : 博客园已开通 JS 权限，并在「设置」中勾选「禁用模板默认CSS」
 * 用法   : 整段粘贴至 后台 → 设置 → 页面定制CSS代码
 * 结构   : [tokens] [base] [header] [layout] [sidebar] [post-list]
 *          [post-detail] [typography] [code] [table/quote] [comments]
 *          [pager/footer] [HUD组件] [动效] [light主题] [组件兼容] [responsive]
 * 1.9.1  : 按真实文章页 DOM（LessIsMore 模板 + blog-common 全局 CSS）补齐
 *          文章页底部：绿色通道按钮/作者卡/digg/上下篇/评论区新 Markdown
 *          编辑器（编辑·预览标签、工具条、提交按钮 #btn_comment_submit）/
 *          推荐链接区/编辑推荐卡/历史上的今天。blog-common.min.css 即使
 *          禁用模板 CSS 也会加载，相关组件需用更高优先级选择器覆盖。
 * 1.9.2  : ①页头兼容 LessIsMore 模板：其标题区无 h1/h2，为
 *          .title > a.headermaintitle + .subtitle，旧规则不命中导致标题
 *          退化为小号链接色；②digg 推荐/反对按钮的文字标签原本烧录在
 *          官方 upup.gif 背景图里，真实 DOM 只有数字——去背景图后文字
 *          丢失，改用 ::after 补回标签并修整 flex 间距（隐藏 .clear、
 *          清除 .buryit 官方 margin、.diggword 独占一行）。
 * 1.9.3  : ①表格 th 补主题底色（blog-common 默认 #fafafa 在黑夜下刺眼）；
 *          ②Mermaid 图深色主题适配（节点/文字/连线/箭头/边标签全量覆盖
 *          mermaid 内联的 #mermaid-ID 作用域样式）；③隐藏官方推广位
 *          （#cnblogs_ch 三条【推荐】推广链、#blog_c1 大图广告卡）与评论
 *          提交按钮旁的「退出」链接。
 *          注意：代码高亮需在后台「代码高亮」设置中启用（highlight.js
 *          引擎），本主题负责 token 配色，不自行做语法分析——v1.9.2 及
 *          之前的教程误写为「禁用默认代码高亮」，启用后代码才会着色。
 * 1.9.4  : 侧栏 HUD 面板补齐 LessIsMore 模板的 .sidebar_* 组件容器
 *          （日历/搜索/链接/标签/分类/排行/最新评论等）。旧规则仅覆盖
 *          默认模板的 .catList 与 #sidebar_news，新模板组件背景全透明。
 * 1.9.5  : 修正 1.9.4 的选择器错误——真实页面上这些组件容器是 id
 *          （<div id="sidebar_search"> 等）而非 class，.sidebar_* 选择器
 *          一条不命中。改为共享 class .sidebar-block + #calendar +
 *          #sidebar_categories（均已在真实 DOM 验证）。
 * ========================================================================== */

/* --------------------------------------------------------------------------
 * 1. Design Tokens —— 深色为默认主题，浅色由 html[data-ef-theme="light"] 切换
 * -------------------------------------------------------------------------- */
:root {
  color-scheme: dark;   /* 告知 UA 按深色方案绘制原生滚动条/表单控件（Firefox 及各引擎兜底） */
  /* 基础色板（终末地：工业深蓝黑 + 冷灰 + 警示琥珀 + 冷青） */
  --ef-bg:        #0a0d12;
  --ef-bg-2:      #0e1219;
  --ef-panel:     #111620;
  --ef-panel-2:   #151b27;
  --ef-line:      rgba(150, 180, 210, 0.14);
  --ef-line-strong: rgba(150, 180, 210, 0.30);

  --ef-text:      #d9e0ea;
  --ef-sub:       #94a3b6;
  --ef-dim:       #5f6e80;

  --ef-amber:     #f2df00;   /* 终末地荧光黄：主强调色（深底下文字级） */
  --ef-amber-hi:  #ffe92e;   /* 高亮荧光黄：色块/按钮/进度条专用 */
  --ef-amber-deep:#d9c800;
  --ef-cyan:      #58c6ff;   /* 冷青：次强调色 */
  --ef-red:       #ff5f56;   /* 危险/错误 */
  --ef-green:     #5dd39e;   /* 状态正常 */

  /* 字体 */
  --ef-font: "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;
  --ef-mono: "Cascadia Code", "JetBrains Mono", Consolas, "SF Mono", "Courier New", monospace;

  /* 版式 */
  --ef-content-width: 860px;
  --ef-gap: 14px;
  --ef-radius: 2px;
  --ef-shadow: 0 4px 24px rgba(0, 0, 0, 0.45);

  /* 动效速度 */
  --ef-fast: 0.16s;
  --ef-mid: 0.28s;
}

html[data-ef-theme="light"] {
  color-scheme: light;
  --ef-bg:        #edf0f4;
  --ef-bg-2:      #f4f6f9;
  --ef-panel:     #ffffff;
  --ef-panel-2:   #f7f9fc;
  --ef-line:      rgba(40, 60, 90, 0.16);
  --ef-line-strong: rgba(40, 60, 90, 0.34);

  --ef-text:      #27303c;
  --ef-sub:       #5a6675;
  --ef-dim:       #8a95a3;

  --ef-amber:     #8a7d00;   /* 浅色下文字级强调：压暗的橄榄黄，保 AA 对比度 */
  --ef-amber-hi:  #efe200;   /* 色块级荧光黄：仅作底色/粗线，配深色文字 */
  --ef-amber-deep:#6f6500;
  --ef-cyan:      #0f7ec2;
  --ef-red:       #d4392f;
  --ef-green:     #1e8a5e;

  --ef-shadow: 0 4px 20px rgba(30, 45, 70, 0.12);
}

/* --------------------------------------------------------------------------
 * 2. 基础重置与全局
 * -------------------------------------------------------------------------- */
* { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  background: var(--ef-bg);
  color: var(--ef-text);
  font-family: var(--ef-font);
  font-size: 15px;
  line-height: 1.75;
  transition: background-color var(--ef-mid) ease, color var(--ef-mid) ease;
  overflow-x: hidden;
}

body::before {          /* 顶部氛围光带 */
  content: "";
  position: fixed;
  inset: 0 0 auto 0;
  height: 3px;
  background: linear-gradient(90deg,
    var(--ef-amber-hi) 0%, var(--ef-amber) 30%, var(--ef-cyan) 70%, transparent 100%);
  z-index: 9990;
  pointer-events: none;
}

a { color: var(--ef-cyan); text-decoration: none; transition: color var(--ef-fast) ease; }
a:hover { color: var(--ef-amber); }

/* 正文链接：底线从左向右展开（background 实现，零布局抖动；
 * 同时让链接不再仅靠颜色区分，符合 WCAG 非颜色提示原则） */
#cnblogs_post_body p a, .postBody p a,
#cnblogs_post_body li a, .postBody li a,
#cnblogs_post_body blockquote a, .postBody blockquote a {
  background: linear-gradient(currentColor, currentColor) left bottom / 0% 1px no-repeat;
  padding-bottom: 1px;
  transition: color var(--ef-fast) ease, background-size var(--ef-mid) ease;
}
#cnblogs_post_body p a:hover, .postBody p a:hover,
#cnblogs_post_body li a:hover, .postBody li a:hover,
#cnblogs_post_body blockquote a:hover, .postBody blockquote a:hover {
  background-size: 100% 1px;
}

::selection { background: var(--ef-amber-hi); color: #10131a; }

img { max-width: 100%; height: auto; }

/* 滚动条 */
/* Firefox 及标准引擎：忽略 ::-webkit-scrollbar，只认这两个标准属性 */
* { scrollbar-width: thin; scrollbar-color: var(--ef-line-strong) var(--ef-bg-2); }
/* WebKit/Blink（Chrome/Edge/Safari） */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--ef-bg-2); }
::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, var(--ef-panel-2), var(--ef-line-strong));
  border: 2px solid var(--ef-bg-2);
  border-radius: 6px;
}
::-webkit-scrollbar-thumb:hover { background: var(--ef-amber-deep); }

/* --------------------------------------------------------------------------
 * 3. 页头：标题区 + 导航（粘性，毛玻璃）
 * -------------------------------------------------------------------------- */
#header {
  position: sticky;
  top: 0;
  z-index: 900;
  background: color-mix(in srgb, var(--ef-bg) 82%, transparent);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--ef-line);
}

#header #blogTitle {
  max-width: 1200px;
  margin: 0 auto;
  padding: 34px 20px 10px;
  position: relative;
}

#blogTitle h1 { margin: 0; font-size: 30px; letter-spacing: 2px; font-weight: 700; }
#blogTitle h1 a { color: var(--ef-text); }
#blogTitle h1 a::before {
  content: "//";
  color: var(--ef-amber);
  font-family: var(--ef-mono);
  margin-right: 10px;
  font-size: 26px;
}
#blogTitle h2 {
  margin: 6px 0 0;
  font-size: 13px;
  color: var(--ef-sub);
  font-family: var(--ef-mono);
  letter-spacing: 3px;
  text-transform: uppercase;
}

/* LessIsMore 等模板：标题区无 h1/h2，为 .title > a.headermaintitle + .subtitle */
#blogTitle .title { margin: 0; }
#blogTitle .title a.headermaintitle, #blogTitle .title a {
  color: var(--ef-text);
  font-size: 30px;
  letter-spacing: 2px;
  font-weight: 700;
  line-height: 1.4;
}
#blogTitle .title a::before {
  content: "//";
  color: var(--ef-amber);
  font-family: var(--ef-mono);
  margin-right: 10px;
  font-size: 26px;
}
#blogTitle .title a:hover { color: var(--ef-amber); }
#blogTitle .subtitle {
  margin: 6px 0 0;
  font-size: 13px;
  color: var(--ef-sub);
  font-family: var(--ef-mono);
  letter-spacing: 3px;
  text-transform: uppercase;
}
#blogTitle .subtitle:empty { display: none; }

/* 标题区右侧坐标装饰 */
#blogTitle::after {
  content: "GRID.0626 // OPERATOR STATION";
  position: absolute;
  right: 20px;
  bottom: 10px;
  font-family: var(--ef-mono);
  font-size: 11px;
  color: var(--ef-dim);
  letter-spacing: 2px;
}

/* 导航 */
#navigator {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 20px;
}
#navList {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  list-style: none;
  margin: 0;
  padding: 8px 0 12px;
}
#navList li a {
  display: inline-block;
  padding: 5px 14px;
  color: var(--ef-sub);
  font-size: 13px;
  font-family: var(--ef-mono);
  letter-spacing: 2px;
  text-transform: uppercase;
  border: 1px solid transparent;
  position: relative;
}
#navList li a:hover {
  color: var(--ef-amber);
  border-color: var(--ef-line-strong);
  background: var(--ef-panel);
}
#navList li a::before { content: "▸ "; color: var(--ef-amber); opacity: 0; margin-right: -8px; transition: all var(--ef-fast) ease; }
#navList li a:hover::before { opacity: 1; margin-right: 2px; }

.blogStats {
  display: none;  /* 自带统计条隐藏，信息移入侧边栏 */
}

/* --------------------------------------------------------------------------
 * 4. 主体布局
 * -------------------------------------------------------------------------- */
#main {
  max-width: 1200px;
  margin: 26px auto 60px;
  padding: 0 20px;
  display: flex;
  gap: 26px;
  align-items: flex-start;
}

#mainContent { flex: 1 1 auto; min-width: 0; }
#sideBar {
  flex: 0 0 280px;
  position: sticky;
  top: 96px;
  max-height: calc(100vh - 120px);
  overflow-y: auto;
  scrollbar-width: thin;
}

/* --------------------------------------------------------------------------
 * 5. 侧边栏：HUD 面板（四角括号装饰）
 *    默认模板组件容器为 .catList；LessIsMore 等新模板的组件容器是 id：
 *    搜索/链接/标签/排行/最新评论等共享 class .sidebar-block，日历为
 *    #calendar（无 class），分类归档为 #sidebar_categories（无 class，
 *    内含"随笔分类"+"随笔档案"两个标题区，合并为一个面板）。
 *    v1.9.4 曾误写成 .sidebar_* class 选择器（真实标签上那些是 id），
 *    一条都不命中；v1.9.5 按真实 DOM 修正。
 * -------------------------------------------------------------------------- */
#sideBar .catList, #sidebar_news,
#sideBar .sidebar-block,
#sideBar #calendar, #sideBar #sidebar_categories {
  position: relative;
  background: var(--ef-panel);
  border: 1px solid var(--ef-line);
  padding: 16px 18px 18px;
  margin-bottom: 20px;
  transition: border-color var(--ef-mid) ease, background-color var(--ef-mid) ease;
}

/* HUD 四角括号 */
#sideBar .catList::before, #sideBar .catList::after,
#sidebar_news::before, #sidebar_news::after,
#sideBar .sidebar-block::before, #sideBar .sidebar-block::after,
#sideBar #calendar::before, #sideBar #calendar::after,
#sideBar #sidebar_categories::before, #sideBar #sidebar_categories::after {
  content: "";
  position: absolute;
  width: 14px; height: 14px;
  pointer-events: none;
  transition: border-color var(--ef-mid) ease;
}
#sideBar .catList::before, #sidebar_news::before,
#sideBar .sidebar-block::before,
#sideBar #calendar::before, #sideBar #sidebar_categories::before {
  top: -1px; left: -1px;
  border-top: 2px solid var(--ef-amber-hi);
  border-left: 2px solid var(--ef-amber-hi);
}
#sideBar .catList::after, #sidebar_news::after,
#sideBar .sidebar-block::after,
#sideBar #calendar::after, #sideBar #sidebar_categories::after {
  bottom: -1px; right: -1px;
  border-bottom: 2px solid var(--ef-amber-hi);
  border-right: 2px solid var(--ef-amber-hi);
}
#sideBar .catList:hover, #sidebar_news:hover,
#sideBar .sidebar-block:hover,
#sideBar #calendar:hover, #sideBar #sidebar_categories:hover {
  border-color: var(--ef-line-strong);
}

/* #sidebar_categories 内部"随笔分类/随笔档案"两个标题区间距 */
#sideBar #sidebar_categories .catListPostArchive { margin-top: 18px; }

.catListTitle, #sidebar_news .newsItem > h3 {
  margin: 0 0 12px;
  font-size: 13px;
  font-family: var(--ef-mono);
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--ef-amber);
  border-bottom: 1px dashed var(--ef-line-strong);
  padding-bottom: 8px;
  padding-right: 56px;
  /* 警示斜纹：官方面板边缘的 chevron 装饰，置于标题右侧（装饰级用亮荧光黄） */
  background: repeating-linear-gradient(-45deg,
    var(--ef-amber-hi) 0 4px, transparent 4px 9px) right 2px bottom 7px / 42px 6px no-repeat;
}
.catListTitle::before { content: "[ "; color: var(--ef-dim); }
.catListTitle::after  { content: " ]"; color: var(--ef-dim); }

#sideBar ul { list-style: none; margin: 0; padding: 0; }
#sideBar ul li {
  padding: 6px 2px;
  border-bottom: 1px solid var(--ef-line);
  font-size: 13.5px;
}
#sideBar ul li:last-child { border-bottom: 0; }
#sideBar ul li a { color: var(--ef-sub); display: block; transition: all var(--ef-fast) ease; }
#sideBar ul li a:hover { color: var(--ef-amber); transform: translateX(3px); }

#blog-news { font-size: 13.5px; color: var(--ef-sub); }

/* --------------------------------------------------------------------------
 * 6. 首页文章列表
 * -------------------------------------------------------------------------- */
.day {
  position: relative;
  background: var(--ef-panel);
  border: 1px solid var(--ef-line);
  padding: 22px 26px;
  margin-bottom: 26px;
  transition: border-color var(--ef-mid) ease, transform var(--ef-mid) ease;
}
.day:hover { border-color: var(--ef-line-strong); transform: translateY(-2px); }

.dayTitle {
  font-family: var(--ef-mono);
  font-size: 12px;
  color: var(--ef-cyan);
  letter-spacing: 2px;
  margin: 0 0 10px;
}
.dayTitle::before { content: "▚ "; color: var(--ef-amber); }

.postTitle, .entrylistPosttitle {
  font-size: 20px;
  font-weight: 700;
  margin: 14px 0 8px;
  line-height: 1.5;
}
.postTitle a, .entrylistPosttitle a { color: var(--ef-text); }
.postTitle a::before, .entrylistPosttitle a::before {
  content: "// ";
  color: var(--ef-amber-hi);
  font-family: var(--ef-mono);
  font-weight: 400;
}
.postTitle a:hover, .entrylistPosttitle a:hover { color: var(--ef-amber); }

.c_b_p_desc {
  color: var(--ef-sub);
  font-size: 14px;
  line-height: 1.85;
  margin: 8px 0;
}
.c_b_p_desc a.c_b_p_desc_readmore {
  font-family: var(--ef-mono);
  font-size: 12px;
  letter-spacing: 1px;
  border: 1px solid var(--ef-line-strong);
  padding: 2px 10px;
  margin-left: 6px;
  white-space: nowrap;
}
.c_b_p_desc a.c_b_p_desc_readmore:hover { border-color: var(--ef-amber); background: var(--ef-panel-2); }

.postDesc, .entrylistItemPostDesc {
  font-family: var(--ef-mono);
  font-size: 12px;
  color: var(--ef-dim);
  letter-spacing: 1px;
  border-top: 1px solid var(--ef-line);
  padding-top: 10px;
  margin-top: 12px;
}
.postDesc a { color: var(--ef-dim); }
.postDesc a:hover { color: var(--ef-amber); }

.postSeparator { height: 1px; background: var(--ef-line); margin: 22px 0; border: 0; }

/* 文章列表页（文章 Tab）单项卡片化，与首页 .day 一致 */
.entrylistItem {
  position: relative;
  background: var(--ef-panel);
  border: 1px solid var(--ef-line);
  padding: 22px 26px;
  margin-bottom: 26px;
  transition: border-color var(--ef-mid) ease, transform var(--ef-mid) ease;
}
.entrylistItem:hover { border-color: var(--ef-line-strong); transform: translateY(-2px); }

/* --------------------------------------------------------------------------
 * 6.1 列表缩略图卡片（JS 提取摘要首图后加 ef-has-thumb，构成左图右文）
 * -------------------------------------------------------------------------- */
.day.ef-has-thumb, .entrylistItem.ef-has-thumb { display: flex; gap: 22px; }

.ef-thumb {
  position: relative;
  flex: 0 0 216px;
  width: 216px;
  min-height: 136px;
  overflow: hidden;
  background: var(--ef-panel-2);
  border: 1px solid var(--ef-line-strong);
  /* 对角切角：呼应 HUD 切角语言 */
  clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 14px 100%, 0 calc(100% - 14px));
}
.ef-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform var(--ef-mid) ease, filter var(--ef-mid) ease;
}
/* 缩略图取景角标 */
.ef-thumb::before, .ef-thumb::after {
  content: "";
  position: absolute;
  z-index: 2;
  width: 12px;
  height: 12px;
  pointer-events: none;
}
.ef-thumb::before { top: 5px; left: 5px; border-top: 2px solid var(--ef-amber-hi); border-left: 2px solid var(--ef-amber-hi); }
.ef-thumb::after  { bottom: 5px; right: 5px; border-bottom: 2px solid var(--ef-amber-hi); border-right: 2px solid var(--ef-amber-hi); }

/* 悬停：图片轻微推近 + 一道扫描光掠 */
.day:hover .ef-thumb img, .entrylistItem:hover .ef-thumb img { transform: scale(1.045); filter: saturate(1.12); }
.ef-thumb-scan {
  position: absolute;
  left: 0; right: 0; top: -20%;
  height: 20%;
  background: linear-gradient(180deg, transparent, rgba(242, 223, 0, 0.30), transparent);
  opacity: 0;
  pointer-events: none;
}
.day:hover .ef-thumb-scan, .entrylistItem:hover .ef-thumb-scan { animation: efThumbScan 0.9s linear; }
@keyframes efThumbScan {
  0%   { top: -20%; opacity: 1; }
  100% { top: 110%; opacity: 1; }
}

.ef-list-body { flex: 1; min-width: 0; }

/* JS 关闭或首图提取前的兜底：摘要内嵌图不超宽 */
.c_b_p_desc img, .entrylistPostSummary img { max-width: 100%; height: auto; }

/* 窄屏：缩略图转为顶部横幅，保持阅读动线 */
@media (max-width: 860px) {
  .day.ef-has-thumb, .entrylistItem.ef-has-thumb { flex-direction: column; }
  .ef-thumb { flex: none; width: 100%; height: 170px; }
}

/* --------------------------------------------------------------------------
 * 7. 文章详情页 —— 阅读体验优先区
 * -------------------------------------------------------------------------- */
#topics, .entrylist {
  position: relative;
  background: var(--ef-panel);
  border: 1px solid var(--ef-line);
  padding: 34px 40px 30px;
  margin-bottom: 30px;
}
/* 详情页四角括号（与侧边栏一致，形成 HUD 语言） */
#topics::before, #topics::after {
  content: ""; position: absolute; width: 18px; height: 18px; pointer-events: none;
}
#topics::before { top: -1px; left: -1px; border-top: 2px solid var(--ef-amber-hi); border-left: 2px solid var(--ef-amber-hi); }
#topics::after  { bottom: -1px; right: -1px; border-bottom: 2px solid var(--ef-amber-hi); border-right: 2px solid var(--ef-amber-hi); }

#topics .postTitle, .entrylist .entrylistPosttitle { font-size: 26px; }

/* 文章大标题下划条：荧光黄短线 + 细长线（参照官方角色页姓名分隔线） */
#topics .postTitle {
  padding-bottom: 12px;
  background: linear-gradient(90deg,
    var(--ef-amber-hi) 0 64px, var(--ef-line-strong) 64px 100%) left bottom / 100% 2px no-repeat;
}

#topics .postDesc { border-top: none; padding-top: 0; margin: 0 0 6px; }

/* 文章元信息条（分类/标签） */
#BlogPostCategory, #EntryTag {
  font-family: var(--ef-mono);
  font-size: 12px;
  color: var(--ef-dim);
  margin: 4px 0;
  letter-spacing: 1px;
}
#BlogPostCategory a, #EntryTag a {
  color: var(--ef-cyan);
  border: 1px solid var(--ef-line);
  padding: 1px 8px;
  margin: 0 2px;
}
#BlogPostCategory a:hover, #EntryTag a:hover { color: var(--ef-amber); border-color: var(--ef-amber); }

/* 正文（可读性核心：字号、行距、宽度全部服务阅读） */
#cnblogs_post_body, .postBody, .entrylistPostSummary {
  font-size: 16px;
  line-height: 1.9;
  color: var(--ef-text);
  word-break: break-word;
}
#cnblogs_post_body p, .postBody p { margin: 0 0 1.1em; }

/* 正文标题装饰：h2 双斜杠 + 横线；h3 方块标记 */
#cnblogs_post_body h2, .postBody h2 {
  font-size: 21px;
  margin: 1.9em 0 0.9em;
  padding-left: 12px;
  border-left: 4px solid var(--ef-amber-hi);
  letter-spacing: 1px;
  position: relative;
}
#cnblogs_post_body h2::after, .postBody h2::after {
  content: "";
  position: absolute;
  left: 0; bottom: -6px;
  width: 100%; height: 1px;
  background: linear-gradient(90deg, var(--ef-line-strong), transparent);
}
#cnblogs_post_body h3, .postBody h3 {
  font-size: 18px;
  margin: 1.5em 0 0.7em;
}
#cnblogs_post_body h3::before, .postBody h3::before {
  content: "■ ";
  color: var(--ef-cyan);
  font-size: 12px;
  vertical-align: 2px;
  margin-right: 6px;
}
#cnblogs_post_body h4, .postBody h4 {
  font-size: 16px;
  color: var(--ef-sub);
  margin: 1.2em 0 0.6em;
}
#cnblogs_post_body h4::before, .postBody h4::before { content: "› "; color: var(--ef-amber); }

/* --------------------------------------------------------------------------
 * 8. 代码块（高可读性：等宽、行距、左侧琥珀条）
 * -------------------------------------------------------------------------- */
#cnblogs_post_body pre, .postBody pre,
.cnblogs_code, .code-highlight pre {
  background: #0c1016 !important;
  border: 1px solid var(--ef-line-strong) !important;
  border-left: 3px solid var(--ef-amber-hi) !important;
  color: #d4dde9 !important;
  font-family: var(--ef-mono) !important;
  font-size: 14px !important;
  line-height: 1.75 !important;
  padding: 16px 18px !important;
  overflow: auto;
  border-radius: var(--ef-radius);
  margin: 1.2em 0;
  tab-size: 4;
}
html[data-ef-theme="light"] #cnblogs_post_body pre,
html[data-ef-theme="light"] .postBody pre,
html[data-ef-theme="light"] .cnblogs_code {
  background: #14181f !important;   /* 浅色模式下代码区保持深底：对比更强、代码更易读 */
  color: #d4dde9 !important;
}

.cnblogs_code pre { border: 0 !important; padding: 0 !important; margin: 0 !important; background: transparent !important; }
.cnblogs_code textarea, .cnblogs_code .code_img_closed, .cnblogs_code .code_img_opened,
.cnblogs_code .code-collapsed, .cnblogs_code .code-collapsed-btn { display: none !important; }
.cnblogs_code pre { white-space: pre-wrap !important; }

/* 行内代码 */
#cnblogs_post_body code, .postBody code, .commentform code {
  font-family: var(--ef-mono) !important;
  font-size: 0.88em;
  background: color-mix(in srgb, var(--ef-amber) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--ef-amber) 30%, transparent);
  color: var(--ef-amber);
  padding: 1px 6px;
  border-radius: 2px;
}
#cnblogs_post_body pre code, .postBody pre code, .cnblogs_code code {
  background: transparent !important;
  border: 0 !important;
  color: inherit !important;
  padding: 0 !important;
  font-size: inherit !important;
}

/* 高亮 token 配色：prettify（.kwd/.str/.com/.typ/.lit/.pun/.tag/.atn/.atv/.dec）
 * 与 highlight.js（.hljs-*）双引擎全覆盖，同一套调色板 */
.kw, .kwd, .tag,
.hljs-keyword, .hljs-selector-tag, .hljs-meta { color: #ff9d5c !important; }                 /* 关键字：橙 */
.str, .atv, .dec,
.hljs-string, .hljs-regexp, .hljs-addition, .hljs-template-string { color: #9be59b !important; } /* 字符串：青绿 */
.com, .hljs-comment, .hljs-quote { color: #5d6b7d !important; font-style: italic; }         /* 注释：灰蓝 */
.typ, .var, .fun,
.hljs-type, .hljs-title, .hljs-built_in, .hljs-class, .hljs-function .hljs-name,
.hljs-selector-class, .hljs-selector-id { color: #58c6ff !important; }                       /* 类型/函数：冷青 */
.lit, .num,
.hljs-number, .hljs-literal, .hljs-symbol, .hljs-bullet { color: #ffd479 !important; }       /* 数字/字面量：暖黄 */
.atn, .hljs-attr, .hljs-attribute, .hljs-name, .hljs-variable,
.hljs-template-variable, .hljs-selector-attr, .hljs-doctag { color: #c9a7f5 !important; }    /* 属性/变量：雾紫 */
.pun, .pln, .hljs-punctuation, .hljs-operator { color: #d4dde9 !important; }                 /* 标点/正文：浅灰 */
.hljs-deletion { color: #ff7a7a !important; }
.hljs-emphasis { font-style: italic; }
.hljs-strong { font-weight: 700; }

/* --------------------------------------------------------------------------
 * 8.1 代码块终端工具条（JS 注入 .ef-codeblock 包裹层后启用）
 * -------------------------------------------------------------------------- */
.ef-codeblock {
  margin: 1.2em 0;
  border: 1px solid var(--ef-line-strong);
  border-left: 3px solid var(--ef-amber-hi);
  border-radius: var(--ef-radius);
  overflow: hidden;
  background: #0c1016;
}
html[data-ef-theme="light"] .ef-codeblock { background: #14181f; }
/* 包裹层接管边框后，内层 pre 退化为纯内容区（兼容两套高亮引擎的嵌套结构） */
.ef-codeblock pre, .ef-codeblock .cnblogs_code {
  margin: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
}
.ef-codeblock .cnblogs_code { box-shadow: none !important; }
.ef-code-head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px 12px;
  background: color-mix(in srgb, #0c1016 60%, #1c2634);
  border-bottom: 1px solid rgba(120, 140, 165, 0.22);
  font-family: var(--ef-mono);
  user-select: none;
}
/* 终端三灯：沿用调色板，纯装饰 */
.ef-code-head::before {
  content: "";
  width: 34px; height: 8px;
  background:
    radial-gradient(circle 4px at 4px 4px, var(--ef-amber-hi) 96%, transparent),
    radial-gradient(circle 4px at 17px 4px, var(--ef-cyan) 96%, transparent),
    radial-gradient(circle 4px at 30px 4px, rgba(120, 140, 165, 0.55) 96%, transparent);
  background-repeat: no-repeat;
  flex: none;
}
.ef-code-lang {
  font-size: 11px;
  letter-spacing: 2px;
  color: #8fa3bd;
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ef-code-copy {
  flex: none;
  font-family: var(--ef-mono);
  font-size: 11px;
  letter-spacing: 1.5px;
  color: #d4dde9;
  background: transparent;
  border: 1px solid rgba(120, 140, 165, 0.45);
  padding: 2px 10px;
  cursor: pointer;
  transition: color var(--ef-fast) ease, border-color var(--ef-fast) ease, background var(--ef-fast) ease;
}
.ef-code-copy:hover { color: #10131a; background: var(--ef-amber-hi); border-color: var(--ef-amber-hi); }
.ef-code-copy:focus-visible { outline: 2px solid var(--ef-cyan); outline-offset: 1px; }
.ef-code-copy.ef-copied { color: #10131a; background: var(--ef-cyan); border-color: var(--ef-cyan); }

/* --------------------------------------------------------------------------
 * 9. 表格 / 引用块 / 列表
 * -------------------------------------------------------------------------- */
#cnblogs_post_body table, .postBody table {
  width: 100%;
  border-collapse: collapse;
  margin: 1.3em 0;
  font-size: 14.5px;
  display: block;
  overflow-x: auto;
}
#cnblogs_post_body th, .postBody th {
  font-family: var(--ef-mono);
  font-size: 12.5px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--ef-amber);
  background: var(--ef-panel-2);   /* 覆盖 blog-common 的 #fafafa，黑夜下刺眼 */
  border-bottom: 2px solid var(--ef-amber-hi);
  padding: 9px 12px;
  text-align: left;
  white-space: nowrap;
}
#cnblogs_post_body td, .postBody td {
  border-bottom: 1px solid var(--ef-line);
  padding: 9px 12px;
  color: var(--ef-text);
}
#cnblogs_post_body tr:hover td, .postBody tr:hover td { background: var(--ef-panel-2); }

#cnblogs_post_body blockquote, .postBody blockquote {
  position: relative;
  margin: 1.3em 0;
  padding: 14px 18px 14px 44px;
  background: var(--ef-panel-2);
  border: 1px solid var(--ef-line);
  border-left: 3px solid var(--ef-cyan);
  color: var(--ef-sub);
  font-size: 15px;
}
#cnblogs_post_body blockquote::before, .postBody blockquote::before {
  content: "//";
  position: absolute;
  left: 16px; top: 12px;
  font-family: var(--ef-mono);
  font-weight: 700;
  color: var(--ef-cyan);
}

#cnblogs_post_body ul, #cnblogs_post_body ol, .postBody ul, .postBody ol {
  padding-left: 1.6em;
  margin: 0 0 1.1em;
}
#cnblogs_post_body ul li, .postBody ul li { margin: 0.35em 0; }
#cnblogs_post_body ul li::marker, .postBody ul li::marker { color: var(--ef-amber); }

/* --------------------------------------------------------------------------
 * 9.1 Mermaid 图（博客园 mermaidRender 渲染为 .mermaid > svg）
 *     mermaid 默认配色是浅底深字（节点 #ECECFF、文字/连线 #333），
 *     且内联 <style> 以 #mermaid-ID 作用域书写；以下用
 *     #cnblogs_post_body 提权覆盖，仅在深色主题下生效（浅色下默认配色可读）。
 * -------------------------------------------------------------------------- */
#cnblogs_post_body .mermaid, .postBody .mermaid {
  background: var(--ef-panel-2);
  border: 1px solid var(--ef-line);
  padding: 16px;
  margin: 1.2em 0;
  overflow-x: auto;
  text-align: center;
}

html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid svg,
html:not([data-ef-theme="light"]) .postBody .mermaid svg { fill: var(--ef-text); }
/* 节点 */
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .node rect,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .node circle,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .node ellipse,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .node polygon,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .node path {
  fill: var(--ef-panel);
  stroke: var(--ef-cyan);
}
/* 子图（cluster） */
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .cluster rect {
  fill: var(--ef-bg-2);
  stroke: var(--ef-line-strong);
}
/* 全部文字（节点标签/子图标签/标题） */
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .label,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .label text,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid span,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .cluster text,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .cluster span,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .cluster-label text,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .cluster-label span,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .flowchartTitleText {
  fill: var(--ef-text);
  color: var(--ef-text);
}
/* 连线与箭头 */
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .edgePath .path,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .flowchart-link {
  stroke: var(--ef-sub);
}
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .marker,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .marker.cross {
  fill: var(--ef-sub);
  stroke: var(--ef-sub);
}
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .arrowheadPath { fill: var(--ef-sub); }
/* 边标签（连线上的注记） */
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .edgeLabel,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .edgeLabel p {
  background-color: transparent;
  color: var(--ef-amber);
}
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .edgeLabel rect {
  fill: var(--ef-bg-2);
  background-color: var(--ef-bg-2);
  opacity: 0.9;
}
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .edgeLabel text,
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .edgeLabel span {
  fill: var(--ef-amber);
  color: var(--ef-amber);
}
html:not([data-ef-theme="light"]) #cnblogs_post_body .mermaid .labelBkg { background-color: transparent; }

/* --------------------------------------------------------------------------
 * 10. 评论与分页
 * -------------------------------------------------------------------------- */
#blog-comments-placeholder, #comment_form {
  position: relative;
  background: var(--ef-panel);
  border: 1px solid var(--ef-line);
  padding: 22px 26px;
  margin-bottom: 26px;
}

.feedback_area_title, .commentform .feedback_area_title {
  font-family: var(--ef-mono);
  font-size: 13px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--ef-amber);
  border-bottom: 1px dashed var(--ef-line-strong);
  padding-bottom: 8px;
  margin-bottom: 14px;
}

.feedbackItem {
  border: 1px solid var(--ef-line);
  background: var(--ef-panel-2);
  padding: 14px 16px;
  margin-bottom: 14px;
}
.feedbackListSubtitle { font-family: var(--ef-mono); font-size: 12px; color: var(--ef-dim); }
.feedbackListSubtitle a.layer { color: var(--ef-amber); }
.feedbackCon, .blog_comment_body { font-size: 14.5px; color: var(--ef-text); margin-top: 8px; line-height: 1.8; }
.blog_comment_body a { color: var(--ef-cyan); }
.blog_comment_body a:hover { color: var(--ef-amber); }

/* 评论内引用块（回复引用上文） */
.bq_post_comment {
  margin: 8px 0;
  padding: 10px 14px;
  background: var(--ef-bg-2);
  border: 1px solid var(--ef-line);
  border-left: 3px solid var(--ef-cyan);
  color: var(--ef-sub);
  font-size: 13.5px;
}

/* 评论条目操作行：支持/反对/回复/引用 */
.comment_vote, .comment_actions { font-family: var(--ef-mono); font-size: 12px; margin-top: 8px; }
.comment_vote a, .comment_actions a { color: var(--ef-dim); }
.comment_vote a:hover, .comment_actions a:hover { color: var(--ef-amber); }

/* 评论分页与排序标签 */
.comment_pager { font-family: var(--ef-mono); font-size: 12.5px; margin: 12px 0; }
.comment_pager a { color: var(--ef-sub); padding: 2px 8px; border: 1px solid var(--ef-line); margin-right: 4px; }
.comment_pager a:hover { color: var(--ef-amber); border-color: var(--ef-amber); }
.comment_pager_current { color: var(--ef-amber); padding: 2px 8px; border: 1px solid var(--ef-amber); margin-right: 4px; }
.comment-order-tab, .comment-sort { font-family: var(--ef-mono); font-size: 12px; color: var(--ef-dim); }
.comment-order-tab .active, .comment-sort-item:hover { color: var(--ef-amber); }
.comment-sort svg { fill: var(--ef-dim); }   /* 排序下拉箭头图标跟随主题 */
.comment-sort svg:hover { fill: var(--ef-amber); }

/* 10.1 评论区导航条（刷新评论/刷新页面/返回顶部） */
#comment_nav { font-family: var(--ef-mono); font-size: 12px; letter-spacing: 1px; }
#comment_nav a { color: var(--ef-dim); }
#comment_nav a:hover { color: var(--ef-amber); }

/* 10.2 新版 Markdown 评论编辑器（登录后由 JS 注入 #comment_form_container） */
#commentform_title {
  background-image: none;           /* 去掉默认 icon_addcomment.gif */
  padding-left: 0;
  font-family: var(--ef-mono);
  font-size: 13px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--ef-amber);
  border-bottom: 1px dashed var(--ef-line-strong);
  padding-bottom: 8px;
  margin-bottom: 14px;
}
#commentform_title::before { content: "[ "; color: var(--ef-dim); }
#commentform_title::after { content: " ]"; color: var(--ef-dim); }
#commentform_title a { font-family: var(--ef-font); font-size: 12px; letter-spacing: 0; text-transform: none; color: var(--ef-dim); margin-left: 10px; }
#commentform_title a:hover { color: var(--ef-amber); }

/* 未登录提示条 */
.login_tips {
  background-image: none;
  padding-left: 0;
  color: var(--ef-sub);
  font-size: 13.5px;
}

/* 编辑器标签页（编辑/预览）与工具条 */
.commentbox_title { border-bottom: 1px solid var(--ef-line); }
.commentbox_tab {
  font-family: var(--ef-mono);
  font-size: 12.5px;
  letter-spacing: 2px;
  color: var(--ef-dim);
}
.commentbox_tab:hover, .commentbox_tab.active {
  border-bottom: 2px solid var(--ef-amber-hi);
  color: var(--ef-text);
}
.commentbox_title_right { color: var(--ef-sub); }
.commentbox_title_right a, .comment_option { color: var(--ef-sub); }
.commentbox_title_right a:hover, .comment_option:hover { color: var(--ef-amber); }
/* 工具条 SVG 图标跟随主题（默认深灰在暗底不可见） */
.comment_svg { fill: var(--ef-sub); }
.comment_svg:hover { fill: var(--ef-amber); }
.comment_svg_stroke { stroke: var(--ef-sub); }
.comment_svg_stroke:hover { stroke: var(--ef-amber); }

.commentbox_footer { border-top: 1px solid var(--ef-line); color: var(--ef-dim); font-size: 12px; }
.commentbox_footer a { color: var(--ef-dim); }
.commentbox_footer a:hover { color: var(--ef-amber); }

.commentform textarea, .commentform input[type="text"],
.comment_textarea, #comment_form_container textarea {
  width: 100%;
  background: var(--ef-bg-2);
  border: 1px solid var(--ef-line-strong);
  color: var(--ef-text);
  font-family: var(--ef-font);
  font-size: 14px;
  padding: 10px 12px;
  outline: none;
  border-radius: var(--ef-radius);
  transition: border-color var(--ef-fast) ease;
}
.commentform textarea:focus, .commentform input[type="text"]:focus,
.comment_textarea:focus, #comment_form_container textarea:focus {
  border-color: var(--ef-amber);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--ef-amber) 22%, transparent);
}
.comment_textarea::placeholder, #comment_form_container textarea::placeholder { color: var(--ef-dim); }

/* 预览面板（预览标签切换后显示） */
#tbCommentBodyPreview {
  margin-left: 0;
  background: var(--ef-bg-2);
  border: 1px solid var(--ef-line-strong);
  padding: 10px 14px;
  color: var(--ef-text);
  font-size: 14px;
  line-height: 1.8;
}
#tbCommentBodyPreviewBody pre { background: #0c1016; color: #d4dde9; padding: 12px; border-left: 3px solid var(--ef-amber-hi); overflow: auto; }
.comment_preview { color: var(--ef-sub); }

/* 提交/退出按钮区：真实按钮 id 为 btn_comment_submit（非 comment_submit） */
.commentform .comment_btn, #comment_submit, #btn_comment_submit {
  background: var(--ef-amber-hi) !important;
  color: #10131a !important;
  border: 0 !important;
  font-family: var(--ef-mono);
  font-weight: 700;
  letter-spacing: 2px;
  font-size: 13px;
  width: auto;
  height: auto;
  line-height: 1.6;
  padding: 9px 26px;
  cursor: pointer;
  clip-path: polygon(8px 0, 100% 0, 100% calc(100% - 8px), calc(100% - 8px) 100%, 0 100%, 0 8px);
  transition: filter var(--ef-fast) ease;
}
.commentform .comment_btn:hover, #comment_submit:hover, #btn_comment_submit:hover { filter: brightness(1.15); }
#commentbox_opt, .comment_option_bar { font-family: var(--ef-mono); font-size: 12px; color: var(--ef-dim); margin-top: 10px; }
#commentbox_opt a { color: var(--ef-dim); margin-left: 10px; }
#commentbox_opt a:hover { color: var(--ef-amber); }
/* 提交评论旁的「退出」是账号登出入口，误触代价高且与评论动作无关，隐藏 */
#commentbox_opt a[onclick*="logout"], #commentbox_opt a[href*="signout"] { display: none; }
#tip_comment, #tip_comment2 { color: var(--ef-cyan); font-family: var(--ef-mono); font-size: 12px; }

.pager, .topicListFooter {
  text-align: center;
  font-family: var(--ef-mono);
  margin: 30px 0;
}
.pager a {
  display: inline-block;
  color: var(--ef-sub);
  border: 1px solid var(--ef-line-strong);
  padding: 4px 12px;
  margin: 0 4px;
  font-size: 13px;
}
.pager a:hover { color: var(--ef-amber); border-color: var(--ef-amber); }

/* --------------------------------------------------------------------------
 * 11. 页脚
 * -------------------------------------------------------------------------- */
#footer {
  border-top: 1px solid var(--ef-line);
  background: var(--ef-bg-2);
  text-align: center;
  font-family: var(--ef-mono);
  font-size: 12px;
  color: var(--ef-dim);
  letter-spacing: 2px;
  padding: 22px 16px;
}
#footer a { color: var(--ef-sub); }
#footer::before { content: "— END OF TRANSMISSION —"; display: block; color: var(--ef-line-strong); margin-bottom: 8px; letter-spacing: 4px; }

/* ==========================================================================
 * 12. HUD 组件（由 endfield.js 注入到 body 的元素）
 * ========================================================================== */

/* 12.1 动态背景画布 */
#ef-canvas {
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
}

/* 12.2 扫描线覆盖层（极低透明度，不干扰阅读） */
#ef-scan {
  position: fixed;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background: repeating-linear-gradient(
    0deg,
    rgba(255, 255, 255, 0.02) 0px,
    rgba(255, 255, 255, 0.02) 1px,
    transparent 1px,
    transparent 4px
  );
  opacity: 0.5;
}
html[data-ef-theme="light"] #ef-scan { display: none; }

/* 12.3 顶部阅读进度条（scaleX 驱动：滚动期零重排，纯合成器变换） */
#ef-progress {
  position: fixed;
  top: 0; left: 0;
  height: 3px;
  width: 100%;
  transform: scaleX(0);
  transform-origin: 0 50%;
  z-index: 9995;
  background: linear-gradient(90deg, var(--ef-cyan), var(--ef-amber-hi));
  box-shadow: 0 0 8px var(--ef-amber);
  transition: transform 0.08s linear;
  will-change: transform;
}

/* 12.4 主题切换按钮（右上角悬浮） */
#ef-toggle {
  position: fixed;
  top: 64px;
  right: 18px;
  z-index: 9980;
  display: flex;
  align-items: center;
  gap: 8px;
  background: color-mix(in srgb, var(--ef-panel) 88%, transparent);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  border: 1px solid var(--ef-line-strong);
  color: var(--ef-text);
  font-family: var(--ef-mono);
  font-size: 12px;
  letter-spacing: 2px;
  padding: 8px 14px;
  cursor: pointer;
  clip-path: polygon(10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%, 0 10px);
  transition: border-color var(--ef-fast) ease, color var(--ef-fast) ease;
}
#ef-toggle:hover { border-color: var(--ef-amber); color: var(--ef-amber); }
#ef-toggle .ef-toggle-icon { color: var(--ef-amber); font-size: 14px; }

/* 12.5 返回顶部 */
#ef-backtop {
  position: fixed;
  right: 18px;
  bottom: 22px;
  z-index: 9980;
  width: 42px;
  height: 42px;
  background: color-mix(in srgb, var(--ef-panel) 88%, transparent);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  border: 1px solid var(--ef-line-strong);
  color: var(--ef-amber);
  font-family: var(--ef-mono);
  font-size: 11px;
  letter-spacing: 1px;
  cursor: pointer;
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  clip-path: polygon(8px 0, 100% 0, 100% calc(100% - 8px), calc(100% - 8px) 100%, 0 100%, 0 8px);
  transition: border-color var(--ef-fast) ease;
}
#ef-backtop:hover { border-color: var(--ef-amber); }
#ef-backtop.ef-show { display: flex; }

/* 12.6 左下角 HUD 状态读数 */
#ef-status {
  position: fixed;
  left: 16px;
  bottom: 16px;
  z-index: 9980;
  font-family: var(--ef-mono);
  font-size: 11px;
  letter-spacing: 1px;
  color: var(--ef-dim);
  background: color-mix(in srgb, var(--ef-panel) 70%, transparent);
  border: 1px solid var(--ef-line);
  padding: 4px 10px;
  pointer-events: none;
}
#ef-status b { color: var(--ef-amber); font-weight: 400; }

/* 12.7 战术准星特效：四角取景框 + 中心十字 + 目标锁定 + 拖尾 */
.ef-reticle {
  position: fixed;
  left: 0; top: 0;
  z-index: 9999;
  pointer-events: none;
  transition: opacity var(--ef-fast) ease;
}
.ef-b {
  position: absolute;
  left: 0; top: 0;
  width: 9px; height: 9px;
  border: 0 solid var(--ef-cyan);
  transition: border-color var(--ef-fast) ease;
  will-change: transform;
}
.ef-b-tl { border-top-width: 2px; border-left-width: 2px; }
.ef-b-tr { border-top-width: 2px; border-right-width: 2px; }
.ef-b-bl { border-bottom-width: 2px; border-left-width: 2px; }
.ef-b-br { border-bottom-width: 2px; border-right-width: 2px; }
.ef-reticle.ef-lock .ef-b { border-color: var(--ef-amber-hi); }

.ef-cross { position: absolute; left: 0; top: 0; background: var(--ef-dim); will-change: transform; }
.ef-cross-h { width: 5px; height: 1px; }
.ef-cross-v { width: 1px; height: 5px; }

.ef-tag {
  position: absolute;
  left: 0; top: 0;
  font-family: var(--ef-mono);
  font-size: 9px;
  letter-spacing: 1px;
  color: var(--ef-amber);
  opacity: 0;
  white-space: nowrap;
  transition: opacity var(--ef-fast) ease;
  will-change: transform;
}
.ef-reticle.ef-lock .ef-tag { opacity: 0.9; }

.ef-trail-dot {
  position: fixed;
  left: 0; top: 0;
  width: 3px; height: 3px;
  background: var(--ef-cyan);
  z-index: 9998;
  pointer-events: none;
  will-change: transform;
}

@media (hover: none), (pointer: coarse) {
  .ef-reticle, .ef-trail-dot { display: none !important; }
}

/* 12.8 主题切换 Toast */
#ef-toast {
  position: fixed;
  left: 50%;
  bottom: 46px;
  transform: translateX(-50%) translateY(16px);
  z-index: 9999;
  font-family: var(--ef-mono);
  font-size: 12.5px;
  letter-spacing: 3px;
  color: #10131a;
  background: var(--ef-amber-hi);
  padding: 8px 22px;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--ef-mid) ease, transform var(--ef-mid) ease;
  clip-path: polygon(10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%, 0 10px);
}
#ef-toast.ef-show { opacity: 1; transform: translateX(-50%) translateY(0); }

/* --------------------------------------------------------------------------
 * 13. 滚动进入动效（仅 JS 生效时启用，无 JS 不隐藏内容）
 * -------------------------------------------------------------------------- */
html.ef-js .ef-reveal {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.55s ease, transform 0.55s ease;
}
html.ef-js .ef-reveal.ef-in { opacity: 1; transform: none; }

/* --------------------------------------------------------------------------
 * 14. 动效降级：用户偏好减少动效时全部关闭
 * -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  html.ef-js .ef-reveal { opacity: 1; transform: none; transition: none; }
  #ef-canvas, #ef-scan { display: none !important; }
  * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}

/* --------------------------------------------------------------------------
 * 15. 响应式
 * -------------------------------------------------------------------------- */
@media (max-width: 1000px) {
  #sideBar { display: none; }              /* 窄屏隐藏侧栏，正文最大化 */
  #main { padding: 0 14px; }
  #topics, .entrylist { padding: 24px 20px; }
  #blogTitle::after { display: none; }
}

@media (max-width: 720px) {
  #ef-status { display: none; }
  #ef-toggle { top: auto; bottom: 22px; right: 72px; }
  #blogTitle h1 { font-size: 24px; }
  #blogTitle .title a.headermaintitle, #blogTitle .title a { font-size: 24px; }
  #navList { overflow-x: auto; flex-wrap: nowrap; }
  #cnblogs_post_body, .postBody { font-size: 15.5px; }
}

/* 打印：剥离全部 HUD 与背景 */
@media print {
  #ef-canvas, #ef-scan, #ef-progress, #ef-toggle, #ef-backtop,
  #ef-status, #ef-toast, .ef-reticle, .ef-trail-dot, #header,
  .ef-code-head { display: none !important; }
  /* 渐入动效元素未滚动到时 opacity 为 0，打印会丢失大块正文，必须强制显形 */
  html.ef-js .ef-reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
  body { background: #fff; color: #000; }
  #topics { border: 0; }
  /* 深底代码块打印费墨：转浅底深字 */
  .ef-codeblock, #cnblogs_post_body pre, .postBody pre, .cnblogs_code {
    background: #f5f6f8 !important;
    color: #1c2430 !important;
  }
  .ef-codeblock pre, .ef-codeblock code, .ef-codeblock span,
  #cnblogs_post_body pre code, #cnblogs_post_body pre span,
  .cnblogs_code span, .cnblogs_code code { color: #1c2430 !important; }
}

/* --------------------------------------------------------------------------
 * 16. 博客园组件兼容（禁用模板默认CSS 后，以下自带组件需主题兜底接管）
 *     覆盖：推荐挖挖块 / 日历 / 签名档 / 上下篇 / 博文信息 / 作者卡 /
 *           绿色通道 / 侧栏搜索。均为基础兜底，不与系统行为冲突。
 * -------------------------------------------------------------------------- */

/* 16.1 推荐挖挖块（文章页右下） */
#div_digg {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  justify-content: flex-end;
  float: none;          /* 覆盖 blog-common 的 float:right + 固定宽度 */
  width: auto;
  margin: 20px 0 4px;
  font-family: var(--ef-mono);
}
#div_digg .diggit, #div_digg .buryit {
  float: none;
  width: 56px;
  height: auto;         /* 覆盖默认 52px 固定高与 upup.gif 背景图 */
  margin-left: 0;       /* 清除 .buryit 官方 margin-left:20px */
  text-align: center;
  cursor: pointer;
  user-select: none;
  border: 1px solid var(--ef-line-strong);
  background: var(--ef-panel-2);
  padding: 8px 0 6px;
  transition: border-color var(--ef-fast) ease;
}
#div_digg .diggit:hover, #div_digg .buryit:hover { border-color: var(--ef-amber); }
#div_digg .diggit .diggnum, #div_digg .buryit .burynum {
  display: block;
  font-size: 15px;
  font-weight: 700;
  color: var(--ef-amber);
}
/* 真实 DOM 中按钮只有数字，"推荐/反对"文字烧录在官方 gif 背景里；
 * 去掉背景图后需用 ::after 补回文字标签，否则只剩一个孤零零的数字 */
#div_digg .diggit::after, #div_digg .buryit::after {
  display: block;
  font-size: 11px;
  color: var(--ef-dim);
  letter-spacing: 1px;
}
#div_digg .diggit::after { content: "推荐"; }
#div_digg .buryit::after { content: "反对"; }
#div_digg .diggit:hover::after, #div_digg .buryit:hover::after { color: var(--ef-amber); }
/* 真实 DOM 里 diggit/buryit 之后还有 .clear 与 .diggword 两个兄弟节点：
 * 在 flex 容器中它们会成为 flex 项目挤乱布局，.clear 直接隐藏，
 * .diggword（投票提示语）独占一行右对齐 */
#div_digg .clear { display: none; }
#div_digg .digg_word, #div_digg .diggword {
  flex-basis: 100%;
  text-align: right;
  font-size: 11px;
  color: var(--ef-dim);
  letter-spacing: 1px;
}

/* 16.2 侧栏日历 */
#blog-calendar { width: 100%; }
#blogCalendar { width: 100%; border-collapse: collapse; font-family: var(--ef-mono); font-size: 11.5px; }
#blogCalendar th {
  font-weight: 400;
  color: var(--ef-dim);
  padding: 3px 2px;
  border-bottom: 1px solid var(--ef-line);
  text-align: center;
}
#blogCalendar td { padding: 3px 2px; text-align: center; }
#blogCalendar .CalTodayDay {
  background: var(--ef-amber-hi);
  color: #10131a;
  font-weight: 700;
}
#blogCalendar .CalOtherMonthDay { color: var(--ef-dim); }
#blogCalendar a { color: var(--ef-cyan); }
#blogCalendar a:hover { color: var(--ef-amber); }
#blogCalendar .CalTitle td { padding: 4px 0 8px; letter-spacing: 1px; }

/* 16.3 签名档 */
#MySignature {
  margin: 22px 0 0;
  padding: 12px 16px;
  border: 1px dashed var(--ef-line-strong);
  background: var(--ef-panel-2);
  font-size: 13.5px;
  color: var(--ef-sub);
}
#MySignature img { max-width: 100%; }

/* 16.4 博文信息块与上下篇导航 */
#blog_post_info {
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px dashed var(--ef-line-strong);
}
#post_next_prev {
  display: block;       /* blog-common 默认 display:none，需显式恢复 */
  font-size: 13.5px;
  color: var(--ef-sub);
  line-height: 2;
  margin: 0 0 10px;
}
#post_next_prev a { font-family: var(--ef-mono); font-size: 13px; }
#post_next_prev a:hover { color: var(--ef-amber); }

/* 16.5 作者卡 */
#author_profile {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  float: none;          /* 覆盖 blog-common 的 float:left + 固定宽 */
  width: auto;
  font-size: 13.5px;
  color: var(--ef-sub);
  margin: 0 0 10px;
}
#author_profile img, #author_profile .author_avatar {
  width: 48px;
  height: 48px;
  border: 1px solid var(--ef-line-strong);
}
#author_profile a { color: var(--ef-cyan); }
#author_profile a:hover { color: var(--ef-amber); text-decoration: none; }
#author_profile .author_profile_info { display: flex; align-items: center; gap: 12px; }
/* 「+加关注」小按钮 */
#author_profile_follow a, .follow-tip a {
  display: inline-block;
  font-family: var(--ef-mono);
  font-size: 11.5px;
  letter-spacing: 1px;
  color: var(--ef-sub);
  border: 1px solid var(--ef-line-strong);
  padding: 2px 12px;
  margin-top: 6px;
}
#author_profile_follow a:hover, .follow-tip a:hover { color: var(--ef-amber); border-color: var(--ef-amber); }

/* 16.6 绿色通道（好文要顶/关注我/收藏该文/微信分享）
 * blog-common 为每个按钮 id 单独指定背景色+渐变图+白字!important，
 * 必须用双 id 选择器 + !important 才能压过 */
#green_channel {
  width: auto;
  margin: 14px 0 16px;
  padding: 10px 14px;
  border: 1px dashed var(--ef-line-strong);
  background: var(--ef-panel);
  text-align: left;
  font-family: var(--ef-mono);
  font-size: 12px;
  letter-spacing: 1px;
}
#green_channel a#green_channel_digg,
#green_channel a#green_channel_follow,
#green_channel a#green_channel_favorite,
#green_channel a#green_channel_wechat,
#green_channel a#green_channel_weibo,
#green_channel a#green_channel_contact,
#green_channel a, #green_channel .green_channel_button {
  display: inline-block;
  margin: 2px 10px 2px 0;
  padding: 4px 14px !important;
  background: var(--ef-panel-2) !important;
  border: 1px solid var(--ef-line-strong) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  text-shadow: none !important;
  color: var(--ef-sub) !important;
  font-size: 12px;
  cursor: pointer;
  transition: border-color var(--ef-fast) ease, color var(--ef-fast) ease;
}
#green_channel a#green_channel_digg:hover,
#green_channel a#green_channel_follow:hover,
#green_channel a#green_channel_favorite:hover,
#green_channel a#green_channel_wechat:hover,
#green_channel a#green_channel_weibo:hover,
#green_channel a:hover, #green_channel .green_channel_button:hover {
  background: var(--ef-panel-2) !important;
  color: var(--ef-amber) !important;
  border-color: var(--ef-amber) !important;
}

/* 16.7 侧栏搜索框 */
#sidebar_search .input_mysearch, #sidebar_search input[type="text"] {
  width: 100%;
  padding: 8px 10px;
  background: var(--ef-bg-2);
  border: 1px solid var(--ef-line-strong);
  color: var(--ef-text);
  font-family: var(--ef-mono);
  font-size: 12.5px;
  outline: none;
  transition: border-color var(--ef-fast) ease;
}
#sidebar_search .input_mysearch:focus, #sidebar_search input[type="text"]:focus { border-color: var(--ef-amber); }
#sidebar_search .btn_mysearch,
#sidebar_search input[type="button"], #sidebar_search input[type="submit"], #sidebar_search button {
  margin: 8px 0 0;
  padding: 7px 18px;
  cursor: pointer;
  background: var(--ef-amber-hi);
  color: #10131a;
  border: 0;
  font-family: var(--ef-mono);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 1px;
  clip-path: polygon(6px 0, 100% 0, 100% calc(100% - 6px), calc(100% - 6px) 100%, 0 100%, 0 6px);
}

/* --------------------------------------------------------------------------
 * 16.8 文章页底部推荐区（v1.9.1 按真实 DOM 补齐）
 *     .under-post-card 编辑推荐·历史上的今天 / #cnblogs_ch 平台推广链（v1.9.3
 *     起隐藏）/ #blog_c1 广告卡（v1.9.3 起隐藏）。
 *     blog-common 默认 white-space:nowrap + 单行省略，需恢复自然换行。
 * -------------------------------------------------------------------------- */
/* 官方推广位：#cnblogs_ch 为三条【推荐】推广链接，#blog_c1 为大图广告卡，
 * 与博客内容无关，整体隐藏；如需恢复，删除本段两条规则即可 */
#cnblogs_ch, #cnblogs_ch:empty,
#blog_c1, .ad_text_commentbox:empty { display: none; }

#under_post_card1, #under_post_card2, #related_posts_card,
#HistoryToday, .under-post-card, .c_ad_block {
  max-width: none;
  white-space: normal;
  overflow: visible;
  background: var(--ef-panel);
  border: 1px solid var(--ef-line);
  padding: 14px 18px;
  margin: 14px 0;
  font-size: 13.5px;
  line-height: 1.9;
  color: var(--ef-sub);
}
#cnblogs_ch:empty, #under_post_card1:empty, #under_post_card2:empty,
#related_posts_card:empty, #HistoryToday:empty { display: none; }

#cnblogs_ch a, .under-post-card a, .c_ad_block a, #HistoryToday a { color: var(--ef-cyan); }
#cnblogs_ch a:hover, .under-post-card a:hover, .c_ad_block a:hover, #HistoryToday a:hover { color: var(--ef-amber); }

/* 「编辑推荐：」等卡片小标题：与侧栏面板标题同一语言 */
.under-post-card header, #HistoryToday .h-title, .c_ad_block .c_ad_block_title {
  display: block;
  font-family: var(--ef-mono);
  font-size: 12px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--ef-amber);
  border-bottom: 1px dashed var(--ef-line-strong);
  padding-bottom: 6px;
  margin-bottom: 8px;
}
.under-post-card ul, #HistoryToday ul { list-style: none; margin: 0; padding: 0; }
.under-post-card ul li, #HistoryToday ul li {
  padding: 4px 0;
  border-bottom: 1px solid var(--ef-line);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.under-post-card ul li::before, #HistoryToday ul li::before { content: "▸ "; color: var(--ef-amber); }
.under-post-card ul li:last-child, #HistoryToday ul li:last-child { border-bottom: 0; }

/* 平台广告卡（C1 位）：居中并套面板边框，避免裸图突兀 */
#blog_c1 { text-align: center; margin: 16px 0; }
#blog_c1 a { display: inline-block; border: 1px solid var(--ef-line); }
.ad_text_commentbox, .ad_commentbox_up { font-size: 12.5px; color: var(--ef-dim); margin: 8px 0; }
.ad_text_commentbox a, .ad_commentbox_up a { color: var(--ef-dim); }
.ad_text_commentbox a:hover, .ad_commentbox_up a:hover { color: var(--ef-amber); }

/* 免责声明行 */
.post-meta-disclaimer { color: var(--ef-dim); font-size: 12.5px; margin-top: 10px; }
