@waterwx/dsh-novel-forge 1.4.0 → 1.4.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
@@ -49,6 +49,8 @@ window.__ModuleLoader__.load({
49
49
  bookshelfImportDir: "/api/dsh-novel-forge/bookshelf/import-dir",
50
50
  /** 导入 txt/md 全本:拆章建项目并登记书架。 */
51
51
  bookshelfImportText: "/api/dsh-novel-forge/bookshelf/import-text",
52
+ /** 导入 txt/md 全本:拆章预览(不落盘)。 */
53
+ bookshelfImportTextPreview: "/api/dsh-novel-forge/bookshelf/import-text/preview",
52
54
  /** 重置项目(可选携带新大纲):清空设定/卷/章节/伏笔/资产/事实库。 */
53
55
  reset: "/api/dsh-novel-forge/reset",
54
56
  /** 全书一致性质检:LLM 扫描已生成章节,输出矛盾问题清单。 */
@@ -83,6 +85,8 @@ window.__ModuleLoader__.load({
83
85
  sensitiveCheck: "/api/dsh-novel-forge/sensitive-check",
84
86
  /** 开书想法 → AI 补全大纲:输入一句话想法,生成 2-3 个可选大纲方案。 */
85
87
  outlineSuggest: "/api/dsh-novel-forge/outline/suggest",
88
+ /** 反推大纲:从已写章节正文反向生成全书总纲(NDJSON 流)。 */
89
+ outlineReverse: "/api/dsh-novel-forge/outline/reverse",
86
90
  /** 拆书分析:对已写章节做结构/人物/文风/卖点四维体检(两阶段:源笔记→分节分析)。 */
87
91
  breakdown: "/api/dsh-novel-forge/breakdown",
88
92
  /** 漫剧分镜生成:章节 → 角色锚点 + 分镜表(可适配豆包/Seedance/SD)。 */
@@ -144,6 +148,10 @@ window.__ModuleLoader__.load({
144
148
  async saveOutline(text) {
145
149
  return postJson(NOVEL_API.saveOutline, { text });
146
150
  }
151
+ /** 反推大纲:从已写章节正文反向生成全书总纲(NDJSON 流)。 */
152
+ async outlineReverse(onFrame) {
153
+ await this.streamJob(NOVEL_API.outlineReverse, {}, onFrame);
154
+ }
147
155
  /** 开书想法 → AI 大纲:生成 count 个方案(换批时传 exclude 避开已暂留方向)。 */
148
156
  async outlineSuggest(idea, count, exclude) {
149
157
  return postJson(NOVEL_API.outlineSuggest, {
@@ -325,13 +333,28 @@ window.__ModuleLoader__.load({
325
333
  async bookImportDir(outputDir) {
326
334
  return postJson(NOVEL_API.bookshelfImportDir, { outputDir });
327
335
  }
328
- /** 导入 txt/md 全本(Mode B):拆章建项目并登记书架。 */
336
+ /** 导入 txt/md 全本(Mode B):服务器本地文件路径模式。 */
329
337
  async bookImportText(filePath, outputDir) {
330
338
  return postJson(NOVEL_API.bookshelfImportText, {
331
339
  filePath,
332
340
  outputDir
333
341
  });
334
342
  }
343
+ /** 拆章预览(浏览器上传全文,不落盘):返回识别到的章节与跳过清单。 */
344
+ async bookImportTextPreview(text, fileName) {
345
+ return postJson(NOVEL_API.bookshelfImportTextPreview, {
346
+ text,
347
+ fileName
348
+ });
349
+ }
350
+ /** 导入 txt/md 全本(Mode B):浏览器上传全文内容模式。 */
351
+ async bookImportTextContent(text, fileName, outputDir) {
352
+ return postJson(NOVEL_API.bookshelfImportText, {
353
+ text,
354
+ fileName,
355
+ outputDir
356
+ });
357
+ }
335
358
  /** 生产单:启动批量生产(区间或新增 N 章;计划不足自动补)。 */
336
359
  async runStart(req) {
337
360
  return postJson(NOVEL_API.runStart, req);
@@ -624,12 +647,14 @@ window.__ModuleLoader__.load({
624
647
  "settings.model": "模型",
625
648
  "settings.modelCustom": "自定义…",
626
649
  "settings.modelCustomPlaceholder": "输入任意模型 id",
627
- "settings.reasoningEffort": "思考强度 (reasoningEffort)",
650
+ "settings.reasoningEffort": "写作类任务思考强度 (reasoningEffort)",
651
+ "settings.reasoningHint": "章节生成/润色/重写/审稿等写作任务使用;关掉更省更快。",
652
+ "settings.analysisReasoning": "分析类任务思考强度(提炼/拆书/反推大纲)",
653
+ "settings.analysisReasoningHint": "角色/场景/道藏提炼、拆书、反推大纲等一次性分析任务默认 low,保证质量,不受上面写作档位影响。",
628
654
  "settings.reasoning.off": "off · 关闭思考(推荐日常写文)",
629
655
  "settings.reasoning.low": "low · 低思考",
630
656
  "settings.reasoning.high": "high · 高思考",
631
657
  "settings.reasoning.max": "max · 最高思考(质检/推演)",
632
- "settings.reasoningHint": "off 最快最省;high/max 更慢更贵但推理更强",
633
658
  "settings.theme": "主题",
634
659
  "settings.themeLiquid": "iOS 液态玻璃(绿)",
635
660
  "settings.themeClassic": "经典毛玻璃(蓝)",
@@ -774,7 +799,9 @@ window.__ModuleLoader__.load({
774
799
  "settings.model": "Model",
775
800
  "settings.modelCustom": "Custom…",
776
801
  "settings.modelCustomPlaceholder": "Type any model id",
777
- "settings.reasoningEffort": "Reasoning effort",
802
+ "settings.reasoningEffort": "Writing-task reasoning effort",
803
+ "settings.analysisReasoning": "Analysis-task reasoning (extract / breakdown / reverse outline)",
804
+ "settings.analysisReasoningHint": "One-off analysis tasks (roles/scenes/bible extract, breakdown, reverse outline) default to low; not affected by the writing-level switch.",
778
805
  "settings.reasoning.off": "off · no thinking (recommended)",
779
806
  "settings.reasoning.low": "low",
780
807
  "settings.reasoning.high": "high",
@@ -915,7 +942,7 @@ window.__ModuleLoader__.load({
915
942
  }
916
943
  //#endregion
917
944
  //#region \0dsh-css:D:\ryan work\harness\plugins\novel-forge\src\client\panel\panel.module.css.mjs
918
- const css = ".zE6uZW_entry{width:100%;color:var(--dsw-alias-label-primary,#1f1f23);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;transition:background .15s;display:flex}body[data-ds-dark-theme] .zE6uZW_entry{color:var(--dsw-alias-label-primary,#ececf1)}.zE6uZW_entry:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f)}.zE6uZW_entry[data-active]{background:var(--dsw-alias-interactive-bg-active,#7f7f7f33)}.zE6uZW_entryIcon{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.zE6uZW_entryLabel{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}[data-pane=conversation]{position:relative}.zE6uZW_view{z-index:60;color-scheme:light;--nf-font:-apple-system, BlinkMacSystemFont, \"SF Pro Display\", \"SF Pro Text\", \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei\", \"Segoe UI\", Roboto, \"Helvetica Neue\", sans-serif;--nf-font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--nf-bg:#f2f2f7db;--nf-bg-raise:#ffffffb8;--nf-bg-inset:#7676801f;--nf-border:#3c3c4329;--nf-border-strong:#3c3c4352;--nf-text:#1c1c1e;--nf-text-2:#3c3c43;--nf-text-2-alpha:#3c3c43ad;--nf-text-3:#8e8e93;--nf-accent:#00b85c;--nf-accent-hover:#00a04e;--nf-accent-soft:#00b85c1f;--nf-accent-fg:#fff;--nf-hover:#0000000d;--nf-success:#34c759;--nf-error:#ff3b30;--nf-warn:#ff9500;--nf-info:#00b85c;--nf-shadow:0 1px 3px #0000000f, 0 12px 32px #00000014;--nf-shadow-lg:0 4px 12px #00000012, 0 20px 48px #0000001f;--nf-card-shadow:0 2px 6px #0000000f, 0 14px 38px #00000024;--nf-card-shadow-hover:0 4px 10px #00000014, 0 22px 52px #0003;--nf-glass-face:linear-gradient(180deg, #f6f7f9 0%, #f0f2f5 26%, #e9ebef 52%, #e0e3e8 78%, #d6d9df 100%);--nf-glass-core:radial-gradient(30% 24% at 36% 28%, #ffffff80 0%, #ffffff38 45%, #fff0 78%);--nf-glass-sheen:#ffffff8c;--nf-glass-border:#ffffffa6;--nf-glass-inset:#ffffff8c;--nf-glass-orb-a:#00b85c2e;--nf-glass-orb-b:#78a0ff21;--nf-glass-noise:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E\");background:var(--nf-bg);backdrop-filter:blur(32px)saturate(180%);color:var(--nf-text);font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Roboto,Helvetica Neue,sans-serif;display:none;position:absolute;inset:0;overflow:auto}body[data-ds-dark-theme] .zE6uZW_view{color-scheme:dark;--nf-bg:#0a0b0ddb;--nf-bg-raise:#1c1c1ec7;--nf-bg-inset:#7676802e;--nf-border:#ffffff1f;--nf-border-strong:#ffffff47;--nf-text:#f2f2f7;--nf-text-2:#d1d1d6;--nf-text-2-alpha:#d1d1d6b8;--nf-text-3:#8e8e93;--nf-accent:#35d07a;--nf-accent-hover:#5ce695;--nf-accent-soft:#35d07a33;--nf-accent-fg:#062b18;--nf-hover:#ffffff17;--nf-success:#30d158;--nf-error:#ff453a;--nf-warn:#ff9f0a;--nf-info:#35d07a;--nf-shadow:0 1px 2px #00000059, 0 10px 30px #0006;--nf-shadow-lg:0 4px 12px #0006, 0 20px 48px #0000008c;--nf-card-shadow:0 2px 6px #00000059, 0 14px 38px #00000073;--nf-card-shadow-hover:0 4px 10px #0006, 0 22px 52px #0000008c;--nf-glass-face:linear-gradient(180deg, #70747a6b 0%, #60646a6b 26%, #52555a6b 52%, #44474c6b 78%, #383a3f6b 100%);--nf-glass-core:radial-gradient(30% 24% at 36% 28%, #ffffff42 0%, #ffffff1a 45%, #fff0 78%);--nf-glass-sheen:#ffffff42;--nf-glass-border:#ffffff24;--nf-glass-inset:#ffffff12;--nf-glass-orb-a:#00ca5247;--nf-glass-orb-b:#bec8d71a;--nf-glass-noise:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E\")}html[data-dsh-novelforge-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) .zE6uZW_view{display:block}.zE6uZW_panel[data-nf-theme=classic]{--nf-accent:#007aff;--nf-accent-hover:#0071e3;--nf-accent-soft:#007aff1f;--nf-accent-fg:#fff;--nf-info:#5856d6;--nf-glass-face:var(--nf-bg-raise);--nf-glass-core:transparent;--nf-glass-sheen:#fff0;--nf-glass-border:var(--nf-border);--nf-glass-inset:var(--nf-bg-inset);--nf-glass-orb-a:transparent;--nf-glass-orb-b:transparent;--nf-glass-noise:none}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=classic]{--nf-accent:#0a84ff;--nf-accent-hover:#3a9bff;--nf-accent-soft:#0a84ff33;--nf-accent-fg:#fff;--nf-info:#bf5af2;--nf-glass-face:var(--nf-bg-raise);--nf-glass-core:transparent;--nf-glass-sheen:#fff0;--nf-glass-border:var(--nf-border);--nf-glass-inset:var(--nf-bg-inset);--nf-glass-orb-a:transparent;--nf-glass-orb-b:transparent;--nf-glass-noise:none}body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph]{--nf-bg:#e4e9f2;--nf-bg-raise:#e4e9f2;--nf-bg-inset:#d9dfe8;--nf-border:#8c9baf59;--nf-border-strong:#78879e80;--nf-text:#3a4250;--nf-text-2:#5b6472;--nf-text-2-alpha:#465060b3;--nf-text-3:#8b94a3;--nf-hover:#5a697d14;--nf-shadow:4px 4px 10px #a3b1c68c, -4px -4px 10px #ffffffd9;--nf-shadow-lg:6px 6px 14px #a3b1c699, -6px -6px 14px #ffffffe6;--nf-card-shadow:9px 9px 18px #a3b1c68c, -9px -9px 18px #ffffffd9;--nf-card-shadow-hover:12px 12px 24px #a3b1c6a6, -12px -12px 24px #fffffff2;--nf-glass-face:#e4e9f2;--nf-glass-core:transparent;--nf-glass-sheen:#fff0;--nf-glass-border:#a3b1c666;--nf-glass-inset:#d9dfe8;--nf-glass-orb-a:transparent;--nf-glass-orb-b:transparent;--nf-glass-noise:none}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph]{--nf-bg:#2b2f36;--nf-bg-raise:#2b2f36;--nf-bg-inset:#25292f;--nf-border:#0a0c1080;--nf-border-strong:#080a0e99;--nf-text:#d6dae1;--nf-text-2:#a8aeb8;--nf-text-2-alpha:#a8aeb8b3;--nf-text-3:#757c88;--nf-hover:#ffffff0d;--nf-shadow:4px 4px 10px #00000080, -4px -4px 10px #6068763d;--nf-shadow-lg:6px 6px 14px #0000008c, -6px -6px 14px #60687642;--nf-card-shadow:9px 9px 18px #00000080, -9px -9px 18px #6068763d;--nf-card-shadow-hover:12px 12px 24px #0009, -12px -12px 24px #60687647;--nf-glass-face:#2b2f36;--nf-glass-core:transparent;--nf-glass-sheen:#fff0;--nf-glass-border:#0c0e1273;--nf-glass-inset:#25292f;--nf-glass-orb-a:transparent;--nf-glass-orb-b:transparent;--nf-glass-noise:none}body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_input,body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_textarea{background:var(--nf-bg-inset);border-color:#0000;box-shadow:inset 3px 3px 7px #a3b1c68c,inset -3px -3px 7px #ffffffe6}body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_input:focus,body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_textarea:focus{border-color:var(--nf-accent);box-shadow:inset 2px 2px 6px #a3b1c680, inset -2px -2px 6px #ffffffd9, 0 0 0 3px var(--nf-accent-soft)}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_input,body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_textarea{background:var(--nf-bg-inset);border-color:#0000;box-shadow:inset 3px 3px 7px #0000008c,inset -3px -3px 7px #6068763d}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_input:focus,body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_textarea:focus{border-color:var(--nf-accent);box-shadow:inset 2px 2px 6px #00000080, inset -2px -2px 6px #60687638, 0 0 0 3px var(--nf-accent-soft)}body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_button{background:var(--nf-bg-raise);border-color:#0000;box-shadow:5px 5px 10px #a3b1c68c,-5px -5px 10px #ffffffe6}body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_button:hover:not([disabled]){background:var(--nf-bg-raise);border-color:#0000;box-shadow:7px 7px 14px #a3b1c699,-7px -7px 14px #fffffff2}body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_button:active:not([disabled]){box-shadow:inset 3px 3px 7px #a3b1c68c,inset -3px -3px 7px #ffffffe6}body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_buttonPrimary{background:linear-gradient(#00c563,#00a952);box-shadow:5px 5px 10px #a3b1c699,-5px -5px 10px #ffffffd9}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_button{background:var(--nf-bg-raise);border-color:#0000;box-shadow:5px 5px 10px #00000080,-5px -5px 10px #6068763d}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_button:hover:not([disabled]){background:var(--nf-bg-raise);border-color:#0000;box-shadow:7px 7px 14px #0000008c,-7px -7px 14px #60687642}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_button:active:not([disabled]){box-shadow:inset 3px 3px 7px #0000008c,inset -3px -3px 7px #6068763d}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_buttonPrimary{background:linear-gradient(#3ddc86,#27b96a);box-shadow:5px 5px 10px #00000080,-5px -5px 10px #6068763d}.zE6uZW_panel{flex-direction:column;min-width:0;height:100%;font-size:14px;line-height:1.6;display:flex;position:relative;overflow:hidden}.zE6uZW_panel:before{content:\"\";z-index:0;pointer-events:none;background:radial-gradient(46% 36% at 18% 12%, var(--nf-glass-orb-a), transparent 70%), radial-gradient(52% 42% at 88% 22%, var(--nf-glass-orb-b), transparent 72%), radial-gradient(120% 95% at 50% 42%, transparent 55%, #0202031a 100%);position:absolute;inset:0}.zE6uZW_panelTitle{letter-spacing:.2px;align-items:center;gap:8px;margin:0;font-size:16px;font-weight:700;display:flex}.zE6uZW_panelTitle:before{content:\"\";background:linear-gradient(180deg, var(--nf-accent), var(--nf-info));border-radius:2px;width:4px;height:16px}.zE6uZW_iconButton{cursor:pointer;color:var(--nf-text-2);background:0 0;border:none;border-radius:8px;padding:4px 9px;font-size:16px;transition:background .15s,color .15s}.zE6uZW_iconButton:hover{background:var(--nf-hover);color:var(--nf-text)}.zE6uZW_tabBar{border-bottom:1px solid var(--nf-border);background:var(--nf-bg-raise);z-index:4;flex-shrink:0;gap:2px;padding:8px 14px 0;display:flex;position:sticky;top:45px}.zE6uZW_tab{cursor:pointer;color:var(--nf-text-2);background:0 0;border:none;border-radius:8px 8px 0 0;padding:7px 13px;font-size:13.5px;font-weight:500;transition:color .15s,background .15s;position:relative}.zE6uZW_tab:hover{color:var(--nf-text);background:var(--nf-hover)}.zE6uZW_tab[data-active]{color:var(--nf-accent);font-weight:600}.zE6uZW_tab[data-active]:after{content:\"\";background:var(--nf-accent);border-radius:2px 2px 0 0;height:2.5px;position:absolute;bottom:-1px;left:10px;right:10px}.zE6uZW_panelContent{z-index:1;flex-direction:column;flex:1;gap:14px;padding:16px 18px 20px;display:flex;position:relative;overflow:auto}.zE6uZW_panelBody{z-index:1;flex:1;min-height:0;display:flex;position:relative}.zE6uZW_panelNav{border:1px solid var(--nf-glass-border);background:var(--nf-glass-face);width:200px;box-shadow:var(--nf-shadow), inset 0 1px 0 var(--nf-glass-sheen);backdrop-filter:blur(28px)saturate(175%);border-radius:18px;flex-direction:column;flex:none;align-self:stretch;gap:4px;margin:10px 0 10px 12px;padding:14px 10px 12px;transition:width .18s;display:flex;overflow-y:auto}.zE6uZW_panelNavCollapsed{width:52px;padding:10px 6px}.zE6uZW_navGroup{flex-direction:column;gap:4px;display:flex}.zE6uZW_navGroupLabel{letter-spacing:.6px;text-transform:uppercase;color:var(--nf-text-3);user-select:none;padding:10px 10px 4px;font-size:10.5px;font-weight:600}.zE6uZW_navGroupSep{background:var(--nf-border);height:1px;margin:6px 8px 4px}.zE6uZW_navSpacer{flex:1;min-height:8px}.zE6uZW_navAbout{border-top:1px solid var(--nf-border);flex-direction:column;flex:none;gap:4px;margin-top:4px;padding:8px 6px 4px;display:flex}.zE6uZW_navAboutRow{cursor:pointer;color:var(--nf-text-3);text-align:left;white-space:nowrap;background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;gap:4px;padding:4px 6px;font-size:11px;transition:color .15s,background .15s;display:flex}.zE6uZW_navAboutRow:hover{color:var(--nf-text);background:var(--nf-hover)}.zE6uZW_navAboutUpdate{background:var(--nf-accent-soft);color:var(--nf-accent);cursor:pointer;text-align:left;white-space:nowrap;border:none;border-radius:8px;padding:4px 6px;font-size:10.5px;font-weight:600}.zE6uZW_navAboutUpdate:hover{color:var(--nf-accent-hover)}.zE6uZW_panelNavCollapsed .zE6uZW_navAbout{align-items:center;padding:6px 2px 2px}.zE6uZW_panelNavCollapsed .zE6uZW_navAboutRow{justify-content:center;width:100%;padding:4px 0}.zE6uZW_navTabBadge{background:var(--nf-accent);color:#fff;text-align:center;border-radius:999px;flex:none;min-width:18px;height:18px;margin-left:auto;padding:0 5px;font-size:10.5px;font-weight:700;line-height:18px;display:inline-block}.zE6uZW_panelNavCollapsed .zE6uZW_navTabBadge{min-width:14px;height:14px;padding:0 3px;font-size:9px;line-height:14px;position:absolute;top:2px;right:2px}.zE6uZW_navTabBadgeDanger{background:var(--nf-error)}.zE6uZW_navTabBadgeWarn{background:var(--nf-warn)}.zE6uZW_navTabBadgeDone{background:var(--nf-success)}.zE6uZW_navTabBadgeLive{background:var(--nf-success);animation:1.2s ease-in-out infinite zE6uZW_navBadgePulse}@keyframes zE6uZW_navBadgePulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}.zE6uZW_navTab{cursor:pointer;width:100%;color:var(--nf-text-2-alpha,var(--nf-text-2));text-align:left;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:8px;padding:9px 10px;font-size:13px;font-weight:500;transition:color .15s,background .15s,border-color .15s,box-shadow .15s;display:flex;position:relative}.zE6uZW_panelNavCollapsed .zE6uZW_navTab{justify-content:center;padding:8px 0}.zE6uZW_navTab:hover{color:var(--nf-text);background:var(--nf-hover)}.zE6uZW_navTab[data-active]{color:var(--nf-accent);background:color-mix(in srgb, var(--nf-text) 8%, transparent);border-color:color-mix(in srgb, var(--nf-text) 16%, transparent);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--nf-text) 6%, transparent);font-weight:600}.zE6uZW_navTab[data-active] .zE6uZW_navTabIcon{color:var(--nf-accent)}.zE6uZW_navTabIcon{text-align:center;flex:none;width:20px;font-size:16px;line-height:1}.zE6uZW_navTabLabel{text-overflow:ellipsis;overflow:hidden}.zE6uZW_navTitle{border-bottom:1px solid var(--nf-border);flex:none;align-items:center;gap:10px;min-width:0;margin-bottom:6px;padding:2px 6px 12px;display:flex}.zE6uZW_navTitleLogo{background:linear-gradient(145deg, var(--nf-accent), var(--nf-accent-hover));width:34px;height:34px;color:var(--nf-accent-fg);box-shadow:0 6px 16px var(--nf-accent-soft);border-radius:10px;flex:none;justify-content:center;align-items:center;font-size:15px;font-weight:800;display:flex}.zE6uZW_navTitleName{letter-spacing:.2px;white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:700;overflow:hidden}.zE6uZW_navTitleBook{color:var(--nf-text-3);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.zE6uZW_panelNavCollapsed .zE6uZW_navTitle{justify-content:center;padding:2px 0 10px}.zE6uZW_panelNavCollapsed .zE6uZW_navTitleLogo{width:32px;height:32px}.zE6uZW_navActions{border-top:1px solid var(--nf-border);flex:none;gap:6px;margin-top:8px;padding-top:8px;display:flex}.zE6uZW_navActionBtn{border:1px solid var(--nf-border);color:var(--nf-text-2);cursor:pointer;background:0 0;border-radius:10px;flex:1;justify-content:center;align-items:center;height:32px;font-size:14px;line-height:1;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.zE6uZW_navActionBtn:hover{background:var(--nf-hover);color:var(--nf-text);border-color:var(--nf-border-strong)}.zE6uZW_panelNavCollapsed .zE6uZW_navActions{flex-direction:column;align-items:stretch}.zE6uZW_bookSwitch{background:var(--nf-bg-inset);border:1px solid var(--nf-border);cursor:pointer;text-align:left;font:inherit;color:var(--nf-text);border-radius:12px;flex:none;align-items:center;gap:8px;min-width:0;margin-top:4px;padding:9px;transition:background .15s,border-color .15s;display:flex}.zE6uZW_bookSwitch:hover{background:var(--nf-hover);border-color:var(--nf-border-strong)}.zE6uZW_bookSwitchCover{background:linear-gradient(160deg, var(--nf-accent), color-mix(in srgb, var(--nf-accent) 45%, #000));width:26px;height:34px;color:var(--nf-accent-fg);border-radius:5px;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex}.zE6uZW_bookSwitchName{text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:600;overflow:hidden}.zE6uZW_bookSwitchMeta{color:var(--nf-text-3);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.zE6uZW_bookSwitchArrow{color:var(--nf-text-3);flex:none;margin-left:auto;font-size:12px}.zE6uZW_statRowD{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;display:grid}.zE6uZW_statCardD{background:var(--nf-bg-inset);border:1px solid var(--nf-border);border-radius:16px;justify-content:space-between;align-items:flex-start;gap:10px;min-width:0;padding:14px 16px;display:flex}.zE6uZW_statCardDLabel{color:var(--nf-text-3);font-size:12px}.zE6uZW_statCardDValue{color:var(--nf-text);margin-top:2px;font-size:22px;font-weight:700}.zE6uZW_statCardDUnit{color:var(--nf-text-3);font-size:12px;font-weight:400}.zE6uZW_statCardDDetail{color:var(--nf-text-3);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:11.5px;overflow:hidden}.zE6uZW_statCardDDown{color:var(--nf-error)}.zE6uZW_statCardDIcon{background:var(--nf-accent-soft);border-radius:12px;flex:none;justify-content:center;align-items:center;width:38px;height:38px;font-size:18px;display:flex}.zE6uZW_statCardDIconRed{background:color-mix(in srgb, var(--nf-error) 13%, transparent)}.zE6uZW_tlBar{gap:6px;margin-top:8px;display:flex}.zE6uZW_tlSeg{cursor:pointer;min-width:0;font:inherit;background:0 0;border:none;flex-direction:column;flex:1;gap:4px;padding:0;display:flex}.zE6uZW_tlSegTrack{background:var(--nf-hover);border:1px solid var(--nf-border);border-radius:999px;height:8px;overflow:hidden}.zE6uZW_tlSegFill{background:var(--nf-accent);border-radius:999px;width:100%;height:100%;display:block}.zE6uZW_tlSegTodo .zE6uZW_tlSegFill{opacity:0}.zE6uZW_tlSegTodo .zE6uZW_tlSegTrack{background:0 0}.zE6uZW_tlSegCurrent .zE6uZW_tlSegTrack{border-color:var(--nf-accent);box-shadow:0 0 0 2px var(--nf-accent-soft)}.zE6uZW_tlSegCurrent .zE6uZW_tlSegFill{opacity:.45}.zE6uZW_tlSegLabel{color:var(--nf-text-3);text-align:center;white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;overflow:hidden}.zE6uZW_tlSegDone .zE6uZW_tlSegLabel{color:var(--nf-accent);font-weight:600}.zE6uZW_tlSeg:hover .zE6uZW_tlSegTrack{border-color:var(--nf-border-strong)}.zE6uZW_card{border:1px solid var(--nf-glass-border);background:var(--nf-glass-face);box-shadow:var(--nf-card-shadow), inset 0 1.5px 0 var(--nf-glass-sheen), inset 0 -1px 0 #ffffff40;backdrop-filter:blur(30px)saturate(180%);border-radius:22px;flex-direction:column;gap:10px;padding:16px 18px;transition:transform .22s,box-shadow .22s;display:flex;position:relative}.zE6uZW_card:before{content:\"\";border-radius:inherit;pointer-events:none;background:var(--nf-glass-core), linear-gradient(90deg, transparent, var(--nf-glass-sheen), transparent) no-repeat 10% 0 / 80% 1px, linear-gradient(156deg, #ffffff42 0%, #fff0 55%);z-index:0;position:absolute;inset:0}.zE6uZW_card:after{content:\"\";border-radius:inherit;pointer-events:none;background:var(--nf-glass-noise);opacity:.06;z-index:0;position:absolute;inset:0}.zE6uZW_card:hover{box-shadow:var(--nf-card-shadow-hover), inset 0 1.5px 0 var(--nf-glass-sheen), inset 0 -1px 0 #ffffff40;transform:translateY(-3px)}.zE6uZW_card>*{z-index:1;position:relative}.zE6uZW_cardTitle{color:var(--nf-text);align-items:center;gap:8px;margin:0;font-size:14px;font-weight:650;display:flex}.zE6uZW_button{border:1px solid var(--nf-border-strong);background:var(--nf-bg-inset);color:var(--nf-text);cursor:pointer;white-space:nowrap;border-radius:12px;padding:6px 14px;font-size:13px;font-weight:500;transition:background .15s,border-color .15s,transform .1s,box-shadow .15s}.zE6uZW_button:hover:not([disabled]){background:var(--nf-hover);border-color:var(--nf-border-strong)}.zE6uZW_button:active:not([disabled]){transform:scale(.96)}.zE6uZW_button[disabled]{opacity:.45;cursor:not-allowed}.zE6uZW_buttonPrimary{background:linear-gradient(180deg, color-mix(in srgb, var(--nf-accent) 88%, #fff), var(--nf-accent));color:var(--nf-accent-fg);box-shadow:0 2px 10px color-mix(in srgb, var(--nf-accent) 45%, transparent), 0 0 0 .5px color-mix(in srgb, var(--nf-accent) 30%, transparent);border-color:#0000}.zE6uZW_buttonPrimary:hover:not([disabled]){background:linear-gradient(180deg, var(--nf-accent-hover), color-mix(in srgb, var(--nf-accent-hover) 85%, #000));border-color:#0000}.zE6uZW_buttonDanger{border-color:var(--nf-error);color:var(--nf-error)}.zE6uZW_buttonDanger:hover:not([disabled]){background:#ff3b301a}.zE6uZW_buttonSmall{border-radius:9px;padding:3px 10px;font-size:12px}.zE6uZW_field{flex-direction:column;gap:5px;display:flex}.zE6uZW_fieldLabel{color:var(--nf-text-2);font-size:12px;font-weight:500}.zE6uZW_input{border:1px solid var(--nf-border-strong);background:var(--nf-bg-inset);color:var(--nf-text);box-sizing:border-box;border-radius:12px;width:100%;padding:7px 11px;font-size:13px;transition:border-color .15s,box-shadow .15s}.zE6uZW_input:focus,.zE6uZW_textarea:focus{border-color:var(--nf-accent);box-shadow:0 0 0 3px var(--nf-accent-soft);outline:none}.zE6uZW_input::placeholder,.zE6uZW_textarea::placeholder{color:var(--nf-text-3)}.zE6uZW_textarea{border:1px solid var(--nf-border-strong);background:var(--nf-bg-inset);color:var(--nf-text);box-sizing:border-box;resize:vertical;border-radius:12px;width:100%;min-height:200px;padding:9px 11px;font-family:inherit;font-size:13px;line-height:1.7;transition:border-color .15s,box-shadow .15s}.zE6uZW_row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.zE6uZW_spaceBetween{justify-content:space-between}.zE6uZW_chapterList{flex-direction:column;gap:8px;display:flex}.zE6uZW_volumeGroup{flex-direction:column;gap:6px;display:flex}.zE6uZW_volumeGroupHeader{background:var(--nf-bg-inset);border:1px solid var(--nf-border);cursor:pointer;user-select:none;border-radius:10px;align-items:center;gap:8px;padding:6px 10px;font-size:13px;transition:border-color .15s;display:flex}.zE6uZW_volumeGroupHeader:hover{border-color:var(--nf-accent)}.zE6uZW_volumeGroupToggle{color:var(--nf-text-2);flex:none;font-size:11px}.zE6uZW_chapter{border:1px solid var(--nf-border);background:var(--nf-bg);border-radius:10px;align-items:center;gap:10px;padding:9px 12px;transition:border-color .15s,box-shadow .15s,transform .1s;display:flex}.zE6uZW_chapter:hover{border-color:var(--nf-border-strong);box-shadow:var(--nf-shadow)}.zE6uZW_chapterFocus{animation:.9s ease-in-out 3 zE6uZW_chapterFocusPulse;border-color:var(--nf-accent)!important;box-shadow:0 0 0 3px color-mix(in srgb, var(--nf-accent) 35%, transparent)!important}@keyframes zE6uZW_chapterFocusPulse{0%,to{background:var(--nf-bg)}50%{background:color-mix(in srgb, var(--nf-accent) 18%, var(--nf-bg))}}.zE6uZW_chapterNum{background:var(--nf-bg-inset);border:1px solid var(--nf-border);min-width:28px;height:28px;color:var(--nf-text-2);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:0 8px;font-size:12px;font-weight:700;display:inline-flex}.zE6uZW_chapterMain{flex:1;min-width:0}.zE6uZW_chapterTitle{color:var(--nf-text);align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.zE6uZW_chapterBeats{color:var(--nf-text-2);opacity:.85;text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.zE6uZW_chapterActions{opacity:.85;flex-shrink:0;gap:4px;transition:opacity .15s;display:flex}.zE6uZW_chapter:hover .zE6uZW_chapterActions{opacity:1}.zE6uZW_badge{white-space:nowrap;letter-spacing:.2px;border:1px solid;border-radius:999px;padding:2px 9px;font-size:11px;font-weight:600}.zE6uZW_badgePending{color:var(--nf-info);border-color:var(--nf-info);background:color-mix(in srgb, var(--nf-info) 10%, transparent)}.zE6uZW_badgeGenerating{color:var(--nf-accent);border-color:var(--nf-accent);background:color-mix(in srgb, var(--nf-accent) 12%, transparent);animation:1.2s ease-in-out infinite zE6uZW_pulse}.zE6uZW_badgeWritten{color:var(--nf-warn);border-color:var(--nf-warn);background:color-mix(in srgb, var(--nf-warn) 10%, transparent)}.zE6uZW_badgeRejected{color:var(--nf-error);border-color:var(--nf-error);background:color-mix(in srgb, var(--nf-error) 10%, transparent)}.zE6uZW_badgeDone{color:var(--nf-success);border-color:var(--nf-success);background:color-mix(in srgb, var(--nf-success) 10%, transparent)}.zE6uZW_badgeError{color:var(--nf-error);border-color:var(--nf-error);background:color-mix(in srgb, var(--nf-error) 10%, transparent)}.zE6uZW_reviewBox{border:1px solid var(--nf-border);background:var(--nf-bg-inset);border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;font-size:12.5px;display:flex}.zE6uZW_chapterPreview{white-space:pre-wrap;word-break:break-all;max-height:320px;color:var(--nf-text);background:var(--nf-bg-inset);border:1px solid var(--nf-border);border-radius:10px;margin:0;padding:10px 12px;font-family:inherit;font-size:12.5px;line-height:1.8;overflow:auto}.zE6uZW_chatScroll{border:1px solid var(--nf-border);background:var(--nf-bg-inset);border-radius:12px;flex-direction:column;flex:1;gap:10px;min-height:240px;max-height:480px;padding:14px;display:flex;overflow-y:auto}.zE6uZW_chatBubbleUser{background:linear-gradient(180deg, var(--nf-accent), var(--nf-accent-hover));max-width:90%;color:var(--nf-accent-fg);border-radius:14px 14px 4px;align-self:flex-end;padding:9px 14px;font-size:13px;box-shadow:0 2px 6px #4d6bfe33}.zE6uZW_chatBubbleAssistant{background:var(--nf-bg-raise);max-width:92%;color:var(--nf-text);border:1px solid var(--nf-border);box-shadow:var(--nf-shadow);border-radius:14px 14px 14px 4px;align-self:flex-start;padding:9px 14px;font-size:13px}.zE6uZW_chatRole{color:var(--nf-text-3);margin-bottom:3px;font-size:11px;font-weight:600}.zE6uZW_toolLive{background:var(--nf-bg-inset);border:1px dashed var(--nf-border-strong);white-space:pre-wrap;word-break:break-all;color:var(--nf-text-2);border-radius:8px;max-height:180px;margin-top:6px;padding:8px 10px;font-size:12px;line-height:1.7;overflow-y:auto}.zE6uZW_assistantStatus{color:var(--nf-text-2);background:var(--nf-bg-inset);border:1px solid var(--nf-border);border-radius:999px;flex:none;align-items:center;gap:6px;margin-top:6px;padding:6px 12px;font-size:12px;display:flex}.zE6uZW_assistantStatusBusy{color:var(--nf-accent);border-color:var(--nf-accent);background:var(--nf-accent-soft);font-weight:600}.zE6uZW_toolSteps{flex-direction:column;gap:4px;margin-top:6px;display:flex}.zE6uZW_toolStep{background:var(--nf-bg-inset);border:1px solid var(--nf-border);border-radius:8px;align-items:center;gap:8px;padding:5px 10px;font-size:12px;display:flex}.zE6uZW_toolStepActive{border-color:var(--nf-accent);background:var(--nf-accent-soft)}.zE6uZW_toolStepError{border-color:var(--nf-error);background:color-mix(in srgb, var(--nf-error) 8%, transparent)}.zE6uZW_toolStepIcon{flex:none;font-size:13px}.zE6uZW_toolStepName{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.zE6uZW_toolStepStatus{color:var(--nf-text-2);flex:none;font-size:11px}.zE6uZW_toolStepActive .zE6uZW_toolStepStatus{color:var(--nf-accent)}.zE6uZW_toolStepError .zE6uZW_toolStepStatus{color:var(--nf-error)}.zE6uZW_toolStepDetail{width:100%;color:var(--nf-error);word-break:break-all;font-size:11px}.zE6uZW_progress{border:1px solid var(--nf-border);white-space:pre-wrap;word-break:break-all;min-height:60px;max-height:220px;color:var(--nf-text-2);font-size:12px;font-family:var(--nf-font-mono);background:var(--nf-bg-inset);border-radius:10px;padding:10px 14px;line-height:1.8;overflow:auto}.zE6uZW_progressLine{color:var(--nf-text-2);opacity:.9}.zE6uZW_progressLineLive{color:var(--nf-accent);align-items:center;gap:8px;font-weight:600;display:flex}.zE6uZW_progressBar{background:var(--nf-border);border-radius:999px;flex:none;width:110px;height:6px;display:inline-block;overflow:hidden}.zE6uZW_progressBarFill{background:var(--nf-accent);border-radius:3px;height:100%;transition:width .3s;display:block}.zE6uZW_busyRow{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.zE6uZW_liveText{font-variant-numeric:tabular-nums;color:var(--nf-text-2);font-size:12px}.zE6uZW_bigProgressBar{background:var(--nf-border);border-radius:999px;height:8px;margin-top:10px;overflow:hidden}.zE6uZW_bigProgressBarFill{background:linear-gradient(90deg, var(--nf-accent), var(--nf-accent-2,var(--nf-accent)));border-radius:999px;height:100%;transition:width .3s;display:block}.zE6uZW_diffLegend{flex-wrap:wrap;align-items:center;gap:14px;margin:6px 0 8px;font-size:12px;display:flex}.zE6uZW_legendOld{color:var(--nf-error);font-weight:700}.zE6uZW_legendNew{color:var(--nf-success);font-weight:700}.zE6uZW_onlyChanges{color:var(--nf-text-2);cursor:pointer;align-items:center;gap:4px;margin-left:auto;display:inline-flex}.zE6uZW_diffList{border:1px solid var(--nf-border);background:var(--nf-bg-inset);border-radius:8px;flex-direction:column;flex:1;gap:8px;min-height:0;padding:10px 12px;font-size:13px;line-height:1.7;display:flex;overflow-y:auto}.zE6uZW_diffSame{border:1px dashed var(--nf-border);color:var(--nf-text-2);opacity:.85;border-radius:6px;padding:6px 10px}.zE6uZW_diffSame summary{cursor:pointer;user-select:none;font-size:12px}.zE6uZW_diffSameBody{white-space:pre-wrap;margin-top:6px}.zE6uZW_diffChange{border:1px solid var(--nf-border);border-radius:8px;grid-template-columns:1fr 1fr;display:grid;overflow:hidden}.zE6uZW_diffColumn{flex-direction:column;gap:6px;min-width:0;padding:8px 10px;display:flex}.zE6uZW_diffColumn:first-child{border-right:1px solid var(--nf-border)}.zE6uZW_diffTagOld,.zE6uZW_diffTagNew{letter-spacing:.5px;border-radius:4px;flex:none;align-self:flex-start;padding:1px 7px;font-size:11px;font-weight:700}.zE6uZW_diffTagOld{color:var(--nf-error);background:color-mix(in srgb, var(--nf-error) 16%, transparent);border:1px solid color-mix(in srgb, var(--nf-error) 45%, transparent)}.zE6uZW_diffTagNew{color:var(--nf-success);background:color-mix(in srgb, var(--nf-success) 16%, transparent);border:1px solid color-mix(in srgb, var(--nf-success) 45%, transparent)}.zE6uZW_diffOld{color:var(--nf-error);white-space:pre-wrap;text-decoration:line-through;text-decoration-color:color-mix(in srgb, var(--nf-error) 55%, transparent)}.zE6uZW_diffNew{color:var(--nf-success);white-space:pre-wrap;font-weight:500}.zE6uZW_diffDel{border:1px solid color-mix(in srgb, var(--nf-error) 35%, transparent);background:color-mix(in srgb, var(--nf-error) 7%, transparent);border-radius:6px;flex-direction:column;gap:4px;padding:6px 10px;display:flex}.zE6uZW_diffAdd{border:1px solid color-mix(in srgb, var(--nf-success) 35%, transparent);background:color-mix(in srgb, var(--nf-success) 7%, transparent);border-radius:6px;flex-direction:column;gap:4px;padding:6px 10px;display:flex}.zE6uZW_diffText{white-space:pre-wrap}.zE6uZW_diffDel .zE6uZW_diffText{color:var(--nf-error);text-decoration:line-through;text-decoration-color:color-mix(in srgb, var(--nf-error) 50%, transparent)}.zE6uZW_diffAdd .zE6uZW_diffText{color:var(--nf-success)}.zE6uZW_wsPage{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex}.zE6uZW_wsPageHeader{flex-wrap:wrap;flex:none;align-items:center;gap:8px;display:flex}.zE6uZW_wsAppliedBanner{border:1px solid var(--nf-success);background:color-mix(in srgb, var(--nf-success) 8%, transparent);border-radius:10px;flex-wrap:wrap;flex:none;align-items:center;gap:8px;padding:8px 12px;font-size:12px;font-weight:600;display:flex}.zE6uZW_wsColumns{flex:1;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;min-height:0;display:grid}.zE6uZW_wsColumn{flex-direction:column;gap:8px;min-width:0;min-height:0;display:flex}.zE6uZW_wsEditor{resize:vertical;min-height:0;font-family:var(--nf-font);white-space:pre-wrap;flex:1;font-size:13px;line-height:1.75}.zE6uZW_wsSelected{border:1px solid var(--nf-accent);background:color-mix(in srgb, var(--nf-accent) 8%, transparent);border-radius:6px;max-height:120px;padding:6px 10px;overflow:auto}.zE6uZW_wsSelectedText{color:var(--nf-text-2);white-space:pre-wrap;margin-top:4px;font-size:12px}.zE6uZW_wsPreview{border:1px solid var(--nf-border);background:var(--nf-bg-inset);border-radius:8px;flex-direction:column;gap:8px;padding:8px 10px;display:flex}.zE6uZW_wsPreviewText{white-space:pre-wrap;min-height:0;color:var(--nf-text);flex:1;margin:0;font-size:13px;line-height:1.7;overflow:auto}.zE6uZW_assetGrid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.zE6uZW_assetStat{border:1px solid var(--nf-glass-border);background:var(--nf-glass-face);box-shadow:var(--nf-card-shadow), inset 0 1px 0 var(--nf-glass-sheen);backdrop-filter:blur(30px)saturate(180%);border-radius:14px;flex-direction:column;gap:4px;padding:10px 12px;transition:transform .22s,box-shadow .22s;display:flex}.zE6uZW_assetStat:hover{box-shadow:var(--nf-card-shadow-hover), inset 0 1px 0 var(--nf-glass-sheen);transform:translateY(-3px)}.zE6uZW_assetStatLabel{color:var(--nf-text-2);opacity:.9;font-size:11px}.zE6uZW_assetStatValue{color:var(--nf-text);font-size:15px;font-weight:700;line-height:1.2}.zE6uZW_assetStatDetail{color:var(--nf-text-2);opacity:.85;text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.zE6uZW_dashHero{border:1px solid var(--nf-glass-border);background:var(--nf-glass-face);box-shadow:var(--nf-card-shadow), inset 0 1.5px 0 var(--nf-glass-sheen), inset 0 -1px 0 #ffffff40;backdrop-filter:blur(30px)saturate(180%);border-radius:22px;flex-direction:column;gap:14px;padding:18px 20px;transition:transform .22s,box-shadow .22s;display:flex;position:relative}.zE6uZW_dashHero:before{content:\"\";border-radius:inherit;pointer-events:none;background:radial-gradient(46% 40% at 92% -10%, color-mix(in srgb, var(--nf-accent) 13%, transparent), transparent 62%), var(--nf-glass-core), linear-gradient(90deg, transparent, var(--nf-glass-sheen), transparent) no-repeat 10% 0 / 80% 1px, linear-gradient(156deg, #ffffff42 0%, #fff0 55%);z-index:0;position:absolute;inset:0}.zE6uZW_dashHero:after{content:\"\";border-radius:inherit;pointer-events:none;background:var(--nf-glass-noise);opacity:.06;z-index:0;position:absolute;inset:0}.zE6uZW_dashHero:hover{box-shadow:var(--nf-card-shadow-hover), inset 0 1.5px 0 var(--nf-glass-sheen), inset 0 -1px 0 #ffffff40;transform:translateY(-3px)}.zE6uZW_dashHero>*{z-index:1;position:relative}.zE6uZW_dashHeroEyebrow{color:var(--nf-accent);align-items:center;gap:6px;font-size:13px;font-weight:600;display:inline-flex}.zE6uZW_dashHeroSparkle{font-size:14px}.zE6uZW_dashHeroTitle{flex-direction:column;gap:2px;display:flex}.zE6uZW_dashHeroBook{letter-spacing:-.3px;margin:0;font-size:24px;font-weight:700;line-height:1.25}.zE6uZW_dashHeroAction{border:1px solid var(--nf-glass-border);background:var(--nf-glass-inset);box-shadow:inset 0 1px 0 var(--nf-glass-sheen);border-radius:14px;align-items:center;gap:12px;padding:10px 14px;display:flex}.zE6uZW_dashHeroArrow{background:var(--nf-accent);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;display:inline-flex}.zE6uZW_dashHeroActionBody{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.zE6uZW_dashHeroActionTitle{font-size:14px;font-weight:600}.zE6uZW_dashJourney{flex-direction:column;gap:6px;display:flex}.zE6uZW_dashJourneyBar{background:var(--nf-border);border-radius:999px;height:6px;overflow:hidden}.zE6uZW_dashJourneyFill{background:linear-gradient(90deg, var(--nf-info), var(--nf-accent));border-radius:999px;height:100%;transition:width .4s;display:block}.zE6uZW_dashJourneyStages{grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;display:grid}.zE6uZW_dashStage{color:var(--nf-text-3);text-align:center;white-space:nowrap;flex-direction:column;align-items:center;gap:3px;font-size:11px;display:flex}.zE6uZW_dashStageDot{border:1px solid var(--nf-border-strong,var(--nf-text-3));background:var(--nf-bg-base);border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:10px;display:inline-flex}.zE6uZW_dashStageDone{color:var(--nf-text-2)}.zE6uZW_dashStageDone .zE6uZW_dashStageDot{background:var(--nf-success);border-color:var(--nf-success);color:#fff}.zE6uZW_dashStageCurrent{color:var(--nf-accent);font-weight:600}.zE6uZW_dashStageCurrent .zE6uZW_dashStageDot{border-color:var(--nf-accent);color:var(--nf-accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--nf-accent) 18%, transparent)}.zE6uZW_dashFacts{border-top:1px solid var(--nf-border);grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding-top:12px;display:grid}.zE6uZW_dashFact{flex-direction:column;gap:2px;min-width:0;display:flex}.zE6uZW_dashFact b{white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.zE6uZW_dashGrid{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start;gap:14px;display:grid}.zE6uZW_todoItem{border:1px solid var(--nf-border);border-radius:8px;align-items:center;gap:10px;padding:8px 12px;font-size:12.5px;display:flex}.zE6uZW_todoDanger{border-color:color-mix(in srgb, var(--nf-error) 40%, transparent);background:color-mix(in srgb, var(--nf-error) 8%, transparent)}.zE6uZW_todoWarning{border-color:color-mix(in srgb, var(--nf-warn) 40%, transparent);background:color-mix(in srgb, var(--nf-warn) 8%, transparent)}.zE6uZW_todoInfo{border-color:color-mix(in srgb, var(--nf-info) 40%, transparent);background:color-mix(in srgb, var(--nf-info) 7%, transparent)}.zE6uZW_todoText{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.zE6uZW_outlineReadonly{border:1px solid var(--nf-border);background:var(--nf-bg-inset);white-space:pre-wrap;user-select:text;border-radius:12px;max-height:480px;margin:0;padding:12px 14px;font-size:12.5px;line-height:1.8;overflow:auto}.zE6uZW_bookCreateOutline{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.zE6uZW_assistantFloat{z-index:80;border:1px solid var(--nf-border);background:var(--nf-bg-raise);backdrop-filter:blur(24px)saturate(180%);box-shadow:var(--nf-shadow-lg);border-radius:16px;flex-direction:column;min-width:320px;min-height:220px;display:flex;position:absolute;overflow:hidden}.zE6uZW_assistantFloatHeader{cursor:grab;user-select:none;border-bottom:1px solid var(--nf-border);background:var(--nf-bg-inset);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px 8px 14px;font-size:13px;font-weight:600;display:flex}.zE6uZW_assistantFloatHeader:active{cursor:grabbing}.zE6uZW_assistantFloatBody{flex:1;min-height:0;padding:10px;display:flex;overflow:hidden}.zE6uZW_assistantFloatBody>*{flex:1;min-width:0}.zE6uZW_assistantResize{cursor:nwse-resize;background:linear-gradient(135deg, transparent 0 55%, var(--nf-border-strong) 55% 62%, transparent 62%) no-repeat 4px 4px / 12px 12px;width:20px;height:20px;position:absolute;bottom:0;right:0}.zE6uZW_coverPreview{border:1px solid var(--nf-border);background:var(--nf-bg-inset);border-radius:12px;flex:none;justify-content:center;align-items:center;width:150px;height:200px;display:flex;overflow:hidden}.zE6uZW_coverPreview img{object-fit:contain;width:100%;height:100%;display:block}.zE6uZW_coverPlaceholder{color:var(--nf-text-3);font-size:12px}.zE6uZW_shelfView{flex-direction:column;flex:1;gap:16px;min-height:0;padding:18px;display:flex;overflow:auto}.zE6uZW_shelfHeader{flex-direction:column;gap:10px;display:flex}.zE6uZW_shelfTitleRow{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.zE6uZW_shelfToolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.zE6uZW_shelfSearch{flex:1;min-width:180px;max-width:320px}.zE6uZW_shelfFilters{flex-wrap:wrap;gap:6px;display:flex}.zE6uZW_shelfEmpty{border:1px dashed var(--nf-border-strong);background:var(--nf-bg-raise);backdrop-filter:blur(24px)saturate(180%);text-align:center;border-radius:16px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;padding:40px 20px;display:flex}.zE6uZW_shelfEmptyIcon{font-size:42px}.zE6uZW_shelfEmptyTitle{font-size:16px;font-weight:700}.zE6uZW_shelfGrid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));align-content:start;gap:14px;display:grid}.zE6uZW_bookCard{border:1px solid var(--nf-border);background:var(--nf-bg-raise);backdrop-filter:blur(24px)saturate(180%);box-shadow:var(--nf-shadow);cursor:pointer;border-radius:16px;flex-direction:column;gap:8px;padding:12px;transition:border-color .15s,transform .1s,box-shadow .15s;display:flex}.zE6uZW_bookCard:hover{border-color:var(--nf-accent);box-shadow:var(--nf-shadow-lg);transform:translateY(-2px)}.zE6uZW_bookCardActive{border-color:var(--nf-accent);box-shadow:0 0 0 3px var(--nf-accent-soft)}.zE6uZW_bookCardCover{aspect-ratio:3/4;background:var(--nf-bg-inset);border:1px solid var(--nf-border);border-radius:12px;flex:none;justify-content:center;align-items:center;display:flex;overflow:hidden}.zE6uZW_bookCardCover img{object-fit:contain;width:100%;height:100%;display:block}.zE6uZW_bookCardCoverFallback{background:radial-gradient(400px 200px at 80% -20%, color-mix(in srgb, var(--nf-accent) 25%, transparent), transparent 70%), linear-gradient(155deg, var(--nf-bg-inset), color-mix(in srgb, var(--nf-accent) 10%, var(--nf-bg-inset)));flex-direction:column;justify-content:center;align-items:center;gap:6px;width:100%;height:100%;display:flex}.zE6uZW_bookCardCoverTitle{color:var(--nf-accent);letter-spacing:2px;font-size:22px;font-weight:800}.zE6uZW_bookCardBody{flex-direction:column;gap:5px;min-width:0;display:flex}.zE6uZW_bookCardTitleRow{justify-content:space-between;align-items:center;gap:6px;display:flex}.zE6uZW_bookCardName{text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:700;overflow:hidden}.zE6uZW_bookCardBlurb{-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:34px;display:-webkit-box;overflow:hidden}.zE6uZW_bookCardMetaRow{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;display:flex}.zE6uZW_bookCardProgressBar{background:var(--nf-border);border-radius:999px;height:5px;overflow:hidden}.zE6uZW_bookCardProgressFill{background:linear-gradient(90deg, var(--nf-info), var(--nf-accent));border-radius:999px;height:100%;transition:width .3s;display:block}.zE6uZW_bookAddCard{text-align:center;color:var(--nf-text-2);border-style:dashed;justify-content:center;align-items:center;gap:8px;min-height:260px}.zE6uZW_bookAddCard:hover{color:var(--nf-accent)}.zE6uZW_bookAddIcon{color:var(--nf-accent);font-size:34px;line-height:1}.zE6uZW_bookCreateCard{border-color:var(--nf-accent);min-height:260px}.zE6uZW_createBookView{flex-direction:column;flex:1;gap:14px;min-height:0;padding:14px 18px 24px;display:flex;overflow:auto}.zE6uZW_createBookTop{align-items:center;display:flex}.zE6uZW_createBookCard{border:1px solid var(--nf-border);background:var(--nf-bg-raise);backdrop-filter:blur(24px)saturate(180%);width:min(520px,100%);box-shadow:var(--nf-shadow-lg);border-radius:20px;flex-direction:column;align-self:center;gap:12px;padding:26px 28px;display:flex}.zE6uZW_createBookIcon{font-size:34px;line-height:1}.zE6uZW_createBookTitle{letter-spacing:-.3px;margin:0;font-size:22px;font-weight:800}.zE6uZW_ideaCard{border:1px dashed var(--nf-border-strong);background:color-mix(in srgb, var(--nf-accent) 3%, transparent);border-radius:14px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.zE6uZW_ideaToggle{color:var(--nf-accent);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:6px;padding:0;font-size:13px;font-weight:700;display:flex}.zE6uZW_ideaCandidate{border:1px solid var(--nf-border);background:var(--nf-bg);border-radius:12px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.zE6uZW_progressLineDone{color:var(--nf-success);font-weight:600}.zE6uZW_progressLineError{color:var(--nf-error);font-weight:600}.zE6uZW_meta{color:var(--nf-text-2);opacity:.9;font-size:12px}.zE6uZW_genreDesc{-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:560px;display:-webkit-box;overflow:hidden}.zE6uZW_fileList{color:var(--nf-text-2);opacity:.9;word-break:break-all;flex-direction:column;gap:3px;font-size:12px;display:flex}.zE6uZW_panelContent::-webkit-scrollbar,.zE6uZW_chatScroll::-webkit-scrollbar,.zE6uZW_chapterPreview::-webkit-scrollbar,.zE6uZW_progress::-webkit-scrollbar,.zE6uZW_toolLive::-webkit-scrollbar{width:8px;height:8px}.zE6uZW_panelContent::-webkit-scrollbar-thumb,.zE6uZW_chatScroll::-webkit-scrollbar-thumb,.zE6uZW_chapterPreview::-webkit-scrollbar-thumb,.zE6uZW_progress::-webkit-scrollbar-thumb,.zE6uZW_toolLive::-webkit-scrollbar-thumb{background:var(--nf-border-strong);border-radius:4px}.zE6uZW_panelContent::-webkit-scrollbar-thumb:hover,.zE6uZW_chatScroll::-webkit-scrollbar-thumb:hover,.zE6uZW_chapterPreview::-webkit-scrollbar-thumb:hover,.zE6uZW_progress::-webkit-scrollbar-thumb:hover,.zE6uZW_toolLive::-webkit-scrollbar-thumb:hover{background:var(--nf-text-3)}.zE6uZW_workflowList{flex-direction:column;gap:0;display:flex}.zE6uZW_workflowRow{align-items:flex-start;gap:12px;padding:8px 4px;display:flex;position:relative}.zE6uZW_workflowRow:before{content:\"\";background:var(--nf-border);width:2px;position:absolute;top:34px;bottom:-8px;left:13px}.zE6uZW_workflowRow:last-child:before{display:none}.zE6uZW_workflowDot{border:2px solid var(--nf-border-strong);background:var(--nf-bg-raise);width:28px;height:28px;color:var(--nf-text-2);z-index:1;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:inline-flex}.zE6uZW_workflowDotDone{border-color:var(--nf-success);background:color-mix(in srgb, var(--nf-success) 15%, var(--nf-bg-raise));color:var(--nf-success)}.zE6uZW_workflowDotActive{border-color:var(--nf-accent);background:var(--nf-accent);color:var(--nf-accent-fg);box-shadow:0 0 0 4px var(--nf-accent-soft)}.zE6uZW_workflowBody{flex-direction:column;flex:1;gap:4px;min-width:0;padding-top:2px;display:flex}.zE6uZW_workflowLabel{color:var(--nf-text);font-size:13px;font-weight:600}.zE6uZW_workflowHint{color:var(--nf-text-2);font-size:12px}@keyframes zE6uZW_pulse{0%,to{opacity:1}50%{opacity:.45}}@keyframes zE6uZW_fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.zE6uZW_card{animation:.2s zE6uZW_fadeIn}.zE6uZW_bookshelf{border:1px solid var(--nf-glass-border);background:var(--nf-glass-face);box-shadow:var(--nf-shadow), inset 0 1px 0 var(--nf-glass-sheen);backdrop-filter:blur(26px)saturate(175%);z-index:1;border-radius:16px;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:10px;margin:10px 12px 0;padding:8px 14px;display:flex;position:relative}.zE6uZW_bookshelfLabel{color:var(--nf-text-3);letter-spacing:1px;flex-shrink:0;font-size:12px;font-weight:700}.zE6uZW_bookshelfList{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.zE6uZW_bookChip{border:1px solid var(--nf-border);background:var(--nf-bg-inset);cursor:pointer;border-radius:999px;align-items:center;gap:6px;max-width:220px;padding:4px 8px 4px 10px;font-size:12px;transition:border-color .15s,background .15s;display:flex}.zE6uZW_bookChip:hover{border-color:var(--nf-border-strong)}.zE6uZW_bookChipActive{border-color:var(--nf-accent);background:var(--nf-accent-soft);color:var(--nf-accent)}.zE6uZW_bookChipName{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.zE6uZW_bookChipMeta{opacity:.7;white-space:nowrap;font-size:11px}.zE6uZW_bookChipRemove{color:var(--nf-text-3);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:0 2px;font-size:13px;line-height:1}.zE6uZW_bookChipRemove:hover{color:var(--nf-error)}.zE6uZW_bookAdd{border:1px dashed var(--nf-border-strong);color:var(--nf-text-2);cursor:pointer;background:0 0;border-radius:999px;padding:4px 12px;font-size:12px;transition:border-color .15s,color .15s}.zE6uZW_bookAdd:hover{border-color:var(--nf-accent);color:var(--nf-accent)}.zE6uZW_bookCreateForm{align-items:center;gap:6px;display:flex}.zE6uZW_dropzone{border:2px dashed var(--nf-border-strong);text-align:center;color:var(--nf-text-2);cursor:pointer;border-radius:10px;flex-direction:column;align-items:center;gap:6px;padding:18px 14px;font-size:13px;transition:border-color .15s,background .15s;display:flex}.zE6uZW_dropzone:hover,.zE6uZW_dropzoneActive{border-color:var(--nf-accent);background:var(--nf-accent-soft);color:var(--nf-accent)}.zE6uZW_dropzoneIcon{font-size:22px;line-height:1}.zE6uZW_bookCardActions{align-items:center;gap:6px;margin-top:2px;display:flex}.zE6uZW_bookCardActions .zE6uZW_button{flex:1;justify-content:center}.zE6uZW_readerView{flex-direction:column;transition:background .2s,color .2s;display:flex;position:absolute;inset:0;overflow:hidden}.zE6uZW_readerHeader{border-bottom:1px solid;flex-wrap:wrap;flex:none;align-items:center;gap:8px;padding:8px 12px;display:flex}.zE6uZW_readerTitle{font-size:14px;font-weight:700}.zE6uZW_readerSeg{border-radius:8px;align-items:center;gap:2px;display:flex;overflow:hidden}.zE6uZW_readerSegBtn{cursor:pointer;opacity:.75;background:0 0;border:none;border-radius:6px;padding:3px 8px;font-size:12px}.zE6uZW_readerSegBtn:hover,.zE6uZW_readerSegActive{opacity:1}.zE6uZW_readerBody{flex:1;align-items:stretch;min-height:0;display:flex}.zE6uZW_readerSidebar{scrollbar-width:thin;border-right:1px solid;flex-direction:column;flex:none;gap:10px;width:220px;min-width:220px;padding:8px 6px 24px;display:flex;overflow-y:auto}.zE6uZW_readerGroup{flex-direction:column;gap:1px;display:flex}.zE6uZW_readerGroupTitle{opacity:.9;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;width:100%;padding:6px 8px 4px;font-size:12px;font-weight:700;display:flex}.zE6uZW_readerGroupTitle:hover{opacity:1;background:#8080801f}.zE6uZW_readerGroupArrow{text-align:center;flex:none;width:12px;font-size:10px}.zE6uZW_readerGroupCount{opacity:.6;flex:none;margin-left:auto;padding-right:2px;font-size:11px;font-weight:400}.zE6uZW_readerItem{text-align:left;cursor:pointer;opacity:.8;background:0 0;border:1px solid;border-radius:8px;align-items:center;gap:6px;min-width:0;padding:4px 8px;font-size:12px;transition:opacity .15s,background .15s;display:flex}.zE6uZW_readerItem:hover{opacity:1}.zE6uZW_readerItemActive{opacity:1;font-weight:700}.zE6uZW_readerItemNo{text-align:right;opacity:.75;flex:none;min-width:26px;font-weight:700}.zE6uZW_readerItemTitle{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.zE6uZW_readerItemBadge{flex:none;font-size:11px}.zE6uZW_readerMain{scrollbar-width:thin;flex:1;justify-content:center;min-height:0;padding:20px 16px 48px;display:flex;overflow-y:auto}.zE6uZW_readerArticle{flex-direction:column;gap:12px;width:100%;display:flex}.zE6uZW_readerChapterTitle{letter-spacing:1px;margin:0;font-size:24px;font-weight:800}.zE6uZW_readerChapterMeta{align-items:center;gap:8px;font-size:12px;display:flex}.zE6uZW_readerText{text-align:justify;letter-spacing:.02em}.zE6uZW_readerPara{text-indent:2em;margin:0 0 .85em}.zE6uZW_readerFoot{border-top:1px dashed;justify-content:space-between;align-items:center;gap:8px;margin-top:12px;padding-top:12px;display:flex}.zE6uZW_readerLoading,.zE6uZW_readerError{opacity:.7;align-self:center;padding:32px 0;font-size:13px}.zE6uZW_readerError{color:var(--nf-error)}.zE6uZW_importModalOverlay{z-index:1000;backdrop-filter:blur(4px);background:#00000073;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.zE6uZW_importModal{border:1px solid var(--nf-border-strong);background:var(--nf-bg-raise);backdrop-filter:blur(28px)saturate(180%);width:min(520px,100%);max-height:85vh;box-shadow:var(--nf-shadow-lg);border-radius:16px;flex-direction:column;gap:12px;padding:16px;display:flex;overflow:auto}.zE6uZW_importModalHead{justify-content:space-between;align-items:center;gap:10px;display:flex}.zE6uZW_importModalTabs{gap:8px;display:flex}.zE6uZW_importModalTabs .zE6uZW_button{flex:1}.zE6uZW_importModalBody{flex-direction:column;gap:10px;display:flex}.zE6uZW_importField{color:var(--nf-text-2);flex-direction:column;gap:5px;font-size:13px;display:flex}.zE6uZW_importHint{color:var(--nf-text-3);font-size:12px;line-height:1.5}.zE6uZW_importError{border:1px solid color-mix(in srgb, var(--nf-danger,#e5484d) 55%, transparent);color:var(--nf-danger,#e5484d);background:color-mix(in srgb, var(--nf-danger,#e5484d) 10%, transparent);white-space:pre-wrap;word-break:break-all;border-radius:10px;padding:8px 10px;font-size:12.5px}.zE6uZW_importResult{border:1px solid color-mix(in srgb, var(--nf-ok,#46a758) 45%, transparent);background:color-mix(in srgb, var(--nf-ok,#46a758) 9%, transparent);word-break:break-all;border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;font-size:13px;display:flex}.zE6uZW_importModalActions{justify-content:flex-end;gap:8px;display:flex}";
945
+ const css = ".zE6uZW_entry{width:100%;color:var(--dsw-alias-label-primary,#1f1f23);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;transition:background .15s;display:flex}body[data-ds-dark-theme] .zE6uZW_entry{color:var(--dsw-alias-label-primary,#ececf1)}.zE6uZW_entry:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f)}.zE6uZW_entry[data-active]{background:var(--dsw-alias-interactive-bg-active,#7f7f7f33)}.zE6uZW_entryIcon{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.zE6uZW_entryLabel{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}[data-pane=conversation]{position:relative}.zE6uZW_view{z-index:60;color-scheme:light;--nf-font:-apple-system, BlinkMacSystemFont, \"SF Pro Display\", \"SF Pro Text\", \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei\", \"Segoe UI\", Roboto, \"Helvetica Neue\", sans-serif;--nf-font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--nf-bg:#f2f2f7db;--nf-bg-raise:#ffffffb8;--nf-bg-inset:#7676801f;--nf-border:#3c3c4329;--nf-border-strong:#3c3c4352;--nf-text:#1c1c1e;--nf-text-2:#3c3c43;--nf-text-2-alpha:#3c3c43ad;--nf-text-3:#8e8e93;--nf-accent:#00b85c;--nf-accent-hover:#00a04e;--nf-accent-soft:#00b85c1f;--nf-accent-fg:#fff;--nf-hover:#0000000d;--nf-success:#34c759;--nf-error:#ff3b30;--nf-warn:#ff9500;--nf-info:#00b85c;--nf-shadow:0 1px 3px #0000000f, 0 12px 32px #00000014;--nf-shadow-lg:0 4px 12px #00000012, 0 20px 48px #0000001f;--nf-card-shadow:0 2px 6px #0000000f, 0 14px 38px #00000024;--nf-card-shadow-hover:0 4px 10px #00000014, 0 22px 52px #0003;--nf-glass-face:linear-gradient(180deg, #f6f7f9 0%, #f0f2f5 26%, #e9ebef 52%, #e0e3e8 78%, #d6d9df 100%);--nf-glass-core:radial-gradient(30% 24% at 36% 28%, #ffffff80 0%, #ffffff38 45%, #fff0 78%);--nf-glass-sheen:#ffffff8c;--nf-glass-border:#ffffffa6;--nf-glass-inset:#ffffff8c;--nf-glass-orb-a:#00b85c2e;--nf-glass-orb-b:#78a0ff21;--nf-glass-noise:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E\");background:var(--nf-bg);backdrop-filter:blur(32px)saturate(180%);color:var(--nf-text);font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Roboto,Helvetica Neue,sans-serif;display:none;position:absolute;inset:0;overflow:auto}body[data-ds-dark-theme] .zE6uZW_view{color-scheme:dark;--nf-bg:#0a0b0ddb;--nf-bg-raise:#1c1c1ec7;--nf-bg-inset:#7676802e;--nf-border:#ffffff1f;--nf-border-strong:#ffffff47;--nf-text:#f2f2f7;--nf-text-2:#d1d1d6;--nf-text-2-alpha:#d1d1d6b8;--nf-text-3:#8e8e93;--nf-accent:#35d07a;--nf-accent-hover:#5ce695;--nf-accent-soft:#35d07a33;--nf-accent-fg:#062b18;--nf-hover:#ffffff17;--nf-success:#30d158;--nf-error:#ff453a;--nf-warn:#ff9f0a;--nf-info:#35d07a;--nf-shadow:0 1px 2px #00000059, 0 10px 30px #0006;--nf-shadow-lg:0 4px 12px #0006, 0 20px 48px #0000008c;--nf-card-shadow:0 2px 6px #00000059, 0 14px 38px #00000073;--nf-card-shadow-hover:0 4px 10px #0006, 0 22px 52px #0000008c;--nf-glass-face:linear-gradient(180deg, #70747a6b 0%, #60646a6b 26%, #52555a6b 52%, #44474c6b 78%, #383a3f6b 100%);--nf-glass-core:radial-gradient(30% 24% at 36% 28%, #ffffff42 0%, #ffffff1a 45%, #fff0 78%);--nf-glass-sheen:#ffffff42;--nf-glass-border:#ffffff24;--nf-glass-inset:#ffffff12;--nf-glass-orb-a:#00ca5247;--nf-glass-orb-b:#bec8d71a;--nf-glass-noise:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E\")}html[data-dsh-novelforge-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) .zE6uZW_view{display:block}.zE6uZW_panel[data-nf-theme=classic]{--nf-accent:#007aff;--nf-accent-hover:#0071e3;--nf-accent-soft:#007aff1f;--nf-accent-fg:#fff;--nf-info:#5856d6;--nf-glass-face:var(--nf-bg-raise);--nf-glass-core:transparent;--nf-glass-sheen:#fff0;--nf-glass-border:var(--nf-border);--nf-glass-inset:var(--nf-bg-inset);--nf-glass-orb-a:transparent;--nf-glass-orb-b:transparent;--nf-glass-noise:none}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=classic]{--nf-accent:#0a84ff;--nf-accent-hover:#3a9bff;--nf-accent-soft:#0a84ff33;--nf-accent-fg:#fff;--nf-info:#bf5af2;--nf-glass-face:var(--nf-bg-raise);--nf-glass-core:transparent;--nf-glass-sheen:#fff0;--nf-glass-border:var(--nf-border);--nf-glass-inset:var(--nf-bg-inset);--nf-glass-orb-a:transparent;--nf-glass-orb-b:transparent;--nf-glass-noise:none}body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph]{--nf-bg:#e4e9f2;--nf-bg-raise:#e4e9f2;--nf-bg-inset:#d9dfe8;--nf-border:#8c9baf59;--nf-border-strong:#78879e80;--nf-text:#3a4250;--nf-text-2:#5b6472;--nf-text-2-alpha:#465060b3;--nf-text-3:#8b94a3;--nf-hover:#5a697d14;--nf-shadow:4px 4px 10px #a3b1c68c, -4px -4px 10px #ffffffd9;--nf-shadow-lg:6px 6px 14px #a3b1c699, -6px -6px 14px #ffffffe6;--nf-card-shadow:9px 9px 18px #a3b1c68c, -9px -9px 18px #ffffffd9;--nf-card-shadow-hover:12px 12px 24px #a3b1c6a6, -12px -12px 24px #fffffff2;--nf-glass-face:#e4e9f2;--nf-glass-core:transparent;--nf-glass-sheen:#fff0;--nf-glass-border:#a3b1c666;--nf-glass-inset:#d9dfe8;--nf-glass-orb-a:transparent;--nf-glass-orb-b:transparent;--nf-glass-noise:none}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph]{--nf-bg:#2b2f36;--nf-bg-raise:#2b2f36;--nf-bg-inset:#25292f;--nf-border:#0a0c1080;--nf-border-strong:#080a0e99;--nf-text:#d6dae1;--nf-text-2:#a8aeb8;--nf-text-2-alpha:#a8aeb8b3;--nf-text-3:#757c88;--nf-hover:#ffffff0d;--nf-shadow:4px 4px 10px #00000080, -4px -4px 10px #6068763d;--nf-shadow-lg:6px 6px 14px #0000008c, -6px -6px 14px #60687642;--nf-card-shadow:9px 9px 18px #00000080, -9px -9px 18px #6068763d;--nf-card-shadow-hover:12px 12px 24px #0009, -12px -12px 24px #60687647;--nf-glass-face:#2b2f36;--nf-glass-core:transparent;--nf-glass-sheen:#fff0;--nf-glass-border:#0c0e1273;--nf-glass-inset:#25292f;--nf-glass-orb-a:transparent;--nf-glass-orb-b:transparent;--nf-glass-noise:none}body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_input,body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_textarea{background:var(--nf-bg-inset);border-color:#0000;box-shadow:inset 3px 3px 7px #a3b1c68c,inset -3px -3px 7px #ffffffe6}body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_input:focus,body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_textarea:focus{border-color:var(--nf-accent);box-shadow:inset 2px 2px 6px #a3b1c680, inset -2px -2px 6px #ffffffd9, 0 0 0 3px var(--nf-accent-soft)}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_input,body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_textarea{background:var(--nf-bg-inset);border-color:#0000;box-shadow:inset 3px 3px 7px #0000008c,inset -3px -3px 7px #6068763d}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_input:focus,body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_textarea:focus{border-color:var(--nf-accent);box-shadow:inset 2px 2px 6px #00000080, inset -2px -2px 6px #60687638, 0 0 0 3px var(--nf-accent-soft)}body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_button{background:var(--nf-bg-raise);border-color:#0000;box-shadow:5px 5px 10px #a3b1c68c,-5px -5px 10px #ffffffe6}body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_button:hover:not([disabled]){background:var(--nf-bg-raise);border-color:#0000;box-shadow:7px 7px 14px #a3b1c699,-7px -7px 14px #fffffff2}body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_button:active:not([disabled]){box-shadow:inset 3px 3px 7px #a3b1c68c,inset -3px -3px 7px #ffffffe6}body:not([data-ds-dark-theme]) .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_buttonPrimary{background:linear-gradient(#00c563,#00a952);box-shadow:5px 5px 10px #a3b1c699,-5px -5px 10px #ffffffd9}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_button{background:var(--nf-bg-raise);border-color:#0000;box-shadow:5px 5px 10px #00000080,-5px -5px 10px #6068763d}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_button:hover:not([disabled]){background:var(--nf-bg-raise);border-color:#0000;box-shadow:7px 7px 14px #0000008c,-7px -7px 14px #60687642}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_button:active:not([disabled]){box-shadow:inset 3px 3px 7px #0000008c,inset -3px -3px 7px #6068763d}body[data-ds-dark-theme] .zE6uZW_panel[data-nf-theme=neumorph] .zE6uZW_buttonPrimary{background:linear-gradient(#3ddc86,#27b96a);box-shadow:5px 5px 10px #00000080,-5px -5px 10px #6068763d}.zE6uZW_panel{flex-direction:column;min-width:0;height:100%;font-size:14px;line-height:1.6;display:flex;position:relative;overflow:hidden}.zE6uZW_panel:before{content:\"\";z-index:0;pointer-events:none;background:radial-gradient(46% 36% at 18% 12%, var(--nf-glass-orb-a), transparent 70%), radial-gradient(52% 42% at 88% 22%, var(--nf-glass-orb-b), transparent 72%), radial-gradient(120% 95% at 50% 42%, transparent 55%, #0202031a 100%);position:absolute;inset:0}.zE6uZW_panelTitle{letter-spacing:.2px;align-items:center;gap:8px;margin:0;font-size:16px;font-weight:700;display:flex}.zE6uZW_panelTitle:before{content:\"\";background:linear-gradient(180deg, var(--nf-accent), var(--nf-info));border-radius:2px;width:4px;height:16px}.zE6uZW_iconButton{cursor:pointer;color:var(--nf-text-2);background:0 0;border:none;border-radius:8px;padding:4px 9px;font-size:16px;transition:background .15s,color .15s}.zE6uZW_iconButton:hover{background:var(--nf-hover);color:var(--nf-text)}.zE6uZW_tabBar{border-bottom:1px solid var(--nf-border);background:var(--nf-bg-raise);z-index:4;flex-shrink:0;gap:2px;padding:8px 14px 0;display:flex;position:sticky;top:45px}.zE6uZW_tab{cursor:pointer;color:var(--nf-text-2);background:0 0;border:none;border-radius:8px 8px 0 0;padding:7px 13px;font-size:13.5px;font-weight:500;transition:color .15s,background .15s;position:relative}.zE6uZW_tab:hover{color:var(--nf-text);background:var(--nf-hover)}.zE6uZW_tab[data-active]{color:var(--nf-accent);font-weight:600}.zE6uZW_tab[data-active]:after{content:\"\";background:var(--nf-accent);border-radius:2px 2px 0 0;height:2.5px;position:absolute;bottom:-1px;left:10px;right:10px}.zE6uZW_panelContent{z-index:1;flex-direction:column;flex:1;gap:14px;padding:16px 18px 20px;display:flex;position:relative;overflow:auto}.zE6uZW_panelBody{z-index:1;flex:1;min-height:0;display:flex;position:relative}.zE6uZW_panelNav{border:1px solid var(--nf-glass-border);background:var(--nf-glass-face);width:200px;box-shadow:var(--nf-shadow), inset 0 1px 0 var(--nf-glass-sheen);backdrop-filter:blur(28px)saturate(175%);border-radius:18px;flex-direction:column;flex:none;align-self:stretch;gap:4px;margin:10px 0 10px 12px;padding:14px 10px 12px;transition:width .18s;display:flex;overflow-y:auto}.zE6uZW_panelNavCollapsed{width:52px;padding:10px 6px}.zE6uZW_navGroup{flex-direction:column;gap:4px;display:flex}.zE6uZW_navGroupLabel{letter-spacing:.6px;text-transform:uppercase;color:var(--nf-text-3);user-select:none;padding:10px 10px 4px;font-size:10.5px;font-weight:600}.zE6uZW_navGroupSep{background:var(--nf-border);height:1px;margin:6px 8px 4px}.zE6uZW_navSpacer{flex:1;min-height:8px}.zE6uZW_navAbout{border-top:1px solid var(--nf-border);flex-direction:column;flex:none;gap:4px;margin-top:4px;padding:8px 6px 4px;display:flex}.zE6uZW_navAboutRow{cursor:pointer;color:var(--nf-text-3);text-align:left;white-space:nowrap;background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;gap:4px;padding:4px 6px;font-size:11px;transition:color .15s,background .15s;display:flex}.zE6uZW_navAboutRow:hover{color:var(--nf-text);background:var(--nf-hover)}.zE6uZW_navAboutUpdate{background:var(--nf-accent-soft);color:var(--nf-accent);cursor:pointer;text-align:left;white-space:nowrap;border:none;border-radius:8px;padding:4px 6px;font-size:10.5px;font-weight:600}.zE6uZW_navAboutUpdate:hover{color:var(--nf-accent-hover)}.zE6uZW_panelNavCollapsed .zE6uZW_navAbout{align-items:center;padding:6px 2px 2px}.zE6uZW_panelNavCollapsed .zE6uZW_navAboutRow{justify-content:center;width:100%;padding:4px 0}.zE6uZW_navTabBadge{background:var(--nf-accent);color:#fff;text-align:center;border-radius:999px;flex:none;min-width:18px;height:18px;margin-left:auto;padding:0 5px;font-size:10.5px;font-weight:700;line-height:18px;display:inline-block}.zE6uZW_panelNavCollapsed .zE6uZW_navTabBadge{min-width:14px;height:14px;padding:0 3px;font-size:9px;line-height:14px;position:absolute;top:2px;right:2px}.zE6uZW_navTabBadgeDanger{background:var(--nf-error)}.zE6uZW_navTabBadgeWarn{background:var(--nf-warn)}.zE6uZW_navTabBadgeDone{background:var(--nf-success)}.zE6uZW_navTabBadgeLive{background:var(--nf-success);animation:1.2s ease-in-out infinite zE6uZW_navBadgePulse}@keyframes zE6uZW_navBadgePulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}.zE6uZW_navTab{cursor:pointer;width:100%;color:var(--nf-text-2-alpha,var(--nf-text-2));text-align:left;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:8px;padding:9px 10px;font-size:13px;font-weight:500;transition:color .15s,background .15s,border-color .15s,box-shadow .15s;display:flex;position:relative}.zE6uZW_panelNavCollapsed .zE6uZW_navTab{justify-content:center;padding:8px 0}.zE6uZW_navTab:hover{color:var(--nf-text);background:var(--nf-hover)}.zE6uZW_navTab[data-active]{color:var(--nf-accent);background:color-mix(in srgb, var(--nf-text) 8%, transparent);border-color:color-mix(in srgb, var(--nf-text) 16%, transparent);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--nf-text) 6%, transparent);font-weight:600}.zE6uZW_navTab[data-active] .zE6uZW_navTabIcon{color:var(--nf-accent)}.zE6uZW_navTabIcon{text-align:center;flex:none;width:20px;font-size:16px;line-height:1}.zE6uZW_navTabLabel{text-overflow:ellipsis;overflow:hidden}.zE6uZW_navTitle{border-bottom:1px solid var(--nf-border);flex:none;align-items:center;gap:10px;min-width:0;margin-bottom:6px;padding:2px 6px 12px;display:flex}.zE6uZW_navTitleLogo{background:linear-gradient(145deg, var(--nf-accent), var(--nf-accent-hover));width:34px;height:34px;color:var(--nf-accent-fg);box-shadow:0 6px 16px var(--nf-accent-soft);border-radius:10px;flex:none;justify-content:center;align-items:center;font-size:15px;font-weight:800;display:flex}.zE6uZW_navTitleName{letter-spacing:.2px;white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:700;overflow:hidden}.zE6uZW_navTitleBook{color:var(--nf-text-3);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.zE6uZW_panelNavCollapsed .zE6uZW_navTitle{justify-content:center;padding:2px 0 10px}.zE6uZW_panelNavCollapsed .zE6uZW_navTitleLogo{width:32px;height:32px}.zE6uZW_navActions{border-top:1px solid var(--nf-border);flex:none;gap:6px;margin-top:8px;padding-top:8px;display:flex}.zE6uZW_navActionBtn{border:1px solid var(--nf-border);color:var(--nf-text-2);cursor:pointer;background:0 0;border-radius:10px;flex:1;justify-content:center;align-items:center;height:32px;font-size:14px;line-height:1;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.zE6uZW_navActionBtn:hover{background:var(--nf-hover);color:var(--nf-text);border-color:var(--nf-border-strong)}.zE6uZW_panelNavCollapsed .zE6uZW_navActions{flex-direction:column;align-items:stretch}.zE6uZW_bookSwitch{background:var(--nf-bg-inset);border:1px solid var(--nf-border);cursor:pointer;text-align:left;font:inherit;color:var(--nf-text);border-radius:12px;flex:none;align-items:center;gap:8px;min-width:0;margin-top:4px;padding:9px;transition:background .15s,border-color .15s;display:flex}.zE6uZW_bookSwitch:hover{background:var(--nf-hover);border-color:var(--nf-border-strong)}.zE6uZW_bookSwitchCover{background:linear-gradient(160deg, var(--nf-accent), color-mix(in srgb, var(--nf-accent) 45%, #000));width:26px;height:34px;color:var(--nf-accent-fg);border-radius:5px;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex}.zE6uZW_bookSwitchName{text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:600;overflow:hidden}.zE6uZW_bookSwitchMeta{color:var(--nf-text-3);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.zE6uZW_bookSwitchArrow{color:var(--nf-text-3);flex:none;margin-left:auto;font-size:12px}.zE6uZW_statRowD{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;display:grid}.zE6uZW_statCardD{background:var(--nf-bg-inset);border:1px solid var(--nf-border);border-radius:16px;justify-content:space-between;align-items:flex-start;gap:10px;min-width:0;padding:14px 16px;display:flex}.zE6uZW_statCardDLabel{color:var(--nf-text-3);font-size:12px}.zE6uZW_statCardDValue{color:var(--nf-text);margin-top:2px;font-size:22px;font-weight:700}.zE6uZW_statCardDUnit{color:var(--nf-text-3);font-size:12px;font-weight:400}.zE6uZW_statCardDDetail{color:var(--nf-text-3);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:11.5px;overflow:hidden}.zE6uZW_statCardDDown{color:var(--nf-error)}.zE6uZW_statCardDIcon{background:var(--nf-accent-soft);border-radius:12px;flex:none;justify-content:center;align-items:center;width:38px;height:38px;font-size:18px;display:flex}.zE6uZW_statCardDIconRed{background:color-mix(in srgb, var(--nf-error) 13%, transparent)}.zE6uZW_tlBar{gap:6px;margin-top:8px;display:flex}.zE6uZW_tlSeg{cursor:pointer;min-width:0;font:inherit;background:0 0;border:none;flex-direction:column;flex:1;gap:4px;padding:0;display:flex}.zE6uZW_tlSegTrack{background:var(--nf-hover);border:1px solid var(--nf-border);border-radius:999px;height:8px;overflow:hidden}.zE6uZW_tlSegFill{background:var(--nf-accent);border-radius:999px;width:100%;height:100%;display:block}.zE6uZW_tlSegTodo .zE6uZW_tlSegFill{opacity:0}.zE6uZW_tlSegTodo .zE6uZW_tlSegTrack{background:0 0}.zE6uZW_tlSegCurrent .zE6uZW_tlSegTrack{border-color:var(--nf-accent);box-shadow:0 0 0 2px var(--nf-accent-soft)}.zE6uZW_tlSegCurrent .zE6uZW_tlSegFill{opacity:.45}.zE6uZW_tlSegLabel{color:var(--nf-text-3);text-align:center;white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;overflow:hidden}.zE6uZW_tlSegDone .zE6uZW_tlSegLabel{color:var(--nf-accent);font-weight:600}.zE6uZW_tlSeg:hover .zE6uZW_tlSegTrack{border-color:var(--nf-border-strong)}.zE6uZW_card{border:1px solid var(--nf-glass-border);background:var(--nf-glass-face);box-shadow:var(--nf-card-shadow), inset 0 1.5px 0 var(--nf-glass-sheen), inset 0 -1px 0 #ffffff40;backdrop-filter:blur(30px)saturate(180%);border-radius:22px;flex-direction:column;gap:10px;padding:16px 18px;transition:transform .22s,box-shadow .22s;display:flex;position:relative}.zE6uZW_card:before{content:\"\";border-radius:inherit;pointer-events:none;background:var(--nf-glass-core), linear-gradient(90deg, transparent, var(--nf-glass-sheen), transparent) no-repeat 10% 0 / 80% 1px, linear-gradient(156deg, #ffffff42 0%, #fff0 55%);z-index:0;position:absolute;inset:0}.zE6uZW_card:after{content:\"\";border-radius:inherit;pointer-events:none;background:var(--nf-glass-noise);opacity:.06;z-index:0;position:absolute;inset:0}.zE6uZW_card:hover{box-shadow:var(--nf-card-shadow-hover), inset 0 1.5px 0 var(--nf-glass-sheen), inset 0 -1px 0 #ffffff40;transform:translateY(-3px)}.zE6uZW_card>*{z-index:1;position:relative}.zE6uZW_cardTitle{color:var(--nf-text);align-items:center;gap:8px;margin:0;font-size:14px;font-weight:650;display:flex}.zE6uZW_button{border:1px solid var(--nf-border-strong);background:var(--nf-bg-inset);color:var(--nf-text);cursor:pointer;white-space:nowrap;border-radius:12px;padding:6px 14px;font-size:13px;font-weight:500;transition:background .15s,border-color .15s,transform .1s,box-shadow .15s}.zE6uZW_button:hover:not([disabled]){background:var(--nf-hover);border-color:var(--nf-border-strong)}.zE6uZW_button:active:not([disabled]){transform:scale(.96)}.zE6uZW_button[disabled]{opacity:.45;cursor:not-allowed}.zE6uZW_buttonPrimary{background:linear-gradient(180deg, color-mix(in srgb, var(--nf-accent) 88%, #fff), var(--nf-accent));color:var(--nf-accent-fg);box-shadow:0 2px 10px color-mix(in srgb, var(--nf-accent) 45%, transparent), 0 0 0 .5px color-mix(in srgb, var(--nf-accent) 30%, transparent);border-color:#0000}.zE6uZW_buttonPrimary:hover:not([disabled]){background:linear-gradient(180deg, var(--nf-accent-hover), color-mix(in srgb, var(--nf-accent-hover) 85%, #000));border-color:#0000}.zE6uZW_buttonDanger{border-color:var(--nf-error);color:var(--nf-error)}.zE6uZW_buttonDanger:hover:not([disabled]){background:#ff3b301a}.zE6uZW_buttonSmall{border-radius:9px;padding:3px 10px;font-size:12px}.zE6uZW_field{flex-direction:column;gap:5px;display:flex}.zE6uZW_fieldLabel{color:var(--nf-text-2);font-size:12px;font-weight:500}.zE6uZW_input{border:1px solid var(--nf-border-strong);background:var(--nf-bg-inset);color:var(--nf-text);box-sizing:border-box;border-radius:12px;width:100%;padding:7px 11px;font-size:13px;transition:border-color .15s,box-shadow .15s}.zE6uZW_input:focus,.zE6uZW_textarea:focus{border-color:var(--nf-accent);box-shadow:0 0 0 3px var(--nf-accent-soft);outline:none}.zE6uZW_input::placeholder,.zE6uZW_textarea::placeholder{color:var(--nf-text-3)}.zE6uZW_textarea{border:1px solid var(--nf-border-strong);background:var(--nf-bg-inset);color:var(--nf-text);box-sizing:border-box;resize:vertical;border-radius:12px;width:100%;min-height:200px;padding:9px 11px;font-family:inherit;font-size:13px;line-height:1.7;transition:border-color .15s,box-shadow .15s}.zE6uZW_row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.zE6uZW_spaceBetween{justify-content:space-between}.zE6uZW_chapterList{flex-direction:column;gap:8px;display:flex}.zE6uZW_volumeGroup{flex-direction:column;gap:6px;display:flex}.zE6uZW_volumeGroupHeader{background:var(--nf-bg-inset);border:1px solid var(--nf-border);cursor:pointer;user-select:none;border-radius:10px;align-items:center;gap:8px;padding:6px 10px;font-size:13px;transition:border-color .15s;display:flex}.zE6uZW_volumeGroupHeader:hover{border-color:var(--nf-accent)}.zE6uZW_volumeGroupToggle{color:var(--nf-text-2);flex:none;font-size:11px}.zE6uZW_chapter{border:1px solid var(--nf-border);background:var(--nf-bg);border-radius:10px;align-items:center;gap:10px;padding:9px 12px;transition:border-color .15s,box-shadow .15s,transform .1s;display:flex}.zE6uZW_chapter:hover{border-color:var(--nf-border-strong);box-shadow:var(--nf-shadow)}.zE6uZW_chapterFocus{animation:.9s ease-in-out 3 zE6uZW_chapterFocusPulse;border-color:var(--nf-accent)!important;box-shadow:0 0 0 3px color-mix(in srgb, var(--nf-accent) 35%, transparent)!important}@keyframes zE6uZW_chapterFocusPulse{0%,to{background:var(--nf-bg)}50%{background:color-mix(in srgb, var(--nf-accent) 18%, var(--nf-bg))}}.zE6uZW_chapterNum{background:var(--nf-bg-inset);border:1px solid var(--nf-border);min-width:28px;height:28px;color:var(--nf-text-2);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:0 8px;font-size:12px;font-weight:700;display:inline-flex}.zE6uZW_chapterMain{flex:1;min-width:0}.zE6uZW_chapterTitle{color:var(--nf-text);align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.zE6uZW_chapterBeats{color:var(--nf-text-2);opacity:.85;text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.zE6uZW_chapterActions{opacity:.85;flex-shrink:0;gap:4px;transition:opacity .15s;display:flex}.zE6uZW_chapter:hover .zE6uZW_chapterActions{opacity:1}.zE6uZW_badge{white-space:nowrap;letter-spacing:.2px;border:1px solid;border-radius:999px;padding:2px 9px;font-size:11px;font-weight:600}.zE6uZW_badgePending{color:var(--nf-info);border-color:var(--nf-info);background:color-mix(in srgb, var(--nf-info) 10%, transparent)}.zE6uZW_badgeGenerating{color:var(--nf-accent);border-color:var(--nf-accent);background:color-mix(in srgb, var(--nf-accent) 12%, transparent);animation:1.2s ease-in-out infinite zE6uZW_pulse}.zE6uZW_badgeWritten{color:var(--nf-warn);border-color:var(--nf-warn);background:color-mix(in srgb, var(--nf-warn) 10%, transparent)}.zE6uZW_badgeRejected{color:var(--nf-error);border-color:var(--nf-error);background:color-mix(in srgb, var(--nf-error) 10%, transparent)}.zE6uZW_badgeDone{color:var(--nf-success);border-color:var(--nf-success);background:color-mix(in srgb, var(--nf-success) 10%, transparent)}.zE6uZW_badgeError{color:var(--nf-error);border-color:var(--nf-error);background:color-mix(in srgb, var(--nf-error) 10%, transparent)}.zE6uZW_reviewBox{border:1px solid var(--nf-border);background:var(--nf-bg-inset);border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;font-size:12.5px;display:flex}.zE6uZW_chapterPreview{white-space:pre-wrap;word-break:break-all;max-height:320px;color:var(--nf-text);background:var(--nf-bg-inset);border:1px solid var(--nf-border);border-radius:10px;margin:0;padding:10px 12px;font-family:inherit;font-size:12.5px;line-height:1.8;overflow:auto}.zE6uZW_chatScroll{border:1px solid var(--nf-border);background:var(--nf-bg-inset);border-radius:12px;flex-direction:column;flex:1;gap:10px;min-height:240px;max-height:480px;padding:14px;display:flex;overflow-y:auto}.zE6uZW_chatBubbleUser{background:linear-gradient(180deg, var(--nf-accent), var(--nf-accent-hover));max-width:90%;color:var(--nf-accent-fg);border-radius:14px 14px 4px;align-self:flex-end;padding:9px 14px;font-size:13px;box-shadow:0 2px 6px #4d6bfe33}.zE6uZW_chatBubbleAssistant{background:var(--nf-bg-raise);max-width:92%;color:var(--nf-text);border:1px solid var(--nf-border);box-shadow:var(--nf-shadow);border-radius:14px 14px 14px 4px;align-self:flex-start;padding:9px 14px;font-size:13px}.zE6uZW_chatRole{color:var(--nf-text-3);margin-bottom:3px;font-size:11px;font-weight:600}.zE6uZW_toolLive{background:var(--nf-bg-inset);border:1px dashed var(--nf-border-strong);white-space:pre-wrap;word-break:break-all;color:var(--nf-text-2);border-radius:8px;max-height:180px;margin-top:6px;padding:8px 10px;font-size:12px;line-height:1.7;overflow-y:auto}.zE6uZW_assistantStatus{color:var(--nf-text-2);background:var(--nf-bg-inset);border:1px solid var(--nf-border);border-radius:999px;flex:none;align-items:center;gap:6px;margin-top:6px;padding:6px 12px;font-size:12px;display:flex}.zE6uZW_assistantStatusBusy{color:var(--nf-accent);border-color:var(--nf-accent);background:var(--nf-accent-soft);font-weight:600}.zE6uZW_toolSteps{flex-direction:column;gap:4px;margin-top:6px;display:flex}.zE6uZW_toolStep{background:var(--nf-bg-inset);border:1px solid var(--nf-border);border-radius:8px;align-items:center;gap:8px;padding:5px 10px;font-size:12px;display:flex}.zE6uZW_toolStepActive{border-color:var(--nf-accent);background:var(--nf-accent-soft)}.zE6uZW_toolStepError{border-color:var(--nf-error);background:color-mix(in srgb, var(--nf-error) 8%, transparent)}.zE6uZW_toolStepIcon{flex:none;font-size:13px}.zE6uZW_toolStepName{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.zE6uZW_toolStepStatus{color:var(--nf-text-2);flex:none;font-size:11px}.zE6uZW_toolStepActive .zE6uZW_toolStepStatus{color:var(--nf-accent)}.zE6uZW_toolStepError .zE6uZW_toolStepStatus{color:var(--nf-error)}.zE6uZW_toolStepDetail{width:100%;color:var(--nf-error);word-break:break-all;font-size:11px}.zE6uZW_progress{border:1px solid var(--nf-border);white-space:pre-wrap;word-break:break-all;min-height:60px;max-height:220px;color:var(--nf-text-2);font-size:12px;font-family:var(--nf-font-mono);background:var(--nf-bg-inset);border-radius:10px;padding:10px 14px;line-height:1.8;overflow:auto}.zE6uZW_progressLine{color:var(--nf-text-2);opacity:.9}.zE6uZW_progressLineLive{color:var(--nf-accent);align-items:center;gap:8px;font-weight:600;display:flex}.zE6uZW_progressBar{background:var(--nf-border);border-radius:999px;flex:none;width:110px;height:6px;display:inline-block;overflow:hidden}.zE6uZW_progressBarFill{background:var(--nf-accent);border-radius:3px;height:100%;transition:width .3s;display:block}.zE6uZW_busyRow{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.zE6uZW_liveText{font-variant-numeric:tabular-nums;color:var(--nf-text-2);font-size:12px}.zE6uZW_bigProgressBar{background:var(--nf-border);border-radius:999px;height:8px;margin-top:10px;overflow:hidden}.zE6uZW_bigProgressBarFill{background:linear-gradient(90deg, var(--nf-accent), var(--nf-accent-2,var(--nf-accent)));border-radius:999px;height:100%;transition:width .3s;display:block}.zE6uZW_diffLegend{flex-wrap:wrap;align-items:center;gap:14px;margin:6px 0 8px;font-size:12px;display:flex}.zE6uZW_legendOld{color:var(--nf-error);font-weight:700}.zE6uZW_legendNew{color:var(--nf-success);font-weight:700}.zE6uZW_onlyChanges{color:var(--nf-text-2);cursor:pointer;align-items:center;gap:4px;margin-left:auto;display:inline-flex}.zE6uZW_diffList{border:1px solid var(--nf-border);background:var(--nf-bg-inset);border-radius:8px;flex-direction:column;flex:1;gap:8px;min-height:0;padding:10px 12px;font-size:13px;line-height:1.7;display:flex;overflow-y:auto}.zE6uZW_diffSame{border:1px dashed var(--nf-border);color:var(--nf-text-2);opacity:.85;border-radius:6px;padding:6px 10px}.zE6uZW_diffSame summary{cursor:pointer;user-select:none;font-size:12px}.zE6uZW_diffSameBody{white-space:pre-wrap;margin-top:6px}.zE6uZW_diffChange{border:1px solid var(--nf-border);border-radius:8px;grid-template-columns:1fr 1fr;display:grid;overflow:hidden}.zE6uZW_diffColumn{flex-direction:column;gap:6px;min-width:0;padding:8px 10px;display:flex}.zE6uZW_diffColumn:first-child{border-right:1px solid var(--nf-border)}.zE6uZW_diffTagOld,.zE6uZW_diffTagNew{letter-spacing:.5px;border-radius:4px;flex:none;align-self:flex-start;padding:1px 7px;font-size:11px;font-weight:700}.zE6uZW_diffTagOld{color:var(--nf-error);background:color-mix(in srgb, var(--nf-error) 16%, transparent);border:1px solid color-mix(in srgb, var(--nf-error) 45%, transparent)}.zE6uZW_diffTagNew{color:var(--nf-success);background:color-mix(in srgb, var(--nf-success) 16%, transparent);border:1px solid color-mix(in srgb, var(--nf-success) 45%, transparent)}.zE6uZW_diffOld{color:var(--nf-error);white-space:pre-wrap;text-decoration:line-through;text-decoration-color:color-mix(in srgb, var(--nf-error) 55%, transparent)}.zE6uZW_diffNew{color:var(--nf-success);white-space:pre-wrap;font-weight:500}.zE6uZW_diffDel{border:1px solid color-mix(in srgb, var(--nf-error) 35%, transparent);background:color-mix(in srgb, var(--nf-error) 7%, transparent);border-radius:6px;flex-direction:column;gap:4px;padding:6px 10px;display:flex}.zE6uZW_diffAdd{border:1px solid color-mix(in srgb, var(--nf-success) 35%, transparent);background:color-mix(in srgb, var(--nf-success) 7%, transparent);border-radius:6px;flex-direction:column;gap:4px;padding:6px 10px;display:flex}.zE6uZW_diffText{white-space:pre-wrap}.zE6uZW_diffDel .zE6uZW_diffText{color:var(--nf-error);text-decoration:line-through;text-decoration-color:color-mix(in srgb, var(--nf-error) 50%, transparent)}.zE6uZW_diffAdd .zE6uZW_diffText{color:var(--nf-success)}.zE6uZW_wsPage{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex}.zE6uZW_wsPageHeader{flex-wrap:wrap;flex:none;align-items:center;gap:8px;display:flex}.zE6uZW_wsAppliedBanner{border:1px solid var(--nf-success);background:color-mix(in srgb, var(--nf-success) 8%, transparent);border-radius:10px;flex-wrap:wrap;flex:none;align-items:center;gap:8px;padding:8px 12px;font-size:12px;font-weight:600;display:flex}.zE6uZW_wsColumns{flex:1;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;min-height:0;display:grid}.zE6uZW_wsColumn{flex-direction:column;gap:8px;min-width:0;min-height:0;display:flex}.zE6uZW_wsEditor{resize:vertical;min-height:0;font-family:var(--nf-font);white-space:pre-wrap;flex:1;font-size:13px;line-height:1.75}.zE6uZW_wsSelected{border:1px solid var(--nf-accent);background:color-mix(in srgb, var(--nf-accent) 8%, transparent);border-radius:6px;max-height:120px;padding:6px 10px;overflow:auto}.zE6uZW_wsSelectedText{color:var(--nf-text-2);white-space:pre-wrap;margin-top:4px;font-size:12px}.zE6uZW_wsPreview{border:1px solid var(--nf-border);background:var(--nf-bg-inset);border-radius:8px;flex-direction:column;gap:8px;padding:8px 10px;display:flex}.zE6uZW_wsPreviewText{white-space:pre-wrap;min-height:0;color:var(--nf-text);flex:1;margin:0;font-size:13px;line-height:1.7;overflow:auto}.zE6uZW_assetGrid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.zE6uZW_assetStat{border:1px solid var(--nf-glass-border);background:var(--nf-glass-face);box-shadow:var(--nf-card-shadow), inset 0 1px 0 var(--nf-glass-sheen);backdrop-filter:blur(30px)saturate(180%);border-radius:14px;flex-direction:column;gap:4px;padding:10px 12px;transition:transform .22s,box-shadow .22s;display:flex}.zE6uZW_assetStat:hover{box-shadow:var(--nf-card-shadow-hover), inset 0 1px 0 var(--nf-glass-sheen);transform:translateY(-3px)}.zE6uZW_assetStatLabel{color:var(--nf-text-2);opacity:.9;font-size:11px}.zE6uZW_assetStatValue{color:var(--nf-text);font-size:15px;font-weight:700;line-height:1.2}.zE6uZW_assetStatDetail{color:var(--nf-text-2);opacity:.85;text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.zE6uZW_dashHero{border:1px solid var(--nf-glass-border);background:var(--nf-glass-face);box-shadow:var(--nf-card-shadow), inset 0 1.5px 0 var(--nf-glass-sheen), inset 0 -1px 0 #ffffff40;backdrop-filter:blur(30px)saturate(180%);border-radius:22px;flex-direction:column;gap:14px;padding:18px 20px;transition:transform .22s,box-shadow .22s;display:flex;position:relative}.zE6uZW_dashHero:before{content:\"\";border-radius:inherit;pointer-events:none;background:radial-gradient(46% 40% at 92% -10%, color-mix(in srgb, var(--nf-accent) 13%, transparent), transparent 62%), var(--nf-glass-core), linear-gradient(90deg, transparent, var(--nf-glass-sheen), transparent) no-repeat 10% 0 / 80% 1px, linear-gradient(156deg, #ffffff42 0%, #fff0 55%);z-index:0;position:absolute;inset:0}.zE6uZW_dashHero:after{content:\"\";border-radius:inherit;pointer-events:none;background:var(--nf-glass-noise);opacity:.06;z-index:0;position:absolute;inset:0}.zE6uZW_dashHero:hover{box-shadow:var(--nf-card-shadow-hover), inset 0 1.5px 0 var(--nf-glass-sheen), inset 0 -1px 0 #ffffff40;transform:translateY(-3px)}.zE6uZW_dashHero>*{z-index:1;position:relative}.zE6uZW_dashHeroEyebrow{color:var(--nf-accent);align-items:center;gap:6px;font-size:13px;font-weight:600;display:inline-flex}.zE6uZW_dashHeroSparkle{font-size:14px}.zE6uZW_dashHeroTitle{flex-direction:column;gap:2px;display:flex}.zE6uZW_dashHeroBook{letter-spacing:-.3px;margin:0;font-size:24px;font-weight:700;line-height:1.25}.zE6uZW_dashHeroAction{border:1px solid var(--nf-glass-border);background:var(--nf-glass-inset);box-shadow:inset 0 1px 0 var(--nf-glass-sheen);border-radius:14px;align-items:center;gap:12px;padding:10px 14px;display:flex}.zE6uZW_dashHeroArrow{background:var(--nf-accent);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;display:inline-flex}.zE6uZW_dashHeroActionBody{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.zE6uZW_dashHeroActionTitle{font-size:14px;font-weight:600}.zE6uZW_dashJourney{flex-direction:column;gap:6px;display:flex}.zE6uZW_dashJourneyBar{background:var(--nf-border);border-radius:999px;height:6px;overflow:hidden}.zE6uZW_dashJourneyFill{background:linear-gradient(90deg, var(--nf-info), var(--nf-accent));border-radius:999px;height:100%;transition:width .4s;display:block}.zE6uZW_dashJourneyStages{grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;display:grid}.zE6uZW_dashStage{color:var(--nf-text-3);text-align:center;white-space:nowrap;flex-direction:column;align-items:center;gap:3px;font-size:11px;display:flex}.zE6uZW_dashStageDot{border:1px solid var(--nf-border-strong,var(--nf-text-3));background:var(--nf-bg-base);border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:10px;display:inline-flex}.zE6uZW_dashStageDone{color:var(--nf-text-2)}.zE6uZW_dashStageDone .zE6uZW_dashStageDot{background:var(--nf-success);border-color:var(--nf-success);color:#fff}.zE6uZW_dashStageCurrent{color:var(--nf-accent);font-weight:600}.zE6uZW_dashStageCurrent .zE6uZW_dashStageDot{border-color:var(--nf-accent);color:var(--nf-accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--nf-accent) 18%, transparent)}.zE6uZW_dashFacts{border-top:1px solid var(--nf-border);grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding-top:12px;display:grid}.zE6uZW_dashFact{flex-direction:column;gap:2px;min-width:0;display:flex}.zE6uZW_dashFact b{white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.zE6uZW_dashGrid{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start;gap:14px;display:grid}.zE6uZW_todoItem{border:1px solid var(--nf-border);border-radius:8px;align-items:center;gap:10px;padding:8px 12px;font-size:12.5px;display:flex}.zE6uZW_todoDanger{border-color:color-mix(in srgb, var(--nf-error) 40%, transparent);background:color-mix(in srgb, var(--nf-error) 8%, transparent)}.zE6uZW_todoWarning{border-color:color-mix(in srgb, var(--nf-warn) 40%, transparent);background:color-mix(in srgb, var(--nf-warn) 8%, transparent)}.zE6uZW_todoInfo{border-color:color-mix(in srgb, var(--nf-info) 40%, transparent);background:color-mix(in srgb, var(--nf-info) 7%, transparent)}.zE6uZW_todoText{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.zE6uZW_outlineReadonly{border:1px solid var(--nf-border);background:var(--nf-bg-inset);white-space:pre-wrap;user-select:text;border-radius:12px;max-height:480px;margin:0;padding:12px 14px;font-size:12.5px;line-height:1.8;overflow:auto}.zE6uZW_bookCreateOutline{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.zE6uZW_assistantFloat{z-index:80;border:1px solid var(--nf-border);background:var(--nf-bg-raise);backdrop-filter:blur(24px)saturate(180%);box-shadow:var(--nf-shadow-lg);border-radius:16px;flex-direction:column;min-width:320px;min-height:220px;display:flex;position:absolute;overflow:hidden}.zE6uZW_assistantFloatHeader{cursor:grab;user-select:none;border-bottom:1px solid var(--nf-border);background:var(--nf-bg-inset);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px 8px 14px;font-size:13px;font-weight:600;display:flex}.zE6uZW_assistantFloatHeader:active{cursor:grabbing}.zE6uZW_assistantFloatBody{flex:1;min-height:0;padding:10px;display:flex;overflow:hidden}.zE6uZW_assistantFloatBody>*{flex:1;min-width:0}.zE6uZW_assistantResize{cursor:nwse-resize;background:linear-gradient(135deg, transparent 0 55%, var(--nf-border-strong) 55% 62%, transparent 62%) no-repeat 4px 4px / 12px 12px;width:20px;height:20px;position:absolute;bottom:0;right:0}.zE6uZW_coverPreview{border:1px solid var(--nf-border);background:var(--nf-bg-inset);border-radius:12px;flex:none;justify-content:center;align-items:center;width:150px;height:200px;display:flex;overflow:hidden}.zE6uZW_coverPreview img{object-fit:contain;width:100%;height:100%;display:block}.zE6uZW_coverPlaceholder{color:var(--nf-text-3);font-size:12px}.zE6uZW_shelfView{flex-direction:column;flex:1;gap:16px;min-height:0;padding:18px;display:flex;overflow:auto}.zE6uZW_shelfHeader{flex-direction:column;gap:10px;display:flex}.zE6uZW_shelfTitleRow{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.zE6uZW_shelfToolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.zE6uZW_shelfSearch{flex:1;min-width:180px;max-width:320px}.zE6uZW_shelfFilters{flex-wrap:wrap;gap:6px;display:flex}.zE6uZW_shelfEmpty{border:1px dashed var(--nf-border-strong);background:var(--nf-bg-raise);backdrop-filter:blur(24px)saturate(180%);text-align:center;border-radius:16px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;padding:40px 20px;display:flex}.zE6uZW_shelfEmptyIcon{font-size:42px}.zE6uZW_shelfEmptyTitle{font-size:16px;font-weight:700}.zE6uZW_shelfGrid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));align-content:start;gap:14px;display:grid}.zE6uZW_bookCard{border:1px solid var(--nf-border);background:var(--nf-bg-raise);backdrop-filter:blur(24px)saturate(180%);box-shadow:var(--nf-shadow);cursor:pointer;border-radius:16px;flex-direction:column;gap:8px;padding:12px;transition:border-color .15s,transform .1s,box-shadow .15s;display:flex}.zE6uZW_bookCard:hover{border-color:var(--nf-accent);box-shadow:var(--nf-shadow-lg);transform:translateY(-2px)}.zE6uZW_bookCardActive{border-color:var(--nf-accent);box-shadow:0 0 0 3px var(--nf-accent-soft)}.zE6uZW_bookCardCover{aspect-ratio:3/4;background:var(--nf-bg-inset);border:1px solid var(--nf-border);border-radius:12px;flex:none;justify-content:center;align-items:center;display:flex;overflow:hidden}.zE6uZW_bookCardCover img{object-fit:contain;width:100%;height:100%;display:block}.zE6uZW_bookCardCoverFallback{background:radial-gradient(400px 200px at 80% -20%, color-mix(in srgb, var(--nf-accent) 25%, transparent), transparent 70%), linear-gradient(155deg, var(--nf-bg-inset), color-mix(in srgb, var(--nf-accent) 10%, var(--nf-bg-inset)));flex-direction:column;justify-content:center;align-items:center;gap:6px;width:100%;height:100%;display:flex}.zE6uZW_bookCardCoverTitle{color:var(--nf-accent);letter-spacing:2px;font-size:22px;font-weight:800}.zE6uZW_bookCardBody{flex-direction:column;gap:5px;min-width:0;display:flex}.zE6uZW_bookCardTitleRow{justify-content:space-between;align-items:center;gap:6px;display:flex}.zE6uZW_bookCardName{text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:700;overflow:hidden}.zE6uZW_bookCardBlurb{-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:34px;display:-webkit-box;overflow:hidden}.zE6uZW_bookCardMetaRow{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;display:flex}.zE6uZW_bookCardProgressBar{background:var(--nf-border);border-radius:999px;height:5px;overflow:hidden}.zE6uZW_bookCardProgressFill{background:linear-gradient(90deg, var(--nf-info), var(--nf-accent));border-radius:999px;height:100%;transition:width .3s;display:block}.zE6uZW_bookAddCard{text-align:center;color:var(--nf-text-2);border-style:dashed;justify-content:center;align-items:center;gap:8px;min-height:260px}.zE6uZW_bookAddCard:hover{color:var(--nf-accent)}.zE6uZW_bookAddIcon{color:var(--nf-accent);font-size:34px;line-height:1}.zE6uZW_bookCreateCard{border-color:var(--nf-accent);min-height:260px}.zE6uZW_createBookView{flex-direction:column;flex:1;gap:14px;min-height:0;padding:14px 18px 24px;display:flex;overflow:auto}.zE6uZW_createBookTop{align-items:center;display:flex}.zE6uZW_createBookCard{border:1px solid var(--nf-border);background:var(--nf-bg-raise);backdrop-filter:blur(24px)saturate(180%);width:min(520px,100%);box-shadow:var(--nf-shadow-lg);border-radius:20px;flex-direction:column;align-self:center;gap:12px;padding:26px 28px;display:flex}.zE6uZW_createBookIcon{font-size:34px;line-height:1}.zE6uZW_createBookTitle{letter-spacing:-.3px;margin:0;font-size:22px;font-weight:800}.zE6uZW_ideaCard{border:1px dashed var(--nf-border-strong);background:color-mix(in srgb, var(--nf-accent) 3%, transparent);border-radius:14px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.zE6uZW_ideaToggle{color:var(--nf-accent);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:6px;padding:0;font-size:13px;font-weight:700;display:flex}.zE6uZW_ideaCandidate{border:1px solid var(--nf-border);background:var(--nf-bg);border-radius:12px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.zE6uZW_progressLineDone{color:var(--nf-success);font-weight:600}.zE6uZW_progressLineError{color:var(--nf-error);font-weight:600}.zE6uZW_meta{color:var(--nf-text-2);opacity:.9;font-size:12px}.zE6uZW_genreDesc{-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:560px;display:-webkit-box;overflow:hidden}.zE6uZW_fileList{color:var(--nf-text-2);opacity:.9;word-break:break-all;flex-direction:column;gap:3px;font-size:12px;display:flex}.zE6uZW_panelContent::-webkit-scrollbar,.zE6uZW_chatScroll::-webkit-scrollbar,.zE6uZW_chapterPreview::-webkit-scrollbar,.zE6uZW_progress::-webkit-scrollbar,.zE6uZW_toolLive::-webkit-scrollbar{width:8px;height:8px}.zE6uZW_panelContent::-webkit-scrollbar-thumb,.zE6uZW_chatScroll::-webkit-scrollbar-thumb,.zE6uZW_chapterPreview::-webkit-scrollbar-thumb,.zE6uZW_progress::-webkit-scrollbar-thumb,.zE6uZW_toolLive::-webkit-scrollbar-thumb{background:var(--nf-border-strong);border-radius:4px}.zE6uZW_panelContent::-webkit-scrollbar-thumb:hover,.zE6uZW_chatScroll::-webkit-scrollbar-thumb:hover,.zE6uZW_chapterPreview::-webkit-scrollbar-thumb:hover,.zE6uZW_progress::-webkit-scrollbar-thumb:hover,.zE6uZW_toolLive::-webkit-scrollbar-thumb:hover{background:var(--nf-text-3)}.zE6uZW_workflowList{flex-direction:column;gap:0;display:flex}.zE6uZW_workflowRow{align-items:flex-start;gap:12px;padding:8px 4px;display:flex;position:relative}.zE6uZW_workflowRow:before{content:\"\";background:var(--nf-border);width:2px;position:absolute;top:34px;bottom:-8px;left:13px}.zE6uZW_workflowRow:last-child:before{display:none}.zE6uZW_workflowDot{border:2px solid var(--nf-border-strong);background:var(--nf-bg-raise);width:28px;height:28px;color:var(--nf-text-2);z-index:1;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:inline-flex}.zE6uZW_workflowDotDone{border-color:var(--nf-success);background:color-mix(in srgb, var(--nf-success) 15%, var(--nf-bg-raise));color:var(--nf-success)}.zE6uZW_workflowDotActive{border-color:var(--nf-accent);background:var(--nf-accent);color:var(--nf-accent-fg);box-shadow:0 0 0 4px var(--nf-accent-soft)}.zE6uZW_workflowBody{flex-direction:column;flex:1;gap:4px;min-width:0;padding-top:2px;display:flex}.zE6uZW_workflowLabel{color:var(--nf-text);font-size:13px;font-weight:600}.zE6uZW_workflowHint{color:var(--nf-text-2);font-size:12px}@keyframes zE6uZW_pulse{0%,to{opacity:1}50%{opacity:.45}}@keyframes zE6uZW_fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.zE6uZW_card{animation:.2s zE6uZW_fadeIn}.zE6uZW_bookshelf{border:1px solid var(--nf-glass-border);background:var(--nf-glass-face);box-shadow:var(--nf-shadow), inset 0 1px 0 var(--nf-glass-sheen);backdrop-filter:blur(26px)saturate(175%);z-index:1;border-radius:16px;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:10px;margin:10px 12px 0;padding:8px 14px;display:flex;position:relative}.zE6uZW_bookshelfLabel{color:var(--nf-text-3);letter-spacing:1px;flex-shrink:0;font-size:12px;font-weight:700}.zE6uZW_bookshelfList{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.zE6uZW_bookChip{border:1px solid var(--nf-border);background:var(--nf-bg-inset);cursor:pointer;border-radius:999px;align-items:center;gap:6px;max-width:220px;padding:4px 8px 4px 10px;font-size:12px;transition:border-color .15s,background .15s;display:flex}.zE6uZW_bookChip:hover{border-color:var(--nf-border-strong)}.zE6uZW_bookChipActive{border-color:var(--nf-accent);background:var(--nf-accent-soft);color:var(--nf-accent)}.zE6uZW_bookChipName{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.zE6uZW_bookChipMeta{opacity:.7;white-space:nowrap;font-size:11px}.zE6uZW_bookChipRemove{color:var(--nf-text-3);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:0 2px;font-size:13px;line-height:1}.zE6uZW_bookChipRemove:hover{color:var(--nf-error)}.zE6uZW_bookAdd{border:1px dashed var(--nf-border-strong);color:var(--nf-text-2);cursor:pointer;background:0 0;border-radius:999px;padding:4px 12px;font-size:12px;transition:border-color .15s,color .15s}.zE6uZW_bookAdd:hover{border-color:var(--nf-accent);color:var(--nf-accent)}.zE6uZW_bookCreateForm{align-items:center;gap:6px;display:flex}.zE6uZW_dropzone{border:2px dashed var(--nf-border-strong);text-align:center;color:var(--nf-text-2);cursor:pointer;border-radius:10px;flex-direction:column;align-items:center;gap:6px;padding:18px 14px;font-size:13px;transition:border-color .15s,background .15s;display:flex}.zE6uZW_dropzone:hover,.zE6uZW_dropzoneActive{border-color:var(--nf-accent);background:var(--nf-accent-soft);color:var(--nf-accent)}.zE6uZW_dropzoneIcon{font-size:22px;line-height:1}.zE6uZW_bookCardActions{align-items:center;gap:6px;margin-top:2px;display:flex}.zE6uZW_bookCardActions .zE6uZW_button{flex:1;justify-content:center}.zE6uZW_readerView{flex-direction:column;transition:background .2s,color .2s;display:flex;position:absolute;inset:0;overflow:hidden}.zE6uZW_readerHeader{border-bottom:1px solid;flex-wrap:wrap;flex:none;align-items:center;gap:8px;padding:8px 12px;display:flex}.zE6uZW_readerTitle{font-size:14px;font-weight:700}.zE6uZW_readerSeg{border-radius:8px;align-items:center;gap:2px;display:flex;overflow:hidden}.zE6uZW_readerSegBtn{cursor:pointer;opacity:.75;background:0 0;border:none;border-radius:6px;padding:3px 8px;font-size:12px}.zE6uZW_readerSegBtn:hover,.zE6uZW_readerSegActive{opacity:1}.zE6uZW_readerBody{flex:1;align-items:stretch;min-height:0;display:flex}.zE6uZW_readerSidebar{scrollbar-width:thin;border-right:1px solid;flex-direction:column;flex:none;gap:10px;width:220px;min-width:220px;padding:8px 6px 24px;display:flex;overflow-y:auto}.zE6uZW_readerGroup{flex-direction:column;gap:1px;display:flex}.zE6uZW_readerGroupTitle{opacity:.9;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;width:100%;padding:6px 8px 4px;font-size:12px;font-weight:700;display:flex}.zE6uZW_readerGroupTitle:hover{opacity:1;background:#8080801f}.zE6uZW_readerGroupArrow{text-align:center;flex:none;width:12px;font-size:10px}.zE6uZW_readerGroupCount{opacity:.6;flex:none;margin-left:auto;padding-right:2px;font-size:11px;font-weight:400}.zE6uZW_readerItem{text-align:left;cursor:pointer;opacity:.8;background:0 0;border:1px solid;border-radius:8px;align-items:center;gap:6px;min-width:0;padding:4px 8px;font-size:12px;transition:opacity .15s,background .15s;display:flex}.zE6uZW_readerItem:hover{opacity:1}.zE6uZW_readerItemActive{opacity:1;font-weight:700}.zE6uZW_readerItemNo{text-align:right;opacity:.75;flex:none;min-width:26px;font-weight:700}.zE6uZW_readerItemTitle{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.zE6uZW_readerItemBadge{flex:none;font-size:11px}.zE6uZW_readerMain{scrollbar-width:thin;flex:1;justify-content:center;min-height:0;padding:20px 16px 48px;display:flex;overflow-y:auto}.zE6uZW_readerArticle{flex-direction:column;gap:12px;width:100%;display:flex}.zE6uZW_readerChapterTitle{letter-spacing:1px;margin:0;font-size:24px;font-weight:800}.zE6uZW_readerChapterMeta{align-items:center;gap:8px;font-size:12px;display:flex}.zE6uZW_readerText{text-align:justify;letter-spacing:.02em}.zE6uZW_readerPara{text-indent:2em;margin:0 0 .85em}.zE6uZW_readerFoot{border-top:1px dashed;justify-content:space-between;align-items:center;gap:8px;margin-top:12px;padding-top:12px;display:flex}.zE6uZW_readerLoading,.zE6uZW_readerError{opacity:.7;align-self:center;padding:32px 0;font-size:13px}.zE6uZW_readerError{color:var(--nf-error)}.zE6uZW_importModalOverlay{z-index:1000;backdrop-filter:blur(4px);background:#00000073;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.zE6uZW_importModal{border:1px solid var(--nf-border-strong);background:var(--nf-bg-raise);backdrop-filter:blur(28px)saturate(180%);width:min(520px,100%);max-height:85vh;box-shadow:var(--nf-shadow-lg);border-radius:16px;flex-direction:column;gap:12px;padding:16px;display:flex;overflow:auto}.zE6uZW_importModalHead{justify-content:space-between;align-items:center;gap:10px;display:flex}.zE6uZW_importModalTabs{gap:8px;display:flex}.zE6uZW_importModalTabs .zE6uZW_button{flex:1}.zE6uZW_importModalBody{flex-direction:column;gap:10px;display:flex}.zE6uZW_importField{color:var(--nf-text-2);flex-direction:column;gap:5px;font-size:13px;display:flex}.zE6uZW_importHint{color:var(--nf-text-3);font-size:12px;line-height:1.5}.zE6uZW_importError{border:1px solid color-mix(in srgb, var(--nf-danger,#e5484d) 55%, transparent);color:var(--nf-danger,#e5484d);background:color-mix(in srgb, var(--nf-danger,#e5484d) 10%, transparent);white-space:pre-wrap;word-break:break-all;border-radius:10px;padding:8px 10px;font-size:12.5px}.zE6uZW_importResult{border:1px solid color-mix(in srgb, var(--nf-ok,#46a758) 45%, transparent);background:color-mix(in srgb, var(--nf-ok,#46a758) 9%, transparent);word-break:break-all;border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;font-size:13px;display:flex}.zE6uZW_importModalActions{justify-content:flex-end;gap:8px;display:flex}.zE6uZW_importFileInfo{color:var(--nf-text-1);flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.zE6uZW_importPreview{border:1px solid var(--nf-border-strong);background:var(--nf-bg-inset);border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;font-size:13px;display:flex}.zE6uZW_importPreviewList{color:var(--nf-text-2);flex-direction:column;gap:2px;max-height:140px;margin:0;padding-left:18px;font-size:12.5px;display:flex;overflow:auto}.zE6uZW_settingsCard .zE6uZW_fieldLabel{white-space:nowrap;text-overflow:ellipsis;max-width:100%;min-height:18px;line-height:18px;overflow:hidden}.zE6uZW_settingsCard .zE6uZW_row{align-items:flex-start}.zE6uZW_helpTipText{background:var(--nf-bg-raise);border:1px solid var(--nf-border-strong);width:280px;max-width:70vw;box-shadow:var(--nf-shadow-lg);color:var(--nf-text-2);white-space:normal;z-index:20;text-align:left;pointer-events:none;border-radius:10px;padding:10px 12px;font-size:12px;font-weight:400;line-height:1.7;display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.zE6uZW_helpTip:hover .zE6uZW_helpTipText,.zE6uZW_helpTip:focus .zE6uZW_helpTipText,.zE6uZW_helpTip:focus-within .zE6uZW_helpTipText{display:block}";
919
946
  const tagId = "@waterwx/dsh-novel-forge/panel.module.css";
920
947
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
921
948
  const tag = document.createElement("style");
@@ -925,282 +952,288 @@ window.__ModuleLoader__.load({
925
952
  document.head.appendChild(tag);
926
953
  }
927
954
  var panel_module_css_default = {
928
- "statRowD": "zE6uZW_statRowD",
929
- "legendOld": "zE6uZW_legendOld",
930
- "progressBarFill": "zE6uZW_progressBarFill",
931
- "card": "zE6uZW_card",
955
+ "navTitleLogo": "zE6uZW_navTitleLogo",
956
+ "assistantStatus": "zE6uZW_assistantStatus",
957
+ "button": "zE6uZW_button",
958
+ "statCardDDetail": "zE6uZW_statCardDDetail",
959
+ "badgeWritten": "zE6uZW_badgeWritten",
960
+ "chatScroll": "zE6uZW_chatScroll",
961
+ "readerSeg": "zE6uZW_readerSeg",
962
+ "tlSeg": "zE6uZW_tlSeg",
963
+ "bigProgressBarFill": "zE6uZW_bigProgressBarFill",
964
+ "assetStat": "zE6uZW_assetStat",
965
+ "importResult": "zE6uZW_importResult",
966
+ "assetStatDetail": "zE6uZW_assetStatDetail",
967
+ "bookCardTitleRow": "zE6uZW_bookCardTitleRow",
968
+ "dropzoneActive": "zE6uZW_dropzoneActive",
969
+ "badgeError": "zE6uZW_badgeError",
970
+ "createBookView": "zE6uZW_createBookView",
971
+ "toolStepError": "zE6uZW_toolStepError",
932
972
  "panelNavCollapsed": "zE6uZW_panelNavCollapsed",
933
- "bookCreateOutline": "zE6uZW_bookCreateOutline",
934
- "chapter": "zE6uZW_chapter",
935
- "todoInfo": "zE6uZW_todoInfo",
936
- "workflowRow": "zE6uZW_workflowRow",
937
- "readerBody": "zE6uZW_readerBody",
973
+ "readerItemNo": "zE6uZW_readerItemNo",
974
+ "dashHeroActionBody": "zE6uZW_dashHeroActionBody",
975
+ "statCardDIconRed": "zE6uZW_statCardDIconRed",
976
+ "progressBarFill": "zE6uZW_progressBarFill",
977
+ "ideaCandidate": "zE6uZW_ideaCandidate",
978
+ "readerGroupArrow": "zE6uZW_readerGroupArrow",
979
+ "iconButton": "zE6uZW_iconButton",
938
980
  "shelfView": "zE6uZW_shelfView",
939
- "readerSegActive": "zE6uZW_readerSegActive",
940
- "wsAppliedBanner": "zE6uZW_wsAppliedBanner",
941
- "readerItem": "zE6uZW_readerItem",
942
- "dashFacts": "zE6uZW_dashFacts",
943
- "readerPara": "zE6uZW_readerPara",
944
- "panelNav": "zE6uZW_panelNav",
945
- "assistantStatus": "zE6uZW_assistantStatus",
981
+ "chapterActions": "zE6uZW_chapterActions",
982
+ "chapterFocusPulse": "zE6uZW_chapterFocusPulse",
983
+ "workflowLabel": "zE6uZW_workflowLabel",
984
+ "assetStatValue": "zE6uZW_assetStatValue",
946
985
  "assistantStatusBusy": "zE6uZW_assistantStatusBusy",
986
+ "readerItemTitle": "zE6uZW_readerItemTitle",
987
+ "todoInfo": "zE6uZW_todoInfo",
988
+ "bookChipActive": "zE6uZW_bookChipActive",
989
+ "chatBubbleUser": "zE6uZW_chatBubbleUser",
990
+ "settingsCard": "zE6uZW_settingsCard",
947
991
  "legendNew": "zE6uZW_legendNew",
948
- "navTabBadgeDanger": "zE6uZW_navTabBadgeDanger",
949
- "chapterActions": "zE6uZW_chapterActions",
950
- "navActionBtn": "zE6uZW_navActionBtn",
951
- "dashStageCurrent": "zE6uZW_dashStageCurrent",
952
- "navSpacer": "zE6uZW_navSpacer",
953
992
  "panelBody": "zE6uZW_panelBody",
954
- "toolLive": "zE6uZW_toolLive",
955
- "bookCardTitleRow": "zE6uZW_bookCardTitleRow",
956
- "ideaCard": "zE6uZW_ideaCard",
957
- "cardTitle": "zE6uZW_cardTitle",
958
- "view": "zE6uZW_view",
959
- "toolStep": "zE6uZW_toolStep",
960
- "navTabBadge": "zE6uZW_navTabBadge",
961
- "statCardDIconRed": "zE6uZW_statCardDIconRed",
962
- "chapterFocus": "zE6uZW_chapterFocus",
963
- "navGroupSep": "zE6uZW_navGroupSep",
964
- "bookshelfLabel": "zE6uZW_bookshelfLabel",
965
- "dropzone": "zE6uZW_dropzone",
966
- "bookChip": "zE6uZW_bookChip",
967
- "dashHeroSparkle": "zE6uZW_dashHeroSparkle",
968
- "wsPreviewText": "zE6uZW_wsPreviewText",
969
- "tlSegFill": "zE6uZW_tlSegFill",
970
- "diffChange": "zE6uZW_diffChange",
971
- "navBadgePulse": "zE6uZW_navBadgePulse",
972
- "badgeGenerating": "zE6uZW_badgeGenerating",
973
- "bookCardBody": "zE6uZW_bookCardBody",
974
- "diffTagNew": "zE6uZW_diffTagNew",
975
- "createBookView": "zE6uZW_createBookView",
976
- "entry": "zE6uZW_entry",
977
- "shelfFilters": "zE6uZW_shelfFilters",
978
- "chatRole": "zE6uZW_chatRole",
979
- "bookCardCoverFallback": "zE6uZW_bookCardCoverFallback",
980
- "createBookCard": "zE6uZW_createBookCard",
981
- "diffColumn": "zE6uZW_diffColumn",
982
- "importError": "zE6uZW_importError",
983
- "statCardD": "zE6uZW_statCardD",
984
- "tlBar": "zE6uZW_tlBar",
985
- "reviewBox": "zE6uZW_reviewBox",
986
- "assetStat": "zE6uZW_assetStat",
987
- "shelfTitleRow": "zE6uZW_shelfTitleRow",
988
- "tlSeg": "zE6uZW_tlSeg",
989
993
  "dashStageDot": "zE6uZW_dashStageDot",
990
- "panel": "zE6uZW_panel",
994
+ "shelfTitleRow": "zE6uZW_shelfTitleRow",
995
+ "readerLoading": "zE6uZW_readerLoading",
996
+ "toolSteps": "zE6uZW_toolSteps",
997
+ "readerGroupTitle": "zE6uZW_readerGroupTitle",
991
998
  "statCardDIcon": "zE6uZW_statCardDIcon",
992
- "progressLineLive": "zE6uZW_progressLineLive",
993
- "createBookTop": "zE6uZW_createBookTop",
994
- "importHint": "zE6uZW_importHint",
995
- "wsPageHeader": "zE6uZW_wsPageHeader",
996
- "bookChipRemove": "zE6uZW_bookChipRemove",
997
- "importModalHead": "zE6uZW_importModalHead",
998
- "progressLine": "zE6uZW_progressLine",
999
- "navTabBadgeDone": "zE6uZW_navTabBadgeDone",
1000
- "progress": "zE6uZW_progress",
999
+ "readerTitle": "zE6uZW_readerTitle",
1000
+ "dashJourneyStages": "zE6uZW_dashJourneyStages",
1001
1001
  "readerError": "zE6uZW_readerError",
1002
- "workflowLabel": "zE6uZW_workflowLabel",
1003
- "toolStepIcon": "zE6uZW_toolStepIcon",
1004
- "pulse": "zE6uZW_pulse",
1005
- "bookCreateCard": "zE6uZW_bookCreateCard",
1006
- "bookCardProgressFill": "zE6uZW_bookCardProgressFill",
1007
- "workflowList": "zE6uZW_workflowList",
1008
- "diffText": "zE6uZW_diffText",
1009
- "navGroup": "zE6uZW_navGroup",
1010
- "bookCreateForm": "zE6uZW_bookCreateForm",
1011
- "importModalTabs": "zE6uZW_importModalTabs",
1012
- "tlSegDone": "zE6uZW_tlSegDone",
1013
- "wsColumns": "zE6uZW_wsColumns",
1014
- "importField": "zE6uZW_importField",
1015
- "todoItem": "zE6uZW_todoItem",
1016
- "fieldLabel": "zE6uZW_fieldLabel",
1017
- "todoWarning": "zE6uZW_todoWarning",
1018
- "dashHeroAction": "zE6uZW_dashHeroAction",
1019
- "bookshelf": "zE6uZW_bookshelf",
1020
- "outlineReadonly": "zE6uZW_outlineReadonly",
1021
- "bigProgressBar": "zE6uZW_bigProgressBar",
1022
- "tlSegLabel": "zE6uZW_tlSegLabel",
1023
- "liveText": "zE6uZW_liveText",
1024
- "spaceBetween": "zE6uZW_spaceBetween",
1025
- "buttonSmall": "zE6uZW_buttonSmall",
1026
- "toolStepStatus": "zE6uZW_toolStepStatus",
1027
- "diffDel": "zE6uZW_diffDel",
1028
- "chapterTitle": "zE6uZW_chapterTitle",
1029
- "dashHeroActionBody": "zE6uZW_dashHeroActionBody",
1030
- "diffOld": "zE6uZW_diffOld",
1031
- "bookCardName": "zE6uZW_bookCardName",
1032
- "dashHero": "zE6uZW_dashHero",
1033
- "bookshelfList": "zE6uZW_bookshelfList",
1034
- "toolStepName": "zE6uZW_toolStepName",
1035
- "diffSameBody": "zE6uZW_diffSameBody",
1036
- "navTitle": "zE6uZW_navTitle",
1037
- "bookCardActive": "zE6uZW_bookCardActive",
1038
- "wsPage": "zE6uZW_wsPage",
1039
- "readerItemTitle": "zE6uZW_readerItemTitle",
1040
- "dashFact": "zE6uZW_dashFact",
1041
- "navTabBadgeLive": "zE6uZW_navTabBadgeLive",
1042
- "readerGroup": "zE6uZW_readerGroup",
1043
- "assetStatDetail": "zE6uZW_assetStatDetail",
1044
- "shelfToolbar": "zE6uZW_shelfToolbar",
1045
- "shelfGrid": "zE6uZW_shelfGrid",
1046
- "toolStepError": "zE6uZW_toolStepError",
1047
- "assistantFloatBody": "zE6uZW_assistantFloatBody",
1048
- "chapterNum": "zE6uZW_chapterNum",
1049
- "bookChipActive": "zE6uZW_bookChipActive",
1050
- "bookSwitch": "zE6uZW_bookSwitch",
1051
- "diffList": "zE6uZW_diffList",
1052
- "fileList": "zE6uZW_fileList",
1053
- "statCardDDown": "zE6uZW_statCardDDown",
1054
- "badge": "zE6uZW_badge",
1055
- "assetStatValue": "zE6uZW_assetStatValue",
1056
- "wsPreview": "zE6uZW_wsPreview",
1057
- "chapterFocusPulse": "zE6uZW_chapterFocusPulse",
1058
- "dashJourneyFill": "zE6uZW_dashJourneyFill",
1059
- "tlSegTodo": "zE6uZW_tlSegTodo",
1060
- "tabBar": "zE6uZW_tabBar",
1061
- "panelTitle": "zE6uZW_panelTitle",
1062
- "wsEditor": "zE6uZW_wsEditor",
1063
- "ideaToggle": "zE6uZW_ideaToggle",
1064
1002
  "statCardDUnit": "zE6uZW_statCardDUnit",
1065
- "input": "zE6uZW_input",
1066
- "bookSwitchName": "zE6uZW_bookSwitchName",
1067
- "diffNew": "zE6uZW_diffNew",
1068
- "progressLineError": "zE6uZW_progressLineError",
1003
+ "helpTip": "zE6uZW_helpTip",
1004
+ "readerGroup": "zE6uZW_readerGroup",
1069
1005
  "readerSidebar": "zE6uZW_readerSidebar",
1070
- "statCardDDetail": "zE6uZW_statCardDDetail",
1071
- "buttonDanger": "zE6uZW_buttonDanger",
1072
- "badgePending": "zE6uZW_badgePending",
1073
- "readerGroupArrow": "zE6uZW_readerGroupArrow",
1074
- "busyRow": "zE6uZW_busyRow",
1006
+ "dashHeroActionTitle": "zE6uZW_dashHeroActionTitle",
1007
+ "dashHeroAction": "zE6uZW_dashHeroAction",
1008
+ "createBookTop": "zE6uZW_createBookTop",
1009
+ "workflowDotDone": "zE6uZW_workflowDotDone",
1010
+ "toolStepStatus": "zE6uZW_toolStepStatus",
1011
+ "navActionBtn": "zE6uZW_navActionBtn",
1012
+ "diffText": "zE6uZW_diffText",
1013
+ "statCardD": "zE6uZW_statCardD",
1014
+ "navGroupSep": "zE6uZW_navGroupSep",
1015
+ "dropzone": "zE6uZW_dropzone",
1016
+ "assetStatLabel": "zE6uZW_assetStatLabel",
1017
+ "chapterPreview": "zE6uZW_chapterPreview",
1018
+ "workflowDotActive": "zE6uZW_workflowDotActive",
1019
+ "shelfEmpty": "zE6uZW_shelfEmpty",
1075
1020
  "statCardDValue": "zE6uZW_statCardDValue",
1076
- "coverPlaceholder": "zE6uZW_coverPlaceholder",
1077
- "shelfEmptyIcon": "zE6uZW_shelfEmptyIcon",
1078
- "chatBubbleAssistant": "zE6uZW_chatBubbleAssistant",
1079
1021
  "dashGrid": "zE6uZW_dashGrid",
1080
- "navTabBadgeWarn": "zE6uZW_navTabBadgeWarn",
1081
- "navTitleLogo": "zE6uZW_navTitleLogo",
1082
- "toolSteps": "zE6uZW_toolSteps",
1083
- "workflowDot": "zE6uZW_workflowDot",
1084
- "bookAddIcon": "zE6uZW_bookAddIcon",
1085
- "workflowHint": "zE6uZW_workflowHint",
1086
- "readerFoot": "zE6uZW_readerFoot",
1087
- "readerText": "zE6uZW_readerText",
1088
- "panelContent": "zE6uZW_panelContent",
1089
- "badgeWritten": "zE6uZW_badgeWritten",
1090
- "bookCardBlurb": "zE6uZW_bookCardBlurb",
1091
- "bookCardCover": "zE6uZW_bookCardCover",
1092
- "readerItemBadge": "zE6uZW_readerItemBadge",
1093
- "chatScroll": "zE6uZW_chatScroll",
1094
- "bookSwitchArrow": "zE6uZW_bookSwitchArrow",
1095
- "volumeGroupHeader": "zE6uZW_volumeGroupHeader",
1096
- "assistantFloat": "zE6uZW_assistantFloat",
1097
- "badgeDone": "zE6uZW_badgeDone",
1098
- "readerItemActive": "zE6uZW_readerItemActive",
1022
+ "toolStepActive": "zE6uZW_toolStepActive",
1023
+ "importModalOverlay": "zE6uZW_importModalOverlay",
1024
+ "tlSegTodo": "zE6uZW_tlSegTodo",
1025
+ "row": "zE6uZW_row",
1026
+ "chapterBeats": "zE6uZW_chapterBeats",
1027
+ "progressLineLive": "zE6uZW_progressLineLive",
1028
+ "meta": "zE6uZW_meta",
1029
+ "dashJourneyBar": "zE6uZW_dashJourneyBar",
1099
1030
  "wsSelectedText": "zE6uZW_wsSelectedText",
1100
- "diffAdd": "zE6uZW_diffAdd",
1101
- "chatBubbleUser": "zE6uZW_chatBubbleUser",
1031
+ "panelContent": "zE6uZW_panelContent",
1032
+ "workflowDot": "zE6uZW_workflowDot",
1102
1033
  "bookSwitchCover": "zE6uZW_bookSwitchCover",
1103
- "toolStepDetail": "zE6uZW_toolStepDetail",
1104
- "dropzoneActive": "zE6uZW_dropzoneActive",
1105
- "bookCardCoverTitle": "zE6uZW_bookCardCoverTitle",
1106
- "readerGroupTitle": "zE6uZW_readerGroupTitle",
1034
+ "navTabIcon": "zE6uZW_navTabIcon",
1035
+ "dashHeroTitle": "zE6uZW_dashHeroTitle",
1036
+ "bookAddCard": "zE6uZW_bookAddCard",
1107
1037
  "dropzoneIcon": "zE6uZW_dropzoneIcon",
1108
- "tab": "zE6uZW_tab",
1109
- "navGroupLabel": "zE6uZW_navGroupLabel",
1110
- "readerItemNo": "zE6uZW_readerItemNo",
1038
+ "liveText": "zE6uZW_liveText",
1039
+ "todoItem": "zE6uZW_todoItem",
1040
+ "toolStepName": "zE6uZW_toolStepName",
1041
+ "ideaCard": "zE6uZW_ideaCard",
1042
+ "bookshelfList": "zE6uZW_bookshelfList",
1111
1043
  "statCardDLabel": "zE6uZW_statCardDLabel",
1112
- "bigProgressBarFill": "zE6uZW_bigProgressBarFill",
1113
- "onlyChanges": "zE6uZW_onlyChanges",
1114
- "bookCardMetaRow": "zE6uZW_bookCardMetaRow",
1115
- "buttonPrimary": "zE6uZW_buttonPrimary",
1116
- "chapterBeats": "zE6uZW_chapterBeats",
1117
- "dashStageDone": "zE6uZW_dashStageDone",
1118
- "workflowDotDone": "zE6uZW_workflowDotDone",
1119
- "entryLabel": "zE6uZW_entryLabel",
1120
- "workflowDotActive": "zE6uZW_workflowDotActive",
1121
- "bookAdd": "zE6uZW_bookAdd",
1122
- "shelfEmpty": "zE6uZW_shelfEmpty",
1123
- "todoText": "zE6uZW_todoText",
1124
- "importModalBody": "zE6uZW_importModalBody",
1125
1044
  "field": "zE6uZW_field",
1126
- "importModalOverlay": "zE6uZW_importModalOverlay",
1127
- "bookChipMeta": "zE6uZW_bookChipMeta",
1128
- "readerView": "zE6uZW_readerView",
1129
- "badgeRejected": "zE6uZW_badgeRejected",
1130
- "readerArticle": "zE6uZW_readerArticle",
1131
- "ideaCandidate": "zE6uZW_ideaCandidate",
1132
- "fadeIn": "zE6uZW_fadeIn",
1133
- "wsSelected": "zE6uZW_wsSelected",
1134
- "readerSegBtn": "zE6uZW_readerSegBtn",
1135
- "entryIcon": "zE6uZW_entryIcon",
1136
- "bookAddCard": "zE6uZW_bookAddCard",
1137
- "createBookTitle": "zE6uZW_createBookTitle",
1138
- "diffSame": "zE6uZW_diffSame",
1139
- "genreDesc": "zE6uZW_genreDesc",
1140
- "readerChapterMeta": "zE6uZW_readerChapterMeta",
1141
- "navTabIcon": "zE6uZW_navTabIcon",
1142
- "toolStepActive": "zE6uZW_toolStepActive",
1045
+ "bookCardProgressFill": "zE6uZW_bookCardProgressFill",
1046
+ "workflowHint": "zE6uZW_workflowHint",
1047
+ "panelNav": "zE6uZW_panelNav",
1048
+ "badgeGenerating": "zE6uZW_badgeGenerating",
1049
+ "progressLineDone": "zE6uZW_progressLineDone",
1050
+ "bookshelfLabel": "zE6uZW_bookshelfLabel",
1143
1051
  "bookSwitchMeta": "zE6uZW_bookSwitchMeta",
1144
- "importResult": "zE6uZW_importResult",
1145
- "dashJourney": "zE6uZW_dashJourney",
1146
- "readerSeg": "zE6uZW_readerSeg",
1147
- "readerGroupCount": "zE6uZW_readerGroupCount",
1148
- "bookChipName": "zE6uZW_bookChipName",
1149
- "readerHeader": "zE6uZW_readerHeader",
1150
- "shelfHeader": "zE6uZW_shelfHeader",
1151
- "diffTagOld": "zE6uZW_diffTagOld",
1152
- "chapterMain": "zE6uZW_chapterMain",
1153
- "assistantFloatHeader": "zE6uZW_assistantFloatHeader",
1052
+ "toolLive": "zE6uZW_toolLive",
1053
+ "assistantFloatBody": "zE6uZW_assistantFloatBody",
1154
1054
  "navTitleName": "zE6uZW_navTitleName",
1155
- "readerTitle": "zE6uZW_readerTitle",
1156
- "tlSegTrack": "zE6uZW_tlSegTrack",
1157
- "navTitleBook": "zE6uZW_navTitleBook",
1158
- "navTab": "zE6uZW_navTab",
1055
+ "shelfEmptyTitle": "zE6uZW_shelfEmptyTitle",
1056
+ "chatBubbleAssistant": "zE6uZW_chatBubbleAssistant",
1057
+ "wsPage": "zE6uZW_wsPage",
1058
+ "dashStage": "zE6uZW_dashStage",
1059
+ "bookCard": "zE6uZW_bookCard",
1060
+ "importModalActions": "zE6uZW_importModalActions",
1061
+ "importHint": "zE6uZW_importHint",
1062
+ "navTabBadgeWarn": "zE6uZW_navTabBadgeWarn",
1063
+ "onlyChanges": "zE6uZW_onlyChanges",
1064
+ "wsEditor": "zE6uZW_wsEditor",
1065
+ "fileList": "zE6uZW_fileList",
1066
+ "importPreview": "zE6uZW_importPreview",
1067
+ "dashFact": "zE6uZW_dashFact",
1068
+ "genreDesc": "zE6uZW_genreDesc",
1069
+ "assistantResize": "zE6uZW_assistantResize",
1070
+ "navTabBadgeLive": "zE6uZW_navTabBadgeLive",
1071
+ "readerFoot": "zE6uZW_readerFoot",
1072
+ "textarea": "zE6uZW_textarea",
1073
+ "assistantFloat": "zE6uZW_assistantFloat",
1074
+ "input": "zE6uZW_input",
1075
+ "bookCreateOutline": "zE6uZW_bookCreateOutline",
1076
+ "dashFacts": "zE6uZW_dashFacts",
1077
+ "bigProgressBar": "zE6uZW_bigProgressBar",
1078
+ "createBookCard": "zE6uZW_createBookCard",
1079
+ "tabBar": "zE6uZW_tabBar",
1080
+ "shelfEmptyIcon": "zE6uZW_shelfEmptyIcon",
1081
+ "toolStepDetail": "zE6uZW_toolStepDetail",
1082
+ "bookCardProgressBar": "zE6uZW_bookCardProgressBar",
1083
+ "readerChapterTitle": "zE6uZW_readerChapterTitle",
1084
+ "dashStageDone": "zE6uZW_dashStageDone",
1159
1085
  "navAboutRow": "zE6uZW_navAboutRow",
1086
+ "navAboutUpdate": "zE6uZW_navAboutUpdate",
1087
+ "dashJourneyFill": "zE6uZW_dashJourneyFill",
1088
+ "bookChip": "zE6uZW_bookChip",
1160
1089
  "navAbout": "zE6uZW_navAbout",
1161
- "navActions": "zE6uZW_navActions",
1162
- "dashHeroTitle": "zE6uZW_dashHeroTitle",
1163
- "dashHeroArrow": "zE6uZW_dashHeroArrow",
1164
- "navTabLabel": "zE6uZW_navTabLabel",
1165
- "assetStatLabel": "zE6uZW_assetStatLabel",
1166
- "createBookIcon": "zE6uZW_createBookIcon",
1090
+ "importModalBody": "zE6uZW_importModalBody",
1091
+ "buttonSmall": "zE6uZW_buttonSmall",
1092
+ "readerText": "zE6uZW_readerText",
1093
+ "importPreviewList": "zE6uZW_importPreviewList",
1094
+ "tlSegDone": "zE6uZW_tlSegDone",
1095
+ "assetGrid": "zE6uZW_assetGrid",
1096
+ "progress": "zE6uZW_progress",
1097
+ "readerChapterMeta": "zE6uZW_readerChapterMeta",
1098
+ "dashHeroEyebrow": "zE6uZW_dashHeroEyebrow",
1099
+ "workflowList": "zE6uZW_workflowList",
1100
+ "coverPlaceholder": "zE6uZW_coverPlaceholder",
1101
+ "diffDel": "zE6uZW_diffDel",
1167
1102
  "diffLegend": "zE6uZW_diffLegend",
1168
- "volumeGroupToggle": "zE6uZW_volumeGroupToggle",
1169
- "bookCard": "zE6uZW_bookCard",
1170
- "progressLineDone": "zE6uZW_progressLineDone",
1171
- "dashJourneyStages": "zE6uZW_dashJourneyStages",
1172
- "navAboutUpdate": "zE6uZW_navAboutUpdate",
1173
- "dashStage": "zE6uZW_dashStage",
1174
- "readerChapterTitle": "zE6uZW_readerChapterTitle",
1103
+ "outlineReadonly": "zE6uZW_outlineReadonly",
1104
+ "statCardDDown": "zE6uZW_statCardDDown",
1105
+ "tlSegFill": "zE6uZW_tlSegFill",
1106
+ "tab": "zE6uZW_tab",
1107
+ "navTitleBook": "zE6uZW_navTitleBook",
1108
+ "chapterMain": "zE6uZW_chapterMain",
1109
+ "dashHeroBook": "zE6uZW_dashHeroBook",
1110
+ "readerMain": "zE6uZW_readerMain",
1111
+ "wsSelected": "zE6uZW_wsSelected",
1112
+ "panelTitle": "zE6uZW_panelTitle",
1113
+ "pulse": "zE6uZW_pulse",
1114
+ "dashHeroArrow": "zE6uZW_dashHeroArrow",
1115
+ "navTabBadge": "zE6uZW_navTabBadge",
1116
+ "tlSegTrack": "zE6uZW_tlSegTrack",
1117
+ "badgeRejected": "zE6uZW_badgeRejected",
1118
+ "toolStep": "zE6uZW_toolStep",
1119
+ "navBadgePulse": "zE6uZW_navBadgePulse",
1120
+ "panel": "zE6uZW_panel",
1121
+ "card": "zE6uZW_card",
1122
+ "diffOld": "zE6uZW_diffOld",
1123
+ "bookCardCoverFallback": "zE6uZW_bookCardCoverFallback",
1124
+ "readerGroupCount": "zE6uZW_readerGroupCount",
1125
+ "dashHeroSparkle": "zE6uZW_dashHeroSparkle",
1126
+ "shelfToolbar": "zE6uZW_shelfToolbar",
1175
1127
  "progressBar": "zE6uZW_progressBar",
1176
- "textarea": "zE6uZW_textarea",
1128
+ "buttonPrimary": "zE6uZW_buttonPrimary",
1129
+ "navGroupLabel": "zE6uZW_navGroupLabel",
1130
+ "importModal": "zE6uZW_importModal",
1131
+ "bookChipMeta": "zE6uZW_bookChipMeta",
1132
+ "badgePending": "zE6uZW_badgePending",
1133
+ "chapterTitle": "zE6uZW_chapterTitle",
1134
+ "todoText": "zE6uZW_todoText",
1135
+ "readerItemActive": "zE6uZW_readerItemActive",
1136
+ "todoWarning": "zE6uZW_todoWarning",
1137
+ "ideaToggle": "zE6uZW_ideaToggle",
1177
1138
  "todoDanger": "zE6uZW_todoDanger",
1178
- "dashHeroBook": "zE6uZW_dashHeroBook",
1179
- "shelfEmptyTitle": "zE6uZW_shelfEmptyTitle",
1180
- "meta": "zE6uZW_meta",
1181
- "coverPreview": "zE6uZW_coverPreview",
1182
- "chapterList": "zE6uZW_chapterList",
1183
- "dashHeroActionTitle": "zE6uZW_dashHeroActionTitle",
1184
- "dashJourneyBar": "zE6uZW_dashJourneyBar",
1139
+ "bookCardActive": "zE6uZW_bookCardActive",
1140
+ "readerItem": "zE6uZW_readerItem",
1141
+ "chapter": "zE6uZW_chapter",
1142
+ "dashStageCurrent": "zE6uZW_dashStageCurrent",
1143
+ "entry": "zE6uZW_entry",
1144
+ "chatRole": "zE6uZW_chatRole",
1145
+ "diffSame": "zE6uZW_diffSame",
1146
+ "diffList": "zE6uZW_diffList",
1147
+ "tlSegLabel": "zE6uZW_tlSegLabel",
1148
+ "shelfHeader": "zE6uZW_shelfHeader",
1149
+ "navActions": "zE6uZW_navActions",
1150
+ "wsPreview": "zE6uZW_wsPreview",
1151
+ "bookCreateForm": "zE6uZW_bookCreateForm",
1152
+ "readerSegBtn": "zE6uZW_readerSegBtn",
1153
+ "navTab": "zE6uZW_navTab",
1154
+ "navTabLabel": "zE6uZW_navTabLabel",
1155
+ "readerArticle": "zE6uZW_readerArticle",
1156
+ "busyRow": "zE6uZW_busyRow",
1157
+ "bookChipName": "zE6uZW_bookChipName",
1158
+ "reviewBox": "zE6uZW_reviewBox",
1159
+ "bookChipRemove": "zE6uZW_bookChipRemove",
1160
+ "statRowD": "zE6uZW_statRowD",
1161
+ "badgeDone": "zE6uZW_badgeDone",
1162
+ "readerHeader": "zE6uZW_readerHeader",
1163
+ "wsColumn": "zE6uZW_wsColumn",
1164
+ "bookCardName": "zE6uZW_bookCardName",
1165
+ "tlSegCurrent": "zE6uZW_tlSegCurrent",
1166
+ "bookCardCoverTitle": "zE6uZW_bookCardCoverTitle",
1167
+ "entryLabel": "zE6uZW_entryLabel",
1168
+ "progressLine": "zE6uZW_progressLine",
1169
+ "readerPara": "zE6uZW_readerPara",
1170
+ "bookCardMetaRow": "zE6uZW_bookCardMetaRow",
1171
+ "toolStepIcon": "zE6uZW_toolStepIcon",
1172
+ "diffTagOld": "zE6uZW_diffTagOld",
1185
1173
  "volumeGroup": "zE6uZW_volumeGroup",
1186
- "button": "zE6uZW_button",
1174
+ "readerView": "zE6uZW_readerView",
1175
+ "dashJourney": "zE6uZW_dashJourney",
1176
+ "chapterList": "zE6uZW_chapterList",
1177
+ "readerItemBadge": "zE6uZW_readerItemBadge",
1178
+ "bookSwitch": "zE6uZW_bookSwitch",
1179
+ "wsPageHeader": "zE6uZW_wsPageHeader",
1180
+ "shelfGrid": "zE6uZW_shelfGrid",
1181
+ "view": "zE6uZW_view",
1182
+ "diffAdd": "zE6uZW_diffAdd",
1183
+ "workflowRow": "zE6uZW_workflowRow",
1184
+ "bookshelf": "zE6uZW_bookshelf",
1185
+ "coverPreview": "zE6uZW_coverPreview",
1186
+ "bookCardActions": "zE6uZW_bookCardActions",
1187
+ "diffSameBody": "zE6uZW_diffSameBody",
1188
+ "readerSegActive": "zE6uZW_readerSegActive",
1189
+ "spaceBetween": "zE6uZW_spaceBetween",
1190
+ "bookCardCover": "zE6uZW_bookCardCover",
1191
+ "badge": "zE6uZW_badge",
1192
+ "bookSwitchName": "zE6uZW_bookSwitchName",
1193
+ "dashHero": "zE6uZW_dashHero",
1194
+ "cardTitle": "zE6uZW_cardTitle",
1195
+ "bookCreateCard": "zE6uZW_bookCreateCard",
1196
+ "readerBody": "zE6uZW_readerBody",
1197
+ "importFileInfo": "zE6uZW_importFileInfo",
1198
+ "wsPreviewText": "zE6uZW_wsPreviewText",
1199
+ "importModalHead": "zE6uZW_importModalHead",
1200
+ "progressLineError": "zE6uZW_progressLineError",
1201
+ "bookCardBody": "zE6uZW_bookCardBody",
1202
+ "wsColumns": "zE6uZW_wsColumns",
1203
+ "entryIcon": "zE6uZW_entryIcon",
1204
+ "assistantFloatHeader": "zE6uZW_assistantFloatHeader",
1205
+ "navGroup": "zE6uZW_navGroup",
1206
+ "diffChange": "zE6uZW_diffChange",
1207
+ "navTabBadgeDanger": "zE6uZW_navTabBadgeDanger",
1208
+ "fadeIn": "zE6uZW_fadeIn",
1209
+ "fieldLabel": "zE6uZW_fieldLabel",
1210
+ "importField": "zE6uZW_importField",
1211
+ "chapterNum": "zE6uZW_chapterNum",
1212
+ "navSpacer": "zE6uZW_navSpacer",
1213
+ "shelfFilters": "zE6uZW_shelfFilters",
1214
+ "navTitle": "zE6uZW_navTitle",
1215
+ "wsAppliedBanner": "zE6uZW_wsAppliedBanner",
1216
+ "importError": "zE6uZW_importError",
1217
+ "volumeGroupHeader": "zE6uZW_volumeGroupHeader",
1218
+ "bookSwitchArrow": "zE6uZW_bookSwitchArrow",
1219
+ "bookAdd": "zE6uZW_bookAdd",
1220
+ "legendOld": "zE6uZW_legendOld",
1221
+ "tlBar": "zE6uZW_tlBar",
1222
+ "importModalTabs": "zE6uZW_importModalTabs",
1223
+ "chapterFocus": "zE6uZW_chapterFocus",
1224
+ "diffColumn": "zE6uZW_diffColumn",
1225
+ "createBookTitle": "zE6uZW_createBookTitle",
1226
+ "bookCardBlurb": "zE6uZW_bookCardBlurb",
1227
+ "createBookIcon": "zE6uZW_createBookIcon",
1228
+ "helpTipText": "zE6uZW_helpTipText",
1229
+ "navTabBadgeDone": "zE6uZW_navTabBadgeDone",
1230
+ "diffNew": "zE6uZW_diffNew",
1187
1231
  "shelfSearch": "zE6uZW_shelfSearch",
1188
- "bookCardProgressBar": "zE6uZW_bookCardProgressBar",
1232
+ "bookAddIcon": "zE6uZW_bookAddIcon",
1189
1233
  "workflowBody": "zE6uZW_workflowBody",
1190
- "badgeError": "zE6uZW_badgeError",
1191
- "importModalActions": "zE6uZW_importModalActions",
1192
- "iconButton": "zE6uZW_iconButton",
1193
- "assetGrid": "zE6uZW_assetGrid",
1194
- "wsColumn": "zE6uZW_wsColumn",
1195
- "readerLoading": "zE6uZW_readerLoading",
1196
- "bookCardActions": "zE6uZW_bookCardActions",
1197
- "assistantResize": "zE6uZW_assistantResize",
1198
- "chapterPreview": "zE6uZW_chapterPreview",
1199
- "readerMain": "zE6uZW_readerMain",
1200
- "row": "zE6uZW_row",
1201
- "tlSegCurrent": "zE6uZW_tlSegCurrent",
1202
- "importModal": "zE6uZW_importModal",
1203
- "dashHeroEyebrow": "zE6uZW_dashHeroEyebrow"
1234
+ "buttonDanger": "zE6uZW_buttonDanger",
1235
+ "volumeGroupToggle": "zE6uZW_volumeGroupToggle",
1236
+ "diffTagNew": "zE6uZW_diffTagNew"
1204
1237
  };
1205
1238
  //#endregion
1206
1239
  //#region src/client/panel/AssistantTab.tsx
@@ -4613,27 +4646,52 @@ window.__ModuleLoader__.load({
4613
4646
  //#region src/client/panel/ImportModal.tsx
4614
4647
  /**
4615
4648
  * 导入小说弹窗:两种模式 ——
4616
- * A) 已有项目目录(含 novel-project.json)→ 登记/激活书架;
4617
- * B) txt/md 全本 → 服务器拆章建项目后登记书架。
4618
- * 浏览器无法直接浏览宿主机目录,故两种模式均输入绝对路径(粘贴或手输)。
4649
+ * A) 已有项目目录(含 novel-project.json)→ 登记/激活书架(粘贴服务器本地路径);
4650
+ * B) txt/md 全本 → 点击选择文件,浏览器读取内容 → 服务器拆章预览 → 确认后导入。
4651
+ * Mode B 也保留「服务器本地路径」高级选项(大文件或服务器端已有文件时用)。
4619
4652
  */
4620
4653
  function ImportModal({ api, onClose, onImported }) {
4621
4654
  const [mode, setMode] = (0, react.useState)("dir");
4622
4655
  const [dir, setDir] = (0, react.useState)("");
4656
+ const fileInputRef = (0, react.useRef)(null);
4657
+ const [fileName, setFileName] = (0, react.useState)("");
4658
+ const [fileText, setFileText] = (0, react.useState)(null);
4659
+ const [previewing, setPreviewing] = (0, react.useState)(false);
4660
+ const [preview, setPreview] = (0, react.useState)(null);
4661
+ const [showPath, setShowPath] = (0, react.useState)(false);
4623
4662
  const [filePath, setFilePath] = (0, react.useState)("");
4624
4663
  const [outDir, setOutDir] = (0, react.useState)("");
4625
4664
  const [busy, setBusy] = (0, react.useState)(false);
4626
4665
  const [error, setError] = (0, react.useState)("");
4627
4666
  const [result, setResult] = (0, react.useState)(null);
4628
- const runImport = async () => {
4667
+ /** 选择文件 读取内容 调服务器预览拆章。 */
4668
+ const onPickFile = async (file) => {
4669
+ if (file === void 0) return;
4629
4670
  setError("");
4630
4671
  setResult(null);
4631
- if (mode === "dir") {
4632
- const d = dir.trim();
4633
- if (d === "") {
4634
- setError("请输入项目目录(含 novel-project.json 的文件夹)");
4635
- return;
4636
- }
4672
+ setPreview(null);
4673
+ setFileName(file.name);
4674
+ setPreviewing(true);
4675
+ try {
4676
+ const text = await file.text();
4677
+ setFileText(text);
4678
+ const p = await api.bookImportTextPreview(text, file.name);
4679
+ setPreview(p);
4680
+ } catch (err) {
4681
+ setError(err.message);
4682
+ } finally {
4683
+ setPreviewing(false);
4684
+ }
4685
+ };
4686
+ const runImport = async () => {
4687
+ setError("");
4688
+ setResult(null);
4689
+ if (mode === "dir") {
4690
+ const d = dir.trim();
4691
+ if (d === "") {
4692
+ setError("请输入项目目录(含 novel-project.json 的文件夹)");
4693
+ return;
4694
+ }
4637
4695
  setBusy(true);
4638
4696
  try {
4639
4697
  const r = await api.bookImportDir(d);
@@ -4648,16 +4706,13 @@ window.__ModuleLoader__.load({
4648
4706
  } finally {
4649
4707
  setBusy(false);
4650
4708
  }
4651
- } else {
4652
- const f = filePath.trim();
4653
- if (f === "") {
4654
- setError("请输入 txt/md 文件路径");
4655
- return;
4656
- }
4709
+ return;
4710
+ }
4711
+ if (fileText !== null && fileText.length > 0) {
4657
4712
  setBusy(true);
4658
4713
  try {
4659
4714
  const o = outDir.trim();
4660
- const r = await api.bookImportText(f, o !== "" ? o : void 0);
4715
+ const r = await api.bookImportTextContent(fileText, fileName, o !== "" ? o : void 0);
4661
4716
  setResult({
4662
4717
  kind: "text",
4663
4718
  bookName: r.bookName,
@@ -4670,8 +4725,36 @@ window.__ModuleLoader__.load({
4670
4725
  } finally {
4671
4726
  setBusy(false);
4672
4727
  }
4728
+ return;
4729
+ }
4730
+ const f = filePath.trim();
4731
+ if (f === "") {
4732
+ setError("请先选择文件,或输入服务器本地文件路径");
4733
+ return;
4734
+ }
4735
+ setBusy(true);
4736
+ try {
4737
+ const o = outDir.trim();
4738
+ const r = await api.bookImportText(f, o !== "" ? o : void 0);
4739
+ setResult({
4740
+ kind: "text",
4741
+ bookName: r.bookName,
4742
+ chapters: r.chapters,
4743
+ skipped: r.skipped
4744
+ });
4745
+ await onImported();
4746
+ } catch (err) {
4747
+ setError(err.message);
4748
+ } finally {
4749
+ setBusy(false);
4673
4750
  }
4674
4751
  };
4752
+ const switchMode = (m) => {
4753
+ setMode(m);
4754
+ setError("");
4755
+ setResult(null);
4756
+ setPreview(null);
4757
+ };
4675
4758
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
4676
4759
  className: panel_module_css_default.importModalOverlay,
4677
4760
  onClick: (e) => {
@@ -4703,9 +4786,7 @@ window.__ModuleLoader__.load({
4703
4786
  "aria-selected": mode === "dir",
4704
4787
  className: `${panel_module_css_default.button} ${mode === "dir" ? panel_module_css_default.buttonPrimary : ""}`,
4705
4788
  onClick: () => {
4706
- setMode("dir");
4707
- setError("");
4708
- setResult(null);
4789
+ switchMode("dir");
4709
4790
  },
4710
4791
  children: "📂 A · 已有项目目录"
4711
4792
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
@@ -4714,9 +4795,7 @@ window.__ModuleLoader__.load({
4714
4795
  "aria-selected": mode === "text",
4715
4796
  className: `${panel_module_css_default.button} ${mode === "text" ? panel_module_css_default.buttonPrimary : ""}`,
4716
4797
  onClick: () => {
4717
- setMode("text");
4718
- setError("");
4719
- setResult(null);
4798
+ switchMode("text");
4720
4799
  },
4721
4800
  children: "📄 B · txt/md 全本"
4722
4801
  })]
@@ -4739,18 +4818,75 @@ window.__ModuleLoader__.load({
4739
4818
  className: panel_module_css_default.importHint,
4740
4819
  children: "目录需含 novel-project.json。已在书架中的目录会直接切换激活,不会重复登记。"
4741
4820
  })] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
4742
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
4821
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
4822
+ ref: fileInputRef,
4823
+ type: "file",
4824
+ accept: ".txt,.md,text/plain,text/markdown",
4825
+ style: { display: "none" },
4826
+ onChange: (e) => {
4827
+ onPickFile(e.target.files?.[0]);
4828
+ e.target.value = "";
4829
+ }
4830
+ }),
4831
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4743
4832
  className: panel_module_css_default.importField,
4744
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "全本文本文件(绝对路径,txt / md)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
4745
- className: panel_module_css_default.input,
4746
- type: "text",
4747
- placeholder: "例如 D:\\novels\\全本.txt",
4748
- value: filePath,
4749
- onChange: (e) => {
4750
- setFilePath(e.target.value);
4751
- }
4833
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "全本文本文件(txt / md)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
4834
+ type: "button",
4835
+ className: `${panel_module_css_default.button} ${panel_module_css_default.buttonPrimary}`,
4836
+ onClick: () => {
4837
+ fileInputRef.current?.click();
4838
+ },
4839
+ children: "📄 选择文件"
4752
4840
  })]
4753
4841
  }),
4842
+ fileName !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4843
+ className: panel_module_css_default.importFileInfo,
4844
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: ["已选择:", fileName] }), previewing && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4845
+ className: panel_module_css_default.meta,
4846
+ children: "正在拆章预览…"
4847
+ })]
4848
+ }),
4849
+ preview !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4850
+ className: panel_module_css_default.importPreview,
4851
+ children: [
4852
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [
4853
+ "📖 《",
4854
+ preview.bookName,
4855
+ "》 · 识别到 ",
4856
+ preview.chapters.length,
4857
+ " 章"
4858
+ ] }),
4859
+ preview.chapters.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("ul", {
4860
+ className: panel_module_css_default.importPreviewList,
4861
+ children: [preview.chapters.slice(0, 5).map((c) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", { children: [
4862
+ "第",
4863
+ c.no,
4864
+ "章 ",
4865
+ c.title,
4866
+ "(",
4867
+ c.chars,
4868
+ " 字)"
4869
+ ] }, c.no)), preview.chapters.length > 5 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
4870
+ className: panel_module_css_default.meta,
4871
+ children: [
4872
+ "… 共 ",
4873
+ preview.chapters.length,
4874
+ " 章"
4875
+ ]
4876
+ })]
4877
+ }),
4878
+ preview.skipped.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4879
+ className: panel_module_css_default.meta,
4880
+ children: [
4881
+ "跳过 ",
4882
+ preview.skipped.length,
4883
+ " 个过短章节:",
4884
+ preview.skipped.slice(0, 5).join("、"),
4885
+ preview.skipped.length > 5 ? " 等" : ""
4886
+ ]
4887
+ })
4888
+ ]
4889
+ }),
4754
4890
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
4755
4891
  className: panel_module_css_default.importField,
4756
4892
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "输出目录(可选,默认 ~/.dsh/novels/书名)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
@@ -4763,9 +4899,29 @@ window.__ModuleLoader__.load({
4763
4899
  }
4764
4900
  })]
4765
4901
  }),
4902
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
4903
+ type: "button",
4904
+ className: `${panel_module_css_default.button} ${panel_module_css_default.buttonSmall}`,
4905
+ onClick: () => {
4906
+ setShowPath(!showPath);
4907
+ },
4908
+ children: showPath ? "▾ 收起高级选项" : "▸ 高级:使用服务器本地文件路径"
4909
+ }),
4910
+ showPath && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
4911
+ className: panel_module_css_default.importField,
4912
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "服务器本地文件绝对路径(大文件或服务器端已有文件时用)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
4913
+ className: panel_module_css_default.input,
4914
+ type: "text",
4915
+ placeholder: "例如 D:\\novels\\全本.txt",
4916
+ value: filePath,
4917
+ onChange: (e) => {
4918
+ setFilePath(e.target.value);
4919
+ }
4920
+ })]
4921
+ }),
4766
4922
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
4767
4923
  className: panel_module_css_default.importHint,
