@taloswork/ose-shared 0.0.2 → 0.0.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 (124) hide show
  1. package/mcp/gen/mcp.json +26 -0
  2. package/mcp/gen-google/mcp.json +30 -0
  3. package/mcp/gen-seedance/mcp.json +30 -0
  4. package/mcp/gen-seedream/mcp.json +30 -0
  5. package/mcp/gen-veo/mcp.json +30 -0
  6. package/package.json +3 -3
  7. package/skills/document/SKILL.md +11 -7
  8. package/skills/document/assets/fonts/Anton-Regular.woff2 +0 -0
  9. package/skills/document/bin/doc-convert.cjs +983 -936
  10. package/skills/document/bin/doc-gen.cjs +52 -4
  11. package/skills/document/bin/html2pptx.cjs +34 -10
  12. package/skills/document/content-pipeline.md +4 -3
  13. package/skills/document/layouts/README.md +9 -0
  14. package/skills/document/layouts/bento.tpl +1 -1
  15. package/skills/document/layouts/big-stat.tpl +1 -1
  16. package/skills/document/layouts/blocks-2x2.tpl +3 -3
  17. package/skills/document/layouts/brand-values.tpl +1 -1
  18. package/skills/document/layouts/cards-3.tpl +1 -1
  19. package/skills/document/layouts/cards-grid.tpl +1 -1
  20. package/skills/document/layouts/chart-full.tpl +1 -1
  21. package/skills/document/layouts/chart-kpi.tpl +1 -1
  22. package/skills/document/layouts/color-palette.tpl +6 -6
  23. package/skills/document/layouts/comparison.tpl +2 -2
  24. package/skills/document/layouts/concept-hub.tpl +1 -1
  25. package/skills/document/layouts/cover-centered.tpl +1 -1
  26. package/skills/document/layouts/cover-image.tpl +1 -1
  27. package/skills/document/layouts/cover-minimal.tpl +1 -1
  28. package/skills/document/layouts/cover-statement.tpl +1 -1
  29. package/skills/document/layouts/cover.tpl +1 -1
  30. package/skills/document/layouts/data-table.tpl +1 -1
  31. package/skills/document/layouts/dos-donts.tpl +1 -1
  32. package/skills/document/layouts/editorial-panel.tpl +5 -5
  33. package/skills/document/layouts/ending-contact.tpl +1 -1
  34. package/skills/document/layouts/ending.tpl +1 -1
  35. package/skills/document/layouts/funnel.tpl +1 -1
  36. package/skills/document/layouts/gantt.tpl +2 -2
  37. package/skills/document/layouts/hero.tpl +1 -1
  38. package/skills/document/layouts/icon-row.tpl +1 -1
  39. package/skills/document/layouts/image-grid.tpl +1 -1
  40. package/skills/document/layouts/image-left.tpl +1 -1
  41. package/skills/document/layouts/list.tpl +1 -1
  42. package/skills/document/layouts/logo-guidelines.tpl +3 -3
  43. package/skills/document/layouts/map-distribution.tpl +1 -1
  44. package/skills/document/layouts/map-quad.tpl +1 -1
  45. package/skills/document/layouts/matrix-2x2.tpl +1 -1
  46. package/skills/document/layouts/numbered-brief.tpl +3 -3
  47. package/skills/document/layouts/org-tree.tpl +1 -1
  48. package/skills/document/layouts/problem-solution-banner.tpl +12 -0
  49. package/skills/document/layouts/problem-solution.tpl +2 -2
  50. package/skills/document/layouts/pyramid.tpl +1 -1
  51. package/skills/document/layouts/quote.tpl +1 -1
  52. package/skills/document/layouts/radar.tpl +1 -1
  53. package/skills/document/layouts/ring-progress.tpl +1 -1
  54. package/skills/document/layouts/section-fullbleed.tpl +8 -0
  55. package/skills/document/layouts/section-image.tpl +1 -1
  56. package/skills/document/layouts/section-stat.tpl +1 -1
  57. package/skills/document/layouts/section.tpl +1 -1
  58. package/skills/document/layouts/slots.json +763 -1
  59. package/skills/document/layouts/split-two-col.tpl +1 -1
  60. package/skills/document/layouts/stats-chart.tpl +2 -2
  61. package/skills/document/layouts/steps-serpentine.tpl +19 -0
  62. package/skills/document/layouts/steps-vertical.tpl +1 -1
  63. package/skills/document/layouts/steps.tpl +1 -1
  64. package/skills/document/layouts/team-row.tpl +6 -6
  65. package/skills/document/layouts/three-kpi.tpl +1 -1
  66. package/skills/document/layouts/timeline.tpl +1 -1
  67. package/skills/document/layouts/title-meta.tpl +1 -1
  68. package/skills/document/layouts/title.tpl +1 -1
  69. package/skills/document/layouts/toc-agenda.tpl +1 -1
  70. package/skills/document/layouts/toc-panel.tpl +3 -3
  71. package/skills/document/layouts/toc.tpl +1 -1
  72. package/skills/document/layouts/transition.tpl +1 -1
  73. package/skills/document/layouts/two-kpi.tpl +1 -1
  74. package/skills/document/layouts/type-specimen.tpl +3 -3
  75. package/skills/document/layouts/versus.tpl +1 -1
  76. package/skills/document/styles/README.md +42 -6
  77. package/skills/document/styles/_backdrops/arch.html +5 -0
  78. package/skills/document/styles/_backdrops/aurora.html +6 -0
  79. package/skills/document/styles/_backdrops/beam.html +5 -0
  80. package/skills/document/styles/_backdrops/bloom.html +5 -0
  81. package/skills/document/styles/_backdrops/duotone.html +6 -0
  82. package/skills/document/styles/_backdrops/frosted.html +4 -0
  83. package/skills/document/styles/_backdrops/rimlight.html +7 -0
  84. package/skills/document/styles/_backdrops/shared.html +5 -0
  85. package/skills/document/styles/_samples/anthropic.webp +0 -0
  86. package/skills/document/styles/_samples/apple.webp +0 -0
  87. package/skills/document/styles/_samples/black-gold.webp +0 -0
  88. package/skills/document/styles/_samples/branding.webp +0 -0
  89. package/skills/document/styles/_samples/cinereel.webp +0 -0
  90. package/skills/document/styles/_samples/cool.webp +0 -0
  91. package/skills/document/styles/_samples/hand-drawn.webp +0 -0
  92. package/skills/document/styles/_samples/ivory-gold.webp +0 -0
  93. package/skills/document/styles/_samples/magazine-ink.webp +0 -0
  94. package/skills/document/styles/_samples/mckinsey.webp +0 -0
  95. package/skills/document/styles/_samples/mono.webp +0 -0
  96. package/skills/document/styles/_samples/olive-gold.webp +0 -0
  97. package/skills/document/styles/_samples/swiss-grid.webp +0 -0
  98. package/skills/document/styles/anthropic/skin.css +1 -1
  99. package/skills/document/styles/apple/skin.css +1 -1
  100. package/skills/document/styles/black-gold/skin.css +1 -1
  101. package/skills/document/styles/cinereel/backdrop.html +2 -0
  102. package/skills/document/styles/cinereel/skin.css +133 -0
  103. package/skills/document/styles/cool/skin.css +1 -1
  104. package/skills/document/styles/hand-drawn/skin.css +1 -1
  105. package/skills/document/styles/ivory-gold/backdrop.html +15 -0
  106. package/skills/document/styles/ivory-gold/skin.css +137 -0
  107. package/skills/document/styles/magazine-ink/backdrop.html +12 -0
  108. package/skills/document/styles/magazine-ink/skin.css +121 -0
  109. package/skills/document/styles/mckinsey/skin.css +1 -1
  110. package/skills/document/styles/mono/skin.css +1 -1
  111. package/skills/document/styles/swiss-grid/backdrop.html +2 -0
  112. package/skills/document/styles/swiss-grid/skin.css +117 -0
  113. package/skills/document/themes/README.md +5 -1
  114. package/skills/document/themes/cinereel.json +24 -0
  115. package/skills/document/themes/ivory-gold.json +24 -0
  116. package/skills/document/themes/magazine-ink.json +24 -0
  117. package/skills/document/themes/swiss-grid.json +24 -0
  118. package/mcp/Linear/mcp.json +0 -17
  119. package/skills/document/styles/anthropic/backdrop-arch.html +0 -3
  120. package/skills/document/styles/anthropic/backdrop-shared.html +0 -3
  121. package/skills/document/styles/apple/backdrop-shared.html +0 -3
  122. package/skills/document/styles/cool/backdrop-spotlight.html +0 -3
  123. package/skills/document/styles/mckinsey/backdrop-shared.html +0 -3
  124. /package/skills/document/styles/{apple/backdrop-spotlight.html → _backdrops/spotlight.html} +0 -0
