@hiai-gg/hiai-opencode 0.2.1 → 0.2.2

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 (477) hide show
  1. package/.env.example +4 -0
  2. package/AGENTS.md +34 -38
  3. package/ARCHITECTURE.md +4 -3
  4. package/LICENSE.md +14 -0
  5. package/README.md +52 -21
  6. package/config/hiai-opencode.schema.json +11 -13
  7. package/dist/agents/{bob.d.ts → bob/claude.d.ts} +6 -2
  8. package/dist/agents/bob/core.d.ts +6 -0
  9. package/dist/agents/bob/gpt.d.ts +11 -0
  10. package/dist/agents/bob/index.d.ts +3 -0
  11. package/dist/agents/coder/core.d.ts +4 -0
  12. package/dist/agents/coder/gpt.d.ts +1 -4
  13. package/dist/agents/coder/index.d.ts +1 -0
  14. package/dist/agents/manager/agent.d.ts +1 -1
  15. package/dist/agents/manager/default-prompt-sections.d.ts +3 -3
  16. package/dist/agents/manager/guard-integration.d.ts +1 -0
  17. package/dist/agents/prompt-library/index.d.ts +0 -1
  18. package/dist/agents/prompt-library/shared-execution.d.ts +9 -0
  19. package/dist/agents/strategist/behavioral-summary.d.ts +1 -1
  20. package/dist/agents/strategist/identity-constraints.d.ts +1 -1
  21. package/dist/agents/strategist/plan-generation.d.ts +1 -1
  22. package/dist/agents/types.d.ts +2 -1
  23. package/dist/config/defaults.d.ts +1 -0
  24. package/dist/config/platform-schema.d.ts +26 -26
  25. package/dist/config/schema/agent-names.d.ts +6 -6
  26. package/dist/config/schema/agent-overrides.d.ts +0 -128
  27. package/dist/config/schema/hiai-opencode-config.d.ts +0 -128
  28. package/dist/config/types.d.ts +2 -2
  29. package/dist/features/background-agent/manager-notifier.d.ts +46 -0
  30. package/dist/features/background-agent/manager-types.d.ts +40 -0
  31. package/dist/features/background-agent/manager.d.ts +3 -19
  32. package/dist/features/background-agent/polling-manager.d.ts +51 -0
  33. package/dist/features/boulder-state/storage.d.ts +1 -0
  34. package/dist/features/builtin-commands/templates/loop.d.ts +2 -0
  35. package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
  36. package/dist/features/builtin-skills/skills/interview-me.d.ts +2 -0
  37. package/dist/features/builtin-skills/skills/planning-and-task-breakdown.d.ts +2 -0
  38. package/dist/hooks/reasoning-content-cache/hook.d.ts +11 -0
  39. package/dist/hooks/reasoning-content-cache/index.d.ts +1 -0
  40. package/dist/hooks/session-recovery/checkpoint.d.ts +48 -0
  41. package/dist/hooks/session-recovery/enhanced-hook.d.ts +30 -0
  42. package/dist/hooks/session-recovery/state-backup.d.ts +76 -0
  43. package/dist/hooks/shared/compaction-in-progress.d.ts +4 -0
  44. package/dist/hooks/start-work/git-operations.d.ts +47 -0
  45. package/dist/hooks/token-budget.d.ts +30 -0
  46. package/dist/index.js +1185 -1078
  47. package/dist/mcp/rate-limiter.d.ts +68 -0
  48. package/dist/plugin/chat-message.d.ts +8 -0
  49. package/dist/plugin/command-execute-before.d.ts +1 -1
  50. package/dist/plugin/event-handlers/message-updated.d.ts +2 -0
  51. package/dist/plugin/event-handlers/session-error.d.ts +2 -0
  52. package/dist/plugin/event-handlers/session-status.d.ts +2 -0
  53. package/dist/plugin/event-handlers/types.d.ts +62 -0
  54. package/dist/plugin/event-handlers/utils.d.ts +11 -0
  55. package/dist/plugin/event.d.ts +1 -1
  56. package/dist/shared/data-path.d.ts +1 -1
  57. package/dist/shared/errors.d.ts +70 -0
  58. package/dist/shared/extract-session-id.d.ts +8 -0
  59. package/dist/shared/git-worktree/get-git-state-summary.d.ts +14 -0
  60. package/dist/shared/index.d.ts +67 -68
  61. package/dist/shared/internal-initiator-marker.d.ts +1 -1
  62. package/dist/shared/logger.d.ts +5 -1
  63. package/dist/shared/reasoning-content-cache.d.ts +68 -0
  64. package/dist/shared/safe-create-hook.d.ts +4 -4
  65. package/dist/tools/call-hiai-agent/constants.d.ts +2 -2
  66. package/dist/tools/delegate-task/sub-agent.d.ts +1 -1
  67. package/dist/tools/look-at/constants.d.ts +1 -1
  68. package/docs/architecture/bob-manager-architecture.md +244 -0
  69. package/docs/hiai-opencode/adr/ADR-001-agent-identity-section-injection.md +66 -0
  70. package/docs/hiai-opencode/adr/ADR-002-anti-loop-guard-priority.md +63 -0
  71. package/docs/hiai-opencode/adr/ADR-003-compaction-mechanism.md +71 -0
  72. package/docs/hiai-opencode/adr/ADR-004-session-recovery.md +76 -0
  73. package/docs/hiai-opencode/api.md +305 -0
  74. package/docs/hiai-opencode/hooks-architecture.md +225 -0
  75. package/docs/hiai-opencode/migration.md +209 -0
  76. package/docs/skill-discovery.md +288 -0
  77. package/package.json +1 -1
  78. package/skills/agent-browser/SKILL.md +193 -0
  79. package/skills/apple-hig/SKILL.md +43 -0
  80. package/skills/article-magazine/SKILL.md +46 -0
  81. package/skills/article-magazine/example.html +81 -0
  82. package/skills/article-magazine/example.md +38 -0
  83. package/skills/canvas-design/SKILL.md +45 -0
  84. package/skills/design-templates/audio-jingle/SKILL.md +132 -0
  85. package/skills/design-templates/audio-jingle/example.html +128 -0
  86. package/skills/design-templates/blog-post/SKILL.md +80 -0
  87. package/skills/design-templates/blog-post/example.html +80 -0
  88. package/skills/design-templates/clinical-case-report/SKILL.md +209 -0
  89. package/skills/design-templates/clinical-case-report/example.html +698 -0
  90. package/skills/design-templates/clinical-case-report/examples/example-stemi.html +698 -0
  91. package/skills/design-templates/clinical-case-report/references/case-formats.md +94 -0
  92. package/skills/design-templates/clinical-case-report/references/checklist.md +41 -0
  93. package/skills/design-templates/critique/SKILL.md +258 -0
  94. package/skills/design-templates/critique/example.html +671 -0
  95. package/skills/design-templates/dashboard/SKILL.md +76 -0
  96. package/skills/design-templates/dashboard/example.html +118 -0
  97. package/skills/design-templates/dating-web/SKILL.md +92 -0
  98. package/skills/design-templates/dating-web/example.html +265 -0
  99. package/skills/design-templates/dcf-valuation/SKILL.md +140 -0
  100. package/skills/design-templates/dcf-valuation/references/sector-wacc.md +42 -0
  101. package/skills/design-templates/digital-eguide/SKILL.md +94 -0
  102. package/skills/design-templates/digital-eguide/example.html +204 -0
  103. package/skills/design-templates/docs-page/SKILL.md +80 -0
  104. package/skills/design-templates/docs-page/example.html +122 -0
  105. package/skills/design-templates/email-marketing/SKILL.md +84 -0
  106. package/skills/design-templates/email-marketing/example.html +159 -0
  107. package/skills/design-templates/eng-runbook/SKILL.md +51 -0
  108. package/skills/design-templates/eng-runbook/example.html +250 -0
  109. package/skills/design-templates/finance-report/SKILL.md +61 -0
  110. package/skills/design-templates/finance-report/example.html +242 -0
  111. package/skills/design-templates/flowai-live-dashboard-template/SKILL.md +87 -0
  112. package/skills/design-templates/flowai-live-dashboard-template/assets/template.html +387 -0
  113. package/skills/design-templates/flowai-live-dashboard-template/example.html +13 -0
  114. package/skills/design-templates/flowai-live-dashboard-template/references/checklist.md +35 -0
  115. package/skills/design-templates/gamified-app/SKILL.md +108 -0
  116. package/skills/design-templates/gamified-app/example.html +292 -0
  117. package/skills/design-templates/github-dashboard/SKILL.md +130 -0
  118. package/skills/design-templates/github-dashboard/example.html +473 -0
  119. package/skills/design-templates/github-dashboard/references/README.md +10 -0
  120. package/skills/design-templates/github-dashboard/references/artifact-example.json +15 -0
  121. package/skills/design-templates/github-dashboard/references/example-data.json +138 -0
  122. package/skills/design-templates/github-dashboard/references/provenance-example.json +92 -0
  123. package/skills/design-templates/github-dashboard/references/template.html +473 -0
  124. package/skills/design-templates/guizang-ppt/LICENSE +21 -0
  125. package/skills/design-templates/guizang-ppt/README.en.md +119 -0
  126. package/skills/design-templates/guizang-ppt/README.md +120 -0
  127. package/skills/design-templates/guizang-ppt/README.pt-BR.md +121 -0
  128. package/skills/design-templates/guizang-ppt/SKILL.md +313 -0
  129. package/skills/design-templates/guizang-ppt/assets/example-slides.html +318 -0
  130. package/skills/design-templates/guizang-ppt/assets/template.html +647 -0
  131. package/skills/design-templates/guizang-ppt/references/checklist.md +265 -0
  132. package/skills/design-templates/guizang-ppt/references/components.md +363 -0
  133. package/skills/design-templates/guizang-ppt/references/layouts.md +630 -0
  134. package/skills/design-templates/guizang-ppt/references/styles.md +195 -0
  135. package/skills/design-templates/guizang-ppt/references/themes.md +122 -0
  136. package/skills/design-templates/hr-onboarding/SKILL.md +52 -0
  137. package/skills/design-templates/hr-onboarding/example.html +219 -0
  138. package/skills/design-templates/html-ppt/.clawscan-allow +12 -0
  139. package/skills/design-templates/html-ppt/LICENSE +21 -0
  140. package/skills/design-templates/html-ppt/README.md +234 -0
  141. package/skills/design-templates/html-ppt/README.pt-BR.md +239 -0
  142. package/skills/design-templates/html-ppt/README.zh-CN.md +238 -0
  143. package/skills/design-templates/html-ppt/SKILL.md +250 -0
  144. package/skills/design-templates/html-ppt/assets/animations/animations.css +138 -0
  145. package/skills/design-templates/html-ppt/assets/animations/fx/_util.js +63 -0
  146. package/skills/design-templates/html-ppt/assets/animations/fx/chain-react.js +41 -0
  147. package/skills/design-templates/html-ppt/assets/animations/fx/confetti-cannon.js +49 -0
  148. package/skills/design-templates/html-ppt/assets/animations/fx/constellation.js +44 -0
  149. package/skills/design-templates/html-ppt/assets/animations/fx/counter-explosion.js +58 -0
  150. package/skills/design-templates/html-ppt/assets/animations/fx/data-stream.js +45 -0
  151. package/skills/design-templates/html-ppt/assets/animations/fx/firework.js +51 -0
  152. package/skills/design-templates/html-ppt/assets/animations/fx/galaxy-swirl.js +33 -0
  153. package/skills/design-templates/html-ppt/assets/animations/fx/gradient-blob.js +39 -0
  154. package/skills/design-templates/html-ppt/assets/animations/fx/knowledge-graph.js +69 -0
  155. package/skills/design-templates/html-ppt/assets/animations/fx/letter-explode.js +50 -0
  156. package/skills/design-templates/html-ppt/assets/animations/fx/magnetic-field.js +40 -0
  157. package/skills/design-templates/html-ppt/assets/animations/fx/matrix-rain.js +33 -0
  158. package/skills/design-templates/html-ppt/assets/animations/fx/neural-net.js +75 -0
  159. package/skills/design-templates/html-ppt/assets/animations/fx/orbit-ring.js +38 -0
  160. package/skills/design-templates/html-ppt/assets/animations/fx/particle-burst.js +42 -0
  161. package/skills/design-templates/html-ppt/assets/animations/fx/shockwave.js +39 -0
  162. package/skills/design-templates/html-ppt/assets/animations/fx/sparkle-trail.js +62 -0
  163. package/skills/design-templates/html-ppt/assets/animations/fx/starfield.js +30 -0
  164. package/skills/design-templates/html-ppt/assets/animations/fx/typewriter-multi.js +51 -0
  165. package/skills/design-templates/html-ppt/assets/animations/fx/word-cascade.js +47 -0
  166. package/skills/design-templates/html-ppt/assets/animations/fx-runtime.js +99 -0
  167. package/skills/design-templates/html-ppt/assets/base.css +150 -0
  168. package/skills/design-templates/html-ppt/assets/fonts.css +9 -0
  169. package/skills/design-templates/html-ppt/assets/runtime.js +960 -0
  170. package/skills/design-templates/html-ppt/assets/themes/academic-paper.css +23 -0
  171. package/skills/design-templates/html-ppt/assets/themes/arctic-cool.css +14 -0
  172. package/skills/design-templates/html-ppt/assets/themes/aurora.css +20 -0
  173. package/skills/design-templates/html-ppt/assets/themes/bauhaus.css +16 -0
  174. package/skills/design-templates/html-ppt/assets/themes/blueprint.css +19 -0
  175. package/skills/design-templates/html-ppt/assets/themes/catppuccin-latte.css +14 -0
  176. package/skills/design-templates/html-ppt/assets/themes/catppuccin-mocha.css +14 -0
  177. package/skills/design-templates/html-ppt/assets/themes/corporate-clean.css +19 -0
  178. package/skills/design-templates/html-ppt/assets/themes/cyberpunk-neon.css +23 -0
  179. package/skills/design-templates/html-ppt/assets/themes/dracula.css +14 -0
  180. package/skills/design-templates/html-ppt/assets/themes/editorial-serif.css +18 -0
  181. package/skills/design-templates/html-ppt/assets/themes/engineering-whiteprint.css +26 -0
  182. package/skills/design-templates/html-ppt/assets/themes/glassmorphism.css +21 -0
  183. package/skills/design-templates/html-ppt/assets/themes/gruvbox-dark.css +14 -0
  184. package/skills/design-templates/html-ppt/assets/themes/japanese-minimal.css +21 -0
  185. package/skills/design-templates/html-ppt/assets/themes/magazine-bold.css +21 -0
  186. package/skills/design-templates/html-ppt/assets/themes/memphis-pop.css +20 -0
  187. package/skills/design-templates/html-ppt/assets/themes/midcentury.css +19 -0
  188. package/skills/design-templates/html-ppt/assets/themes/minimal-white.css +16 -0
  189. package/skills/design-templates/html-ppt/assets/themes/neo-brutalism.css +17 -0
  190. package/skills/design-templates/html-ppt/assets/themes/news-broadcast.css +20 -0
  191. package/skills/design-templates/html-ppt/assets/themes/nord.css +14 -0
  192. package/skills/design-templates/html-ppt/assets/themes/pitch-deck-vc.css +21 -0
  193. package/skills/design-templates/html-ppt/assets/themes/rainbow-gradient.css +16 -0
  194. package/skills/design-templates/html-ppt/assets/themes/retro-tv.css +22 -0
  195. package/skills/design-templates/html-ppt/assets/themes/rose-pine.css +14 -0
  196. package/skills/design-templates/html-ppt/assets/themes/sharp-mono.css +17 -0
  197. package/skills/design-templates/html-ppt/assets/themes/soft-pastel.css +14 -0
  198. package/skills/design-templates/html-ppt/assets/themes/solarized-light.css +14 -0
  199. package/skills/design-templates/html-ppt/assets/themes/sunset-warm.css +14 -0
  200. package/skills/design-templates/html-ppt/assets/themes/swiss-grid.css +17 -0
  201. package/skills/design-templates/html-ppt/assets/themes/terminal-green.css +18 -0
  202. package/skills/design-templates/html-ppt/assets/themes/tokyo-night.css +14 -0
  203. package/skills/design-templates/html-ppt/assets/themes/vaporwave.css +21 -0
  204. package/skills/design-templates/html-ppt/assets/themes/xiaohongshu-white.css +16 -0
  205. package/skills/design-templates/html-ppt/assets/themes/y2k-chrome.css +20 -0
  206. package/skills/design-templates/html-ppt/docs/readme/_theme-cell.html +56 -0
  207. package/skills/design-templates/html-ppt/docs/readme/animations.png +0 -0
  208. package/skills/design-templates/html-ppt/docs/readme/hero.gif +0 -0
  209. package/skills/design-templates/html-ppt/docs/readme/layouts-live.gif +0 -0
  210. package/skills/design-templates/html-ppt/docs/readme/layouts.png +0 -0
  211. package/skills/design-templates/html-ppt/docs/readme/montage-animations.html +61 -0
  212. package/skills/design-templates/html-ppt/docs/readme/montage-layouts.html +72 -0
  213. package/skills/design-templates/html-ppt/docs/readme/montage-templates.html +72 -0
  214. package/skills/design-templates/html-ppt/docs/readme/montage-themes.html +38 -0
  215. package/skills/design-templates/html-ppt/docs/readme/presenter-mode.png +0 -0
  216. package/skills/design-templates/html-ppt/docs/readme/templates.png +0 -0
  217. package/skills/design-templates/html-ppt/docs/readme/themes.png +0 -0
  218. package/skills/design-templates/html-ppt/examples/demo-deck/index.html +161 -0
  219. package/skills/design-templates/html-ppt/references/animations.md +147 -0
  220. package/skills/design-templates/html-ppt/references/authoring-guide.md +141 -0
  221. package/skills/design-templates/html-ppt/references/full-decks.md +98 -0
  222. package/skills/design-templates/html-ppt/references/layouts.md +103 -0
  223. package/skills/design-templates/html-ppt/references/presenter-mode.md +240 -0
  224. package/skills/design-templates/html-ppt/references/themes.md +107 -0
  225. package/skills/design-templates/html-ppt/scripts/new-deck.sh +46 -0
  226. package/skills/design-templates/html-ppt/scripts/render.sh +71 -0
  227. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_01.png +0 -0
  228. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_02.png +0 -0
  229. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_03.png +0 -0
  230. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_04.png +0 -0
  231. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_05.png +0 -0
  232. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_06.png +0 -0
  233. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_07.png +0 -0
  234. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_08.png +0 -0
  235. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_09.png +0 -0
  236. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_10.png +0 -0
  237. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_11.png +0 -0
  238. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_12.png +0 -0
  239. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_13.png +0 -0
  240. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_14.png +0 -0
  241. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_15.png +0 -0
  242. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_16.png +0 -0
  243. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_17.png +0 -0
  244. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_18.png +0 -0
  245. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_19.png +0 -0
  246. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_20.png +0 -0
  247. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_01.png +0 -0
  248. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_02.png +0 -0
  249. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_03.png +0 -0
  250. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_04.png +0 -0
  251. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_05.png +0 -0
  252. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_06.png +0 -0
  253. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_07.png +0 -0
  254. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_08.png +0 -0
  255. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_09.png +0 -0
  256. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_10.png +0 -0
  257. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_11.png +0 -0
  258. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_12.png +0 -0
  259. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_13.png +0 -0
  260. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_14.png +0 -0
  261. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_15.png +0 -0
  262. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_16.png +0 -0
  263. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_17.png +0 -0
  264. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_18.png +0 -0
  265. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_19.png +0 -0
  266. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_20.png +0 -0
  267. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_21.png +0 -0
  268. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_22.png +0 -0
  269. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_23.png +0 -0
  270. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_24.png +0 -0
  271. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_25.png +0 -0
  272. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_26.png +0 -0
  273. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_27.png +0 -0
  274. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_28.png +0 -0
  275. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_29.png +0 -0
  276. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_30.png +0 -0
  277. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_31.png +0 -0
  278. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_32.png +0 -0
  279. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_33.png +0 -0
  280. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_34.png +0 -0
  281. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_35.png +0 -0
  282. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_36.png +0 -0
  283. package/skills/design-templates/html-ppt/templates/animation-showcase.html +172 -0
  284. package/skills/design-templates/html-ppt/templates/deck.html +69 -0
  285. package/skills/design-templates/html-ppt/templates/full-decks/course-module/README.md +8 -0
  286. package/skills/design-templates/html-ppt/templates/full-decks/course-module/index.html +189 -0
  287. package/skills/design-templates/html-ppt/templates/full-decks/course-module/style.css +46 -0
  288. package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/README.md +11 -0
  289. package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/index.html +138 -0
  290. package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/style.css +60 -0
  291. package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/README.md +11 -0
  292. package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/index.html +180 -0
  293. package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/style.css +54 -0
  294. package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/README.md +11 -0
  295. package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/index.html +199 -0
  296. package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/style.css +55 -0
  297. package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/README.md +11 -0
  298. package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/index.html +190 -0
  299. package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/style.css +49 -0
  300. package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/README.md +11 -0
  301. package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/index.html +144 -0
  302. package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/style.css +59 -0
  303. package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/README.md +9 -0
  304. package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/index.html +148 -0
  305. package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/style.css +40 -0
  306. package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/README.md +102 -0
  307. package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/index.html +187 -0
  308. package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/style.css +216 -0
  309. package/skills/design-templates/html-ppt/templates/full-decks/product-launch/README.md +8 -0
  310. package/skills/design-templates/html-ppt/templates/full-decks/product-launch/index.html +121 -0
  311. package/skills/design-templates/html-ppt/templates/full-decks/product-launch/style.css +39 -0
  312. package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/README.md +8 -0
  313. package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/index.html +156 -0
  314. package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/style.css +49 -0
  315. package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/README.md +11 -0
  316. package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/index.html +183 -0
  317. package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/style.css +62 -0
  318. package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/README.md +8 -0
  319. package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/index.html +127 -0
  320. package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/style.css +55 -0
  321. package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/README.md +11 -0
  322. package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/index.html +147 -0
  323. package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/style.css +66 -0
  324. package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/README.md +9 -0
  325. package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/index.html +133 -0
  326. package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/style.css +47 -0
  327. package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/README.md +11 -0
  328. package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/index.html +187 -0
  329. package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/style.css +63 -0
  330. package/skills/design-templates/html-ppt/templates/full-decks-index.html +82 -0
  331. package/skills/design-templates/html-ppt/templates/layout-showcase.html +47 -0
  332. package/skills/design-templates/html-ppt/templates/single-page/arch-diagram.html +46 -0
  333. package/skills/design-templates/html-ppt/templates/single-page/big-quote.html +18 -0
  334. package/skills/design-templates/html-ppt/templates/single-page/bullets.html +19 -0
  335. package/skills/design-templates/html-ppt/templates/single-page/chart-bar.html +30 -0
  336. package/skills/design-templates/html-ppt/templates/single-page/chart-line.html +35 -0
  337. package/skills/design-templates/html-ppt/templates/single-page/chart-pie.html +36 -0
  338. package/skills/design-templates/html-ppt/templates/single-page/chart-radar.html +31 -0
  339. package/skills/design-templates/html-ppt/templates/single-page/code.html +33 -0
  340. package/skills/design-templates/html-ppt/templates/single-page/comparison.html +47 -0
  341. package/skills/design-templates/html-ppt/templates/single-page/cover.html +32 -0
  342. package/skills/design-templates/html-ppt/templates/single-page/cta.html +27 -0
  343. package/skills/design-templates/html-ppt/templates/single-page/diff.html +35 -0
  344. package/skills/design-templates/html-ppt/templates/single-page/flow-diagram.html +33 -0
  345. package/skills/design-templates/html-ppt/templates/single-page/gantt.html +29 -0
  346. package/skills/design-templates/html-ppt/templates/single-page/image-grid.html +34 -0
  347. package/skills/design-templates/html-ppt/templates/single-page/image-hero.html +33 -0
  348. package/skills/design-templates/html-ppt/templates/single-page/kpi-grid.html +19 -0
  349. package/skills/design-templates/html-ppt/templates/single-page/mindmap.html +38 -0
  350. package/skills/design-templates/html-ppt/templates/single-page/process-steps.html +27 -0
  351. package/skills/design-templates/html-ppt/templates/single-page/pros-cons.html +31 -0
  352. package/skills/design-templates/html-ppt/templates/single-page/roadmap.html +46 -0
  353. package/skills/design-templates/html-ppt/templates/single-page/section-divider.html +17 -0
  354. package/skills/design-templates/html-ppt/templates/single-page/stat-highlight.html +17 -0
  355. package/skills/design-templates/html-ppt/templates/single-page/table.html +33 -0
  356. package/skills/design-templates/html-ppt/templates/single-page/terminal.html +35 -0
  357. package/skills/design-templates/html-ppt/templates/single-page/thanks.html +21 -0
  358. package/skills/design-templates/html-ppt/templates/single-page/three-column.html +18 -0
  359. package/skills/design-templates/html-ppt/templates/single-page/timeline.html +32 -0
  360. package/skills/design-templates/html-ppt/templates/single-page/toc.html +26 -0
  361. package/skills/design-templates/html-ppt/templates/single-page/todo-checklist.html +33 -0
  362. package/skills/design-templates/html-ppt/templates/single-page/two-column.html +39 -0
  363. package/skills/design-templates/html-ppt/templates/theme-showcase.html +151 -0
  364. package/skills/design-templates/html-ppt-course-module/SKILL.md +78 -0
  365. package/skills/design-templates/html-ppt-course-module/example.html +542 -0
  366. package/skills/design-templates/html-ppt-dir-key-nav-minimal/SKILL.md +77 -0
  367. package/skills/design-templates/html-ppt-dir-key-nav-minimal/example.html +366 -0
  368. package/skills/design-templates/html-ppt-graphify-dark-graph/SKILL.md +77 -0
  369. package/skills/design-templates/html-ppt-graphify-dark-graph/example.html +402 -0
  370. package/skills/design-templates/html-ppt-hermes-cyber-terminal/SKILL.md +77 -0
  371. package/skills/design-templates/html-ppt-hermes-cyber-terminal/example.html +422 -0
  372. package/skills/design-templates/html-ppt-knowledge-arch-blueprint/SKILL.md +77 -0
  373. package/skills/design-templates/html-ppt-knowledge-arch-blueprint/example.html +407 -0
  374. package/skills/design-templates/html-ppt-obsidian-claude-gradient/SKILL.md +77 -0
  375. package/skills/design-templates/html-ppt-obsidian-claude-gradient/example.html +371 -0
  376. package/skills/design-templates/html-ppt-pitch-deck/SKILL.md +78 -0
  377. package/skills/design-templates/html-ppt-pitch-deck/example.html +495 -0
  378. package/skills/design-templates/html-ppt-presenter-mode-reveal/SKILL.md +78 -0
  379. package/skills/design-templates/html-ppt-presenter-mode-reveal/example.html +725 -0
  380. package/skills/design-templates/html-ppt-product-launch/SKILL.md +77 -0
  381. package/skills/design-templates/html-ppt-product-launch/example.html +467 -0
  382. package/skills/design-templates/html-ppt-taste-brutalist/SKILL.md +70 -0
  383. package/skills/design-templates/html-ppt-taste-brutalist/example.html +774 -0
  384. package/skills/design-templates/html-ppt-taste-editorial/SKILL.md +62 -0
  385. package/skills/design-templates/html-ppt-taste-editorial/example.html +689 -0
  386. package/skills/design-templates/html-ppt-tech-sharing/SKILL.md +77 -0
  387. package/skills/design-templates/html-ppt-tech-sharing/example.html +512 -0
  388. package/skills/design-templates/html-ppt-testing-safety-alert/SKILL.md +78 -0
  389. package/skills/design-templates/html-ppt-testing-safety-alert/example.html +413 -0
  390. package/skills/design-templates/html-ppt-weekly-report/SKILL.md +77 -0
  391. package/skills/design-templates/html-ppt-weekly-report/example.html +489 -0
  392. package/skills/design-templates/html-ppt-xhs-pastel-card/SKILL.md +78 -0
  393. package/skills/design-templates/html-ppt-xhs-pastel-card/example.html +381 -0
  394. package/skills/design-templates/html-ppt-xhs-post/SKILL.md +78 -0
  395. package/skills/design-templates/html-ppt-xhs-post/example.html +487 -0
  396. package/skills/design-templates/html-ppt-xhs-white-editorial/SKILL.md +77 -0
  397. package/skills/design-templates/html-ppt-xhs-white-editorial/example.html +418 -0
  398. package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/LICENSE +21 -0
  399. package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/SKILL.md +93 -0
  400. package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/example.html +1640 -0
  401. package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/template.json +48 -0
  402. package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/LICENSE +21 -0
  403. package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/SKILL.md +93 -0
  404. package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/example.html +833 -0
  405. package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/template.json +49 -0
  406. package/skills/design-templates/html-ppt-zhangzara-block-frame/LICENSE +21 -0
  407. package/skills/design-templates/html-ppt-zhangzara-block-frame/SKILL.md +93 -0
  408. package/skills/design-templates/html-ppt-zhangzara-block-frame/example.html +1453 -0
  409. package/skills/design-templates/html-ppt-zhangzara-block-frame/template.json +47 -0
  410. package/skills/design-templates/html-ppt-zhangzara-blue-professional/LICENSE +21 -0
  411. package/skills/design-templates/html-ppt-zhangzara-blue-professional/SKILL.md +93 -0
  412. package/skills/design-templates/html-ppt-zhangzara-blue-professional/example.html +1423 -0
  413. package/skills/design-templates/html-ppt-zhangzara-blue-professional/template.json +44 -0
  414. package/skills/design-templates/html-ppt-zhangzara-bold-poster/LICENSE +21 -0
  415. package/skills/design-templates/html-ppt-zhangzara-bold-poster/SKILL.md +93 -0
  416. package/skills/design-templates/html-ppt-zhangzara-bold-poster/example.html +876 -0
  417. package/skills/design-templates/html-ppt-zhangzara-bold-poster/template.json +45 -0
  418. package/skills/design-templates/html-ppt-zhangzara-broadside/LICENSE +21 -0
  419. package/skills/design-templates/html-ppt-zhangzara-broadside/SKILL.md +92 -0
  420. package/skills/design-templates/html-ppt-zhangzara-broadside/example.html +2144 -0
  421. package/skills/design-templates/html-ppt-zhangzara-broadside/template.json +49 -0
  422. package/skills/design-templates/html-ppt-zhangzara-capsule/LICENSE +21 -0
  423. package/skills/design-templates/html-ppt-zhangzara-capsule/SKILL.md +92 -0
  424. package/skills/design-templates/html-ppt-zhangzara-capsule/example.html +1413 -0
  425. package/skills/design-templates/html-ppt-zhangzara-capsule/template.json +51 -0
  426. package/skills/design-templates/html-ppt-zhangzara-cartesian/LICENSE +21 -0
  427. package/skills/design-templates/html-ppt-zhangzara-cartesian/SKILL.md +92 -0
  428. package/skills/design-templates/html-ppt-zhangzara-cartesian/example.html +1136 -0
  429. package/skills/design-templates/html-ppt-zhangzara-cartesian/template.json +47 -0
  430. package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/LICENSE +21 -0
  431. package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/SKILL.md +93 -0
  432. package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/example.html +1205 -0
  433. package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/template.json +49 -0
  434. package/skills/design-templates/html-ppt-zhangzara-coral/LICENSE +21 -0
  435. package/skills/design-templates/html-ppt-zhangzara-coral/SKILL.md +92 -0
  436. package/skills/design-templates/html-ppt-zhangzara-coral/example.html +1487 -0
  437. package/skills/design-templates/html-ppt-zhangzara-coral/template.json +45 -0
  438. package/skills/design-templates/html-ppt-zhangzara-creative-mode/LICENSE +21 -0
  439. package/skills/design-templates/html-ppt-zhangzara-creative-mode/SKILL.md +99 -0
  440. package/skills/design-templates/html-ppt-zhangzara-creative-mode/assets/deck-stage.js +619 -0
  441. package/skills/design-templates/html-ppt-zhangzara-creative-mode/example.html +636 -0
  442. package/skills/design-templates/html-ppt-zhangzara-creative-mode/template.json +47 -0
  443. package/skills/design-templates/html-ppt-zhangzara-daisy-days/LICENSE +21 -0
  444. package/skills/design-templates/html-ppt-zhangzara-daisy-days/SKILL.md +93 -0
  445. package/skills/design-templates/html-ppt-zhangzara-daisy-days/example.html +469 -0
  446. package/skills/design-templates/html-ppt-zhangzara-daisy-days/template.json +54 -0
  447. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/LICENSE +21 -0
  448. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/SKILL.md +98 -0
  449. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/assets/deck-stage.js +619 -0
  450. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/example.html +737 -0
  451. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/template.json +44 -0
  452. package/skills/design-templates/html-ppt-zhangzara-grove/LICENSE +21 -0
  453. package/skills/design-templates/html-ppt-zhangzara-grove/SKILL.md +92 -0
  454. package/skills/design-templates/html-ppt-zhangzara-grove/example.html +1676 -0
  455. package/skills/design-templates/html-ppt-zhangzara-grove/template.json +51 -0
  456. package/skills/figma-code-connect-components/SKILL.md +42 -0
  457. package/skills/figma-create-design-system-rules/SKILL.md +42 -0
  458. package/skills/figma-create-new-file/SKILL.md +41 -0
  459. package/skills/figma-generate-design/SKILL.md +42 -0
  460. package/skills/figma-generate-library/SKILL.md +42 -0
  461. package/skills/figma-implement-design/SKILL.md +42 -0
  462. package/skills/figma-use/SKILL.md +42 -0
  463. package/skills/full-page-screenshot/SKILL.md +42 -0
  464. package/skills/interview-me/SKILL.md +64 -0
  465. package/skills/planning-and-task-breakdown/SKILL.md +52 -0
  466. package/skills/sora/SKILL.md +43 -0
  467. package/skills/theme-factory/SKILL.md +43 -0
  468. package/skills/web-design-guidelines/SKILL.md +42 -0
  469. package/dist/agents/prompt-library/orchestration.d.ts +0 -4
  470. package/skills/brainstorming/SKILL.md +0 -164
  471. package/skills/brainstorming/scripts/frame-template.html +0 -214
  472. package/skills/brainstorming/scripts/helper.js +0 -88
  473. package/skills/brainstorming/scripts/server.cjs +0 -354
  474. package/skills/brainstorming/scripts/start-server.sh +0 -148
  475. package/skills/brainstorming/scripts/stop-server.sh +0 -56
  476. package/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
  477. package/skills/brainstorming/visual-companion.md +0 -287