4768
- children: "服务器按「第X章 / 第X回 / 第X / 第X卷」(可带 # 前缀)拆章;正文过短(<50 字)的章节会跳过并列出。"
4924
+ children: "服务器按「第X章/第X回/第X节/第X卷」、中文数字章节(一、二、三…)、序章/楔子/尾声、英文 Chapter N 拆章;正文过短(<50 字)的章节会跳过并列出。"
4769
4925
  })
4770
4926
  ] }),
4771
4927
  error !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -5872,7 +6028,7 @@ window.__ModuleLoader__.load({
5872
6028
  "high",
5873
6029
  "max"
5874
6030
  ];
5875
- const PLUGIN_VERSION = "1.4.0";
6031
+ const PLUGIN_VERSION = "1.4.1";
5876
6032
  /** GitHub 仓库地址(关于区块点击跳转)。 */
5877
6033
  const REPO_URL = "https://github.com/watersxya/dsh-novel-forge";
5878
6034
  /** Whether any chapter is being generated right now. */
@@ -6617,6 +6773,28 @@ window.__ModuleLoader__.load({
6617
6773
  setBusy(false);
6618
6774
  }
6619
6775
  };
6776
+ /** 反推大纲:从已写章节正文反向生成全书总纲(流式进度)。 */
6777
+ const handleReverseOutline = async () => {
6778
+ if (project === null) return;
6779
+ if (!window.confirm("将从已写章节正文反推出全书总纲(覆盖当前大纲文本,不影响章节/设定/进度)。确定继续?")) return;
6780
+ setBusy(true);
6781
+ setError("");
6782
+ try {
6783
+ await api.outlineReverse((frame) => {
6784
+ if (frame.type === "outline-progress") pushProgress(`反推大纲:${frame.phase}(${frame.done}/${frame.total})`, "info");
6785
+ else if (frame.type === "outline-done") {
6786
+ setOutlineText(frame.outline);
6787
+ pushProgress(`反推大纲完成(${frame.chars} 字),已保存为当前总纲`, "done");
6788
+ }
6789
+ });
6790
+ await refresh(false);
6791
+ } catch (err) {
6792
+ setError(err.message);
6793
+ pushProgress(`反推大纲失败:${err.message}`, "error");
6794
+ } finally {
6795
+ setBusy(false);
6796
+ }
6797
+ };
6620
6798
  /** 大纲页「更新大纲」展开/收起(展开时预填当前大纲文本)。 */
6621
6799
  const handleToggleUpdateOutline = () => {
6622
6800
  if (!updatingOutline && project !== null) setOutlineText(project.outline);
@@ -9476,26 +9654,39 @@ window.__ModuleLoader__.load({
9476
9654
  children: tt("tab.overview")
9477
9655
  }), project !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9478
9656
  className: panel_module_css_default.row,
9479
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
9480
- className: panel_module_css_default.meta,
9481
- children: [
9482
- tt("overview.bookName"),
9483
- ": ",
9484
- project.bookName,
9485
- " · ",
9486
- project.outline.length,
9487
- " 字",
9488
- project.outlinePath !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [" · ", project.outlinePath] })
9489
- ]
9490
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9491
- type: "button",
9492
- className: panel_module_css_default.button,
9493
- disabled: busy,
9494
- onClick: () => {
9495
- handleToggleUpdateOutline();
9496
- },
9497
- children: updatingOutline ? "收起" : "更新大纲"
9498
- })]
9657
+ children: [
9658
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
9659
+ className: panel_module_css_default.meta,
9660
+ children: [
9661
+ tt("overview.bookName"),
9662
+ ": ",
9663
+ project.bookName,
9664
+ " · ",
9665
+ project.outline.length,
9666
+ " ",
9667
+ project.outlinePath !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [" · ", project.outlinePath] })
9668
+ ]
9669
+ }),
9670
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9671
+ type: "button",
9672
+ className: `${panel_module_css_default.button} ${panel_module_css_default.buttonPrimary}`,
9673
+ disabled: busy || !(project.chapters ?? []).some((c) => c.status === "written" || c.status === "approved" || c.status === "rejected"),
9674
+ onClick: () => {
9675
+ handleReverseOutline();
9676
+ },
9677
+ title: "从已写章节正文反向生成全书总纲(覆盖当前大纲文本)",
9678
+ children: "🔄 反推大纲"
9679
+ }),
9680
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9681
+ type: "button",
9682
+ className: panel_module_css_default.button,
9683
+ disabled: busy,
9684
+ onClick: () => {
9685
+ handleToggleUpdateOutline();
9686
+ },
9687
+ children: updatingOutline ? "收起" : "更新大纲"
9688
+ })
9689
+ ]
9499
9690
  })]