@@ -0,0 +1,133 @@
1
+ /* styles/cinereel — 胶片感黑白极简:黑底/照片底 + 白色 Anton 粗体大写标题(标题=accent,
2
+ 无色相)+ 常驻胶片取景框(顶/底黑色遮幅条,每页恒定)+ .slide-inverse 浅灰面板反色(目录/流程页)。
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
+ :root{
6
+ --accent:#F5F4F0; --c1:#F5F4F0; --c2:#C7C5BE; --c3:#8A8880; --c4:#5A584F; --chart-1:#8A8880;
7
+ --title:#F5F4F0; --body:#C7C5BE; --muted:#8A8880; --foot:#656358;
8
+ --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;
11
+ /* theme-compat vars: SKELETON_CSS's section.slide h1/h2/h3 + section.slide out-specify
12
+ the skin's .cover-title/.slide, so titles/body fall back to these — define them so
13
+ --style alone fully colors the deck. */
14
+ --title-color:#F5F4F0; --body-color:#C7C5BE; --slide-bg:#0D0D0C; --font-heading:var(--font-head);
15
+ }
16
+ .slide{background:var(--slide-bg);color:var(--body);font-family:var(--font-body)}
17
+ .slide-backdrop{position:absolute;inset:0;background:transparent}
18
+ /* 常驻胶片取景框:顶/底纯黑遮幅条,恒定黑色,不随 .slide-inverse 翻转(原模版浅色面板页
19
+ 一样保留黑边)。真实 DOM 元素(在 backdrop.html 里),不用 ::before/::after。纯装饰,
20
+ 不带文字(场记板文字曾经放在这里,已按需去掉,只留干净的遮幅条)。 */
21
+ .reel-bar{position:absolute;left:0;right:0;height:40px;background:#000;pointer-events:none;z-index:0}
22
+ .reel-bar--top{top:0} .reel-bar--bottom{bottom:0}
23
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted);position:relative;z-index:1}
24
+ .rule{background:var(--hair)} .rule-foot{background:var(--hair)}
25
+ .eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700;position:relative;z-index:1} .accent-bar{background:var(--accent);border-radius:0}
26
+ /* --talos-bake:1 → titles bake into the backdrop instead of native pptx text.
27
+ Tried leaving these native first (editability > fidelity); a full slide-by-slide
28
+ audit of a real deck showed the wrap failure hits NEARLY EVERY multi-word Anton
29
+ title, not just the two instances first caught — deck-qa's shape-overlap check
30
+ missed most of the real collisions. Anton is a custom condensed display face;
31
+ the consuming app (LibreOffice, and per real-world reports PowerPoint/Keynote
32
+ too) can silently fail to resolve even a correctly-embedded custom font for the
33
+ native text layer, substituting a much wider generic bold sans that force-wraps
34
+ mid-word into whatever sits below. Given how often that fires, guaranteed-
35
+ correct rendering wins over title editability for this skin. */
36
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;letter-spacing:.005em;text-transform:uppercase;position:relative;z-index:1;--talos-bake:1}
37
+ .cover-sub,.ending-sub,.section-desc{color:var(--body);position:relative;z-index:1}
38
+ /* flat hard-edge panel, no radius, no glow — this template reads as graphic/photographic, not glassy */
39
+ .card{border-radius:var(--card-radius);background:rgba(245,244,240,.04);border:1px solid var(--hair);overflow:hidden;position:relative;z-index:1}
40
+ .card-idx{color:var(--foot)} .card-body{color:var(--body)}
41
+ .card-grid .card:nth-child(4n+1) .card-rail,.card-grid .card:nth-child(4n+1) .card-dot{background:var(--c1)} .card-grid .card:nth-child(4n+1) .card-title{color:var(--c1)}
42
+ .card-grid .card:nth-child(4n+2) .card-rail,.card-grid .card:nth-child(4n+2) .card-dot{background:var(--c2)} .card-grid .card:nth-child(4n+2) .card-title{color:var(--c2)}
43
+ .card-grid .card:nth-child(4n+3) .card-rail,.card-grid .card:nth-child(4n+3) .card-dot{background:var(--c3)} .card-grid .card:nth-child(4n+3) .card-title{color:var(--c3)}
44
+ .card-grid .card:nth-child(4n+4) .card-rail,.card-grid .card:nth-child(4n+4) .card-dot{background:var(--c4)} .card-grid .card:nth-child(4n+4) .card-title{color:var(--title)}
45
+ .card .card-rail{background:var(--accent)} .card .card-title{color:var(--accent)}
46
+ /* comparison */
47
+ .cmp-col{background:rgba(245,244,240,.04);border:1px solid var(--hair);position:relative;z-index:1}
48
+ .cmp-col--rec{background:rgba(245,244,240,.08);border:1px solid var(--accent)}
49
+ .cmp-title{color:var(--title)} .cmp-k{color:var(--muted)} .cmp-v{color:var(--title)}
50
+ .cmp-col--rec .cmp-v{color:var(--accent)}
51
+ .cmp-badge{background:var(--accent);color:#0D0D0C}
52
+ /* kpi / big-stat */
53
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head)} .kpi-label{color:var(--muted)}
54
+ .stat-unit{color:var(--accent)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
55
+ /* steps */
56
+ .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}
58
+ .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
+ .step-tag,.step-body{color:var(--muted)} .step-title{color:var(--title)}
60
+ /* toc */
61
+ .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)}
63
+ .toc-title{color:var(--title)} .toc-desc{color:var(--muted)}
64
+ /* section ghost + surface */
65
+ .section-ghost{color:transparent;-webkit-text-stroke:1px rgba(245,244,240,.16);font-family:var(--font-head)}
66
+ .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
+ .ending-contact{color:var(--muted)}
68
+
69
+ /* full-bleed image overlay — 始终浅色(压在图/scrim 上,与皮肤明暗无关)*/
70
+ .overlay-title{color:#fff;font-family:var(--font-head);text-transform:uppercase;--talos-bake:1}
71
+ .overlay-sub{color:rgba(255,255,255,.82)}
72
+ /* batch-5 layouts: timeline / concept-hub / cover-image */
73
+ .tl-dot{background:var(--accent);border-radius:50%}
74
+ .tl-date{color:var(--accent);font-family:var(--font-head)}
75
+ .tl-title{color:var(--title)} .tl-desc{color:var(--muted)}
76
+ .hub-center{border-radius:50%;border:2px solid var(--accent)}
77
+ .hub-title{color:var(--accent)}
78
+ .hub-link{stroke:var(--accent);opacity:.4}
79
+ .scrim{background:linear-gradient(180deg,transparent 26%,rgba(0,0,0,.68))}
80
+ /* batch-6: data-table */
81
+ .dt-head{background:rgba(245,244,240,.04);border-bottom:2px solid var(--accent)}
82
+ .dt-head .dt-key,.dt-head .dt-cell{color:var(--title)}
83
+ .dt-row{border-bottom:1px solid var(--hair)}
84
+ .dt-key{color:var(--title)} .dt-cell{color:var(--body)} .dt-em{color:var(--accent);font-weight:700}
85
+ /* batch-7: gantt + map */
86
+ .gantt-track{background:var(--hair)}
87
+ .gantt-bar{background:var(--accent);opacity:.9}
88
+ .gantt-grid{color:var(--muted)}
89
+ .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(245,244,240,.12)}
90
+ /* batch-8: radar + ring-progress */
91
+ .radar-grid{stroke:var(--hair)}
92
+ .radar-shape{fill:var(--accent);fill-opacity:.14;stroke:var(--accent);stroke-width:2}
93
+ .radar-axis{fill:var(--muted)}
94
+ .ring-track{stroke:var(--hair)}
95
+ .ring-fill{stroke:var(--accent)}
96
+ .ring-num{color:var(--title)}
97
+
98
+ /* toc-panel: 深色 skin → 浅色对比面板(既有反色机制,复用不新增) */
99
+ .panel{background:#F0EFEA;box-shadow:0 24px 60px rgba(0,0,0,.4);position:relative;z-index:1}
100
+ .panel-item-title{color:#0D0D0C;font-family:var(--font-head)}
101
+ .panel-item-desc{color:#55534A}
102
+ .toc-brand{color:var(--title)}
103
+
104
+ /* numbered-brief layout: 实心编号盘 + 左条引用(全部走变量,每皮肤自动上色) */
105
+ .num-disc{background:var(--accent);color:#0D0D0C} .num-item-title{color:var(--title)}
106
+ .brief-quote{border-left:3px solid var(--accent)} .brief-quote-txt{color:var(--muted)} .brief-quote-attr{color:var(--muted)}
107
+
108
+ /* banner-columns layout: 通栏标题带 + 3 栏项目符号(变量驱动,每皮肤自动上色) */
109
+ .banner{background:var(--accent)} .banner-title{color:#0D0D0C}
110
+ .col-title{color:var(--title)} .col-body{color:var(--body)} .col-bullet{background:var(--accent)}
111
+
112
+ /* color-palette layout: 色板填色走 ramp 变量(每皮肤用自身配色) */
113
+ .pal-item:nth-child(5n+1) .swatch{background:var(--c1)} .pal-item:nth-child(5n+2) .swatch{background:var(--c2)}
114
+ .pal-item:nth-child(5n+3) .swatch{background:var(--c3)} .pal-item:nth-child(5n+4) .swatch{background:var(--c4)}
115
+ .pal-item:nth-child(5n+5) .swatch{background:var(--title)}
116
+ .pal-name{color:var(--title)} .pal-hex{color:var(--muted)}
117
+
118
+ /* logo-guidelines layout */
119
+ .logo-mark{color:var(--title)} .clearspace{border:1.5px dashed var(--accent)}
120
+ .logo-tile-dark{background:var(--title)} .logo-mark-rev{color:var(--slide-bg)} .logo-mark-mono{color:var(--muted)}
121
+ /* dos-donts layout */
122
+ .do-head{color:var(--accent)} .dont-head{color:var(--muted)}
123
+ .do-mark{color:var(--accent)} .dont-mark{color:var(--muted)} .do-item,.dont-item{color:var(--body)}
124
+
125
+ /* team-row layout: 姓名 accent / 职位 body */
126
+ .team-name{color:var(--accent)} .team-role{color:var(--body)}
127
+
128
+ /* ===== .slide-inverse — 浅灰面板反色(目录/流程图这类页面,原模版里黑色取景框不变,
129
+ 只有中间内容区翻成浅灰;标题/accent 在这套皮肤里没有独立色相,必须跟着翻黑,
130
+ 与 ivory-gold 的"标题恒定金色"不同 —— 每个皮肤自行决定哪些 token 要翻)。 */
131
+ .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}
132
+ .slide.slide-inverse .card,.slide.slide-inverse .cmp-col,.slide.slide-inverse .step-circle,.slide.slide-inverse .surface{background:rgba(13,13,12,.04)}
133
+ .slide.slide-inverse .cmp-badge,.slide.slide-inverse .banner-title{color:#F0EFEA}
@@ -20,7 +20,7 @@
20
20
  .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
21
21
  .rule{background:var(--hair)} .rule-foot{background:rgba(255,255,255,.06)}
22
22
  .eyebrow{color:var(--accent);font-family:var(--font-body)} .accent-bar{background:var(--accent);border-radius:2px}
23
- .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head)}
23
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700}
24
24
  .cover-sub,.ending-sub,.section-desc{color:var(--body)}
25
25
  /* glass card + 4-color rail ramp */
26
26
  .card{border-radius:var(--card-radius);background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.012));border:1px solid var(--hair);box-shadow:0 24px 60px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.10);overflow:hidden}
