@taloswork/ose-shared 0.0.4 → 0.1.0

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.
Files changed (38) hide show
  1. package/mcp/.gitkeep +1 -1
  2. package/mcp/gen/mcp.json +2 -2
  3. package/package.json +3 -3
  4. package/skills/.gitkeep +1 -1
  5. package/skills/document/SKILL.md +7 -1
  6. package/skills/document/bin/deck-build.cjs +257 -23
  7. package/skills/document/bin/doc-gen.cjs +17 -1
  8. package/skills/document/bin/doc-scan.cjs +131 -18
  9. package/skills/document/bin/doc-text.cjs +146 -10
  10. package/skills/document/bin/html2pptx.cjs +17 -1
  11. package/skills/document/deck-design.md +5 -1
  12. package/skills/document/layouts/README.md +43 -10
  13. package/skills/document/layouts/brand-values.tpl +6 -8
  14. package/skills/document/layouts/color-palette.tpl +6 -10
  15. package/skills/document/layouts/gantt.tpl +4 -4
  16. package/skills/document/layouts/logo-guidelines.tpl +8 -8
  17. package/skills/document/layouts/map-distribution.tpl +5 -5
  18. package/skills/document/layouts/map-quad.tpl +7 -7
  19. package/skills/document/layouts/radar.tpl +4 -4
  20. package/skills/document/layouts/ring-progress.tpl +4 -4
  21. package/skills/document/layouts/slots.json +1 -763
  22. package/skills/document/layouts/steps-vertical.tpl +4 -4
  23. package/skills/document/layouts/team-row.tpl +5 -11
  24. package/skills/document/layouts/toc-panel.tpl +4 -7
  25. package/skills/document/layouts/type-specimen.tpl +9 -9
  26. package/skills/document/styles/anthropic/skin.css +1 -4
  27. package/skills/document/styles/apple/skin.css +1 -4
  28. package/skills/document/styles/black-gold/skin.css +1 -4
  29. package/skills/document/styles/branding/skin.css +1 -4
  30. package/skills/document/styles/cinereel/skin.css +1 -4
  31. package/skills/document/styles/cool/skin.css +1 -4
  32. package/skills/document/styles/hand-drawn/skin.css +1 -4
  33. package/skills/document/styles/ivory-gold/skin.css +1 -4
  34. package/skills/document/styles/magazine-ink/skin.css +0 -3
  35. package/skills/document/styles/mckinsey/skin.css +1 -4
  36. package/skills/document/styles/mono/skin.css +1 -4
  37. package/skills/document/styles/olive-gold/skin.css +1 -4
  38. package/skills/document/styles/swiss-grid/skin.css +0 -3