9500
9691
  }), project === null ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
9501
9692
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -9615,10 +9806,14 @@ window.__ModuleLoader__.load({
9615
9806
  })
9616
9807
  ]
9617
9808
  })
9618
- ] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("pre", {
9809
+ ] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9810
+ className: panel_module_css_default.meta,
9811
+ style: { marginBottom: 6 },
9812
+ children: "大纲是本书的「出生证明」;已写章节可点右上角「🔄 反推大纲」从正文反推,或「更新大纲」手动修订。"
9813
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("pre", {
9619
9814
  className: panel_module_css_default.outlineReadonly,
9620
9815
  children: project.outline
9621
- })]
9816
+ })] })]
9622
9817
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9623
9818
  className: panel_module_css_default.card,
9624
9819
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
@@ -10878,50 +11073,70 @@ window.__ModuleLoader__.load({
10878
11073
  ]
10879
11074
  }),
10880
11075
  activeTab === "assets" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AssetsTab, { api }),
10881
- activeTab === "settings" && configDraft !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
10882
- className: panel_module_css_default.card,
10883
- children: [
10884
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
10885
- className: panel_module_css_default.cardTitle,
10886
- children: tt("settings.title")
10887
- }),
10888
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
10889
- className: panel_module_css_default.field,
10890
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
10891
- className: panel_module_css_default.fieldLabel,
10892
- children: tt("settings.outlinePath")
10893
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
10894
- className: panel_module_css_default.input,
10895
- value: configDraft.outlinePath,
10896
- onChange: (e) => {
10897
- setConfigDraft({
10898
- ...configDraft,
10899
- outlinePath: e.target.value
10900
- });
10901
- }
10902
- })]
10903
- }),
10904
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
10905
- className: panel_module_css_default.field,
10906
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
10907
- className: panel_module_css_default.fieldLabel,
10908
- children: tt("settings.outputDir")
10909
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
10910
- className: panel_module_css_default.input,
10911
- value: configDraft.outputDir,
10912
- onChange: (e) => {
10913
- setConfigDraft({
10914
- ...configDraft,
10915
- outputDir: e.target.value
10916
- });
10917
- }
10918
- })]
10919
- }),
10920
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
10921
- className: panel_module_css_default.row,
10922
- style: { alignItems: "flex-start" },
10923
- children: [
10924
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11076
+ activeTab === "settings" && configDraft !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
11077
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11078
+ className: `${panel_module_css_default.card} ${panel_module_css_default.settingsCard}`,
11079
+ children: [
11080
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11081
+ className: panel_module_css_default.cardTitle,
11082
+ children: "📁 路径与输出"
11083
+ }),
11084
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11085
+ className: panel_module_css_default.field,
11086
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11087
+ className: panel_module_css_default.fieldLabel,
11088
+ children: tt("settings.outlinePath")
11089
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
11090
+ className: panel_module_css_default.input,
11091
+ value: configDraft.outlinePath,
11092
+ onChange: (e) => {
11093
+ setConfigDraft({
11094
+ ...configDraft,
11095
+ outlinePath: e.target.value
11096
+ });
11097
+ }
11098
+ })]
11099
+ }),
11100
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11101
+ className: panel_module_css_default.field,
11102
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11103
+ className: panel_module_css_default.fieldLabel,
11104
+ children: tt("settings.outputDir")
11105
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
11106
+ className: panel_module_css_default.input,
11107
+ value: configDraft.outputDir,
11108
+ onChange: (e) => {
11109
+ setConfigDraft({
11110
+ ...configDraft,
11111
+ outputDir: e.target.value
11112
+ });
11113
+ }
11114
+ })]
11115
+ }),
11116
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
11117
+ className: panel_module_css_default.row,
11118
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
11119
+ type: "button",
11120
+ className: panel_module_css_default.button,
11121
+ onClick: () => {
11122
+ api.openFolder();
11123
+ },
11124
+ children: tt("settings.openFolder")
11125
+ })
11126
+ })
11127
+ ]
11128
+ }),
11129
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11130
+ className: `${panel_module_css_default.card} ${panel_module_css_default.settingsCard}`,
11131
+ children: [
11132
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11133
+ className: panel_module_css_default.cardTitle,
11134
+ children: "🤖 模型与推理"
11135
+ }),
11136
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11137
+ className: panel_module_css_default.row,
11138
+ style: { alignItems: "flex-start" },
11139
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
10925
11140
  className: panel_module_css_default.field,
