@taloswork/ose-shared 0.1.3 → 0.1.4

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 (135) hide show
  1. package/package.json +3 -3
  2. package/skills/document/SKILL.md +54 -47
  3. package/skills/document/assets/fonts/ChakraPetch-600.woff2 +0 -0
  4. package/skills/document/assets/fonts/DMSerifDisplay-400.woff2 +0 -0
  5. package/skills/document/assets/fonts/Lexend-500.woff2 +0 -0
  6. package/skills/document/assets/fonts/Nunito-700.woff2 +0 -0
  7. package/skills/document/assets/fonts/PlayfairDisplay-600.woff2 +0 -0
  8. package/skills/document/assets/fonts/Quicksand-600.woff2 +0 -0
  9. package/skills/document/assets/fonts/SpaceGrotesk-500.woff2 +0 -0
  10. package/skills/document/assets/fonts/Syne-700.woff2 +0 -0
  11. package/skills/document/assets/fonts/ZillaSlab-600.woff2 +0 -0
  12. package/skills/document/assets/fonts/fonts.json +314 -216
  13. package/skills/document/bin/html2pptx.cjs +7 -5
  14. package/skills/document/catalog.json +37 -19
  15. package/skills/document/layouts/README.md +1 -0
  16. package/skills/document/layouts/big-stat.tpl +1 -1
  17. package/skills/document/layouts/quote-aside.tpl +11 -0
  18. package/skills/document/layouts/slots.json +1 -1
  19. package/skills/document/motion/README.md +19 -1
  20. package/skills/document/motion/anthropic.json +29 -0
  21. package/skills/document/motion/apple.json +41 -0
  22. package/skills/document/motion/bistro-warm.json +16 -0
  23. package/skills/document/motion/black-gold.json +29 -0
  24. package/skills/document/motion/board-brief.json +14 -0
  25. package/skills/document/motion/bold-clash.json +16 -0
  26. package/skills/document/motion/branding.json +22 -0
  27. package/skills/document/motion/campus-teal.json +22 -0
  28. package/skills/document/motion/cinereel.json +23 -0
  29. package/skills/document/motion/clinic-care.json +22 -0
  30. package/skills/document/motion/cool.json +41 -0
  31. package/skills/document/motion/dark-glass.json +22 -0
  32. package/skills/document/motion/gov-brief.json +14 -0
  33. package/skills/document/motion/grid-tech.json +16 -0
  34. package/skills/document/motion/hand-drawn.json +23 -0
  35. package/skills/document/motion/ivory-gold.json +22 -0
  36. package/skills/document/motion/legal-slate.json +15 -0
  37. package/skills/document/motion/magazine-ink.json +29 -0
  38. package/skills/document/motion/mckinsey.json +28 -0
  39. package/skills/document/motion/memphis.json +16 -0
  40. package/skills/document/motion/mono.json +21 -0
  41. package/skills/document/motion/neon-cyber.json +42 -0
  42. package/skills/document/motion/olive-gold.json +22 -0
  43. package/skills/document/motion/organic-earth.json +15 -0
  44. package/skills/document/motion/pastel-saas.json +15 -0
  45. package/skills/document/motion/portfolio-noir.json +21 -0
  46. package/skills/document/motion/press-room.json +14 -0
  47. package/skills/document/motion/retro-press.json +15 -0
  48. package/skills/document/motion/sport-arena.json +16 -0
  49. package/skills/document/motion/swiss-grid.json +34 -0
  50. package/skills/document/motion/wedding-blush.json +15 -0
  51. package/skills/document/packs/README.md +20 -1
  52. package/skills/document/packs/board-brief/backdrop.html +4 -0
  53. package/skills/document/packs/board-brief/layouts/cover.tpl +12 -0
  54. package/skills/document/packs/board-brief/layouts/toc-agenda.tpl +20 -0
  55. package/skills/document/packs/board-brief/pack.css +27 -0
  56. package/skills/document/packs/press-room/backdrop.html +4 -0
  57. package/skills/document/packs/press-room/layouts/cover.tpl +12 -0
  58. package/skills/document/packs/press-room/layouts/section.tpl +13 -0
  59. package/skills/document/packs/press-room/pack.css +27 -0
  60. package/skills/document/styles/README.md +32 -4
  61. package/skills/document/styles/_samples/_groups/biz-premium.webp +0 -0
  62. package/skills/document/styles/_samples/_groups/creative.webp +0 -0
  63. package/skills/document/styles/_samples/_groups/editorial.webp +0 -0
  64. package/skills/document/styles/_samples/_groups/minimal.webp +0 -0
  65. package/skills/document/styles/_samples/_groups/natural.webp +0 -0
  66. package/skills/document/styles/_samples/_groups/tech-future.webp +0 -0
  67. package/skills/document/styles/_samples/anthropic.webp +0 -0
  68. package/skills/document/styles/_samples/apple.webp +0 -0
  69. package/skills/document/styles/_samples/bistro-warm.webp +0 -0
  70. package/skills/document/styles/_samples/black-gold.webp +0 -0
  71. package/skills/document/styles/_samples/board-brief.webp +0 -0
  72. package/skills/document/styles/_samples/bold-clash.webp +0 -0
  73. package/skills/document/styles/_samples/campus-teal.webp +0 -0
  74. package/skills/document/styles/_samples/cinereel.webp +0 -0
  75. package/skills/document/styles/_samples/clinic-care.webp +0 -0
  76. package/skills/document/styles/_samples/cool.webp +0 -0
  77. package/skills/document/styles/_samples/dark-glass.webp +0 -0
  78. package/skills/document/styles/_samples/gov-brief.webp +0 -0
  79. package/skills/document/styles/_samples/grid-tech.webp +0 -0
  80. package/skills/document/styles/_samples/hand-drawn.webp +0 -0
  81. package/skills/document/styles/_samples/ivory-gold.webp +0 -0
  82. package/skills/document/styles/_samples/legal-slate.webp +0 -0
  83. package/skills/document/styles/_samples/magazine-ink.webp +0 -0
  84. package/skills/document/styles/_samples/memphis.webp +0 -0
  85. package/skills/document/styles/_samples/mono.webp +0 -0
  86. package/skills/document/styles/_samples/neon-cyber.webp +0 -0
  87. package/skills/document/styles/_samples/olive-gold.webp +0 -0
  88. package/skills/document/styles/_samples/organic-earth.webp +0 -0
  89. package/skills/document/styles/_samples/pastel-saas.webp +0 -0
  90. package/skills/document/styles/_samples/portfolio-noir.webp +0 -0
  91. package/skills/document/styles/_samples/press-room.webp +0 -0
  92. package/skills/document/styles/_samples/retro-press.webp +0 -0
  93. package/skills/document/styles/_samples/sport-arena.webp +0 -0
  94. package/skills/document/styles/_samples/wedding-blush.webp +0 -0
  95. package/skills/document/styles/anthropic/skin.css +1 -1
  96. package/skills/document/styles/bistro-warm/backdrop.html +4 -0
  97. package/skills/document/styles/bistro-warm/skin.css +27 -0
  98. package/skills/document/styles/black-gold/skin.css +1 -1
  99. package/skills/document/styles/bold-clash/backdrop.html +4 -0
  100. package/skills/document/styles/bold-clash/skin.css +27 -0
  101. package/skills/document/styles/branding/skin.css +1 -1
  102. package/skills/document/styles/campus-teal/backdrop.html +3 -0
  103. package/skills/document/styles/campus-teal/skin.css +27 -0
  104. package/skills/document/styles/cinereel/skin.css +2 -2
  105. package/skills/document/styles/clinic-care/backdrop.html +4 -0
  106. package/skills/document/styles/clinic-care/skin.css +27 -0
  107. package/skills/document/styles/dark-glass/backdrop.html +4 -0
  108. package/skills/document/styles/dark-glass/skin.css +27 -0
  109. package/skills/document/styles/gov-brief/backdrop.html +4 -0
  110. package/skills/document/styles/gov-brief/skin.css +27 -0
  111. package/skills/document/styles/grid-tech/backdrop.html +37 -0
  112. package/skills/document/styles/grid-tech/skin.css +27 -0
  113. package/skills/document/styles/hand-drawn/skin.css +2 -2
  114. package/skills/document/styles/ivory-gold/skin.css +2 -2
  115. package/skills/document/styles/legal-slate/backdrop.html +6 -0
  116. package/skills/document/styles/legal-slate/skin.css +27 -0
  117. package/skills/document/styles/magazine-ink/skin.css +1 -1
  118. package/skills/document/styles/memphis/backdrop.html +5 -0
  119. package/skills/document/styles/memphis/skin.css +27 -0
  120. package/skills/document/styles/mono/skin.css +1 -1
  121. package/skills/document/styles/neon-cyber/backdrop.html +4 -0
  122. package/skills/document/styles/neon-cyber/skin.css +27 -0
  123. package/skills/document/styles/olive-gold/skin.css +1 -1
  124. package/skills/document/styles/organic-earth/backdrop.html +4 -0
  125. package/skills/document/styles/organic-earth/skin.css +27 -0
  126. package/skills/document/styles/pastel-saas/backdrop.html +4 -0
  127. package/skills/document/styles/pastel-saas/skin.css +27 -0
  128. package/skills/document/styles/portfolio-noir/backdrop.html +4 -0
  129. package/skills/document/styles/portfolio-noir/skin.css +27 -0
  130. package/skills/document/styles/retro-press/backdrop.html +6 -0
  131. package/skills/document/styles/retro-press/skin.css +27 -0
  132. package/skills/document/styles/sport-arena/backdrop.html +4 -0
  133. package/skills/document/styles/sport-arena/skin.css +27 -0
  134. package/skills/document/styles/wedding-blush/backdrop.html +6 -0
  135. package/skills/document/styles/wedding-blush/skin.css +27 -0
