@dongfangw/study-kit 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -1,5 +1,5 @@
1
1
  window.__ModuleLoader__.load({
2
- id: "@aero/study-kit",
2
+ id: "@dongfangw/study-kit",
3
3
  factory: (require) => {
4
4
  var module = { exports: {} };
5
5
  var exports = module.exports;
@@ -8,7 +8,7 @@ window.__ModuleLoader__.load({
8
8
  let react_jsx_runtime = require("react/jsx-runtime");
9
9
  // \0aero-inline-css:RDpcZ2l0bGFiXEFlcm9keW5hbWljc1RlYWNoaW5nXGFlcm8tc3R1ZHkta2l0XHNyY1xjbGllbnRcZG9jLXRoZW1lLmNzcw
10
10
  const css$2 = "/* ===========================================================================\n * 学习资料阅读器 · AsciiDoc 书籍版式主题(全局注入,仅作用于 .aero-doc)\n *\n * 背景:知识库(knowledge-base/正文)与教案(lesson-plan)正文都是 AsciiDoc,\n * 由宿主用 @asciidoctor/core 渲染成 HTML。AsciiDoc 的默认样式表\n * (asciidoctor-default.css)为大量「书本级」构造提供了配套样式——admonition\n * 提示块、example/sidebar 卡片、quote/verse 题引、图表题注、三线表/网格表、\n * callout 编号、描述列表、footnote、TOC 侧栏、内建 role(text-center 等)。\n * 本项目此前只给 .aero-doc 写了极简样式,于是这些构造全部退化成裸 HTML:\n * · admonition 的内层 <table> 被通用表格规则套上边框,图标列是空的\n * (:icons: font 输出 <i class=\"fa icon-note\">,但没有 Font Awesome);\n * · image::路径[图注] 的「图注五要素」落在 alt 属性里,页面上根本看不见;\n * · 「Figure 1.」这类自动题注号与作者手写的「图 C05.9-1」重复(中英混排)。\n * 本文件补齐这套版式,并叠加中文书籍的排版习惯:版心宽度、两端对齐、\n * 首行缩进 2 字符、章节页式标题、居中图注、三线表。\n *\n * 约束与依赖:\n * · 颜色一律走 DSH 主题 token(--dsw-alias-*),明暗两套自动跟随;\n * 见 dsh-client-ui-theme(深色由 body[data-ds-dark-theme] 切换)。\n * · 字号基准用 --dsh-content-font-size(用户在设置里调的字号)。\n * · 本文件以 `?inline` 由 doc-theme.ts 作为纯文本导入,不过 lightningcss,\n * 因此可以放心使用 mask-image / color-mix / :has 等现代特性。\n * =========================================================================== */\n\n/* ---------------------------------------------------------------------------\n * 0. 局部变量(含无 token 时的兜底,保证脱离 DSH 外壳(如离线预览)也成篇)\n * ------------------------------------------------------------------------- */\n.aero-doc {\n /* 每个 token 先看外层 `-ov` 覆盖(阅读设置的「底色」由 [data-aero-doc-wrap][data-paper]\n 注入,见本文件 §15),没有覆盖才回落到 DSH 主题 token,最后是内置兜底。\n 这样正文卡片与右侧「本页目录」能共用同一套墨色,深色纸面上不会出现黑字压暗底。 */\n --aero-ink: var(--aero-ink-ov, var(--dsw-alias-label-primary, #1f2328));\n --aero-ink-2: var(--aero-ink-2-ov, var(--dsw-alias-label-secondary, #57606a));\n --aero-ink-3: var(--aero-ink-3-ov, var(--dsw-alias-label-tertiary, #818b98));\n --aero-rule: var(--aero-rule-ov, var(--dsw-alias-border-l2, rgba(31, 35, 40, 0.12)));\n --aero-rule-strong: var(--aero-rule-strong-ov, var(--dsw-alias-border-l3, rgba(31, 35, 40, 0.22)));\n --aero-paper: var(--aero-paper-ov, var(--dsw-alias-bg-layer-1, #ffffff));\n --aero-soft: var(--aero-soft-ov, var(--dsw-alias-bg-module-platform, rgba(31, 35, 40, 0.035)));\n --aero-hover: var(--aero-hover-ov, var(--dsw-alias-interactive-bg-hover, rgba(31, 35, 40, 0.05)));\n --aero-accent: var(--aero-accent-ov, var(--dsw-alias-link, #4176e6));\n --aero-accent-ink: var(--aero-accent-ink-ov, var(--dsw-alias-state-business-primary, #2f6feb));\n --aero-mono: var(--ds-font-family-code, ui-monospace, SFMono-Regular, Menlo, monospace);\n --aero-sans: var(--dsw-font-family, -apple-system, \"Segoe UI\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif);\n --aero-serif: Georgia, \"Nimbus Roman\", \"Times New Roman\", \"Noto Serif SC\", \"Noto Serif CJK SC\",\n \"Source Han Serif SC\", \"Source Han Serif CN\", \"Songti SC\", STSong, SimSun, serif;\n /* 字号基准 = DSH 全局字号 × 阅读设置的字号倍率(--aero-scale 由 DocViewer 内联写入,\n 倍率表见 readerPrefs.ts 的 FONT_STEPS;缺省 1 即 100%)。 */\n --aero-base: calc(var(--dsh-content-font-size, 15px) * var(--aero-scale, 1));\n --aero-measure: 42em;\n --aero-shadow: var(--aero-shadow-ov, 0 1px 2px rgba(15, 25, 50, 0.04), 0 18px 40px -32px rgba(15, 25, 50, 0.45));\n}\n\n/* ---------------------------------------------------------------------------\n * 1. 版心:居中限宽的书页。窄屏退化为整幅,宽屏不出现超长行(阅读体验第一)。\n * ------------------------------------------------------------------------- */\n.aero-doc {\n box-sizing: border-box;\n max-width: var(--aero-measure);\n margin: 0 auto;\n padding: clamp(18px, 3.2vw, 34px) clamp(16px, 3.6vw, 44px) clamp(36px, 5vw, 60px);\n border: 1px solid var(--aero-rule);\n border-radius: 14px;\n background: var(--aero-paper);\n box-shadow: var(--aero-shadow);\n color: var(--aero-ink);\n font-family: var(--aero-serif);\n font-size: calc(var(--aero-base) * 1.07);\n line-height: 1.9;\n /* 中文书籍排版的三个关键:两端对齐、标点挤压、按 CJK 规则断行 */\n text-align: justify;\n text-justify: inter-ideograph;\n line-break: strict;\n overflow-wrap: break-word;\n word-break: normal;\n hyphens: none;\n font-variant-numeric: tabular-nums;\n -webkit-font-smoothing: antialiased;\n}\n/* 「网页版式」:无衬线、左对齐、不缩进、不要纸面卡片(长文档快速扫读更合适) */\n.aero-doc--web {\n --aero-measure: 56em;\n padding: 4px clamp(2px, 1vw, 10px) 32px;\n border: none;\n border-radius: 0;\n background: transparent;\n box-shadow: none;\n font-family: var(--aero-sans);\n font-size: var(--aero-base);\n line-height: 1.8;\n text-align: left;\n text-justify: auto;\n}\n\n/* ---------------------------------------------------------------------------\n * 2. 标题:章标题居中成「章首页」,节标题用细线分隔,三级标题带竖标\n * ------------------------------------------------------------------------- */\n.aero-doc h1,\n.aero-doc h2,\n.aero-doc h3,\n.aero-doc h4,\n.aero-doc h5,\n.aero-doc h6 {\n font-family: inherit;\n font-weight: 600;\n line-height: 1.35;\n color: var(--aero-ink);\n scroll-margin-top: 12px;\n}\n.aero-doc h1 {\n margin: 0.2em 0 0.1em;\n font-size: 1.62em;\n font-weight: 700;\n letter-spacing: 0.01em;\n text-align: center;\n}\n/* 章标题下的短装饰线(书籍章首页的「题花」位置) */\n.aero-doc h1::after {\n content: \"\";\n display: block;\n width: 2.6em;\n height: 2px;\n margin: 0.75em auto 0;\n border-radius: 2px;\n background: var(--aero-accent);\n opacity: 0.75;\n}\n.aero-doc h2 {\n margin: 2.2em 0 0.7em;\n padding-top: 0.85em;\n font-size: 1.28em;\n border-top: 1px solid var(--aero-rule);\n}\n.aero-doc h3 {\n display: flex;\n align-items: baseline;\n gap: 0.5em;\n margin: 1.8em 0 0.5em;\n font-size: 1.12em;\n}\n.aero-doc h3::before {\n content: \"\";\n flex: none;\n width: 3px;\n height: 0.95em;\n border-radius: 2px;\n background: var(--aero-accent);\n transform: translateY(0.08em);\n}\n.aero-doc h4,\n.aero-doc h5,\n.aero-doc h6 {\n margin: 1.4em 0 0.4em;\n font-size: 1em;\n color: var(--aero-ink-2);\n}\n/* 网页版式:标题不做居中/装饰,保持文档工具感 */\n.aero-doc--web h1 {\n margin: 0.4em 0 0.6em;\n font-size: 1.5em;\n text-align: left;\n}\n.aero-doc--web h1::after { display: none; }\n.aero-doc--web h2 {\n margin: 1.6em 0 0.5em;\n padding-top: 0;\n font-size: 1.26em;\n border-top: none;\n}\n.aero-doc--web h3 { display: block; margin: 1.3em 0 0.4em; font-size: 1.1em; }\n.aero-doc--web h3::before { display: none; }\n\n/* 节标题编号「1 / 1.1 / 1.1.1」(阅读器端写入,见 src/client/docEnhance.ts):\n 等宽数字 + 强调色,只做路标,不加大字号、不抢标题本身。 */\n.aero-doc .aero-secnum {\n flex: none;\n margin-right: 0.2em;\n font-variant-numeric: tabular-nums;\n font-weight: 600;\n color: var(--aero-accent);\n}\n/* h3 是 flex(竖标 + 文字),编号作为 flex 项已由 gap 提供间距,不再叠 margin */\n.aero-doc h3 > .aero-secnum { margin-right: 0; }\n\n/* ---------------------------------------------------------------------------\n * 3. 段落:书籍体首行缩进 2 字符;网页体用段间距\n * ------------------------------------------------------------------------- */\n.aero-doc p { margin: 0.55em 0; orphans: 2; widows: 2; }\n/* 中文书籍体例:每一段(含节首段)都首行缩进 2 字符 */\n.aero-doc .paragraph > p { text-indent: 2em; }\n/* 缩进只给「正文段」:列表、表格、图注、卡片内的段落一律不缩进 */\n.aero-doc li p,\n.aero-doc dd p,\n.aero-doc td p,\n.aero-doc th p,\n.aero-doc .admonitionblock p,\n.aero-doc .exampleblock p,\n.aero-doc .sidebarblock p,\n.aero-doc .quoteblock p,\n.aero-doc .aero-caption p,\n.aero-doc .aero-doc-meta p,\n.aero-doc blockquote p,\n.aero-doc #toc p,\n.aero-doc #footnotes p { text-indent: 0; }\n.aero-doc--web .paragraph > p { text-indent: 0; }\n\n/* 导语 / 摘要:略大字号、弱色,作为章首的引子 */\n.aero-doc .paragraph.lead > p,\n.aero-doc .exampleblock.lead > .content > .paragraph > p,\n.aero-doc .exampleblock.lead p {\n font-size: 1.04em;\n color: var(--aero-ink-2);\n}\n.aero-doc .quoteblock.abstract {\n margin: 1.4em 0;\n padding: 0.9em 1.2em 0.9em 1.8em;\n border: 1px solid var(--aero-rule);\n border-radius: 10px;\n background: var(--aero-soft);\n color: var(--aero-ink-2);\n font-size: 0.96em;\n}\n.aero-doc .quoteblock.abstract blockquote { padding: 0; border: none; }\n\n/* ---------------------------------------------------------------------------\n * 4. 列表:无序/有序标记、描述列表、横向列表、checklist、callout 清单\n * ------------------------------------------------------------------------- */\n.aero-doc ul,\n.aero-doc ol { margin: 0.6em 0; padding-left: 1.9em; }\n.aero-doc li { margin: 0.22em 0; }\n.aero-doc li > p { margin: 0.2em 0; }\n.aero-doc ul.disc > li,\n.aero-doc ul:not([class]) > li { list-style-type: disc; }\n.aero-doc ul.circle > li { list-style-type: circle; }\n.aero-doc ul.square > li { list-style-type: square; }\n.aero-doc ul.none,\n.aero-doc ul.no-bullet { list-style: none; padding-left: 0.2em; }\n.aero-doc ol.arabic { list-style-type: decimal; }\n.aero-doc ol.loweralpha { list-style-type: lower-alpha; }\n.aero-doc ol.upperalpha { list-style-type: upper-alpha; }\n.aero-doc ol.lowerroman { list-style-type: lower-roman; }\n.aero-doc ol.upperroman { list-style-type: upper-roman; }\n.aero-doc .ulist .ulist,\n.aero-doc .olist .olist { margin: 0.2em 0; }\n\n.aero-doc .dlist > dl > dt,\n.aero-doc .dlist > dl > dd { margin: 0; }\n.aero-doc .dlist .hdlist1 {\n margin-top: 0.7em;\n font-weight: 600;\n color: var(--aero-ink);\n}\n.aero-doc .dlist > dl > dd { padding-left: 1.2em; color: var(--aero-ink-2); }\n.aero-doc .dlist > dl > dd::before { content: \"— \"; color: var(--aero-ink-3); }\n\n/* 横向描述列表([horizontal])在 Asciidoctor 里输出内层表格 */\n.aero-doc .hdlist > table { border: none; border-collapse: collapse; }\n.aero-doc .hdlist > table td { border: none; padding: 0.25em 0; vertical-align: top; }\n.aero-doc .hdlist td.hdlist1 {\n width: 9em;\n padding-right: 1em;\n font-weight: 600;\n white-space: nowrap;\n}\n.aero-doc .hdlist td.hdlist1::after { content: \"\"; }\n.aero-doc .hdlist td.hdlist2 { color: var(--aero-ink-2); }\n\n/* checklist([checklist] 语法,icons: font 输出 Font Awesome 方框) */\n.aero-doc .ulist.checklist ul { list-style: none; padding-left: 0.2em; }\n.aero-doc .ulist.checklist li { padding-left: 1.6em; text-indent: -1.6em; }\n.aero-doc .ulist.checklist .fa::before {\n display: inline-block;\n width: 1.25em;\n color: var(--aero-accent-ink);\n font-style: normal;\n text-align: left;\n}\n.aero-doc .ulist.checklist .fa-check-square-o::before,\n.aero-doc .ulist.checklist .fa-check-square::before { content: \"\\2611\\FE0E\"; }\n.aero-doc .ulist.checklist .fa-square-o::before { content: \"\\2610\\FE0E\"; }\n\n/* ---------------------------------------------------------------------------\n * 5. 表格:frame/grid/stripes 全组合 + 单元格对齐 + 题注;宽表横向滚动\n * ------------------------------------------------------------------------- */\n.aero-doc .aero-tablewrap {\n max-width: 100%;\n margin: 1.5em 0;\n overflow-x: auto;\n overscroll-behavior-x: contain;\n}\n.aero-doc table.tableblock {\n border-collapse: collapse;\n font-size: 0.94em;\n line-height: 1.65;\n font-family: inherit;\n}\n.aero-doc table.tableblock.stretch { width: 100%; }\n.aero-doc table.tableblock.fit-content { width: auto; }\n.aero-doc table.tableblock > caption,\n.aero-doc table.tableblock > .title {\n caption-side: top;\n padding: 0 0 0.55em;\n font-family: inherit;\n font-size: 0.95em;\n font-weight: 600;\n color: var(--aero-ink-2);\n text-align: center;\n}\n.aero-doc table.tableblock th,\n.aero-doc table.tableblock td {\n padding: 0.42em 0.7em;\n border: 1px solid transparent;\n text-align: left;\n vertical-align: top;\n}\n.aero-doc table.tableblock thead th {\n background: var(--aero-soft);\n font-weight: 600;\n color: var(--aero-ink);\n}\n.aero-doc table.tableblock tfoot td {\n background: var(--aero-soft);\n color: var(--aero-ink-2);\n font-size: 0.96em;\n}\n.aero-doc table.tableblock th > p,\n.aero-doc table.tableblock td > p { margin: 0; }\n\n/* frame-*:外框 */\n.aero-doc table.tableblock.frame-all,\n.aero-doc table.tableblock.frame-sides,\n.aero-doc table.tableblock.frame-none,\n.aero-doc table.tableblock.frame-topbot,\n.aero-doc table.tableblock.frame-ends { border: none; }\n.aero-doc table.tableblock.frame-all th,\n.aero-doc table.tableblock.frame-all td { border: 1px solid var(--aero-rule); }\n.aero-doc table.tableblock.frame-sides th:first-child,\n.aero-doc table.tableblock.frame-sides td:first-child { border-left: 1px solid var(--aero-rule); }\n.aero-doc table.tableblock.frame-sides th:last-child,\n.aero-doc table.tableblock.frame-sides td:last-child { border-right: 1px solid var(--aero-rule); }\n.aero-doc table.tableblock.frame-topbot thead th,\n.aero-doc table.tableblock.frame-ends thead th { border-top: 1.5px solid var(--aero-rule-strong); }\n.aero-doc table.tableblock.frame-topbot tbody tr:last-child td,\n.aero-doc table.tableblock.frame-ends tbody tr:last-child td,\n.aero-doc table.tableblock.frame-topbot tfoot tr:last-child td,\n.aero-doc table.tableblock.frame-ends tfoot tr:last-child td { border-bottom: 1.5px solid var(--aero-rule-strong); }\n.aero-doc table.tableblock.frame-none thead th { border-bottom: 1.5px solid var(--aero-rule-strong); }\n.aero-doc table.tableblock.frame-none tfoot td { border-top: 1px solid var(--aero-rule); }\n\n/* grid-*:内部网格 */\n.aero-doc table.tableblock.grid-all th,\n.aero-doc table.tableblock.grid-all td { border-top: 1px solid var(--aero-rule); border-left: 1px solid var(--aero-rule); }\n.aero-doc table.tableblock.grid-all th:last-child,\n.aero-doc table.tableblock.grid-all td:last-child { border-right: 1px solid var(--aero-rule); }\n.aero-doc table.tableblock.grid-all tr:last-child td { border-bottom: 1px solid var(--aero-rule); }\n.aero-doc table.tableblock.grid-rows th:not(:first-child),\n.aero-doc table.tableblock.grid-rows td:not(:first-child) { border-left: none; }\n.aero-doc table.tableblock.grid-rows th,\n.aero-doc table.tableblock.grid-rows td { border-top: 1px solid var(--aero-rule); }\n.aero-doc table.tableblock.grid-cols th,\n.aero-doc table.tableblock.grid-cols td { border-left: 1px solid var(--aero-rule); }\n.aero-doc table.tableblock.grid-cols th:first-child,\n.aero-doc table.tableblock.grid-cols td:first-child { border-left: none; }\n.aero-doc table.tableblock.grid-none th,\n.aero-doc table.tableblock.grid-none td { border-left: none; border-right: none; }\n.aero-doc table.tableblock.grid-none thead th { border-bottom: 1.5px solid var(--aero-rule-strong); }\n.aero-doc table.tableblock.grid-none tfoot td { border-top: 1px solid var(--aero-rule); }\n\n/* 三线表(frame-topbot/grid-rows/grid-none 这类学术表)与网格表共用上面的规则;\n 以下补 header 分隔线,使任何 frame 下表头都有一条压线 */\n.aero-doc table.tableblock thead th { border-bottom: 1px solid var(--aero-rule-strong); }\n\n/* stripes-*:隔行底纹(作者显式要求时才出现) */\n.aero-doc table.tableblock.stripes-even tbody tr:nth-child(even),\n.aero-doc table.tableblock.stripes-all tbody tr:nth-child(even),\n.aero-doc table.tableblock.stripes-odd tbody tr:nth-child(odd) { background: var(--aero-soft); }\n.aero-doc table.tableblock.stripes-hover tbody tr:hover { background: var(--aero-hover); }\n\n/* 单元格对齐(halign-*/valign-*) */\n.aero-doc table.tableblock .halign-left { text-align: left; }\n.aero-doc table.tableblock .halign-center { text-align: center; }\n.aero-doc table.tableblock .halign-right { text-align: right; }\n.aero-doc table.tableblock .valign-top { vertical-align: top; }\n.aero-doc table.tableblock .valign-middle { vertical-align: middle; }\n.aero-doc table.tableblock .valign-bottom { vertical-align: bottom; }\n\n/* ---------------------------------------------------------------------------\n * 6. 图:题注(作者写在 image::[图注] 里 → alt 属性)升级为可见图注,\n * 分「图号 / 对象 / 条件→结论」三层;点击放大。\n * ------------------------------------------------------------------------- */\n.aero-doc .imageblock {\n margin: 1.5em 0;\n text-align: center;\n}\n.aero-doc .imageblock > .content {\n display: block;\n line-height: 0;\n}\n.aero-doc .imageblock img {\n max-width: 100%;\n height: auto;\n border-radius: 4px;\n}\n.aero-doc .imageblock.aero-zoomable img { cursor: zoom-in; }\n.aero-doc .imageblock.aero-zoomable img:hover { outline: 2px solid color-mix(in srgb, var(--aero-accent) 45%, transparent); outline-offset: 2px; }\n.aero-doc .imageblock.text-center,\n.aero-doc .imageblock.text-center > .content { text-align: center; }\n.aero-doc .imageblock.text-left { text-align: left; }\n.aero-doc .imageblock.text-right { text-align: right; }\n.aero-doc .imageblock.left,\n.aero-doc .imageblock.right {\n max-width: 48%;\n margin: 0.4em 1.2em 0.8em;\n}\n.aero-doc .imageblock.left { float: left; margin-left: 0; }\n.aero-doc .imageblock.right { float: right; margin-right: 0; }\n.aero-doc .imageblock.thumb img { border: 1px solid var(--aero-rule); }\n\n/* 图注:居中、小字号、弱色;「图 C05.9-1」加粗,「。——条件→结论」另起一行更弱 */\n.aero-doc .aero-caption,\n.aero-doc .imageblock > .title {\n margin: 0.6em auto 0;\n max-width: 40em;\n font-size: 0.88em;\n line-height: 1.7;\n color: var(--aero-ink-2);\n text-align: center;\n text-indent: 0;\n}\n.aero-doc .aero-caption .aero-cap-no {\n margin-right: 0.4em;\n font-weight: 600;\n color: var(--aero-ink);\n white-space: nowrap;\n}\n.aero-doc .aero-caption .aero-cap-tail {\n display: block;\n margin-top: 0.1em;\n font-size: 0.96em;\n color: var(--aero-ink-3);\n}\n.aero-doc img.aero-inline-img { vertical-align: middle; }\n\n/* ---------------------------------------------------------------------------\n * 7. admonition:五种提示块。内层 <table> 必须去表格化(旧样式会把它变成带框表格)\n * ------------------------------------------------------------------------- */\n.aero-doc .admonitionblock {\n --aero-adm: var(--aero-accent);\n margin: 1.4em 0;\n padding: 0;\n border: 1px solid color-mix(in srgb, var(--aero-adm) 26%, transparent);\n border-left: 4px solid var(--aero-adm);\n border-radius: 10px;\n background: color-mix(in srgb, var(--aero-adm) 6%, transparent);\n}\n.aero-doc .admonitionblock.note { --aero-adm: var(--dsw-alias-state-business-primary, #2f6feb); }\n.aero-doc .admonitionblock.tip { --aero-adm: var(--dsw-alias-state-success-primary, #2f9e44); }\n.aero-doc .admonitionblock.important { --aero-adm: var(--dsw-alias-state-warn-label, #e8590c); }\n.aero-doc .admonitionblock.warning { --aero-adm: var(--dsw-alias-state-warn-primary, #f08c00); }\n.aero-doc .admonitionblock.caution { --aero-adm: var(--dsw-alias-state-error-primary, #e03131); }\n\n.aero-doc .admonitionblock > table {\n display: block;\n width: auto;\n margin: 0;\n border: none;\n border-collapse: separate;\n}\n.aero-doc .admonitionblock > table > tbody { display: block; }\n.aero-doc .admonitionblock > table > tbody > tr {\n display: flex;\n align-items: stretch;\n gap: 0;\n}\n.aero-doc .admonitionblock > table td {\n display: block;\n border: none;\n background: none;\n padding: 0.85em 1em 0.9em 0;\n vertical-align: top;\n}\n.aero-doc .admonitionblock > table td.icon {\n flex: none;\n width: 2.9em;\n padding: 0.95em 0 0 0.95em;\n color: var(--aero-adm);\n text-align: center;\n}\n.aero-doc .admonitionblock > table td.content {\n flex: 1 1 auto;\n min-width: 0;\n padding-right: 1.1em;\n color: var(--aero-ink);\n}\n.aero-doc .admonitionblock > table td.content > :first-child { margin-top: 0; }\n.aero-doc .admonitionblock > table td.content > :last-child { margin-bottom: 0; }\n/* 图标:DSH 主题没有 Font Awesome,用内联 SVG 蒙版自绘(随文字色,明暗自适应) */\n.aero-doc .admonitionblock td.icon .fa {\n display: inline-block;\n width: 1.35em;\n height: 1.35em;\n background-color: currentColor;\n -webkit-mask: var(--aero-adm-icon) center / contain no-repeat;\n mask: var(--aero-adm-icon) center / contain no-repeat;\n}\n.aero-doc .admonitionblock.note td.icon .fa {\n --aero-adm-icon: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'%3E%3Ccircle cx='8' cy='8' r='6.3'/%3E%3Cpath d='M8 7.3v4.2'/%3E%3Cpath d='M8 4.7h.01'/%3E%3C/svg%3E\");\n}\n.aero-doc .admonitionblock.tip td.icon .fa {\n --aero-adm-icon: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 1.9a4.1 4.1 0 0 0-2.4 7.4c.4.3.6.7.6 1.2v.4h3.6v-.4c0-.5.2-.9.6-1.2A4.1 4.1 0 0 0 8 1.9z'/%3E%3Cpath d='M6.5 13.1h3'/%3E%3C/svg%3E\");\n}\n.aero-doc .admonitionblock.important td.icon .fa {\n --aero-adm-icon: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'%3E%3Ccircle cx='8' cy='8' r='6.3'/%3E%3Cpath d='M8 4.6v4.6'/%3E%3Cpath d='M8 11.6h.01'/%3E%3C/svg%3E\");\n}\n.aero-doc .admonitionblock.warning td.icon .fa {\n --aero-adm-icon: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 2.2 14.5 13.5H1.5z'/%3E%3Cpath d='M8 6.4v3.3'/%3E%3Cpath d='M8 11.8h.01'/%3E%3C/svg%3E\");\n}\n.aero-doc .admonitionblock.caution td.icon .fa {\n --aero-adm-icon: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'%3E%3Ccircle cx='8' cy='8' r='6.3'/%3E%3Cpath d='M4.4 11.6 11.6 4.4'/%3E%3C/svg%3E\");\n}\n/* 提示块标题:作者用 `.历史注记` 换行 `[NOTE]` 的写法,标题在 content 里 */\n.aero-doc .admonitionblock td.content > .title {\n margin: 0 0 0.3em;\n padding: 0;\n font-size: 0.95em;\n font-weight: 600;\n letter-spacing: 0.02em;\n color: var(--aero-adm);\n text-align: left;\n}\n.aero-doc .admonitionblock td.content > .title::before {\n content: \"\";\n display: inline-block;\n width: 0.2em;\n height: 0.85em;\n margin-right: 0.5em;\n border-radius: 2px;\n background: currentColor;\n vertical-align: -0.05em;\n}\n\n/* ---------------------------------------------------------------------------\n * 8. example / sidebar / quote / verse / open:AsciiDoc 的「书本卡片」\n * ------------------------------------------------------------------------- */\n/* 例题 / 示例:带边框的卡片,题注做成左上角标签 */\n.aero-doc .exampleblock {\n margin: 1.5em 0;\n border: 1px solid var(--aero-rule);\n border-radius: 10px;\n background: var(--aero-paper);\n overflow: hidden;\n}\n.aero-doc .exampleblock > .title {\n margin: 0;\n padding: 0.45em 1em;\n border-bottom: 1px solid var(--aero-rule);\n background: var(--aero-soft);\n font-size: 0.92em;\n font-weight: 600;\n color: var(--aero-ink-2);\n text-align: left;\n}\n.aero-doc .exampleblock > .content { padding: 0.85em 1.1em 0.95em; }\n.aero-doc .exampleblock > .content > :first-child { margin-top: 0; }\n.aero-doc .exampleblock > .content > :last-child { margin-bottom: 0; }\n\n/* 侧栏([sidebar]):书籍里最常见的「插叙」块 */\n.aero-doc .sidebarblock {\n margin: 1.6em 0;\n padding: 0.95em 1.15em 1em;\n border: 1px solid var(--aero-rule);\n border-radius: 10px;\n background:\n linear-gradient(180deg, color-mix(in srgb, var(--aero-accent) 5%, transparent), transparent 60%),\n var(--aero-soft);\n font-size: 0.96em;\n}\n.aero-doc .sidebarblock > .content > .title {\n margin: 0 0 0.5em;\n padding-bottom: 0.35em;\n border-bottom: 1px dashed var(--aero-rule-strong);\n font-size: 0.95em;\n font-weight: 600;\n letter-spacing: 0.04em;\n color: var(--aero-accent-ink);\n text-align: left;\n}\n.aero-doc .sidebarblock > .content > :first-child { margin-top: 0; }\n.aero-doc .sidebarblock > .content > :last-child { margin-bottom: 0; }\n\n/* 引文([quote]):大引号 + 出处右对齐 */\n.aero-doc .quoteblock {\n margin: 1.7em 0;\n padding: 0.2em 0 0.2em 2em;\n border-left: 3px solid color-mix(in srgb, var(--aero-accent) 45%, transparent);\n color: var(--aero-ink-2);\n}\n.aero-doc .quoteblock blockquote {\n position: relative;\n margin: 0;\n padding: 0;\n border: none;\n quotes: \"\\201C\" \"\\201D\" \"\\2018\" \"\\2019\";\n}\n/* 装饰引号用绝对定位压在左侧留白里。\n 注意:伪元素的 em 一律按**伪元素自身**的 font-size 解析,所以不能靠\n font-size:2.3em + left:-1.05em 来定位(那会甩到块外一个引号的距离);\n 这里保持 1em 排版尺寸,用 transform 放大,定位才与父级字号一致。 */\n.aero-doc .quoteblock blockquote::before {\n content: \"\\201C\";\n position: absolute;\n top: -0.16em;\n left: -1.05em;\n font-family: var(--aero-serif);\n font-size: 1em;\n line-height: 1;\n transform: scale(2.3);\n transform-origin: left top;\n color: color-mix(in srgb, var(--aero-accent) 55%, transparent);\n pointer-events: none;\n}\n.aero-doc .quoteblock .attribution,\n.aero-doc .verseblock .attribution {\n margin-top: 0.5em;\n font-size: 0.9em;\n font-style: normal;\n color: var(--aero-ink-3);\n text-align: right;\n}\n.aero-doc .quoteblock .attribution br,\n.aero-doc .verseblock .attribution br { display: none; }\n.aero-doc .quoteblock .attribution::before,\n.aero-doc .verseblock .attribution::before { content: \"\\2014\\00A0\"; }\n.aero-doc .quoteblock .attribution cite,\n.aero-doc .verseblock .attribution cite { font-style: italic; }\n.aero-doc .quoteblock .attribution cite::before { content: \"\\300A\"; font-style: normal; }\n.aero-doc .quoteblock .attribution cite::after { content: \"\\300B\"; font-style: normal; }\n\n/* 题诗([verse]):居中、保留换行 */\n.aero-doc .verseblock {\n margin: 1.8em 0;\n padding: 0.6em 1em;\n font-size: 1em;\n}\n.aero-doc .verseblock pre {\n margin: 0;\n padding: 0;\n border: none;\n background: none;\n font-family: var(--aero-serif);\n font-size: 1em;\n line-height: 2;\n text-align: center;\n white-space: pre-wrap;\n color: var(--aero-ink-2);\n}\n\n/* 开放块([open])只做留白,不加装饰 */\n.aero-doc .openblock { margin: 1.2em 0; }\n.aero-doc .openblock > .title,\n.aero-doc .literalblock > .title,\n.aero-doc .listingblock > .title {\n margin: 0 0 0.45em;\n font-size: 0.9em;\n font-weight: 600;\n color: var(--aero-ink-2);\n text-align: left;\n}\n\n/* ---------------------------------------------------------------------------\n * 9. 代码:listing(含语言角标、callout 编号)/ literal / colist 清单\n * ------------------------------------------------------------------------- */\n.aero-doc .listingblock,\n.aero-doc .literalblock { margin: 1.3em 0; }\n.aero-doc .listingblock > .content { position: relative; }\n.aero-doc .listingblock pre,\n.aero-doc .literalblock pre {\n margin: 0;\n padding: 0.85em 1em;\n border: 1px solid var(--aero-rule);\n border-radius: 8px;\n background: var(--dsw-alias-markdown-code-block, var(--aero-soft));\n overflow-x: auto;\n font-family: var(--aero-mono);\n font-size: 0.86em;\n line-height: 1.7;\n text-align: left;\n text-indent: 0;\n white-space: pre;\n tab-size: 4;\n}\n.aero-doc .listingblock code,\n.aero-doc .literalblock code { font-family: inherit; }\n.aero-doc .listingblock code[data-lang]::before {\n content: attr(data-lang);\n position: absolute;\n top: 0.45em;\n right: 0.7em;\n font-family: var(--aero-mono);\n font-size: 0.72em;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--aero-ink-3);\n pointer-events: none;\n}\n/* callout 编号(<i class=\"conum\" data-value=\"1\">) */\n.aero-doc .conum[data-value] {\n display: inline-block;\n width: 1.35em;\n height: 1.35em;\n margin: 0 0.15em;\n border-radius: 50%;\n background: var(--aero-accent-ink);\n color: var(--aero-paper);\n font-family: var(--aero-sans);\n font-size: 0.72em;\n font-weight: 600;\n font-style: normal;\n line-height: 1.35em;\n text-align: center;\n vertical-align: 0.15em;\n}\n.aero-doc .conum[data-value]::after { content: attr(data-value); }\n.aero-doc .conum[data-value] + b { display: none; }\n.aero-doc .colist { margin: 0.7em 0 1.3em; font-size: 0.92em; }\n.aero-doc .colist > table { border: none; border-collapse: collapse; }\n.aero-doc .colist > table td { border: none; padding: 0.15em 0.5em 0.15em 0; vertical-align: top; }\n.aero-doc .colist > table td:first-child { width: 1.8em; }\n\n/* ---------------------------------------------------------------------------\n * 10. 行内:代码、链接、强调、上下标、role(text-center/line-through/mark…)\n * ------------------------------------------------------------------------- */\n.aero-doc code,\n.aero-doc kbd,\n.aero-doc samp {\n font-family: var(--aero-mono);\n font-size: 0.88em;\n}\n.aero-doc :not(pre) > code {\n padding: 0.12em 0.38em;\n border: 1px solid var(--aero-rule);\n border-radius: 4px;\n background: var(--dsw-alias-markdown-inline-code, var(--aero-soft));\n overflow-wrap: break-word;\n}\n.aero-doc a,\n.aero-doc a:visited {\n color: var(--aero-accent);\n text-decoration: none;\n border-bottom: 1px solid color-mix(in srgb, var(--aero-accent) 35%, transparent);\n}\n.aero-doc a:hover { border-bottom-color: currentColor; }\n.aero-doc a[data-kbdoc] { cursor: pointer; }\n.aero-doc strong,\n.aero-doc b { font-weight: 600; color: var(--aero-ink); }\n.aero-doc em,\n.aero-doc i { font-style: italic; }\n.aero-doc sup,\n.aero-doc sub { font-size: 0.72em; line-height: 0; }\n.aero-doc .mark {\n padding: 0 0.15em;\n border-radius: 3px;\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary, #f0b429) 30%, transparent);\n color: inherit;\n}\n.aero-doc .line-through { text-decoration: line-through; }\n.aero-doc .underline { text-decoration: underline; }\n.aero-doc .overline { text-decoration: overline; }\n.aero-doc .big { font-size: 1.15em; }\n.aero-doc .small { font-size: 0.86em; }\n.aero-doc .text-center { text-align: center; }\n.aero-doc .text-right { text-align: right; }\n.aero-doc .text-left { text-align: left; }\n.aero-doc .text-justify { text-align: justify; }\n.aero-doc .nowrap { white-space: nowrap; }\n.aero-doc .hide { display: none; }\n.aero-doc .menuseq,\n.aero-doc .keyseq { white-space: nowrap; }\n.aero-doc .menuseq b.caret { font-weight: 400; color: var(--aero-ink-3); }\n/* footnote:正文里的上标编号 + 文末脚注区 */\n.aero-doc .footnote { font-size: 0.82em; vertical-align: super; line-height: 0; }\n.aero-doc .footnote a { border-bottom: none; }\n.aero-doc #footnotes {\n margin-top: 2.4em;\n padding-top: 0.9em;\n border-top: 1px solid var(--aero-rule);\n font-size: 0.88em;\n color: var(--aero-ink-2);\n}\n.aero-doc #footnotes .footnote { font-size: 1em; vertical-align: baseline; }\n.aero-doc #footnotes hr { display: none; }\n\n/* ---------------------------------------------------------------------------\n * 11. 目录(:toc: + toc::[]):书本目录的引导点与层级缩进\n * ------------------------------------------------------------------------- */\n.aero-doc .toc,\n.aero-doc #toc {\n margin: 1.6em 0 2.2em;\n padding: 1em 1.2em;\n border: 1px solid var(--aero-rule);\n border-radius: 10px;\n background: var(--aero-soft);\n font-size: 0.94em;\n}\n.aero-doc #toc > .title,\n.aero-doc .toc > .title {\n margin: 0 0 0.6em;\n font-size: 1em;\n font-weight: 600;\n letter-spacing: 0.08em;\n color: var(--aero-ink-2);\n text-align: center;\n}\n.aero-doc .toc ul { margin: 0; padding: 0; list-style: none; }\n.aero-doc .toc ul ul { padding-left: 1.2em; }\n.aero-doc .toc li { margin: 0.2em 0; }\n.aero-doc .toc a { border-bottom: none; color: var(--aero-ink-2); }\n.aero-doc .toc a:hover { color: var(--aero-accent); }\n\n/* ---------------------------------------------------------------------------\n * 12. 知识库固定小节(本节小结 / 本节来源 / 练习指引):给「书末固定栏目」做卡片\n * 由 DocViewer 的 DOM 增强给 .sect1 打上 aero-sect-* 类\n * ------------------------------------------------------------------------- */\n.aero-doc .sect1.aero-sect-summary > .sectionbody {\n padding: 0.9em 1.15em 1em;\n border: 1px solid var(--aero-rule);\n border-left: 4px solid var(--aero-accent);\n border-radius: 10px;\n background: var(--aero-soft);\n}\n.aero-doc .sect1.aero-sect-source > .sectionbody { font-size: 0.92em; color: var(--aero-ink-2); }\n.aero-doc .sect1.aero-sect-practice > .sectionbody {\n padding: 0.9em 1.15em 1em;\n border: 1px dashed var(--aero-rule-strong);\n border-radius: 10px;\n}\n.aero-doc .sect1.aero-sect-source .tableblock { font-size: 0.95em; }\n\n/* ---------------------------------------------------------------------------\n * 13. 其它块级与主题细节\n * ------------------------------------------------------------------------- */\n.aero-doc hr {\n margin: 1.8em auto;\n border: none;\n border-top: 1px solid var(--aero-rule);\n width: 60%;\n}\n.aero-doc .aero-math-block {\n margin: 1.2em 0;\n overflow-x: auto;\n overflow-y: hidden;\n text-align: center;\n}\n.aero-doc .aero-math-block .katex-display { margin: 0.2em 0; }\n.aero-doc .aero-math-inline { white-space: nowrap; }\n.aero-doc .aero-math-inline .katex { font-size: 1.03em; }\n.aero-doc .sect1 + .sect1 { margin-top: 0.6em; }\n.aero-doc .sect2 + .sect2 { margin-top: 0.4em; }\n.aero-doc .videoblock,\n.aero-doc .audioblock { margin: 1.4em 0; text-align: center; }\n\n/* ---------------------------------------------------------------------------\n * 14. Markdown 文档(教材《空气动力学基础》章、英文参考书、2025 教案)通用回退\n *\n * 同一个 .aero-doc 也承载 markdown-it 的输出,而它的结构与 AsciiDoc 不同:\n * 裸 <p>/<img>/<table>/<pre>/<blockquote> 直接挂在 .aero-doc-body 下(没有\n * .paragraph/.imageblock/.tableblock 包装)。这里只用**直接子元素**选择器补回退,\n * 以免误伤 AsciiDoc 的结构性内层表格(admonition / colist / hdlist 的内层\n * <table> 都没有 .tableblock 类,用 `table:not(.tableblock)` 会连它们一起套上边框,\n * 把提示块又变回带框表格)。\n * ------------------------------------------------------------------------- */\n/* 段落缩进:markdown 的顶层段落没有 .paragraph 包装,按版式单独给缩进 */\n.aero-doc--book .aero-doc-body > p { text-indent: 2em; }\n.aero-doc--web .aero-doc-body > p { text-indent: 0; }\n.aero-doc img {\n max-width: 100%;\n height: auto;\n border-radius: 4px;\n}\n/* 整段只有图(或「图 + 图注同段」)→ 当作插图块:居中 + 可放大 + 图注分层 */\n.aero-doc .aero-md-figure {\n margin: 1.4em 0;\n text-align: center;\n text-indent: 0;\n}\n.aero-doc .aero-md-figure img { cursor: zoom-in; }\n.aero-doc .aero-md-figure img:hover {\n outline: 2px solid color-mix(in srgb, var(--aero-accent) 45%, transparent);\n outline-offset: 2px;\n}\n.aero-doc-body > pre {\n margin: 1.2em 0;\n padding: 0.85em 1em;\n border: 1px solid var(--aero-rule);\n border-radius: 8px;\n background: var(--dsw-alias-markdown-code-block, var(--aero-soft));\n overflow-x: auto;\n font-family: var(--aero-mono);\n font-size: 0.86em;\n line-height: 1.7;\n text-align: left;\n text-indent: 0;\n tab-size: 4;\n}\n.aero-doc-body > pre code { font-family: inherit; background: none; border: none; padding: 0; }\n.aero-doc-body > blockquote {\n margin: 1.2em 0;\n padding: 0.1em 0 0.1em 1em;\n border-left: 3px solid color-mix(in srgb, var(--aero-accent) 40%, transparent);\n color: var(--aero-ink-2);\n}\n.aero-doc-body > blockquote > p { text-indent: 0; }\n/* markdown 表格(无 .tableblock 类):等价于 AsciiDoc 的 frame-all grid-all */\n.aero-doc-body > table {\n border-collapse: collapse;\n margin: 1.4em 0;\n font-size: 0.94em;\n line-height: 1.65;\n}\n.aero-doc-body > table th,\n.aero-doc-body > table td {\n padding: 0.4em 0.65em;\n border: 1px solid var(--aero-rule);\n text-align: left;\n vertical-align: top;\n}\n.aero-doc-body > table th {\n background: var(--aero-soft);\n font-weight: 600;\n}\n.aero-doc-body > table code { white-space: nowrap; }\n\n/* ---------------------------------------------------------------------------\n * 16. 用户阅读偏好(由「阅读设置」面板写入 data-* 属性,取值定义见 readerPrefs.ts)\n *\n * 选择器一律带属性,特异性高于 .aero-doc / .aero-doc--web 与各构造规则,\n * 因此不依赖书写顺序。取值为 auto / theme / 100 / normal 时不输出规则,\n * 保持该版式的原生默认(例如「标准」行距 = 书籍 1.9、网页 1.8)。\n * ------------------------------------------------------------------------- */\n\n/* 16.1 字号倍率:与 DSH 全局字号相乘而不是覆盖,用户在 DSH 设置里改字号仍生效。\n 倍率由 DocViewer 以 --aero-scale 内联写入(FONT_STEPS 的取值,见 readerPrefs.ts),\n §0 的 --aero-base 直接乘它——**不在这里逐档枚举规则**:早先的写法只覆盖\n data-scale 90/110/125/140/160 五档,档位表一旦加档(如 180/200/250/300)\n 新档就没有样式,表现为「按 A+ 显示 180% 但字号纹丝不动」。 */\n\n/* 16.2 字体族:两族一起改,书籍版式与网页版式都听用户的 */\n.aero-doc[data-font='serif'] {\n --aero-serif: Georgia, \"Nimbus Roman\", \"Times New Roman\", \"Noto Serif SC\", \"Source Han Serif SC\",\n \"Source Han Serif CN\", \"Songti SC\", STSong, SimSun, serif;\n --aero-sans: Georgia, \"Nimbus Roman\", \"Times New Roman\", \"Noto Serif SC\", \"Source Han Serif SC\",\n \"Source Han Serif CN\", \"Songti SC\", STSong, SimSun, serif;\n}\n.aero-doc[data-font='sans'] {\n --aero-serif: -apple-system, \"Segoe UI\", \"PingFang SC\", \"Microsoft YaHei\", \"Noto Sans SC\", sans-serif;\n --aero-sans: -apple-system, \"Segoe UI\", \"PingFang SC\", \"Microsoft YaHei\", \"Noto Sans SC\", sans-serif;\n}\n.aero-doc[data-font='kai'] {\n --aero-serif: KaiTi, STKaiti, \"Kaiti SC\", \"KaiTi_GB2312\", \"Noto Serif SC\", \"Songti SC\", serif;\n --aero-sans: KaiTi, STKaiti, \"Kaiti SC\", \"KaiTi_GB2312\", \"Noto Serif SC\", \"Songti SC\", serif;\n}\n\n/* 16.3 行距 */\n.aero-doc[data-leading='tight'] { line-height: 1.65; }\n.aero-doc[data-leading='loose'] { line-height: 2.25; }\n\n/* 16.4 版心:auto 不写规则 → 书籍 42em / 网页 56em 的原生默认 */\n.aero-doc[data-measure='narrow'] { --aero-measure: 34em; }\n.aero-doc[data-measure='wide'] { --aero-measure: 64em; }\n.aero-doc[data-measure='full'] { --aero-measure: none; }\n\n/* 16.5 底色:纸面与墨色成套写到外层 wrapper 的 -ov 变量上,正文卡片与右侧目录共用;\n wrapper 自身也铺同色底,于是正文两侧留白与页脚一起进入纸面,\n 而不是\"白底上浮一张色卡\"。注意这几段也定义了右侧目录(.docOutline)要用的墨色。 */\n[data-aero-doc-wrap][data-paper='white'] {\n --aero-paper-ov: #ffffff;\n --aero-ink-ov: #17181a;\n --aero-ink-2-ov: #4a4f57;\n --aero-ink-3-ov: #7b828c;\n --aero-rule-ov: rgba(20, 25, 35, 0.12);\n --aero-rule-strong-ov: rgba(20, 25, 35, 0.24);\n --aero-soft-ov: rgba(20, 25, 35, 0.04);\n --aero-hover-ov: rgba(20, 25, 35, 0.06);\n --aero-shadow-ov: 0 1px 2px rgba(15, 25, 50, 0.05), 0 18px 40px -32px rgba(15, 25, 50, 0.4);\n background: #ffffff;\n}\n[data-aero-doc-wrap][data-paper='sepia'] {\n --aero-paper-ov: #f7efdd;\n --aero-ink-ov: #3a3126;\n --aero-ink-2-ov: #6a5c46;\n --aero-ink-3-ov: #8d7f68;\n --aero-rule-ov: rgba(96, 76, 48, 0.2);\n --aero-rule-strong-ov: rgba(96, 76, 48, 0.34);\n --aero-soft-ov: rgba(120, 95, 55, 0.07);\n --aero-hover-ov: rgba(120, 95, 55, 0.11);\n --aero-shadow-ov: 0 1px 2px rgba(90, 70, 40, 0.06), 0 18px 40px -32px rgba(90, 70, 40, 0.4);\n background: #f7efdd;\n}\n[data-aero-doc-wrap][data-paper='green'] {\n --aero-paper-ov: #e7efe2;\n --aero-ink-ov: #22301d;\n --aero-ink-2-ov: #4e5c46;\n --aero-ink-3-ov: #77866e;\n --aero-rule-ov: rgba(60, 90, 45, 0.2);\n --aero-rule-strong-ov: rgba(60, 90, 45, 0.34);\n --aero-soft-ov: rgba(70, 110, 60, 0.07);\n --aero-hover-ov: rgba(70, 110, 60, 0.12);\n --aero-shadow-ov: 0 1px 2px rgba(50, 80, 40, 0.06), 0 18px 40px -32px rgba(50, 80, 40, 0.4);\n background: #e7efe2;\n}\n[data-aero-doc-wrap][data-paper='dark'] {\n --aero-paper-ov: #191c22;\n --aero-ink-ov: #dfe3e8;\n --aero-ink-2-ov: #a8b0bb;\n --aero-ink-3-ov: #7c8593;\n --aero-rule-ov: rgba(255, 255, 255, 0.14);\n --aero-rule-strong-ov: rgba(255, 255, 255, 0.26);\n --aero-soft-ov: rgba(255, 255, 255, 0.055);\n --aero-hover-ov: rgba(255, 255, 255, 0.09);\n --aero-accent-ov: #7aa2f7;\n --aero-accent-ink-ov: #9ec1ff;\n --aero-shadow-ov: 0 1px 2px rgba(0, 0, 0, 0.45), 0 18px 40px -32px rgba(0, 0, 0, 0.95);\n background: #191c22;\n}\n\n/* 网页版式默认不要纸面卡片;一旦选了非「跟随主题」的底色,补回正文内边距,\n 否则文字会贴着纸面边缘。 */\n[data-aero-doc-wrap]:not([data-paper='theme']) .aero-doc--web {\n padding: clamp(14px, 2.4vw, 28px) clamp(14px, 3vw, 34px) clamp(28px, 4vw, 48px);\n}\n\n/* ---------------------------------------------------------------------------\n * 17. 打印:A4 书页(Ctrl+P 直接当讲义印)\n * ------------------------------------------------------------------------- */\n@media print {\n .aero-doc {\n max-width: none;\n padding: 0;\n border: none;\n box-shadow: none;\n font-size: 10.5pt;\n line-height: 1.7;\n }\n .aero-doc h1 { font-size: 18pt; }\n .aero-doc h2 { font-size: 14pt; }\n .aero-doc .admonitionblock,\n .aero-doc .exampleblock,\n .aero-doc .sidebarblock,\n .aero-doc table.tableblock,\n .aero-doc .imageblock { break-inside: avoid; }\n .aero-doc img { max-height: 8.5cm; }\n}\n\n/* ---------------------------------------------------------------------------\n * 18. 阅读标注:荧光笔 / 重点线(客户端写入 <mark class=\"aero-anno\">)\n *\n * 学生要求「像微信读书那样用不同荧光色标重点、画重点线」。三条做法上的决定:\n * ① **荧光笔用「下半截染色带」而不是整块底色**:真荧光笔是划过字行下半部的,\n * 整块底色会把字形压进色块里,深色纸面(夜间)上尤其糊;染色带只覆盖行高的\n * 中下部,字形上缘仍落在纸面上,明暗两套纸色都读得清。\n * ② 颜色 `--aero-mark-*` 一律**写在 mark 自己身上**(§18.1/§18.2):自定义属性里的\n * var() 是在**声明它的元素**上解析的,若把染色带写在 `.aero-doc` 上用\n * `var(--aero-mark)`,解析时 mark 上的颜色还不存在 → 整个属性变成无效值,\n * 表现就是「DOM 里有 mark、屏幕上没有颜色」(本轮实测踩过这个坑)。\n * ③ 重点线(underline)不用 text-decoration:跨行时它会连到行尾空白,而我们按文本\n * 节点分片绘制,用 inset box-shadow 才是逐片的短线。\n *\n * 与交互的关系:mark 上的点击由 DocViewer 接管(打开编辑浮层),因此这里只负责\n * 「看起来像荧光笔」,并给 hover/定位闪烁留出视觉反馈。\n * ------------------------------------------------------------------------- */\n\n/* 18.1 四种笔芯:wash = 染色带(半透明),line = 重点线(实色、比 wash 深一档) */\nmark.aero-anno[data-color='yellow'] { --aero-mark-wash: #ffe066a8; --aero-mark-line: #e8b400; }\nmark.aero-anno[data-color='green'] { --aero-mark-wash: #a6e3a1a0; --aero-mark-line: #3f9e4d; }\nmark.aero-anno[data-color='blue'] { --aero-mark-wash: #93c9f7a0; --aero-mark-line: #2b7cd3; }\nmark.aero-anno[data-color='pink'] { --aero-mark-wash: #f7a8c4a8; --aero-mark-line: #d94f8a; }\n\nmark.aero-anno {\n /* 染色带:行高 42%→92% 之间染色,上下留白(正文字形一般落在 10%→85%) */\n background: transparent;\n background-image: linear-gradient(\n to bottom,\n transparent 0%,\n transparent 42%,\n var(--aero-mark-wash) 42%,\n var(--aero-mark-wash) 92%,\n transparent 92%\n );\n color: inherit;\n padding: 0;\n border-radius: 2px;\n cursor: pointer;\n /* 跨行断开的每一片各自染色,不连成一条横贯整行的色带 */\n -webkit-box-decoration-break: clone;\n box-decoration-break: clone;\n transition: filter 0.12s ease;\n}\n\n/* 重点线:逐片的粗下划线(跨行时每片各有一道,视觉上连成一条) */\nmark.aero-anno[data-style='underline'] {\n background-image: none;\n box-shadow: inset 0 -0.16em 0 var(--aero-mark-line);\n}\n\nmark.aero-anno:hover {\n filter: saturate(1.25) contrast(1.05);\n}\n\n/* 面板「定位」的闪烁:外描边,1.6 s 后由脚本摘掉 */\nmark.aero-anno[data-flash='1'] {\n outline: 2px solid color-mix(in srgb, var(--aero-accent-ink, #2f6feb) 80%, transparent);\n outline-offset: 1px;\n border-radius: 3px;\n}\n\n/* 18.2 夜间纸面:换成低亮度笔芯(浅色压在浅字上会糊成一片) */\n[data-aero-doc-wrap][data-paper='dark'] .aero-doc mark.aero-anno[data-color='yellow'] { --aero-mark-wash: #b58f00b8; --aero-mark-line: #e8c34a; }\n[data-aero-doc-wrap][data-paper='dark'] .aero-doc mark.aero-anno[data-color='green'] { --aero-mark-wash: #3f7a3aa8; --aero-mark-line: #7fd18b; }\n[data-aero-doc-wrap][data-paper='dark'] .aero-doc mark.aero-anno[data-color='blue'] { --aero-mark-wash: #2f5f8ab8; --aero-mark-line: #7ab6ee; }\n[data-aero-doc-wrap][data-paper='dark'] .aero-doc mark.aero-anno[data-color='pink'] { --aero-mark-wash: #8a3f5fb8; --aero-mark-line: #f095b8; }\n\n/* 打印:标记要跟着正文印出来(讲义上就能看见自己划的重点),但定位闪烁不要。 */\n@media print {\n mark.aero-anno {\n -webkit-print-color-adjust: exact;\n print-color-adjust: exact;\n }\n mark.aero-anno[data-flash='1'] {\n outline: none;\n }\n}\n";
11
- const id = "@aero/study-kit/doc-theme.css";
11
+ const id = "@dongfangw/study-kit/doc-theme.css";
12
12
  if (typeof document !== "undefined" && document.querySelector("style[data-inline-css=\"" + id + "\"]") === null) {
13
13
  const tag = document.createElement("style");
14
14
  tag.setAttribute("data-inline-css", id);
@@ -1710,10 +1710,10 @@ window.__ModuleLoader__.load({
1710
1710
  * 改样式请改源 CSS,然后跑:node scripts/gen-css-modules.mjs
1711
1711
  */
1712
1712
  const css$1 = "._0K34_a_root{flex-direction:column;flex:1 1 0;width:100%;min-height:0;display:flex;overflow:hidden}._0K34_a_topbar{background:#7f7f7f0a;border-bottom:1px solid #80808033;flex:none;align-items:center;gap:8px;min-height:33px;padding:4px 10px;font-size:13px;display:flex}._0K34_a_topbarTitle{flex:none;font-size:13px;font-weight:600}._0K34_a_crumbs{flex:1;align-items:center;gap:2px;min-width:0;display:flex;overflow:hidden}._0K34_a_crumb{color:#608cdcf2;white-space:nowrap}._0K34_a_crumbLast{color:inherit;font-weight:600}._0K34_a_crumbSep{color:#7f7f7fb3;flex:none;padding:0 1px}._0K34_a_tbBtn{color:inherit;cursor:pointer;background:0 0;border:1px solid #80808059;border-radius:6px;flex:none;align-items:center;gap:5px;padding:4px 9px;font-size:12px;display:inline-flex}._0K34_a_tbBtn:hover{background:#7f7f7f1f}._0K34_a_tbBtn:focus-visible{border-color:#608cdccc;outline:none}._0K34_a_tweakWrap{flex:none;position:relative}._0K34_a_tweakMenu{z-index:30;background:#fff;border:1px solid #80808059;border-radius:10px;flex-direction:column;gap:2px;width:min(360px,80vw);max-height:60vh;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0;overflow:auto;box-shadow:0 10px 28px #0f19322e}._0K34_a_tweakItem{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;padding:5px 8px;font-size:12px;display:flex}._0K34_a_tweakItem:hover:not(:disabled){background:#608cdc1f}._0K34_a_tweakItem:disabled{opacity:.55;cursor:default}._0K34_a_tweakItemId{color:#2a5cb0f2;flex:none;min-width:34px;font-weight:600}._0K34_a_tweakItemTitle{text-overflow:ellipsis;white-space:nowrap;opacity:.85;flex:1;min-width:0;overflow:hidden}._0K34_a_tweakMenuHint{color:#6e6e78e6;padding:4px 8px 2px;font-size:11px}._0K34_a_body{flex:1 1 0;min-height:0;display:flex}._0K34_a_sidebar{background:#7f7f7f0d;border-right:1px solid #80808033;flex-direction:column;flex:none;width:280px;min-height:0;display:flex}._0K34_a_sidebarHeader{border-bottom:1px solid #80808033;flex:none;padding:8px}._0K34_a_search{box-sizing:border-box;width:100%;color:inherit;background:0 0;border:1px solid #80808059;border-radius:6px;padding:6px 10px;font-size:13px}._0K34_a_search:focus{border-color:#608cdccc;outline:none}._0K34_a_tree{flex:1;min-height:0;padding:6px;overflow-y:auto}._0K34_a_group{margin:0}._0K34_a_groupLabel{cursor:pointer;color:inherit;user-select:none;border-radius:5px;align-items:center;gap:5px;padding:5px 6px;font-size:13px;font-weight:600;list-style:none;display:flex}._0K34_a_groupLabel::-webkit-details-marker{display:none}._0K34_a_groupLabel:hover{background:#7f7f7f1f}._0K34_a_chevron{color:#7f7f7fe6;flex:none;transition:transform .12s;display:inline-flex}._0K34_a_group[open]>._0K34_a_groupLabel ._0K34_a_chevron{transform:rotate(90deg)}._0K34_a_groupChildren{border-left:1px solid #80808026;margin-left:9px;padding-left:12px}._0K34_a_leaf{text-align:left;width:100%;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:5px;align-items:center;gap:6px;margin:1px 0;padding:4px 6px;font-size:13px;display:flex;position:relative}._0K34_a_leaf:hover{background:#7f7f7f1f}._0K34_a_leafActive{background:#608cdc2e}._0K34_a_leafActive:before{content:\"\";background:#608cdce6;border-radius:2px;width:2.5px;position:absolute;top:5px;bottom:5px;left:0}._0K34_a_leaf:focus-visible{outline:none;box-shadow:inset 0 0 0 1px #608cdcb3}._0K34_a_leafText{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}._0K34_a_fileChip{text-align:center;letter-spacing:.02em;box-sizing:border-box;border-radius:4px;flex:none;min-width:24px;padding:0 2px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;font-weight:700;line-height:1.5}._0K34_a_chipMd{color:#608cdc;background:#608cdc38}._0K34_a_chipAdoc{color:#d29922;background:#d2992238}._0K34_a_chipYml{color:#966ec8;background:#966ec838}._0K34_a_chipTxt{color:#7f7f7ff2;background:#7f7f7f38}._0K34_a_chipSlides{color:#dca05a;background:#dca05a40}._0K34_a_chipPdf{color:#dc5a5a;background:#dc5a5a38}._0K34_a_chipOther{color:#7f7f7ff2;background:#7f7f7f2e}._0K34_a_flatList{flex-direction:column;display:flex}._0K34_a_main{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}._0K34_a_content{flex:1;min-height:0;overflow:hidden}._0K34_a_empty{color:#7f7f7fcc;text-align:center;justify-content:center;align-items:center;height:100%;padding:24px;font-size:14px;display:flex}._0K34_a_gateBox{text-align:left;max-width:min(760px,100%)}._0K34_a_cmdList{flex-direction:column;gap:6px;margin-top:12px;display:flex}._0K34_a_cmdRow{background:#0000000f;border-radius:8px;align-items:center;gap:8px;padding:6px 8px;display:flex}._0K34_a_cmdLabel{color:#7f7f7ff2;flex:none;width:88px;font-size:11px;line-height:1.4}._0K34_a_cmdCode{min-width:0;color:inherit;word-break:break-all;user-select:all;cursor:text;flex:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.5}._0K34_a_cmdNote{opacity:.8;margin-top:10px;font-size:12px;line-height:1.6}._0K34_a_cmdNote code{word-break:break-all;background:#00000014;border-radius:4px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}._0K34_a_loadingDot{background:currentColor;border-radius:50%;width:8px;height:8px;margin-right:8px;animation:1s ease-in-out infinite _0K34_a_aero-loading-pulse}@keyframes _0K34_a_aero-loading-pulse{0%,to{opacity:.25;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}._0K34_a_docRendering{color:#7f7f7fbf;text-align:center;margin:12px 0 0;font-size:13px}._0K34_a_docSegBar{z-index:3;background:color-mix(in srgb, currentColor 6%, transparent);backdrop-filter:blur(6px);border:1px solid #7f7f7f40;border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;margin:-6px 0 12px;padding:6px 10px;font-size:12px;display:flex;position:sticky;top:0}._0K34_a_docSegBtn{color:inherit;cursor:pointer;background:0 0;border:1px solid #7f7f7f59;border-radius:6px;padding:3px 10px;font-size:12px}._0K34_a_docSegBtn:hover:not(:disabled){background:color-mix(in srgb, currentColor 8%, transparent);border-color:#7f7f7f99}._0K34_a_docSegBtn:disabled{opacity:.4;cursor:default}._0K34_a_docSegInfo{text-overflow:ellipsis;white-space:nowrap;opacity:.85;flex:auto;min-width:0;overflow:hidden}._0K34_a_docSegSelect{max-width:42%;color:inherit;background:0 0;border:1px solid #7f7f7f59;border-radius:6px;padding:3px 6px;font-size:12px}._0K34_a_docScroll{scroll-behavior:smooth;box-sizing:border-box;flex:auto;min-width:0;height:100%;min-height:0;padding:16px clamp(12px,2vw,26px) 40px;overflow-y:auto}._0K34_a_docWrap{align-items:stretch;height:100%;min-height:0;display:flex;position:relative;container-type:inline-size}._0K34_a_docMeta{text-align:center;margin:0 0 1.3em}._0K34_a_docMetaKicker{font-family:var(--dsw-font-family,inherit);letter-spacing:.2em;color:var(--aero-ink-3,#818b98);font-size:11px;font-weight:500}._0K34_a_docMetaChips{flex-wrap:wrap;justify-content:center;gap:6px 8px;margin-top:.6em;display:flex}._0K34_a_docMetaChip{border:1px solid var(--aero-rule,#8080804d);font-family:var(--dsw-font-family,inherit);color:var(--aero-ink-2,#57606a);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:1px 9px;font-size:11.5px;line-height:1.7;display:inline-flex}._0K34_a_docMetaChipLabel{color:var(--aero-ink-3,#818b98)}._0K34_a_docMetaChip[data-tone=draft]{border-color:color-mix(in srgb, var(--dsw-alias-state-warn-primary,#f0b429) 45%, transparent);color:var(--dsw-alias-state-warn-label,#b7791f)}._0K34_a_docMetaChip[data-tone=reviewed]{border-color:color-mix(in srgb, var(--dsw-alias-state-business-primary,#2f6feb) 45%, transparent);color:var(--dsw-alias-state-business-primary,#2f6feb)}._0K34_a_docMetaChip[data-tone=done]{border-color:color-mix(in srgb, var(--dsw-alias-state-success-primary,#2f9e44) 45%, transparent);color:var(--dsw-alias-state-success-primary,#2f9e44)}._0K34_a_docMetaKeywords{font-family:var(--dsw-font-family,inherit);color:var(--aero-ink-3,#818b98);flex-wrap:wrap;justify-content:center;gap:8px;margin-top:.55em;font-size:11px;display:flex}._0K34_a_docMetaKeyword:before{content:\"#\";opacity:.7}._0K34_a_docOutline{border-left:1px solid var(--dsw-alias-border-l2,#80808033);background:color-mix(in srgb, var(--dsw-alias-bg-module-platform,#7f7f7f0f) 55%, transparent);box-sizing:border-box;flex:none;width:206px;height:100%;min-height:0;padding:12px 8px 32px 10px;font-size:12px;overflow-y:auto}._0K34_a_docOutlineHead{letter-spacing:.12em;color:var(--dsw-alias-label-tertiary,#818b98);align-items:center;gap:5px;padding:0 8px 8px;font-size:11px;font-weight:600;display:flex}._0K34_a_docOutlineList{flex-direction:column;gap:1px;margin:0;padding:0;list-style:none;display:flex}._0K34_a_docOutlineItem[data-level=\"1\"]{margin-top:8px}._0K34_a_docOutlineLink{width:100%;color:var(--dsw-alias-label-secondary,inherit);font:inherit;text-align:left;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;border-radius:6px;padding:4px 8px;display:block;overflow:hidden}._0K34_a_docOutlineItem[data-level=\"2\"] ._0K34_a_docOutlineLink{padding-left:12px}._0K34_a_docOutlineItem[data-level=\"3\"] ._0K34_a_docOutlineLink{padding-left:22px}._0K34_a_docOutlineItem[data-level=\"4\"] ._0K34_a_docOutlineLink{padding-left:32px}._0K34_a_docOutlineNo{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-tertiary,#818b98);margin-right:3px;font-weight:600}._0K34_a_docOutlineLink:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f);color:var(--dsw-alias-label-primary,inherit)}._0K34_a_docOutlineLinkActive{background:color-mix(in srgb, var(--dsw-alias-link,#4176e6) 14%, transparent);color:var(--dsw-alias-link,#4176e6);font-weight:600}@container (width<=860px){._0K34_a_docOutline{display:none}}._0K34_a_docLightbox{z-index:40;box-sizing:border-box;cursor:zoom-out;background:#0b0f17cc;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:22px;animation:.14s ease-out _0K34_a_aeroLightboxIn;display:flex;position:absolute;inset:0}@keyframes _0K34_a_aeroLightboxIn{0%{opacity:0}to{opacity:1}}._0K34_a_docLightboxFigure{flex-direction:column;align-items:center;gap:10px;max-width:100%;min-height:0;max-height:100%;margin:0;display:flex}._0K34_a_docLightboxFigure img{object-fit:contain;background:#fff;border-radius:6px;max-width:100%;min-height:0;max-height:100%;box-shadow:0 24px 64px -24px #000000b3}._0K34_a_docLightboxCap{color:#ffffffe0;text-align:center;max-width:min(880px,82%);font-size:12.5px;line-height:1.65}._0K34_a_docLightboxHint{color:#fff9;flex:none;align-items:center;gap:5px;font-size:11.5px;display:flex}._0K34_a_slideRoot{flex-direction:column;height:100%;min-height:0;display:flex}._0K34_a_slideStage{box-sizing:border-box;flex:1;justify-content:center;align-items:flex-start;min-height:0;padding:20px 28px;display:flex;overflow:auto}._0K34_a_slideBar{border-top:1px solid #80808033;flex:none;justify-content:center;align-items:center;gap:12px;padding:8px;display:flex}._0K34_a_slideCounter{color:#7f7f7fe6;text-align:center;min-width:60px;font-size:13px}._0K34_a_contextBar{background:#7f7f7f0a;border-top:1px solid #80808033;flex:none;align-items:center;gap:8px;padding:8px;display:flex}._0K34_a_contextInfo{flex:none;align-items:center;gap:6px;min-width:0;max-width:260px;display:flex}._0K34_a_contextDot{background:#5ac878f2;border-radius:50%;flex:none;width:8px;height:8px}._0K34_a_contextText{white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}._0K34_a_contextMuted{color:#7f7f7fcc;font-size:12px}._0K34_a_questionInput{min-width:0;color:inherit;background:0 0;border:1px solid #80808059;border-radius:6px;flex:1;padding:6px 10px;font-size:13px}._0K34_a_questionInput:focus{border-color:#608cdccc;outline:none}._0K34_a_btn,._0K34_a_btnPrimary{color:inherit;cursor:pointer;background:0 0;border:1px solid #80808059;border-radius:6px;flex:none;padding:6px 12px;font-size:13px}._0K34_a_btn:hover{background:#7f7f7f1f}._0K34_a_btn:disabled,._0K34_a_btnPrimary:disabled{opacity:.45;cursor:not-allowed}._0K34_a_btnPrimary{color:#fff;background:#608cdce6;border-color:#608cdce6}._0K34_a_btnPrimary:hover:not(:disabled){background:#608cdc}._0K34_a_deckRoot{flex-direction:column;flex:1 1 0;width:100%;height:100%;min-height:0;display:flex}._0K34_a_deckToolbar{border-bottom:1px solid #80808038;flex-wrap:wrap;flex:none;align-items:center;gap:8px;padding:7px 10px;display:flex}._0K34_a_deckTitle{text-overflow:ellipsis;white-space:nowrap;max-width:42%;font-size:13px;font-weight:600;overflow:hidden}._0K34_a_deckStatus{color:#7f7f7ff2;align-items:center;gap:6px;font-size:12px;display:inline-flex}._0K34_a_deckHint{color:#7f7f7fbf;margin-left:2px;font-size:11px}._0K34_a_deckSpacer{flex:1 1 0}._0K34_a_deckBody{flex:1 1 0;min-height:0;position:relative}._0K34_a_deckFrame{background:#fff;border:0;width:100%;height:100%;display:block}._0K34_a_deckNotice{color:#7f7f7ff2;flex-direction:column;justify-content:center;align-items:center;gap:10px;height:100%;padding:24px;font-size:13px;display:flex;overflow:auto}._0K34_a_deckErrorTitle{color:inherit;font-size:14px;font-weight:600}._0K34_a_deckErrorMsg{text-align:center;max-width:640px}._0K34_a_deckLog{text-align:left;white-space:pre-wrap;word-break:break-all;background:#0000000f;border-radius:8px;max-width:min(720px,100%);max-height:220px;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.5;overflow:auto}._0K34_a_spinner{border:2px solid #7f7f7f59;border-top-color:#608cdce6;border-radius:50%;flex:none;width:14px;height:14px;animation:.9s linear infinite _0K34_a_aeroSpin;display:inline-block}@keyframes _0K34_a_aeroSpin{to{transform:rotate(360deg)}}._0K34_a_deckNoticeScroll{box-sizing:border-box;color:#7f7f7ff2;flex-direction:column;align-items:center;gap:12px;height:100%;padding:20px 24px 32px;font-size:13px;display:flex;overflow-y:auto}._0K34_a_deckNoticeHead{text-align:left;width:100%;max-width:720px;line-height:1.6}._0K34_a_deckNoticeBtns{align-items:center;gap:8px;width:100%;max-width:720px;display:flex}._0K34_a_envRoot{box-sizing:border-box;width:100%;max-width:720px}._0K34_a_envCard{text-align:left;background:#7f7f7f0d;border:1px solid #80808047;border-radius:10px;flex-direction:column;gap:10px;padding:14px 16px;display:flex}._0K34_a_envHead{align-items:center;gap:8px;display:flex}._0K34_a_envTitle{color:inherit;font-size:13px;font-weight:600}._0K34_a_envSummaryOk,._0K34_a_envSummaryBad{font-size:13px;font-weight:600;line-height:1.5}._0K34_a_envSummaryOk{color:#46aa6ef2}._0K34_a_envSummaryBad{color:#d75f5ff2}._0K34_a_envSummaryDetail{color:#7f7f7ff2;word-break:break-all;margin-top:4px;font-size:12px;font-weight:400}._0K34_a_envMuted{color:#7f7f7fd9;align-items:center;gap:6px;font-size:12px;display:flex}._0K34_a_envError{color:#d75f5ff2;word-break:break-all;font-size:12px}._0K34_a_envList{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}._0K34_a_envItem{align-items:flex-start;gap:8px;display:flex}._0K34_a_envDotOk,._0K34_a_envDotWarn,._0K34_a_envDotFail{color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:16px;height:16px;margin-top:1px;font-size:10px;font-weight:700;display:inline-flex}._0K34_a_envDotOk{background:#46aa6ee6}._0K34_a_envDotWarn{background:#dca550f2}._0K34_a_envDotFail{background:#d75f5ff2}._0K34_a_envItemBody{flex-direction:column;gap:2px;min-width:0;display:flex}._0K34_a_envItemLabel{color:inherit;align-items:center;gap:6px;font-size:12.5px;font-weight:600;display:flex}._0K34_a_envItemStatus{color:#7f7f7ff2;border:1px solid #80808059;border-radius:999px;padding:1px 5px;font-size:10px;font-weight:500}._0K34_a_envItemDetail{color:#7f7f7ff2;word-break:break-all;font-size:12px}._0K34_a_envItemHint{color:#7f7f7fd9;word-break:break-all;font-size:12px}._0K34_a_envActions{border-top:1px dashed #8080804d;flex-direction:column;gap:8px;padding-top:10px;display:flex}._0K34_a_envActionsTitle{color:inherit;font-size:12.5px;font-weight:600}._0K34_a_envAction{background:#7f7f7f0a;border:1px solid #8080803d;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex}._0K34_a_envActionInfo{flex-direction:column;flex:auto;gap:3px;min-width:0;display:flex}._0K34_a_envActionLabel{color:inherit;font-size:12.5px;font-weight:600}._0K34_a_envActionCmd{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._0K34_a_envActionCmd code{word-break:break-all;background:#00000014;border-radius:5px;padding:2px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}._0K34_a_envCopy{color:inherit;cursor:pointer;background:0 0;border:1px solid #80808059;border-radius:5px;flex:none;align-items:center;gap:4px;padding:2px 7px;font-size:11px;display:inline-flex}._0K34_a_envCopy:hover{background:#7f7f7f1f}._0K34_a_envDetails summary{cursor:pointer;color:#7f7f7ff2;font-size:12px}._0K34_a_prepContent{flex:1;min-height:0;display:flex}._0K34_a_prepPane{flex-direction:column;flex:1 1 0;min-width:0;min-height:0;display:flex;position:relative}._0K34_a_prepPane+._0K34_a_prepPane{border-left:1px solid #80808038}._0K34_a_prepPaneHead{color:#7f7f7ff2;background:#7f7f7f0a;border-bottom:1px solid #8080802e;flex:none;align-items:center;gap:8px;padding:5px 10px;font-size:12px;display:flex}._0K34_a_prepPanePath{text-overflow:ellipsis;white-space:nowrap;opacity:.85;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;overflow:hidden}._0K34_a_prepEditor{box-sizing:border-box;resize:none;width:100%;min-height:0;color:inherit;tab-size:4;white-space:pre;background:0 0;border:0;outline:none;flex:1;padding:12px 14px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.6;overflow:auto}._0K34_a_prepDocPane{flex:1;min-height:0;display:flex}._0K34_a_prepDocPane>._0K34_a_docWrap{flex:auto;height:auto}._0K34_a_prepSlidesScroll{box-sizing:border-box;flex-direction:column;flex:1;align-items:center;gap:14px;min-height:0;padding:16px;display:flex;overflow-y:auto}._0K34_a_prepSlide{box-sizing:border-box;background:#7f7f7f0d;border:1px solid #80808040;border-radius:10px;width:min(760px,100%);padding:20px 26px;box-shadow:0 1px 3px #0000001f}._0K34_a_prepSlideNo{color:#7f7f7fb3;margin-bottom:6px;font-size:11px}._0K34_a_prepCmdBar{background:#7f7f7f0a;border-top:1px solid #80808033;flex-direction:column;flex:none;gap:6px;padding:7px 10px;display:flex}._0K34_a_prepSkills{flex:none;gap:6px;display:flex;overflow-x:auto}._0K34_a_skillBtn{color:inherit;cursor:pointer;background:0 0;border:1px solid #80808059;border-radius:999px;flex:none;align-items:center;gap:5px;padding:4px 10px;font-size:12px;display:inline-flex}._0K34_a_skillBtn:hover:not(:disabled){background:#7f7f7f1f;border-color:#608cdcb3}._0K34_a_skillBtn:disabled{opacity:.4;cursor:not-allowed}._0K34_a_prepCmdRow{align-items:center;gap:8px;display:flex}._0K34_a_prepMode{border:1px solid #80808059;border-radius:6px;flex:none;display:inline-flex;overflow:hidden}._0K34_a_mode,._0K34_a_modeActive{color:inherit;cursor:pointer;background:0 0;border:none;padding:4px 9px;font-size:12px}._0K34_a_mode:hover{background:#7f7f7f1f}._0K34_a_modeActive{color:#fff;background:#608cdcd9}._0K34_a_saveDot{border-radius:50%;flex:none;width:8px;height:8px}._0K34_a_dotIdle{background:#7f7f7f80}._0K34_a_dotDirty{background:#dca05af2}._0K34_a_dotSaving{background:#608cdce6}._0K34_a_dotSaved{background:#5ac878f2}._0K34_a_dotError{background:#dc5a5af2}._0K34_a_saveLabel{white-space:nowrap;text-overflow:ellipsis;color:#7f7f7ff2;max-width:340px;font-size:12px;overflow:hidden}._0K34_a_tbBtnOn{color:#2a5cb0fa;background:#608cdc24;border-color:#608cdcbf}._0K34_a_readerWrap{flex:none;position:relative}._0K34_a_menuBackdrop{z-index:29;position:fixed;inset:0}._0K34_a_readerMenu{z-index:30;background:var(--dsw-alias-bg-layer-1,#fff);width:min(328px,86vw);color:var(--dsw-alias-label-primary,inherit);border:1px solid #80808059;border-radius:10px;flex-direction:column;gap:8px;padding:10px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 10px 28px #0f193238}._0K34_a_readerMenuHead{letter-spacing:.04em;opacity:.9;align-items:center;gap:6px;padding:0 2px 2px;font-size:12px;font-weight:600;display:flex}._0K34_a_readerRow{align-items:center;gap:8px;display:flex}._0K34_a_readerRowLabel{opacity:.75;flex:none;width:34px;font-size:12px}._0K34_a_readerSeg{flex-wrap:wrap;flex:1;align-items:center;gap:3px;min-width:0;display:flex}._0K34_a_readerSegBtn{color:inherit;cursor:pointer;background:0 0;border:1px solid #80808052;border-radius:6px;padding:3px 8px;font-size:12px;line-height:1.5}._0K34_a_readerSegBtn:hover:not(:disabled){background:#7f7f7f1f}._0K34_a_readerSegBtn:disabled{opacity:.45;cursor:default}._0K34_a_readerSegBtnOn{color:#2a5cb0fa;background:#608cdc29;border-color:#608cdccc;font-weight:600}._0K34_a_readerFontValue{text-align:center;font-variant-numeric:tabular-nums;opacity:.85;min-width:46px;font-size:12px}._0K34_a_readerHint{opacity:.7;border-top:1px dashed #8080804d;padding:4px 2px 0;font-size:11px;line-height:1.6}._0K34_a_root[data-zen=\"1\"] ._0K34_a_sidebar,._0K34_a_root[data-zen=\"1\"] ._0K34_a_contextBar,._0K34_a_root[data-zen=\"1\"] ._0K34_a_prepCmdBar,._0K34_a_root[data-sidebar=\"0\"] ._0K34_a_sidebar{display:none}._0K34_a_root:fullscreen{background:var(--dsw-alias-bg-layer-1,#fff);height:100vh}._0K34_a_root[data-fullscreen=\"1\"]{position:relative}._0K34_a_root[data-fullscreen=\"1\"] ._0K34_a_topbar{z-index:45;background:var(--dsw-alias-bg-layer-1,#fff);transition:transform .18s,opacity .18s;position:absolute;top:0;left:0;right:0;box-shadow:0 6px 16px -12px #0f193280}._0K34_a_root[data-fullscreen=\"1\"][data-fsbar=hidden] ._0K34_a_topbar{opacity:0;transform:translateY(-100%)}._0K34_a_root[data-fullscreen=\"1\"][data-fsbar=hidden]:after{content:\"\";pointer-events:none;z-index:46;background:linear-gradient(#608cdc59,#0000);height:3px;position:absolute;top:0;left:0;right:0}@media (hover:none){._0K34_a_root[data-fullscreen=\"1\"][data-fsbar=hidden] ._0K34_a_topbar{opacity:1;transform:none}}._0K34_a_docWrap:not([data-paper=theme]) ._0K34_a_docOutline{border-left-color:var(--aero-rule-ov,#80808033);background:color-mix(in srgb, var(--aero-paper-ov,transparent) 78%, transparent)}._0K34_a_docWrap:not([data-paper=theme]) ._0K34_a_docOutlineHead{color:var(--aero-ink-3-ov,#818b98)}._0K34_a_docWrap:not([data-paper=theme]) ._0K34_a_docOutlineLink{color:var(--aero-ink-2-ov,inherit)}._0K34_a_docWrap:not([data-paper=theme]) ._0K34_a_docOutlineLink:hover{background:var(--aero-hover-ov,#7f7f7f1f);color:var(--aero-ink-ov,inherit)}._0K34_a_docWrap:not([data-paper=theme]) ._0K34_a_docOutlineLinkActive{background:color-mix(in srgb, var(--aero-accent-ink-ov,#4176e6) 18%, transparent);color:var(--aero-accent-ink-ov,#4176e6)}@media (width<=520px){._0K34_a_readerMenu{width:min(300px,92vw)}._0K34_a_readerRowLabel{width:28px}}._0K34_a_annoColors{align-items:center;gap:5px;display:inline-flex}._0K34_a_annoColorBtn{cursor:pointer;background:#ffe066;border:1px solid #80808073;border-radius:50%;width:18px;height:18px;padding:0;transition:transform .1s;box-shadow:inset 0 0 0 2px #ffffff73}._0K34_a_annoColorBtn[data-color=yellow]{background:#ffe066}._0K34_a_annoColorBtn[data-color=green]{background:#a6e3a1}._0K34_a_annoColorBtn[data-color=blue]{background:#93c9f7}._0K34_a_annoColorBtn[data-color=pink]{background:#f7a8c4}._0K34_a_annoColorBtn:hover{transform:scale(1.14)}._0K34_a_annoColorBtn[data-on=\"1\"]{border-color:var(--dsw-alias-link,#4176e6);box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-alias-link,#4176e6) 45%, transparent)}._0K34_a_annoBar{z-index:46;background:var(--dsw-alias-bg-layer-1,#fff);color:var(--dsw-alias-label-primary,inherit);white-space:nowrap;border:1px solid #80808052;border-radius:10px;align-items:center;gap:6px;padding:6px 8px;font-size:12px;display:flex;position:fixed;box-shadow:0 10px 26px #0f19323d}._0K34_a_annoBarSep{background:#8080804d;width:1px;height:18px}._0K34_a_annoBarBtn{color:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:4px;padding:3px 7px;font-size:12px;line-height:1.5;display:inline-flex}._0K34_a_annoBarBtn:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f);border-color:#80808052}._0K34_a_annoBarIcon{width:22px;height:22px;color:inherit;opacity:.6;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex}._0K34_a_annoBarIcon:hover{opacity:1;background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f)}._0K34_a_annoPop{z-index:47;background:var(--dsw-alias-bg-layer-1,#fff);width:340px;max-width:calc(100vw - 16px);color:var(--dsw-alias-label-primary,inherit);border:1px solid #80808052;border-radius:12px;flex-direction:column;gap:8px;padding:10px;font-size:12px;display:flex;position:fixed;box-shadow:0 16px 40px #0f193242}._0K34_a_annoPopHead{align-items:center;gap:6px;display:flex}._0K34_a_annoPopDot{background:#ffe066;border-radius:50%;flex:none;width:10px;height:10px;box-shadow:0 0 0 1px #80808059}._0K34_a_annoPopDot[data-color=yellow]{background:#ffe066}._0K34_a_annoPopDot[data-color=green]{background:#a6e3a1}._0K34_a_annoPopDot[data-color=blue]{background:#93c9f7}._0K34_a_annoPopDot[data-color=pink]{background:#f7a8c4}._0K34_a_annoPopKicker{letter-spacing:.02em;font-weight:600}._0K34_a_annoPopSpacer{flex:1 1 0}._0K34_a_annoPopIcon{width:22px;height:22px;color:inherit;opacity:.6;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex}._0K34_a_annoPopIcon:hover{opacity:1;background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f)}._0K34_a_annoPopQuote{background:var(--dsw-alias-bg-module-platform,#7f7f7f12);opacity:.92;border-left:3px solid #80808059;border-radius:4px;max-height:96px;margin:0;padding:7px 9px;font-size:12px;line-height:1.65;overflow-y:auto}._0K34_a_annoPopRow{align-items:center;gap:10px;display:flex}._0K34_a_annoPopSeg{color:inherit;cursor:pointer;background:0 0;border:1px solid #80808052;border-radius:6px;align-items:center;gap:4px;margin-left:auto;padding:3px 8px;font-size:12px;display:inline-flex}._0K34_a_annoPopSegOn{border-color:var(--dsw-alias-link,#4176e6);background:color-mix(in srgb, var(--dsw-alias-link,#4176e6) 14%, transparent)}._0K34_a_annoPopNote{box-sizing:border-box;width:100%;color:inherit;font:inherit;resize:vertical;background:0 0;border:1px solid #80808052;border-radius:8px;min-height:62px;padding:7px 9px;font-size:12.5px;line-height:1.65}._0K34_a_annoPopNote:focus{border-color:var(--dsw-alias-link,#4176e6);outline:none}._0K34_a_annoPopFoot{align-items:center;gap:8px;display:flex}._0K34_a_annoPopPrimary{background:var(--dsw-alias-link,#4176e6);color:#fff;cursor:pointer;border:1px solid #0000;border-radius:7px;padding:4px 14px;font-size:12px}._0K34_a_annoPopPrimary:hover{filter:brightness(1.06)}._0K34_a_annoPopBtn{color:inherit;cursor:pointer;background:0 0;border:1px solid #80808052;border-radius:7px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;display:inline-flex}._0K34_a_annoPopBtn:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f)}._0K34_a_annoPopHint{opacity:.55;font-size:11px}._0K34_a_annoFab{z-index:30;background:var(--dsw-alias-bg-layer-1,#fff);width:38px;height:38px;color:var(--dsw-alias-label-secondary,inherit);cursor:pointer;border:1px solid #8080804d;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:transform .12s,color .12s;display:inline-flex;position:absolute;bottom:16px;box-shadow:0 8px 22px #0f193233}._0K34_a_annoFab:hover{color:var(--dsw-alias-label-primary,inherit);transform:translateY(-1px)}._0K34_a_annoFabOn{border-color:var(--dsw-alias-link,#4176e6);color:var(--dsw-alias-link,#4176e6)}._0K34_a_annoFabBadge{box-sizing:border-box;color:#fff;text-align:center;font-variant-numeric:tabular-nums;background:#f0a020;border-radius:8px;min-width:16px;height:16px;padding:0 3px;font-size:10px;line-height:16px;position:absolute;top:-5px;right:-4px}._0K34_a_annoFabDot{width:7px;height:7px;box-shadow:0 0 0 1.5px var(--dsw-alias-bg-layer-1,#fff);background:#d94f8a;border-radius:50%;position:absolute;bottom:3px;right:3px}._0K34_a_annoPins{z-index:4;pointer-events:none;position:absolute;inset:0}._0K34_a_annoPin{color:#3c2d00e6;font-variant-numeric:tabular-nums;cursor:pointer;pointer-events:auto;background:#ffe066;border:1px solid #ffffffd9;border-radius:50%;width:19px;height:19px;padding:0;font-size:10px;line-height:1;position:absolute;box-shadow:0 2px 6px #0f193238}._0K34_a_annoPin[data-color=yellow]{color:#4a3800;background:#ffdf5c}._0K34_a_annoPin[data-color=green]{color:#1f3d18;background:#a6e3a1}._0K34_a_annoPin[data-color=blue]{color:#10334f;background:#93c9f7}._0K34_a_annoPin[data-color=pink]{color:#4a1330;background:#f7a8c4}._0K34_a_annoPin:hover{transform:scale(1.12)}._0K34_a_docMarks{box-sizing:border-box;border-left:1px solid var(--dsw-alias-border-l2,#80808033);background:color-mix(in srgb, var(--dsw-alias-bg-module-platform,#7f7f7f0f) 55%, transparent);flex-direction:column;flex:none;width:300px;height:100%;min-height:0;padding:10px 10px 8px;font-size:12px;display:flex}._0K34_a_docWrap:not([data-paper=theme]) ._0K34_a_docMarks{border-left-color:var(--aero-rule-ov,#80808033);background:color-mix(in srgb, var(--aero-paper-ov,transparent) 82%, transparent);color:var(--aero-ink-ov,inherit)}._0K34_a_docMarksHead{letter-spacing:.1em;color:var(--dsw-alias-label-tertiary,#818b98);align-items:center;gap:6px;padding:0 0 6px;font-size:11px;font-weight:600;display:flex}._0K34_a_docMarksCount{background:color-mix(in srgb, var(--dsw-alias-link,#4176e6) 18%, transparent);color:var(--dsw-alias-link,#4176e6);letter-spacing:0;border-radius:8px;padding:0 6px;font-size:10.5px}._0K34_a_docMarksHead ._0K34_a_annoPopIcon{margin-left:auto}._0K34_a_docMarksTitle{text-overflow:ellipsis;white-space:nowrap;opacity:.9;padding:0 0 8px;font-size:12px;font-weight:600;overflow:hidden}._0K34_a_docMarksFilters{border-bottom:1px dashed #8080804d;flex-wrap:wrap;gap:4px;padding-bottom:8px;display:flex}._0K34_a_docMarksChip{color:inherit;cursor:pointer;opacity:.8;background:0 0;border:1px solid #80808047;border-radius:999px;padding:2px 8px;font-size:11px}._0K34_a_docMarksChip:hover{opacity:1;background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f)}._0K34_a_docMarksChipOn{border-color:color-mix(in srgb, var(--dsw-alias-link,#4176e6) 65%, transparent);background:color-mix(in srgb, var(--dsw-alias-link,#4176e6) 14%, transparent);color:var(--dsw-alias-link,#4176e6);opacity:1}._0K34_a_docMarksList{flex-direction:column;flex:auto;gap:6px;min-height:0;padding:8px 2px 8px 0;display:flex;overflow-y:auto}._0K34_a_docMarksEmpty{opacity:.65;padding:10px 6px;font-size:11.5px;line-height:1.75}._0K34_a_docMarksItem{border:1px solid var(--dsw-alias-border-l2,#80808038);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1,#fff) 70%, transparent);border-left-width:3px;border-radius:8px;flex-direction:column;gap:4px;padding:6px 8px;display:flex}._0K34_a_docMarksItem[data-color=yellow]{border-left-color:#f0c400}._0K34_a_docMarksItem[data-color=green]{border-left-color:#4caf50}._0K34_a_docMarksItem[data-color=blue]{border-left-color:#2b7cd3}._0K34_a_docMarksItem[data-color=pink]{border-left-color:#d94f8a}._0K34_a_docMarksQuoteBtn{color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;gap:3px;padding:0;display:flex}._0K34_a_docMarksQuoteBtn:hover ._0K34_a_docMarksQuote{color:var(--dsw-alias-link,#4176e6)}._0K34_a_docMarksItemHead{align-items:center;gap:5px;display:flex}._0K34_a_docMarksItemKind{letter-spacing:.04em;opacity:.6;font-size:10.5px}._0K34_a_docMarksQuote{-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:12px;line-height:1.6;display:-webkit-box;overflow:hidden}._0K34_a_docMarksNote{-webkit-line-clamp:3;background:#f7a8c42e;border-radius:4px;-webkit-box-orient:vertical;margin-top:2px;padding:3px 6px;font-size:11.5px;line-height:1.6;display:-webkit-box;overflow:hidden}._0K34_a_docMarksItemFoot{justify-content:flex-end;gap:6px;display:flex}._0K34_a_docMarksMini{color:inherit;cursor:pointer;opacity:.8;background:0 0;border:1px solid #8080804d;border-radius:5px;padding:1px 7px;font-size:10.5px}._0K34_a_docMarksMini:hover{opacity:1;background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f)}._0K34_a_docMarksFoot{border-top:1px dashed #8080804d;align-items:center;gap:6px;padding-top:6px;display:flex}._0K34_a_docMarksFootBtn{color:inherit;cursor:pointer;background:0 0;border:1px solid #8080804d;border-radius:6px;padding:3px 9px;font-size:11px}._0K34_a_docMarksFootBtn:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f)}._0K34_a_docMarksFootBtn:disabled{opacity:.4;cursor:default}._0K34_a_docMarksFootHint{opacity:.55;margin-left:auto;font-size:10.5px}._0K34_a_deckBody[data-panel=\"1\"]{align-items:stretch;display:flex}._0K34_a_deckBody[data-panel=\"1\"] ._0K34_a_deckFrame{flex:auto;width:auto;min-width:0}._0K34_a_deckBody[data-panel=\"1\"]>aside{flex:none}._0K34_a_docResume{z-index:7;border:1px solid var(--aero-rule,var(--dsw-alias-border-l2,#8080804d));background:var(--dsw-alias-bg-layer-1,#fff);max-width:min(600px,100% - 28px);color:var(--aero-ink,inherit);font-family:var(--dsw-font-family,inherit);border-radius:999px;align-items:center;gap:6px;padding:5px 6px 5px 12px;font-size:12px;line-height:1.4;animation:.16s ease-out _0K34_a_aero-resume-in;display:flex;position:absolute;top:10px;left:50%;transform:translate(-50%);box-shadow:0 6px 18px #0000001a}._0K34_a_docWrap[data-segbar=\"1\"] ._0K34_a_docResume{top:54px}._0K34_a_docWrap[data-paper=sepia] ._0K34_a_docResume{color:#3a3126;background:#f7efdd;border-color:#604c3047}._0K34_a_docWrap[data-paper=green] ._0K34_a_docResume{color:#22301d;background:#e7efe2;border-color:#3c5a2d47}._0K34_a_docWrap[data-paper=dark] ._0K34_a_docResume{color:#dfe3e8;background:#232830;border-color:#ffffff29}._0K34_a_docResumeText{white-space:nowrap;text-overflow:ellipsis;opacity:.92;align-items:baseline;gap:6px;min-width:0;display:inline-flex;overflow:hidden}._0K34_a_docResumeName{text-overflow:ellipsis;font-weight:600;overflow:hidden}._0K34_a_docResumeAge{opacity:.6;flex:none}._0K34_a_docResumeBtn{color:inherit;cursor:pointer;background:0 0;border:1px solid #7f7f7f59;border-radius:999px;flex:none;padding:2px 9px;font-family:inherit;font-size:11.5px}._0K34_a_docResumeBtn:hover{background:color-mix(in srgb, currentColor 8%, transparent);border-color:#7f7f7f99}._0K34_a_docResumeClose{width:18px;height:18px;color:inherit;opacity:.55;cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}._0K34_a_docResumeClose:hover{opacity:1;background:color-mix(in srgb, currentColor 10%, transparent)}@keyframes _0K34_a_aero-resume-in{0%{opacity:0;transform:translate(-50%,-5px)}to{opacity:1;transform:translate(-50%)}}@container (width<=860px){._0K34_a_docMarks{width:252px}}@media print{._0K34_a_annoFab,._0K34_a_annoPins,._0K34_a_docMarks,._0K34_a_annoBar,._0K34_a_annoPop,._0K34_a_docResume{display:none!important}}";
1713
- const styleId$1 = "@aero/study-kit/styles.module.css";
1713
+ const styleId$1 = "@dongfangW/study-kit/styles.module.css";
1714
1714
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"" + styleId$1 + "\"]") === null) {
1715
1715
  const tag = document.createElement("style");
1716
- tag.dataset.plugin = "@aero/study-kit";
1716
+ tag.dataset.plugin = "@dongfangW/study-kit";
1717
1717
  tag.dataset.pluginCss = styleId$1;
1718
1718
  tag.textContent = css$1;
1719
1719
  document.head.appendChild(tag);
@@ -4283,10 +4283,10 @@ window.__ModuleLoader__.load({
4283
4283
  * 改样式请改源 CSS,然后跑:node scripts/gen-css-modules.mjs
4284
4284
  */
4285
4285
  const css = ".l0zRla_statusBtn{color:inherit;cursor:pointer;background:0 0;border:1px solid #80808059;border-radius:6px;align-items:center;gap:6px;padding:5px 10px;font-size:13px;display:inline-flex}.l0zRla_statusBtn:hover{background:#7f7f7f1f}.l0zRla_statusBtn:focus-visible{border-color:#608cdccc;outline:none}.l0zRla_dot{border-radius:50%;flex:none;width:8px;height:8px}.l0zRla_dotunknown{background:#7f7f7f80}.l0zRla_dotclean{background:#2ea043e6}.l0zRla_dotdirty{background:#d29922f2}.l0zRla_dotbehind{background:#608cdcf2}.l0zRla_dotahead{background:#966ec8f2}.l0zRla_syncUp,.l0zRla_syncDown{font-variant-numeric:tabular-nums;font-size:11px;line-height:1}.l0zRla_syncUp{color:#966ec8f2}.l0zRla_syncDown{color:#608cdcf2}.l0zRla_panel{background:#7f7f7f0a;border-left:1px solid #80808033;flex-direction:column;flex:none;width:340px;min-height:0;display:flex}.l0zRla_header{border-bottom:1px solid #80808033;flex:none;justify-content:space-between;align-items:center;gap:8px;padding:9px 10px 7px 12px;display:flex}.l0zRla_title{font-size:13px;font-weight:600}.l0zRla_closeBtn{width:24px;height:24px;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;place-items:center;font-size:12px;display:grid}.l0zRla_closeBtn:hover{background:#7f7f7f24}.l0zRla_repoTabs{border-bottom:1px solid #80808033;flex-wrap:wrap;flex:none;gap:4px;padding:8px 10px 6px;display:flex}.l0zRla_repoTab{color:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:5px;padding:4px 9px;font-size:12px;display:inline-flex}.l0zRla_repoTab:hover{background:#7f7f7f1f}.l0zRla_repoTabActive{background:#608cdc29;border-color:#608cdc73}.l0zRla_tabDotDirty,.l0zRla_tabDotBehind{border-radius:50%;flex:none;width:6px;height:6px}.l0zRla_tabDotDirty{background:#d29922f2}.l0zRla_tabDotBehind{background:#608cdcf2}.l0zRla_body{flex-direction:column;flex:1;gap:10px;min-height:0;padding:10px 12px 16px;display:flex;overflow-y:auto}.l0zRla_repoHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.l0zRla_branchPill{background:#7f7f7f24;border-radius:999px;align-items:center;gap:5px;padding:3px 9px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;display:inline-flex}.l0zRla_syncPill{color:#7f7f7ff2;font-size:12px}.l0zRla_actions{flex-wrap:wrap;gap:6px;display:flex}.l0zRla_actionBtn{color:inherit;cursor:pointer;background:0 0;border:1px solid #80808059;border-radius:6px;align-items:center;gap:5px;padding:5px 11px;font-size:12px;display:inline-flex}.l0zRla_actionBtn:hover:not(:disabled){background:#7f7f7f1f}.l0zRla_actionBtn:disabled{opacity:.45;cursor:not-allowed}.l0zRla_actionBtn:focus-visible{border-color:#608cdccc;outline:none}.l0zRla_actionDanger{color:#dc5a5a;border-color:#dc5a5aa6}.l0zRla_actionDanger:hover:not(:disabled){background:#dc5a5a1f}.l0zRla_commitBox{background:#7f7f7f0d;border:1px solid #80808038;border-radius:8px;flex-direction:column;gap:6px;padding:10px;display:flex}.l0zRla_commitInput{box-sizing:border-box;width:100%;color:inherit;background:0 0;border:1px solid #80808059;border-radius:6px;padding:7px 9px;font-size:13px}.l0zRla_commitInput:focus{border-color:#608cdccc;outline:none}.l0zRla_commitBtn{color:#fff;cursor:pointer;background:#2ea043d9;border:none;border-radius:6px;align-self:flex-end;align-items:center;gap:5px;padding:5px 12px;font-size:12px;font-weight:600;display:inline-flex}.l0zRla_commitBtn:hover:not(:disabled){background:#2ea043}.l0zRla_commitBtn:disabled{opacity:.5;cursor:not-allowed}.l0zRla_commitBtn.l0zRla_actionDanger{background:#dc5a5ae6;border:none}.l0zRla_commitBtn.l0zRla_actionDanger:hover:not(:disabled){background:#dc5a5a}.l0zRla_sectionLabel{color:#7f7f7ff2;margin-top:2px;font-size:12px;font-weight:600}.l0zRla_changeList,.l0zRla_logList{border:1px solid #80808033;border-radius:8px;flex-direction:column;display:flex;overflow:hidden}.l0zRla_changeRow{border-bottom:1px solid #8080801f;align-items:center;gap:7px;padding:4px 8px;font-size:12px;display:flex}.l0zRla_changeRow:last-child{border-bottom:none}.l0zRla_chgBadge{text-align:center;border-radius:4px;flex:none;min-width:20px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.l0zRla_chgM{color:#d29922;background:#d2992233}.l0zRla_chgA{color:#2ea043;background:#2ea04333}.l0zRla_chgD{color:#dc5a5a;background:#dc5a5a33}.l0zRla_chgR{color:#966ec8;background:#966ec833}.l0zRla_chgU{color:#7f7f7f;background:#7f7f7f33}.l0zRla_changePath{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow:hidden}.l0zRla_stagedMark{color:#2ea043e6;flex:none;font-size:11px}.l0zRla_logRow{border-bottom:1px solid #8080801f;gap:8px;padding:6px 8px;font-size:12px;display:flex}.l0zRla_logRow:last-child{border-bottom:none}.l0zRla_logHash{color:#608cdce6;flex:none;padding-top:1px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.l0zRla_logMain{flex:1;min-width:0}.l0zRla_logMsg{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.l0zRla_logMeta{color:#7f7f7fd9;margin-top:1px;font-size:11px}.l0zRla_muted{color:#7f7f7fd9;padding:6px 8px;font-size:12px}.l0zRla_errorBox{color:#dc5a5a;white-space:pre-wrap;background:#dc5a5a1f;border:1px solid #dc5a5a66;border-radius:8px;padding:8px 10px;font-size:12px}.l0zRla_output{color:#dcdcdceb;white-space:pre-wrap;word-break:break-word;background:#00000047;border-radius:8px;max-height:220px;margin:0;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;line-height:1.55;overflow:auto}.l0zRla_spinner{border:2px solid #7f7f7f59;border-top-color:currentColor;border-radius:50%;flex:none;width:12px;height:12px;animation:.7s linear infinite l0zRla_aero-git-spin}@keyframes l0zRla_aero-git-spin{to{transform:rotate(360deg)}}";
4286
- const styleId = "@aero/study-kit/git.module.css";
4286
+ const styleId = "@dongfangW/study-kit/git.module.css";
4287
4287
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"" + styleId + "\"]") === null) {
4288
4288
  const tag = document.createElement("style");
4289
- tag.dataset.plugin = "@aero/study-kit";
4289
+ tag.dataset.plugin = "@dongfangW/study-kit";
4290
4290
  tag.dataset.pluginCss = styleId;
4291
4291
  tag.textContent = css;
4292
4292
  document.head.appendChild(tag);