10926
11141
  style: { flex: 1 },
10927
11142
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
@@ -10937,8 +11152,7 @@ window.__ModuleLoader__.load({
10937
11152
  });
10938
11153
  }
10939
11154
  })]
10940
- }),
10941
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11155
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
10942
11156
  className: panel_module_css_default.field,
10943
11157
  style: { flex: 1.4 },
10944
11158
  children: [
@@ -10981,8 +11195,12 @@ window.__ModuleLoader__.load({
10981
11195
  }
10982
11196
  })
10983
11197
  ]
10984
- }),
10985
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11198
+ })]
11199
+ }),
11200
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11201
+ className: panel_module_css_default.row,
11202
+ style: { alignItems: "flex-start" },
11203
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
10986
11204
  className: panel_module_css_default.field,
10987
11205
  style: { flex: 1 },
10988
11206
  children: [
@@ -11009,10 +11227,43 @@ window.__ModuleLoader__.load({
11009
11227
  children: tt("settings.reasoningHint")
11010
11228
  })
11011
11229
  ]
11012
- })
11013
- ]
11014
- }),
11015
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11230
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11231
+ className: panel_module_css_default.field,
11232
+ style: { flex: 1 },
11233
+ children: [
11234
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11235
+ className: panel_module_css_default.fieldLabel,
11236
+ children: tt("settings.analysisReasoning")
11237
+ }),
11238
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("select", {
11239
+ className: panel_module_css_default.input,
11240
+ value: configDraft.analysisReasoning ?? "low",
11241
+ onChange: (e) => {
11242
+ setConfigDraft({
11243
+ ...configDraft,
11244
+ analysisReasoning: e.target.value
11245
+ });
11246
+ },
11247
+ children: REASONING_OPTIONS.map((v) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
11248
+ value: v,
11249
+ children: tt(`settings.reasoning.${v}`)
11250
+ }, v))
11251
+ }),
11252
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11253
+ className: panel_module_css_default.meta,
11254
+ children: tt("settings.analysisReasoningHint")
11255
+ })
11256
+ ]
11257
+ })]
11258
+ })
11259
+ ]
11260
+ }),
11261
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11262
+ className: `${panel_module_css_default.card} ${panel_module_css_default.settingsCard}`,
11263
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11264
+ className: panel_module_css_default.cardTitle,
11265
+ children: "🎨 生图(豆包)"
11266
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11016
11267
  className: panel_module_css_default.row,
