@taloswork/ose-shared 0.1.1 → 0.1.3

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 (160) hide show
  1. package/package.json +3 -3
  2. package/skills/document/SKILL.md +29 -33
  3. package/skills/document/assets/fonts/Archivo-Regular.woff2 +0 -0
  4. package/skills/document/assets/fonts/Archivo-SemiBold.woff2 +0 -0
  5. package/skills/document/assets/fonts/BigShouldersDisplay-Bold.woff2 +0 -0
  6. package/skills/document/assets/fonts/BodoniModa-SemiBold.woff2 +0 -0
  7. package/skills/document/assets/fonts/CormorantGaramond-SemiBold.woff2 +0 -0
  8. package/skills/document/assets/fonts/Fraunces-SemiBold.woff2 +0 -0
  9. package/skills/document/assets/fonts/GochiHand-Regular.woff2 +0 -0
  10. package/skills/document/assets/fonts/IBMPlexSans-Regular.woff2 +0 -0
  11. package/skills/document/assets/fonts/IBMPlexSans-SemiBold.woff2 +0 -0
  12. package/skills/document/assets/fonts/Inter-Regular.woff2 +0 -0
  13. package/skills/document/assets/fonts/Jost-Regular.woff2 +0 -0
  14. package/skills/document/assets/fonts/Jost-SemiBold.woff2 +0 -0
  15. package/skills/document/assets/fonts/Karla-Regular.woff2 +0 -0
  16. package/skills/document/assets/fonts/Lora-Regular.woff2 +0 -0
  17. package/skills/document/assets/fonts/Manrope-Bold.woff2 +0 -0
  18. package/skills/document/assets/fonts/Manrope-Regular.woff2 +0 -0
  19. package/skills/document/assets/fonts/Marcellus-Regular.woff2 +0 -0
  20. package/skills/document/assets/fonts/PublicSans-Regular.woff2 +0 -0
  21. package/skills/document/assets/fonts/Sora-Regular.woff2 +0 -0
  22. package/skills/document/assets/fonts/Sora-SemiBold.woff2 +0 -0
  23. package/skills/document/assets/fonts/fonts.json +218 -0
  24. package/skills/document/bin/deck-build.cjs +275 -7
  25. package/skills/document/bin/deck-qa.cjs +1 -1
  26. package/skills/document/bin/doc-convert.cjs +11 -11
  27. package/skills/document/bin/doc-fill.cjs +1 -1
  28. package/skills/document/bin/doc-gen.cjs +119 -34
  29. package/skills/document/bin/doc-scan.cjs +8 -10
  30. package/skills/document/bin/doc-text.cjs +1 -1
  31. package/skills/document/bin/doc-validate.cjs +3 -3
  32. package/skills/document/bin/doc-xml.cjs +3 -3
  33. package/skills/document/bin/docx-annotate.cjs +3 -3
  34. package/skills/document/bin/html2pptx.cjs +290 -59
  35. package/skills/document/bin/ocr.cjs +1 -1
  36. package/skills/document/bin/pdf-form.cjs +1 -1
  37. package/skills/document/bin/pdf-images.cjs +1 -1
  38. package/skills/document/bin/pdf-ops.cjs +2 -2
  39. package/skills/document/bin/pdf-render.cjs +1 -1
  40. package/skills/document/bin/pdf-tables.cjs +1 -1
  41. package/skills/document/bin/pptx-clone.cjs +3 -3
  42. package/skills/document/bin/pptx-embed-fonts.cjs +1 -1
  43. package/skills/document/bin/pptx-set-image.cjs +3 -3
  44. package/skills/document/bin/pptx-slide.cjs +4 -4
  45. package/skills/document/bin/pptx-theme.cjs +1 -1
  46. package/skills/document/bin/pptx-tokenize.cjs +3 -3
  47. package/skills/document/bin/xlsx-query.cjs +1 -1
  48. package/skills/document/bin/xlsx-recalc.cjs +2 -2
  49. package/skills/document/catalog.json +25 -0
  50. package/skills/document/deck-design.md +191 -0
  51. package/skills/document/layouts/README.md +32 -0
  52. package/skills/document/layouts/banner-columns.tpl +9 -9
  53. package/skills/document/layouts/bento.tpl +3 -3
  54. package/skills/document/layouts/big-stat.tpl +3 -3
  55. package/skills/document/layouts/blocks-2x2.tpl +12 -12
  56. package/skills/document/layouts/brand-values.tpl +5 -5
  57. package/skills/document/layouts/cards-3.tpl +3 -3
  58. package/skills/document/layouts/cards-grid.tpl +3 -3
  59. package/skills/document/layouts/chart-full.tpl +3 -3
  60. package/skills/document/layouts/chart-kpi.tpl +3 -3
  61. package/skills/document/layouts/color-palette.tpl +5 -5
  62. package/skills/document/layouts/comparison.tpl +3 -3
  63. package/skills/document/layouts/concept-hub.tpl +3 -3
  64. package/skills/document/layouts/cover-centered.tpl +1 -1
  65. package/skills/document/layouts/cover-image.tpl +1 -1
  66. package/skills/document/layouts/cover-minimal.tpl +3 -3
  67. package/skills/document/layouts/cover-statement.tpl +3 -3
  68. package/skills/document/layouts/cover.tpl +1 -1
  69. package/skills/document/layouts/data-table.tpl +3 -3
  70. package/skills/document/layouts/dos-donts.tpl +14 -14
  71. package/skills/document/layouts/editorial-panel.tpl +11 -11
  72. package/skills/document/layouts/ending-contact.tpl +1 -1
  73. package/skills/document/layouts/ending.tpl +1 -1
  74. package/skills/document/layouts/funnel.tpl +3 -3
  75. package/skills/document/layouts/gantt.tpl +3 -3
  76. package/skills/document/layouts/hero.tpl +3 -3
  77. package/skills/document/layouts/icon-row.tpl +3 -3
  78. package/skills/document/layouts/image-full.tpl +5 -5
  79. package/skills/document/layouts/image-grid.tpl +3 -3
  80. package/skills/document/layouts/image-left.tpl +3 -3
  81. package/skills/document/layouts/list.tpl +3 -3
  82. package/skills/document/layouts/logo-guidelines.tpl +8 -8
  83. package/skills/document/layouts/map-distribution.tpl +3 -3
  84. package/skills/document/layouts/map-quad.tpl +6 -6
  85. package/skills/document/layouts/matrix-2x2.tpl +3 -3
  86. package/skills/document/layouts/numbered-brief.tpl +12 -12
  87. package/skills/document/layouts/org-tree.tpl +3 -3
  88. package/skills/document/layouts/problem-solution-banner.tpl +7 -7
  89. package/skills/document/layouts/problem-solution.tpl +3 -3
  90. package/skills/document/layouts/pyramid.tpl +3 -3
  91. package/skills/document/layouts/quote.tpl +1 -1
  92. package/skills/document/layouts/radar.tpl +3 -3
  93. package/skills/document/layouts/ring-progress.tpl +3 -3
  94. package/skills/document/layouts/section-fullbleed.tpl +3 -3
  95. package/skills/document/layouts/section-image.tpl +1 -1
  96. package/skills/document/layouts/section-stat.tpl +1 -1
  97. package/skills/document/layouts/section.tpl +1 -1
  98. package/skills/document/layouts/slots.json +1 -1
  99. package/skills/document/layouts/split-two-col.tpl +3 -3
  100. package/skills/document/layouts/stats-chart.tpl +3 -3
  101. package/skills/document/layouts/steps-serpentine.tpl +11 -11
  102. package/skills/document/layouts/steps-vertical.tpl +3 -3
  103. package/skills/document/layouts/steps.tpl +3 -3
  104. package/skills/document/layouts/team-row.tpl +4 -4
  105. package/skills/document/layouts/three-kpi.tpl +3 -3
  106. package/skills/document/layouts/timeline.tpl +3 -3
  107. package/skills/document/layouts/title-meta.tpl +5 -5
  108. package/skills/document/layouts/title.tpl +2 -2
  109. package/skills/document/layouts/toc-agenda.tpl +3 -3
  110. package/skills/document/layouts/toc-editorial.tpl +15 -0
  111. package/skills/document/layouts/toc-panel.tpl +4 -4
  112. package/skills/document/layouts/toc.tpl +3 -3
  113. package/skills/document/layouts/transition.tpl +1 -1
  114. package/skills/document/layouts/two-kpi.tpl +3 -3
  115. package/skills/document/layouts/type-specimen.tpl +10 -10
  116. package/skills/document/layouts/versus.tpl +3 -3
  117. package/skills/document/motion/README.md +11 -0
  118. package/skills/document/packs/README.md +9 -0
  119. package/skills/document/styles/README.md +36 -15
  120. package/skills/document/styles/_contract-defaults.css +55 -0
  121. package/skills/document/styles/_samples/_groups/biz-premium.webp +0 -0
  122. package/skills/document/styles/_samples/_groups/creative.webp +0 -0
  123. package/skills/document/styles/_samples/_groups/editorial.webp +0 -0
  124. package/skills/document/styles/_samples/_groups/minimal.webp +0 -0
  125. package/skills/document/styles/_samples/_groups/natural.webp +0 -0
  126. package/skills/document/styles/_samples/_groups/tech-future.webp +0 -0
  127. package/skills/document/styles/_samples/anthropic.webp +0 -0
  128. package/skills/document/styles/_samples/apple.webp +0 -0
  129. package/skills/document/styles/_samples/black-gold.webp +0 -0
  130. package/skills/document/styles/_samples/branding.webp +0 -0
  131. package/skills/document/styles/_samples/cinereel.webp +0 -0
  132. package/skills/document/styles/_samples/cool.webp +0 -0
  133. package/skills/document/styles/_samples/hand-drawn.webp +0 -0
  134. package/skills/document/styles/_samples/ivory-gold.webp +0 -0
  135. package/skills/document/styles/_samples/magazine-ink.webp +0 -0
  136. package/skills/document/styles/_samples/mckinsey.webp +0 -0
  137. package/skills/document/styles/_samples/mono.webp +0 -0
  138. package/skills/document/styles/_samples/olive-gold.webp +0 -0
  139. package/skills/document/styles/_samples/swiss-grid.webp +0 -0
  140. package/skills/document/styles/anthropic/backdrop.html +4 -0
  141. package/skills/document/styles/anthropic/skin.css +15 -8
  142. package/skills/document/styles/apple/backdrop.html +4 -1
  143. package/skills/document/styles/apple/skin.css +5 -2
  144. package/skills/document/styles/black-gold/backdrop.html +3 -0
  145. package/skills/document/styles/black-gold/skin.css +15 -8
  146. package/skills/document/styles/branding/backdrop.html +4 -0
  147. package/skills/document/styles/branding/skin.css +14 -7
  148. package/skills/document/styles/cinereel/skin.css +28 -10
  149. package/skills/document/styles/cool/backdrop.html +3 -0
  150. package/skills/document/styles/cool/skin.css +5 -2
  151. package/skills/document/styles/hand-drawn/skin.css +14 -6
  152. package/skills/document/styles/ivory-gold/skin.css +19 -6
  153. package/skills/document/styles/magazine-ink/skin.css +6 -1
  154. package/skills/document/styles/mckinsey/backdrop.html +5 -0
  155. package/skills/document/styles/mckinsey/skin.css +5 -2
  156. package/skills/document/styles/mono/backdrop.html +6 -0
  157. package/skills/document/styles/mono/skin.css +5 -2
  158. package/skills/document/styles/olive-gold/backdrop.html +5 -0
  159. package/skills/document/styles/olive-gold/skin.css +15 -8
  160. package/skills/document/styles/swiss-grid/skin.css +6 -1