@@ -16,7 +16,7 @@
16
16
  .deck-header,.deck-footer,.deck-pageno{color:var(--muted);font-family:'Helvetica Neue','PingFang SC',sans-serif}
17
17
  .rule{background:var(--hair)} .rule-foot{background:rgba(43,43,43,.10)}
18
18
  .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)}
19
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700}
20
20
  .cover-sub,.ending-sub,.section-desc{color:var(--body)}
21
21
  /* off-white card + dark sketchy border + marker ramp */
22
22
  .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}
@@ -0,0 +1,15 @@
1
+ <div class="bd-slab" style="position:absolute;left:420px;top:54px;width:764px;height:522px;border-radius:2px;overflow:hidden;pointer-events:none">
2
+ <svg width="100%" height="100%" viewBox="0 0 764 522" preserveAspectRatio="xMidYMid slice">
3
+ <defs>
4
+ <radialGradient id="slab1" cx="25%" cy="15%" r="75%"><stop offset="0" stop-color="#2b2b2b"/><stop offset="1" stop-color="#060606"/></radialGradient>
5
+ <radialGradient id="slab2" cx="82%" cy="88%" r="65%"><stop offset="0" stop-color="#1f1f1f" stop-opacity=".9"/><stop offset="1" stop-color="#060606" stop-opacity="0"/></radialGradient>
6
+ <filter id="slabBlur"><feGaussianBlur stdDeviation="18"/></filter>
7
+ </defs>
8
+ <rect width="764" height="522" fill="#0a0a0a"/>
9
+ <rect width="764" height="522" fill="url(#slab1)"/>
10
+ <rect width="764" height="522" fill="url(#slab2)"/>
11
+ <path d="M-60 120 C 160 40, 340 260, 560 140 S 900 60, 980 220" stroke="#3a3a3a" stroke-width="90" fill="none" opacity=".35" filter="url(#slabBlur)"/>
12
+ <path d="M-40 380 C 200 300, 420 500, 700 360 S 1000 300, 1040 460" stroke="#2a2a2a" stroke-width="70" fill="none" opacity=".4" filter="url(#slabBlur)"/>
13
+ </svg>
14
+ </div>
15
+ <svg style="position:absolute;inset:0;width:100%;height:100%;opacity:.035;mix-blend-mode:overlay;pointer-events:none"><filter id="bgn"><feTurbulence type="fractalNoise" baseFrequency=".8" numOctaves="2" stitchTiles="stitch"/></filter><rect width="100%" height="100%" filter="url(#bgn)"/></svg>
@@ -0,0 +1,137 @@
1
+ /* styles/ivory-gold — 奶油底 + 青铜金标题(标题=accent,非独立浅色) + Anton 粗体无衬线大写 +
2
+ 黑色反色区块(.slide-inverse,同一 layout 可多次复用,每次实例自行决定极性)。
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
+ :root{
6
+ --accent:#A97C3F; --c1:#A97C3F; --c2:#C9A467; --c3:#8A6530; --c4:#DCC08C; --chart-1:#B58A4A;
7
+ --title:#A97C3F; --body:#2B2823; --muted:#6B6558; --foot:#8A8374;
8
+ --hair:rgba(169,124,63,.22); --card-radius:6px;
9
+ --font-head:'Anton','Arial Narrow Bold','Heiti SC','PingFang SC',sans-serif;
10
+ --font-body:'Inter','Helvetica Neue',-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;
11
+ /* theme-compat vars: SKELETON_CSS's section.slide h1/h2/h3 + section.slide out-specify
12
+ the skin's .cover-title/.slide, so titles/body fall back to these — define them so
13
+ --style alone fully colors the deck. */
14
+ --title-color:#A97C3F; --body-color:#2B2823; --slide-bg:#EEE8DA; --font-heading:var(--font-head);
15
+ }
16
+ .slide{background:var(--slide-bg);color:var(--body);font-family:var(--font-body)}
17
+ .slide-backdrop{position:absolute;inset:0;background:var(--slide-bg)}
18
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
19
+ .rule{background:var(--hair)} .rule-foot{background:var(--hair)}
20
+ .eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700} .accent-bar{background:var(--accent);border-radius:1px}
21
+ /* --talos-bake:1 → titles bake into the backdrop instead of native pptx text.
22
+ Tried leaving these native first (editability > fidelity); a full slide-by-slide
23
+ audit of a real deck showed the wrap failure hits NEARLY EVERY multi-word Anton
24
+ title, not just the two instances first caught — "INTRODUCTION"/"LOCATION" wrap
25
+ mid-word into the text below, "PRODUCT"/"SERVICES"/"TIMELINE" wrap wrong even
26
+ without colliding, and deck-qa's shape-overlap check missed most of it (it
27
+ caught 2 of at least 6 real collisions). Anton is a custom condensed display
28
+ face; the consuming app (LibreOffice, and per real-world reports PowerPoint/
29
+ Keynote too) can silently fail to resolve even a correctly-embedded custom font
30
+ for the native text layer, substituting a much wider generic bold sans that
31
+ force-wraps mid-word into whatever sits below. Given how often that fires,
32
+ guaranteed-correct rendering wins over title editability for this skin. */
33
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;letter-spacing:.01em;text-transform:uppercase;--talos-bake:1}
34
+ .cover-sub,.ending-sub,.section-desc{color:var(--body)}
35
+ /* flat cream card, thin gold hairline — no glow (this template reads as a graphic poster, not a glass deck) */
36
+ .card{border-radius:var(--card-radius);background:rgba(169,124,63,.05);border:1px solid var(--hair);box-shadow:0 6px 20px rgba(0,0,0,.05);overflow:hidden}
37
+ .card-idx{color:var(--foot)} .card-body{color:var(--body)}
38
+ .card-grid .card:nth-child(4n+1) .card-rail,.card-grid .card:nth-child(4n+1) .card-dot{background:var(--c1)} .card-grid .card:nth-child(4n+1) .card-title{color:var(--c1)}
39
+ .card-grid .card:nth-child(4n+2) .card-rail,.card-grid .card:nth-child(4n+2) .card-dot{background:var(--c2)} .card-grid .card:nth-child(4n+2) .card-title{color:var(--c2)}
40
+ .card-grid .card:nth-child(4n+3) .card-rail,.card-grid .card:nth-child(4n+3) .card-dot{background:var(--c3)} .card-grid .card:nth-child(4n+3) .card-title{color:var(--c3)}
41
+ .card-grid .card:nth-child(4n+4) .card-rail,.card-grid .card:nth-child(4n+4) .card-dot{background:var(--c4)} .card-grid .card:nth-child(4n+4) .card-title{color:var(--title)}
42
+ .card .card-rail{background:var(--accent)} .card .card-title{color:var(--accent)}
43
+ /* comparison */
44
+ .cmp-col{background:rgba(169,124,63,.05);border:1px solid var(--hair);box-shadow:0 6px 20px rgba(0,0,0,.05)}
45
+ .cmp-col--rec{background:rgba(169,124,63,.10);border:1px solid var(--accent);box-shadow:0 8px 24px rgba(0,0,0,.08)}
46
+ .cmp-title{color:var(--title)} .cmp-k{color:var(--muted)} .cmp-v{color:var(--title)}
47
+ .cmp-col--rec .cmp-v{color:var(--accent)}
48
+ .cmp-badge{background:var(--accent);color:#FFFFFF}
49
+ /* kpi / big-stat */
50
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head)} .kpi-label{color:var(--muted)}
51
+ .stat-unit{color:var(--accent)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
52
+ /* steps */
53
+ .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)}
55
+ .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
+ .step-tag,.step-body{color:var(--muted)} .step-title{color:var(--title)}
57
+ /* toc */
58
+ .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)}
60
+ .toc-title{color:var(--title)} .toc-desc{color:var(--muted)}
61
+ /* section ghost + surface */
62
+ .section-ghost{color:transparent;-webkit-text-stroke:1px rgba(169,124,63,.22);font-family:var(--font-head)}
63
+ .surface{background:rgba(169,124,63,.05);border:1px solid var(--hair);border-radius:6px} .surface-label{color:var(--muted)}
64
+ .ending-contact{color:var(--muted)}
65
+
66
+ /* full-bleed image overlay — 始终浅色(压在图/scrim 上,与皮肤明暗无关)*/
67
+ .overlay-title{color:#fff}
68
+ .overlay-sub{color:rgba(255,255,255,.82)}
69
+ /* batch-5 layouts: timeline / concept-hub / cover-image */
70
+ .tl-dot{background:var(--accent);border-radius:50%}
71
+ .tl-date{color:var(--accent);font-family:var(--font-head)}
72
+ .tl-title{color:var(--title)} .tl-desc{color:var(--muted)}
73
+ .hub-center{border-radius:50%;border:2px solid var(--accent)}
74
+ .hub-title{color:var(--accent)}
75
+ .hub-link{stroke:var(--accent);opacity:.4}
76
+ .scrim{background:linear-gradient(180deg,transparent 26%,rgba(0,0,0,.62))}
77
+ .overlay-title{color:#ffffff;font-family:var(--font-head);text-transform:uppercase;--talos-bake:1} .overlay-sub{color:rgba(255,255,255,.86)}
78
+ /* batch-6: data-table */
79
+ .dt-head{background:rgba(169,124,63,.05);border-bottom:2px solid var(--accent)}
80
+ .dt-head .dt-key,.dt-head .dt-cell{color:var(--title)}
81
+ .dt-row{border-bottom:1px solid var(--hair)}
82
+ .dt-key{color:var(--title)} .dt-cell{color:var(--body)} .dt-em{color:var(--accent);font-weight:700}
83
+ /* batch-7: gantt + map */
84
+ .gantt-track{background:var(--hair)}
85
+ .gantt-bar{background:var(--accent);opacity:.9}
86
+ .gantt-grid{color:var(--muted)}
87
+ .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(169,124,63,.12)}
88
+ /* batch-8: radar + ring-progress */
89
+ .radar-grid{stroke:var(--hair)}
90
+ .radar-shape{fill:var(--accent);fill-opacity:.18;stroke:var(--accent);stroke-width:2}
91
+ .radar-axis{fill:var(--muted)}
92
+ .ring-track{stroke:var(--hair)}
93
+ .ring-fill{stroke:var(--accent)}
94
+ .ring-num{color:var(--title)}
95
+
96
+ /* toc-panel: 浅色 skin → 深色对比面板(既有反色机制,复用不新增) */
97
+ .panel{background:#0A0A0A;box-shadow:0 24px 60px rgba(0,0,0,.4)}
98
+ .panel-item-title{color:var(--accent);font-family:var(--font-head)}
99
+ .panel-item-desc{color:rgba(232,227,211,.82)}
100
+ .toc-brand{color:var(--title)}
101
+
102
+ /* numbered-brief layout: 实心编号盘 + 左条引用(全部走变量,每皮肤自动上色) */
103
+ .num-disc{background:var(--accent);color:#fff} .num-item-title{color:var(--title)}
104
+ .brief-quote{border-left:3px solid var(--accent)} .brief-quote-txt{color:var(--muted)} .brief-quote-attr{color:var(--muted)}
105
+
106
+ /* banner-columns layout: 通栏标题带 + 3 栏项目符号(变量驱动,每皮肤自动上色) */
107
+ .banner{background:var(--accent)} .banner-title{color:#fff}
108
+ .col-title{color:var(--title)} .col-body{color:var(--body)} .col-bullet{background:var(--accent)}
109
+
110
+ /* color-palette layout: 色板填色走 ramp 变量(每皮肤用自身配色) */
111
+ .pal-item:nth-child(5n+1) .swatch{background:var(--c1)} .pal-item:nth-child(5n+2) .swatch{background:var(--c2)}
112
+ .pal-item:nth-child(5n+3) .swatch{background:var(--c3)} .pal-item:nth-child(5n+4) .swatch{background:var(--c4)}
113
+ .pal-item:nth-child(5n+5) .swatch{background:var(--title)}
114
+ .pal-name{color:var(--title)} .pal-hex{color:var(--muted)}
115
+
116
+ /* logo-guidelines layout */
117
+ .logo-mark{color:var(--title)} .clearspace{border:1.5px dashed var(--accent)}
118
+ .logo-tile-dark{background:var(--title)} .logo-mark-rev{color:var(--slide-bg)} .logo-mark-mono{color:var(--muted)}
119
+ /* dos-donts layout */
120
+ .do-head{color:var(--accent)} .dont-head{color:var(--muted)}
121
+ .do-mark{color:var(--accent)} .dont-mark{color:var(--muted)} .do-item,.dont-item{color:var(--body)}
122
+
123
+ /* team-row layout: 姓名 accent / 职位 body */
124
+ .team-name{color:var(--accent)} .team-role{color:var(--body)}
125
+
126
+ /* 黑色大理石 slab 仅在封面/内封类页面出现(近似原模版封面右侧黑色纹理块,
127
+ CSS 渐变生成,不搬运版权素材);其余内容/数据/图片页保持纯净奶油底 */
128
+ .bd-slab{display:none}
129
+ [data-layout="cover"] .bd-slab,[data-layout="cover-centered"] .bd-slab,[data-layout="cover-statement"] .bd-slab,[data-layout="cover-minimal"] .bd-slab,[data-layout="title"] .bd-slab,[data-layout="title-meta"] .bd-slab,[data-layout="section"] .bd-slab,[data-layout="section-stat"] .bd-slab,[data-layout="transition"] .bd-slab{display:block}
130
+
131
+ /* ===== .slide-inverse — 反色区块(黑金原模版里同一 layout 在同一份 deck 里
132
+ 交替出现奶油底/纯黑底两种实例;不是新皮肤极性,是同一皮肤内每张幻灯片
133
+ 自行选择的一个修饰类,由拼装 deck.html 时逐页决定要不要加,skin 只负责
134
+ 定义它翻成什么颜色。--title/--accent 恒为金色不随之翻转)。 */
135
+ .slide.slide-inverse{--slide-bg:#0A0A0A;--body:#E8E3D3;--muted:#9A9488;--foot:#746E60;--hair:rgba(232,227,211,.16)}
136
+ .slide.slide-inverse .card,.slide.slide-inverse .cmp-col,.slide.slide-inverse .step-circle,.slide.slide-inverse .surface{background:rgba(232,227,211,.05)}
137
+ .slide.slide-inverse .card-body{color:var(--body)}
@@ -0,0 +1,12 @@
1
+ <div class="ink-fluid" style="position:absolute;inset:0;overflow:hidden;pointer-events:none">
2
+ <svg width="100%" height="100%" viewBox="0 0 1280 720" preserveAspectRatio="xMidYMid slice">
3
+ <defs>
4
+ <radialGradient id="fluid1" cx="78%" cy="18%" r="60%"><stop offset="0" stop-color="currentColor" stop-opacity=".05"/><stop offset="1" stop-color="currentColor" stop-opacity="0"/></radialGradient>
5
+ <radialGradient id="fluid2" cx="14%" cy="86%" r="55%"><stop offset="0" stop-color="currentColor" stop-opacity=".04"/><stop offset="1" stop-color="currentColor" stop-opacity="0"/></radialGradient>
6
+ <filter id="fluidBlur"><feGaussianBlur stdDeviation="26"/></filter>
7
+ </defs>
8
+ <rect width="1280" height="720" fill="url(#fluid1)"/>
9
+ <rect width="1280" height="720" fill="url(#fluid2)"/>
10
+ <path d="M -60 460 C 260 360, 520 560, 820 420 S 1180 320, 1340 420" stroke="currentColor" stroke-opacity=".05" stroke-width="120" fill="none" filter="url(#fluidBlur)"/>
11
+ </svg>
12
+ </div>
@@ -0,0 +1,121 @@
1
+ /* styles/magazine-ink — 改编自本地 guizang-ppt-skill 风格 A「电子杂志 × 电子墨水」
2
+ (~/.claude/skills/guizang-ppt-skill,assets/template.html + references/themes.md
3
+ 🌊 靛蓝瓷 Indigo Porcelain 预设)。瓷白底 + 衬线大标题(Noto Serif SC)+ 无衬线正文 +
4
+ 等宽元数据;克制优于炫技——全程无阴影、无浮动卡片、无 padding box,层级只靠字号+
5
+ 字体对比+留白(guizang 原则 #1/#2)。
6
+ Noto Serif SC/Noto Sans SC 已经是 html2pptx 的 CJK 安全字体名单(bin-src/html2pptx.mjs
7
+ cjkFontFaceCss),中文大标题走 CJK 省略 fontFace 的安全路径,不需要 --talos-bake。 */
8
+ :root{
9
+ --ink:#0A1F3D; --paper:#F1F3F5; --paper-tint:#E4E8EC; --ink-tint:#152A4A;
10
+ --accent:#0A1F3D; --c1:#0A1F3D; --c2:#384962; --c3:#697688; --c4:#9CA5B1; --chart-1:#697688;
11
+ --title:#0A1F3D; --body:#384962; --muted:#697688; --foot:#848F9F;
12
+ --hair:rgba(10,31,61,.14); --card-radius:4px;
13
+ --font-head:'Noto Serif SC','Songti SC','Source Serif 4',Georgia,serif;
14
+ --font-body:'Noto Sans SC','PingFang SC','Microsoft YaHei',sans-serif;
15
+ --font-mono:'IBM Plex Mono','SF Mono','JetBrains Mono',ui-monospace,monospace;
16
+ --title-color:#0A1F3D; --body-color:#384962; --slide-bg:#F1F3F5; --font-heading:var(--font-head);
17
+ }
18
+ .slide{background:var(--slide-bg);color:var(--body);font-family:var(--font-body)}
19
+ .slide-backdrop{position:absolute;inset:0;background:var(--slide-bg)}
20
+ .deck-header,.deck-footer,.deck-pageno{color:var(--muted);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase}
21
+ .rule{background:var(--hair)} .rule-foot{background:var(--hair)}
22
+ .eyebrow{color:var(--muted);font-family:var(--font-mono);letter-spacing:.24em;font-weight:500} .accent-bar{background:var(--accent);border-radius:0}
23
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;letter-spacing:-.005em}
24
+ .cover-sub,.ending-sub,.section-desc{color:var(--body);font-family:var(--font-body)}
25
+ /* 无卡片盒:guizang 原则"不用阴影、不用浮动卡片"——卡片只留顶部发丝线,不填色不描边不投影 */
26
+ .card{border-radius:0;background:transparent;border:none;border-top:1px solid var(--hair);overflow:visible;padding-top:2.2vh}
27
+ /* guizang 原则:不用色块做区分,层级只靠字号/字重/斜体+留白——rail/dot 一律墨色淡线,
28
+ card-title 一律 --title 纯墨色,不跟 anthropic/branding 那样按位置上色 */
29
+ .card-idx{color:var(--muted);font-family:var(--font-head);font-style:italic;font-weight:400} .card-body{color:var(--body)}
30
+ .card-grid .card .card-rail,.card-grid .card .card-dot{background:var(--ink-tint)} .card-grid .card .card-title{color:var(--title)}
31
+ .card .card-rail{background:var(--ink-tint)} .card .card-title{color:var(--title);font-family:var(--font-head);font-weight:700}
32
+ /* comparison — 同样去盒化,只用顶部粗细两级发丝线区分推荐项 */
33
+ .cmp-col{background:transparent;border:none;border-top:1px solid var(--hair);box-shadow:none;padding-top:2.2vh}
34
+ .cmp-col--rec{border-top:2px solid var(--ink)}
35
+ .cmp-title{color:var(--title);font-family:var(--font-head);font-weight:700} .cmp-k{color:var(--muted)} .cmp-v{color:var(--title);font-family:var(--font-head)}
36
+ .cmp-col--rec .cmp-v{color:var(--accent)}
37
+ .cmp-badge{background:var(--ink);color:var(--paper)}
38
+ /* kpi / big-stat — serif-en 粗体 + tabular,guizang 招牌大数字 */
39
+ .kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);font-weight:800;font-feature-settings:"tnum"} .kpi-label{color:var(--muted);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase}
40
+ .stat-unit{color:var(--muted);font-family:var(--font-body)} .stat-lead{color:var(--title);font-family:var(--font-head)} .stat-note{color:var(--body)}
41
+ /* steps — 无填充圆环,细线圈代替实心圆盘 */
42
+ .step-line{background:var(--hair)}
43
+ .step-circle{background:transparent;border:1px solid var(--hair);font-family:var(--font-head);font-weight:700}
44
+ .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)}
45
+ .step-tag,.step-body{color:var(--muted)} .step-title{color:var(--title);font-family:var(--font-head);font-weight:700}
46
+ /* toc — rowline 风格:发丝线分隔 + 衬线序号(斜体)+ 无衬线标题 */
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)}
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);font-style:italic}
49
+ .toc-title{color:var(--title);font-family:var(--font-body);font-weight:500} .toc-desc{color:var(--muted);font-family:var(--font-mono)}
50
+ /* section ghost — 巨大低透明度衬线数字水印,guizang .ghost 招牌 */
51
+ .section-ghost{color:transparent;-webkit-text-stroke:1px rgba(10,31,61,.08);font-family:var(--font-head);font-weight:900}
52
+ .surface{background:rgba(10,31,61,.04);border:none;border-radius:4px} .surface-label{color:var(--muted);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase}
53
+ .ending-contact{color:var(--muted)}
54
+
55
+ /* full-bleed image overlay — 始终浅色(压在图/scrim 上,与皮肤明暗无关)*/
56
+ .overlay-title{color:#fff;font-family:var(--font-head);font-weight:700}
57
+ .overlay-sub{color:rgba(255,255,255,.82)}
58
+ .tl-dot{background:var(--accent);border-radius:50%}
59
+ .tl-date{color:var(--accent);font-family:var(--font-head);font-weight:800;font-feature-settings:"tnum"}
60
+ .tl-title{color:var(--title);font-family:var(--font-head);font-weight:700} .tl-desc{color:var(--muted)}
61
+ .hub-center{border-radius:50%;border:1px solid var(--ink)}
62
+ .hub-title{color:var(--accent);font-family:var(--font-head)}
63
+ .hub-link{stroke:var(--accent);opacity:.3}
64
+ .scrim{background:linear-gradient(180deg,transparent 26%,rgba(0,0,0,.62))}
65
+ /* data-table — rowline 精神:key 衬线粗体,value 无衬线,meta 等宽 */
66
+ .dt-head{background:transparent;border-bottom:2px solid var(--ink)}
67
+ .dt-head .dt-key,.dt-head .dt-cell{color:var(--title);font-family:var(--font-head);font-weight:700}
68
+ .dt-row{border-bottom:1px solid var(--hair)}
69
+ .dt-key{color:var(--title);font-family:var(--font-head);font-weight:700} .dt-cell{color:var(--body)} .dt-em{color:var(--accent);font-weight:700}
70
+ .gantt-track{background:var(--hair)}
71
+ .gantt-bar{background:var(--accent);opacity:.85}
72
+ .gantt-grid{color:var(--muted)}
73
+ .map-pin{background:var(--accent);box-shadow:none}
74
+ .radar-grid{stroke:var(--hair)}
75
+ .radar-shape{fill:var(--accent);fill-opacity:.1;stroke:var(--accent);stroke-width:1.5}
76
+ .radar-axis{fill:var(--muted)}
77
+ .ring-track{stroke:var(--hair)}
78
+ .ring-fill{stroke:var(--accent)}
79
+ .ring-num{color:var(--title);font-family:var(--font-head);font-weight:800}
80
+ /* toc-panel — 唯一允许的实色块:纯墨色面板 + 纸色字,呼应 guizang callout 底色小面积用法 */
81
+ .panel{background:var(--ink);box-shadow:none}
82
+ .panel-item-title{color:var(--paper);font-family:var(--font-head);font-weight:700}
83
+ .panel-item-desc{color:rgba(241,243,245,.72)}
84
+ .toc-brand{color:var(--title);font-family:var(--font-mono);letter-spacing:.1em}
85
+ /* numbered-brief — 直接对应 guizang .callout:左发丝线 + 衬线引文 + 等宽署名 */
86
+ .num-disc{background:var(--ink);color:var(--paper)} .num-item-title{color:var(--title);font-family:var(--font-head);font-weight:700}
87
+ .brief-quote{border-left:2px solid var(--ink);background:rgba(10,31,61,.04)} .brief-quote-txt{color:var(--body);font-family:var(--font-head)} .brief-quote-attr{color:var(--muted);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase}
88
+ /* banner-columns */
89
+ .banner{background:var(--ink)} .banner-title{color:var(--paper);font-family:var(--font-head);font-weight:700}
90
+ .col-title{color:var(--title);font-family:var(--font-head);font-weight:700} .col-body{color:var(--body)} .col-bullet{background:var(--accent);border-radius:0}
91
+ /* color-palette */
92
+ .pal-item:nth-child(5n+1) .swatch{background:var(--c1)} .pal-item:nth-child(5n+2) .swatch{background:var(--c2)}
93
+ .pal-item:nth-child(5n+3) .swatch{background:var(--c3)} .pal-item:nth-child(5n+4) .swatch{background:var(--c4)}
94
+ .pal-item:nth-child(5n+5) .swatch{background:var(--title)}
95
+ .pal-name{color:var(--title);font-family:var(--font-head)} .pal-hex{color:var(--muted);font-family:var(--font-mono)}
96
+ /* logo-guidelines */
97
+ .logo-mark{color:var(--title)} .clearspace{border:1px dashed var(--accent)}
98
+ .logo-tile-dark{background:var(--title)} .logo-mark-rev{color:var(--slide-bg)} .logo-mark-mono{color:var(--muted)}
99
+ /* dos-donts */
100
+ .do-head{color:var(--accent)} .dont-head{color:var(--muted)}
101
+ .do-mark{color:var(--accent)} .dont-mark{color:var(--muted)} .do-item,.dont-item{color:var(--body)}
102
+ /* team-row */
103
+ .team-name{color:var(--title);font-family:var(--font-head);font-weight:700} .team-role{color:var(--muted);font-family:var(--font-mono);letter-spacing:.08em}
104
+
105
+ /* ===== .slide-inverse — 深墨底(guizang 的 .slide.dark);标题/正文一并反色,
106
+ 因为这套皮肤是纯墨色无独立色相(同 cinereel),不像 ivory-gold 那样标题恒定。 */
107
+ .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}
108
+ .slide.slide-inverse .card,.slide.slide-inverse .cmp-col{border-top-color:rgba(241,243,245,.2)}
109
+ .slide.slide-inverse .cmp-col--rec{border-top-color:var(--title)}
110
+ .slide.slide-inverse .surface{background:rgba(241,243,245,.06)}
111
+ .slide.slide-inverse .panel{background:var(--paper)}
112
+ .slide.slide-inverse .panel-item-title{color:var(--ink)} .slide.slide-inverse .panel-item-desc{color:rgba(10,31,61,.72)}
113
+ .slide.slide-inverse .num-disc{background:var(--paper);color:var(--ink)}
114
+ .slide.slide-inverse .banner{background:var(--paper)} .slide.slide-inverse .banner-title{color:var(--ink)}
115
+ .slide.slide-inverse .cmp-badge{background:var(--paper);color:var(--ink)}
116
+
117
+ /* 流体墨迹背景仅在封面/内封/章节类页面透出(guizang 原则:WebGL 背景只在 hero 页可见,
118
+ 常规页几乎看不到);.ink-fluid 用 var(--ink) 着色,不随 .slide-inverse 反色(暗页同理转暗)。 */
119
+ .ink-fluid{color:var(--ink);display:none}
120
+ [data-layout="cover"] .ink-fluid,[data-layout="cover-centered"] .ink-fluid,[data-layout="cover-statement"] .ink-fluid,[data-layout="cover-minimal"] .ink-fluid,[data-layout="cover-image"] .ink-fluid,[data-layout="title"] .ink-fluid,[data-layout="title-meta"] .ink-fluid,[data-layout="section"] .ink-fluid,[data-layout="section-stat"] .ink-fluid,[data-layout="section-image"] .ink-fluid,[data-layout="section-fullbleed"] .ink-fluid,[data-layout="transition"] .ink-fluid,[data-layout="ending"] .ink-fluid,[data-layout="ending-contact"] .ink-fluid,[data-layout="hero"] .ink-fluid,[data-layout="quote"] .ink-fluid,[data-layout="big-stat"] .ink-fluid{display:block}
121
+ .slide.slide-inverse .ink-fluid{color:var(--paper)}
@@ -12,7 +12,7 @@
12
12
  .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