11017
11268
  children: [
11018
11269
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -11084,177 +11335,138 @@ window.__ModuleLoader__.load({
11084
11335
  ]
11085
11336
  })
11086
11337
  ]
11087
- }),
11088
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11089
- className: panel_module_css_default.row,
11090
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11091
- className: panel_module_css_default.field,
11092
- style: { flex: 1 },
11093
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11094
- className: panel_module_css_default.fieldLabel,
11095
- children: tt("settings.chapterChars")
11096
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
11097
- className: panel_module_css_default.input,
11098
- type: "number",
11099
- min: 1e3,
11100
- max: 2e4,
11101
- value: configDraft.chapterChars,
11102
- onChange: (e) => {
11103
- setConfigDraft({
11104
- ...configDraft,
11105
- chapterChars: Number(e.target.value)
11106
- });
11107
- }
11108
- })]
11109
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11110
- className: panel_module_css_default.field,
11111
- style: { flex: 1 },
11112
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11113
- className: panel_module_css_default.fieldLabel,
11114
- children: tt("settings.maxTokens")
11115
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
11116
- className: panel_module_css_default.input,
11117
- type: "number",
11118
- min: 2e3,
11119
- max: 64e3,
11120
- value: configDraft.maxTokens,
11121
- onChange: (e) => {
11122
- setConfigDraft({
11123
- ...configDraft,
11124
- maxTokens: Number(e.target.value)
11125
- });
11126
- }
11127
- })]
11128
- })]
11129
- }),
11130
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11131
- className: panel_module_css_default.row,
11132
- children: [
11133
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11134
- className: panel_module_css_default.field,
11135
- style: { flex: 1 },
11136
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11137
- className: panel_module_css_default.fieldLabel,
11138
- children: tt("settings.reviewPassScore")
11139
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
11140
- className: panel_module_css_default.input,
11141
- type: "number",
11142
- min: 0,
11143
- max: 100,
11144
- value: configDraft.reviewPassScore,
11145
- onChange: (e) => {
11146
- setConfigDraft({
11147
- ...configDraft,
11148
- reviewPassScore: Number(e.target.value)
11149
- });
11150
- }
11151
- })]
11152
- }),
11153
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11154
- className: panel_module_css_default.field,
11155
- style: { flex: 1 },
11156
- children: [
11157
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11338
+ })]
11339
+ }),
11340
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11341
+ className: `${panel_module_css_default.card} ${panel_module_css_default.settingsCard}`,
11342
+ children: [
11343
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11344
+ className: panel_module_css_default.cardTitle,
11345
+ children: "✍️ 写作与审稿参数"
11346
+ }),
11347
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11348
+ className: panel_module_css_default.row,
11349
+ children: [
11350
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11351
+ className: panel_module_css_default.field,
11352
+ style: { flex: 1 },
11353
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11158
11354
  className: panel_module_css_default.fieldLabel,
11159
- children: tt("settings.editorFontSize")
11160
- }),
11161
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("select", {
11355
+ children: tt("settings.chapterChars")
11356
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
11162
11357
  className: panel_module_css_default.input,
11163
- value: editorFontSize,
11358
+ type: "number",
11359
+ min: 1e3,
11360
+ max: 2e4,
11361
+ value: configDraft.chapterChars,
11164
11362
  onChange: (e) => {
11165
- changeEditorFontSize(Number(e.target.value));
11166
- },
11167
- children: [
11168
- 12,
11169
- 13,
11170
- 14,
11171
- 15,
11172
- 16,
11173
- 18,
11174
- 20,
11175
- 22,
11176
- 24
11177
- ].map((v) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("option", {
11178
- value: v,
11179
- children: [v, "px"]
11180
- }, v))
11181
- }),
11182
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11183
- className: panel_module_css_default.meta,
11184
- children: tt("settings.editorFontSizeHint")
11185
- })
11186
- ]
11187
- }),
11188
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11189
- className: panel_module_css_default.field,
11190
- style: { flex: 1 },
11191
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11192
- className: panel_module_css_default.fieldLabel,
11193
- children: tt("settings.autoReview")
11194
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
11195
- className: panel_module_css_default.input,
11196
- value: configDraft.autoReview ? "1" : "0",
11197
- onChange: (e) => {
11198
- setConfigDraft({
11199
- ...configDraft,
11200
- autoReview: e.target.value === "1"
11201
- });
11202
- },
11203
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
11204
- value: "1",
11205
- children: "✓ 是"
11206
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
11207
- value: "0",
11208
- children: "✗ 否"
11363
+ setConfigDraft({
11364
+ ...configDraft,
11365
+ chapterChars: Number(e.target.value)
11366
+ });
11367
+ }
11209
11368
  })]