@@ -2,11 +2,14 @@
2
2
  清爽、留白大、可持续/美妆/零售调性。原创皮肤(风格方向,非复刻任何模版)。
3
3
  浅色 skin:复用同一套 layouts。 */
4
4
  :root{
5
+ /* 排版节奏 — layouts 的字号与页边距都写成 calc(N * var(--…-scale,1)),
6
+ 所以皮肤可以在不碰任何 layout 的前提下定义自己的疏密。品牌手册:书页般的宽边距。 */
7
+ --space-scale:1.12; --type-scale:0.98;
5
8
  --accent:#7A9A72; --c1:#7A9A72; --c2:#B79C6E; --c3:#5E7D5A; --c4:#A9A288; --chart-1:#6F9169;
6
9
  --title:#26261F; --body:#57574A; --muted:#8A876F; --foot:#A8A48C;
7
10
  --hair:#DFD8C5; --card-radius:10px;
8
- --font-head:Georgia,'Songti SC','Noto Serif SC','Times New Roman',serif;
9
- --font-body:'Helvetica Neue','PingFang SC','Hiragino Sans GB',sans-serif;
11
+ --font-head:'Cormorant Garamond','Palatino','Songti SC','Noto Serif SC','Source Han Serif SC',serif;
12
+ --font-body:'Karla','PingFang SC','Noto Sans SC','Hiragino Sans GB',sans-serif;
10
13
  /* theme-compat */
11
14
  --title-color:#26261F; --body-color:#57574A; --slide-bg:#F3EEE2; --font-heading:var(--font-head);
12
15
  }
@@ -21,6 +24,10 @@
21
24
  /* --talos-bake:1 → titles bake into the backdrop so the serif shows for CJK too
22
25
  (pinning a CJK pptx typeface vanishes in hybrid). Trade-off: title is image,
23
26
  not editable/searchable — the accepted cost for a serif 品牌 skin. */
27
+ /* This skin's identity IS this face — a didone/garalde/roman falling back to the
28
+ system serif reads as a different deck entirely. Bake the display classes so the
29
+ audience sees it; body copy stays native (editable/searchable). See
30
+ deck-design.md § Fonts for why bundling alone doesn't reach the native text layer. */
24
31
  .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;--talos-bake:1}
25
32
  .cover-sub,.ending-sub,.section-desc{color:var(--body)}