@@ -1,4 +1,4 @@
1
- <!-- layouts/steps-vertical — structure-only variant (paint via skin). -->
2
- <section class="slide" data-layout="steps-vertical" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:13px;letter-spacing:.28em">PROCESS</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">实施步骤</h2>
3
- <div class="step-line" style="position:absolute;left:158px;top:300px;bottom:96px;width:2px"></div><div style="position:absolute;left:96px;right:96px;top:290px;display:flex;flex-direction:column;gap:20px"><div style="display:flex;align-items:center;gap:28px;height:82px"><div class="step-circle" style="width:64px;height:64px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:26px;font-weight:700">1</div><div><div class="step-title" style="font-size:21px;font-weight:700">调研立项</div><p class="step-body" style="font-size:15px;line-height:1.5;margin-top:4px">明确目标与范围,组建团队。</p></div></div><div style="display:flex;align-items:center;gap:28px;height:82px"><div class="step-circle" style="width:64px;height:64px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:26px;font-weight:700">2</div><div><div class="step-title" style="font-size:21px;font-weight:700">方案设计</div><p class="step-body" style="font-size:15px;line-height:1.5;margin-top:4px">拆解关键路径,评审技术选型。</p></div></div><div style="display:flex;align-items:center;gap:28px;height:82px"><div class="step-circle" style="width:64px;height:64px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:26px;font-weight:700">3</div><div><div class="step-title" style="font-size:21px;font-weight:700">试点落地</div><p class="step-body" style="font-size:15px;line-height:1.5;margin-top:4px">小范围验证,收集反馈迭代。</p></div></div><div style="display:flex;align-items:center;gap:28px;height:82px"><div class="step-circle" style="width:64px;height:64px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:26px;font-weight:700">4</div><div><div class="step-title" style="font-size:21px;font-weight:700">全面推广</div><p class="step-body" style="font-size:15px;line-height:1.5;margin-top:4px">复制成功经验,规模化落地。</p></div></div></div>
4
- <div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">报告标题 / 章节</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">01</div></section>
1
+ <!-- layouts/steps-vertical — structure-only variant (paint via skin). rows.steps{name,body} — the numbered circle uses the row index ({{_n}}); the connector line spans the list, so 3–5 steps all sit right. -->
2
+ <section class="slide" data-layout="steps-vertical" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:13px;letter-spacing:.28em">{{eyebrow|PROCESS}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">{{title|实施步骤}}</h2>
3
+ <div style="position:absolute;left:96px;right:96px;top:290px;display:flex;flex-direction:column;gap:20px"><div class="step-line" style="position:absolute;left:62px;top:41px;bottom:41px;width:2px"></div>{{#steps}}<div style="position:relative;display:flex;align-items:center;gap:28px;height:82px"><div class="step-circle" style="width:64px;height:64px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:26px;font-weight:700">{{_n|1}}</div><div><div class="step-title" style="font-size:21px;font-weight:700">{{name|占位步骤}}</div><p class="step-body" style="font-size:15px;line-height:1.5;margin-top:4px">{{body|一句说明,替换为真实内容。}}</p></div></div>{{/steps}}</div>
4
+ <div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">{{pageno|01}}</div></section>
@@ -1,13 +1,7 @@
1
- <!-- layouts/team-row — structure-only (paint via skin). "团队成员":一排 5 张竖版人像槽 + 姓名(accent)+ 职位. 图片槽 = .surface 占位(后填真图,同 image-grid 约定);姓名走 .team-name/职位 .team-role. data-layout drives P1/P2/P3 + dedup. -->
1
+ <!-- layouts/team-row — structure-only (paint via skin). "团队成员":一排竖版人像槽 + 姓名(accent)+ 职位. rows.members{name,role} — 3–5 members share the row evenly. 图片槽 = .surface 占位(后填真图,同 image-grid 约定);姓名走 .team-name/职位 .team-role. data-layout drives P1/P2/P3 + dedup. -->
2
2
  <section class="slide" data-layout="team-row" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
3
- <div class="eyebrow-row" style="position:absolute;left:96px;top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:13px;letter-spacing:.28em">MEET OUR TEAM</span></div>
4
- <h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">团队成员</h2>
5
- <div style="position:absolute;left:96px;right:96px;top:262px;display:grid;grid-template-columns:repeat(5,1fr);gap:20px">
6
- <div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 01</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
7
- <div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 02</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
8
- <div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 03</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
9
- <div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 04</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
10
- <div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 05</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
11
- </div>
12
- <div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">报告标题 / 章节</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">01</div>
3
+ <div class="eyebrow-row" style="position:absolute;left:96px;top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:13px;letter-spacing:.28em">{{eyebrow|MEET OUR TEAM}}</span></div>
4
+ <h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">{{title|团队成员}}</h2>
5
+ <div style="position:absolute;left:96px;right:96px;top:262px;display:flex;gap:20px">{{#members}}<div style="flex:1"><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 {{_nn|01}}</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">{{name|占位姓名 · NAME}}</div><div class="team-role" style="font-size:13px;margin-top:3px">{{role|职位 Job Position}}</div></div>{{/members}}</div>
6
+ <div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">{{pageno|01}}</div>
13
7
  </section>
@@ -1,12 +1,9 @@
1
- <!-- layouts/toc-panel — structure-only. role=toc. 左大标题+插图 / 右深色面板目录. -->
1
+ <!-- layouts/toc-panel — structure-only. role=toc. 左大标题+插图 / 右深色面板目录. rows.entries{name,desc} — 3–5 chapters spread down the panel. -->
2
2
  <section class="slide" data-layout="toc-panel" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
3
- <div class="toc-topbar" style="position:absolute;left:80px;right:80px;top:34px;display:flex;justify-content:space-between;align-items:center;font-size:15px;font-weight:700"><span class="toc-brand">公司名称</span><span class="toc-brand">战略评审</span><span class="toc-brand">2026-03-15</span></div>
3
+ <div class="toc-topbar" style="position:absolute;left:80px;right:80px;top:34px;display:flex;justify-content:space-between;align-items:center;font-size:15px;font-weight:700"><span class="toc-brand">{{brand1|公司名称}}</span><span class="toc-brand">{{brand2|战略评审}}</span><span class="toc-brand">{{brand3|2026-03-15}}</span></div>
4
4
  <div class="surface" style="position:absolute;left:96px;top:150px;width:300px;height:280px;display:flex;align-items:center;justify-content:center;border-radius:var(--card-radius)"><span class="surface-label" style="font-size:14px">插图占位</span></div>
5
- <h1 class="cover-title" style="position:absolute;left:92px;top:456px;font-size:76px;line-height:1.02;letter-spacing:-1px">目录</h1>
5
+ <h1 class="cover-title" style="position:absolute;left:92px;top:456px;font-size:76px;line-height:1.02;letter-spacing:-1px">{{title|目录}}</h1>
6
6
  <div class="panel" style="position:absolute;left:700px;right:80px;top:96px;bottom:56px;border-radius:var(--card-radius);padding:56px 60px;display:flex;flex-direction:column;justify-content:space-between">
7
- <div class="panel-item"><div class="panel-item-title" style="font-size:30px;font-weight:800;letter-spacing:.5px">引言</div><p class="panel-item-desc" style="font-size:19px;margin-top:8px">简述本节要讨论的内容。</p></div>
8
- <div class="panel-item"><div class="panel-item-title" style="font-size:30px;font-weight:800;letter-spacing:.5px">我们的项目</div><p class="panel-item-desc" style="font-size:19px;margin-top:8px">简述本节要讨论的内容。</p></div>
9
- <div class="panel-item"><div class="panel-item-title" style="font-size:30px;font-weight:800;letter-spacing:.5px">关于我们</div><p class="panel-item-desc" style="font-size:19px;margin-top:8px">简述本节要讨论的内容。</p></div>
10
- <div class="panel-item"><div class="panel-item-title" style="font-size:30px;font-weight:800;letter-spacing:.5px">章节标题</div><p class="panel-item-desc" style="font-size:19px;margin-top:8px">简述本节要讨论的内容。</p></div>
7
+ {{#entries}}<div class="panel-item"><div class="panel-item-title" style="font-size:30px;font-weight:800;letter-spacing:.5px">{{name|占位章节}}</div><p class="panel-item-desc" style="font-size:19px;margin-top:8px">{{desc|简述本节要讨论的内容。}}</p></div>{{/entries}}
11
8
  </div>
12
9
  </section>
@@ -1,18 +1,18 @@
1
1
  <!-- layouts/type-specimen — structure-only (paint via skin). 品牌手册"字体规范":左 大 Aa 范样 + 字体名 + 字重梯度;右 标题/正文范样 + 字符集. 全部复用既有 class(.deck-title 衬线大字 / .card-body / .surface / .rule). data-layout drives P1/P2/P3 + dedup. -->
2
2
  <section class="slide" data-layout="type-specimen" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
3
- <div class="eyebrow-row" style="position:absolute;left:96px;top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:13px;letter-spacing:.28em">TYPOGRAPHY</span></div>
4
- <h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">字体规范</h2>
3
+ <div class="eyebrow-row" style="position:absolute;left:96px;top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:13px;letter-spacing:.28em">{{eyebrow|TYPOGRAPHY}}</span></div>
4
+ <h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">{{title|字体规范}}</h2>
5
5
  <!-- left: Aa specimen -->
6
- <div class="surface" style="position:absolute;left:96px;top:264px;width:520px;bottom:92px;padding:36px 40px;display:flex;flex-direction:column;justify-content:center"><div class="deck-title" style="font-size:168px;line-height:.9;">Aa</div><div class="deck-title" style="font-size:24px;margin-top:22px">Georgia · 衬线标题</div><div class="surface-label" style="font-size:14px;margin-top:8px;letter-spacing:.08em">Regular · Medium · Bold</div></div>
6
+ <div class="surface" style="position:absolute;left:96px;top:264px;width:520px;bottom:92px;padding:36px 40px;display:flex;flex-direction:column;justify-content:center"><div class="deck-title" style="font-size:168px;line-height:.9;">{{specimen|Aa}}</div><div class="deck-title" style="font-size:24px;margin-top:22px">{{font_name|占位字体 · 衬线标题}}</div><div class="surface-label" style="font-size:14px;margin-top:8px;letter-spacing:.08em">{{weights|Regular · Medium · Bold}}</div></div>
7
7
  <!-- right: samples -->
8
8
  <div style="position:absolute;left:660px;right:96px;top:274px">
9
- <div class="surface-label" style="font-size:12px;letter-spacing:.2em">HEADING · 标题</div>
10
- <div class="deck-title" style="font-size:40px;margin-top:6px">优雅、克制、有呼吸感</div>
9
+ <div class="surface-label" style="font-size:12px;letter-spacing:.2em">{{heading_label|HEADING · 标题}}</div>
10
+ <div class="deck-title" style="font-size:40px;margin-top:6px">{{heading_sample|优雅、克制、有呼吸感}}</div>
11
11
  <div class="rule" style="height:1px;margin:22px 0"></div>
12
- <div class="surface-label" style="font-size:12px;letter-spacing:.2em">BODY · 正文</div>
13
- <p class="card-body" style="font-size:16px;line-height:1.8;margin-top:8px">正文使用无衬线体,行距宽松、字重规整,保证长段落的可读性。标题用衬线、正文用无衬线,层级清晰,替换为真实内容。</p>
12
+ <div class="surface-label" style="font-size:12px;letter-spacing:.2em">{{body_label|BODY · 正文}}</div>
13
+ <p class="card-body" style="font-size:16px;line-height:1.8;margin-top:8px">{{body_sample|正文使用无衬线体,行距宽松、字重规整,保证长段落的可读性。标题用衬线、正文用无衬线,层级清晰,替换为真实内容。}}</p>
14
14
  <div class="rule" style="height:1px;margin:22px 0"></div>
15
- <div class="card-body" style="font-size:22px;letter-spacing:.04em">A B C D E F G a b c d e f g 0 1 2 3 4 5 6 7 8 9</div>
15
+ <div class="card-body" style="font-size:22px;letter-spacing:.04em">{{charset|A B C D E F G a b c d e f g 0 1 2 3 4 5 6 7 8 9}}</div>
16
16
  </div>
17
- <div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">报告标题 / 章节</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">01</div>
17
+ <div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">{{pageno|01}}</div>
18
18
  </section>
@@ -73,10 +73,7 @@
73
73
  .gantt-bar{background:var(--accent);opacity:.92}
74
74
  .gantt-grid{color:var(--muted)}
75
75
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(204,120,92,.14)}
76
- /* batch-8: radar + ring-progress */
77
- .radar-grid{stroke:var(--hair)}
78
- .radar-shape{fill:var(--accent);fill-opacity:.20;stroke:var(--accent);stroke-width:2}
79
- .radar-axis{fill:var(--muted)}
76
+ /* ring-progress */
80
77
  .ring-track{stroke:var(--hair)}
81
78
  .ring-fill{stroke:var(--accent)}
82
79
  .ring-num{color:var(--title)}
@@ -73,10 +73,7 @@
73
73
  .gantt-bar{background:var(--title);opacity:.85}
74
74
  .gantt-grid{color:var(--muted)}
75
75
  .map-pin{background:var(--title);box-shadow:0 0 0 4px rgba(255,255,255,.12)}
76
- /* batch-8: radar + ring-progress */
77
- .radar-grid{stroke:var(--hair)}
78
- .radar-shape{fill:rgba(245,245,247,.2);fill-opacity:.9;stroke:var(--title);stroke-width:2}
79
- .radar-axis{fill:var(--muted)}
76
+ /* ring-progress */
80
77
  .ring-track{stroke:var(--hair)}
81
78
  .ring-fill{stroke:var(--title)}
82
79
  .ring-num{color:var(--title)}
@@ -67,10 +67,7 @@
67
67
  .gantt-bar{background:var(--accent);opacity:.9}
68
68
  .gantt-grid{color:var(--muted)}
69
69
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(127,127,127,.12)}
70
- /* batch-8: radar + ring-progress */
71
- .radar-grid{stroke:var(--hair)}
72
- .radar-shape{fill:var(--accent);fill-opacity:.22;stroke:var(--accent);stroke-width:2}
73
- .radar-axis{fill:var(--muted)}
70
+ /* ring-progress */
74
71
  .ring-track{stroke:var(--hair)}
75
72
  .ring-fill{stroke:var(--accent)}
76
73
  .ring-num{color:var(--title)}
@@ -63,10 +63,7 @@
63
63
  /* gantt + map */
64
64
  .gantt-track{background:var(--hair)} .gantt-bar{background:var(--accent);opacity:.9} .gantt-grid{color:var(--muted)}
65
65
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(122,154,114,.16)}
66
- /* radar + ring-progress */
67
- .radar-grid{stroke:var(--hair)}
68
- .radar-shape{fill:var(--accent);fill-opacity:.24;stroke:var(--accent);stroke-width:2}
69
- .radar-axis{fill:var(--muted)}
66
+ /* ring-progress */
70
67
  .ring-track{stroke:var(--hair)} .ring-fill{stroke:var(--accent)} .ring-num{color:var(--title)}
71
68
 
72
69
  /* toc-panel: 浅色 skin → 深色对比面板 */
@@ -87,10 +87,7 @@
87
87
  .gantt-bar{background:var(--accent);opacity:.9}
88
88
  .gantt-grid{color:var(--muted)}
89
89
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(245,244,240,.12)}
90
- /* batch-8: radar + ring-progress */
91
- .radar-grid{stroke:var(--hair)}
92
- .radar-shape{fill:var(--accent);fill-opacity:.14;stroke:var(--accent);stroke-width:2}
93
- .radar-axis{fill:var(--muted)}
90
+ /* ring-progress */
94
91
  .ring-track{stroke:var(--hair)}
95
92
  .ring-fill{stroke:var(--accent)}
96
93
  .ring-num{color:var(--title)}
@@ -76,10 +76,7 @@
76
76
  .gantt-bar{background:var(--accent);opacity:.9}
77
77
  .gantt-grid{color:var(--muted)}
78
78
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(127,127,127,.12)}
79
- /* batch-8: radar + ring-progress */
80
- .radar-grid{stroke:var(--hair)}
81
- .radar-shape{fill:var(--accent);fill-opacity:.22;stroke:var(--accent);stroke-width:2}
82
- .radar-axis{fill:var(--muted)}
79
+ /* ring-progress */
83
80
  .ring-track{stroke:var(--hair)}
84
81
  .ring-fill{stroke:var(--accent)}
85
82
  .ring-num{color:var(--title)}
@@ -71,10 +71,7 @@
71
71
  .gantt-bar{background:var(--accent);opacity:.92}
72
72
  .gantt-grid{color:var(--muted)}
73
73
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(230,57,70,.16)}
74
- /* batch-8: radar + ring-progress */
75
- .radar-grid{stroke:var(--hair)}
76
- .radar-shape{fill:var(--accent);fill-opacity:.20;stroke:var(--accent);stroke-width:2}
77
- .radar-axis{fill:var(--muted)}
74
+ /* ring-progress */
78
75
  .ring-track{stroke:var(--hair)}