11210
- })]
11211
- }),
11212
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11213
- className: panel_module_css_default.field,
11214
- style: { flex: 1 },
11215
- children: [
11216
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11369
+ }),
11370
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11371
+ className: panel_module_css_default.field,
11372
+ style: { flex: 1 },
11373
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11217
11374
  className: panel_module_css_default.fieldLabel,
11218
- children: tt("settings.autoAuthorReview")
11219
- }),
11220
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
11375
+ children: tt("settings.maxTokens")
11376
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
11221
11377
  className: panel_module_css_default.input,
11222
- value: configDraft.autoAuthorReview ? "1" : "0",
11378
+ type: "number",
11379
+ min: 2e3,
11380
+ max: 64e3,
11381
+ value: configDraft.maxTokens,
11223
11382
  onChange: (e) => {
11224
11383
  setConfigDraft({
11225
11384
  ...configDraft,
11226
- autoAuthorReview: e.target.value === "1"
11385
+ maxTokens: Number(e.target.value)
11227
11386
  });
11228
- },
11229
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
11230
- value: "1",
11231
- children: " 是"
11232
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
11233
- value: "0",
11234
- children: "✗ 否"
11235
- })]
11236
- }),
11237
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11238
- className: panel_module_css_default.meta,
11239
- children: tt("settings.autoAuthorReviewHint")
11240
- })
11241
- ]
11242
- }),
11243
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11244
- className: panel_module_css_default.field,
11245
- style: { flex: 1 },
11246
- children: [
11247
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11387
+ }
11388
+ })]
11389
+ }),
11390
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11391
+ className: panel_module_css_default.field,
11392
+ style: { flex: 1 },
11393
+ children: [
11394
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11395
+ className: panel_module_css_default.fieldLabel,
11396
+ children: tt("settings.editorFontSize")
11397
+ }),
11398
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("select", {
11399
+ className: panel_module_css_default.input,
11400
+ value: editorFontSize,
11401
+ onChange: (e) => {
11402
+ changeEditorFontSize(Number(e.target.value));
11403
+ },
11404
+ children: [
11405
+ 12,
11406
+ 13,
11407
+ 14,
11408
+ 15,
11409
+ 16,
11410
+ 18,
11411
+ 20,
11412
+ 22,
11413
+ 24
11414
+ ].map((v) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("option", {
11415
+ value: v,
11416
+ children: [v, "px"]
11417
+ }, v))
11418
+ }),
11419
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11420
+ className: panel_module_css_default.meta,
11421
+ children: tt("settings.editorFontSizeHint")
11422
+ })
11423
+ ]
11424
+ })
11425
+ ]
11426
+ }),
11427
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11428
+ className: panel_module_css_default.row,
11429
+ children: [
11430
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11431
+ className: panel_module_css_default.field,
11432
+ style: { flex: 1 },
11433
+ children: [
11434
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11435
+ className: panel_module_css_default.fieldLabel,
11436
+ children: tt("settings.reviewPassScore")
11437
+ }),
11438
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
11439
+ className: panel_module_css_default.input,
11440
+ type: "number",
11441
+ min: 0,
11442
+ max: 100,
11443
+ value: configDraft.reviewPassScore,
11444
+ onChange: (e) => {
11445
+ setConfigDraft({
11446
+ ...configDraft,
11447
+ reviewPassScore: Number(e.target.value)
11448
+ });
11449
+ }
11450
+ }),
11451
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11452
+ className: panel_module_css_default.meta,
11453
+ children: "通过判定:综合评分 ≥ 此分数(默认 70),或无 high 级问题且评分 ≥ 60;建议设 60-80。"
11454
+ })
11455
+ ]
11456
+ }),
11457
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11458
+ className: panel_module_css_default.field,
11459
+ style: { flex: 1 },
11460
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11248
11461
  className: panel_module_css_default.fieldLabel,