26
33
  .card{border-radius:var(--card-radius);background:#FBF7EC;border:1px solid var(--hair);box-shadow:0 14px 34px rgba(60,58,40,.09);overflow:hidden}
@@ -35,16 +42,16 @@
35
42
  .cmp-title{color:var(--title)} .cmp-k{color:var(--muted)} .cmp-v{color:var(--title)}
36
43
  .cmp-col--rec .cmp-v{color:var(--accent)}
37
44
  .cmp-badge{background:var(--accent);color:#F6F2E8}
38
- .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);font-weight:700} .kpi-label{color:var(--muted)}
45
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);font-weight:700;--talos-bake:1} .kpi-label{color:var(--muted)}
39
46
  .stat-unit{color:var(--accent)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
40
47
  .step-line{background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.5}
41
- .step-circle{background:#FBF7EC;border:1px solid var(--hair);box-shadow:0 12px 28px rgba(60,58,40,.09);font-family:var(--font-head)}
48
+ .step-circle{background:#FBF7EC;border:1px solid var(--hair);box-shadow:0 12px 28px rgba(60,58,40,.09);font-family:var(--font-head);--talos-bake:1}
42
49
  .steps .step:nth-child(4n+1) .step-circle{color:var(--c1)} .steps .step:nth-child(4n+2) .step-circle{color:var(--c2)} .steps .step:nth-child(4n+3) .step-circle{color:var(--c3)} .steps .step:nth-child(4n+4) .step-circle{color:var(--c4)}
43
50
  .step-tag,.step-body{color:var(--muted)} .step-title{color:var(--title)}
44
51
  .toc-item{border-top:1px solid var(--hair)} .toc-grid .toc-item:nth-child(1){border-top-color:var(--c1)} .toc-grid .toc-item:nth-child(2){border-top-color:var(--c2)}
45
- .toc-grid .toc-item:nth-child(1) .toc-num{color:var(--c1)} .toc-grid .toc-item:nth-child(2) .toc-num{color:var(--c2)} .toc-num{color:var(--foot);font-family:var(--font-head)}
52
+ .toc-grid .toc-item:nth-child(1) .toc-num{color:var(--c1)} .toc-grid .toc-item:nth-child(2) .toc-num{color:var(--c2)} .toc-num{color:var(--foot);font-family:var(--font-head);--talos-bake:1}
46
53
  .toc-title{color:var(--title)} .toc-desc{color:var(--muted)}
47
- .section-ghost{color:transparent;-webkit-text-stroke:1px rgba(122,154,114,.28);font-family:var(--font-head)}
54
+ .section-ghost{color:transparent;-webkit-text-stroke:1px rgba(122,154,114,.28);font-family:var(--font-head);--talos-bake:1}
48
55
  .surface{background:#FBF7EC;border:1px solid var(--hair);border-radius:10px} .surface-label{color:var(--muted)}
49
56
  .ending-contact{color:var(--muted)}
50
57
  /* full-bleed image overlay — 始终浅色 */
@@ -52,7 +59,7 @@
52
59
  .scrim{background:linear-gradient(180deg,transparent 26%,rgba(0,0,0,.58))}
53
60
  /* timeline / concept-hub */
54
61
  .tl-dot{background:var(--accent);border-radius:50%}
55
- .tl-date{color:var(--accent);font-family:var(--font-head)}
62
+ .tl-date{color:var(--accent);font-family:var(--font-head);--talos-bake:1}
56
63
  .tl-title{color:var(--title)} .tl-desc{color:var(--muted)}
57
64
  .hub-center{border-radius:50%;border:2px solid var(--accent)} .hub-title{color:var(--accent)} .hub-link{stroke:var(--accent);opacity:.4}
58
65
  /* data-table */
@@ -1,13 +1,16 @@
1
- /* styles/cinereel — 胶片感黑白极简:黑底/照片底 + 白色 Anton 粗体大写标题(标题=accent,
1
+ /* styles/cinereel — 胶片感黑白极简:黑底/照片底 + 白色超浓缩粗体大写标题(Big Shoulders
2
+ Display,比 Anton 更窄、字腔更开,对齐 slidescarnival 音乐录影带模板;正文 Jost 几何无衬线)(标题=accent,
2
3
  无色相)+ 常驻胶片取景框(顶/底黑色遮幅条,每页恒定)+ .slide-inverse 浅灰面板反色(目录/流程页)。
3
4
  皮肤层:定义 layouts/*.tpl 用到的全部语义 class。换 skin 只换这一个文件。 */
4
- @font-face{font-family:'Anton';src:local('Anton'),url(data:font/woff2;base64,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) format('woff2');font-display:swap}
5
5
  :root{
6
+ /* 排版节奏 — layouts 的字号与页边距都写成 calc(N * var(--…-scale,1)),
7
+ 所以皮肤可以在不碰任何 layout 的前提下定义自己的疏密。遮幅条已经定了节奏,不再叠加。 */
8
+ --space-scale:1.0; --type-scale:1.0;
6
9
  --accent:#F5F4F0; --c1:#F5F4F0; --c2:#C7C5BE; --c3:#8A8880; --c4:#5A584F; --chart-1:#8A8880;
7
10
  --title:#F5F4F0; --body:#C7C5BE; --muted:#8A8880; --foot:#656358;
8
11
  --hair:rgba(245,244,240,.16); --card-radius:0px;
9
- --font-head:'Anton','Arial Narrow Bold','Heiti SC','PingFang SC',sans-serif;
10
- --font-body:'Helvetica Neue','Arial','PingFang SC','Microsoft YaHei',sans-serif;
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;
11
14
  /* theme-compat vars: SKELETON_CSS's section.slide h1/h2/h3 + section.slide out-specify
12
15
  the skin's .cover-title/.slide, so titles/body fall back to these — define them so
13
16
  --style alone fully colors the deck. */
@@ -50,19 +53,30 @@
50
53
  .cmp-col--rec .cmp-v{color:var(--accent)}
51
54
  .cmp-badge{background:var(--accent);color:#0D0D0C}
52
55
  /* kpi / big-stat */
53
- .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head)} .kpi-label{color:var(--muted)}
56
+ /* Anton in the NATIVE text layer is a lottery (the consuming app substitutes a wider
57
+ generic sans — wrong glyphs, and wide enough to wrap). These are decorative display
58
+ numerals/dates that nobody edits, so fidelity beats editability: bake them, same call
59
+ as the titles above. `.panel-item-title` is deliberately NOT baked — it is real
60
+ content a reader may want to change. Baked text is also invisible to data-anim and
61
+ deck-qa; see deck-design.md § Fonts. */
62
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);--talos-bake:1} .kpi-label{color:var(--muted)}
54
63
  .stat-unit{color:var(--accent)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
55
64
  /* steps */
56
65
  .step-line{background:var(--hair)}
57
- .step-circle{background:rgba(245,244,240,.04);border:1px solid var(--hair);font-family:var(--font-head);position:relative;z-index:1}
66
+ .step-circle{background:rgba(245,244,240,.04);border:1px solid var(--hair);font-family:var(--font-head);position:relative;z-index:1;--talos-bake:1}
58
67
  .steps .step:nth-child(4n+1) .step-circle{color:var(--c1)} .steps .step:nth-child(4n+2) .step-circle{color:var(--c2)} .steps .step:nth-child(4n+3) .step-circle{color:var(--c3)} .steps .step:nth-child(4n+4) .step-circle{color:var(--c4)}
59
68
  .step-tag,.step-body{color:var(--muted)} .step-title{color:var(--title)}
60
69
  /* toc */
61
70
  .toc-item{border-top:1px solid var(--hair)} .toc-grid .toc-item:nth-child(1){border-top-color:var(--c1)} .toc-grid .toc-item:nth-child(2){border-top-color:var(--c2)}
62
- .toc-grid .toc-item:nth-child(1) .toc-num{color:var(--c1)} .toc-grid .toc-item:nth-child(2) .toc-num{color:var(--c2)} .toc-num{color:var(--foot);font-family:var(--font-head)}
71
+ .toc-grid .toc-item:nth-child(1) .toc-num{color:var(--c1)} .toc-grid .toc-item:nth-child(2) .toc-num{color:var(--c2)} /* Anton is a custom condensed face the consuming app may fail to resolve for the
72
+ NATIVE text layer (same failure the title rule above documents). On a big
73
+ display numeral that substitution is wide enough to wrap the trailing "."
74
+ onto its own line — and the numeral renders in a generic sans instead of
75
+ Anton. Bake it: these numerals are decoration, editability buys nothing. */
76
+ .toc-num{color:var(--foot);font-family:var(--font-head);--talos-bake:1}
63
77
  .toc-title{color:var(--title)} .toc-desc{color:var(--muted)}
64
78
  /* section ghost + surface */
65
- .section-ghost{color:transparent;-webkit-text-stroke:1px rgba(245,244,240,.16);font-family:var(--font-head)}
79
+ .section-ghost{color:transparent;-webkit-text-stroke:1px rgba(245,244,240,.16);font-family:var(--font-head);--talos-bake:1}
66
80
  .surface{background:rgba(245,244,240,.05);border:1px solid var(--hair);border-radius:0;position:relative;z-index:1} .surface-label{color:var(--muted)}
67
81
  .ending-contact{color:var(--muted)}
68
82
 
@@ -71,7 +85,7 @@
71
85
  .overlay-sub{color:rgba(255,255,255,.82)}
72
86
  /* batch-5 layouts: timeline / concept-hub / cover-image */
73
87
  .tl-dot{background:var(--accent);border-radius:50%}
74
- .tl-date{color:var(--accent);font-family:var(--font-head)}
88
+ .tl-date{color:var(--accent);font-family:var(--font-head);--talos-bake:1}
75
89
  .tl-title{color:var(--title)} .tl-desc{color:var(--muted)}
76
90
  .hub-center{border-radius:50%;border:2px solid var(--accent)}
77
91
  .hub-title{color:var(--accent)}
@@ -125,6 +139,10 @@
125
139
  /* ===== .slide-inverse — 浅灰面板反色(目录/流程图这类页面,原模版里黑色取景框不变,
126
140
  只有中间内容区翻成浅灰;标题/accent 在这套皮肤里没有独立色相,必须跟着翻黑,
127
141
  与 ivory-gold 的"标题恒定金色"不同 —— 每个皮肤自行决定哪些 token 要翻)。 */
128
- .slide.slide-inverse{--slide-bg:#F0EFEA;--body:#3A3830;--muted:#6E6C61;--foot:#8F8D80;--hair:rgba(13,13,12,.14);--title:#0D0D0C;--accent:#0D0D0C;--title-color:#0D0D0C;--body-color:#3A3830}
142
+ .slide.slide-inverse{--slide-bg:#F0EFEA;--body:#3A3830;--muted:#6E6C61;--foot:#8F8D80;--hair:rgba(13,13,12,.14);--title:#0D0D0C;--accent:#0D0D0C;--title-color:#0D0D0C;--body-color:#3A3830;/* the 4-step ramp is a LIGHTNESS ladder tuned for the black ground (c1 near-white = most
143
+ emphasis). On the light panel it has to invert too, or the first two steps — the TOC
144
+ numerals, card rails, step circles — sit near-white on near-white and vanish. Same order
145
+ of emphasis, mirrored: c1 darkest. */
146
+ --c1:#0D0D0C;--c2:#3A3830;--c3:#55534A;--c4:#6E6C61}
129
147
  .slide.slide-inverse .card,.slide.slide-inverse .cmp-col,.slide.slide-inverse .step-circle,.slide.slide-inverse .surface{background:rgba(13,13,12,.04)}
130
148
  .slide.slide-inverse .cmp-badge,.slide.slide-inverse .banner-title{color:#F0EFEA}
@@ -1 +1,4 @@
1
1
  <div class="bd-arc" style="position:absolute;left:0;right:0;height:120px;top:var(--bd-arc-y,540px);pointer-events:none"><svg width="100%" height="100%" viewBox="0 0 1280 120" preserveAspectRatio="none"><defs><linearGradient id="arc" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".12"/><stop offset=".5" stop-color="__ACCENT__" stop-opacity=".34"/><stop offset="1" stop-color="__ACCENT__" stop-opacity=".12"/></linearGradient><filter id="arcb"><feGaussianBlur stdDeviation="1.4"/></filter></defs><path d="M-40 100 C 360 22,920 22,1320 100" fill="none" stroke="url(#arc)" stroke-width="1.6" filter="url(#arcb)"/><path d="M-40 100 C 360 22,920 22,1320 100" fill="none" stroke="url(#arc)" stroke-width=".7"/></svg></div><svg style="position:absolute;inset:0;width:100%;height:100%;opacity:.05;mix-blend-mode:overlay;pointer-events:none"><filter id="bdns"><feTurbulence type="fractalNoise" baseFrequency=".85" numOctaves="2" stitchTiles="stitch"/></filter><rect width="100%" height="100%" filter="url(#bdns)"/></svg>
2
+ <!-- signature: instrument ticks — a measurement scale along the top right edge. -->
3
+ <div style="position:absolute;right:56px;top:34px;display:flex;gap:9px;align-items:flex-start;pointer-events:none"><span style="display:block;width:1px;height:16px;background:var(--accent);opacity:.8"></span><span style="display:block;width:1px;height:8px;background:var(--accent);opacity:.45"></span><span style="display:block;width:1px;height:8px;background:var(--accent);opacity:.45"></span><span style="display:block;width:1px;height:8px;background:var(--accent);opacity:.45"></span><span style="display:block;width:1px;height:16px;background:var(--accent);opacity:.8"></span><span style="display:block;width:1px;height:8px;background:var(--accent);opacity:.45"></span><span style="display:block;width:1px;height:8px;background:var(--accent);opacity:.45"></span><span style="display:block;width:1px;height:8px;background:var(--accent);opacity:.45"></span><span style="display:block;width:1px;height:16px;background:var(--accent);opacity:.8"></span></div>
4
+ <div style="position:absolute;right:56px;top:34px;width:129px;height:1px;background:var(--accent);opacity:.5;pointer-events:none"></div>
@@ -1,11 +1,14 @@
1
1
  /* styles/cool — 默认酷炫:深蓝底 + 蓝青辉光 + 玻璃卡 + 4 色 accent ramp。
2
2
  皮肤层:定义 layouts/*.tpl 用到的全部语义 class。换 skin 只换这一个文件。 */
3
3
  :root{
4
+ /* 排版节奏 — layouts 的字号与页边距都写成 calc(N * var(--…-scale,1)),
5
+ 所以皮肤可以在不碰任何 layout 的前提下定义自己的疏密。基准。 */
6
+ --space-scale:1.0; --type-scale:1.0;
4
7
  --accent:#7DE2D1; --c1:#7DE2D1; --c2:#A9B4FF; --c3:#E7C08A; --c4:#E6A0B0; --chart-1:#35B0A0;
5
8
  --title:#F4F8FF; --body:#93A0BE; --muted:#6E7A98; --foot:#5C6885;
6
9
  --hair:rgba(255,255,255,.08); --card-radius:18px; --glow:0 0 18px var(--accent);
7
- --font-head:'Avenir Next','Futura','Helvetica Neue','PingFang SC','Hiragino Sans GB',sans-serif;
8
- --font-body:'Helvetica Neue','PingFang SC',sans-serif;
10
+ --font-head:'Sora','PingFang SC','Noto Sans SC','Hiragino Sans GB',sans-serif;
11
+ --font-body:'Sora','PingFang SC','Noto Sans SC','Hiragino Sans GB',sans-serif;
9
12
  /* theme-compat vars: SKELETON_CSS's section.slide h1/h2/h3 + section.slide out-specify
10
13
  the skin's .cover-title/.slide, so titles/body fall back to these — define them so
11
14
  --style alone fully colors the deck (else headings render dark on the dark bg). */
@@ -1,6 +1,9 @@
1
1
  /* styles/hand-drawn — 手绘涂鸦:纸感底 + 马克笔色 + 深描边卡 + 手写体。
2
2
  皮肤层:定义 layouts/*.tpl 用到的全部语义 class。换 skin 只换这一个文件。 */
3
3
  :root{
4
+ /* 排版节奏 — layouts 的字号与页边距都写成 calc(N * var(--…-scale,1)),
5
+ 所以皮肤可以在不碰任何 layout 的前提下定义自己的疏密。工作坊:字大一点更好读,边距收一点。 */
6
+ --space-scale:0.96; --type-scale:1.05;
4
7
  --accent:#E63946; --c1:#E63946; --c2:#457B9D; --c3:#E9A63A; --c4:#2A9D8F; --chart-1:#DE6A66;
5
8
  --title:#2B2B2B; --body:#3A3A3A; --muted:#8A8A80; --foot:#A8A89E;
6
9
  --hair:rgba(43,43,43,.16); --ink:rgba(43,43,43,.55); --card-radius:16px;
@@ -16,7 +19,12 @@
16
19
  .deck-header,.deck-footer,.deck-pageno{color:var(--muted);font-family:'Helvetica Neue','PingFang SC',sans-serif}
17
20
  .rule{background:var(--hair)} .rule-foot{background:rgba(43,43,43,.10)}
18
21
  .eyebrow{color:var(--accent);font-family:'Helvetica Neue','PingFang SC',sans-serif;font-weight:700} .accent-bar{background:var(--accent);border-radius:2px}
19
- .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700}
22
+ /* Gochi Hand is the whole point of this skin and no OS ships it, so the NATIVE text
23
+ layer resolves the stack further down: Comic Sans MS where Microsoft fonts exist,
24
+ and the bare `cursive` keyword (LibreOffice → Snell Roundhand, a copperplate script)
25
+ where they don't. Bake the marker-pen faces so the hand-drawn look is what the
26
+ audience actually sees. `.panel-item-title` stays native — real editable content. */
27
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;--talos-bake:1}
20
28
  .cover-sub,.ending-sub,.section-desc{color:var(--body)}
21
29
  /* off-white card + dark sketchy border + marker ramp */
22
30
  .card{border-radius:var(--card-radius);background:#FFFDF8;border:2px solid var(--ink);box-shadow:0 12px 30px rgba(20,25,45,.08);overflow:hidden}
@@ -33,19 +41,19 @@
33
41
  .cmp-col--rec .cmp-v{color:var(--accent)}
34
42
  .cmp-badge{background:var(--accent);color:#FFFFFF;font-family:'Helvetica Neue','PingFang SC',sans-serif}
35
43
  /* kpi / big-stat */
36
- .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head)} .kpi-label{color:var(--muted)}
44
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);--talos-bake:1} .kpi-label{color:var(--muted)}
37
45
  .stat-unit{color:var(--accent)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
38
46
  /* steps */
39
47
  .step-line{background:var(--hair)}
40
- .step-circle{background:#FFFDF8;border:2px solid var(--ink);box-shadow:0 10px 24px rgba(20,25,45,.07);font-family:var(--font-head)}
48
+ .step-circle{background:#FFFDF8;border:2px solid var(--ink);box-shadow:0 10px 24px rgba(20,25,45,.07);font-family:var(--font-head);--talos-bake:1}
41
49
  .steps .step:nth-child(4n+1) .step-circle{color:var(--c1)} .steps .step:nth-child(4n+2) .step-circle{color:var(--c2)} .steps .step:nth-child(4n+3) .step-circle{color:var(--c3)} .steps .step:nth-child(4n+4) .step-circle{color:var(--c4)}
42
50
  .step-tag,.step-body{color:var(--muted)} .step-title{color:var(--title)}
43
51
  /* toc */
44
52
  .toc-item{border-top:2px solid var(--hair)} .toc-grid .toc-item:nth-child(1){border-top-color:var(--c1)} .toc-grid .toc-item:nth-child(2){border-top-color:var(--c2)}
45
- .toc-grid .toc-item:nth-child(1) .toc-num{color:var(--c1)} .toc-grid .toc-item:nth-child(2) .toc-num{color:var(--c2)} .toc-num{color:var(--foot);font-family:var(--font-head)}
53
+ .toc-grid .toc-item:nth-child(1) .toc-num{color:var(--c1)} .toc-grid .toc-item:nth-child(2) .toc-num{color:var(--c2)} .toc-num{color:var(--foot);font-family:var(--font-head);--talos-bake:1}
46
54
  .toc-title{color:var(--title)} .toc-desc{color:var(--muted)}
47
55
  /* section ghost + surface */
48
- .section-ghost{color:transparent;-webkit-text-stroke:2px rgba(43,43,43,.14);font-family:var(--font-head)}
56
+ .section-ghost{color:transparent;-webkit-text-stroke:2px rgba(43,43,43,.14);font-family:var(--font-head);--talos-bake:1}
49
57
  .surface{background:#FFFDF8;border:2px solid var(--ink);border-radius:16px} .surface-label{color:var(--muted)}
50
58
  .ending-contact{color:var(--muted)}
51
59
 
@@ -54,7 +62,7 @@
54
62
  .overlay-sub{color:rgba(255,255,255,.82)}
55
63
  /* batch-5 layouts: timeline / concept-hub / cover-image */
56
64
  .tl-dot{background:var(--accent);border-radius:50%}
57
- .tl-date{color:var(--accent);font-family:var(--font-head)}
65
+ .tl-date{color:var(--accent);font-family:var(--font-head);--talos-bake:1}
58
66
  .tl-title{color:var(--title)} .tl-desc{color:var(--muted)}
59
67
  .hub-center{border-radius:50%;border:3px solid var(--accent)}
60
68
  .hub-title{color:var(--accent)}
@@ -1,8 +1,10 @@
1
1
  /* styles/ivory-gold — 奶油底 + 青铜金标题(标题=accent,非独立浅色) + Anton 粗体无衬线大写 +
2
2
  黑色反色区块(.slide-inverse,同一 layout 可多次复用,每次实例自行决定极性)。
3
3
  皮肤层:定义 layouts/*.tpl 用到的全部语义 class。换 skin 只换这一个文件。 */
4
- @font-face{font-family:'Anton';src:local('Anton'),url(data:font/woff2;base64,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) format('woff2');font-display:swap}
5
4
  :root{
5
+ /* 排版节奏 — layouts 的字号与页边距都写成 calc(N * var(--…-scale,1)),
6
+ 所以皮肤可以在不碰任何 layout 的前提下定义自己的疏密。奢华极简:靠留白撑场。 */
7
+ --space-scale:1.16; --type-scale:1.0;
6
8
  --accent:#A97C3F; --c1:#A97C3F; --c2:#C9A467; --c3:#8A6530; --c4:#DCC08C; --chart-1:#B58A4A;
7
9
  --title:#A97C3F; --body:#2B2823; --muted:#6B6558; --foot:#8A8374;
8
10
  --hair:rgba(169,124,63,.22); --card-radius:6px;
@@ -47,19 +49,30 @@
47
49
  .cmp-col--rec .cmp-v{color:var(--accent)}
48
50
  .cmp-badge{background:var(--accent);color:#FFFFFF}
49
51
  /* kpi / big-stat */
50
- .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head)} .kpi-label{color:var(--muted)}
52
+ /* Anton in the NATIVE text layer is a lottery (the consuming app substitutes a wider
53
+ generic sans — wrong glyphs, and wide enough to wrap). These are decorative display
54
+ numerals/dates that nobody edits, so fidelity beats editability: bake them, same call
55
+ as the titles above. `.panel-item-title` is deliberately NOT baked — it is real
56
+ content a reader may want to change. Baked text is also invisible to data-anim and
57
+ deck-qa; see deck-design.md § Fonts. */
58
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);--talos-bake:1} .kpi-label{color:var(--muted)}
51
59
  .stat-unit{color:var(--accent)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
52
60
  /* steps */
53
61
  .step-line{background:var(--hair)}
54
- .step-circle{background:rgba(169,124,63,.05);border:1px solid var(--hair);box-shadow:0 6px 18px rgba(0,0,0,.05);font-family:var(--font-head)}
62
+ .step-circle{background:rgba(169,124,63,.05);border:1px solid var(--hair);box-shadow:0 6px 18px rgba(0,0,0,.05);font-family:var(--font-head);--talos-bake:1}
55
63
  .steps .step:nth-child(4n+1) .step-circle{color:var(--c1)} .steps .step:nth-child(4n+2) .step-circle{color:var(--c2)} .steps .step:nth-child(4n+3) .step-circle{color:var(--c3)} .steps .step:nth-child(4n+4) .step-circle{color:var(--c4)}
56
64
  .step-tag,.step-body{color:var(--muted)} .step-title{color:var(--title)}
57
65
  /* toc */
58
66
  .toc-item{border-top:1px solid var(--hair)} .toc-grid .toc-item:nth-child(1){border-top-color:var(--c1)} .toc-grid .toc-item:nth-child(2){border-top-color:var(--c2)}
59
- .toc-grid .toc-item:nth-child(1) .toc-num{color:var(--c1)} .toc-grid .toc-item:nth-child(2) .toc-num{color:var(--c2)} .toc-num{color:var(--foot);font-family:var(--font-head)}
67
+ .toc-grid .toc-item:nth-child(1) .toc-num{color:var(--c1)} .toc-grid .toc-item:nth-child(2) .toc-num{color:var(--c2)} /* Anton is a custom condensed face the consuming app may fail to resolve for the
68
+ NATIVE text layer (same failure the title rule above documents). On a big
69
+ display numeral that substitution is wide enough to wrap the trailing "."
70
+ onto its own line — and the numeral renders in a generic sans instead of
71
+ Anton. Bake it: these numerals are decoration, editability buys nothing. */
72
+ .toc-num{color:var(--foot);font-family:var(--font-head);--talos-bake:1}
60
73
  .toc-title{color:var(--title)} .toc-desc{color:var(--muted)}
61
74
  /* section ghost + surface */
62
- .section-ghost{color:transparent;-webkit-text-stroke:1px rgba(169,124,63,.22);font-family:var(--font-head)}
75
+ .section-ghost{color:transparent;-webkit-text-stroke:1px rgba(169,124,63,.22);font-family:var(--font-head);--talos-bake:1}
63
76
  .surface{background:rgba(169,124,63,.05);border:1px solid var(--hair);border-radius:6px} .surface-label{color:var(--muted)}
64
77
  .ending-contact{color:var(--muted)}
65
78
 
@@ -68,7 +81,7 @@
68
81
  .overlay-sub{color:rgba(255,255,255,.82)}
69
82
  /* batch-5 layouts: timeline / concept-hub / cover-image */
70
83
  .tl-dot{background:var(--accent);border-radius:50%}
71
- .tl-date{color:var(--accent);font-family:var(--font-head)}
84
+ .tl-date{color:var(--accent);font-family:var(--font-head);--talos-bake:1}
72
85
  .tl-title{color:var(--title)} .tl-desc{color:var(--muted)}
73
86
  .hub-center{border-radius:50%;border:2px solid var(--accent)}
74
87
  .hub-title{color:var(--accent)}
@@ -6,6 +6,9 @@
6
6
  Noto Serif SC/Noto Sans SC 已经是 html2pptx 的 CJK 安全字体名单(bin-src/html2pptx.mjs
7
7
  cjkFontFaceCss),中文大标题走 CJK 省略 fontFace 的安全路径,不需要 --talos-bake。 */
8
8
  :root{
9
+ /* 排版节奏 — layouts 的字号与页边距都写成 calc(N * var(--…-scale,1)),
10
+ 所以皮肤可以在不碰任何 layout 的前提下定义自己的疏密。杂志版面:略宽的栏外白。 */
11
+ --space-scale:1.08; --type-scale:1.03;
9
12
  --ink:#0A1F3D; --paper:#F1F3F5; --paper-tint:#E4E8EC; --ink-tint:#152A4A;
10
13
  --accent:#0A1F3D; --c1:#0A1F3D; --c2:#384962; --c3:#697688; --c4:#9CA5B1; --chart-1:#697688;
11
14
  --title:#0A1F3D; --body:#384962; --muted:#697688; --foot:#848F9F;
@@ -101,7 +104,9 @@
101
104
 
102
105
  /* ===== .slide-inverse — 深墨底(guizang 的 .slide.dark);标题/正文一并反色,
103
106
  因为这套皮肤是纯墨色无独立色相(同 cinereel),不像 ivory-gold 那样标题恒定。 */
104
- .slide.slide-inverse{--slide-bg:#0A1F3D;--body:#CBD0D7;--muted:#8D97A5;--foot:#6B788A;--hair:rgba(241,243,245,.14);--title:#F1F3F5;--accent:#F1F3F5;--title-color:#F1F3F5;--body-color:#CBD0D7}
107
+ /* The ramp is an ink-on-porcelain darkness ladder; on the navy panel it must mirror,
108
+ or --c1 (#0A1F3D) lands EXACTLY on the panel ground and its text disappears. */
109
+ .slide.slide-inverse{--slide-bg:#0A1F3D;--body:#CBD0D7;--muted:#8D97A5;--foot:#6B788A;--hair:rgba(241,243,245,.14);--title:#F1F3F5;--accent:#F1F3F5;--title-color:#F1F3F5;--body-color:#CBD0D7;--c1:#F1F3F5;--c2:#CBD0D7;--c3:#9CA5B1;--c4:#6E7C90}
105
110
  .slide.slide-inverse .card,.slide.slide-inverse .cmp-col{border-top-color:rgba(241,243,245,.2)}
106
111
  .slide.slide-inverse .cmp-col--rec{border-top-color:var(--title)}
107
112
  .slide.slide-inverse .surface{background:rgba(241,243,245,.06)}
@@ -0,0 +1,5 @@
1
+ <!-- signature: the consulting binder — a solid top rule with a file-tab stub, the
2
+ four-piece chrome deck-design.md calls the strongest "consulting-grade" signal. -->
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>
5
+ <div style="position:absolute;right:56px;top:34px;bottom:34px;width:1px;background:var(--hair);pointer-events:none"></div>
@@ -1,11 +1,14 @@
1
1
  /* styles/mckinsey — 白底 + 深藏青 + 克制蓝 + 扁平卡 + 专业 ramp。复用同一套 layouts。
2
2
  证明契约不是只服务深色:同 11 layout 在浅色皮肤下同样成立。 */
3
3
  :root{
4
+ /* 排版节奏 — layouts 的字号与页边距都写成 calc(N * var(--…-scale,1)),
5
+ 所以皮肤可以在不碰任何 layout 的前提下定义自己的疏密。咨询/董事会:信息密度优先。 */
6
+ --space-scale:0.86; --type-scale:0.95;
4
7
  --accent:#2251ff; --c1:#2251ff; --c2:#3E8C8C; --c3:#B07A2E; --c4:#5B6B84; --chart-1:#3A5CE0;
5
8
  --title:#0F2340; --body:#354A63; --muted:#6B7A90; --foot:#9AA6B8;
6
9
  --hair:#E3E8F0; --card-radius:6px;
7
- --font-head:'Helvetica Neue','Arial','PingFang SC',sans-serif;
8
- --font-body:'Helvetica Neue','Arial','PingFang SC',sans-serif;
10
+ --font-head:'IBM Plex Sans','PingFang SC','Noto Sans SC','Hiragino Sans GB',sans-serif; --font-heading:var(--font-head);
11
+ --font-body:'IBM Plex Sans','PingFang SC','Noto Sans SC','Hiragino Sans GB',sans-serif;
9
12
  }
10
13
  .slide{background:#ffffff;color:var(--body);font-family:var(--font-body)}
11
14
  .slide-backdrop{position:absolute;inset:0;background:#ffffff}
@@ -0,0 +1,6 @@
1
+ <!-- signature: the press sheet — a hairline trim box with corner registration crosses. -->
2
+ <div style="position:absolute;inset:36px;border:1px solid var(--hair);pointer-events:none"></div>
3
+ <div style="position:absolute;left:31px;top:36px;width:11px;height:1px;background:var(--hair);pointer-events:none"></div><div style="position:absolute;left:36px;top:31px;width:1px;height:11px;background:var(--hair);pointer-events:none"></div>
4
+ <div style="position:absolute;right:31px;top:36px;width:11px;height:1px;background:var(--hair);pointer-events:none"></div><div style="position:absolute;right:36px;top:31px;width:1px;height:11px;background:var(--hair);pointer-events:none"></div>
5
+ <div style="position:absolute;left:31px;bottom:36px;width:11px;height:1px;background:var(--hair);pointer-events:none"></div><div style="position:absolute;left:36px;bottom:31px;width:1px;height:11px;background:var(--hair);pointer-events:none"></div>
6
+ <div style="position:absolute;right:31px;bottom:36px;width:11px;height:1px;background:var(--hair);pointer-events:none"></div><div style="position:absolute;right:36px;bottom:31px;width:1px;height:11px;background:var(--hair);pointer-events:none"></div>
@@ -1,11 +1,14 @@
1
1
  /* styles/mono — 极简单色:纯白底 + 黑灰明度层级(无 hue) + 细线 + 大留白 + 直角卡。
2
2
  皮肤层:定义 layouts/*.tpl 用到的全部语义 class。换 skin 只换这一个文件。 */
3
3
  :root{
4
+ /* 排版节奏 — layouts 的字号与页边距都写成 calc(N * var(--…-scale,1)),
5
+ 所以皮肤可以在不碰任何 layout 的前提下定义自己的疏密。极简报告:留白大、字号收敛。 */
6
+ --space-scale:1.18; --type-scale:0.97;
4
7
  --accent:#0A0A0A; --c1:#0A0A0A; --c2:#555555; --c3:#8A8A8A; --c4:#BFBFBF; --chart-1:#3F3F3F;
5
8
  --title:#0A0A0A; --body:#555555; --muted:#9B9B9B; --foot:#C4C4C4;
6
9
  --hair:#E8E8E8; --card-radius:2px;
7
- --font-head:'Helvetica Neue','Arial','PingFang SC','Hiragino Sans GB',sans-serif;
8
- --font-body:'Helvetica Neue','Arial','PingFang SC',sans-serif;
10
+ --font-head:'Archivo','PingFang SC','Noto Sans SC','Hiragino Sans GB',sans-serif;
11
+ --font-body:'Archivo','PingFang SC','Noto Sans SC','Hiragino Sans GB',sans-serif;
9
12
  /* theme-compat vars: SKELETON_CSS's section.slide h1/h2/h3 + section.slide out-specify
10
13
  the skin's .cover-title/.slide, so titles/body fall back to these — define them so
11
14
  --style alone fully colors the deck. */
@@ -1 +1,6 @@
1
1
  <div style="position:absolute;left:0;right:0;bottom:0;height:64px;background:linear-gradient(90deg,__ACCENT__,#E3D394 60%,__ACCENT__);opacity:.9"></div><div class="bd-arc" style="position:absolute;left:0;right:0;height:120px;top:var(--bd-arc-y,540px);pointer-events:none"><svg width="100%" height="100%" viewBox="0 0 1280 120" preserveAspectRatio="none"><defs><linearGradient id="arc" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".12"/><stop offset=".5" stop-color="__ACCENT__" stop-opacity=".34"/><stop offset="1" stop-color="__ACCENT__" stop-opacity=".12"/></linearGradient><filter id="arcb"><feGaussianBlur stdDeviation="1.4"/></filter></defs><path d="M-40 100 C 360 22,920 22,1320 100" fill="none" stroke="url(#arc)" stroke-width="1.6" filter="url(#arcb)"/><path d="M-40 100 C 360 22,920 22,1320 100" fill="none" stroke="url(#arc)" stroke-width=".7"/></svg></div>
2
+ <!-- signature: engraved corners — four L brackets, the award/prospectus convention. -->
3
+ <div style="position:absolute;left:38px;top:38px;width:46px;height:1px;background:var(--accent);opacity:.55;pointer-events:none"></div><div style="position:absolute;left:38px;top:38px;width:1px;height:46px;background:var(--accent);opacity:.55;pointer-events:none"></div>
4
+ <div style="position:absolute;right:38px;top:38px;width:46px;height:1px;background:var(--accent);opacity:.55;pointer-events:none"></div><div style="position:absolute;right:38px;top:38px;width:1px;height:46px;background:var(--accent);opacity:.55;pointer-events:none"></div>
5
+ <div style="position:absolute;left:38px;bottom:38px;width:46px;height:1px;background:var(--accent);opacity:.55;pointer-events:none"></div><div style="position:absolute;left:38px;bottom:38px;width:1px;height:46px;background:var(--accent);opacity:.55;pointer-events:none"></div>
6
+ <div style="position:absolute;right:38px;bottom:38px;width:46px;height:1px;background:var(--accent);opacity:.55;pointer-events:none"></div><div style="position:absolute;right:38px;bottom:38px;width:1px;height:46px;background:var(--accent);opacity:.55;pointer-events:none"></div>
@@ -1,11 +1,14 @@
1
1
  /* styles/olive-gold — 深橄榄金底 + 亮金 accent + 奶白粗体标题。复用同一套 layouts。
2
2
  取色自「Employment Letter」参考:深橄榄棕 #574A0F + 金 #C9B458 + 奶白 + 底部亮金带。 */
3
3
  :root{
4
+ /* 排版节奏 — layouts 的字号与页边距都写成 calc(N * var(--…-scale,1)),
5
+ 所以皮肤可以在不碰任何 layout 的前提下定义自己的疏密。证书/招商:仪式感留白。 */
6
+ --space-scale:1.1; --type-scale:1.0;
4
7
  --accent:#CDB85C; --c1:#CDB85C; --c2:#E3D394; --c3:#B49C42; --c4:#F0E4B0; --chart-1:#B49C42;
5
8
  --title:#F8F3E2; --body:#D6CB9E; --muted:#A6996A; --foot:#877A52;
6
9
  --hair:rgba(205,184,92,.18); --card-radius:14px;
7
- --font-head:'Avenir Next','Futura','Helvetica Neue','PingFang SC','Hiragino Sans GB',sans-serif;
8
- --font-body:'Helvetica Neue','PingFang SC',sans-serif;
10
+ --font-head:'Marcellus','Optima','STKaiti','Kaiti SC','Songti SC','Noto Serif SC',serif;
11
+ --font-body:'Karla','PingFang SC','Noto Sans SC','Hiragino Sans GB',sans-serif;
9
12
  /* theme-compat: 让 --style 单独就能给整册上色(标题不落回深色) */
10
13
  --title-color:#F8F3E2; --body-color:#D6CB9E; --slide-bg:#574A0F; --font-heading:var(--font-head);
11
14
  }
@@ -17,7 +20,11 @@
17
20
  .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
18
21
  .rule{background:var(--hair)} .rule-foot{background:rgba(205,184,92,.12)}
19
22
  .eyebrow{color:var(--accent)} .accent-bar{background:var(--accent);border-radius:1px}
20
- .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:800}
23
+ /* This skin's identity IS this face — a didone/garalde/roman falling back to the
24
+ system serif reads as a different deck entirely. Bake the display classes so the
25
+ audience sees it; body copy stays native (editable/searchable). See
26
+ deck-design.md § Fonts for why bundling alone doesn't reach the native text layer. */
27
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:800;--talos-bake:1}
21
28
  .cover-sub,.ending-sub,.section-desc{color:var(--body)}
22
29
  .card{border-radius:var(--card-radius);background:linear-gradient(180deg,rgba(205,184,92,.08),rgba(205,184,92,.02));border:1px solid rgba(205,184,92,.22);box-shadow:0 22px 54px rgba(30,25,4,.45);overflow:hidden}
23
30
  .card-idx{color:var(--muted)} .card-body{color:var(--body)}
@@ -31,16 +38,16 @@
31
38
  .cmp-title{color:var(--title)} .cmp-k{color:var(--muted)} .cmp-v{color:var(--title)}
32
39
  .cmp-col--rec .cmp-v{color:var(--accent)}
33
40
  .cmp-badge{background:var(--accent);color:#3a3105}
34
- .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);font-weight:800} .kpi-label{color:var(--muted)}
41
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);font-weight:800;--talos-bake:1} .kpi-label{color:var(--muted)}
35
42
  .stat-unit{color:var(--accent)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
36
43
  .step-line{background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.5}
37
- .step-circle{background:linear-gradient(180deg,rgba(205,184,92,.08),rgba(205,184,92,.02));border:1px solid rgba(205,184,92,.24);box-shadow:0 20px 44px rgba(30,25,4,.5);font-family:var(--font-head)}
44
+ .step-circle{background:linear-gradient(180deg,rgba(205,184,92,.08),rgba(205,184,92,.02));border:1px solid rgba(205,184,92,.24);box-shadow:0 20px 44px rgba(30,25,4,.5);font-family:var(--font-head);--talos-bake:1}
38
45
  .steps .step:nth-child(4n+1) .step-circle{color:var(--c1)} .steps .step:nth-child(4n+2) .step-circle{color:var(--c2)} .steps .step:nth-child(4n+3) .step-circle{color:var(--c3)} .steps .step:nth-child(4n+4) .step-circle{color:var(--c4)}
39
46
  .step-tag,.step-body{color:var(--muted)} .step-title{color:var(--title)}
40
47
  .toc-item{border-top:1px solid var(--hair)} .toc-grid .toc-item:nth-child(1){border-top-color:var(--c1)} .toc-grid .toc-item:nth-child(2){border-top-color:var(--c2)}
41
- .toc-grid .toc-item:nth-child(1) .toc-num{color:var(--c1)} .toc-grid .toc-item:nth-child(2) .toc-num{color:var(--c2)} .toc-num{color:var(--foot);font-family:var(--font-head)}
48
+ .toc-grid .toc-item:nth-child(1) .toc-num{color:var(--c1)} .toc-grid .toc-item:nth-child(2) .toc-num{color:var(--c2)} .toc-num{color:var(--foot);font-family:var(--font-head);--talos-bake:1}
42
49
  .toc-title{color:var(--title)} .toc-desc{color:var(--muted)}
43
- .section-ghost{color:transparent;-webkit-text-stroke:1px rgba(205,184,92,.18);font-family:var(--font-head)}
50
+ .section-ghost{color:transparent;-webkit-text-stroke:1px rgba(205,184,92,.18);font-family:var(--font-head);--talos-bake:1}
44
51
  .surface{background:rgba(205,184,92,.05);border:1px solid rgba(205,184,92,.22);border-radius:14px} .surface-label{color:var(--muted)}
45
52
  .ending-contact{color:var(--muted)}
46
53
  /* full-bleed image overlay — 始终浅色 */
@@ -48,7 +55,7 @@
48
55
  .scrim{background:linear-gradient(180deg,transparent 26%,rgba(0,0,0,.6))}
49
56
  /* timeline / concept-hub */
50
57
  .tl-dot{background:var(--accent);border-radius:50%}
51
- .tl-date{color:var(--accent);font-family:var(--font-head)}
58
+ .tl-date{color:var(--accent);font-family:var(--font-head);--talos-bake:1}
52
59
  .tl-title{color:var(--title)} .tl-desc{color:var(--muted)}
53
60
  .hub-center{border-radius:50%;border:2px solid var(--accent)} .hub-title{color:var(--accent)} .hub-link{stroke:var(--accent);opacity:.4}
54
61
  /* data-table */
@@ -4,6 +4,9 @@
4
4
  (rule 横线除外)。字重阶梯是灵魂:大字越大越细(200),小字越小越粗(500-600),
5
5
  唯独 KPI 数字反过来走粗体(800)——guizang 原文精确到这一条,不是通感描述。 */
6
6
  :root{
7
+ /* 排版节奏 — layouts 的字号与页边距都写成 calc(N * var(--…-scale,1)),
8
+ 所以皮肤可以在不碰任何 layout 的前提下定义自己的疏密。瑞士网格:紧贴栅格,反差靠 layout 自身。 */
9
+ --space-scale:0.9; --type-scale:1.0;
7
10
  --paper:#FAFAF8; --ink:#0A0A0A; --grey-1:#F0F0EE; --grey-2:#D4D4D2; --grey-3:#737373;
8
11
  --accent:#002FA7; --accent-on:#FFFFFF;
9
12
  --c1:#002FA7; --c2:#5B7BFF; --c3:#0A0A0A; --c4:#737373; --chart-1:#4A6FD1;
@@ -101,7 +104,9 @@
101
104
 
102
105
  /* ===== .slide-inverse — 纯墨底(guizang 的 .slide.dark),accent 在暗底自动提亮
103
106
  (accent-bright #5B7BFF),避免深蓝在纯黑上糊掉;标题反色为纸白。 */
104
- .slide.slide-inverse{--slide-bg:#0A0A0A;--body:#C7C7C5;--muted:#8A8A88;--foot:#5c5c5a;--hair:rgba(250,250,248,.16);--title:#FAFAF8;--grey-1:rgba(250,250,248,.06)}
107
+ /* Klein blue at #002FA7 is too dark to read on black, and --c3 (#0A0A0A) IS the black.
108
+ Keep the hue, raise the lightness; the near-black step becomes the near-white one. */
109
+ .slide.slide-inverse{--slide-bg:#0A0A0A;--body:#C7C7C5;--muted:#8A8A88;--foot:#5c5c5a;--hair:rgba(250,250,248,.16);--title:#FAFAF8;--grey-1:rgba(250,250,248,.06);--c1:#5B7BFF;--c2:#93A9FF;--c3:#FAFAF8;--c4:#8A8A88}
105
110
  .slide.slide-inverse .eyebrow,.slide.slide-inverse .kpi-num,.slide.slide-inverse .stat-num,.slide.slide-inverse .tl-date{color:#5B7BFF}
106
111
  .slide.slide-inverse .card,.slide.slide-inverse .cmp-col,.slide.slide-inverse .step-circle,.slide.slide-inverse .surface{background:rgba(250,250,248,.06)}
107
112
  .slide.slide-inverse .panel{background:var(--paper)} .slide.slide-inverse .panel-item-title{color:var(--ink)} .slide.slide-inverse .panel-item-desc{color:rgba(10,10,10,.7)}