@@ -0,0 +1,75 @@
1
+ (function(){
2
+ window.HPX = window.HPX || {};
3
+ window.HPX['neural-net'] = function(el){
4
+ const U = window.HPX._u;
5
+ const k = U.canvas(el), ctx = k.ctx;
6
+ const ac = U.accent(el,'#7c5cff'), ac2 = U.accent2(el,'#22d3ee');
7
+ const layers = [4,6,6,3];
8
+ let nodes = [], edges = [], pulses = [];
9
+ const layout = () => {
10
+ nodes = [];
11
+ const pad = 40;
12
+ const cw = k.w - pad*2, ch = k.h - pad*2;
13
+ for (let L=0; L<layers.length; L++){
14
+ const x = pad + (cw * L / (layers.length-1));
15
+ const n = layers[L];
16
+ for (let i=0;i<n;i++){
17
+ const y = pad + (ch * (i+0.5) / n);
18
+ nodes.push({x,y,L,i});
19
+ }
20
+ }
21
+ edges = [];
22
+ for (let L=0; L<layers.length-1; L++){
23
+ const a = nodes.filter(n=>n.L===L), b = nodes.filter(n=>n.L===L+1);
24
+ for (const x of a) for (const y of b) edges.push([nodes.indexOf(x),nodes.indexOf(y)]);
25
+ }
26
+ };
27
+ layout();
28
+ let lw=k.w, lh=k.h, last=0;
29
+ const stop = U.loop((t) => {
30
+ if (k.w!==lw||k.h!==lh){ layout(); lw=k.w; lh=k.h; }
31
+ ctx.clearRect(0,0,k.w,k.h);
32
+ ctx.strokeStyle = 'rgba(160,160,200,0.22)'; ctx.lineWidth=1;
33
+ for (const [i,j] of edges){
34
+ const a=nodes[i], b=nodes[j];
35
+ ctx.beginPath(); ctx.moveTo(a.x,a.y); ctx.lineTo(b.x,b.y); ctx.stroke();
36
+ }
37
+ if (t - last > 0.25){
38
+ last = t;
39
+ const starts = nodes.filter(n=>n.L===0);
40
+ const s = starts[(Math.random()*starts.length)|0];
41
+ pulses.push({node:s, L:0, t:0});
42
+ }
43
+ pulses = pulses.filter(p => p.L < layers.length-1);
44
+ for (const p of pulses){
45
+ p.t += 0.03;
46
+ if (p.t >= 1){
47
+ const next = nodes.filter(n=>n.L===p.L+1);
48
+ p.node2 = next[(Math.random()*next.length)|0];
49
+ if (!p._started){ p._started = true; }
50
+ }
51
+ }
52
+ // animate progression
53
+ for (const p of pulses){
54
+ if (!p.target){
55
+ const next = nodes.filter(n=>n.L===p.L+1);
56
+ p.target = next[(Math.random()*next.length)|0];
57
+ }
58
+ p.t += 0.04;
59
+ const a = p.node, b = p.target;
60
+ const x = a.x + (b.x-a.x)*Math.min(1,p.t);
61
+ const y = a.y + (b.y-a.y)*Math.min(1,p.t);
62
+ ctx.fillStyle = ac2;
63
+ ctx.beginPath(); ctx.arc(x,y,4,0,Math.PI*2); ctx.fill();
64
+ if (p.t >= 1){ p.node = b; p.target=null; p.L++; p.t=0; }
65
+ }
66
+ for (const n of nodes){
67
+ ctx.fillStyle = ac;
68
+ ctx.beginPath(); ctx.arc(n.x,n.y,6,0,Math.PI*2); ctx.fill();
69
+ ctx.strokeStyle = ac2; ctx.lineWidth=1.5;
70
+ ctx.beginPath(); ctx.arc(n.x,n.y,8,0,Math.PI*2); ctx.stroke();
71
+ }
72
+ });
73
+ return { stop(){ stop(); k.destroy(); } };
74
+ };
75
+ })();
@@ -0,0 +1,38 @@
1
+ (function(){
2
+ window.HPX = window.HPX || {};
3
+ window.HPX['orbit-ring'] = function(el){
4
+ const U = window.HPX._u;
5
+ const k = U.canvas(el), ctx = k.ctx;
6
+ const pal = U.palette(el);
7
+ const rings = [
8
+ {r:40, n:3, sp:1.2, c:pal[0]},
9
+ {r:75, n:5, sp:0.8, c:pal[1]},
10
+ {r:110, n:8, sp:-0.6, c:pal[2]},
11
+ {r:145, n:12, sp:0.4, c:pal[3]},
12
+ {r:180, n:16, sp:-0.3, c:pal[4]}
13
+ ];
14
+ const stop = U.loop((t) => {
15
+ ctx.clearRect(0,0,k.w,k.h);
16
+ const cx=k.w/2, cy=k.h/2;
17
+ // radial glow
18
+ const g = ctx.createRadialGradient(cx,cy,0,cx,cy,210);
19
+ g.addColorStop(0,'rgba(124,92,255,0.25)');
20
+ g.addColorStop(1,'rgba(0,0,0,0)');
21
+ ctx.fillStyle = g; ctx.fillRect(0,0,k.w,k.h);
22
+ for (const R of rings){
23
+ ctx.strokeStyle = 'rgba(200,200,230,0.2)'; ctx.lineWidth=1;
24
+ ctx.beginPath(); ctx.arc(cx,cy,R.r,0,Math.PI*2); ctx.stroke();
25
+ for (let i=0;i<R.n;i++){
26
+ const a = (i/R.n)*Math.PI*2 + t*R.sp;
27
+ const x = cx + Math.cos(a)*R.r;
28
+ const y = cy + Math.sin(a)*R.r;
29
+ ctx.fillStyle = R.c;
30
+ ctx.beginPath(); ctx.arc(x,y,4,0,Math.PI*2); ctx.fill();
31
+ }
32
+ }
33
+ ctx.fillStyle = '#fff';
34
+ ctx.beginPath(); ctx.arc(cx,cy,5,0,Math.PI*2); ctx.fill();
35
+ });
36
+ return { stop(){ stop(); k.destroy(); } };
37
+ };
38
+ })();
@@ -0,0 +1,42 @@
1
+ (function(){
2
+ window.HPX = window.HPX || {};
3
+ window.HPX['particle-burst'] = function(el){
4
+ const U = window.HPX._u;
5
+ const k = U.canvas(el), ctx = k.ctx;
6
+ const pal = U.palette(el);
7
+ let parts = [];
8
+ const spawn = () => {
9
+ const cx = k.w/2, cy = k.h/2;
10
+ const n = 90;
11
+ for (let i=0;i<n;i++){
12
+ const a = Math.random()*Math.PI*2;
13
+ const s = U.rand(80, 260);
14
+ parts.push({
15
+ x: cx, y: cy,
16
+ vx: Math.cos(a)*s, vy: Math.sin(a)*s,
17
+ life: 1, r: U.rand(2,5),
18
+ c: pal[(Math.random()*pal.length)|0]
19
+ });
20
+ }
21
+ };
22
+ spawn();
23
+ let lastSpawn = 0;
24
+ const stop = U.loop((t) => {
25
+ ctx.clearRect(0,0,k.w,k.h);
26
+ if (t - lastSpawn > 2.5) { spawn(); lastSpawn = t; }
27
+ const dt = 1/60;
28
+ parts = parts.filter(p => p.life > 0);
29
+ for (const p of parts){
30
+ p.vy += 220*dt;
31
+ p.vx *= 0.985; p.vy *= 0.985;
32
+ p.x += p.vx*dt; p.y += p.vy*dt;
33
+ p.life -= 0.012;
34
+ ctx.globalAlpha = Math.max(0, p.life);
35
+ ctx.fillStyle = p.c;
36
+ ctx.beginPath(); ctx.arc(p.x, p.y, p.r, 0, Math.PI*2); ctx.fill();
37
+ }
38
+ ctx.globalAlpha = 1;
39
+ });
40
+ return { stop(){ stop(); k.destroy(); } };
41
+ };
42
+ })();
@@ -0,0 +1,39 @@
1
+ (function(){
2
+ window.HPX = window.HPX || {};
3
+ window.HPX['shockwave'] = function(el){
4
+ const U = window.HPX._u;
5
+ const k = U.canvas(el), ctx = k.ctx;
6
+ const ac = U.accent(el,'#7c5cff'), ac2 = U.accent2(el,'#22d3ee');
7
+ let waves = [];
8
+ let last = -1;
9
+ const stop = U.loop((t) => {
10
+ ctx.fillStyle = 'rgba(0,0,0,0.12)';
11
+ ctx.fillRect(0,0,k.w,k.h);
12
+ if (t - last > 0.6){ last = t; waves.push({t:0}); }
13
+ const cx=k.w/2, cy=k.h/2;
14
+ const max = Math.hypot(k.w,k.h)/2;
15
+ waves = waves.filter(w => w.t < 1);
16
+ for (const w of waves){
17
+ w.t += 0.012;
18
+ const r = w.t * max;
19
+ const alpha = 1 - w.t;
20
+ ctx.strokeStyle = w.t<0.5?ac2:ac;
21
+ ctx.globalAlpha = alpha;
22
+ ctx.lineWidth = 3 + (1-w.t)*3;
23
+ ctx.beginPath(); ctx.arc(cx,cy,r,0,Math.PI*2); ctx.stroke();
24
+ ctx.strokeStyle = '#fff';
25
+ ctx.lineWidth = 1;
26
+ ctx.globalAlpha = alpha*0.4;
27
+ ctx.beginPath(); ctx.arc(cx,cy,r*0.92,0,Math.PI*2); ctx.stroke();
28
+ }
29
+ ctx.globalAlpha = 1;
30
+ // core
31
+ const g = ctx.createRadialGradient(cx,cy,0,cx,cy,40);
32
+ g.addColorStop(0,'rgba(255,255,255,0.9)');
33
+ g.addColorStop(1,'rgba(124,92,255,0)');
34
+ ctx.fillStyle = g;
35
+ ctx.beginPath(); ctx.arc(cx,cy,40,0,Math.PI*2); ctx.fill();
36
+ });
37
+ return { stop(){ stop(); k.destroy(); } };
38
+ };
39
+ })();
@@ -0,0 +1,62 @@
1
+ (function(){
2
+ window.HPX = window.HPX || {};
3
+ window.HPX['sparkle-trail'] = function(el){
4
+ const U = window.HPX._u;
5
+ const k = U.canvas(el), ctx = k.ctx;
6
+ k.c.style.pointerEvents = 'none';
7
+ el.style.cursor = 'crosshair';
8
+ const pal = U.palette(el);
9
+ let sparks = [];
10
+ const onMove = (e) => {
11
+ const r = el.getBoundingClientRect();
12
+ const x = e.clientX - r.left, y = e.clientY - r.top;
13
+ for (let i=0;i<3;i++){
14
+ sparks.push({
15
+ x, y,
16
+ vx: U.rand(-60,60), vy: U.rand(-80,20),
17
+ life: 1, c: pal[(Math.random()*pal.length)|0],
18
+ r: U.rand(1.5,3.5)
19
+ });
20
+ }
21
+ };
22
+ // auto-wiggle if no mouse moves
23
+ let auto = true, autoT = 0;
24
+ const onAny = () => { auto = false; };
25
+ el.addEventListener('pointermove', onMove);
26
+ el.addEventListener('pointerenter', onAny);
27
+ const stop = U.loop(() => {
28
+ ctx.fillStyle = 'rgba(0,0,0,0.15)';
29
+ ctx.fillRect(0,0,k.w,k.h);
30
+ if (auto){
31
+ autoT += 0.04;
32
+ const x = k.w/2 + Math.cos(autoT)*k.w*0.3;
33
+ const y = k.h/2 + Math.sin(autoT*1.3)*k.h*0.3;
34
+ for (let i=0;i<3;i++){
35
+ sparks.push({
36
+ x, y,
37
+ vx: U.rand(-60,60), vy: U.rand(-80,20),
38
+ life: 1, c: pal[(Math.random()*pal.length)|0],
39
+ r: U.rand(1.5,3.5)
40
+ });
41
+ }
42
+ }
43
+ const dt = 1/60;
44
+ sparks = sparks.filter(s => s.life > 0);
45
+ for (const s of sparks){
46
+ s.vy += 160*dt;
47
+ s.x += s.vx*dt; s.y += s.vy*dt;
48
+ s.life -= 0.018;
49
+ ctx.globalAlpha = Math.max(0, s.life);
50
+ ctx.fillStyle = s.c;
51
+ ctx.beginPath(); ctx.arc(s.x,s.y,s.r,0,Math.PI*2); ctx.fill();
52
+ }
53
+ ctx.globalAlpha = 1;
54
+ });
55
+ return { stop(){
56
+ el.removeEventListener('pointermove', onMove);
57
+ el.removeEventListener('pointerenter', onAny);
58
+ el.style.cursor = '';
59
+ stop(); k.destroy();
60
+ }};
61
+ };
62
+ })();
@@ -0,0 +1,30 @@
1
+ (function(){
2
+ window.HPX = window.HPX || {};
3
+ window.HPX['starfield'] = function(el){
4
+ const U = window.HPX._u;
5
+ const k = U.canvas(el), ctx = k.ctx;
6
+ const tx = U.text(el, '#ffffff');
7
+ const N = 260;
8
+ const stars = Array.from({length:N}, () => ({
9
+ x: U.rand(-1,1), y: U.rand(-1,1), z: Math.random()
10
+ }));
11
+ const stop = U.loop(() => {
12
+ ctx.fillStyle = 'rgba(0,0,0,0.25)';
13
+ ctx.fillRect(0,0,k.w,k.h);
14
+ const cx = k.w/2, cy = k.h/2;
15
+ for (const s of stars){
16
+ s.z -= 0.006;
17
+ if (s.z <= 0.02) { s.x = U.rand(-1,1); s.y = U.rand(-1,1); s.z = 1; }
18
+ const px = cx + (s.x/s.z)*cx;
19
+ const py = cy + (s.y/s.z)*cy;
20
+ if (px<0||py<0||px>k.w||py>k.h) continue;
21
+ const r = (1-s.z)*2.4;
22
+ ctx.globalAlpha = 1-s.z;
23
+ ctx.fillStyle = tx;
24
+ ctx.beginPath(); ctx.arc(px,py,r,0,Math.PI*2); ctx.fill();
25
+ }
26
+ ctx.globalAlpha = 1;
27
+ });
28
+ return { stop(){ stop(); k.destroy(); } };
29
+ };
30
+ })();
@@ -0,0 +1,51 @@
1
+ (function(){
2
+ window.HPX = window.HPX || {};
3
+ window.HPX['typewriter-multi'] = function(el){
4
+ if (getComputedStyle(el).position === 'static') el.style.position = 'relative';
5
+ const lines = [
6
+ (el.getAttribute('data-fx-line1') || '> initializing knowledge graph...'),
7
+ (el.getAttribute('data-fx-line2') || '> loading 28 concept nodes'),
8
+ (el.getAttribute('data-fx-line3') || '> agent ready. awaiting prompt_'),
9
+ ];
10
+ const wrap = document.createElement('div');
11
+ wrap.style.cssText = 'position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;gap:14px;padding:32px 48px;font:600 22px ui-monospace,Menlo,monospace;color:var(--text-1,#e7e7ef);';
12
+ el.appendChild(wrap);
13
+ const rows = lines.map((txt) => {
14
+ const row = document.createElement('div');
15
+ row.style.cssText = 'white-space:pre;display:flex;align-items:center;';
16
+ const span = document.createElement('span'); span.textContent = '';
17
+ const cur = document.createElement('span');
18
+ cur.textContent = '\u2588';
19
+ cur.style.cssText = 'display:inline-block;margin-left:2px;color:var(--accent,#22d3ee);animation:hpxBlink 1s steps(2) infinite;';
20
+ row.appendChild(span); row.appendChild(cur);
21
+ wrap.appendChild(row);
22
+ return {row, span, txt, i:0};
23
+ });
24
+ // inject blink keyframes once
25
+ if (!document.getElementById('hpx-blink-kf')){
26
+ const st = document.createElement('style');
27
+ st.id = 'hpx-blink-kf';
28
+ st.textContent = '@keyframes hpxBlink{50%{opacity:0}}';
29
+ document.head.appendChild(st);
30
+ }
31
+ let stopped = false;
32
+ const speeds = [55, 70, 45];
33
+ rows.forEach((r, idx) => {
34
+ const tick = () => {
35
+ if (stopped) return;
36
+ if (r.i < r.txt.length){
37
+ r.span.textContent += r.txt[r.i++];
38
+ setTimeout(tick, speeds[idx]);
39
+ } else {
40
+ setTimeout(() => {
41
+ if (stopped) return;
42
+ r.i = 0; r.span.textContent = '';
43
+ tick();
44
+ }, 2200);
45
+ }
46
+ };
47
+ setTimeout(tick, idx*400);
48
+ });
49
+ return { stop(){ stopped = true; if (wrap.parentNode) wrap.parentNode.removeChild(wrap); } };
50
+ };
51
+ })();
@@ -0,0 +1,47 @@
1
+ (function(){
2
+ window.HPX = window.HPX || {};
3
+ window.HPX['word-cascade'] = function(el){
4
+ const U = window.HPX._u;
5
+ const k = U.canvas(el), ctx = k.ctx;
6
+ const pal = U.palette(el);
7
+ const WORDS = ['AI','知识','Graph','Claude','LLM','Agent','Vector','RAG','Token','神经',
8
+ 'Prompt','Chain','Skill','Code','Cloud','GPU','Flow','推理','Data','Model'];
9
+ let items = [];
10
+ let last = -1;
11
+ let piles = {}; // column -> stack height
12
+ const stop = U.loop((t) => {
13
+ ctx.clearRect(0,0,k.w,k.h);
14
+ if (t - last > 0.18){
15
+ last = t;
16
+ const w = WORDS[(Math.random()*WORDS.length)|0];
17
+ items.push({
18
+ text: w, x: U.rand(40, k.w-40), y: -20,
19
+ vy: 0, c: pal[(Math.random()*pal.length)|0],
20
+ size: U.rand(16,26), landed: false
21
+ });
22
+ }
23
+ ctx.textAlign='center'; ctx.textBaseline='middle';
24
+ for (const it of items){
25
+ if (!it.landed){
26
+ it.vy += 0.4;
27
+ it.y += it.vy;
28
+ const col = Math.round(it.x/60);
29
+ const floor = k.h - (piles[col]||0) - it.size*0.6;
30
+ if (it.y >= floor){
31
+ it.y = floor; it.landed = true;
32
+ piles[col] = (piles[col]||0) + it.size*1.1;
33
+ if ((piles[col]||0) > k.h*0.8) piles[col] = 0; // reset if too high
34
+ }
35
+ }
36
+ ctx.fillStyle = it.c;
37
+ ctx.font = `700 ${it.size}px system-ui,sans-serif`;
38
+ ctx.fillText(it.text, it.x, it.y);
39
+ }
40
+ // prune old landed
41
+ if (items.length > 120){
42
+ items = items.filter(i => !i.landed).concat(items.filter(i=>i.landed).slice(-60));
43
+ }
44
+ });
45
+ return { stop(){ stop(); k.destroy(); } };
46
+ };
47
+ })();
@@ -0,0 +1,99 @@
1
+ /* html-ppt :: fx-runtime.js
2
+ * Canvas FX autoloader + lifecycle manager.
3
+ * - Dynamically loads all fx modules listed in FX_LIST
4
+ * - Initializes [data-fx] elements when their slide becomes active
5
+ * - Calls handle.stop() when the slide leaves
6
+ */
7
+ (function(){
8
+ 'use strict';
9
+
10
+ const FX_LIST = [
11
+ '_util',
12
+ 'particle-burst','confetti-cannon','firework','starfield','matrix-rain',
13
+ 'knowledge-graph','neural-net','constellation','orbit-ring','galaxy-swirl',
14
+ 'word-cascade','letter-explode','chain-react','magnetic-field','data-stream',
15
+ 'gradient-blob','sparkle-trail','shockwave','typewriter-multi','counter-explosion'
16
+ ];
17
+
18
+ // Resolve base path of this script so it works from any page location.
19
+ const myScript = document.currentScript || (function(){
20
+ const all = document.getElementsByTagName('script');
21
+ for (const s of all){ if (s.src && s.src.indexOf('fx-runtime.js')>-1) return s; }
22
+ return null;
23
+ })();
24
+ const base = myScript ? myScript.src.replace(/fx-runtime\.js.*$/, 'fx/') : 'assets/animations/fx/';
25
+
26
+ let loaded = 0;
27
+ const total = FX_LIST.length;
28
+ const ready = new Promise((resolve) => {
29
+ if (!total) return resolve();
30
+ FX_LIST.forEach((name) => {
31
+ const s = document.createElement('script');
32
+ s.src = base + name + '.js';
33
+ s.async = false;
34
+ s.onload = s.onerror = () => { if (++loaded >= total) resolve(); };
35
+ document.head.appendChild(s);
36
+ });
37
+ });
38
+
39
+ window.__hpxActive = window.__hpxActive || new Map();
40
+
41
+ function initFxIn(root){
42
+ if (!window.HPX) return;
43
+ const els = root.querySelectorAll('[data-fx]');
44
+ els.forEach((el) => {
45
+ if (window.__hpxActive.has(el)) return;
46
+ const name = el.getAttribute('data-fx');
47
+ const fn = window.HPX[name];
48
+ if (typeof fn !== 'function') return;
49
+ try {
50
+ const handle = fn(el, {}) || { stop(){} };
51
+ window.__hpxActive.set(el, handle);
52
+ } catch(e){ console.warn('[hpx-fx]', name, e); }
53
+ });
54
+ }
55
+
56
+ function stopFxIn(root){
57
+ const els = root.querySelectorAll('[data-fx]');
58
+ els.forEach((el) => {
59
+ const h = window.__hpxActive.get(el);
60
+ if (h && typeof h.stop === 'function'){
61
+ try{ h.stop(); }catch(e){}
62
+ }
63
+ window.__hpxActive.delete(el);
64
+ });
65
+ }
66
+
67
+ function reinitFxIn(root){
68
+ stopFxIn(root);
69
+ initFxIn(root);
70
+ }
71
+ window.__hpxReinit = reinitFxIn;
72
+
73
+ function boot(){
74
+ ready.then(() => {
75
+ const active = document.querySelector('.slide.is-active') || document.querySelector('.slide');
76
+ if (active) initFxIn(active);
77
+
78
+ // Watch all slides for class changes
79
+ const slides = document.querySelectorAll('.slide');
80
+ slides.forEach((sl) => {
81
+ const mo = new MutationObserver((muts) => {
82
+ for (const m of muts){
83
+ if (m.attributeName === 'class'){
84
+ if (sl.classList.contains('is-active')) initFxIn(sl);
85
+ else stopFxIn(sl);
86
+ }
87
+ }
88
+ });
89
+ mo.observe(sl, { attributes: true, attributeFilter: ['class'] });
90
+ });
91
+ });
92
+ }
93
+
94
+ if (document.readyState === 'loading'){
95
+ document.addEventListener('DOMContentLoaded', boot);
96
+ } else {
97
+ boot();
98
+ }
99
+ })();
@@ -0,0 +1,150 @@
1
+ /* html-ppt :: base.css — reset + shared tokens + layout primitives */
2
+ /* Default tokens. Themes in assets/themes/*.css override the :root block. */
3
+ :root {
4
+ --bg: #ffffff;
5
+ --bg-soft: #f7f7f8;
6
+ --surface: #ffffff;
7
+ --surface-2: #f2f2f4;
8
+ --border: rgba(0,0,0,.08);
9
+ --border-strong: rgba(0,0,0,.16);
10
+ --text-1: #111216;
11
+ --text-2: #55596a;
12
+ --text-3: #8a8f9e;
13
+ --accent: #3b6cff;
14
+ --accent-2: #7a5cff;
15
+ --accent-3: #ff5c8a;
16
+ --good: #1aaf6c;
17
+ --warn: #f5a524;
18
+ --bad: #e0445a;
19
+ --grad: linear-gradient(135deg,#3b6cff,#7a5cff 55%,#ff5c8a);
20
+ --grad-soft: linear-gradient(135deg,#eef2ff,#f5ecff 55%,#ffeef5);
21
+ --radius: 18px;
22
+ --radius-sm: 12px;
23
+ --radius-lg: 26px;
24
+ --shadow: 0 10px 30px rgba(18,24,40,.08), 0 2px 6px rgba(18,24,40,.04);
25
+ --shadow-lg: 0 24px 60px rgba(18,24,40,.14), 0 6px 16px rgba(18,24,40,.06);
26
+ --font-sans: 'Inter','Noto Sans SC',-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;
27
+ --font-serif: 'Playfair Display','Noto Serif SC',Georgia,serif;
28
+ --font-mono: 'JetBrains Mono','IBM Plex Mono',SFMono-Regular,Menlo,monospace;
29
+ --font-display: var(--font-sans);
30
+ --letter-tight: -.03em;
31
+ --letter-normal: -.01em;
32
+ --ease: cubic-bezier(.4,0,.2,1);
33
+ }
34
+
35
+ *,*::before,*::after{box-sizing:border-box}
36
+ html,body{margin:0;padding:0;background:var(--bg);color:var(--text-1);
37
+ font-family:var(--font-sans);font-weight:400;line-height:1.6;
38
+ -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
39
+ letter-spacing:var(--letter-normal)}
40
+ img,svg,video{max-width:100%;display:block}
41
+ a{color:var(--accent);text-decoration:none}
42
+ a:hover{text-decoration:underline}
43
+ code,kbd,pre,samp{font-family:var(--font-mono)}
44
+
45
+ /* ================= SLIDE SYSTEM ================= */
46
+ .deck{position:relative;width:100vw;height:100vh;overflow:hidden;background:var(--bg)}
47
+ .slide{
48
+ position:absolute;inset:0;
49
+ display:flex;flex-direction:column;justify-content:center;
50
+ padding:72px 96px;
51
+ box-sizing:border-box;
52
+ opacity:0;pointer-events:none;
53
+ transition:opacity .5s var(--ease), transform .5s var(--ease);
54
+ transform:translateX(30px);
55
+ overflow:hidden;
56
+ }
57
+ .slide.is-active{opacity:1;pointer-events:auto;transform:translateX(0);z-index:2}
58
+ .slide.is-prev{transform:translateX(-30px)}
59
+
60
+ /* single-page standalone (used when a layout file is opened directly) */
61
+ body.single .slide{position:relative;width:100vw;height:100vh;opacity:1;transform:none;pointer-events:auto}
62
+
63
+ /* ================= TYPOGRAPHY ================= */
64
+ .eyebrow{font-size:13px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--text-3)}
65
+ .kicker{font-size:14px;font-weight:600;color:var(--accent);letter-spacing:.08em;text-transform:uppercase}
66
+ h1.title,.h1{font-family:var(--font-display);font-size:72px;line-height:1.05;font-weight:800;letter-spacing:var(--letter-tight);margin:0 0 18px;color:var(--text-1)}
67
+ h2.title,.h2{font-family:var(--font-display);font-size:54px;line-height:1.1;font-weight:700;letter-spacing:var(--letter-tight);margin:0 0 14px}
68
+ h3,.h3{font-size:32px;line-height:1.2;font-weight:600;letter-spacing:var(--letter-normal);margin:0 0 10px}
69
+ h4,.h4{font-size:22px;line-height:1.3;font-weight:600;margin:0 0 8px}
70
+ .lede{font-size:22px;line-height:1.55;color:var(--text-2);font-weight:300;max-width:62ch}
71
+ .dim{color:var(--text-2)}
72
+ .dim2{color:var(--text-3)}
73
+ .mono{font-family:var(--font-mono)}
74
+ .serif{font-family:var(--font-serif)}
75
+ .gradient-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
76
+
77
+ /* ================= LAYOUT PRIMITIVES ================= */
78
+ .stack>*+*{margin-top:14px}
79
+ .row{display:flex;gap:24px;align-items:center}
80
+ .row.wrap{flex-wrap:wrap}
81
+ .grid{display:grid;gap:24px}
82
+ .g2{grid-template-columns:repeat(2,1fr)}
83
+ .g3{grid-template-columns:repeat(3,1fr)}
84
+ .g4{grid-template-columns:repeat(4,1fr)}
85
+ .center{display:flex;align-items:center;justify-content:center;text-align:center}
86
+ .fill{flex:1}
87
+ .sp-t{padding-top:24px}.sp-b{padding-bottom:24px}
88
+ .mt-s{margin-top:8px}.mt-m{margin-top:18px}.mt-l{margin-top:32px}
89
+ .mb-s{margin-bottom:8px}.mb-m{margin-bottom:18px}.mb-l{margin-bottom:32px}
90
+
91
+ /* ================= CARDS ================= */
92
+ .card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
93
+ padding:26px 28px;box-shadow:var(--shadow);position:relative;overflow:hidden}
94
+ .card-soft{background:var(--surface-2);border:1px solid var(--border)}
95
+ .card-outline{background:transparent;border:1.5px solid var(--border-strong);box-shadow:none}
96
+ .card-accent{background:var(--surface);border-top:3px solid var(--accent)}
97
+ .card-hover{transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
98
+ .card-hover:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
99
+
100
+ .pill{display:inline-block;padding:4px 12px;border-radius:999px;font-size:12px;font-weight:500;
101
+ background:var(--surface-2);color:var(--text-2);border:1px solid var(--border)}
102
+ .pill-accent{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 28%,transparent)}
103
+
104
+ /* ================= BARS / DIVIDERS ================= */
105
+ .divider{height:1px;background:var(--border);width:100%}
106
+ .divider-accent{height:3px;width:72px;background:var(--accent);border-radius:2px}
107
+
108
+ /* ================= CHROME (header/footer/progress) ================= */
109
+ .deck-header{position:absolute;top:24px;left:40px;right:40px;display:flex;align-items:center;justify-content:space-between;
110
+ font-size:12px;color:var(--text-3);letter-spacing:.12em;text-transform:uppercase;z-index:10;pointer-events:none}
111
+ .deck-footer{position:absolute;bottom:24px;left:40px;right:40px;display:flex;align-items:center;justify-content:space-between;
112
+ font-size:12px;color:var(--text-3);z-index:10;pointer-events:none}
113
+ .slide-number::before{content:attr(data-current)}
114
+ .slide-number::after{content:" / " attr(data-total)}
115
+ .progress-bar{position:fixed;left:0;right:0;bottom:0;height:3px;background:transparent;z-index:20}
116
+ .progress-bar > span{display:block;height:100%;width:0;background:var(--accent);transition:width .3s var(--ease)}
117
+
118
+ /* ================= PRESENTER / OVERVIEW ================= */
119
+ .notes{display:none!important}
120
+ .notes-overlay{position:fixed;inset:auto 0 0 0;max-height:42vh;background:rgba(20,22,30,.95);color:#e8ebf4;
121
+ padding:20px 32px;font-size:16px;line-height:1.6;border-top:1px solid rgba(255,255,255,.1);transform:translateY(100%);
122
+ transition:transform .3s var(--ease);z-index:40;overflow:auto;font-family:var(--font-sans)}
123
+ .notes-overlay.open{transform:translateY(0)}
124
+ .overview{position:fixed;inset:0;background:rgba(10,12,18,.92);backdrop-filter:blur(12px);z-index:50;
125
+ display:none;padding:40px;overflow:auto}
126
+ .overview.open{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;align-content:start}
127
+ .overview .thumb{background:var(--surface);border:1px solid var(--border);border-radius:12px;
128
+ aspect-ratio:16/9;overflow:hidden;cursor:pointer;position:relative;color:var(--text-1);padding:16px;
129
+ font-size:11px;transition:transform .2s var(--ease)}
130
+ .overview .thumb:hover{transform:scale(1.04)}
131
+ .overview .thumb .n{position:absolute;top:8px;left:10px;font-weight:700;font-size:14px;color:var(--text-3)}
132
+ .overview .thumb .t{position:absolute;bottom:10px;left:14px;right:14px;font-weight:600;color:var(--text-1)}
133
+
134
+ /* ================= PRESENTER VIEW ================= */
135
+ /* Presenter view opens in a separate popup window (S key).
136
+ * All presenter styles are self-contained in the popup HTML generated by runtime.js.
137
+ * The audience window (this file) is NOT affected — it stays as normal deck view.
138
+ * Only the .notes class below is needed to hide speaker notes from audience. */
139
+
140
+ /* ================= UTILITY ================= */
141
+ .hidden{display:none!important}
142
+ .nowrap{white-space:nowrap}
143
+ .tr{text-align:right}.tc{text-align:center}.tl{text-align:left}
144
+ .uppercase{text-transform:uppercase;letter-spacing:.12em}
145
+
146
+ /* ================= PRINT ================= */
147
+ @media print{
148
+ .slide{position:relative;opacity:1!important;transform:none!important;page-break-after:always;height:100vh}
149
+ .deck-header,.deck-footer,.progress-bar,.notes-overlay,.overview{display:none!important}
150
+ }
@@ -0,0 +1,9 @@
1
+ /* html-ppt :: shared webfonts */
2
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;500;600;700;800;900&display=swap');
3
+ @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@200;300;400;500;600;700;900&display=swap');
4
+ @import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@300;400;600;700&display=swap');
5
+ @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap');
6
+ @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,800;1,400&display=swap');
7
+ @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap');
8
+ @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500;700&display=swap');
9
+ @import url('https://fonts.googleapis.com/css2?family=Archivo+Black&display=swap');