11249
- children: tt("settings.autoReviewAfterRevise")
11250
- }),
11251
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
11462
+ children: tt("settings.autoReview")
11463
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
11252
11464
  className: panel_module_css_default.input,
11253
- value: configDraft.autoReviewAfterRevise ? "1" : "0",
11465
+ value: configDraft.autoReview ? "1" : "0",
11254
11466
  onChange: (e) => {
11255
11467
  setConfigDraft({
11256
11468
  ...configDraft,
11257
- autoReviewAfterRevise: e.target.value === "1"
11469
+ autoReview: e.target.value === "1"
11258
11470
  });
11259
11471
  },
11260
11472
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
@@ -11264,49 +11476,98 @@ window.__ModuleLoader__.load({
11264
11476
  value: "0",
11265
11477
  children: "✗ 否"
11266
11478
  })]
11267
- }),
11268
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11269
- className: panel_module_css_default.meta,
11270
- children: tt("settings.autoReviewAfterReviseHint")
11271
- })
11272
- ]
11273
- })
11274
- ]
11275
- }),
11276
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11479
+ })]
11480
+ }),
11481
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11482
+ className: panel_module_css_default.field,
11483
+ style: { flex: 1 },
11484
+ children: [
11485
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11486
+ className: panel_module_css_default.fieldLabel,
11487
+ children: tt("settings.autoAuthorReview")
11488
+ }),
11489
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
11490
+ className: panel_module_css_default.input,
11491
+ value: configDraft.autoAuthorReview ? "1" : "0",
11492
+ onChange: (e) => {
11493
+ setConfigDraft({
11494
+ ...configDraft,
11495
+ autoAuthorReview: e.target.value === "1"
11496
+ });
11497
+ },
11498
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
11499
+ value: "1",
11500
+ children: "✓ 是"
11501
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
11502
+ value: "0",
11503
+ children: "✗ 否"
11504
+ })]
11505
+ }),
11506
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11507
+ className: panel_module_css_default.meta,
11508
+ children: tt("settings.autoAuthorReviewHint")
11509
+ })
11510
+ ]
11511
+ }),
11512
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11513
+ className: panel_module_css_default.field,
11514
+ style: { flex: 1 },
11515
+ children: [
11516
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
11517
+ className: panel_module_css_default.fieldLabel,
11518
+ children: tt("settings.autoReviewAfterRevise")
11519
+ }),
11520
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
11521
+ className: panel_module_css_default.input,
11522
+ value: configDraft.autoReviewAfterRevise ? "1" : "0",
11523
+ onChange: (e) => {
11524
+ setConfigDraft({
11525
+ ...configDraft,
11526
+ autoReviewAfterRevise: e.target.value === "1"
11527
+ });
11528
+ },
11529
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
11530
+ value: "1",
11531
+ children: "✓ 是"
11532
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
11533
+ value: "0",
11534
+ children: "✗ 否"
11535
+ })]
11536
+ }),
11537
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11538
+ className: panel_module_css_default.meta,
11539
+ children: tt("settings.autoReviewAfterReviseHint")
11540
+ })
11541
+ ]
11542
+ })
11543
+ ]
11544
+ })
11545
+ ]
11546
+ }),
11547
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11548
+ className: `${panel_module_css_default.card} ${panel_module_css_default.settingsCard}`,
11549
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11277
11550
  className: panel_module_css_default.row,
