
/* ===== html 级主题映射(2026-08-17):head 内联脚本在 CSS 渲染前写入 html[data-theme-early],
   此处将浅色首屏关键元素(背景/卡片/导航/搜索/区块)映射为浅色,消除 FOUC 首帧闪深色。
   V2.1.14 规约:全站浅色覆盖统一挂 html:not([data-theme-early="dark"]) 单选择器
   (site.js applyTheme 切换时同步双属性);body 级双选择器写法已全站清除 ===== */
html[data-theme-early='light'] body{background:#f6f8fb}
html[data-theme-early='light'] .card{background:rgba(255,255,255,.86);border-color:rgba(15,23,42,.1);color:#1e293b}
html[data-theme-early='light'] .card .t{color:#111827}
html[data-theme-early='light'] .card .d{color:#475569}
html[data-theme-early='light'] .sec-title{color:#1e293b}
html[data-theme-early='light'] .sec-title .en{color:#64748b}
html[data-theme-early='light'] .stat .k{color:#64748b}
html[data-theme-early='light'] .progress-panel{background:rgba(255,255,255,.8);border-color:rgba(15,23,42,.12)}
html[data-theme-early='light'] .progress-panel h3{color:#0f172a}
html[data-theme-early='light'] .hero h1{color:#0f172a}
html[data-theme-early='light'] .hero .sub{color:#475569}
html[data-theme-early='light'] .hero-search input{background:#fff;border-color:rgba(37,99,235,.4);color:#0f172a}
html[data-theme-early='light'] .quicknav a{background:rgba(37,99,235,.07);border-color:rgba(37,99,235,.25);color:#2563eb}
html[data-theme-early='light'] .upd-item{color:#334155}
html[data-theme-early='light'] .upd-item a{color:#1d4ed8}
html[data-theme-early='light'] .upd-date{color:#64748b}
html[data-theme-early='light'] .page-head h1{color:#0f172a}
html[data-theme-early='light'] .page-head .sub{color:#475569}
html[data-theme-early='light'] .tags .tag{background:rgba(37,99,235,.08);border-color:rgba(37,99,235,.25);color:#1d4ed8}
html[data-theme-early='light'] .key-point{color:#334155}
html[data-theme-early='light'] .box-tip{background:rgba(245,158,11,.08);border-color:rgba(245,158,11,.3);color:#334155}
html[data-theme-early='light'] .box-warn{background:rgba(239,68,68,.07);border-color:rgba(239,68,68,.3);color:#7f1d1d}
html[data-theme-early='light'] .quiz{background:rgba(255,255,255,.7)}
html[data-theme-early='light'] .quiz-q{color:#0f172a}
html[data-theme-early='light'] .quiz-options button{background:#fff;border-color:rgba(60,80,120,.18);color:#334155}
html[data-theme-early='light'] .foot{color:#64748b}
html[data-theme-early='light'] .foot a{color:#1d4ed8}
html[data-theme-early='light'] details.faq summary{color:#1e293b}
html[data-theme-early='light'] .learn-path{background:rgba(255,255,255,.75)}
html[data-theme-early='light'] .rm-step h4{color:#0f172a}
html[data-theme-early='light'] .rm-step p{color:#475569}
html[data-theme-early='light'] .rm-links a{background:rgba(37,99,235,.07);border-color:rgba(37,99,235,.25);color:#1d4ed8}
/* ===== 主题 FOUC 消除(2026-08-17):head 内联脚本先写 html[data-theme-early],CSS 用它映射 body,防首帧闪深色 ===== */
html[data-theme-early='light'] body{background:#f6f8fb}
html[data-theme-early='dark'] body{background:#0d1117}

/* ============================================================
   人形机器人学习站 · 全站共享主题样式
   用法: 每个页面 <head> 引入 <link rel="stylesheet" href="../_assets/site.css">
   (首页在根目录用 href="_assets/site.css")
   ============================================================ */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:radial-gradient(ellipse at 50% 0%,#16233c 0%,#0d1117 55%,#080b10 100%);
  color:#e6edf3;
  font-family:"Segoe UI",-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
  padding-top:64px;
}
a{color:#58a6ff;text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%}

/* ---------- 顶部导航 ---------- */
/* V2.1.12b 顶栏精修:更通透的毛玻璃、按钮统一 32px 高、图标/文字对齐 */
.topnav{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(10,14,20,.72);backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);border-bottom:1px solid rgba(255,255,255,.06)}
.nav-inner{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:10px;padding:0 16px;height:52px}
.nav-brand{display:flex;align-items:center;gap:9px;font-weight:800;color:#e6edf3;font-size:15px;white-space:nowrap;text-decoration:none}
.nav-brand:hover{text-decoration:none}
.brand-dot{width:8px;height:8px;border-radius:50%;background:#3b82f6;box-shadow:0 0 10px rgba(59,130,246,.8)}
.nav-links{display:flex;gap:4px;flex:1;overflow-x:auto;scrollbar-width:none}
.nav-links::-webkit-scrollbar{display:none}
/* V2.1.12b:深色顶栏全面中性化——链接/品牌文字改灰白(brand-dot 蓝点保留为唯一品牌点缀)。
   必须用 .topnav 前缀:下方 html[data-theme-early=dark] a 的全局深色链接蓝(0,1,2)
   特异性高于裸 .nav-links a(0,1,1),会把顶栏 <a> 全部染蓝 */
.topnav .nav-brand{color:#e6edf3}
/* V2.1.14:链接与按钮族同高 30px(此前 line-height:1.7+padding 撑到约 36px,顶栏左右不齐) */
.topnav .nav-links a{color:#b8c2ce;font-size:13px;height:30px;display:inline-flex;align-items:center;padding:0 10px;border-radius:8px;white-space:nowrap;text-decoration:none;transition:color .15s,background-color .15s}
.topnav .nav-links a:hover{color:#fff;background:rgba(255,255,255,.07)}

/* V2.1.11:深色顶栏按钮去蓝改中性玻璃(文字浅灰白,hover 提亮);done 的 on 态保留语义绿
   V2.1.12b:按钮统一 32px 高;搜索按钮图标化(移除文字与快捷键徽章) */
/* V2.1.12c 工具区统一:30px 高、中性玻璃(只 brand-dot 保留蓝)。
   V2.1.14 规约:浅色覆盖一律挂 html:not([data-theme-early="dark"]) 单选择器——
   head 内联脚本在任何渲染前写好该属性,深色用户首帧零浅色规则命中;
   旧 body:not([data-theme]) 双重否定(孤立段还会把样式误套 body 自身)已全站清除 */
.nav-search,.nav-done,.nav-theme,.nav-print,.nav-dd-btn{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);color:#c9d1d9;font-size:12.5px;height:30px;padding:0 10px;border-radius:8px;cursor:pointer;white-space:nowrap;font-family:inherit;display:inline-flex;align-items:center;justify-content:center;transition:background-color .15s,border-color .15s,color .15s}
/* 三个图标按钮(主题/搜索/打印)统一 34 宽 × 30 高 */
.nav-theme,.nav-print,.nav-search{width:34px;padding:0}
.nav-search svg{margin:0}
/* V2.1.12c:图标加克制主题色(框体保持中性玻璃,只给图标上色)——
   主题=琥珀(暗喻日/月)、搜索=天蓝、打印=石墨、自检=语义绿(见 selftest) */
.nav-theme{color:#fbbf24}
html:not([data-theme-early="dark"]) .nav-theme{color:#b45309}
.nav-search svg{color:#7cc4ff}
html:not([data-theme-early="dark"]) .nav-search svg{color:#2563eb}
.nav-print{color:#9aa4b2}
html:not([data-theme-early="dark"]) .nav-print{color:#64748b}
.nav-search:hover,.nav-done:hover,.nav-theme:hover,.nav-print:hover,.nav-dd-btn:hover{background:rgba(255,255,255,.11);border-color:rgba(255,255,255,.24);color:#fff}
html:not([data-theme-early="dark"]) .nav-search,html:not([data-theme-early="dark"]) .nav-done,html:not([data-theme-early="dark"]) .nav-theme,html:not([data-theme-early="dark"]) .nav-print,html:not([data-theme-early="dark"]) .nav-dd-btn{background:rgba(255,255,255,.65);border-color:rgba(100,116,139,.28);color:#475569}
html:not([data-theme-early="dark"]) .nav-search:hover,html:not([data-theme-early="dark"]) .nav-done:hover,html:not([data-theme-early="dark"]) .nav-theme:hover,html:not([data-theme-early="dark"]) .nav-print:hover,html:not([data-theme-early="dark"]) .nav-dd-btn:hover{background:#fff;border-color:rgba(100,116,139,.45);color:#0f172a}

.nav-done.on{background:rgba(34,197,94,.18);border-color:rgba(34,197,94,.5);color:#86efac}

/* ---------- 面包屑 ---------- */
.breadcrumb{max-width:1180px;margin:0 auto;padding:16px 20px 0;font-size:12.5px;color:#6b7280}
.breadcrumb a{color:#8b949e}
.breadcrumb a:hover{color:#58a6ff}
.breadcrumb .sep{margin:0 7px;color:#64748b}

/* ---------- 布局容器 ---------- */
.container{max-width:1080px;margin:0 auto;padding:20px 20px 40px}
.container.wide{max-width:1180px}

/* ---------- 页面头部 ---------- */
.page-head{text-align:center;padding:26px 0 8px}
.page-head h1{font-size:30px;font-weight:800;color:#fff;letter-spacing:.5px;line-height:1.35}
.page-head .sub{color:#8b949e;font-size:14.5px;margin-top:10px;line-height:1.8}
.page-head .tags{margin-top:14px;display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.page-head .tag{font-size:12px;color:#9ecbff;background:rgba(59,130,246,.12);border:1px solid rgba(59,130,246,.3);padding:4px 12px;border-radius:999px}

/* ---------- 信息框 ---------- */
.box{border-radius:12px;padding:16px 20px;margin:18px 0;font-size:14px;line-height:1.8;border:1px solid}
.box b{font-weight:700}
.box-tip{background:rgba(59,130,246,.08);border-color:rgba(59,130,246,.35);color:#c9d1d9}
.box-tip b{color:#9ecbff}
.box-warn{background:rgba(245,158,11,.08);border-color:rgba(245,158,11,.4);color:#fde68a}
.box-warn b{color:#fbbf24}
.box-danger{background:rgba(239,68,68,.08);border-color:rgba(239,68,68,.4);color:#fecaca}
.box-danger b{color:#f87171}
.box-ok{background:rgba(34,197,94,.08);border-color:rgba(34,197,94,.4);color:#bbf7d0}
.box-ok b{color:#86efac}
.key-point{background:linear-gradient(135deg,rgba(37,99,235,.22),rgba(13,17,23,.5));border-left:4px solid #3b82f6;padding:14px 18px;border-radius:0 10px 10px 0;margin:18px 0;font-size:14px;line-height:1.8;color:#dbe6f5}
.key-point b{color:#93c5fd}
.key-point .kp-title{color:#fff;font-weight:700;margin-bottom:4px}

/* ---------- 标题与正文 ---------- */
h2{font-size:21px;font-weight:800;color:#fff;margin:34px 0 14px;padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.1);display:flex;align-items:center;gap:10px}
h2 .h2-num{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#2563eb,#3b82f6);display:inline-flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;flex-shrink:0}
h3{font-size:17px;font-weight:700;color:#9ecbff;margin:24px 0 10px}
h4{font-size:15px;font-weight:700;color:#c9d1d9;margin:18px 0 8px}
p{font-size:14.5px;color:#c9d1d9;margin:10px 0}
ul,ol{padding-left:26px;margin:10px 0}
li{font-size:14.5px;color:#c9d1d9;margin:6px 0;line-height:1.8}
li::marker{color:#3b82f6}
strong{color:#fff}

/* ---------- 表格 ---------- */
table{width:100%;border-collapse:collapse;margin:16px 0;font-size:13.5px;background:rgba(22,27,34,.6);border-radius:10px;overflow:hidden}
th{background:rgba(37,99,235,.22);color:#fff;padding:10px 12px;text-align:left;font-weight:700;white-space:nowrap}
td{padding:10px 12px;border-top:1px solid rgba(255,255,255,.07);color:#c9d1d9;vertical-align:top}
tr:hover td{background:rgba(59,130,246,.06)}
.table-wrap{overflow-x:auto}

/* ---------- 代码 ---------- */
pre{background:#0a0f16;border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:14px 16px;overflow-x:auto;margin:14px 0;font-size:13px;line-height:1.7}
code{font-family:Consolas,"Courier New",monospace;font-size:13px}
:not(pre)>code{background:rgba(59,130,246,.14);color:#9ecbff;padding:1px 6px;border-radius:5px;font-size:12.5px}
pre code{color:#a8c7e8;background:none;padding:0}

/* ---------- 卡片 ---------- */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin:14px 0}
.card{display:block;text-decoration:none;color:inherit;background:rgba(22,27,34,.75);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:18px 18px 16px;transition:transform .32s cubic-bezier(.22,1.2,.36,1),border-color .22s,background .22s,box-shadow .32s;position:relative;overflow:hidden}
.card:hover{border-color:rgba(59,130,246,.55);background:rgba(30,41,59,.85);transform:translateY(-3px) scale(1.018);box-shadow:0 14px 34px rgba(0,0,0,.4);text-decoration:none}
.card:active{transform:translateY(-1px) scale(.992);transition-duration:.12s}
.card .ic{font-size:22px;margin-bottom:10px}
.card .t{font-size:15px;font-weight:700;color:#fff;margin-bottom:6px}
.card .d{font-size:12.5px;color:#9aa4b2;line-height:1.65}
.card .go{position:absolute;right:14px;top:16px;color:#3b82f6;font-size:12px;font-weight:600;opacity:0;transition:.18s}
.card:hover .go{opacity:1}
.card .new-badge{position:absolute;right:12px;top:12px;background:linear-gradient(135deg,#fbbf24,#f97316);color:#451a03;font-size:10px;font-weight:800;padding:2px 8px;border-radius:999px}
/* 带 NEW 徽章的卡片:"进入 →"右移避让,避免与徽章重叠(现代浏览器 :has 支持良好) */
.card:has(.new-badge) .go{right:80px}
.card.featured{grid-column:1/-1;background:linear-gradient(135deg,rgba(37,99,235,.25),rgba(13,17,23,.7));border-color:rgba(59,130,246,.45)}
.card.featured .t{font-size:18px}
.card.featured .d{font-size:13.5px;color:#b6c2d1}
.card.featured .go{opacity:1}

/* ---------- 自测题 ---------- */
.quiz{background:rgba(22,27,34,.8);border:1px solid rgba(255,255,255,.09);border-radius:12px;padding:16px 18px;margin:14px 0}
.quiz-q{font-size:14.5px;color:#fff;font-weight:600;margin-bottom:12px}
.quiz-options{display:flex;flex-direction:column;gap:8px}
.quiz-options button{text-align:left;background:rgba(13,17,23,.8);border:1px solid rgba(255,255,255,.12);color:#c9d1d9;font-size:13.5px;padding:9px 14px;border-radius:9px;cursor:pointer;font-family:inherit;transition:.15s}
.quiz-options button:hover{border-color:#3b82f6;color:#fff}
.quiz-options button.correct{border-color:#22c55e;background:rgba(34,197,94,.15);color:#86efac;font-weight:700}
.quiz-options button.wrong{border-color:#ef4444;background:rgba(239,68,68,.15);color:#fca5a5}
.quiz-feedback{display:none;margin-top:10px;font-size:13px;font-weight:600}
.quiz-feedback.ok{display:block;color:#86efac}
.quiz-feedback.no{display:block;color:#fca5a5}
.quiz-explain{display:none;margin-top:10px;padding:10px 14px;background:rgba(59,130,246,.08);border-left:3px solid #3b82f6;border-radius:0 8px 8px 0;font-size:13px;color:#aab8c8;line-height:1.8}
.quiz-explain.show{display:block}

/* ---------- 折叠 FAQ / 章节 ---------- */
details.faq{background:rgba(22,27,34,.75);border:1px solid rgba(255,255,255,.09);border-radius:12px;margin:10px 0;overflow:hidden}
details.faq summary{cursor:pointer;padding:14px 18px;font-size:14.5px;font-weight:600;color:#e6edf3;list-style:none;position:relative;padding-right:40px}
details.faq summary::-webkit-details-marker{display:none}
details.faq summary::after{content:"＋";position:absolute;right:16px;top:50%;transform:translateY(-50%);color:#3b82f6;font-size:16px;font-weight:800}
details.faq[open] summary::after{content:"－"}
details.faq summary:hover{background:rgba(59,130,246,.08)}
details.faq .faq-a{padding:2px 18px 16px;font-size:14px;color:#9aa4b2;line-height:1.9;border-top:1px dashed rgba(255,255,255,.08)}

/* ---------- 步骤流 ---------- */
.step-flow{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0;align-items:stretch}
.step-item{flex:1;min-width:170px;background:linear-gradient(135deg,rgba(30,58,138,.5),rgba(55,48,163,.5));border:1px solid rgba(59,130,246,.35);padding:14px 16px;border-radius:12px;font-size:13px;color:#bfdbfe;line-height:1.7}
.step-item .n{display:inline-block;width:22px;height:22px;background:#3b82f6;color:#fff;border-radius:6px;text-align:center;line-height:22px;font-weight:800;font-size:12px;margin-right:8px}
.step-item b{color:#fff;font-size:14px}

/* ---------- 学习路径(首页) ---------- */
.roadmap{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;margin:16px 0}
.rm-step{background:rgba(22,27,34,.8);border:1px solid rgba(255,255,255,.09);border-radius:14px;padding:18px;position:relative;transition:.2s}
.rm-step:hover{border-color:rgba(59,130,246,.55);transform:translateY(-2px)}
.rm-step .rm-arrow{position:absolute;right:-11px;top:50%;transform:translateY(-50%);color:#3b82f6;font-size:18px;z-index:2}
.rm-step .rm-num{display:inline-flex;width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,#2563eb,#3b82f6);color:#fff;align-items:center;justify-content:center;font-weight:800;font-size:14px;margin-bottom:10px}
.rm-step h4{color:#fff;font-size:15.5px;margin-bottom:6px}
.rm-step p{font-size:12.5px;color:#9aa4b2;margin:4px 0}
.rm-step .rm-links{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}
.rm-step .rm-links a{font-size:12px;color:#9ecbff;background:rgba(59,130,246,.12);border:1px solid rgba(59,130,246,.3);padding:3px 10px;border-radius:999px;text-decoration:none}
.rm-step .rm-links a:hover{background:rgba(59,130,246,.3);color:#fff}

/* ---------- 首页 Hero / 统计 ---------- */
.hero{text-align:center;padding:34px 10px 10px}
.hero h1{font-size:34px;font-weight:900;color:#fff;letter-spacing:.5px;line-height:1.35}
.hero .sub{color:#8b949e;font-size:15px;margin-top:12px;line-height:1.9}
/* V2.1.12b:副标题第二行(特性点)降一档字号与对比,形成主次层次 */
.hero .sub .sub-meta{font-size:13px;color:#6b7280;letter-spacing:.3px}
html:not([data-theme-early="dark"]) .hero .sub .sub-meta {color:#64748b}
.stats{display:flex;justify-content:center;gap:26px;margin:22px 0 8px;flex-wrap:wrap}
.stat{text-align:center}
/* V2.1.27:数字定宽——计数动画(0→101)期间数字宽度不变,hero 不反复回流;
   否则带锚点进入首页时按旧布局算出的落点随回流失效(板块跳转偏 244px 的根源) */
.stat .v{font-size:26px;font-weight:900;color:#3b82f6;font-variant-numeric:tabular-nums;min-width:3ch;display:inline-block;text-align:center}
.stat .k{font-size:12px;color:#6b7280;margin-top:2px}
.hero-search{max-width:560px;margin:20px auto 0;display:flex;gap:8px}
.hero-search input{flex:1;background:rgba(13,17,23,.85);border:1px solid rgba(59,130,246,.4);color:#e6edf3;font-size:14px;padding:12px 16px;border-radius:10px;outline:none;font-family:inherit}
.hero-search input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.2)}
.hero-search button{background:linear-gradient(135deg,#2563eb,#3b82f6);border:none;color:#fff;font-size:14px;font-weight:700;padding:0 22px;border-radius:10px;cursor:pointer;font-family:inherit}
.hero-search button:hover{filter:brightness(1.15)}

/* ---------- 首页板块 ---------- */
.sec{margin:26px 0}
.sec-title{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:800;color:#c9d1d9;margin-bottom:14px}
.sec-title .num{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#2563eb,#3b82f6);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;flex-shrink:0}
.sec-title .en{font-size:11px;color:#6b7280;font-weight:500;letter-spacing:.5px}
.sec-title .bar{flex:1;height:1px;background:linear-gradient(90deg,rgba(59,130,246,.4),transparent)}

/* ---------- 学习进度(首页) ---------- */
.progress-panel{background:rgba(22,27,34,.75);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:20px;margin:18px 0}
.progress-panel h3{color:#fff;font-size:16px;margin-bottom:14px}
.pbar-row{display:flex;align-items:center;gap:12px;margin:10px 0;font-size:13px}
.pbar-row .pl{width:126px;white-space:nowrap;color:#9aa4b2;flex-shrink:0}  /* 126px:最长板块名9字x13px=117px(V2.1.20b,110px是8字时代定值,"软件算法与升级进阶"折行) */
.pbar{flex:1;height:8px;background:rgba(255,255,255,.08);border-radius:99px;overflow:hidden}
.pbar i{display:block;height:100%;background:linear-gradient(90deg,#2563eb,#22c55e);border-radius:99px;transition:width .4s}
.pbar-row .pv{width:44px;text-align:right;color:#6b7280;font-size:12px;flex-shrink:0}

/* ---------- 上一篇/下一篇 ---------- */
.prevnext{max-width:1080px;margin:34px auto 0;padding:0 20px;display:flex;gap:12px}
.pn-item{flex:1;background:rgba(22,27,34,.75);border:1px solid rgba(255,255,255,.09);border-radius:12px;padding:14px 18px;color:inherit;text-decoration:none;transition:.18s}
.pn-item:hover{border-color:rgba(59,130,246,.55);background:rgba(30,41,59,.85);text-decoration:none}
.pn-item span{font-size:11.5px;color:#6b7280;display:block;margin-bottom:4px}
.pn-item b{font-size:14px;color:#9ecbff}
.pn-item.next{text-align:right}

/* ---------- 页脚 ---------- */
.site-footer{text-align:center;color:#6b7280;font-size:12px;padding:26px 20px 40px;border-top:1px solid rgba(255,255,255,.06);margin-top:30px}
.site-footer a{color:#3b82f6}

/* ---------- 搜索浮层 ---------- */
.search-overlay{display:none;position:fixed;inset:0;background:rgba(4,8,14,.82);backdrop-filter:blur(6px);z-index:200;align-items:flex-start;justify-content:center;padding:10vh 16px 16px}
.search-overlay.show{display:flex}
.search-box{width:100%;max-width:640px;background:#161b22;border:1px solid rgba(59,130,246,.4);border-radius:16px;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,.6)}
.search-head{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;font-size:13px;color:#8b949e;border-bottom:1px solid rgba(255,255,255,.07);font-weight:700}
.search-close{cursor:pointer;width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:7px;background:rgba(255,255,255,.07);color:#c9d1d9;font-size:13px}
.search-close:hover{background:rgba(239,68,68,.3);color:#fff}
.search-input{width:100%;background:transparent;border:none;outline:none;color:#fff;font-size:16px;padding:16px 18px;font-family:inherit;border-bottom:1px solid rgba(255,255,255,.07)}
.search-results{max-height:52vh;overflow-y:auto;padding:8px}
.search-count{font-size:12px;color:#6b7280;padding:8px 10px 4px}
.search-hit{display:block;padding:11px 14px;border-radius:10px;color:inherit;text-decoration:none}
.search-hit:hover{background:rgba(59,130,246,.12);text-decoration:none}
.hit-t{font-size:14.5px;font-weight:700;color:#fff}
.hit-meta{font-size:12px;color:#6b7280;margin-top:3px}
.search-empty{text-align:center;color:#6b7280;font-size:13.5px;padding:34px 10px}

/* ---------- 术语词典 ---------- */
.gloss-search{margin:16px 0;display:flex;gap:8px}
.gloss-search input{flex:1;background:rgba(13,17,23,.85);border:1px solid rgba(59,130,246,.4);color:#e6edf3;font-size:14px;padding:11px 16px;border-radius:10px;outline:none;font-family:inherit}
.gloss-search input:focus{border-color:#3b82f6}
.gloss-cats{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
.gloss-cats button{background:rgba(22,27,34,.8);border:1px solid rgba(255,255,255,.12);color:#9aa4b2;font-size:12.5px;padding:6px 14px;border-radius:999px;cursor:pointer;font-family:inherit}
.gloss-cats button:hover{border-color:#3b82f6;color:#fff}
.gloss-cats button.on{background:rgba(59,130,246,.25);border-color:#3b82f6;color:#fff}
.term-card{background:rgba(22,27,34,.75);border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:12px 16px;margin:8px 0}
.term-card .term-name{font-size:14.5px;font-weight:700;color:#fff}
.term-card .term-en{font-size:12px;color:#6b7280;margin-left:8px}
.term-card .term-desc{font-size:13px;color:#9aa4b2;margin-top:4px;line-height:1.7}
.term-card .term-link{font-size:12px;color:#58a6ff;margin-left:6px}

/* ---------- 响应式 ---------- */
@media (max-width:900px){
  .nav-links{display:none}
  .hero h1{font-size:26px}
  .page-head h1{font-size:24px}
  .prevnext{flex-direction:column}
  .pn-item.next{text-align:left}
}
@media (max-width:600px){
  body{padding-top:56px}
  .nav-inner{height:52px;gap:8px}
  .stats{gap:16px}
  .stat .v{font-size:20px}
  .container{padding:14px 14px 30px}
  h2{font-size:18px}
}

/* ============================================================
   浅色 · 苹果透亮玻璃风格(html:not([data-theme-early="dark"]) )
   ============================================================ */


html:not([data-theme-early="dark"]) {
  background:
    radial-gradient(1100px 520px at 12% -8%, rgba(220,232,248,.55), transparent 60%),
    radial-gradient(900px 460px at 100% 0%, rgba(230,238,250,.6), transparent 55%),
    linear-gradient(160deg,#fbfcfe 0%,#f3f6fb 50%,#ebeff7 100%);
  color:#1a2332;
}
html:not([data-theme-early="dark"]) .topnav{background:rgba(255,255,255,.72);backdrop-filter:blur(14px) saturate(150%);-webkit-backdrop-filter:blur(14px) saturate(150%);border-bottom:1px solid rgba(60,80,120,.12);box-shadow:0 2px 24px rgba(40,70,130,.06)}
html:not([data-theme-early="dark"]) .nav-brand{color:#111827}
html:not([data-theme-early="dark"]) .nav-links a{color:#475569}
html:not([data-theme-early="dark"]) .nav-links a:hover{color:#111827;background:rgba(37,99,235,.08)}
html:not([data-theme-early="dark"]) .nav-done{color:#15803d}
html:not([data-theme-early="dark"]) .breadcrumb{color:#64748b}
html:not([data-theme-early="dark"]) .breadcrumb a{color:#64748b}
html:not([data-theme-early="dark"]) .breadcrumb a:hover{color:#2563eb}

html:not([data-theme-early="dark"]) .page-head h1{color:#0f172a}
html:not([data-theme-early="dark"]) .page-head .sub{color:#5a6a85}
html:not([data-theme-early="dark"]) .page-head .tag{color:#2563eb;background:rgba(37,99,235,.07);border-color:rgba(37,99,235,.25)}
html:not([data-theme-early="dark"]) h2{color:#0f172a;border-bottom-color:rgba(60,80,120,.14)}
html:not([data-theme-early="dark"]) h3{color:#2563eb}
html:not([data-theme-early="dark"]) h4{color:#334155}
html:not([data-theme-early="dark"]) p ,html:not([data-theme-early="dark"]) li {color:#3a4759}
html:not([data-theme-early="dark"]) strong {color:#0f172a}

/* V2.1.14 性能:浅色卡片族移除 backdrop-filter——首页约 136 个玻璃面在滚动时逐帧重模糊,
   是浅色掉帧主因(Iris Xe/120Hz 实测:浅色稳态 p95 24.8ms vs 深色无滤镜 12.3ms;
   版本板块首渲染 363ms 冻结 vs 深色 16.6ms)。背景 .62→.87 保持通透感,
   毛玻璃主载体(顶栏/下拉面板/快速导航胶囊/深色主题)全部保留。
   选择器改挂 html[data-theme-early](head 内联脚本渲染前写入):深色用户首帧零浅色规则命中 */
html:not([data-theme-early="dark"]) .card,html:not([data-theme-early="dark"]) .lab,html:not([data-theme-early="dark"]) .progress-panel,
html:not([data-theme-early="dark"]) .term-card,html:not([data-theme-early="dark"]) .quiz,html:not([data-theme-early="dark"]) details.faq,
html:not([data-theme-early="dark"]) .rm-step,html:not([data-theme-early="dark"]) .step-item{
  background:rgba(255,255,255,.87);
  border:1px solid rgba(255,255,255,.9);box-shadow:0 10px 34px rgba(50,80,140,.09);border-radius:16px;
}
html:not([data-theme-early="dark"]) .card:hover{border-color:rgba(37,99,235,.35);background:rgba(255,255,255,.96);box-shadow:0 18px 44px rgba(40,80,160,.16)}
html:not([data-theme-early="dark"]) .card .t{color:#0f172a}
html:not([data-theme-early="dark"]) .card .d{color:#5a6a85}
html:not([data-theme-early="dark"]) .card.featured{background:linear-gradient(135deg,rgba(37,99,235,.12),rgba(255,255,255,.7));border-color:rgba(37,99,235,.28)}
html:not([data-theme-early="dark"]) .step-item{background:linear-gradient(135deg,rgba(37,99,235,.1),rgba(147,197,253,.16));border-color:rgba(37,99,235,.22);color:#1e3a8a}
html:not([data-theme-early="dark"]) .step-item b{color:#0f172a}
html:not([data-theme-early="dark"]) .rm-step h4{color:#0f172a}
html:not([data-theme-early="dark"]) .rm-step p{color:#5a6a85}

html:not([data-theme-early="dark"]) .box-tip{background:rgba(37,99,235,.06);border-color:rgba(37,99,235,.3);color:#3a4759}
html:not([data-theme-early="dark"]) .box-warn{background:rgba(245,158,11,.08);border-color:rgba(245,158,11,.35);color:#7c5a12}
html:not([data-theme-early="dark"]) .box-danger{background:rgba(239,68,68,.07);border-color:rgba(239,68,68,.35);color:#9f3b3b}
html:not([data-theme-early="dark"]) .box-ok{background:rgba(34,197,94,.08);border-color:rgba(34,197,94,.35);color:#146c3c}
html:not([data-theme-early="dark"]) .key-point{background:linear-gradient(135deg,rgba(37,99,235,.1),rgba(255,255,255,.6));border-left-color:#2563eb;color:#334155}
html:not([data-theme-early="dark"]) .key-point b{color:#2563eb}
html:not([data-theme-early="dark"]) .key-point .kp-title{color:#0f172a}

/* ===== V2.1.5 浅色可读性统一补丁 =====
   浅色下深色系链接与盒子强调标签(#58a6ff/#9ecbff/#fbbf24/#f87171/#86efac)
   对比度不足(2~3:1),统一映射到更深的同色系;html 级前缀保证压过页面内联样式 */
.giscus-mail{color:#60a5fa;font-weight:700;text-decoration:underline}
html:not([data-theme-early="dark"]) a {color:#1d4ed8}
html:not([data-theme-early="dark"]) a:hover {color:#1e40af}
html:not([data-theme-early="dark"]) .box-tip b {color:#1d4ed8}
html:not([data-theme-early="dark"]) .box-warn b {color:#b45309}
html:not([data-theme-early="dark"]) .box-danger b {color:#b91c1c}
html:not([data-theme-early="dark"]) .box-ok b {color:#15803d}
html:not([data-theme-early="dark"]) .giscus-mail {color:#2563eb}

/* ===== V2.1.5 首帧主题锁定 =====
   深色用户刷新时 body 尚无 data-theme,浅色规则(body:not([data-theme])...)会先命中
   导致一帧浅色闪现再翻深色;此处用 html[data-theme-early='dark'] 高优先级兜底,
   保证首帧就是目标主题(须置于浅色规则之后以获胜) */
html[data-theme-early='dark'] body{
  background:radial-gradient(ellipse at 50% 0%,#16233c 0%,#0d1117 55%,#080b10 100%);
}
html[data-theme-early='dark'] .card{background:rgba(22,27,34,.75);border-color:rgba(255,255,255,.08);color:inherit}
html[data-theme-early='dark'] .topnav{background:rgba(13,17,26,.72);border-bottom-color:rgba(255,255,255,.08)}
html[data-theme-early='dark'] .page-head h1{color:#e6edf3}
html[data-theme-early='dark'] .sec-title{color:#e6edf3}
html[data-theme-early='dark'] h2{color:#e6edf3}
html[data-theme-early='dark'] p,html[data-theme-early='dark'] li{color:#c9d1d9}
html[data-theme-early='dark'] a{color:#58a6ff}
html[data-theme-early='dark'] .quicknav a{color:#9ecbff;background:rgba(59,130,246,.1)}
html[data-theme-early='dark'] .upd-item{color:#c9d1d9}
html[data-theme-early='dark'] .box-tip{background:rgba(59,130,246,.08);color:#c9d1d9}
html[data-theme-early='dark'] .box-warn{background:rgba(245,158,11,.08);color:#c9d1d9}
html[data-theme-early='dark'] .box-danger{background:rgba(239,68,68,.07);color:#c9d1d9}
html[data-theme-early='dark'] .box-ok{background:rgba(34,197,94,.08);color:#c9d1d9}
html[data-theme-early='dark'] .key-point{background:linear-gradient(135deg,rgba(37,99,235,.18),rgba(13,17,23,.55));color:#c9d1d9}
html[data-theme-early='dark'] .learn-path{background:linear-gradient(135deg,rgba(37,99,235,.18),rgba(13,17,23,.6))}
html[data-theme-early='dark'] .rm-nav{background:rgba(13,17,23,.74);color:#9ecbff}
html[data-theme-early='dark'] .giscus-mail{color:#60a5fa}

html:not([data-theme-early="dark"]) table{background:rgba(255,255,255,.55);box-shadow:0 6px 24px rgba(50,80,140,.07)}
html:not([data-theme-early="dark"]) th{background:rgba(37,99,235,.12);color:#0f172a}
html:not([data-theme-early="dark"]) td{color:#3a4759;border-top-color:rgba(60,80,120,.1)}
html:not([data-theme-early="dark"]) tr:hover td{background:rgba(37,99,235,.05)}
html:not([data-theme-early="dark"]) pre{background:#f4f7fc;border-color:rgba(60,80,120,.14);color:#1e293b}
html:not([data-theme-early="dark"]) :not(pre)>code{background:rgba(37,99,235,.1);color:#1d4ed8}
html:not([data-theme-early="dark"]) pre code{color:#1e3a8a}

html:not([data-theme-early="dark"]) .quiz-options button{background:rgba(255,255,255,.7);border-color:rgba(60,80,120,.16);color:#334155}
html:not([data-theme-early="dark"]) .quiz-options button:hover{border-color:#2563eb;color:#0f172a}
html:not([data-theme-early="dark"]) .quiz-q{color:#0f172a}
html:not([data-theme-early="dark"]) .quiz-explain{background:rgba(37,99,235,.07);border-left-color:#2563eb;color:#4b5c74}
html:not([data-theme-early="dark"]) details.faq summary{color:#1a2332}
html:not([data-theme-early="dark"]) details.faq .faq-a{color:#4b5c74}
html:not([data-theme-early="dark"]) .prevnext .pn-item{background:rgba(255,255,255,.62);border-color:rgba(255,255,255,.85);box-shadow:0 8px 26px rgba(50,80,140,.08)}
html:not([data-theme-early="dark"]) .prevnext .pn-item b{color:#2563eb}
html:not([data-theme-early="dark"]) .prevnext .pn-item span{color:#64748b}
html:not([data-theme-early="dark"]) .site-footer{color:#64748b;border-top-color:rgba(60,80,120,.12)}
html:not([data-theme-early="dark"]) .site-footer a{color:#2563eb}

html:not([data-theme-early="dark"]) .search-box{background:rgba(255,255,255,.9);border-color:rgba(37,99,235,.3)}
html:not([data-theme-early="dark"]) .search-input{color:#0f172a}
html:not([data-theme-early="dark"]) .search-head{color:#64748b}
html:not([data-theme-early="dark"]) .search-hit:hover{background:rgba(37,99,235,.08)}
html:not([data-theme-early="dark"]) .hit-t{color:#0f172a}
html:not([data-theme-early="dark"]) .hit-meta{color:#64748b}

html:not([data-theme-early="dark"]) .hero h1{color:#0f172a}
html:not([data-theme-early="dark"]) .hero .sub{color:#5a6a85}
html:not([data-theme-early="dark"]) .stat .v{color:#2563eb}
html:not([data-theme-early="dark"]) .stat .k{color:#64748b}
html:not([data-theme-early="dark"]) .hero-search input{background:rgba(255,255,255,.8);border-color:rgba(37,99,235,.3);color:#0f172a}
html:not([data-theme-early="dark"]) .gloss-search input{background:rgba(255,255,255,.8);border-color:rgba(37,99,235,.3);color:#0f172a}
html:not([data-theme-early="dark"]) .gloss-cats button{background:rgba(255,255,255,.6);border-color:rgba(60,80,120,.16);color:#64748b}
html:not([data-theme-early="dark"]) .gloss-cats button.on{background:rgba(37,99,235,.15);border-color:#2563eb;color:#1d4ed8}
html:not([data-theme-early="dark"]) .term-name{color:#0f172a}
html:not([data-theme-early="dark"]) .term-desc{color:#5a6a85}
html:not([data-theme-early="dark"]) .sec-title{color:#334155}
html:not([data-theme-early="dark"]) .sec-title .en{color:#64748b}

/* ============================================================
   文档式目录侧边栏(DeepSeek 官方文档风)
   ============================================================ */
.toc-sidebar{position:fixed;left:16px;top:76px;width:224px;max-height:calc(100vh - 96px);overflow-y:auto;z-index:80;
  background:rgba(17,22,30,.68);backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);
  border:1px solid rgba(255,255,255,.09);border-radius:14px;padding:14px 12px;font-size:12.5px;scrollbar-width:thin}
.toc-title{font-weight:800;color:#fff;margin:0 0 8px 4px;font-size:13px}
.toc-sidebar ul{list-style:none;padding:0;margin:0}
.toc-sidebar li{margin:2px 0}
.toc-sidebar a{display:block;color:#9aa4b2;padding:6px 10px;border-radius:8px;text-decoration:none;line-height:1.5;border-left:2px solid transparent;transition:.15s}
.toc-sidebar a:hover{color:#fff;background:rgba(59,130,246,.15);border-left-color:#3b82f6;text-decoration:none}
.toc-sidebar a.active{color:#9ecbff;background:rgba(59,130,246,.14);border-left-color:#3b82f6}
.toc-toggle{display:none;position:fixed;right:14px;bottom:20px;z-index:85;width:46px;height:46px;border-radius:50%;
  background:rgba(37,99,235,.9);color:#fff;border:none;font-size:20px;cursor:pointer;box-shadow:0 8px 24px rgba(37,99,235,.4)}
/* 有目录时,内容右移,呈"侧边栏 + 正文"文档布局 */
body.has-toc .container{max-width:960px;margin-left:256px;margin-right:auto}
body.has-toc .prevnext{max-width:960px;margin-left:256px;margin-right:auto}
body.has-toc .breadcrumb{max-width:960px;margin-left:256px}
html:not([data-theme-early="dark"]) .toc-sidebar{background:rgba(255,255,255,.66);border-color:rgba(255,255,255,.85);box-shadow:0 10px 34px rgba(50,80,140,.1)}
html:not([data-theme-early="dark"]) .toc-title{color:#0f172a}
html:not([data-theme-early="dark"]) .toc-sidebar a{color:#5a6a85}
html:not([data-theme-early="dark"]) .toc-sidebar a:hover{color:#0f172a;background:rgba(37,99,235,.08);border-left-color:#2563eb}
html:not([data-theme-early="dark"]) .toc-sidebar a.active{color:#2563eb;background:rgba(37,99,235,.12);border-left-color:#2563eb}

@media (max-width:1180px){
  .toc-sidebar{transform:translateX(-120%);transition:transform .25s}
  .toc-sidebar.open{transform:translateX(0);box-shadow:0 24px 70px rgba(0,0,0,.4)}
  .toc-toggle{display:block}
  body.has-toc .container,body.has-toc .prevnext,body.has-toc .breadcrumb{margin-left:auto}
}

/* ============================================================
   回到顶部按钮 + 入场动画
   ============================================================ */
.backtop{position:fixed;right:18px;bottom:22px;z-index:95;width:44px;height:44px;border-radius:50%;
  background:rgba(37,99,235,.9);color:#fff;border:none;font-size:20px;font-weight:800;cursor:pointer;
  display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(37,99,235,.4);transition:.2s}
.backtop:hover{transform:translateY(-3px);background:#2563eb}
html:not([data-theme-early="dark"]) .backtop{background:rgba(37,99,235,.88)}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
.card,.sec-title,.page-head,.lab,.progress-panel{opacity:0;animation:fadeUp .5s ease both}
.card:nth-child(2){animation-delay:.05s}.card:nth-child(3){animation-delay:.1s}
.card:nth-child(4){animation-delay:.15s}.card:nth-child(5){animation-delay:.2s}
.card:nth-child(6){animation-delay:.25s}.card:nth-child(7){animation-delay:.3s}
@media (prefers-reduced-motion:reduce){.card,.sec-title,.page-head,.lab,.progress-panel{animation:none;opacity:1}}

/* ============================================================
   主题分段开关(首页 Hero 醒目切换)
   ============================================================ */
.theme-seg{display:inline-flex;gap:6px;padding:5px;background:rgba(22,27,34,.55);border:1px solid rgba(255,255,255,.12);border-radius:999px;backdrop-filter:blur(10px)}
.theme-seg button{border:none;background:transparent;color:#9aa4b2;font-size:13px;padding:7px 18px;border-radius:999px;cursor:pointer;font-family:inherit;transition:.2s}
.theme-seg button:hover{color:#fff}
.theme-seg button.on{background:linear-gradient(135deg,#2563eb,#3b82f6);color:#fff;font-weight:700;box-shadow:0 4px 14px rgba(37,99,235,.4)}
html:not([data-theme-early="dark"]) .theme-seg{background:rgba(255,255,255,.7);border-color:rgba(60,80,120,.14)}
html:not([data-theme-early="dark"]) .theme-seg button{color:#64748b}
html:not([data-theme-early="dark"]) .theme-seg button:hover{color:#0f172a}
html:not([data-theme-early="dark"]) .theme-seg button.on{color:#fff}

/* ============================================================
   V1.5.0 · 搜索高亮 / 打印按钮 / 学习目标注入 / 新手引导 / 打印样式
   ============================================================ */
.search-hit mark{background:rgba(250,204,21,.35);color:#fde68a;border-radius:3px;padding:0 2px}
html:not([data-theme-early="dark"]) .search-hit mark{background:rgba(250,204,21,.45);color:#854d0e}
/* 打印按钮样式已并入上方工具区统一令牌(V2.1.12c) */
.nav-print{flex-shrink:0}
.nav-print svg{width:15px;height:15px}
.page-goals{margin-top:6px}
/* 更新日期+核实状态印章 */
.page-stamp{text-align:center;font-size:12px;color:#6b7280;margin:12px 0 0}
html:not([data-theme-early="dark"]) .page-stamp{color:#64748b}
/* 术语悬浮提示气泡 */
.term-tip{position:fixed;z-index:400;max-width:260px;background:rgba(17,22,30,.95);border:1px solid rgba(59,130,246,.45);border-radius:10px;padding:10px 14px;font-size:12.5px;color:#c9d1d9;line-height:1.7;box-shadow:0 14px 40px rgba(0,0,0,.45);pointer-events:none;animation:fadeUp .18s ease both}
.term-tip b{color:#9ecbff;margin-right:6px}
html:not([data-theme-early="dark"]) .term-tip{background:rgba(255,255,255,.97);border-color:rgba(37,99,235,.35);color:#334155;box-shadow:0 14px 40px rgba(40,80,160,.2)}
html:not([data-theme-early="dark"]) .term-tip b{color:#2563eb}
/* KaTeX 公式块(LaTeX 渲染前显示为等宽原文) */
.formula{display:block;text-align:center;margin:14px auto;padding:12px 14px;background:rgba(13,17,23,.6);border:1px solid rgba(255,255,255,.08);border-radius:10px;overflow-x:auto;font-size:16px;color:#e6edf3;font-family:KaTeX_Main,"Times New Roman",serif}
html:not([data-theme-early="dark"]) .formula{background:#ffffff;border-color:rgba(60,80,120,.14);color:#0f172a}
/* Giscus 评论区 */
.giscus-wrap{margin:30px 0}
.giscus-wrap h2{margin-bottom:14px}
/* 移动端抽屉导航(首页) */
.nav-ham{display:none;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);color:#c9d1d9;font-size:15px;height:30px;padding:0 10px;border-radius:8px;cursor:pointer;font-family:inherit;align-items:center}
.nav-ham:hover{background:rgba(59,130,246,.28);color:#fff}
.drawer{position:fixed;top:0;right:0;bottom:0;width:260px;max-width:82vw;background:rgba(13,17,23,.98);border-left:1px solid rgba(255,255,255,.1);z-index:250;transform:translateX(100%);transition:transform .25s;padding:60px 20px 20px;display:flex;flex-direction:column;gap:4px;overflow-y:auto}
.drawer.open{transform:translateX(0)}
.drawer a{color:#9aa4b2;font-size:14.5px;padding:11px 14px;border-radius:10px;text-decoration:none}
.drawer a:hover{background:rgba(59,130,246,.15);color:#fff;text-decoration:none}
.drawer-close{position:absolute;top:14px;right:14px;background:rgba(255,255,255,.08);border:none;color:#c9d1d9;width:32px;height:32px;border-radius:8px;cursor:pointer;font-size:14px}
html:not([data-theme-early="dark"]) .drawer{background:rgba(255,255,255,.98);border-left-color:rgba(60,80,120,.14)}
html:not([data-theme-early="dark"]) .drawer a{color:#334155}
html:not([data-theme-early="dark"]) .drawer a:hover{background:rgba(37,99,235,.1);color:#0f172a}
@media (max-width:900px){ .nav-ham{display:block} }

/* ---------- 新手引导 ---------- */
.onboard-overlay{position:fixed;inset:0;z-index:300;background:rgba(4,8,14,.78);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:20px;transition:opacity .3s}
.onboard-overlay.hide{opacity:0;pointer-events:none}
.onboard-card{width:100%;max-width:480px;background:linear-gradient(160deg,#16233c,#0d1117);border:1px solid rgba(59,130,246,.45);border-radius:20px;padding:30px 28px 22px;box-shadow:0 30px 90px rgba(0,0,0,.6)}
.onboard-title{font-size:20px;font-weight:800;color:#fff;margin-bottom:12px}
.onboard-desc{font-size:14px;color:#c9d1d9;line-height:1.9;min-height:96px}
.onboard-nav{display:flex;align-items:center;justify-content:space-between;margin-top:22px;border-top:1px solid rgba(255,255,255,.08);padding-top:16px}
.onboard-dots{display:flex;gap:6px}
.onboard-dot{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.18);transition:.2s}
.onboard-dot.on{background:#3b82f6;box-shadow:0 0 8px rgba(59,130,246,.8);width:20px;border-radius:99px}
.onboard-btns{display:flex;gap:10px;align-items:center}
.onboard-skip{background:none;border:none;color:#6b7280;font-size:13px;cursor:pointer;font-family:inherit}
.onboard-skip:hover{color:#c9d1d9}
.onboard-next{background:linear-gradient(135deg,#2563eb,#3b82f6);border:none;color:#fff;font-size:14px;font-weight:700;padding:9px 20px;border-radius:10px;cursor:pointer;font-family:inherit}
.onboard-next:hover{filter:brightness(1.15)}
html:not([data-theme-early="dark"]) .onboard-overlay{background:rgba(240,245,253,.72)}
html:not([data-theme-early="dark"]) .onboard-card{background:linear-gradient(160deg,#ffffff,#eef3fb);border-color:rgba(37,99,235,.35);box-shadow:0 30px 80px rgba(40,80,160,.25)}
html:not([data-theme-early="dark"]) .onboard-title{color:#0f172a}
html:not([data-theme-early="dark"]) .onboard-desc{color:#3a4759}
html:not([data-theme-early="dark"]) .onboard-nav{border-top-color:rgba(60,80,120,.12)}
html:not([data-theme-early="dark"]) .onboard-skip{color:#64748b}

/* ---------- 打印样式(打印 / 导出 PDF) ---------- */
@media print{
  body{padding-top:0!important;background:#fff!important;color:#000!important}
  /* V2.1.14 补齐:AI 悬浮球/面板、横滑箭头与进度圆点、循环克隆卡(data-clone)、
     移动端抽屉(translateX(100%) 撑宽页面的隐患)、汉堡/板块下拉/版本胶囊/进度环 */
  .topnav,.toc-sidebar,.toc-toggle,.backtop,.prevnext,.site-footer,.nav-done,.nav-theme,.nav-search,.nav-print,.onboard-overlay,.theme-seg,
  .ai-fab-btn,.ai-fab-panel,.rm-nav,.rm-progress,.rm-step[data-clone],.drawer,.nav-ham,.nav-dd,.nav-ver,.nav-prog{display:none!important}
  .container,.breadcrumb{max-width:100%!important;margin:0!important}
  body.has-toc .container,body.has-toc .prevnext,body.has-toc .breadcrumb{margin:0!important}
  a{color:#000!important;text-decoration:underline}
  h1,h2,h3,h4,strong{color:#000!important}
  p,li,td{color:#222!important}
  .card,.quiz,.progress-panel,table,pre,details.faq{background:#fff!important;border:1px solid #999!important;box-shadow:none!important}
  .quiz-options button{background:#f2f2f2!important;border:1px solid #bbb!important;color:#000!important}
  .quiz-feedback,.quiz-explain{display:block!important;color:#333!important}
  pre{background:#f4f4f4!important;color:#111!important}
  .hero-search,.tags,.gloss-search,.gloss-cats{display:none!important}
}

/* ============================================================
   V1.5.0 · 今日复习 SRS 面板
   ============================================================ */
#srsPanel{margin:14px 0 4px}
.srs-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:12px}
.srs-title{font-size:16px;font-weight:800;color:#fff}
.srs-stats{display:flex;gap:14px;flex-wrap:wrap}
.srs-stat{font-size:12.5px;color:#9aa4b2}
.srs-stat b{color:#3b82f6;font-size:15px;margin-right:4px}
.srs-done{background:rgba(34,197,94,.1);border:1px dashed rgba(34,197,94,.4);color:#86efac;border-radius:10px;padding:12px 16px;font-size:14px;font-weight:600;text-align:center}
.srs-actions{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.srs-btn{background:rgba(59,130,246,.14);border:1px solid rgba(59,130,246,.4);color:#9ecbff;font-size:13px;padding:8px 16px;border-radius:9px;cursor:pointer;font-family:inherit}
.srs-btn:hover{background:rgba(59,130,246,.3);color:#fff}
.srs-btn.ok{background:rgba(34,197,94,.16);border-color:rgba(34,197,94,.5);color:#86efac}
.srs-btn.no{background:rgba(239,68,68,.14);border-color:rgba(239,68,68,.5);color:#fca5a5}
.srs-btn.ghost{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.14);color:#6b7280}
.srs-tip{font-size:12px;color:#6b7280;margin:4px 0 12px}
.srs-card{background:rgba(22,27,34,.85);border:1px solid rgba(59,130,246,.35);border-radius:14px;padding:18px 20px}
.srs-q{font-size:12px;color:#6b7280;margin-bottom:8px}
.srs-tag{background:rgba(59,130,246,.16);color:#9ecbff;border-radius:6px;padding:2px 8px;margin-right:8px;font-size:11.5px}
.srs-question{font-size:15px;color:#fff;font-weight:700;margin-bottom:12px;line-height:1.7}
.srs-options{display:flex;flex-direction:column;gap:8px}
.srs-opt{text-align:left;background:rgba(13,17,23,.8);border:1px solid rgba(255,255,255,.12);color:#c9d1d9;font-size:13.5px;padding:9px 14px;border-radius:9px;cursor:pointer;font-family:inherit}
.srs-opt:hover:not(:disabled){border-color:#3b82f6;color:#fff}
.srs-opt:disabled{cursor:default;opacity:.75}
.srs-opt.correct{border-color:#22c55e;background:rgba(34,197,94,.15);color:#86efac;font-weight:700}
.srs-opt.wrong{border-color:#ef4444;background:rgba(239,68,68,.15);color:#fca5a5}
.srs-fb{margin-top:10px;font-size:13px;font-weight:700}
.srs-fb.ok{color:#86efac}.srs-fb.no{color:#fca5a5}
.srs-explain{margin-top:10px;padding:10px 14px;background:rgba(59,130,246,.08);border-left:3px solid #3b82f6;border-radius:0 8px 8px 0;font-size:13px;color:#aab8c8;line-height:1.8}
.srs-after{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
html:not([data-theme-early="dark"]) .srs-title{color:#0f172a}
html:not([data-theme-early="dark"]) .srs-stat{color:#64748b}
html:not([data-theme-early="dark"]) .srs-done{background:rgba(34,197,94,.1);border-color:rgba(34,197,94,.4);color:#15803d}
html:not([data-theme-early="dark"]) .srs-btn{background:rgba(37,99,235,.08);border-color:rgba(37,99,235,.3);color:#1d4ed8}
html:not([data-theme-early="dark"]) .srs-btn.ghost{background:rgba(255,255,255,.6);border-color:rgba(60,80,120,.2);color:#64748b}
html:not([data-theme-early="dark"]) .srs-card{background:rgba(255,255,255,.7);border-color:rgba(37,99,235,.3);box-shadow:0 10px 30px rgba(50,80,140,.08)}
html:not([data-theme-early="dark"]) .srs-question{color:#0f172a}
html:not([data-theme-early="dark"]) .srs-opt{background:rgba(255,255,255,.75);border-color:rgba(60,80,120,.16);color:#334155}
html:not([data-theme-early="dark"]) .srs-explain{background:rgba(37,99,235,.07);border-left-color:#2563eb;color:#4b5c74}

/* ============================================================
   V1.5.0 · 进度可视化(环形图 + 日历热力图)
   ============================================================ */
.progress-vis{display:flex;gap:22px;flex-wrap:wrap;align-items:center;margin:6px 0 14px}
.ring-wrap{position:relative;width:120px;height:120px;flex-shrink:0}
.ring-wrap svg{transform:rotate(-90deg)}
.ring-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ring-center .v{font-size:24px;font-weight:900;color:#fff}
.ring-center .k{font-size:10.5px;color:#6b7280}
.heat-wrap{flex:1;min-width:260px}
.heat-title{font-size:12.5px;color:#9aa4b2;margin-bottom:8px}
.heat-grid{display:grid;grid-template-columns:repeat(14,1fr);gap:4px;max-width:420px}
.heat-day{aspect-ratio:1;border-radius:4px;background:rgba(255,255,255,.06);min-height:14px}
.heat-day.l1{background:rgba(59,130,246,.3)}
.heat-day.l2{background:rgba(59,130,246,.55)}
.heat-day.l3{background:rgba(37,99,235,.8)}
.heat-day.l4{background:#3b82f6}
.heat-day.today{outline:2px solid #22c55e}
.heat-legend{display:flex;align-items:center;gap:5px;margin-top:8px;font-size:11px;color:#6b7280}
.heat-legend i{width:12px;height:12px;border-radius:3px;display:inline-block}
html:not([data-theme-early="dark"]) .ring-center .v{color:#0f172a}
html:not([data-theme-early="dark"]) .heat-title{color:#5a6a85}
html:not([data-theme-early="dark"]) .heat-day{background:rgba(60,80,120,.1)}
@media (max-width:600px){
  .heat-grid{grid-template-columns:repeat(10,1fr)}
}

/* ===== 悬停微放大 + 丝滑弹性(2026-08-17 补强,卡片弹性动画已有)
   V2.1.7:transform 放大包进 @media(hover:hover),触屏点击后不再残留放大态 ===== */
.quiz-options button,.term-card,.pn-item,.rm-step,.step-item,.toc-sidebar a,.nav-links a,.search-hit,.lab,details.faq,.srs-opt,.srs-card,.gloss-cats button{
  transition:transform .22s cubic-bezier(.2,.8,.3,1.18),background-color .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease;
}
@media (hover:hover){
  .quiz-options button:hover,.term-card:hover,.pn-item:hover,.rm-step:hover,.step-item:hover,.toc-sidebar a:hover,.nav-links a:hover,.search-hit:hover,details.faq:hover,.srs-opt:hover,.srs-card:hover,.gloss-cats button:hover{transform:scale(1.025)}
  .nav-links a:hover,.toc-sidebar a:hover{transform:scale(1.045)}
}

/* ---------- V2.1.8 顶栏版本胶囊(全站统一:首页静态顶栏与内容页注入顶栏共用) ---------- */
.nav-ver{margin-left:auto;font-size:11.5px;color:#9aa4b2;text-decoration:none;border:1px solid rgba(255,255,255,.1);border-radius:999px;height:30px;display:inline-flex;align-items:center;padding:0 11px;white-space:nowrap;transition:color .15s,border-color .15s;flex-shrink:0}
/* V2.1.12c:版本胶囊绿色呼吸小点(与 hero 版本徽章同款语义:持续更新) */
.ver-dot{width:6px;height:6px;border-radius:99px;background:#22c55e;box-shadow:0 0 7px rgba(34,197,94,.85);margin-right:6px;animation:verBlink 2.4s ease-in-out infinite}
@keyframes verBlink{0%,100%{opacity:1}50%{opacity:.35}}
.nav-ver{gap:0;font-family:Consolas,"Courier New",monospace;letter-spacing:.3px}
.nav-ver:hover{color:#fff;border-color:rgba(255,255,255,.3)}
html:not([data-theme-early="dark"]) .nav-ver{color:#64748b;border-color:rgba(100,116,139,.3)}
html:not([data-theme-early="dark"]) .nav-ver:hover{color:#0f172a;border-color:rgba(100,116,139,.5)}
/* V2.1.12b:单色 SVG 图标与文字的间距(替代原 emoji 空格) */
.nav-search svg{display:block}
html:not([data-theme-early="dark"]) .nav-ver{color:#64748b;border-color:rgba(100,116,139,.4)}
html:not([data-theme-early="dark"]) .nav-ver:hover{color:#2563eb;border-color:#2563eb}
/* V2.1.8 窄屏顶栏减负:版本/打印/自检/搜索快捷键徽标退出,保 brand+主题+搜索+打卡+汉堡 */
@media (max-width:640px){
  .topnav .nav-ver{display:none}
}

/* ---------- V2.1.11 顶栏阅读进度环 ---------- */
.nav-prog{display:inline-flex;align-items:center;gap:4px;margin-left:10px;cursor:default}
.nav-prog svg{display:block}
.nav-prog .np-t{fill:none;stroke:rgba(255,255,255,.18);stroke-width:3.6}
.nav-prog .np-p{fill:none;stroke:#3b82f6;stroke-width:3.6;stroke-linecap:round;transition:stroke-dashoffset .15s linear}
.nav-prog i{font-style:normal;font-size:10px;color:#9aa4b2;min-width:24px}
html:not([data-theme-early="dark"]) .nav-prog .np-t{stroke:rgba(100,116,139,.25)}
html:not([data-theme-early="dark"]) .nav-prog i{color:#64748b}
@media (max-width:640px){.nav-prog{display:none}}

/* ---------- V2.1.11 卡片滚动错峰入场:site.js 只对初始视口外元素加 .rv-hold,
   进入视口移除并重播 fadeUp;本规则须可覆盖上方原 fadeUp 规则(同特异性靠后取胜) ---------- */
.rv-hold{animation:none;opacity:0}

/* V2.1.12c:主题切换涟漪特效已按反馈移除(低端机切换卡顿),瞬时切换 */

/* ============================================================
   V2.1.15 · 目录树:h2 章节分组可折叠 + h3 知识点子项
   (无 h3 页面仍为旧版平铺;折叠记忆 localStorage site-toc-expand-v1;
    过渡只用 color/transform,不新增 backdrop-filter,遵守浅色性能红线)
   ============================================================ */
.toc-title{display:flex;align-items:center;justify-content:space-between;gap:6px}
.toc-tools{display:inline-flex;gap:4px}
.toc-tool{border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:#9aa4b2;font-size:10px;line-height:1;padding:3px 7px;border-radius:6px;cursor:pointer;font-family:inherit}
.toc-tool:hover{color:#fff;border-color:rgba(255,255,255,.3)}
.toc-tree{margin:2px 0 0}
.toc-group{margin:1px 0}
.toc-head{display:flex;align-items:center}
.toc-head a{flex:1;font-weight:600}
/* V2.1.15b:箭头热区 18→26px(此前过小,用户点不中导致「无法收起」的观感) */
button.toc-caret{width:26px;flex:0 0 26px;height:30px;border:none;background:none;color:#6b7280;cursor:pointer;font-size:11px;padding:0;display:flex;align-items:center;justify-content:center;transition:color .15s}
button.toc-caret::before{content:"▾"}
.toc-group.collapsed button.toc-caret::before{content:"▸"}
button.toc-caret:hover{color:#58a6ff}
.toc-nocaret{width:26px;flex:0 0 26px;display:flex;align-items:center;justify-content:center;font-size:11px;color:#5b6472}
.toc-nocaret::before{content:"▾";opacity:.35}
.toc-sidebar ul.toc-sub{list-style:none;padding:0;margin:0}
.toc-sidebar .toc-sub a{padding-left:30px;font-size:12px;line-height:1.45}
.toc-group.collapsed .toc-sub{display:none}
html:not([data-theme-early="dark"]) .toc-tool{background:rgba(255,255,255,.7);border-color:rgba(100,116,139,.25);color:#64748b}
html:not([data-theme-early="dark"]) .toc-tool:hover{color:#2563eb;border-color:#2563eb}
html:not([data-theme-early="dark"]) button.toc-caret{color:#64748b}
html:not([data-theme-early="dark"]) button.toc-caret:hover{color:#2563eb}

/* ===== V2.1.28 对比度轮(全站审查报告 2026-09-12):状态/语义色浅色覆写补齐 =====
   背景:以下类原本只有深色设计(浅色字 + 半透明色底),浅色主题下直接落在浅底上
   (对答对/答错反馈、导航按钮、标签等),对比度 1.0~1.5,属真实可读性缺陷 */
html:not([data-theme-early="dark"]) .quiz-options button.correct,
html:not([data-theme-early="dark"]) .srs-opt.correct{color:#15803d}
html:not([data-theme-early="dark"]) .quiz-options button.wrong,
html:not([data-theme-early="dark"]) .srs-opt.wrong{color:#b91c1c}
html:not([data-theme-early="dark"]) .quiz-feedback.ok,
html:not([data-theme-early="dark"]) .srs-fb.ok{color:#15803d}
html:not([data-theme-early="dark"]) .quiz-feedback.no,
html:not([data-theme-early="dark"]) .srs-fb.no{color:#b91c1c}
html:not([data-theme-early="dark"]) .srs-btn.ok{color:#146c3c}
html:not([data-theme-early="dark"]) .nav-done.on{color:#146c3c}
html:not([data-theme-early="dark"]) .srs-tag{color:#1d4ed8}
html:not([data-theme-early="dark"]) .rm-step .rm-links a{color:#1d4ed8}
html:not([data-theme-early="dark"]) .search-hit mark{color:#92400e}
html:not([data-theme-early="dark"]) .card.featured .d{color:#334155}
html:not([data-theme-early="dark"]) .nav-search,
html:not([data-theme-early="dark"]) .nav-done,
html:not([data-theme-early="dark"]) .nav-theme,
html:not([data-theme-early="dark"]) .nav-print,
html:not([data-theme-early="dark"]) .nav-dd-btn,
html:not([data-theme-early="dark"]) .nav-ham,
html:not([data-theme-early="dark"]) .search-close,
html:not([data-theme-early="dark"]) .drawer-close{color:#475569}
html:not([data-theme-early="dark"]) .topnav .nav-brand{color:#0f172a}
html:not([data-theme-early="dark"]) .topnav .nav-links a:hover{color:#0f172a;background:rgba(15,23,42,.06)}
html:not([data-theme-early="dark"]) .nav-search:hover,
html:not([data-theme-early="dark"]) .nav-done:hover,
html:not([data-theme-early="dark"]) .nav-theme:hover,
html:not([data-theme-early="dark"]) .nav-print:hover,
html:not([data-theme-early="dark"]) .nav-dd-btn:hover{color:#0f172a}
html:not([data-theme-early="dark"]) .gloss-cats button:hover{color:#1d4ed8}
html:not([data-theme-early="dark"]) .srs-opt:hover:not(:disabled){color:#1d4ed8}
html:not([data-theme-early="dark"]) .term-card .term-name{color:#0f172a}
html:not([data-theme-early="dark"]) .term-card .term-en{color:#64748b}
html:not([data-theme-early="dark"]) .term-card .term-desc{color:#475569}

html:not([data-theme-early="dark"]) .srs-btn.no{color:#b91c1c}
html:not([data-theme-early="dark"]) .topnav .nav-links a{color:#334155}
html:not([data-theme-early="dark"]) .pbar-row .pl{color:#64748b}

html:not([data-theme-early="dark"]) .term-card .term-link{color:#1d4ed8}