79
76
  .ring-fill{stroke:var(--accent)}
80
77
  .ring-num{color:var(--title)}
@@ -85,10 +85,7 @@
85
85
  .gantt-bar{background:var(--accent);opacity:.9}
86
86
  .gantt-grid{color:var(--muted)}
87
87
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(169,124,63,.12)}
88
- /* batch-8: radar + ring-progress */
89
- .radar-grid{stroke:var(--hair)}
90
- .radar-shape{fill:var(--accent);fill-opacity:.18;stroke:var(--accent);stroke-width:2}
91
- .radar-axis{fill:var(--muted)}
88
+ /* ring-progress */
92
89
  .ring-track{stroke:var(--hair)}
93
90
  .ring-fill{stroke:var(--accent)}
94
91
  .ring-num{color:var(--title)}
@@ -71,9 +71,6 @@
71
71
  .gantt-bar{background:var(--accent);opacity:.85}
72
72
  .gantt-grid{color:var(--muted)}
73
73
  .map-pin{background:var(--accent);box-shadow:none}
74
- .radar-grid{stroke:var(--hair)}
75
- .radar-shape{fill:var(--accent);fill-opacity:.1;stroke:var(--accent);stroke-width:1.5}
76
- .radar-axis{fill:var(--muted)}
77
74
  .ring-track{stroke:var(--hair)}