11278
- children: [
11279
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
11280
- type: "button",
11281
- className: `${panel_module_css_default.button} ${panel_module_css_default.buttonPrimary}`,
11282
- disabled: busy,
11283
- onClick: () => {
11284
- handleSaveConfig();
11285
- },
11286
- children: tt("settings.save")
11287
- }),
11288
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
11289
- type: "button",
11290
- className: panel_module_css_default.button,
11291
- onClick: () => {
11292
- api.openFolder();
11293
- },
11294
- children: tt("settings.openFolder")
11295
- }),
11296
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
11297
- className: panel_module_css_default.meta,
11298
- children: [
11299
- "当前:",
11300
- config?.provider,
11301
- " / ",
11302
- config?.model,
11303
- " · ",
11304
- config?.outputDir
11305
- ]
11306
- })
11307
- ]
11308
- }),
11309
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11551
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
11552
+ type: "button",
11553
+ className: `${panel_module_css_default.button} ${panel_module_css_default.buttonPrimary}`,
11554
+ disabled: busy,
11555
+ onClick: () => {
11556
+ handleSaveConfig();
11557
+ },
11558
+ children: tt("settings.save")
11559
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
11560
+ className: panel_module_css_default.meta,
11561
+ children: [
11562
+ "当前:",
11563
+ config?.provider,
11564
+ " / ",
11565
+ config?.model,
11566
+ " · ",
11567
+ config?.outputDir
11568
+ ]
11569
+ })]
11570
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11310
11571
  className: panel_module_css_default.row,
11311
11572
  children: [
11312
11573
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
@@ -11332,11 +11593,11 @@ window.__ModuleLoader__.load({
11332
11593
  children: tt("settings.exportMd")
11333
11594
  })
11334
11595
  ]
11335
- })
11336
- ]
11337
- }),
11596
+ })]
11597
+ })
11598
+ ] }),
11338
11599
  activeTab === "settings" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11339
- className: panel_module_css_default.card,
11600
+ className: `${panel_module_css_default.card} ${panel_module_css_default.settingsCard}`,
11340
11601
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11341
11602
  className: panel_module_css_default.cardTitle,
11342
11603
  children: tt("settings.theme")