@@ -7,7 +7,7 @@
7
7
  --accent:#CC785C; --c1:#CC785C; --c2:#7C9082; --c3:#BD5D3E; --c4:#B7A99A; --chart-1:#C4785C;
8
8
  --title:#191919; --body:#514B3F; --muted:#6B6558; --foot:#9A917F;
9
9
  --hair:#DDD6C7; --card-radius:12px;
10
- --font-head:'Fraunces','Iowan Old Style','Songti SC','Noto Serif SC','Source Han Serif SC',serif;
10
+ --font-head:'Fraunces','Songti SC','Noto Serif SC','Source Han Serif SC',serif;
11
11
  --font-body:'Public Sans','PingFang SC','Noto Sans SC','Hiragino Sans GB',sans-serif;
12
12
  /* theme-compat vars: SKELETON_CSS's section.slide h1/h2/h3 + section.slide out-specify
13
13
  the skin's .cover-title/.slide, so titles/body fall back to these — define them so
@@ -0,0 +1,4 @@
1
+ <!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: diagonal-band -->
2
+ <div style="position:absolute;inset:0;background:#FEEEE3"></div>
3
+ <div style="position:absolute;right:-60px;top:-40px;width:260px;height:820px;background:var(--accent);opacity:.14;transform:rotate(18deg);pointer-events:none"></div>
4
+ <div style="position:absolute;right:96px;top:-40px;width:2px;height:820px;background:var(--accent);opacity:.5;transform:rotate(18deg);pointer-events:none"></div>
@@ -0,0 +1,27 @@
1
+ /* styles/bistro-warm — generated by scripts/ppt-tpl/gen-skin.mjs from ppt-tpl/families/bistro-warm/family.json.
2
+ 手改会在下次生成时丢失:要改就改 family.json。 */
3
+ :root{
4
+ --space-scale:1; --type-scale:1.04;
5
+ --accent:#C43C3C; --c1:#C43C3C; --c2:#9B5F0B; --c3:#67730E; --c4:#037E3F; --chart-1:#C43C3C;
6
+ --title:#3A2823; --body:#62514D; --muted:#8D7B76; --foot:#8D7B76;
7
+ --hair:#ECCEC6; --card-radius:4px;
8
+ --font-head:'Zilla Slab','Songti SC',sans-serif;
9
+ --font-body:'Karla','Noto Sans SC',sans-serif;
10
+ --title-color:#3A2823; --body-color:#62514D; --slide-bg:#FEEEE3; --font-heading:var(--font-head);
11
+ }
12
+ .slide{background:#FEEEE3;color:var(--body);font-family:var(--font-body)}
13
+ .slide-backdrop{position:absolute;inset:0;background:#FEEEE3}
14
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
15
+ .rule,.rule-foot{background:var(--hair)}
16
+ .eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
17
+ .accent-bar{background:var(--accent)}
18
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;--talos-bake:1}
19
+ .cover-sub,.ending-sub,.section-desc{color:var(--muted)}
20
+ .card{border-radius:var(--card-radius);background:transparent;border:1px solid var(--hair)}
21
+ .card-idx{color:var(--muted)} .card-body{color:var(--body)} .card-title{color:var(--title)}
22
+ .card-grid .card:nth-child(4n+1) .card-rail,.card-grid .card:nth-child(4n+1) .card-dot{background:var(--c1)}
23
+ .card-grid .card:nth-child(4n+2) .card-rail,.card-grid .card:nth-child(4n+2) .card-dot{background:var(--c2)}
24
+ .card-grid .card:nth-child(4n+3) .card-rail,.card-grid .card:nth-child(4n+3) .card-dot{background:var(--c3)}
25
+ .card-grid .card:nth-child(4n+4) .card-rail,.card-grid .card:nth-child(4n+4) .card-dot{background:var(--c4)}
26
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);--talos-bake:1}
27
+ .kpi-label,.stat-unit{color:var(--muted)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
@@ -6,7 +6,7 @@
6
6
  --accent:#D4AF37; --c1:#D4AF37; --c2:#E7C08A; --c3:#C9A24B; --c4:#F5D98B; --chart-1:#B8912C;
7
7
  --title:#F6E8C2; --body:#b3a887; --muted:#8a7f63; --foot:#6a614a;
8
8
  --hair:rgba(212,175,55,.16); --card-radius:16px;
9
- --font-head:'Bodoni Moda','Didot','Songti SC','Noto Serif SC','Source Han Serif SC',serif;
9
+ --font-head:'Bodoni Moda','Songti SC','Noto Serif SC','Source Han Serif SC',serif;
10
10
  --font-body:'Lora','Songti SC','Noto Serif SC','Source Han Serif SC',serif;
11
11
  /* theme-compat vars: SKELETON_CSS's section.slide h1/h2/h3 + section.slide out-specify
12
12
  the skin's .cover-title/.slide, so titles/body fall back to these — define them so
@@ -0,0 +1,4 @@
1
+ <!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: spine -->
2
+ <div style="position:absolute;inset:0;background:#FFE87D"></div>
3
+ <div style="position:absolute;left:0;top:0;bottom:0;width:26px;background:var(--hair);opacity:.55;pointer-events:none"></div>
4
+ <div style="position:absolute;left:0;top:96px;height:216px;width:26px;background:var(--accent);pointer-events:none"></div>
@@ -0,0 +1,27 @@
1
+ /* styles/bold-clash — generated by scripts/ppt-tpl/gen-skin.mjs from ppt-tpl/families/bold-clash/family.json.
2
+ 手改会在下次生成时丢失:要改就改 family.json。 */
3
+ :root{
4
+ --space-scale:0.9; --type-scale:1.12;
5
+ --accent:#BF257D; --c1:#BF257D; --c2:#905E0A; --c3:#02774C; --c4:#047193; --chart-1:#BF257D;
6
+ --title:#221F15; --body:#4A473D; --muted:#716D60; --foot:#716D60;
7
+ --hair:#C2B68A; --card-radius:4px;
8
+ --font-head:'Anton','Noto Sans SC',sans-serif;
9
+ --font-body:'Karla','Noto Sans SC',sans-serif;
10
+ --title-color:#221F15; --body-color:#4A473D; --slide-bg:#FFE87D; --font-heading:var(--font-head);
11
+ }
12
+ .slide{background:#FFE87D;color:var(--body);font-family:var(--font-body)}
13
+ .slide-backdrop{position:absolute;inset:0;background:#FFE87D}
14
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
15
+ .rule,.rule-foot{background:var(--hair)}
16
+ .eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
17
+ .accent-bar{background:var(--accent)}
18
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;--talos-bake:1}
19
+ .cover-sub,.ending-sub,.section-desc{color:var(--muted)}
20
+ .card{border-radius:var(--card-radius);background:transparent;border:1px solid var(--hair)}
21
+ .card-idx{color:var(--muted)} .card-body{color:var(--body)} .card-title{color:var(--title)}
22
+ .card-grid .card:nth-child(4n+1) .card-rail,.card-grid .card:nth-child(4n+1) .card-dot{background:var(--c1)}
23
+ .card-grid .card:nth-child(4n+2) .card-rail,.card-grid .card:nth-child(4n+2) .card-dot{background:var(--c2)}
24
+ .card-grid .card:nth-child(4n+3) .card-rail,.card-grid .card:nth-child(4n+3) .card-dot{background:var(--c3)}
25
+ .card-grid .card:nth-child(4n+4) .card-rail,.card-grid .card:nth-child(4n+4) .card-dot{background:var(--c4)}
26
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);--talos-bake:1}
27
+ .kpi-label,.stat-unit{color:var(--muted)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
@@ -8,7 +8,7 @@
8
8
  --accent:#7A9A72; --c1:#7A9A72; --c2:#B79C6E; --c3:#5E7D5A; --c4:#A9A288; --chart-1:#6F9169;
9
9
  --title:#26261F; --body:#57574A; --muted:#8A876F; --foot:#A8A48C;
10
10
  --hair:#DFD8C5; --card-radius:10px;
11
- --font-head:'Cormorant Garamond','Palatino','Songti SC','Noto Serif SC','Source Han Serif SC',serif;
11
+ --font-head:'Cormorant Garamond','Songti SC','Noto Serif SC','Source Han Serif SC',serif;
12
12
  --font-body:'Karla','PingFang SC','Noto Sans SC','Hiragino Sans GB',sans-serif;
13
13
  /* theme-compat */
14
14
  --title-color:#26261F; --body-color:#57574A; --slide-bg:#F3EEE2; --font-heading:var(--font-head);
@@ -0,0 +1,3 @@
1
+ <!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: dot-matrix -->
2
+ <div style="position:absolute;inset:0;background:#E1F8F6"></div>
3
+ <div style="position:absolute;inset:0;background-image:radial-gradient(var(--hair) 1.4px,transparent 1.4px);background-size:28px 28px;opacity:.85;pointer-events:none"></div>
@@ -0,0 +1,27 @@
1
+ /* styles/campus-teal — generated by scripts/ppt-tpl/gen-skin.mjs from ppt-tpl/families/campus-teal/family.json.
2
+ 手改会在下次生成时丢失:要改就改 family.json。 */
3
+ :root{
4
+ --space-scale:1.06; --type-scale:1.02;
5
+ --accent:#0E6A63; --c1:#0E6A63; --c2:#11677E; --c3:#1860A5; --c4:#7F498F; --chart-1:#0E6A63;
6
+ --title:#1D2F2E; --body:#495856; --muted:#728280; --foot:#728280;
7
+ --hair:#C1DDDA; --card-radius:4px;
8
+ --font-head:'Lexend','Noto Sans SC',sans-serif;
9
+ --font-body:'Public Sans','Noto Sans SC',sans-serif;
10
+ --title-color:#1D2F2E; --body-color:#495856; --slide-bg:#E1F8F6; --font-heading:var(--font-head);
11
+ }
12
+ .slide{background:#E1F8F6;color:var(--body);font-family:var(--font-body)}
13
+ .slide-backdrop{position:absolute;inset:0;background:#E1F8F6}
14
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
15
+ .rule,.rule-foot{background:var(--hair)}
16
+ .eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
17
+ .accent-bar{background:var(--accent)}
18
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700}
19
+ .cover-sub,.ending-sub,.section-desc{color:var(--muted)}
20
+ .card{border-radius:var(--card-radius);background:transparent;border:1px solid var(--hair)}
21
+ .card-idx{color:var(--muted)} .card-body{color:var(--body)} .card-title{color:var(--title)}
22
+ .card-grid .card:nth-child(4n+1) .card-rail,.card-grid .card:nth-child(4n+1) .card-dot{background:var(--c1)}
23
+ .card-grid .card:nth-child(4n+2) .card-rail,.card-grid .card:nth-child(4n+2) .card-dot{background:var(--c2)}
24
+ .card-grid .card:nth-child(4n+3) .card-rail,.card-grid .card:nth-child(4n+3) .card-dot{background:var(--c3)}
25
+ .card-grid .card:nth-child(4n+4) .card-rail,.card-grid .card:nth-child(4n+4) .card-dot{background:var(--c4)}
26
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head)}
27
+ .kpi-label,.stat-unit{color:var(--muted)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
@@ -9,8 +9,8 @@
9
9
  --accent:#F5F4F0; --c1:#F5F4F0; --c2:#C7C5BE; --c3:#8A8880; --c4:#5A584F; --chart-1:#8A8880;
10
10
  --title:#F5F4F0; --body:#C7C5BE; --muted:#8A8880; --foot:#656358;
11
11
  --hair:rgba(245,244,240,.16); --card-radius:0px;
12
- --font-head:'Big Shoulders Display','Anton','Arial Narrow Bold','Heiti SC','PingFang SC',sans-serif;
13
- --font-body:'Jost','Helvetica Neue','Arial','PingFang SC','Microsoft YaHei',sans-serif;
12
+ --font-head:'Big Shoulders Display','Anton','PingFang SC','Noto Sans SC',sans-serif;
13
+ --font-body:'Jost','PingFang SC','Noto Sans SC',sans-serif;
14
14
  /* theme-compat vars: SKELETON_CSS's section.slide h1/h2/h3 + section.slide out-specify
15
15
  the skin's .cover-title/.slide, so titles/body fall back to these — define them so
16
16
  --style alone fully colors the deck. */
@@ -0,0 +1,4 @@
1
+ <!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: rule-frame -->
2
+ <div style="position:absolute;inset:0;background:#EDF9FA"></div>
3
+ <div style="position:absolute;left:40px;top:40px;right:40px;bottom:40px;border:1px solid var(--hair);pointer-events:none"></div>
4
+ <div style="position:absolute;left:52px;top:52px;right:52px;bottom:52px;border:1px solid var(--hair);opacity:.5;pointer-events:none"></div>
@@ -0,0 +1,27 @@
1
+ /* styles/clinic-care — generated by scripts/ppt-tpl/gen-skin.mjs from ppt-tpl/families/clinic-care/family.json.
2
+ 手改会在下次生成时丢失:要改就改 family.json。 */
3
+ :root{
4
+ --space-scale:1.04; --type-scale:0.98;
5
+ --accent:#05747A; --c1:#05747A; --c2:#157092; --c3:#3A68B0; --c4:#875498; --chart-1:#05747A;
6
+ --title:#212E30; --body:#4B5758; --muted:#748183; --foot:#748183;
7
+ --hair:#CAE1E4; --card-radius:4px;
8
+ --font-head:'Nunito','Noto Sans SC',sans-serif;
9
+ --font-body:'Karla','Noto Sans SC',sans-serif;
10
+ --title-color:#212E30; --body-color:#4B5758; --slide-bg:#EDF9FA; --font-heading:var(--font-head);
11
+ }
12
+ .slide{background:#EDF9FA;color:var(--body);font-family:var(--font-body)}
13
+ .slide-backdrop{position:absolute;inset:0;background:#EDF9FA}
14
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
15
+ .rule,.rule-foot{background:var(--hair)}
16
+ .eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
17
+ .accent-bar{background:var(--accent)}
18
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700}
19
+ .cover-sub,.ending-sub,.section-desc{color:var(--muted)}
20
+ .card{border-radius:var(--card-radius);background:transparent;border:1px solid var(--hair)}
21
+ .card-idx{color:var(--muted)} .card-body{color:var(--body)} .card-title{color:var(--title)}
22
+ .card-grid .card:nth-child(4n+1) .card-rail,.card-grid .card:nth-child(4n+1) .card-dot{background:var(--c1)}
23
+ .card-grid .card:nth-child(4n+2) .card-rail,.card-grid .card:nth-child(4n+2) .card-dot{background:var(--c2)}
24
+ .card-grid .card:nth-child(4n+3) .card-rail,.card-grid .card:nth-child(4n+3) .card-dot{background:var(--c3)}
25
+ .card-grid .card:nth-child(4n+4) .card-rail,.card-grid .card:nth-child(4n+4) .card-dot{background:var(--c4)}
26
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head)}
27
+ .kpi-label,.stat-unit{color:var(--muted)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
@@ -0,0 +1,4 @@
1
+ <!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: corner-marks -->
2
+ <div style="position:absolute;inset:0;background:#1A252B"></div>
3
+ <div style="position:absolute;left:56px;top:56px;border-left:2px solid var(--accent);border-top:2px solid var(--accent);width:34px;height:34px;pointer-events:none"></div>
4
+ <div style="position:absolute;right:56px;bottom:56px;border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);width:34px;height:34px;pointer-events:none"></div>
@@ -0,0 +1,27 @@
1
+ /* styles/dark-glass — generated by scripts/ppt-tpl/gen-skin.mjs from ppt-tpl/families/dark-glass/family.json.
2
+ 手改会在下次生成时丢失:要改就改 family.json。 */
3
+ :root{
4
+ --space-scale:1.06; --type-scale:0.98;
5
+ --accent:#1EC2D2; --c1:#1EC2D2; --c2:#46BBFC; --c3:#B0A7FB; --c4:#F292CB; --chart-1:#1EC2D2;
6
+ --title:#EEF5F8; --body:#B4BDC2; --muted:#7D8589; --foot:#7D8589;
7
+ --hair:#3D484F; --card-radius:4px;
8
+ --font-head:'Space Grotesk','Noto Sans SC',sans-serif;
9
+ --font-body:'Inter','Noto Sans SC',sans-serif;
10
+ --title-color:#EEF5F8; --body-color:#B4BDC2; --slide-bg:#1A252B; --font-heading:var(--font-head);
11
+ }
12
+ .slide{background:#1A252B;color:var(--body);font-family:var(--font-body)}
13
+ .slide-backdrop{position:absolute;inset:0;background:#1A252B}
14
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
15
+ .rule,.rule-foot{background:var(--hair)}
16
+ .eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
17
+ .accent-bar{background:var(--accent)}
18
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700}
19
+ .cover-sub,.ending-sub,.section-desc{color:var(--muted)}
20
+ .card{border-radius:var(--card-radius);background:transparent;border:1px solid var(--hair)}
21
+ .card-idx{color:var(--muted)} .card-body{color:var(--body)} .card-title{color:var(--title)}
22
+ .card-grid .card:nth-child(4n+1) .card-rail,.card-grid .card:nth-child(4n+1) .card-dot{background:var(--c1)}
23
+ .card-grid .card:nth-child(4n+2) .card-rail,.card-grid .card:nth-child(4n+2) .card-dot{background:var(--c2)}
24
+ .card-grid .card:nth-child(4n+3) .card-rail,.card-grid .card:nth-child(4n+3) .card-dot{background:var(--c3)}
25
+ .card-grid .card:nth-child(4n+4) .card-rail,.card-grid .card:nth-child(4n+4) .card-dot{background:var(--c4)}
26
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head)}
27
+ .kpi-label,.stat-unit{color:var(--muted)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
@@ -0,0 +1,4 @@
1
+ <!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: header-band -->
2
+ <div style="position:absolute;inset:0;background:#F6FAFD"></div>
3
+ <div style="position:absolute;left:0;right:0;top:0;height:5px;background:var(--accent);opacity:.92;pointer-events:none"></div>
4
+ <div style="position:absolute;left:0;top:0;width:60px;height:16px;background:var(--accent);pointer-events:none"></div>
@@ -0,0 +1,27 @@
1
+ /* styles/gov-brief — generated by scripts/ppt-tpl/gen-skin.mjs from ppt-tpl/families/gov-brief/family.json.
2
+ 手改会在下次生成时丢失:要改就改 family.json。 */
3
+ :root{
4
+ --space-scale:1; --type-scale:0.96;
5
+ --accent:#04557A; --c1:#04557A; --c2:#514884; --c3:#80365E; --c4:#843931; --chart-1:#04557A;
6
+ --title:#23292D; --body:#4C5154; --muted:#787D81; --foot:#787D81;
7
+ --hair:#CFD8E0; --card-radius:4px;
8
+ --font-head:'Public Sans','Noto Sans SC',sans-serif;
9
+ --font-body:'IBM Plex Sans','Noto Sans SC',sans-serif;
10
+ --title-color:#23292D; --body-color:#4C5154; --slide-bg:#F6FAFD; --font-heading:var(--font-head);
11
+ }
12
+ .slide{background:#F6FAFD;color:var(--body);font-family:var(--font-body)}
13
+ .slide-backdrop{position:absolute;inset:0;background:#F6FAFD}
14
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
15
+ .rule,.rule-foot{background:var(--hair)}
16
+ .eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
17
+ .accent-bar{background:var(--accent)}
18
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700}
19
+ .cover-sub,.ending-sub,.section-desc{color:var(--muted)}
20
+ .card{border-radius:var(--card-radius);background:transparent;border:1px solid var(--hair)}
21
+ .card-idx{color:var(--muted)} .card-body{color:var(--body)} .card-title{color:var(--title)}
22
+ .card-grid .card:nth-child(4n+1) .card-rail,.card-grid .card:nth-child(4n+1) .card-dot{background:var(--c1)}
23
+ .card-grid .card:nth-child(4n+2) .card-rail,.card-grid .card:nth-child(4n+2) .card-dot{background:var(--c2)}
24
+ .card-grid .card:nth-child(4n+3) .card-rail,.card-grid .card:nth-child(4n+3) .card-dot{background:var(--c3)}
25
+ .card-grid .card:nth-child(4n+4) .card-rail,.card-grid .card:nth-child(4n+4) .card-dot{background:var(--c4)}
26
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head)}
27
+ .kpi-label,.stat-unit{color:var(--muted)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
@@ -0,0 +1,37 @@
1
+ <!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: ruler -->
2
+ <div style="position:absolute;inset:0;background:#111C14"></div>
3
+ <div style="position:absolute;left:64px;right:64px;bottom:56px;height:14px;pointer-events:none">
4
+ <div style="position:absolute;left:64px;bottom:0;width:1px;height:14px;background:var(--hair);pointer-events:none"></div>
5
+ <div style="position:absolute;left:100px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
6
+ <div style="position:absolute;left:136px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
7
+ <div style="position:absolute;left:172px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
8
+ <div style="position:absolute;left:208px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
9
+ <div style="position:absolute;left:244px;bottom:0;width:1px;height:14px;background:var(--hair);pointer-events:none"></div>
10
+ <div style="position:absolute;left:280px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
11
+ <div style="position:absolute;left:316px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
12
+ <div style="position:absolute;left:352px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
13
+ <div style="position:absolute;left:388px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
14
+ <div style="position:absolute;left:424px;bottom:0;width:1px;height:14px;background:var(--hair);pointer-events:none"></div>
15
+ <div style="position:absolute;left:460px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
16
+ <div style="position:absolute;left:496px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
17
+ <div style="position:absolute;left:532px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
18
+ <div style="position:absolute;left:568px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
19
+ <div style="position:absolute;left:604px;bottom:0;width:1px;height:14px;background:var(--hair);pointer-events:none"></div>
20
+ <div style="position:absolute;left:640px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
21
+ <div style="position:absolute;left:676px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
22
+ <div style="position:absolute;left:712px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
23
+ <div style="position:absolute;left:748px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
24
+ <div style="position:absolute;left:784px;bottom:0;width:1px;height:14px;background:var(--hair);pointer-events:none"></div>
25
+ <div style="position:absolute;left:820px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
26
+ <div style="position:absolute;left:856px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
27
+ <div style="position:absolute;left:892px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
28
+ <div style="position:absolute;left:928px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
29
+ <div style="position:absolute;left:964px;bottom:0;width:1px;height:14px;background:var(--hair);pointer-events:none"></div>
30
+ <div style="position:absolute;left:1000px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
31
+ <div style="position:absolute;left:1036px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
32
+ <div style="position:absolute;left:1072px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
33
+ <div style="position:absolute;left:1108px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
34
+ <div style="position:absolute;left:1144px;bottom:0;width:1px;height:14px;background:var(--hair);pointer-events:none"></div>
35
+ <div style="position:absolute;left:1180px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
36
+ <div style="position:absolute;left:1216px;bottom:0;width:1px;height:7px;background:var(--hair);pointer-events:none"></div>
37
+ </div>
@@ -0,0 +1,27 @@
1
+ /* styles/grid-tech — generated by scripts/ppt-tpl/gen-skin.mjs from ppt-tpl/families/grid-tech/family.json.
2
+ 手改会在下次生成时丢失:要改就改 family.json。 */
3
+ :root{
4
+ --space-scale:0.92; --type-scale:1;
5
+ --accent:#4ACE68; --c1:#4ACE68; --c2:#26CACA; --c3:#42C2FE; --c4:#BCABFD; --chart-1:#4ACE68;
6
+ --title:#EBF3ED; --body:#B0B8B1; --muted:#7B837D; --foot:#7B837D;
7
+ --hair:#333E35; --card-radius:4px;
8
+ --font-head:'Chakra Petch','Noto Sans SC',sans-serif;
9
+ --font-body:'IBM Plex Sans','Noto Sans SC',sans-serif;
10
+ --title-color:#EBF3ED; --body-color:#B0B8B1; --slide-bg:#111C14; --font-heading:var(--font-head);
11
+ }
12
+ .slide{background:#111C14;color:var(--body);font-family:var(--font-body)}
13
+ .slide-backdrop{position:absolute;inset:0;background:#111C14}
14
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
15
+ .rule,.rule-foot{background:var(--hair)}
16
+ .eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
17
+ .accent-bar{background:var(--accent)}
18
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;--talos-bake:1}
19
+ .cover-sub,.ending-sub,.section-desc{color:var(--muted)}
20
+ .card{border-radius:var(--card-radius);background:transparent;border:1px solid var(--hair)}
21
+ .card-idx{color:var(--muted)} .card-body{color:var(--body)} .card-title{color:var(--title)}
22
+ .card-grid .card:nth-child(4n+1) .card-rail,.card-grid .card:nth-child(4n+1) .card-dot{background:var(--c1)}
23
+ .card-grid .card:nth-child(4n+2) .card-rail,.card-grid .card:nth-child(4n+2) .card-dot{background:var(--c2)}
24
+ .card-grid .card:nth-child(4n+3) .card-rail,.card-grid .card:nth-child(4n+3) .card-dot{background:var(--c3)}
25
+ .card-grid .card:nth-child(4n+4) .card-rail,.card-grid .card:nth-child(4n+4) .card-dot{background:var(--c4)}
26
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);--talos-bake:1}
27
+ .kpi-label,.stat-unit{color:var(--muted)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
@@ -7,8 +7,8 @@
7
7
  --accent:#E63946; --c1:#E63946; --c2:#457B9D; --c3:#E9A63A; --c4:#2A9D8F; --chart-1:#DE6A66;
8
8
  --title:#2B2B2B; --body:#3A3A3A; --muted:#8A8A80; --foot:#A8A89E;
9
9
  --hair:rgba(43,43,43,.16); --ink:rgba(43,43,43,.55); --card-radius:16px;
10
- --font-head:'Gochi Hand','ZCOOL KuaiLe','Comic Sans MS','PingFang SC',cursive;
11
- --font-body:'Comic Sans MS','Noto Sans SC','PingFang SC',cursive;
10
+ --font-head:'Gochi Hand','PingFang SC','Noto Sans SC',cursive;
11
+ --font-body:'Manrope','PingFang SC','Noto Sans SC',sans-serif;
12
12
  /* theme-compat vars: SKELETON_CSS's section.slide h1/h2/h3 + section.slide out-specify
13
13
  the skin's .cover-title/.slide, so titles/body fall back to these — define them so
14
14
  --style alone fully colors the deck. */
@@ -8,8 +8,8 @@
8
8
  --accent:#A97C3F; --c1:#A97C3F; --c2:#C9A467; --c3:#8A6530; --c4:#DCC08C; --chart-1:#B58A4A;
9
9
  --title:#A97C3F; --body:#2B2823; --muted:#6B6558; --foot:#8A8374;
10
10
  --hair:rgba(169,124,63,.22); --card-radius:6px;
11
- --font-head:'Anton','Arial Narrow Bold','Heiti SC','PingFang SC',sans-serif;
12
- --font-body:'Inter','Helvetica Neue',-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;
11
+ --font-head:'Anton','PingFang SC','Noto Sans SC',sans-serif;
12
+ --font-body:'Inter','PingFang SC','Noto Sans SC',sans-serif;
13
13
  /* theme-compat vars: SKELETON_CSS's section.slide h1/h2/h3 + section.slide out-specify
14
14
  the skin's .cover-title/.slide, so titles/body fall back to these — define them so
15
15
  --style alone fully colors the deck. */
@@ -0,0 +1,6 @@
1
+ <!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: crop-marks -->
2
+ <div style="position:absolute;inset:0;background:#EEF5EF"></div>
3
+ <div style="position:absolute;left:44px;top:44px;border-left:1px solid var(--hair);border-top:1px solid var(--hair);width:26px;height:26px;pointer-events:none"></div>
4
+ <div style="position:absolute;right:44px;top:44px;border-right:1px solid var(--hair);border-top:1px solid var(--hair);width:26px;height:26px;pointer-events:none"></div>
5
+ <div style="position:absolute;left:44px;bottom:44px;border-left:1px solid var(--hair);border-bottom:1px solid var(--hair);width:26px;height:26px;pointer-events:none"></div>
6
+ <div style="position:absolute;right:44px;bottom:44px;border-right:1px solid var(--hair);border-bottom:1px solid var(--hair);width:26px;height:26px;pointer-events:none"></div>
@@ -0,0 +1,27 @@
1
+ /* styles/legal-slate — generated by scripts/ppt-tpl/gen-skin.mjs from ppt-tpl/families/legal-slate/family.json.
2
+ 手改会在下次生成时丢失:要改就改 family.json。 */
3
+ :root{
4
+ --space-scale:1.02; --type-scale:0.98;
5
+ --accent:#0B5C3B; --c1:#0B5C3B; --c2:#0A595B; --c3:#0F5670; --c4:#374F84; --chart-1:#0B5C3B;
6
+ --title:#242C25; --body:#4E544F; --muted:#777E78; --foot:#777E78;
7
+ --hair:#CCD7CE; --card-radius:4px;
8
+ --font-head:'Lora','Songti SC',sans-serif;
9
+ --font-body:'Karla','Noto Sans SC',sans-serif;
10
+ --title-color:#242C25; --body-color:#4E544F; --slide-bg:#EEF5EF; --font-heading:var(--font-head);
11
+ }
12
+ .slide{background:#EEF5EF;color:var(--body);font-family:var(--font-body)}
13
+ .slide-backdrop{position:absolute;inset:0;background:#EEF5EF}
14
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
15
+ .rule,.rule-foot{background:var(--hair)}
16
+ .eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
17
+ .accent-bar{background:var(--accent)}
18
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;--talos-bake:1}
19
+ .cover-sub,.ending-sub,.section-desc{color:var(--muted)}
20
+ .card{border-radius:var(--card-radius);background:transparent;border:1px solid var(--hair)}
21
+ .card-idx{color:var(--muted)} .card-body{color:var(--body)} .card-title{color:var(--title)}
22
+ .card-grid .card:nth-child(4n+1) .card-rail,.card-grid .card:nth-child(4n+1) .card-dot{background:var(--c1)}
23
+ .card-grid .card:nth-child(4n+2) .card-rail,.card-grid .card:nth-child(4n+2) .card-dot{background:var(--c2)}
24
+ .card-grid .card:nth-child(4n+3) .card-rail,.card-grid .card:nth-child(4n+3) .card-dot{background:var(--c3)}
25
+ .card-grid .card:nth-child(4n+4) .card-rail,.card-grid .card:nth-child(4n+4) .card-dot{background:var(--c4)}
26
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);--talos-bake:1}
27
+ .kpi-label,.stat-unit{color:var(--muted)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
@@ -13,7 +13,7 @@
13
13
  --accent:#0A1F3D; --c1:#0A1F3D; --c2:#384962; --c3:#697688; --c4:#9CA5B1; --chart-1:#697688;
14
14
  --title:#0A1F3D; --body:#384962; --muted:#697688; --foot:#848F9F;
15
15
  --hair:rgba(10,31,61,.14); --card-radius:4px;
16
- --font-head:'Noto Serif SC','Songti SC','Source Serif 4',Georgia,serif;
16
+ --font-head:'Noto Serif SC','Songti SC',serif;
17
17
  --font-body:'Noto Sans SC','PingFang SC','Microsoft YaHei',sans-serif;
18
18
  --font-mono:'IBM Plex Mono','SF Mono','JetBrains Mono',ui-monospace,monospace;
19
19
  --title-color:#0A1F3D; --body-color:#384962; --slide-bg:#F1F3F5; --font-heading:var(--font-head);
@@ -0,0 +1,5 @@
1
+ <!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: step-marks -->
2
+ <div style="position:absolute;inset:0;background:#FBF2E8"></div>
3
+ <div style="position:absolute;right:0;top:132px;width:52px;height:44px;background:var(--accent);opacity:0.90;pointer-events:none"></div>
4
+ <div style="position:absolute;right:0;top:216px;width:38px;height:44px;background:var(--accent);opacity:0.62;pointer-events:none"></div>
5
+ <div style="position:absolute;right:0;top:300px;width:24px;height:44px;background:var(--accent);opacity:0.34;pointer-events:none"></div>
@@ -0,0 +1,27 @@
1
+ /* styles/memphis — generated by scripts/ppt-tpl/gen-skin.mjs from ppt-tpl/families/memphis/family.json.
2
+ 手改会在下次生成时丢失:要改就改 family.json。 */
3
+ :root{
4
+ --space-scale:0.98; --type-scale:1.06;
5
+ --accent:#F04A50; --c1:#F04A50; --c2:#898B0C; --c3:#189785; --c4:#238EC7; --chart-1:#F04A50;
6
+ --title:#2D271F; --body:#59544D; --muted:#847E76; --foot:#847E76;
7
+ --hair:#E0D6C8; --card-radius:4px;
8
+ --font-head:'Syne','Noto Sans SC',sans-serif;
9
+ --font-body:'Karla','Noto Sans SC',sans-serif;
10
+ --title-color:#2D271F; --body-color:#59544D; --slide-bg:#FBF2E8; --font-heading:var(--font-head);
11
+ }
12
+ .slide{background:#FBF2E8;color:var(--body);font-family:var(--font-body)}
13
+ .slide-backdrop{position:absolute;inset:0;background:#FBF2E8}
14
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
15
+ .rule,.rule-foot{background:var(--hair)}
16
+ .eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
17
+ .accent-bar{background:var(--accent)}
18
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;--talos-bake:1}
19
+ .cover-sub,.ending-sub,.section-desc{color:var(--muted)}
20
+ .card{border-radius:var(--card-radius);background:transparent;border:1px solid var(--hair)}
21
+ .card-idx{color:var(--muted)} .card-body{color:var(--body)} .card-title{color:var(--title)}
22
+ .card-grid .card:nth-child(4n+1) .card-rail,.card-grid .card:nth-child(4n+1) .card-dot{background:var(--c1)}
23
+ .card-grid .card:nth-child(4n+2) .card-rail,.card-grid .card:nth-child(4n+2) .card-dot{background:var(--c2)}
24
+ .card-grid .card:nth-child(4n+3) .card-rail,.card-grid .card:nth-child(4n+3) .card-dot{background:var(--c3)}
25
+ .card-grid .card:nth-child(4n+4) .card-rail,.card-grid .card:nth-child(4n+4) .card-dot{background:var(--c4)}
26
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);--talos-bake:1}
27
+ .kpi-label,.stat-unit{color:var(--muted)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
@@ -5,7 +5,7 @@
5
5
  所以皮肤可以在不碰任何 layout 的前提下定义自己的疏密。极简报告:留白大、字号收敛。 */
6
6
  --space-scale:1.18; --type-scale:0.97;
7
7
  --accent:#0A0A0A; --c1:#0A0A0A; --c2:#555555; --c3:#8A8A8A; --c4:#BFBFBF; --chart-1:#3F3F3F;
8
- --title:#0A0A0A; --body:#555555; --muted:#9B9B9B; --foot:#C4C4C4;
8
+ --title:#0A0A0A; --body:#555555; --muted:#919191; --foot:#C4C4C4;
9
9
  --hair:#E8E8E8; --card-radius:2px;
10
10
  --font-head:'Archivo','PingFang SC','Noto Sans SC','Hiragino Sans GB',sans-serif;
11
11
  --font-body:'Archivo','PingFang SC','Noto Sans SC','Hiragino Sans GB',sans-serif;
@@ -0,0 +1,4 @@
1
+ <!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: grid-glow -->
2
+ <div style="position:absolute;inset:0;background:#1C192C"></div>
3
+ <div style="position:absolute;inset:0;background-image:linear-gradient(var(--hair) 1px,transparent 1px),linear-gradient(90deg,var(--hair) 1px,transparent 1px);background-size:64px 64px;opacity:.5;pointer-events:none"></div>
4
+ <div style="position:absolute;right:-120px;top:-120px;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,var(--accent),transparent 70%);opacity:.22;pointer-events:none"></div>
@@ -0,0 +1,27 @@
1
+ /* styles/neon-cyber — generated by scripts/ppt-tpl/gen-skin.mjs from ppt-tpl/families/neon-cyber/family.json.
2
+ 手改会在下次生成时丢失:要改就改 family.json。 */
3
+ :root{
4
+ --space-scale:0.96; --type-scale:1.04;
5
+ --accent:#E076F5; --c1:#E076F5; --c2:#779EFC; --c3:#1AACE3; --c4:#13B1BE; --chart-1:#E076F5;
6
+ --title:#F7F5FD; --body:#C2BFCA; --muted:#87858F; --foot:#87858F;
7
+ --hair:#3F3B4D; --card-radius:4px;
8
+ --font-head:'Jost','Noto Sans SC',sans-serif;
9
+ --font-body:'IBM Plex Sans','Noto Sans SC',sans-serif;
10
+ --title-color:#F7F5FD; --body-color:#C2BFCA; --slide-bg:#1C192C; --font-heading:var(--font-head);
11
+ }
12
+ .slide{background:#1C192C;color:var(--body);font-family:var(--font-body)}
13
+ .slide-backdrop{position:absolute;inset:0;background:#1C192C}
14
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
15
+ .rule,.rule-foot{background:var(--hair)}
16
+ .eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
17
+ .accent-bar{background:var(--accent)}
18
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700}
19
+ .cover-sub,.ending-sub,.section-desc{color:var(--muted)}
20
+ .card{border-radius:var(--card-radius);background:transparent;border:1px solid var(--hair)}
21
+ .card-idx{color:var(--muted)} .card-body{color:var(--body)} .card-title{color:var(--title)}
22
+ .card-grid .card:nth-child(4n+1) .card-rail,.card-grid .card:nth-child(4n+1) .card-dot{background:var(--c1)}
23
+ .card-grid .card:nth-child(4n+2) .card-rail,.card-grid .card:nth-child(4n+2) .card-dot{background:var(--c2)}
24
+ .card-grid .card:nth-child(4n+3) .card-rail,.card-grid .card:nth-child(4n+3) .card-dot{background:var(--c3)}
25
+ .card-grid .card:nth-child(4n+4) .card-rail,.card-grid .card:nth-child(4n+4) .card-dot{background:var(--c4)}
26
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head)}
27
+ .kpi-label,.stat-unit{color:var(--muted)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
@@ -7,7 +7,7 @@
7
7
  --accent:#CDB85C; --c1:#CDB85C; --c2:#E3D394; --c3:#B49C42; --c4:#F0E4B0; --chart-1:#B49C42;
8
8
  --title:#F8F3E2; --body:#D6CB9E; --muted:#A6996A; --foot:#877A52;
9
9
  --hair:rgba(205,184,92,.18); --card-radius:14px;
10
- --font-head:'Marcellus','Optima','STKaiti','Kaiti SC','Songti SC','Noto Serif SC',serif;
10
+ --font-head:'Marcellus','Songti SC','Noto Serif SC',serif;
11
11
  --font-body:'Karla','PingFang SC','Noto Sans SC','Hiragino Sans GB',sans-serif;
12
12
  /* theme-compat: 让 --style 单独就能给整册上色(标题不落回深色) */
13
13
  --title-color:#F8F3E2; --body-color:#D6CB9E; --slide-bg:#574A0F; --font-heading:var(--font-head);
@@ -0,0 +1,4 @@
1
+ <!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: horizon -->
2
+ <div style="position:absolute;inset:0;background:#F2F2DE"></div>
3
+ <div style="position:absolute;left:0;right:0;top:62%;height:1px;background:var(--hair);pointer-events:none"></div>
4
+ <div style="position:absolute;left:0;right:0;top:62%;bottom:0;background:linear-gradient(to bottom,var(--accent),transparent);opacity:.10;pointer-events:none"></div>
@@ -0,0 +1,27 @@
1
+ /* styles/organic-earth — generated by scripts/ppt-tpl/gen-skin.mjs from ppt-tpl/families/organic-earth/family.json.
2
+ 手改会在下次生成时丢失:要改就改 family.json。 */
3
+ :root{
4
+ --space-scale:1.08; --type-scale:1;
5
+ --accent:#3C6F35; --c1:#3C6F35; --c2:#106E6E; --c3:#106A94; --c4:#765594; --chart-1:#3C6F35;
6
+ --title:#262F1F; --body:#50574B; --muted:#777E71; --foot:#777E71;
7
+ --hair:#CAD5C0; --card-radius:4px;
8
+ --font-head:'Fraunces','Songti SC',sans-serif;
9
+ --font-body:'Karla','Noto Sans SC',sans-serif;
10
+ --title-color:#262F1F; --body-color:#50574B; --slide-bg:#F2F2DE; --font-heading:var(--font-head);
11
+ }
12
+ .slide{background:#F2F2DE;color:var(--body);font-family:var(--font-body)}
13
+ .slide-backdrop{position:absolute;inset:0;background:#F2F2DE}
14
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
15
+ .rule,.rule-foot{background:var(--hair)}
16
+ .eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
17
+ .accent-bar{background:var(--accent)}
18
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;--talos-bake:1}
19
+ .cover-sub,.ending-sub,.section-desc{color:var(--muted)}
20
+ .card{border-radius:var(--card-radius);background:transparent;border:1px solid var(--hair)}
21
+ .card-idx{color:var(--muted)} .card-body{color:var(--body)} .card-title{color:var(--title)}
22
+ .card-grid .card:nth-child(4n+1) .card-rail,.card-grid .card:nth-child(4n+1) .card-dot{background:var(--c1)}
23
+ .card-grid .card:nth-child(4n+2) .card-rail,.card-grid .card:nth-child(4n+2) .card-dot{background:var(--c2)}
24
+ .card-grid .card:nth-child(4n+3) .card-rail,.card-grid .card:nth-child(4n+3) .card-dot{background:var(--c3)}
25
+ .card-grid .card:nth-child(4n+4) .card-rail,.card-grid .card:nth-child(4n+4) .card-dot{background:var(--c4)}
26
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);--talos-bake:1}
27
+ .kpi-label,.stat-unit{color:var(--muted)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
@@ -0,0 +1,4 @@
1
+ <!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: horizon -->
2
+ <div style="position:absolute;inset:0;background:#F6F6FF"></div>
3
+ <div style="position:absolute;left:0;right:0;top:62%;height:1px;background:var(--hair);pointer-events:none"></div>
4
+ <div style="position:absolute;left:0;right:0;top:62%;bottom:0;background:linear-gradient(to bottom,var(--accent),transparent);opacity:.10;pointer-events:none"></div>
@@ -0,0 +1,27 @@
1
+ /* styles/pastel-saas — generated by scripts/ppt-tpl/gen-skin.mjs from ppt-tpl/families/pastel-saas/family.json.
2
+ 手改会在下次生成时丢失:要改就改 family.json。 */
3
+ :root{
4
+ --space-scale:1.1; --type-scale:1.02;
5
+ --accent:#6F76BF; --c1:#6F76BF; --c2:#AA649E; --c3:#BF5D6F; --c4:#B36944; --chart-1:#6F76BF;
6
+ --title:#2F2F3B; --body:#585962; --muted:#80808B; --foot:#80808B;
7
+ --hair:#DBDCEB; --card-radius:4px;
8
+ --font-head:'Quicksand','Noto Sans SC',sans-serif;
9
+ --font-body:'Public Sans','Noto Sans SC',sans-serif;
10
+ --title-color:#2F2F3B; --body-color:#585962; --slide-bg:#F6F6FF; --font-heading:var(--font-head);
11
+ }
12
+ .slide{background:#F6F6FF;color:var(--body);font-family:var(--font-body)}
13
+ .slide-backdrop{position:absolute;inset:0;background:#F6F6FF}
14
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
15
+ .rule,.rule-foot{background:var(--hair)}
16
+ .eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
17
+ .accent-bar{background:var(--accent)}
18
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700}
19
+ .cover-sub,.ending-sub,.section-desc{color:var(--muted)}
20
+ .card{border-radius:var(--card-radius);background:transparent;border:1px solid var(--hair)}
21
+ .card-idx{color:var(--muted)} .card-body{color:var(--body)} .card-title{color:var(--title)}
22
+ .card-grid .card:nth-child(4n+1) .card-rail,.card-grid .card:nth-child(4n+1) .card-dot{background:var(--c1)}
23
+ .card-grid .card:nth-child(4n+2) .card-rail,.card-grid .card:nth-child(4n+2) .card-dot{background:var(--c2)}
24
+ .card-grid .card:nth-child(4n+3) .card-rail,.card-grid .card:nth-child(4n+3) .card-dot{background:var(--c3)}
25
+ .card-grid .card:nth-child(4n+4) .card-rail,.card-grid .card:nth-child(4n+4) .card-dot{background:var(--c4)}
26
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head)}
27
+ .kpi-label,.stat-unit{color:var(--muted)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}