/* ===== 学习库 · 统一样式 =====
   设计：浅色纸感 + 深蓝主色（与高数 HTML 呼应）
   可拓展：新书/新科目只需加数据 js，样式零改动 */
:root{
  color-scheme:dark;
  --c-bg:#16181d;
  --c-surface:#20242c;
  --c-ink:#e3e5ea;
  --c-muted:#9aa0ab;
  --c-blue:#7fa8d9;
  --c-blue2:#8fb4e0;
  --c-accent:#e0a04a;
  --c-line:#353a44;
  --c-soft:#262b34;
  --radius:10px;
  --shadow:0 2px 10px rgba(0,0,0,.45);
}
@media(prefers-color-scheme:light){
  :root{color-scheme:light;--c-bg:#f4f2ed;--c-surface:#ffffff;--c-ink:#242424;--c-muted:#66605a;--c-blue:#1f3a5f;--c-blue2:#2c4a6e;--c-accent:#d98e2b;--c-line:#e3ded5;--c-soft:#faf8f4;--shadow:0 2px 10px rgba(0,0,0,.06)}
}
html[data-theme="light"]{color-scheme:light;--c-bg:#f4f2ed;--c-surface:#ffffff;--c-ink:#242424;--c-muted:#66605a;--c-blue:#1f3a5f;--c-blue2:#2c4a6e;--c-accent:#d98e2b;--c-line:#e3ded5;--c-soft:#faf8f4;--shadow:0 2px 10px rgba(0,0,0,.06)}
html[data-theme="dark"]{color-scheme:dark;--c-bg:#16181d;--c-surface:#20242c;--c-ink:#e3e5ea;--c-muted:#9aa0ab;--c-blue:#7fa8d9;--c-blue2:#8fb4e0;--c-accent:#e0a04a;--c-line:#353a44;--c-soft:#262b34;--shadow:0 2px 10px rgba(0,0,0,.45)}
/* 章节内嵌样式常写死浅色背景；首帧直接按主题覆盖，避免换章时先闪白再变暗。 */
@media(prefers-color-scheme:dark){html:not([data-theme="light"]),html:not([data-theme="light"]) body{background:#16181d !important;color:#e3e5ea}}
@media(prefers-color-scheme:light){html:not([data-theme="dark"]),html:not([data-theme="dark"]) body{background:#f4f2ed !important;color:#242424}}
html[data-theme="dark"],html[data-theme="dark"] body{background:#16181d !important;color:#e3e5ea}
html[data-theme="light"],html[data-theme="light"] body{background:#f4f2ed !important;color:#242424}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:"Songti SC","Noto Serif CJK SC","SimSun",Georgia,serif;color:var(--c-ink);background:var(--c-bg);line-height:1.8;font-size:16px}
a{color:var(--c-blue2);text-decoration:none}
a:hover{text-decoration:underline}

/* ---------- 顶部导航 ---------- */
.site-header{position:sticky;top:0;z-index:50;background:linear-gradient(135deg,var(--c-blue),var(--c-blue2));color:#fff;box-shadow:0 2px 10px rgba(0,0,0,.22)}
.header-inner{max-width:1100px;margin:0 auto;padding:10px 18px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.brand{font-size:17px;font-weight:700;letter-spacing:.5px;white-space:nowrap}
.brand a{color:#fff}
.site-nav{display:flex;gap:6px;flex-wrap:wrap}
.site-nav a{color:#cfe0f2;font-size:13px;padding:3px 10px;border:1px solid #46648a;border-radius:14px;white-space:nowrap}
.site-nav a:hover,.site-nav a.active{background:#46648a;color:#fff;text-decoration:none}
.search-wrap{position:relative;flex:1;min-width:220px}
.search-wrap input{width:100%;border:0;border-radius:16px;padding:7px 14px;font-size:14px;font-family:inherit;outline:none;background:#fff}
.search-wrap input[type="search"]{padding-right:104px}
.search-mode-toggle{position:absolute;right:10px;top:50%;z-index:2;display:flex;align-items:center;gap:5px;transform:translateY(-50%);color:var(--c-muted);font:11px/1.2 "Microsoft YaHei","PingFang SC",sans-serif;cursor:pointer;white-space:nowrap}
.search-wrap .search-mode-toggle input[type="checkbox"]{appearance:auto;width:13px;height:13px;margin:0;padding:0;border:initial;border-radius:0;background:initial;accent-color:var(--c-blue)}
.search-results{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid var(--c-line);border-radius:var(--radius);box-shadow:0 6px 20px rgba(0,0,0,.12);max-height:60vh;overflow:auto;display:none;z-index:60}
.search-results .sr-item{padding:8px 14px;border-bottom:1px solid var(--c-line);cursor:pointer;font-size:14px}
.search-results .sr-item:hover{background:var(--c-soft)}
.search-results .sr-item .t{font-size:14px}
.search-results .sr-item .m{font-size:12px;color:var(--c-muted)}
.search-results .sr-empty{padding:10px 14px;font-size:13px;color:var(--c-muted)}

/* ---------- 主体 ---------- */
main{max-width:1100px;margin:0 auto;padding:26px 18px 90px}
.hero{background:var(--c-surface);border-radius:var(--radius);padding:28px 32px;box-shadow:var(--shadow);margin-bottom:22px}
.hero h1{margin:0 0 10px;font-size:27px}
.hero p{margin:5px 0;color:var(--c-muted);font-size:15px}
h2.section{font-size:20px;margin:36px 0 14px;padding-bottom:6px;border-bottom:2px solid var(--c-blue)}

/* ---------- 卡片 ---------- */
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.card{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}
.card h3{margin:0 0 6px;font-size:17px}
.card .meta{font-size:13px;color:var(--c-muted);display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px;align-items:center}
.badge{display:inline-block;font-size:12px;padding:1px 9px;border-radius:10px;white-space:nowrap}
.badge.ready{background:#e7f3e7;color:#2d6a2d}
.badge.pending{background:#f7e9d8;color:#8a5a1f}
.badge.en{background:#e6f1fb;color:#185fa5}
.badge.zh{background:#faeeda;color:#8a5a1f}
.badge.main{background:#fcebeb;color:#a32d2d}
.badge.extra{background:#eef0f3;color:#5f5e5a}
.card .desc{font-size:14px;color:var(--c-ink)}
.card .links{margin-top:10px;font-size:14px}
.card .links a{margin-right:12px}

/* ---------- 科目/标签 ---------- */
.subj-row{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}
.chip{display:inline-block;font-size:13px;padding:3px 12px;border:1px solid var(--c-line);border-radius:14px;background:var(--c-soft);color:var(--c-blue2);cursor:pointer}
.chip:hover{background:#e6f1fb;text-decoration:none}

/* ---------- 对照表 ---------- */
table.map{width:100%;border-collapse:collapse;background:var(--c-surface);box-shadow:var(--shadow);font-size:14px}
table.map th,table.map td{border:1px solid var(--c-line);padding:8px 12px;text-align:left;vertical-align:top}
table.map th{background:var(--c-blue);color:#fff;font-weight:500}
table.map tr:nth-child(even){background:var(--c-soft)}

/* ---------- 学习路径 ---------- */
ol.path{padding-left:22px}
ol.path li{margin:6px 0;font-size:15px}
ol.path .stars{color:var(--c-accent);font-size:13px}
ol.path .tag{font-size:12px;color:var(--c-muted);margin-left:8px}

/* ---------- 进度 ---------- */
.progress-bar{height:8px;background:var(--c-line);border-radius:4px;overflow:hidden;margin-top:8px}
.progress-bar i{display:block;height:100%;width:0;background:var(--c-accent);transition:width .3s}
.btn{display:inline-block;font-size:13px;padding:3px 12px;border:1px solid var(--c-blue2);border-radius:14px;color:var(--c-blue2);background:#fff;cursor:pointer}
.btn:hover{background:var(--c-blue);color:#fff;text-decoration:none}
.btn.done{background:var(--c-blue);color:#fff}

/* ---------- 阅读进度与相关内容 ---------- */
.reader-progress{position:relative;z-index:8;width:100%;border-bottom:1px solid var(--c-line);background:var(--c-bg);font-family:"Microsoft YaHei","PingFang SC",sans-serif}
.reader-progress-track{height:3px;background:var(--c-line);overflow:hidden}
.reader-progress-track i{display:block;width:0;height:100%;background:var(--c-accent);transition:width .2s ease}
.reader-progress-meta{display:flex;align-items:center;justify-content:flex-end;gap:12px;min-height:30px;padding:0 max(18px,calc((100% - 980px)/2));color:var(--c-muted);font-size:11px;line-height:1}
.reader-progress-meta button{padding:3px 0;border:0;background:transparent;color:var(--c-blue2);font:inherit;cursor:pointer}
.reader-progress-meta button:hover,.reader-progress-meta button.done{color:var(--c-accent)}
.toc-progress-meta{display:flex;align-items:center;gap:7px;margin-top:9px;color:var(--c-muted);font:11px/1.2 "Microsoft YaHei","PingFang SC",sans-serif}
.toc-progress-bar{display:block;width:74px;height:4px;background:var(--c-line);overflow:hidden}
.toc-progress-bar i{display:block;width:0;height:100%;background:var(--c-accent);transition:width .2s ease}
.toc-progress-meta small{font-size:11px}
.reader-resume-card{display:grid;grid-template-columns:max-content minmax(0,1fr) max-content;align-items:center;gap:12px;margin:0 0 18px;padding:13px 15px;border-left:3px solid var(--c-accent);background:var(--c-soft);font-family:"Microsoft YaHei","PingFang SC",sans-serif}
.reader-resume-kicker{color:var(--c-muted);font-size:11px;letter-spacing:.08em}
.reader-resume-card a{min-width:0;overflow:hidden;color:var(--c-blue2);font-size:14px;text-overflow:ellipsis;white-space:nowrap}
.reader-resume-card small{color:var(--c-muted);font-size:11px;white-space:nowrap}
.reader-related-links{max-width:980px;margin:0 auto 28px;padding:18px 20px;border:1px solid var(--c-line);background:var(--c-surface);font-family:"Microsoft YaHei","PingFang SC",sans-serif}
.reader-related-head>span{color:var(--c-muted);font:10px/1.3 ui-monospace,"Cascadia Code",monospace;letter-spacing:.12em}
.reader-related-head h2{margin:4px 0 14px;color:var(--c-ink);font:600 18px/1.4 "Microsoft YaHei","PingFang SC",sans-serif}
.reader-related-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}
.reader-related-item{display:grid;grid-template-columns:max-content minmax(0,1fr);column-gap:8px;padding:10px 0;border-top:1px solid var(--c-line);color:var(--c-ink);text-decoration:none}
.reader-related-item:hover{color:var(--c-blue2);text-decoration:none}
.reader-related-kind{color:var(--c-accent);font-size:11px;line-height:1.7;white-space:nowrap}
.reader-related-item strong{min-width:0;font-size:13px;font-weight:500;line-height:1.7}
.reader-related-item small{grid-column:2;color:var(--c-muted);font-size:11px;line-height:1.6}
.home-resume-card{display:grid;grid-template-columns:max-content minmax(0,1fr) max-content;align-items:center;gap:16px;margin:0 0 28px;padding:16px 18px;border-left:3px solid var(--c-accent);background:var(--c-surface);box-shadow:var(--shadow);font-family:"Microsoft YaHei","PingFang SC",sans-serif}
.home-resume-kicker{color:var(--c-muted);font:10px/1.2 ui-monospace,"Cascadia Code",monospace;letter-spacing:.12em}
.home-resume-card strong{display:block;color:var(--c-ink);font-size:15px;font-weight:500;line-height:1.5}
.home-resume-card small{display:block;margin-top:3px;color:var(--c-muted);font-size:11px}
.home-resume-card>a{padding:5px 0;color:var(--c-blue2);font-size:13px;white-space:nowrap}
.concept-card.is-selected{background:var(--c-surface);outline:1px solid var(--c-blue2);outline-offset:-1px}
.concept-source-links{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:11px;padding-top:10px;border-top:1px solid var(--c-line);font-size:12px}
.concept-source-links a{color:var(--c-blue2)}

/* ---------- 书页（阅读器） ---------- */
.book-main{max-width:900px;margin:0 auto;padding:26px 20px 90px}
.breadcrumb{font-size:14px;color:var(--c-muted);margin-bottom:14px}
.breadcrumb a{color:var(--c-blue2)}
.toc-panel{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--radius);padding:14px 20px;margin-bottom:22px;box-shadow:var(--shadow)}
.toc-panel summary{cursor:pointer;font-size:15px;font-weight:500;color:var(--c-blue2);padding:4px 0}
.toc-panel ul{margin:4px 0 8px 18px;font-size:14px}
.toc-panel a{display:inline-block;padding:1px 0}

/* ---------- 章节页（拆分后） ---------- */
.chapter-nav{display:flex;justify-content:space-between;gap:12px;margin:30px 0 10px;font-size:15px}
.chapter-nav a{padding:6px 16px;border:1px solid var(--c-blue2);border-radius:16px;color:var(--c-blue2);background:#fff}
.chapter-nav a:hover{background:var(--c-blue);color:#fff;text-decoration:none}
.concept-chips{margin:6px 0;font-size:12px}
.concept-chips .chip{font-size:12px;padding:1px 9px;margin-right:4px}
.sol-link,.ex-link{display:inline-block;font-size:13px;color:var(--c-accent);margin:4px 0}
.ex-block,.sol-block{border-left:3px solid var(--c-line);padding:6px 14px;margin:10px 0;background:var(--c-soft)}
.sol-block{border-left-color:var(--c-accent)}

/* ---------- 书目录页（卡片网格 v0.5） ---------- */
.toc-group{margin-bottom:18px}
.toc-group h3{font-size:16px;margin:10px 0 8px;color:var(--c-blue)}
.toc-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.toc-card{display:block;background:var(--c-surface);border:1px solid var(--c-line);border-radius:10px;padding:14px 16px;box-shadow:var(--shadow);color:var(--c-ink);transition:transform .12s,border-color .12s}
.toc-card:hover{transform:translateY(-2px);border-color:var(--c-blue2);text-decoration:none}
.toc-card .t{display:block;font-size:15px;font-weight:500}
.toc-card .ck{display:block;font-size:12px;color:#bbb;margin-top:6px}
.toc-card .ck:not(.none){color:#2d6a2d}

/* ---------- 分级课程目录（v0.6） ---------- */
.main-books{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;border-top:1px solid var(--c-line)}
.book-card{position:relative;min-height:196px;display:flex;flex-direction:column;padding:24px 26px;border:0;border-right:1px solid var(--c-line);border-bottom:1px solid var(--c-line);border-radius:0;background:transparent;color:var(--c-ink);box-shadow:none;text-decoration:none;transition:background .15s ease}
.book-card:nth-child(2n){border-right:0}
.book-card:hover{background:var(--c-surface);text-decoration:none}
.book-card:focus-visible{outline:2px solid var(--c-blue);outline-offset:-2px}
.book-card.is-pending{opacity:.5;cursor:not-allowed}
.book-meta{display:block;margin-bottom:14px;color:var(--c-muted);font:11px/1.4 "Microsoft YaHei","PingFang SC",sans-serif;letter-spacing:.08em}
.book-name{display:block;color:var(--c-ink);font-size:18px;font-weight:600;line-height:1.55}
.book-desc{display:block;margin:8px 0 22px;color:var(--c-muted);font-size:13px;line-height:1.7}
.book-foot{display:flex;justify-content:space-between;align-items:center;margin-top:auto;color:var(--c-blue2);font:13px/1.4 "Microsoft YaHei","PingFang SC",sans-serif}
.book-foot b{font-size:18px;font-weight:400;transition:transform .15s ease}
.book-card:hover .book-foot b{transform:translateX(4px)}

/* 工具折叠区 */
details.tool{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--radius);padding:0 18px;margin-bottom:10px;box-shadow:var(--shadow)}
details.tool>summary{cursor:pointer;font-size:15px;font-weight:500;color:var(--c-blue2);padding:12px 0;list-style:none}
details.tool>summary::-webkit-details-marker{display:none}
details.tool>summary::before{content:"▸ ";color:var(--c-muted)}
details.tool[open]>summary::before{content:"▾ "}
details.tool>div{padding-bottom:14px}

/* ---------- 首页：大类 → 课程 → 教材 ---------- */
body.home{overflow-x:hidden;overflow-y:auto}
body.home .site-header{background:var(--c-bg);color:var(--c-ink);border-bottom:1px solid var(--c-line);box-shadow:none}
body.home .header-inner{padding-top:14px;padding-bottom:14px}
body.home .brand a{color:var(--c-ink);font-weight:600;letter-spacing:.12em}
body.home .search-wrap input{border:0;border-left:1px solid var(--c-line);border-radius:0;background:transparent;color:var(--c-ink);padding:7px 16px}
body.home .search-wrap input[type="search"]{padding-right:112px}
body.home>main{max-width:980px;min-height:calc(100vh - 72px);height:auto;display:flex;flex-direction:column;padding:54px 22px 110px}
#navcards{display:block;overflow:visible}
.library-intro{display:grid;grid-template-columns:1fr auto;column-gap:28px;padding-bottom:38px;border-bottom:1px solid var(--c-ink)}
.catalog-kicker{grid-column:1/-1;margin:0 0 22px;color:var(--c-muted);font:11px/1.4 ui-monospace,"Cascadia Code",monospace;letter-spacing:.12em}
.library-intro h1{margin:0;color:var(--c-blue);font-size:38px;line-height:1.2;font-weight:600;letter-spacing:.08em}
.catalog-lead{grid-column:1;margin:13px 0 0;color:var(--c-muted);font-size:14px}
.catalog-total{grid-column:2;grid-row:2/4;align-self:end;margin:0;color:var(--c-muted);font-size:13px;text-align:right}
.category-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-left:1px solid var(--c-line)}
.category-entry{min-height:210px;display:grid;grid-template-columns:42px 1fr auto;gap:14px;padding:28px 24px;border-right:1px solid var(--c-line);border-bottom:1px solid var(--c-line);color:var(--c-ink);text-decoration:none;transition:background .15s ease}
.category-entry:hover{background:var(--c-surface);text-decoration:none}
.category-entry:focus-visible{outline:2px solid var(--c-blue);outline-offset:-2px}
.category-no{color:var(--c-muted);font:12px/1.4 ui-monospace,"Cascadia Code",monospace}
.category-copy{min-width:0;display:flex;flex-direction:column}
.category-copy strong{color:var(--c-ink);font-size:20px;font-weight:600;letter-spacing:.04em}
.category-desc{margin-top:7px;color:var(--c-muted);font-size:13px;line-height:1.6}
.category-subjects{margin-top:auto;padding-top:24px;color:var(--c-muted);font-size:12px;line-height:1.7}
.category-meta{color:var(--c-muted);font:11px/1.8 "Microsoft YaHei","PingFang SC",sans-serif;text-align:right;white-space:nowrap}
.category-meta b{display:block;margin-top:38px;color:var(--c-blue2);font-size:19px;font-weight:400;transition:transform .15s ease}
.category-entry:hover .category-meta b{transform:translateX(4px)}
.tool-index{display:flex;flex-wrap:wrap;gap:18px;margin-top:32px;padding-top:15px;border-top:1px solid var(--c-line);font:13px/1.5 "Microsoft YaHei","PingFang SC",sans-serif}
.tool-index>span{margin-right:auto;color:var(--c-muted)}
.tool-index a{color:var(--c-ink);text-decoration:none;border-bottom:1px solid transparent}
.tool-index a:hover{border-bottom-color:var(--c-ink)}
/* L1 / L2 */
#view-home,#view-detail{flex:1;min-height:0;display:flex;flex-direction:column}
#view-detail{overflow:visible}
.detail-bar{display:flex;align-items:center;gap:18px;flex:none;margin-bottom:36px;padding-bottom:16px;border-bottom:1px solid var(--c-ink)}
body.home .detail-bar .btn{padding:0;border:0;border-radius:0;background:transparent;color:var(--c-muted);font-size:13px}
body.home .detail-bar .btn:hover{color:var(--c-blue);background:transparent}
.detail-bar #detail-title{margin-left:auto;color:var(--c-blue);font-size:24px;font-weight:600;letter-spacing:.06em}
#detail-body{flex:1}
.detail-intro{margin:-12px 0 30px;color:var(--c-muted);font-size:14px}
.course-list{border-top:1px solid var(--c-line)}
.course-row{min-height:96px;display:grid;grid-template-columns:54px 1fr auto;align-items:center;gap:14px;padding:18px 20px;border-bottom:1px solid var(--c-line);color:var(--c-ink);text-decoration:none;transition:background .15s ease}
.course-row:hover{background:var(--c-surface);text-decoration:none}
.course-row:focus-visible{outline:2px solid var(--c-blue);outline-offset:-2px}
.course-no{color:var(--c-muted);font:12px ui-monospace,"Cascadia Code",monospace}
.course-copy{display:flex;flex-direction:column;min-width:0}
.course-copy strong{color:var(--c-ink);font-size:18px;font-weight:600}
.course-copy small{margin-top:5px;overflow:hidden;color:var(--c-muted);font-size:12px;white-space:nowrap;text-overflow:ellipsis}
.course-count{color:var(--c-muted);font:12px "Microsoft YaHei","PingFang SC",sans-serif;white-space:nowrap}
.course-count b{display:inline-block;margin-left:18px;color:var(--c-blue2);font-size:18px;font-weight:400;transition:transform .15s ease}
.course-row:hover .course-count b{transform:translateX(4px)}
.resource-section{margin-bottom:42px}
.resource-heading{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:12px}
.resource-heading h2{margin:0;color:var(--c-ink);font-size:16px;font-weight:600;letter-spacing:.05em}
.resource-heading span{color:var(--c-muted);font-size:12px}
body.home .theme-btn{border-radius:0;box-shadow:none}

.img-missing{border:1px dashed var(--c-line);background:var(--c-soft);color:var(--c-muted);font-size:13px;padding:14px 16px;border-radius:8px;margin:10px 0;text-align:center}

/* ---------- 深色模式 ---------- */
body.dark{
  --c-bg:#16181d;
  --c-surface:#20242c;
  --c-ink:#e3e5ea;
  --c-muted:#9aa0ab;
  --c-blue:#7fa8d9;
  --c-blue2:#8fb4e0;
  --c-accent:#e0a04a;
  --c-line:#353a44;
  --c-soft:#262b34;
  --shadow:0 2px 10px rgba(0,0,0,.45);
}
body.dark .site-header{background:linear-gradient(135deg,#1c2733,#24303d)}
body.dark .site-nav a{color:#a9c2dd;border-color:#3d4c5e}
body.dark .site-nav a:hover,body.dark .site-nav a.active{background:#3d4c5e;color:#fff}
body.dark .search-wrap input{background:#2a2f39;color:#e3e5ea}
body.dark .search-wrap input::placeholder{color:#7a828f}
body.dark .search-results{background:#20242c;border-color:#353a44}
body.dark .search-results .sr-item:hover{background:#262b34}
body.dark .search-results .sr-item .m{color:#9aa0ab}
body.dark .navcard.on{background:#1d2c3d;box-shadow:inset 0 0 0 2px #2e4a66}
body.dark .dot.todo{background:#4a5058}
body.dark .open.pending{color:#6a7078}
body.dark .extra-chip{color:#8a8272;background:#262b34}
body.dark .extra-chip.ready{color:#8fb4e0;border-color:#2e4a66;background:#1d2c3d}
body.dark .chip{background:#262b34;color:#8fb4e0;border-color:#353a44}
body.dark .btn{background:#20242c;color:#8fb4e0;border-color:#8fb4e0}
body.dark .btn:hover,body.dark .btn.done{background:#1f3a5f;color:#fff;border-color:#1f3a5f}
body.dark table.map th{background:#1c2733}
body.dark table.map tr:nth-child(even){background:#262b34}
body.dark .subj-title,body.dark .ov-subj,body.dark .toc-group h3{color:#7fa8d9}
body.dark .ov-stat b{color:#7fa8d9}
body.dark details.tool>summary{color:#8fb4e0}
body.dark .chapter-nav a{background:#20242c;color:#8fb4e0;border-color:#8fb4e0}
body.dark .chapter-nav a:hover{background:#1f3a5f;color:#fff}
body.dark .toc-card{color:#e3e5ea}
body.dark .toc-card:hover{border-color:#8fb4e0}
/* 章页：压过内嵌的原书浅色样式 */
body.dark main,body.dark .book-content{background:#20242c !important;color:#e3e5ea !important;box-shadow:0 2px 18px rgba(0,0,0,.45) !important}
body.dark main h1,body.dark main h2,body.dark main h3,body.dark main h4{color:#8fb4e0 !important}
body.dark main p,body.dark main li,body.dark main td,body.dark main th{color:#e3e5ea !important}
body.dark main a{color:#8fb4e0}
body.dark main pre,body.dark main code{background:#262b34 !important;color:#d7dce3 !important}
body.dark main img{filter:brightness(.92)}
body.dark .toc-panel,body.dark details.tool{background:#20242c;border-color:#353a44}
body.dark .img-missing{background:#262b34;border-color:#353a44;color:#9aa0ab}
body.home.dark .site-header{background:var(--c-bg);color:var(--c-ink);box-shadow:none}
body.home.dark .search-wrap input{border-left-color:var(--c-line);background:transparent;color:var(--c-ink)}
body.home.dark main{background:transparent !important;box-shadow:none !important}

/* ---------- 云资料库 ---------- */
.cloud-page-title{margin-left:auto;color:var(--c-muted);font:13px/1.4 "Microsoft YaHei","PingFang SC",sans-serif;letter-spacing:.08em}
body.cloud-home>main.cloud-main{display:block;max-width:980px;padding-top:50px}
.cloud-intro{padding-bottom:30px;border-bottom:1px solid var(--c-ink)}
.cloud-intro h1{margin:0;color:var(--c-blue);font-size:38px;letter-spacing:.08em}
.cloud-intro>p:last-child{margin:12px 0 0;color:var(--c-muted);font-size:14px}
.cloud-status{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border-left:1px solid var(--c-line);margin:28px 0 46px}
.cloud-status>div{padding:18px 20px;border-top:1px solid var(--c-line);border-right:1px solid var(--c-line);border-bottom:1px solid var(--c-line)}
.cloud-status span{display:block;color:var(--c-muted);font:11px "Microsoft YaHei","PingFang SC",sans-serif;letter-spacing:.08em}
.cloud-status strong{display:block;margin-top:8px;color:var(--c-ink);font-size:18px;font-weight:600}
.cloud-status strong.is-ok{color:#5e9d6b}.cloud-status strong.is-warn{color:var(--c-accent)}
.cloud-upload{margin:0 0 46px;padding:26px;border:1px solid var(--c-line);background:var(--c-surface);box-shadow:var(--shadow)}
.cloud-upload-head{display:flex;align-items:end;justify-content:space-between;gap:28px;margin-bottom:20px}
.cloud-upload-head h2{margin:0;font-size:20px}.cloud-upload-head p{margin:5px 0 0;color:var(--c-muted);font-size:12px}.cloud-upload-head .catalog-kicker{margin:0 0 3px;color:var(--c-blue2)}
.cloud-placement{display:grid;grid-template-columns:minmax(150px,1fr) minmax(220px,1.5fr);gap:12px;min-width:min(470px,52%)}
.cloud-placement label{display:grid;gap:5px;color:var(--c-muted);font:11px "Microsoft YaHei","PingFang SC",sans-serif}
.cloud-placement select{width:100%;height:38px;padding:0 10px;border:1px solid var(--c-line);border-radius:4px;background:var(--c-bg);color:var(--c-ink);font:13px "Microsoft YaHei","PingFang SC",sans-serif;outline:none}
.cloud-placement select:focus{border-color:var(--c-blue2)}
.cloud-dropzone{display:grid;place-items:center;min-height:150px;padding:24px;border:1px dashed var(--c-blue2);background:var(--c-soft);text-align:center;cursor:pointer;transition:.15s ease}
.cloud-dropzone:hover,.cloud-dropzone:focus,.cloud-dropzone.is-dragging{border-style:solid;background:color-mix(in srgb,var(--c-blue) 9%,var(--c-soft));outline:none}
.cloud-dropzone strong{color:var(--c-blue2);font-size:16px}.cloud-dropzone span{margin-top:4px;color:var(--c-muted);font:12px "Microsoft YaHei","PingFang SC",sans-serif}
.cloud-upload-queue:not(:empty){margin-top:16px;border-top:1px solid var(--c-line)}
.cloud-queue-item{display:grid;grid-template-columns:minmax(0,1fr) 110px 76px;align-items:center;gap:14px;padding:11px 4px;border-bottom:1px solid var(--c-line);font:12px "Microsoft YaHei","PingFang SC",sans-serif}
.cloud-queue-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cloud-queue-name small{display:block;color:var(--c-muted);overflow:hidden;text-overflow:ellipsis}
.cloud-queue-progress{height:4px;background:var(--c-line);overflow:hidden}.cloud-queue-progress i{display:block;height:100%;width:0;background:var(--c-blue2);transition:width .12s linear}
.cloud-queue-status{color:var(--c-muted);text-align:right}.cloud-queue-status.is-ok{color:#5e9d6b}.cloud-queue-status.is-error{color:var(--c-accent);cursor:pointer;text-decoration:underline}
.cloud-browser{border-top:1px solid var(--c-line)}
.cloud-browser-head{display:flex;align-items:end;justify-content:space-between;gap:24px;padding:22px 0 16px}
.cloud-browser-head h2{margin:0;font-size:17px}.cloud-browser-head p{margin:4px 0 0;color:var(--c-muted);font-size:12px}
.cloud-browser-head input{width:min(360px,48%);padding:8px 0;border:0;border-bottom:1px solid var(--c-line);border-radius:0;background:transparent;color:var(--c-ink);font:13px "Microsoft YaHei","PingFang SC",sans-serif;outline:none}
.cloud-browser-head input:focus{border-bottom-color:var(--c-blue2)}
.cloud-manager-toolbar{display:flex;align-items:center;gap:14px;min-height:50px;padding:8px 0;border-top:1px solid var(--c-line);font:12px "Microsoft YaHei","PingFang SC",sans-serif}
.cloud-view-tabs{display:flex;border:1px solid var(--c-line)}.cloud-view-tabs button{padding:6px 14px;border:0;border-right:1px solid var(--c-line);background:transparent;color:var(--c-muted);cursor:pointer}.cloud-view-tabs button:last-child{border-right:0}.cloud-view-tabs button.active{background:var(--c-blue);color:#fff}
.cloud-select-all{display:flex;align-items:center;gap:6px;color:var(--c-muted);cursor:pointer;white-space:nowrap}.cloud-select-all input{accent-color:var(--c-blue)}
.cloud-selected-count{margin-left:auto;color:var(--c-muted);white-space:nowrap}
.cloud-batch-actions{display:flex;gap:6px}.cloud-batch-actions button,.cloud-file-actions button,.cloud-dialog-actions button{padding:6px 10px;border:1px solid var(--c-line);border-radius:3px;background:var(--c-surface);color:var(--c-ink);font:12px "Microsoft YaHei","PingFang SC",sans-serif;cursor:pointer}.cloud-batch-actions button:hover,.cloud-file-actions button:hover,.cloud-dialog-actions button:hover{border-color:var(--c-blue2);color:var(--c-blue2)}.cloud-batch-actions button:disabled,.cloud-file-actions button:disabled{opacity:.45;cursor:not-allowed}.cloud-batch-actions .danger,.cloud-file-actions .danger,.cloud-dialog-actions .danger{color:#c0574d;border-color:color-mix(in srgb,#c0574d 50%,var(--c-line))}
.cloud-feedback{margin:0 0 10px;padding:9px 12px;border-left:3px solid var(--c-blue2);background:var(--c-soft);color:var(--c-ink);font:12px "Microsoft YaHei","PingFang SC",sans-serif}.cloud-feedback.is-error{border-left-color:#c0574d}
.cloud-files{border-top:1px solid var(--c-line)}
.cloud-file{display:grid;grid-template-columns:1fr auto 24px;align-items:center;gap:16px;min-height:58px;padding:10px 12px;border-bottom:1px solid var(--c-line);color:var(--c-ink);text-decoration:none}
.cloud-file:hover{background:var(--c-surface);text-decoration:none}
.cloud-file-path{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.cloud-file-path small{display:block;color:var(--c-muted);font:10px "Microsoft YaHei","PingFang SC",sans-serif;overflow:hidden;text-overflow:ellipsis}
.cloud-file-meta{color:var(--c-muted);font:11px "Microsoft YaHei","PingFang SC",sans-serif;white-space:nowrap}.cloud-file b{color:var(--c-blue2);font-weight:400}
.cloud-file-managed{grid-template-columns:24px minmax(0,1fr) auto auto}.cloud-file-managed:hover{background:var(--c-surface)}
.cloud-file-check{display:grid;place-items:center}.cloud-file-check input{width:14px;height:14px;accent-color:var(--c-blue)}
.cloud-file-main{min-width:0;color:var(--c-ink);text-decoration:none}.cloud-file-main:hover{text-decoration:none}.cloud-file-main:hover .cloud-file-path{color:var(--c-blue2)}
.cloud-file-actions{display:flex;gap:5px}.cloud-file-actions button{padding:5px 8px}.cloud-file-actions .download{display:inline-flex;align-items:center;padding:5px 8px;border:1px solid var(--c-line);border-radius:3px;color:var(--c-ink);font:12px "Microsoft YaHei","PingFang SC",sans-serif}.cloud-file-actions .download:hover{border-color:var(--c-blue2);color:var(--c-blue2);text-decoration:none}
.cloud-file-actions .preview{display:inline-flex;align-items:center;padding:5px 8px;border:1px solid var(--c-blue2);border-radius:3px;color:var(--c-blue2);font:12px "Microsoft YaHei","PingFang SC",sans-serif;text-decoration:none}.cloud-file-actions .preview:hover{background:var(--c-blue2);color:#fff;text-decoration:none}
.cloud-file.is-trashed{opacity:.82}.cloud-file.is-trashed .cloud-file-path{text-decoration:line-through;text-decoration-color:var(--c-muted)}
.cloud-empty{padding:28px 12px;color:var(--c-muted);font-size:13px;border-bottom:1px solid var(--c-line)}
.cloud-action-dialog{width:min(540px,calc(100% - 28px));padding:0;border:1px solid var(--c-line);border-radius:6px;background:var(--c-surface);color:var(--c-ink);box-shadow:0 18px 70px rgba(0,0,0,.45)}.cloud-action-dialog::backdrop{background:rgba(8,12,18,.68)}.cloud-action-dialog form{padding:26px}.cloud-dialog-head{margin-bottom:18px}.cloud-dialog-head h2{margin:0;font-size:20px}.cloud-action-dialog label{display:grid;gap:6px;color:var(--c-muted);font:12px "Microsoft YaHei","PingFang SC",sans-serif}.cloud-action-dialog input,.cloud-action-dialog select{width:100%;height:40px;padding:0 10px;border:1px solid var(--c-line);border-radius:3px;background:var(--c-bg);color:var(--c-ink);font:13px "Microsoft YaHei","PingFang SC",sans-serif}.cloud-dialog-placement{display:grid;grid-template-columns:1fr 1.5fr;gap:12px}.cloud-dialog-message{padding:12px;background:var(--c-soft);color:var(--c-ink);font-size:13px}.cloud-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px}.cloud-dialog-actions button{min-width:78px}.cloud-dialog-actions button[type="submit"]{border-color:var(--c-blue);background:var(--c-blue);color:#fff}
@media(max-width:700px){.cloud-status{grid-template-columns:repeat(2,minmax(0,1fr))}.cloud-upload{padding:18px}.cloud-upload-head{display:block}.cloud-placement{grid-template-columns:1fr;min-width:0;margin-top:18px}.cloud-browser-head{display:block}.cloud-browser-head input{width:100%;margin-top:16px}.cloud-manager-toolbar{align-items:flex-start;flex-wrap:wrap}.cloud-selected-count{margin-left:0}.cloud-batch-actions{width:100%;overflow:auto}.cloud-file{grid-template-columns:1fr 20px}.cloud-file-meta{display:none}.cloud-file-managed{grid-template-columns:22px minmax(0,1fr)}.cloud-file-managed>.cloud-file-meta{display:none}.cloud-file-actions{grid-column:2;flex-wrap:wrap}.cloud-queue-item{grid-template-columns:minmax(0,1fr) 68px}.cloud-queue-progress{display:none}.cloud-dialog-placement{grid-template-columns:1fr}}
/* 主题切换按钮 */
.theme-btn{position:fixed;right:18px;bottom:18px;z-index:80;width:42px;height:42px;border-radius:50%;border:1px solid var(--c-line);background:var(--c-surface);color:var(--c-ink);font-size:18px;cursor:pointer;box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center}
.theme-btn:hover{border-color:var(--c-blue2)}
/* 浮动返回主页按钮（左下） */
.home-fab{position:fixed;left:18px;bottom:18px;z-index:80;width:42px;height:42px;border-radius:50%;border:1px solid var(--c-line);background:var(--c-blue);color:#fff;font-size:20px;box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center;text-decoration:none}
.home-fab:hover{background:var(--c-blue2);color:#fff;text-decoration:none}

/* 实体书页码导航 */
.reader-page-nav{position:sticky;top:54px;z-index:35;width:max-content;max-width:calc(100% - 24px);margin:10px auto 0;display:flex;align-items:center;gap:6px;padding:6px 8px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 96%,transparent);box-shadow:var(--shadow);font:12px/1.4 "Microsoft YaHei","PingFang SC",sans-serif;white-space:nowrap}
.reader-page-nav button{min-width:30px;height:29px;padding:0 8px;border:1px solid var(--c-line);border-radius:3px;background:transparent;color:var(--c-ink);cursor:pointer;font:inherit}
.reader-page-nav button:hover:not(:disabled){border-color:var(--c-blue2);color:var(--c-blue2)}
.reader-page-nav button:disabled{opacity:.35;cursor:not-allowed}
.reader-page-nav label{display:flex;align-items:center;gap:4px;color:var(--c-muted)}
.reader-page-nav input{width:58px;height:27px;box-sizing:border-box;padding:3px 6px;border:1px solid var(--c-line);border-radius:3px;background:var(--c-bg);color:var(--c-ink);font:inherit;text-align:center}
.reader-page-nav input:focus{border-color:var(--c-blue2);outline:none}
.reader-page-nav span{min-width:78px;color:var(--c-muted);text-align:center}
body.reader-page .pgmark{scroll-margin-top:5rem}
@media (max-width:560px){
  .reader-page-nav{top:54px;max-width:calc(100% - 20px);justify-content:center;gap:4px}
  .reader-page-nav span{min-width:68px}
  .reader-page-nav input{width:52px}
}

/* ---------- 教材与章节搜索 ---------- */
.reader-search{position:relative;margin-left:auto;font-family:"Microsoft YaHei","PingFang SC",sans-serif}
.reader-search-open{min-width:52px}
.reader-search-panel{position:absolute;top:calc(100% + 12px);right:0;z-index:120;width:min(520px,calc(100vw - 28px));display:none;padding:14px;border:1px solid var(--c-line);background:var(--c-surface);color:var(--c-ink);box-shadow:0 14px 38px rgba(0,0,0,.28)}
.reader-search.open .reader-search-panel{display:block}
.reader-search-line{display:flex;gap:8px}.reader-search-input{min-width:0;flex:1;padding:9px 11px;border:1px solid var(--c-line);border-radius:0;background:var(--c-bg);color:var(--c-ink);font:13px "Microsoft YaHei","PingFang SC",sans-serif;outline:none}.reader-search-input:focus{border-color:var(--c-blue2)}
.reader-search-close{width:36px;border:1px solid var(--c-line)!important;color:var(--c-muted)!important}
.reader-search-mode{display:flex;align-items:center;gap:6px;margin-top:10px;color:var(--c-ink);font-size:12px;cursor:pointer}.reader-search-mode input{accent-color:var(--c-blue)}.reader-search-mode span{margin-left:auto;color:var(--c-muted);font-size:10px}
.reader-search-status{margin:10px 0 6px;padding-top:8px;border-top:1px solid var(--c-line);color:var(--c-muted);font-size:10px}
.reader-search-results{max-height:min(58vh,520px);overflow:auto;border-top:1px solid var(--c-line)}
.reader-search-result{width:100%;display:block;padding:11px 6px;border:0;border-bottom:1px solid var(--c-line);background:transparent;color:var(--c-ink);text-align:left;text-decoration:none;cursor:pointer}.reader-search-result:hover{background:var(--c-soft);text-decoration:none}.reader-search-result strong,.reader-search-result span{display:block}.reader-search-result strong{font-size:12px;font-weight:600;line-height:1.65}.reader-search-result span{margin-top:3px;color:var(--c-muted);font-size:10px;line-height:1.55}
.reader-search-result .reader-search-context{margin:0 0 4px;color:var(--c-blue2);font-size:10px}.reader-search-result .reader-search-snippet{color:var(--c-ink);font-size:12px;font-weight:400}.reader-search-result small{display:block;margin-top:5px;color:var(--c-muted);font-size:10px}.reader-search-result mark{padding:0 2px;background:rgba(224,160,74,.28);color:inherit}
body.reader-page>header .reader-search-panel button.reader-search-result,body.reader-page>header .reader-search-panel a.reader-search-result{width:100%!important;display:block!important;padding:11px 6px!important;border:0!important;border-bottom:1px solid var(--c-line)!important;border-radius:0!important;background:transparent!important;color:var(--c-ink)!important;text-align:left!important;text-decoration:none!important;font-weight:400!important}
body.reader-page>header .reader-search-panel button.reader-search-result:hover,body.reader-page>header .reader-search-panel a.reader-search-result:hover{background:var(--c-soft)!important;color:var(--c-ink)!important}
body.reader-page>header .reader-search-panel .reader-search-close{border-color:var(--c-line)!important;color:var(--c-muted)!important;background:transparent!important}
.reader-search-empty{padding:16px 6px;color:var(--c-muted);font-size:11px;line-height:1.7}.reader-search-hit{outline:3px solid var(--c-accent)!important;outline-offset:5px;background:rgba(224,160,74,.12)!important;transition:background .25s}
@media(max-width:760px){.reader-search{margin-left:0}.reader-search-panel{position:fixed;top:62px;left:12px;right:12px;width:auto}.reader-search-mode span{display:none}}

/* ---------- 页脚 ---------- */
.footer{max-width:1100px;margin:0 auto;padding:20px 18px 40px;color:var(--c-muted);font-size:13px;border-top:1px solid var(--c-line)}

@media(max-width:640px){
  .hero{padding:20px}
  .header-inner{gap:8px}
  .card-grid{grid-template-columns:1fr}
  body.home .header-inner{padding:10px 14px}
  body.home .brand{font-size:15px}
  body.home .search-wrap{min-width:180px}
  body.home>main{padding:36px 18px 90px}
  .library-intro{display:block;padding-bottom:28px}
  .library-intro h1{font-size:32px}
  .catalog-kicker{margin-bottom:16px}
  .catalog-lead{margin-top:10px}
  .catalog-total{margin-top:18px;text-align:left}
  .category-grid{grid-template-columns:1fr}
  .category-entry{min-height:172px;grid-template-columns:34px 1fr auto;padding:22px 18px}
  .category-copy strong{font-size:18px}
  .category-subjects{padding-top:18px}
  .category-meta b{margin-top:26px}
  .tool-index{gap:14px}
  .tool-index>span{width:100%;margin-right:0}
  .detail-bar{margin-bottom:28px}
  .detail-bar #detail-title{font-size:20px}
  .course-row{grid-template-columns:34px minmax(0,1fr) auto;padding:16px 10px;gap:10px}
  .course-copy strong{font-size:16px}
  .course-copy small{white-space:normal;line-height:1.5}
  .course-count b{margin-left:8px}
  .main-books{grid-template-columns:1fr}
  .book-card,.book-card:nth-child(2n){min-height:174px;border-right:0;padding:22px 18px}
}

/* ---------- 统一阅读器与个人知识库 ---------- */
html[data-theme="dark"]{color-scheme:dark}
html[data-theme="light"]{color-scheme:light}
body.reader-page{
  --reader-paper:#f8f6f1;
  --reader-edge:#d5d0c7;
  --reader-header:#1f3a5f;
  background:#e9e5dd !important;
  color:var(--c-ink) !important;
  overflow-x:hidden !important;
}
body.reader-page.dark{
  --reader-paper:#1e2229;
  --reader-edge:#3a404a;
  --reader-header:#182330;
  background:#14171c !important;
}
body.reader-page>header{
  position:sticky !important;top:0 !important;z-index:40 !important;
  width:100% !important;min-width:0 !important;min-height:54px !important;display:flex !important;align-items:center !important;gap:12px !important;
  padding:9px max(18px,calc((100vw - 1040px)/2)) !important;
  border:0 !important;border-bottom:1px solid rgba(255,255,255,.17) !important;border-radius:0 !important;
  background:var(--reader-header) !important;color:#f3f5f7 !important;box-shadow:none !important;
  font-family:"Microsoft YaHei","PingFang SC",sans-serif !important;
}
body.reader-page>header a,body.reader-page>header .bk{
  color:#dce8f4 !important;text-decoration:none !important;
}
body.reader-page>header nav a,body.reader-page>header>a:not(.bk){
  padding:3px 8px !important;border:0 !important;border-bottom:1px solid transparent !important;
  border-radius:0 !important;background:transparent !important;color:#b9cce0 !important;
}
body.reader-page>header nav a:hover,body.reader-page>header nav a[style*="background"],body.reader-page>header>a:not(.bk):hover{
  border-bottom-color:#fff !important;color:#fff !important;
}
body.reader-page>header button{
  padding:6px 10px !important;border:1px solid rgba(255,255,255,.34) !important;border-radius:0 !important;
  background:transparent !important;color:#fff !important;font-weight:400 !important;
}
/* 生成器的新 Header 结构：桌面端仍保持一行，书名组和操作组可安全收缩。 */
body.reader-page>header.reader-header .reader-header-main{
  display:flex;align-items:center;gap:12px;min-width:0;flex:0 1 auto;
}
body.reader-page>header.reader-header .reader-book-info{display:flex;flex-direction:column;min-width:0;}
body.reader-page>header.reader-header .reader-book-title{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.45;}
body.reader-page>header.reader-header .reader-book-meta{display:block;margin-top:2px;color:#9fb9d3;font-size:11px;line-height:1.35;white-space:nowrap;}
body.reader-page>header.reader-header .reader-header-actions{display:flex;align-items:center;gap:10px;flex:none;}
body.reader-page>header.reader-header>nav{min-width:0;flex:1 1 auto;}
body.reader-page>main,body.reader-page .book-content{
  width:min(calc(100% - 36px),900px) !important;max-width:900px !important;
  margin:30px auto 110px !important;padding:52px clamp(24px,6vw,72px) 78px !important;
  border:1px solid var(--reader-edge) !important;border-radius:0 !important;
  background:var(--reader-paper) !important;color:var(--c-ink) !important;box-shadow:none !important;
}
body.reader-page>main img,body.reader-page .book-content img{
  max-width:100% !important;height:auto !important;object-fit:contain;
}
.reader-figure{margin:24px auto;text-align:center}
.reader-figure img{display:block;max-height:620px;margin:0 auto}
.reader-figure figcaption{margin-top:8px;color:var(--c-muted);font-size:13px;line-height:1.6}
.reader-figure-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:28px;align-items:end}
body.reader-page.dark .reader-figure-scan{filter:invert(1)}
body.reader-page>main h1,body.reader-page .book-content h1{
  padding-bottom:15px !important;border-bottom:1px solid var(--c-blue) !important;
  color:var(--c-blue) !important;letter-spacing:.08em !important;
}
body.reader-page>main h2,body.reader-page .book-content h2{
  padding:5px 0 5px 14px !important;border-left:3px solid var(--c-blue2) !important;
  color:var(--c-blue2) !important;
}
body.reader-page>main h3,body.reader-page>main h4,body.reader-page .book-content h3,body.reader-page .book-content h4{
  color:var(--c-blue2) !important;
}
/* 原书页面普遍内嵌了只适合浅色纸张的固定颜色。深色阅读时统一重映射，
   避免深蓝字、白底代码框和白底公式框残留。 */
body.reader-page.dark>main h1,body.reader-page.dark>main h2,body.reader-page.dark>main h3,
body.reader-page.dark>main h4,body.reader-page.dark>main h5,body.reader-page.dark>main h6,
body.reader-page.dark .book-content h1,body.reader-page.dark .book-content h2,
body.reader-page.dark .book-content h3,body.reader-page.dark .book-content h4,
body.reader-page.dark .book-content h5,body.reader-page.dark .book-content h6{
  color:#a9c8eb !important;border-color:#6686aa !important;
}
body.reader-page.dark>main :where(p,li,dt,dd,td,th,span,div,blockquote,figcaption)[style*="color"],
body.reader-page.dark .book-content :where(p,li,dt,dd,td,th,span,div,blockquote,figcaption)[style*="color"]{
  color:var(--c-ink) !important;
}
body.reader-page.dark>main :where(strong,b),body.reader-page.dark .book-content :where(strong,b){
  color:#b9d3f0 !important;
}
body.reader-page.dark>main :where(em,i),body.reader-page.dark .book-content :where(em,i){
  color:#d7dce5 !important;
}
body.reader-page.dark>main :where(pre,code,kbd,samp),body.reader-page.dark .book-content :where(pre,code,kbd,samp){
  border-color:#414a58 !important;background:#181c22 !important;color:#e7ebf1 !important;
  text-shadow:none !important;
}
body.reader-page.dark>main pre,body.reader-page.dark .book-content pre{
  overflow:auto;padding:15px 17px !important;border:1px solid #414a58 !important;
}
body.reader-page.dark>main pre code,body.reader-page.dark .book-content pre code{
  padding:0 !important;border:0 !important;background:transparent !important;
}
body.reader-page.dark>main :where(.codehilite,.highlight,.sourceCode,.code-block),
body.reader-page.dark .book-content :where(.codehilite,.highlight,.sourceCode,.code-block){
  border-color:#414a58 !important;background:#181c22 !important;color:#e7ebf1 !important;
}
body.reader-page.dark>main :where(.mb,.math-block,.formula,.equation),
body.reader-page.dark .book-content :where(.mb,.math-block,.formula,.equation){
  border-color:#414a58 !important;background:#191e25 !important;color:#edf1f6 !important;
  box-shadow:none !important;
}
body.reader-page.dark>main :where(blockquote,table,thead,tbody,tr,th,td),
body.reader-page.dark .book-content :where(blockquote,table,thead,tbody,tr,th,td){
  border-color:#414a58 !important;color:var(--c-ink) !important;
}
body.reader-page.dark>main :where(blockquote,th),
body.reader-page.dark .book-content :where(blockquote,th){background:#20252d !important}
body.reader-page.dark>main tbody tr:nth-child(even),
body.reader-page.dark .book-content tbody tr:nth-child(even){background:#1b2027 !important}
body.reader-page.dark>main :where(table caption,.pgmark),
body.reader-page.dark .book-content :where(table caption,.pgmark){color:#aeb5c0 !important}
body.reader-page>main .pgmark span,
body.reader-page .book-content .pgmark span{background:var(--c-bg) !important;color:inherit !important}
body.reader-page.dark>main .pgmark::before,body.reader-page.dark>main .pgmark::after,
body.reader-page.dark .book-content .pgmark::before,body.reader-page.dark .book-content .pgmark::after{
  background:linear-gradient(90deg,transparent,#4a515d,transparent) !important;
}
body.reader-page.dark>main mjx-container,body.reader-page.dark .book-content mjx-container{
  color:#edf1f6 !important;background:transparent !important;
}
body.reader-page.dark>main mjx-container svg,body.reader-page.dark .book-content mjx-container svg{
  color:inherit !important;fill:currentColor;
}
body.reader-page>main table,body.reader-page .book-content table{
  display:block;width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;
}
body.reader-page>main .blk,body.reader-page .book-content .blk{
  max-width:100%;overflow-x:hidden;
}
body.reader-page .toc-panel,body.reader-page .toc-card,body.reader-page details.tool{
  border:1px solid var(--reader-edge) !important;border-radius:0 !important;
  background:transparent !important;box-shadow:none !important;
}
body.reader-page .toc-card:hover{transform:none !important;background:var(--c-soft) !important}
body.reader-page .chapter-nav a{
  border-radius:0 !important;background:transparent !important;
}
body.reader-page .theme-btn,body.reader-page .home-fab{
  width:40px;height:40px;border-radius:0;box-shadow:none;
}
body.reader-page .theme-btn{right:18px;bottom:72px}

/* 正文高亮 */
mark.pk-highlight{
  margin:0;padding:0 .06em;border:0;border-bottom:1px solid transparent;border-radius:0;
  background:rgba(246,205,75,.42);color:inherit;box-decoration-break:clone;-webkit-box-decoration-break:clone;
  cursor:pointer;transition:background .14s,box-shadow .14s;
}
mark.pk-highlight.pk-color-yellow{background:rgba(246,205,75,.42)}
mark.pk-highlight.pk-color-blue{background:rgba(86,156,214,.30)}
mark.pk-highlight.pk-color-green{background:rgba(87,177,118,.30)}
mark.pk-highlight.pk-color-red{background:rgba(220,94,87,.28)}
mark.pk-highlight.pk-has-note{border-bottom-color:currentColor}
mark.pk-highlight.pk-pulse{animation:pk-pulse 1.5s ease}
@keyframes pk-pulse{0%,100%{box-shadow:none}35%{box-shadow:0 0 0 4px rgba(65,121,178,.28)}}

/* MathJax SVG 无法由普通 Range 包住；公式外壳提供整式选择、着色和批注锚点。 */
.pk-formula-source{position:relative;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.pk-formula-source:has(>mjx-container[display="true"]){display:block;max-width:100%;overflow-x:auto;overflow-y:hidden}
.pk-formula-source mjx-container{max-width:100%}
.pk-formula-source.pk-formula-pending{outline:1px dashed var(--c-blue2);outline-offset:3px}
.pk-formula-source.pk-formula-highlight{padding:.08em .14em;background:rgba(246,205,75,.28);cursor:pointer}
.pk-formula-source.pk-formula-highlight.pk-color-yellow{background:rgba(246,205,75,.28)}
.pk-formula-source.pk-formula-highlight.pk-color-blue{background:rgba(86,156,214,.22)}
.pk-formula-source.pk-formula-highlight.pk-color-green{background:rgba(87,177,118,.22)}
.pk-formula-source.pk-formula-highlight.pk-color-red{background:rgba(220,94,87,.24)}
.pk-formula-source.pk-formula-highlight.pk-has-note{box-shadow:inset 0 -2px currentColor}
.pk-formula-source.pk-pulse{animation:pk-pulse 1.5s ease}

/* 选中文字后出现的轻量工具条 */
.pk-selection-bar{
  position:fixed;z-index:190;width:382px;height:42px;display:flex;align-items:center;gap:8px;padding:7px 9px;
  border:1px solid #4c535f;border-radius:0;background:#20242b;color:#f4f5f6;
  box-shadow:0 8px 24px rgba(0,0,0,.24);font:12px/1 "Microsoft YaHei","PingFang SC",sans-serif;
}
.pk-selection-bar[hidden]{display:none}
.pk-selection-bar>span{width:1px;height:20px;margin:0 1px;background:#4c535f}
.pk-selection-bar button{border:0;border-radius:0;background:transparent;color:inherit;white-space:nowrap;cursor:pointer}
.pk-selection-bar.is-selection{width:132px}
.pk-selection-bar.is-selection .pk-color,.pk-selection-bar.is-selection>span,.pk-selection-bar.is-selection .pk-add-note,.pk-selection-bar.is-selection .pk-remove-highlight{display:none}
.pk-selection-bar.is-highlight .pk-create-highlight{display:none}
.pk-create-highlight{height:28px;padding:0 8px !important;color:#f4f5f6 !important}
.pk-create-highlight:hover{color:#bcd7f2 !important}
.pk-color{width:20px;height:20px;border:1px solid rgba(255,255,255,.35) !important}
.pk-color.pk-yellow{background:#e9c54a}.pk-color.pk-blue{background:#5794cb}.pk-color.pk-green{background:#5cab78}.pk-color.pk-red{background:#ce665e}
.pk-color.is-active{outline:2px solid #fff;outline-offset:2px}
.pk-add-note{height:28px;padding:0 5px}.pk-add-note:hover{color:#bcd7f2}
.pk-remove-highlight{height:28px;padding:0 5px;color:#f0a49e !important}.pk-remove-highlight:hover{color:#ffc0bb !important}
.pk-bar-close{margin-left:auto;font-size:18px}

/* 笔记侧栏 */
.pk-panel-toggle{
  position:fixed;right:18px;bottom:18px;z-index:105;height:40px;display:flex;align-items:center;gap:7px;
  padding:0 11px;border:1px solid var(--c-line);border-radius:0;background:var(--c-surface);color:var(--c-ink);
  box-shadow:none;font:13px "Microsoft YaHei","PingFang SC",sans-serif;cursor:pointer;
}
.pk-panel-toggle:hover{border-color:var(--c-blue2)}
.pk-count{min-width:18px;padding-left:7px;border-left:1px solid var(--c-line);font-size:11px;font-weight:400;color:var(--c-muted)}
.pk-panel{
  position:fixed;z-index:170;top:0;right:0;width:min(390px,92vw);height:100dvh;display:flex;flex-direction:column;
  border-left:1px solid var(--c-line);background:var(--c-bg);color:var(--c-ink);
  box-shadow:-12px 0 32px rgba(0,0,0,.16);font-family:"Microsoft YaHei","PingFang SC",sans-serif;
  transform:translateX(101%);transition:transform .2s ease;
}
.pk-panel-open .pk-panel{transform:none}
.pk-shade{position:fixed;z-index:160;inset:0;border:0;background:rgba(8,12,18,.42);opacity:0;pointer-events:none;transition:opacity .2s}
.pk-panel-open .pk-shade{opacity:1;pointer-events:auto}
.pk-panel-head{position:static !important;height:88px;display:flex !important;align-items:center !important;justify-content:space-between !important;gap:12px !important;padding:19px 22px !important;border:0 !important;border-bottom:1px solid var(--c-line) !important;border-radius:0 !important;background:transparent !important;color:var(--c-ink) !important;box-shadow:none !important}
.pk-panel-head small,.pk-editor small{display:block;margin-bottom:4px;color:var(--c-muted);font:10px ui-monospace,"Cascadia Code",monospace;letter-spacing:.1em}
.pk-panel-head h2,.pk-editor h2{margin:0;color:var(--c-ink);font-size:19px;font-weight:600}
.pk-icon-btn{width:32px;height:32px;border:0;border-radius:0;background:transparent;color:var(--c-muted);font-size:25px;cursor:pointer}
.pk-icon-btn:hover{color:var(--c-ink)}
.pk-actions{display:flex;border-bottom:1px solid var(--c-line)}
.pk-actions button{flex:1;height:43px;border:0;border-right:1px solid var(--c-line);border-radius:0;background:transparent;color:var(--c-ink);font-size:12px;cursor:pointer}
.pk-actions button:last-child{border-right:0}.pk-actions button:hover{background:var(--c-soft)}
.pk-search{display:flex;align-items:center;gap:11px;margin:16px 18px 8px;padding-bottom:8px;border-bottom:1px solid var(--c-line);color:var(--c-muted);font-size:12px}
.pk-search input{min-width:0;flex:1;border:0;border-radius:0;outline:0;background:transparent;color:var(--c-ink);font:13px inherit}
.pk-sync{height:22px;padding:0 18px;color:var(--c-muted);font-size:11px}
.pk-list{flex:1;overflow:auto;padding:0 18px 36px}
.pk-empty{min-height:210px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px;border-top:1px solid var(--c-line);color:var(--c-muted);text-align:center}
.pk-empty b{margin-bottom:8px;color:var(--c-ink);font-size:15px}.pk-empty span{max-width:230px;font-size:12px;line-height:1.8}
.pk-note-card{padding:16px 2px 18px;border-top:1px solid var(--c-line);cursor:pointer}
.pk-note-card:hover{background:linear-gradient(90deg,transparent,var(--c-soft),transparent)}
.pk-note-top{display:flex;justify-content:space-between;color:var(--c-muted);font-size:10px}
.pk-note-type{display:flex;align-items:center;gap:6px}.pk-dot{width:8px;height:8px}.pk-dot.pk-yellow{background:#d9b940}.pk-dot.pk-blue{background:#5794cb}.pk-dot.pk-green{background:#5cab78}.pk-dot.pk-red{background:#ce665e}
.pk-note-location{max-width:100%;margin:9px 0 7px;padding:0;border:0;border-radius:0;background:transparent;color:var(--c-blue2);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.pk-note-quote{margin:7px 0;padding-left:11px;border-left:2px solid var(--c-line);color:var(--c-muted);font:13px/1.7 "Songti SC","SimSun",serif;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.pk-note-text{margin:7px 0 0;color:var(--c-ink);font-size:13px;line-height:1.7;white-space:pre-wrap}
.pk-note-hint{margin:7px 0 0;color:var(--c-muted);font-size:11px}
.pk-note-controls{display:flex;align-items:center;gap:16px;margin-top:11px}
.pk-note-controls button{padding:0;border:0;border-radius:0;background:transparent;color:var(--c-muted);font:11px "Microsoft YaHei","PingFang SC",sans-serif;cursor:pointer}
.pk-note-controls button:hover{color:var(--c-blue2)}
.pk-note-controls .pk-note-cancel-highlight{margin-left:auto;color:#c26962}
.pk-note-controls .pk-note-cancel-highlight:hover{color:#df7770}

/* 批注编辑框 */
.pk-editor{width:min(560px,calc(100vw - 30px));padding:0;border:1px solid var(--c-line);border-radius:0;background:var(--c-bg);color:var(--c-ink);box-shadow:0 20px 60px rgba(0,0,0,.28);font-family:"Microsoft YaHei","PingFang SC",sans-serif}
.pk-editor::backdrop{background:rgba(8,12,18,.58)}
.pk-editor form>header{position:static !important;display:flex !important;align-items:center !important;justify-content:space-between !important;padding:20px 24px !important;border:0 !important;border-bottom:1px solid var(--c-line) !important;border-radius:0 !important;background:transparent !important;color:var(--c-ink) !important;box-shadow:none !important}
.pk-editor-quote{max-height:130px;overflow:auto;margin:20px 24px 0;padding:13px 15px;border-left:3px solid var(--c-blue2);background:var(--c-soft);color:var(--c-muted);font:14px/1.8 "Songti SC","SimSun",serif}
.pk-editor label{display:block;padding:20px 24px}.pk-editor label>span{display:block;margin-bottom:8px;color:var(--c-muted);font-size:12px}
.pk-editor textarea{width:100%;resize:vertical;padding:12px;border:1px solid var(--c-line);border-radius:0;outline:0;background:var(--c-surface);color:var(--c-ink);font:14px/1.75 inherit}
.pk-editor textarea:focus{border-color:var(--c-blue2)}
.pk-editor-foot{display:flex;align-items:center;gap:8px;padding:0 24px 20px}.pk-editor-foot>span{flex:1}
.pk-editor-foot button{min-width:68px;height:36px;padding:0 13px;border:1px solid var(--c-line);border-radius:0;background:transparent;color:var(--c-ink);cursor:pointer}
.pk-editor-foot .pk-save{border-color:var(--c-blue);background:var(--c-blue);color:#fff}.pk-editor-foot .pk-delete{border-color:transparent;color:#b44c43}

@media(max-width:720px){
  /* 旧版静态教材页仍是 header 的直接子节点；按三层网格兼容它们。 */
  body.reader-page>header:not(.reader-header){
    display:grid !important;grid-template-columns:max-content minmax(0,1fr) !important;
    grid-template-areas:"back title" "directory search" "chapters chapters" !important;
    align-items:center !important;column-gap:12px !important;row-gap:0 !important;
    padding:10px 12px 0 !important;overflow:hidden !important;
  }
  body.reader-page>header:not(.reader-header)>a.bk:first-child{grid-area:back;align-self:start;margin-top:3px;min-width:0;}
  body.reader-page>header:not(.reader-header)>span.bk{grid-area:title;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.45;}
  body.reader-page>header:not(.reader-header)>a:not(.bk){grid-area:directory;justify-self:start;margin:8px 0 10px;min-width:0;white-space:nowrap;}
  body.reader-page>header:not(.reader-header)>.reader-search{grid-area:search;justify-self:end;margin:8px 0 10px !important;min-width:0;}
  body.reader-page>header:not(.reader-header)>nav{
    grid-area:chapters;width:calc(100% + 24px);min-width:0;max-width:none;margin:0 -12px;
    padding:0 12px 10px;display:flex;flex:0 0 auto;gap:6px;overflow-x:auto;overflow-y:hidden;
    overscroll-behavior-x:contain;scrollbar-width:none;
  }
  body.reader-page>header:not(.reader-header)>nav::-webkit-scrollbar{display:none;}
  body.reader-page>header:not(.reader-header)>nav a{flex:0 0 auto;}
  /* 新版模板：返回和书籍信息一行，目录/搜索一行，章节标签单独滚动。 */
  body.reader-page>header.reader-header{
    display:grid !important;grid-template-columns:minmax(0,1fr) !important;
    grid-template-areas:"reader-main" "reader-actions" "reader-chapters" !important;
    align-items:stretch !important;gap:0 !important;padding:10px 12px 0 !important;overflow:hidden !important;
  }
  body.reader-page>header.reader-header>.reader-header-main{grid-area:reader-main;min-width:0;width:100%;}
  body.reader-page>header.reader-header>.reader-header-actions{grid-area:reader-actions;width:100%;min-width:0;margin:8px 0 10px;}
  body.reader-page>header.reader-header>.reader-header-actions .reader-search{margin-left:auto;}
  body.reader-page>header.reader-header>nav{
    grid-area:reader-chapters;width:calc(100% + 24px);min-width:0;max-width:none;margin:0 -12px;
    padding:0 12px 10px;display:flex;flex:0 0 auto;gap:6px;overflow-x:auto;overflow-y:hidden;
    overscroll-behavior-x:contain;scrollbar-width:none;
  }
  body.reader-page>header.reader-header>nav::-webkit-scrollbar{display:none;}
  body.reader-page>header.reader-header>nav a{flex:0 0 auto;}
  body.reader-page>main,body.reader-page .book-content{width:100% !important;margin:0 auto 88px !important;padding:34px 18px 58px !important;border-width:0 !important}
  body.reader-page .home-fab{left:12px;bottom:12px}
  body.reader-page .theme-btn{right:12px;bottom:64px}
  .pk-panel-toggle{right:12px;bottom:12px}
  .pk-panel{top:auto;bottom:0;width:100%;height:min(76dvh,650px);border-top:1px solid var(--c-line);border-left:0;transform:translateY(101%)}
  .pk-panel-open .pk-panel{transform:none}
  .pk-selection-bar{width:min(382px,calc(100vw - 20px))}
  .pk-selection-bar.is-selection{width:132px}
}

@media(max-width:420px){
  body.reader-page>header:not(.reader-header)>span.bk,
  body.reader-page>header.reader-header .reader-book-title{font-size:13px !important;}
  body.reader-page>header.reader-header .reader-book-meta{font-size:10px;}
  body.reader-page>header:not(.reader-header)>nav,
  body.reader-page>header.reader-header>nav{padding-bottom:8px;}
}

/* 正文中的长公式、表格、图片和代码块只能在自己的盒子里滚动。 */
body.reader-page>main,body.reader-page .book-content,body.reader-page .blk,
body.reader-page .reader-figure-row{min-width:0;}
body.reader-page>main :where(img,svg,video,canvas),body.reader-page .book-content :where(img,svg,video,canvas){max-width:100%;height:auto;}
body.reader-page>main :where(pre,code,kbd,samp),body.reader-page .book-content :where(pre,code,kbd,samp){max-width:100%;}
body.reader-page>main :where(pre,.codehilite,.highlight,.sourceCode,.code-block),body.reader-page .book-content :where(pre,.codehilite,.highlight,.sourceCode,.code-block){overflow:auto;}
body.reader-page>main :where(.table-scroll,.table-wrap,.table-container),body.reader-page .book-content :where(.table-scroll,.table-wrap,.table-container){max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;}
body.reader-page>main table,body.reader-page .book-content table{max-width:100%;}

@media print{
  .pk-ui,.theme-btn,.home-fab{display:none !important}
  body.reader-page>main,body.reader-page .book-content{border:0 !important}
}