13
13
  .rule{background:var(--hair)} .rule-foot{background:var(--hair)}
14
14
  .eyebrow{color:var(--accent);font-weight:700} .accent-bar{background:var(--accent);border-radius:1px}
15
- .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head)}
15
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700}
16
16
  .cover-sub,.ending-sub,.section-desc{color:var(--muted)}
17
17
  .card{border-radius:var(--card-radius);background:#ffffff;border:1px solid var(--hair);box-shadow:0 8px 24px rgba(15,35,64,.06);overflow:hidden}
18
18
  .card-idx{color:var(--muted)} .card-body{color:var(--body)}
@@ -16,7 +16,7 @@
16
16
  .deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
17
17
  .rule{background:var(--hair)} .rule-foot{background:var(--hair)}
18
18
  .eyebrow{color:var(--title);letter-spacing:.22em;font-weight:700} .accent-bar{background:var(--title);border-radius:0}
19
- .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);letter-spacing:-.01em}
19
+ .deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;letter-spacing:-.01em}
20
20
  .cover-sub,.ending-sub,.section-desc{color:var(--muted)}
21
21
  /* flat white card + value ramp */
22
22
  .card{border-radius:var(--card-radius);background:#FFFFFF;border:1px solid var(--hair);box-shadow:0 6px 20px rgba(0,0,0,.04);overflow:hidden}
@@ -0,0 +1,2 @@
1
+ <div class="dot-mat" style="position:absolute;inset:0"></div>
2
+ <div class="swiss-stripe" style="position:absolute;right:64px;top:56px;width:168px;height:168px;background:repeating-linear-gradient(45deg,var(--accent) 0 12px,transparent 12px 24px);pointer-events:none"></div>