78
75
  .ring-fill{stroke:var(--accent)}
79
76
  .ring-num{color:var(--title);font-family:var(--font-head);font-weight:800}
@@ -61,10 +61,7 @@
61
61
  .gantt-bar{background:var(--accent);opacity:.9}
62
62
  .gantt-grid{color:var(--muted)}
63
63
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(127,127,127,.12)}
64
- /* batch-8: radar + ring-progress */
65
- .radar-grid{stroke:var(--hair)}
66
- .radar-shape{fill:var(--accent);fill-opacity:.22;stroke:var(--accent);stroke-width:2}
67
- .radar-axis{fill:var(--muted)}
64
+ /* ring-progress */
68
65
  .ring-track{stroke:var(--hair)}
69
66
  .ring-fill{stroke:var(--accent)}
70
67
  .ring-num{color:var(--title)}
@@ -71,10 +71,7 @@
71
71
  .gantt-bar{background:var(--title);opacity:.85}
72
72
  .gantt-grid{color:var(--muted)}
73
73
  .map-pin{background:var(--title);box-shadow:0 0 0 4px rgba(0,0,0,.08)}
74
- /* batch-8: radar + ring-progress */
75
- .radar-grid{stroke:var(--hair)}
76
- .radar-shape{fill:rgba(10,10,10,.12);fill-opacity:.9;stroke:var(--title);stroke-width:2}
77
- .radar-axis{fill:var(--muted)}
74
+ /* ring-progress */
78
75
  .ring-track{stroke:var(--hair)}
79
76
  .ring-fill{stroke:var(--title)}
80
77
  .ring-num{color:var(--title)}
@@ -59,10 +59,7 @@
59
59
  /* gantt + map */
60
60
  .gantt-track{background:var(--hair)} .gantt-bar{background:var(--accent);opacity:.9} .gantt-grid{color:var(--muted)}
61
61
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(205,184,92,.14)}
62
- /* radar + ring-progress */
63
- .radar-grid{stroke:var(--hair)}
64
- .radar-shape{fill:var(--accent);fill-opacity:.22;stroke:var(--accent);stroke-width:2}
65
- .radar-axis{fill:var(--muted)}
62
+ /* ring-progress */
66
63
  .ring-track{stroke:var(--hair)} .ring-fill{stroke:var(--accent)} .ring-num{color:var(--title)}
67
64
 
68
65
  /* toc-panel: 深色 skin → 浅色对比面板 */
@@ -71,9 +71,6 @@
71
71
  .gantt-bar{background:var(--accent);opacity:1;border-radius:0}
72
72
  .gantt-grid{color:var(--muted);font-family:var(--font-mono)}
73
73
  .map-pin{background:var(--accent);box-shadow:none;border-radius:0}
74
- .radar-grid{stroke:var(--hair)}
75
- .radar-shape{fill:var(--accent);fill-opacity:.12;stroke:var(--accent);stroke-width:2}
76
- .radar-axis{fill:var(--muted);font-family:var(--font-mono)}
77
74
  .ring-track{stroke:var(--hair)}
78
75
  .ring-fill{stroke:var(--accent)}
79
76
  .ring-num{color:var(--title);font-family:var(--font-head);font-weight:800}