@hiai-gg/hiai-opencode 0.2.0 → 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 (490) hide show
  1. package/.env.example +4 -0
  2. package/AGENTS.md +40 -44
  3. package/ARCHITECTURE.md +4 -3
  4. package/LICENSE.md +14 -0
  5. package/README.md +61 -30
  6. package/assets/cli/hiai-opencode.mjs +4 -4
  7. package/config/hiai-opencode.schema.json +11 -13
  8. package/dist/agents/{bob.d.ts → bob/claude.d.ts} +6 -2
  9. package/dist/agents/bob/core.d.ts +6 -0
  10. package/dist/agents/bob/gpt.d.ts +11 -0
  11. package/dist/agents/bob/index.d.ts +3 -0
  12. package/dist/agents/coder/core.d.ts +4 -0
  13. package/dist/agents/coder/gpt.d.ts +1 -4
  14. package/dist/agents/coder/index.d.ts +1 -0
  15. package/dist/agents/manager/agent.d.ts +1 -1
  16. package/dist/agents/manager/default-prompt-sections.d.ts +4 -4
  17. package/dist/agents/manager/guard-integration.d.ts +1 -0
  18. package/dist/agents/prompt-library/index.d.ts +0 -1
  19. package/dist/agents/prompt-library/shared-execution.d.ts +9 -0
  20. package/dist/agents/strategist/behavioral-summary.d.ts +1 -1
  21. package/dist/agents/strategist/identity-constraints.d.ts +1 -1
  22. package/dist/agents/strategist/plan-generation.d.ts +1 -1
  23. package/dist/agents/types.d.ts +2 -1
  24. package/dist/config/defaults.d.ts +1 -0
  25. package/dist/config/platform-schema.d.ts +26 -26
  26. package/dist/config/schema/agent-names.d.ts +6 -6
  27. package/dist/config/schema/agent-overrides.d.ts +0 -128
  28. package/dist/config/schema/hiai-opencode-config.d.ts +0 -128
  29. package/dist/config/types.d.ts +2 -2
  30. package/dist/features/background-agent/error-classifier.d.ts +1 -0
  31. package/dist/features/background-agent/manager-notifier.d.ts +46 -0
  32. package/dist/features/background-agent/manager-types.d.ts +40 -0
  33. package/dist/features/background-agent/manager.d.ts +3 -19
  34. package/dist/features/background-agent/polling-manager.d.ts +51 -0
  35. package/dist/features/boulder-state/constants.d.ts +3 -0
  36. package/dist/features/boulder-state/storage.d.ts +95 -0
  37. package/dist/features/boulder-state/types.d.ts +17 -0
  38. package/dist/features/builtin-commands/templates/doctor.d.ts +1 -1
  39. package/dist/features/builtin-commands/templates/loop.d.ts +2 -0
  40. package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
  41. package/dist/features/builtin-skills/skills/interview-me.d.ts +2 -0
  42. package/dist/features/builtin-skills/skills/planning-and-task-breakdown.d.ts +2 -0
  43. package/dist/hooks/manager/resolve-active-boulder-session.d.ts +5 -0
  44. package/dist/hooks/manager/system-reminder-templates.d.ts +2 -2
  45. package/dist/hooks/reasoning-content-cache/hook.d.ts +11 -0
  46. package/dist/hooks/reasoning-content-cache/index.d.ts +1 -0
  47. package/dist/hooks/session-recovery/checkpoint.d.ts +48 -0
  48. package/dist/hooks/session-recovery/enhanced-hook.d.ts +30 -0
  49. package/dist/hooks/session-recovery/state-backup.d.ts +76 -0
  50. package/dist/hooks/shared/compaction-in-progress.d.ts +4 -0
  51. package/dist/hooks/start-work/context-info-builder.d.ts +2 -0
  52. package/dist/hooks/start-work/git-operations.d.ts +47 -0
  53. package/dist/hooks/start-work/worktree-block.d.ts +2 -1
  54. package/dist/hooks/start-work/worktree-detector.d.ts +45 -0
  55. package/dist/hooks/strategist-md-only/agent-resolution.d.ts +1 -1
  56. package/dist/hooks/strategist-md-only/constants.d.ts +6 -0
  57. package/dist/hooks/token-budget.d.ts +30 -0
  58. package/dist/index.js +1275 -1132
  59. package/dist/mcp/rate-limiter.d.ts +68 -0
  60. package/dist/plugin/chat-message.d.ts +8 -0
  61. package/dist/plugin/command-execute-before.d.ts +1 -1
  62. package/dist/plugin/event-handlers/message-updated.d.ts +2 -0
  63. package/dist/plugin/event-handlers/session-error.d.ts +2 -0
  64. package/dist/plugin/event-handlers/session-status.d.ts +2 -0
  65. package/dist/plugin/event-handlers/types.d.ts +62 -0
  66. package/dist/plugin/event-handlers/utils.d.ts +11 -0
  67. package/dist/plugin/event.d.ts +1 -1
  68. package/dist/shared/data-path.d.ts +1 -1
  69. package/dist/shared/errors.d.ts +70 -0
  70. package/dist/shared/extract-session-id.d.ts +8 -0
  71. package/dist/shared/git-worktree/get-git-state-summary.d.ts +14 -0
  72. package/dist/shared/index.d.ts +67 -68
  73. package/dist/shared/internal-initiator-marker.d.ts +1 -1
  74. package/dist/shared/logger.d.ts +5 -1
  75. package/dist/shared/reasoning-content-cache.d.ts +68 -0
  76. package/dist/shared/safe-create-hook.d.ts +4 -4
  77. package/dist/tools/call-hiai-agent/constants.d.ts +2 -2
  78. package/dist/tools/delegate-task/sub-agent.d.ts +1 -1
  79. package/dist/tools/look-at/constants.d.ts +1 -1
  80. package/docs/architecture/bob-manager-architecture.md +244 -0
  81. package/docs/hiai-opencode/adr/ADR-001-agent-identity-section-injection.md +66 -0
  82. package/docs/hiai-opencode/adr/ADR-002-anti-loop-guard-priority.md +63 -0
  83. package/docs/hiai-opencode/adr/ADR-003-compaction-mechanism.md +71 -0
  84. package/docs/hiai-opencode/adr/ADR-004-session-recovery.md +76 -0
  85. package/docs/hiai-opencode/api.md +305 -0
  86. package/docs/hiai-opencode/hooks-architecture.md +225 -0
  87. package/docs/hiai-opencode/migration.md +209 -0
  88. package/docs/quickstart.md +1 -1
  89. package/docs/skill-discovery.md +288 -0
  90. package/package.json +2 -2
  91. package/skills/agent-browser/SKILL.md +193 -0
  92. package/skills/apple-hig/SKILL.md +43 -0
  93. package/skills/article-magazine/SKILL.md +46 -0
  94. package/skills/article-magazine/example.html +81 -0
  95. package/skills/article-magazine/example.md +38 -0
  96. package/skills/canvas-design/SKILL.md +45 -0
  97. package/skills/design-templates/audio-jingle/SKILL.md +132 -0
  98. package/skills/design-templates/audio-jingle/example.html +128 -0
  99. package/skills/design-templates/blog-post/SKILL.md +80 -0
  100. package/skills/design-templates/blog-post/example.html +80 -0
  101. package/skills/design-templates/clinical-case-report/SKILL.md +209 -0
  102. package/skills/design-templates/clinical-case-report/example.html +698 -0
  103. package/skills/design-templates/clinical-case-report/examples/example-stemi.html +698 -0
  104. package/skills/design-templates/clinical-case-report/references/case-formats.md +94 -0
  105. package/skills/design-templates/clinical-case-report/references/checklist.md +41 -0
  106. package/skills/design-templates/critique/SKILL.md +258 -0
  107. package/skills/design-templates/critique/example.html +671 -0
  108. package/skills/design-templates/dashboard/SKILL.md +76 -0
  109. package/skills/design-templates/dashboard/example.html +118 -0
  110. package/skills/design-templates/dating-web/SKILL.md +92 -0
  111. package/skills/design-templates/dating-web/example.html +265 -0
  112. package/skills/design-templates/dcf-valuation/SKILL.md +140 -0
  113. package/skills/design-templates/dcf-valuation/references/sector-wacc.md +42 -0
  114. package/skills/design-templates/digital-eguide/SKILL.md +94 -0
  115. package/skills/design-templates/digital-eguide/example.html +204 -0
  116. package/skills/design-templates/docs-page/SKILL.md +80 -0
  117. package/skills/design-templates/docs-page/example.html +122 -0
  118. package/skills/design-templates/email-marketing/SKILL.md +84 -0
  119. package/skills/design-templates/email-marketing/example.html +159 -0
  120. package/skills/design-templates/eng-runbook/SKILL.md +51 -0
  121. package/skills/design-templates/eng-runbook/example.html +250 -0
  122. package/skills/design-templates/finance-report/SKILL.md +61 -0
  123. package/skills/design-templates/finance-report/example.html +242 -0
  124. package/skills/design-templates/flowai-live-dashboard-template/SKILL.md +87 -0
  125. package/skills/design-templates/flowai-live-dashboard-template/assets/template.html +387 -0
  126. package/skills/design-templates/flowai-live-dashboard-template/example.html +13 -0
  127. package/skills/design-templates/flowai-live-dashboard-template/references/checklist.md +35 -0
  128. package/skills/design-templates/gamified-app/SKILL.md +108 -0
  129. package/skills/design-templates/gamified-app/example.html +292 -0
  130. package/skills/design-templates/github-dashboard/SKILL.md +130 -0
  131. package/skills/design-templates/github-dashboard/example.html +473 -0
  132. package/skills/design-templates/github-dashboard/references/README.md +10 -0
  133. package/skills/design-templates/github-dashboard/references/artifact-example.json +15 -0
  134. package/skills/design-templates/github-dashboard/references/example-data.json +138 -0
  135. package/skills/design-templates/github-dashboard/references/provenance-example.json +92 -0
  136. package/skills/design-templates/github-dashboard/references/template.html +473 -0
  137. package/skills/design-templates/guizang-ppt/LICENSE +21 -0
  138. package/skills/design-templates/guizang-ppt/README.en.md +119 -0
  139. package/skills/design-templates/guizang-ppt/README.md +120 -0
  140. package/skills/design-templates/guizang-ppt/README.pt-BR.md +121 -0
  141. package/skills/design-templates/guizang-ppt/SKILL.md +313 -0
  142. package/skills/design-templates/guizang-ppt/assets/example-slides.html +318 -0
  143. package/skills/design-templates/guizang-ppt/assets/template.html +647 -0
  144. package/skills/design-templates/guizang-ppt/references/checklist.md +265 -0
  145. package/skills/design-templates/guizang-ppt/references/components.md +363 -0
  146. package/skills/design-templates/guizang-ppt/references/layouts.md +630 -0
  147. package/skills/design-templates/guizang-ppt/references/styles.md +195 -0
  148. package/skills/design-templates/guizang-ppt/references/themes.md +122 -0
  149. package/skills/design-templates/hr-onboarding/SKILL.md +52 -0
  150. package/skills/design-templates/hr-onboarding/example.html +219 -0
  151. package/skills/design-templates/html-ppt/.clawscan-allow +12 -0
  152. package/skills/design-templates/html-ppt/LICENSE +21 -0
  153. package/skills/design-templates/html-ppt/README.md +234 -0
  154. package/skills/design-templates/html-ppt/README.pt-BR.md +239 -0
  155. package/skills/design-templates/html-ppt/README.zh-CN.md +238 -0
  156. package/skills/design-templates/html-ppt/SKILL.md +250 -0
  157. package/skills/design-templates/html-ppt/assets/animations/animations.css +138 -0
  158. package/skills/design-templates/html-ppt/assets/animations/fx/_util.js +63 -0
  159. package/skills/design-templates/html-ppt/assets/animations/fx/chain-react.js +41 -0
  160. package/skills/design-templates/html-ppt/assets/animations/fx/confetti-cannon.js +49 -0
  161. package/skills/design-templates/html-ppt/assets/animations/fx/constellation.js +44 -0
  162. package/skills/design-templates/html-ppt/assets/animations/fx/counter-explosion.js +58 -0
  163. package/skills/design-templates/html-ppt/assets/animations/fx/data-stream.js +45 -0
  164. package/skills/design-templates/html-ppt/assets/animations/fx/firework.js +51 -0
  165. package/skills/design-templates/html-ppt/assets/animations/fx/galaxy-swirl.js +33 -0
  166. package/skills/design-templates/html-ppt/assets/animations/fx/gradient-blob.js +39 -0
  167. package/skills/design-templates/html-ppt/assets/animations/fx/knowledge-graph.js +69 -0
  168. package/skills/design-templates/html-ppt/assets/animations/fx/letter-explode.js +50 -0
  169. package/skills/design-templates/html-ppt/assets/animations/fx/magnetic-field.js +40 -0
  170. package/skills/design-templates/html-ppt/assets/animations/fx/matrix-rain.js +33 -0
  171. package/skills/design-templates/html-ppt/assets/animations/fx/neural-net.js +75 -0
  172. package/skills/design-templates/html-ppt/assets/animations/fx/orbit-ring.js +38 -0
  173. package/skills/design-templates/html-ppt/assets/animations/fx/particle-burst.js +42 -0
  174. package/skills/design-templates/html-ppt/assets/animations/fx/shockwave.js +39 -0
  175. package/skills/design-templates/html-ppt/assets/animations/fx/sparkle-trail.js +62 -0
  176. package/skills/design-templates/html-ppt/assets/animations/fx/starfield.js +30 -0
  177. package/skills/design-templates/html-ppt/assets/animations/fx/typewriter-multi.js +51 -0
  178. package/skills/design-templates/html-ppt/assets/animations/fx/word-cascade.js +47 -0
  179. package/skills/design-templates/html-ppt/assets/animations/fx-runtime.js +99 -0
  180. package/skills/design-templates/html-ppt/assets/base.css +150 -0
  181. package/skills/design-templates/html-ppt/assets/fonts.css +9 -0
  182. package/skills/design-templates/html-ppt/assets/runtime.js +960 -0
  183. package/skills/design-templates/html-ppt/assets/themes/academic-paper.css +23 -0
  184. package/skills/design-templates/html-ppt/assets/themes/arctic-cool.css +14 -0
  185. package/skills/design-templates/html-ppt/assets/themes/aurora.css +20 -0
  186. package/skills/design-templates/html-ppt/assets/themes/bauhaus.css +16 -0
  187. package/skills/design-templates/html-ppt/assets/themes/blueprint.css +19 -0
  188. package/skills/design-templates/html-ppt/assets/themes/catppuccin-latte.css +14 -0
  189. package/skills/design-templates/html-ppt/assets/themes/catppuccin-mocha.css +14 -0
  190. package/skills/design-templates/html-ppt/assets/themes/corporate-clean.css +19 -0
  191. package/skills/design-templates/html-ppt/assets/themes/cyberpunk-neon.css +23 -0
  192. package/skills/design-templates/html-ppt/assets/themes/dracula.css +14 -0
  193. package/skills/design-templates/html-ppt/assets/themes/editorial-serif.css +18 -0
  194. package/skills/design-templates/html-ppt/assets/themes/engineering-whiteprint.css +26 -0
  195. package/skills/design-templates/html-ppt/assets/themes/glassmorphism.css +21 -0
  196. package/skills/design-templates/html-ppt/assets/themes/gruvbox-dark.css +14 -0
  197. package/skills/design-templates/html-ppt/assets/themes/japanese-minimal.css +21 -0
  198. package/skills/design-templates/html-ppt/assets/themes/magazine-bold.css +21 -0
  199. package/skills/design-templates/html-ppt/assets/themes/memphis-pop.css +20 -0
  200. package/skills/design-templates/html-ppt/assets/themes/midcentury.css +19 -0
  201. package/skills/design-templates/html-ppt/assets/themes/minimal-white.css +16 -0
  202. package/skills/design-templates/html-ppt/assets/themes/neo-brutalism.css +17 -0
  203. package/skills/design-templates/html-ppt/assets/themes/news-broadcast.css +20 -0
  204. package/skills/design-templates/html-ppt/assets/themes/nord.css +14 -0
  205. package/skills/design-templates/html-ppt/assets/themes/pitch-deck-vc.css +21 -0
  206. package/skills/design-templates/html-ppt/assets/themes/rainbow-gradient.css +16 -0
  207. package/skills/design-templates/html-ppt/assets/themes/retro-tv.css +22 -0
  208. package/skills/design-templates/html-ppt/assets/themes/rose-pine.css +14 -0
  209. package/skills/design-templates/html-ppt/assets/themes/sharp-mono.css +17 -0
  210. package/skills/design-templates/html-ppt/assets/themes/soft-pastel.css +14 -0
  211. package/skills/design-templates/html-ppt/assets/themes/solarized-light.css +14 -0
  212. package/skills/design-templates/html-ppt/assets/themes/sunset-warm.css +14 -0
  213. package/skills/design-templates/html-ppt/assets/themes/swiss-grid.css +17 -0
  214. package/skills/design-templates/html-ppt/assets/themes/terminal-green.css +18 -0
  215. package/skills/design-templates/html-ppt/assets/themes/tokyo-night.css +14 -0
  216. package/skills/design-templates/html-ppt/assets/themes/vaporwave.css +21 -0
  217. package/skills/design-templates/html-ppt/assets/themes/xiaohongshu-white.css +16 -0
  218. package/skills/design-templates/html-ppt/assets/themes/y2k-chrome.css +20 -0
  219. package/skills/design-templates/html-ppt/docs/readme/_theme-cell.html +56 -0
  220. package/skills/design-templates/html-ppt/docs/readme/animations.png +0 -0
  221. package/skills/design-templates/html-ppt/docs/readme/hero.gif +0 -0
  222. package/skills/design-templates/html-ppt/docs/readme/layouts-live.gif +0 -0
  223. package/skills/design-templates/html-ppt/docs/readme/layouts.png +0 -0
  224. package/skills/design-templates/html-ppt/docs/readme/montage-animations.html +61 -0
  225. package/skills/design-templates/html-ppt/docs/readme/montage-layouts.html +72 -0
  226. package/skills/design-templates/html-ppt/docs/readme/montage-templates.html +72 -0
  227. package/skills/design-templates/html-ppt/docs/readme/montage-themes.html +38 -0
  228. package/skills/design-templates/html-ppt/docs/readme/presenter-mode.png +0 -0
  229. package/skills/design-templates/html-ppt/docs/readme/templates.png +0 -0
  230. package/skills/design-templates/html-ppt/docs/readme/themes.png +0 -0
  231. package/skills/design-templates/html-ppt/examples/demo-deck/index.html +161 -0
  232. package/skills/design-templates/html-ppt/references/animations.md +147 -0
  233. package/skills/design-templates/html-ppt/references/authoring-guide.md +141 -0
  234. package/skills/design-templates/html-ppt/references/full-decks.md +98 -0
  235. package/skills/design-templates/html-ppt/references/layouts.md +103 -0
  236. package/skills/design-templates/html-ppt/references/presenter-mode.md +240 -0
  237. package/skills/design-templates/html-ppt/references/themes.md +107 -0
  238. package/skills/design-templates/html-ppt/scripts/new-deck.sh +46 -0
  239. package/skills/design-templates/html-ppt/scripts/render.sh +71 -0
  240. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_01.png +0 -0
  241. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_02.png +0 -0
  242. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_03.png +0 -0
  243. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_04.png +0 -0
  244. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_05.png +0 -0
  245. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_06.png +0 -0
  246. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_07.png +0 -0
  247. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_08.png +0 -0
  248. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_09.png +0 -0
  249. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_10.png +0 -0
  250. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_11.png +0 -0
  251. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_12.png +0 -0
  252. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_13.png +0 -0
  253. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_14.png +0 -0
  254. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_15.png +0 -0
  255. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_16.png +0 -0
  256. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_17.png +0 -0
  257. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_18.png +0 -0
  258. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_19.png +0 -0
  259. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_20.png +0 -0
  260. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_01.png +0 -0
  261. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_02.png +0 -0
  262. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_03.png +0 -0
  263. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_04.png +0 -0
  264. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_05.png +0 -0
  265. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_06.png +0 -0
  266. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_07.png +0 -0
  267. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_08.png +0 -0
  268. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_09.png +0 -0
  269. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_10.png +0 -0
  270. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_11.png +0 -0
  271. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_12.png +0 -0
  272. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_13.png +0 -0
  273. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_14.png +0 -0
  274. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_15.png +0 -0
  275. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_16.png +0 -0
  276. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_17.png +0 -0
  277. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_18.png +0 -0
  278. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_19.png +0 -0
  279. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_20.png +0 -0
  280. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_21.png +0 -0
  281. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_22.png +0 -0
  282. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_23.png +0 -0
  283. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_24.png +0 -0
  284. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_25.png +0 -0
  285. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_26.png +0 -0
  286. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_27.png +0 -0
  287. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_28.png +0 -0
  288. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_29.png +0 -0
  289. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_30.png +0 -0
  290. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_31.png +0 -0
  291. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_32.png +0 -0
  292. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_33.png +0 -0
  293. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_34.png +0 -0
  294. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_35.png +0 -0
  295. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_36.png +0 -0
  296. package/skills/design-templates/html-ppt/templates/animation-showcase.html +172 -0
  297. package/skills/design-templates/html-ppt/templates/deck.html +69 -0
  298. package/skills/design-templates/html-ppt/templates/full-decks/course-module/README.md +8 -0
  299. package/skills/design-templates/html-ppt/templates/full-decks/course-module/index.html +189 -0
  300. package/skills/design-templates/html-ppt/templates/full-decks/course-module/style.css +46 -0
  301. package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/README.md +11 -0
  302. package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/index.html +138 -0
  303. package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/style.css +60 -0
  304. package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/README.md +11 -0
  305. package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/index.html +180 -0
  306. package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/style.css +54 -0
  307. package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/README.md +11 -0
  308. package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/index.html +199 -0
  309. package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/style.css +55 -0
  310. package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/README.md +11 -0
  311. package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/index.html +190 -0
  312. package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/style.css +49 -0
  313. package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/README.md +11 -0
  314. package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/index.html +144 -0
  315. package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/style.css +59 -0
  316. package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/README.md +9 -0
  317. package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/index.html +148 -0
  318. package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/style.css +40 -0
  319. package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/README.md +102 -0
  320. package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/index.html +187 -0
  321. package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/style.css +216 -0
  322. package/skills/design-templates/html-ppt/templates/full-decks/product-launch/README.md +8 -0
  323. package/skills/design-templates/html-ppt/templates/full-decks/product-launch/index.html +121 -0
  324. package/skills/design-templates/html-ppt/templates/full-decks/product-launch/style.css +39 -0
  325. package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/README.md +8 -0
  326. package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/index.html +156 -0
  327. package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/style.css +49 -0
  328. package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/README.md +11 -0
  329. package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/index.html +183 -0
  330. package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/style.css +62 -0
  331. package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/README.md +8 -0
  332. package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/index.html +127 -0
  333. package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/style.css +55 -0
  334. package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/README.md +11 -0
  335. package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/index.html +147 -0
  336. package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/style.css +66 -0
  337. package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/README.md +9 -0
  338. package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/index.html +133 -0
  339. package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/style.css +47 -0
  340. package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/README.md +11 -0
  341. package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/index.html +187 -0
  342. package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/style.css +63 -0
  343. package/skills/design-templates/html-ppt/templates/full-decks-index.html +82 -0
  344. package/skills/design-templates/html-ppt/templates/layout-showcase.html +47 -0
  345. package/skills/design-templates/html-ppt/templates/single-page/arch-diagram.html +46 -0
  346. package/skills/design-templates/html-ppt/templates/single-page/big-quote.html +18 -0
  347. package/skills/design-templates/html-ppt/templates/single-page/bullets.html +19 -0
  348. package/skills/design-templates/html-ppt/templates/single-page/chart-bar.html +30 -0
  349. package/skills/design-templates/html-ppt/templates/single-page/chart-line.html +35 -0
  350. package/skills/design-templates/html-ppt/templates/single-page/chart-pie.html +36 -0
  351. package/skills/design-templates/html-ppt/templates/single-page/chart-radar.html +31 -0
  352. package/skills/design-templates/html-ppt/templates/single-page/code.html +33 -0
  353. package/skills/design-templates/html-ppt/templates/single-page/comparison.html +47 -0
  354. package/skills/design-templates/html-ppt/templates/single-page/cover.html +32 -0
  355. package/skills/design-templates/html-ppt/templates/single-page/cta.html +27 -0
  356. package/skills/design-templates/html-ppt/templates/single-page/diff.html +35 -0
  357. package/skills/design-templates/html-ppt/templates/single-page/flow-diagram.html +33 -0
  358. package/skills/design-templates/html-ppt/templates/single-page/gantt.html +29 -0
  359. package/skills/design-templates/html-ppt/templates/single-page/image-grid.html +34 -0
  360. package/skills/design-templates/html-ppt/templates/single-page/image-hero.html +33 -0
  361. package/skills/design-templates/html-ppt/templates/single-page/kpi-grid.html +19 -0
  362. package/skills/design-templates/html-ppt/templates/single-page/mindmap.html +38 -0
  363. package/skills/design-templates/html-ppt/templates/single-page/process-steps.html +27 -0
  364. package/skills/design-templates/html-ppt/templates/single-page/pros-cons.html +31 -0
  365. package/skills/design-templates/html-ppt/templates/single-page/roadmap.html +46 -0
  366. package/skills/design-templates/html-ppt/templates/single-page/section-divider.html +17 -0
  367. package/skills/design-templates/html-ppt/templates/single-page/stat-highlight.html +17 -0
  368. package/skills/design-templates/html-ppt/templates/single-page/table.html +33 -0
  369. package/skills/design-templates/html-ppt/templates/single-page/terminal.html +35 -0
  370. package/skills/design-templates/html-ppt/templates/single-page/thanks.html +21 -0
  371. package/skills/design-templates/html-ppt/templates/single-page/three-column.html +18 -0
  372. package/skills/design-templates/html-ppt/templates/single-page/timeline.html +32 -0
  373. package/skills/design-templates/html-ppt/templates/single-page/toc.html +26 -0
  374. package/skills/design-templates/html-ppt/templates/single-page/todo-checklist.html +33 -0
  375. package/skills/design-templates/html-ppt/templates/single-page/two-column.html +39 -0
  376. package/skills/design-templates/html-ppt/templates/theme-showcase.html +151 -0
  377. package/skills/design-templates/html-ppt-course-module/SKILL.md +78 -0
  378. package/skills/design-templates/html-ppt-course-module/example.html +542 -0
  379. package/skills/design-templates/html-ppt-dir-key-nav-minimal/SKILL.md +77 -0
  380. package/skills/design-templates/html-ppt-dir-key-nav-minimal/example.html +366 -0
  381. package/skills/design-templates/html-ppt-graphify-dark-graph/SKILL.md +77 -0
  382. package/skills/design-templates/html-ppt-graphify-dark-graph/example.html +402 -0
  383. package/skills/design-templates/html-ppt-hermes-cyber-terminal/SKILL.md +77 -0
  384. package/skills/design-templates/html-ppt-hermes-cyber-terminal/example.html +422 -0
  385. package/skills/design-templates/html-ppt-knowledge-arch-blueprint/SKILL.md +77 -0
  386. package/skills/design-templates/html-ppt-knowledge-arch-blueprint/example.html +407 -0
  387. package/skills/design-templates/html-ppt-obsidian-claude-gradient/SKILL.md +77 -0
  388. package/skills/design-templates/html-ppt-obsidian-claude-gradient/example.html +371 -0
  389. package/skills/design-templates/html-ppt-pitch-deck/SKILL.md +78 -0
  390. package/skills/design-templates/html-ppt-pitch-deck/example.html +495 -0
  391. package/skills/design-templates/html-ppt-presenter-mode-reveal/SKILL.md +78 -0
  392. package/skills/design-templates/html-ppt-presenter-mode-reveal/example.html +725 -0
  393. package/skills/design-templates/html-ppt-product-launch/SKILL.md +77 -0
  394. package/skills/design-templates/html-ppt-product-launch/example.html +467 -0
  395. package/skills/design-templates/html-ppt-taste-brutalist/SKILL.md +70 -0
  396. package/skills/design-templates/html-ppt-taste-brutalist/example.html +774 -0
  397. package/skills/design-templates/html-ppt-taste-editorial/SKILL.md +62 -0
  398. package/skills/design-templates/html-ppt-taste-editorial/example.html +689 -0
  399. package/skills/design-templates/html-ppt-tech-sharing/SKILL.md +77 -0
  400. package/skills/design-templates/html-ppt-tech-sharing/example.html +512 -0
  401. package/skills/design-templates/html-ppt-testing-safety-alert/SKILL.md +78 -0
  402. package/skills/design-templates/html-ppt-testing-safety-alert/example.html +413 -0
  403. package/skills/design-templates/html-ppt-weekly-report/SKILL.md +77 -0
  404. package/skills/design-templates/html-ppt-weekly-report/example.html +489 -0
  405. package/skills/design-templates/html-ppt-xhs-pastel-card/SKILL.md +78 -0
  406. package/skills/design-templates/html-ppt-xhs-pastel-card/example.html +381 -0
  407. package/skills/design-templates/html-ppt-xhs-post/SKILL.md +78 -0
  408. package/skills/design-templates/html-ppt-xhs-post/example.html +487 -0
  409. package/skills/design-templates/html-ppt-xhs-white-editorial/SKILL.md +77 -0
  410. package/skills/design-templates/html-ppt-xhs-white-editorial/example.html +418 -0
  411. package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/LICENSE +21 -0
  412. package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/SKILL.md +93 -0
  413. package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/example.html +1640 -0
  414. package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/template.json +48 -0
  415. package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/LICENSE +21 -0
  416. package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/SKILL.md +93 -0
  417. package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/example.html +833 -0
  418. package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/template.json +49 -0
  419. package/skills/design-templates/html-ppt-zhangzara-block-frame/LICENSE +21 -0
  420. package/skills/design-templates/html-ppt-zhangzara-block-frame/SKILL.md +93 -0
  421. package/skills/design-templates/html-ppt-zhangzara-block-frame/example.html +1453 -0
  422. package/skills/design-templates/html-ppt-zhangzara-block-frame/template.json +47 -0
  423. package/skills/design-templates/html-ppt-zhangzara-blue-professional/LICENSE +21 -0
  424. package/skills/design-templates/html-ppt-zhangzara-blue-professional/SKILL.md +93 -0
  425. package/skills/design-templates/html-ppt-zhangzara-blue-professional/example.html +1423 -0
  426. package/skills/design-templates/html-ppt-zhangzara-blue-professional/template.json +44 -0
  427. package/skills/design-templates/html-ppt-zhangzara-bold-poster/LICENSE +21 -0
  428. package/skills/design-templates/html-ppt-zhangzara-bold-poster/SKILL.md +93 -0
  429. package/skills/design-templates/html-ppt-zhangzara-bold-poster/example.html +876 -0
  430. package/skills/design-templates/html-ppt-zhangzara-bold-poster/template.json +45 -0
  431. package/skills/design-templates/html-ppt-zhangzara-broadside/LICENSE +21 -0
  432. package/skills/design-templates/html-ppt-zhangzara-broadside/SKILL.md +92 -0
  433. package/skills/design-templates/html-ppt-zhangzara-broadside/example.html +2144 -0
  434. package/skills/design-templates/html-ppt-zhangzara-broadside/template.json +49 -0
  435. package/skills/design-templates/html-ppt-zhangzara-capsule/LICENSE +21 -0
  436. package/skills/design-templates/html-ppt-zhangzara-capsule/SKILL.md +92 -0
  437. package/skills/design-templates/html-ppt-zhangzara-capsule/example.html +1413 -0
  438. package/skills/design-templates/html-ppt-zhangzara-capsule/template.json +51 -0
  439. package/skills/design-templates/html-ppt-zhangzara-cartesian/LICENSE +21 -0
  440. package/skills/design-templates/html-ppt-zhangzara-cartesian/SKILL.md +92 -0
  441. package/skills/design-templates/html-ppt-zhangzara-cartesian/example.html +1136 -0
  442. package/skills/design-templates/html-ppt-zhangzara-cartesian/template.json +47 -0
  443. package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/LICENSE +21 -0
  444. package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/SKILL.md +93 -0
  445. package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/example.html +1205 -0
  446. package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/template.json +49 -0
  447. package/skills/design-templates/html-ppt-zhangzara-coral/LICENSE +21 -0
  448. package/skills/design-templates/html-ppt-zhangzara-coral/SKILL.md +92 -0
  449. package/skills/design-templates/html-ppt-zhangzara-coral/example.html +1487 -0
  450. package/skills/design-templates/html-ppt-zhangzara-coral/template.json +45 -0
  451. package/skills/design-templates/html-ppt-zhangzara-creative-mode/LICENSE +21 -0
  452. package/skills/design-templates/html-ppt-zhangzara-creative-mode/SKILL.md +99 -0
  453. package/skills/design-templates/html-ppt-zhangzara-creative-mode/assets/deck-stage.js +619 -0
  454. package/skills/design-templates/html-ppt-zhangzara-creative-mode/example.html +636 -0
  455. package/skills/design-templates/html-ppt-zhangzara-creative-mode/template.json +47 -0
  456. package/skills/design-templates/html-ppt-zhangzara-daisy-days/LICENSE +21 -0
  457. package/skills/design-templates/html-ppt-zhangzara-daisy-days/SKILL.md +93 -0
  458. package/skills/design-templates/html-ppt-zhangzara-daisy-days/example.html +469 -0
  459. package/skills/design-templates/html-ppt-zhangzara-daisy-days/template.json +54 -0
  460. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/LICENSE +21 -0
  461. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/SKILL.md +98 -0
  462. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/assets/deck-stage.js +619 -0
  463. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/example.html +737 -0
  464. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/template.json +44 -0
  465. package/skills/design-templates/html-ppt-zhangzara-grove/LICENSE +21 -0
  466. package/skills/design-templates/html-ppt-zhangzara-grove/SKILL.md +92 -0
  467. package/skills/design-templates/html-ppt-zhangzara-grove/example.html +1676 -0
  468. package/skills/design-templates/html-ppt-zhangzara-grove/template.json +51 -0
  469. package/skills/figma-code-connect-components/SKILL.md +42 -0
  470. package/skills/figma-create-design-system-rules/SKILL.md +42 -0
  471. package/skills/figma-create-new-file/SKILL.md +41 -0
  472. package/skills/figma-generate-design/SKILL.md +42 -0
  473. package/skills/figma-generate-library/SKILL.md +42 -0
  474. package/skills/figma-implement-design/SKILL.md +42 -0
  475. package/skills/figma-use/SKILL.md +42 -0
  476. package/skills/full-page-screenshot/SKILL.md +42 -0
  477. package/skills/interview-me/SKILL.md +64 -0
  478. package/skills/planning-and-task-breakdown/SKILL.md +52 -0
  479. package/skills/sora/SKILL.md +43 -0
  480. package/skills/theme-factory/SKILL.md +43 -0
  481. package/skills/web-design-guidelines/SKILL.md +42 -0
  482. package/dist/agents/prompt-library/orchestration.d.ts +0 -4
  483. package/skills/brainstorming/SKILL.md +0 -164
  484. package/skills/brainstorming/scripts/frame-template.html +0 -214
  485. package/skills/brainstorming/scripts/helper.js +0 -88
  486. package/skills/brainstorming/scripts/server.cjs +0 -354
  487. package/skills/brainstorming/scripts/start-server.sh +0 -148
  488. package/skills/brainstorming/scripts/stop-server.sh +0 -56
  489. package/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
  490. package/skills/brainstorming/visual-companion.md +0 -287
@@ -0,0 +1,1413 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Capsule — Presentation Template</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com">
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
+ <link href="https://fonts.googleapis.com/css2?family=Bodoni+Moda:ital,opsz,wght@0,6..96,400..900;1,6..96,400..900&family=Space+Grotesk:wght@300;400;500;600;700&display=swap" rel="stylesheet">
10
+ <style>
11
+ *, *::before, *::after {
12
+ margin: 0;
13
+ padding: 0;
14
+ box-sizing: border-box;
15
+ }
16
+
17
+ :root {
18
+ --bg: #F5F5F0;
19
+ --fg: #1A1A1A;
20
+ --coral: #E85D4E;
21
+ --lime: #C4D94E;
22
+ --lavender: #C5B5E0;
23
+ --sky: #8BB4F7;
24
+ --violet: #A06CE8;
25
+ --yellow: #F2D160;
26
+ --peach: #F5B895;
27
+ --mint: #A8E6CF;
28
+ --outline: #1E1E1E;
29
+ --shadow: rgba(26, 26, 26, 0.08);
30
+ --font-display: 'Bodoni Moda', serif;
31
+ --font-body: 'Space Grotesk', sans-serif;
32
+ }
33
+
34
+ html, body {
35
+ width: 100%;
36
+ height: 100%;
37
+ overflow: hidden;
38
+ background: var(--bg);
39
+ font-family: var(--font-body);
40
+ color: var(--fg);
41
+ }
42
+
43
+ /* Grain texture overlay */
44
+ .grain-overlay {
45
+ position: fixed;
46
+ inset: 0;
47
+ pointer-events: none;
48
+ z-index: 9999;
49
+ opacity: 0.04;
50
+ mix-blend-mode: multiply;
51
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
52
+ background-repeat: repeat;
53
+ background-size: 200px 200px;
54
+ }
55
+
56
+ .presentation {
57
+ width: 100%;
58
+ height: 100%;
59
+ position: relative;
60
+ }
61
+
62
+ .slide {
63
+ position: absolute;
64
+ inset: 0;
65
+ width: 100%;
66
+ height: 100%;
67
+ display: flex;
68
+ flex-direction: column;
69
+ padding: 3rem 4rem;
70
+ opacity: 0;
71
+ pointer-events: none;
72
+ transition: opacity 0.6s cubic-bezier(0.4, 0, 0.2, 1);
73
+ overflow: hidden;
74
+ }
75
+
76
+ .slide.active {
77
+ opacity: 1;
78
+ pointer-events: all;
79
+ }
80
+
81
+ /* Decorative pill elements */
82
+ .pill {
83
+ display: inline-flex;
84
+ align-items: center;
85
+ justify-content: center;
86
+ border-radius: 9999px;
87
+ border: 2px solid var(--outline);
88
+ font-family: var(--font-body);
89
+ font-weight: 500;
90
+ letter-spacing: 0.02em;
91
+ white-space: nowrap;
92
+ }
93
+
94
+ .pill-filled {
95
+ border-width: 2px;
96
+ }
97
+
98
+ .pill-coral { background: var(--coral); }
99
+ .pill-lime { background: var(--lime); }
100
+ .pill-lavender { background: var(--lavender); }
101
+ .pill-sky { background: var(--sky); }
102
+ .pill-violet { background: var(--violet); }
103
+ .pill-yellow { background: var(--yellow); }
104
+ .pill-peach { background: var(--peach); }
105
+ .pill-mint { background: var(--mint); }
106
+ .pill-white { background: #fff; }
107
+
108
+ .pill-outline {
109
+ background: transparent;
110
+ }
111
+
112
+ /* Navigation dots */
113
+ .nav-dots {
114
+ position: fixed;
115
+ right: 2rem;
116
+ top: 50%;
117
+ transform: translateY(-50%);
118
+ display: flex;
119
+ flex-direction: column;
120
+ gap: 0.75rem;
121
+ z-index: 100;
122
+ }
123
+
124
+ .nav-dot {
125
+ width: 10px;
126
+ height: 10px;
127
+ border-radius: 50%;
128
+ border: 2px solid var(--outline);
129
+ background: transparent;
130
+ cursor: pointer;
131
+ transition: all 0.3s ease;
132
+ }
133
+
134
+ .nav-dot.active {
135
+ background: var(--outline);
136
+ transform: scale(1.2);
137
+ }
138
+
139
+ /* Slide counter */
140
+ .slide-counter {
141
+ position: fixed;
142
+ bottom: 2rem;
143
+ right: 2rem;
144
+ font-family: var(--font-body);
145
+ font-size: 0.75rem;
146
+ font-weight: 500;
147
+ letter-spacing: 0.1em;
148
+ text-transform: uppercase;
149
+ color: var(--fg);
150
+ opacity: 0.5;
151
+ z-index: 100;
152
+ }
153
+
154
+ /* Keyboard hint */
155
+ .nav-hint {
156
+ position: fixed;
157
+ bottom: 2rem;
158
+ left: 2rem;
159
+ font-family: var(--font-body);
160
+ font-size: 0.65rem;
161
+ font-weight: 500;
162
+ letter-spacing: 0.08em;
163
+ text-transform: uppercase;
164
+ color: var(--fg);
165
+ opacity: 0.3;
166
+ z-index: 100;
167
+ }
168
+
169
+ /* ============================================
170
+ SLIDE 1 — Title
171
+ ============================================ */
172
+ .slide-1 {
173
+ justify-content: center;
174
+ align-items: center;
175
+ background:
176
+ radial-gradient(ellipse at 20% 80%, rgba(200, 217, 78, 0.15) 0%, transparent 50%),
177
+ radial-gradient(ellipse at 80% 20%, rgba(139, 180, 247, 0.12) 0%, transparent 50%),
178
+ radial-gradient(ellipse at 50% 50%, rgba(245, 184, 149, 0.08) 0%, transparent 60%),
179
+ var(--bg);
180
+ }
181
+
182
+ .slide-1 .deco-pills {
183
+ position: absolute;
184
+ inset: 0;
185
+ pointer-events: none;
186
+ overflow: hidden;
187
+ }
188
+
189
+ .slide-1 .deco-pill {
190
+ position: absolute;
191
+ border-radius: 9999px;
192
+ border: 2px solid var(--outline);
193
+ display: flex;
194
+ align-items: center;
195
+ justify-content: center;
196
+ font-family: var(--font-body);
197
+ font-weight: 700;
198
+ text-transform: uppercase;
199
+ letter-spacing: 0.04em;
200
+ }
201
+
202
+ .slide-1 .main-title {
203
+ font-family: var(--font-display);
204
+ font-size: clamp(3rem, 8vw, 7rem);
205
+ font-weight: 800;
206
+ line-height: 0.9;
207
+ text-align: center;
208
+ letter-spacing: -0.02em;
209
+ color: var(--fg);
210
+ position: relative;
211
+ z-index: 2;
212
+ }
213
+
214
+ .slide-1 .main-title .subtitle {
215
+ display: block;
216
+ font-family: var(--font-body);
217
+ font-size: clamp(0.8rem, 1.5vw, 1.1rem);
218
+ font-weight: 400;
219
+ letter-spacing: 0.15em;
220
+ text-transform: uppercase;
221
+ margin-top: 1.5rem;
222
+ color: var(--fg);
223
+ opacity: 0.6;
224
+ }
225
+
226
+ .slide-1 .title-pill {
227
+ position: relative;
228
+ z-index: 2;
229
+ background: var(--yellow);
230
+ padding: 1.5rem 3.5rem;
231
+ border-radius: 9999px;
232
+ border: 2px solid var(--outline);
233
+ margin-bottom: 2rem;
234
+ font-family: var(--font-body);
235
+ font-weight: 600;
236
+ font-size: 0.85rem;
237
+ letter-spacing: 0.12em;
238
+ text-transform: uppercase;
239
+ }
240
+
241
+ /* ============================================
242
+ SLIDE 2 — Introduction / Split
243
+ ============================================ */
244
+ .slide-2 {
245
+ justify-content: center;
246
+ background:
247
+ radial-gradient(ellipse at 0% 50%, rgba(160, 108, 232, 0.08) 0%, transparent 50%),
248
+ var(--bg);
249
+ }
250
+
251
+ .slide-2 .slide-inner {
252
+ display: grid;
253
+ grid-template-columns: 1fr 1fr;
254
+ gap: 4rem;
255
+ align-items: center;
256
+ max-width: 1200px;
257
+ width: 100%;
258
+ margin: 0 auto;
259
+ }
260
+
261
+ .slide-2 .left-content {
262
+ display: flex;
263
+ flex-direction: column;
264
+ gap: 1.5rem;
265
+ }
266
+
267
+ .slide-2 .left-content h2 {
268
+ font-family: var(--font-display);
269
+ font-size: clamp(2rem, 4vw, 3.5rem);
270
+ font-weight: 700;
271
+ line-height: 1.05;
272
+ letter-spacing: -0.02em;
273
+ }
274
+
275
+ .slide-2 .left-content p {
276
+ font-family: var(--font-body);
277
+ font-size: clamp(0.95rem, 1.2vw, 1.15rem);
278
+ line-height: 1.6;
279
+ opacity: 0.7;
280
+ max-width: 90%;
281
+ }
282
+
283
+ .slide-2 .left-content .accent-line {
284
+ width: 60px;
285
+ height: 4px;
286
+ background: var(--coral);
287
+ border-radius: 9999px;
288
+ }
289
+
290
+ .slide-2 .right-visual {
291
+ position: relative;
292
+ height: 400px;
293
+ display: flex;
294
+ align-items: center;
295
+ justify-content: center;
296
+ }
297
+
298
+ .slide-2 .right-visual .orbit-pill {
299
+ position: absolute;
300
+ border-radius: 9999px;
301
+ border: 2px solid var(--outline);
302
+ display: flex;
303
+ align-items: center;
304
+ justify-content: center;
305
+ font-size: 0.75rem;
306
+ font-weight: 600;
307
+ text-transform: uppercase;
308
+ letter-spacing: 0.06em;
309
+ box-shadow: 6px 6px 0 var(--shadow);
310
+ }
311
+
312
+ .slide-2 .right-visual .orbit-center {
313
+ width: 160px;
314
+ height: 160px;
315
+ border-radius: 50%;
316
+ background: var(--lime);
317
+ border: 2px solid var(--outline);
318
+ display: flex;
319
+ align-items: center;
320
+ justify-content: center;
321
+ font-family: var(--font-display);
322
+ font-size: 2.5rem;
323
+ font-weight: 700;
324
+ z-index: 2;
325
+ }
326
+
327
+ /* ============================================
328
+ SLIDE 3 — Three Pillars / Cards
329
+ ============================================ */
330
+ .slide-3 {
331
+ justify-content: center;
332
+ background:
333
+ radial-gradient(ellipse at 100% 0%, rgba(232, 93, 78, 0.06) 0%, transparent 40%),
334
+ radial-gradient(ellipse at 0% 100%, rgba(139, 180, 247, 0.08) 0%, transparent 40%),
335
+ var(--bg);
336
+ }
337
+
338
+ .slide-3 .slide-inner {
339
+ max-width: 1200px;
340
+ width: 100%;
341
+ margin: 0 auto;
342
+ display: flex;
343
+ flex-direction: column;
344
+ gap: 3rem;
345
+ }
346
+
347
+ .slide-3 .slide-header {
348
+ text-align: center;
349
+ margin-bottom: 1rem;
350
+ }
351
+
352
+ .slide-3 .slide-header h2 {
353
+ font-family: var(--font-display);
354
+ font-size: clamp(1.8rem, 3.5vw, 3rem);
355
+ font-weight: 700;
356
+ letter-spacing: -0.01em;
357
+ }
358
+
359
+ .slide-3 .slide-header .header-pill {
360
+ display: inline-block;
361
+ background: var(--lavender);
362
+ padding: 0.4rem 1.2rem;
363
+ border-radius: 9999px;
364
+ border: 2px solid var(--outline);
365
+ font-size: 0.7rem;
366
+ font-weight: 600;
367
+ text-transform: uppercase;
368
+ letter-spacing: 0.1em;
369
+ margin-bottom: 1rem;
370
+ }
371
+
372
+ .slide-3 .cards-grid {
373
+ display: grid;
374
+ grid-template-columns: repeat(3, 1fr);
375
+ gap: 2rem;
376
+ }
377
+
378
+ .slide-3 .pillar-card {
379
+ background: #fff;
380
+ border: 2px solid var(--outline);
381
+ border-radius: 2rem;
382
+ padding: 2.5rem 2rem;
383
+ display: flex;
384
+ flex-direction: column;
385
+ gap: 1.25rem;
386
+ box-shadow: 8px 8px 0 var(--shadow);
387
+ transition: transform 0.3s ease;
388
+ }
389
+
390
+ .slide-3 .pillar-card .card-icon {
391
+ width: 60px;
392
+ height: 60px;
393
+ border-radius: 50%;
394
+ border: 2px solid var(--outline);
395
+ display: flex;
396
+ align-items: center;
397
+ justify-content: center;
398
+ font-family: var(--font-display);
399
+ font-size: 1.5rem;
400
+ font-weight: 700;
401
+ flex-shrink: 0;
402
+ }
403
+
404
+ .slide-3 .pillar-card h3 {
405
+ font-family: var(--font-display);
406
+ font-size: 1.5rem;
407
+ font-weight: 700;
408
+ line-height: 1.1;
409
+ }
410
+
411
+ .slide-3 .pillar-card p {
412
+ font-size: 0.9rem;
413
+ line-height: 1.55;
414
+ opacity: 0.65;
415
+ }
416
+
417
+ /* ============================================
418
+ SLIDE 4 — Data / Bar Chart
419
+ ============================================ */
420
+ .slide-4 {
421
+ justify-content: center;
422
+ background:
423
+ radial-gradient(ellipse at 50% 100%, rgba(200, 217, 78, 0.1) 0%, transparent 50%),
424
+ var(--bg);
425
+ }
426
+
427
+ .slide-4 .slide-inner {
428
+ max-width: 1000px;
429
+ width: 100%;
430
+ margin: 0 auto;
431
+ display: flex;
432
+ flex-direction: column;
433
+ gap: 2.5rem;
434
+ }
435
+
436
+ .slide-4 .slide-header h2 {
437
+ font-family: var(--font-display);
438
+ font-size: clamp(1.8rem, 3.5vw, 3rem);
439
+ font-weight: 700;
440
+ text-align: center;
441
+ letter-spacing: -0.01em;
442
+ }
443
+
444
+ .slide-4 .chart-container {
445
+ display: flex;
446
+ flex-direction: column;
447
+ gap: 1.5rem;
448
+ background: #fff;
449
+ border: 2px solid var(--outline);
450
+ border-radius: 2rem;
451
+ padding: 3rem;
452
+ box-shadow: 8px 8px 0 var(--shadow);
453
+ }
454
+
455
+ .slide-4 .chart-row {
456
+ display: flex;
457
+ align-items: center;
458
+ gap: 1.5rem;
459
+ }
460
+
461
+ .slide-4 .chart-label {
462
+ width: 140px;
463
+ font-family: var(--font-body);
464
+ font-size: 0.85rem;
465
+ font-weight: 500;
466
+ text-align: right;
467
+ flex-shrink: 0;
468
+ }
469
+
470
+ .slide-4 .chart-bar-track {
471
+ flex: 1;
472
+ height: 36px;
473
+ background: var(--bg);
474
+ border-radius: 9999px;
475
+ border: 2px solid var(--outline);
476
+ overflow: hidden;
477
+ position: relative;
478
+ }
479
+
480
+ .slide-4 .chart-bar-fill {
481
+ height: 100%;
482
+ border-radius: 9999px;
483
+ display: flex;
484
+ align-items: center;
485
+ justify-content: flex-end;
486
+ padding-right: 1rem;
487
+ font-size: 0.75rem;
488
+ font-weight: 600;
489
+ transition: width 1s cubic-bezier(0.4, 0, 0.2, 1);
490
+ border-right: 2px solid var(--outline);
491
+ }
492
+
493
+ .slide-4 .chart-value {
494
+ width: 60px;
495
+ font-size: 0.9rem;
496
+ font-weight: 600;
497
+ flex-shrink: 0;
498
+ }
499
+
500
+ /* ============================================
501
+ SLIDE 5 — Statement / Quote
502
+ ============================================ */
503
+ .slide-5 {
504
+ justify-content: center;
505
+ align-items: center;
506
+ background:
507
+ radial-gradient(ellipse at 30% 70%, rgba(245, 209, 96, 0.15) 0%, transparent 45%),
508
+ radial-gradient(ellipse at 70% 30%, rgba(160, 108, 232, 0.1) 0%, transparent 45%),
509
+ var(--bg);
510
+ }
511
+
512
+ .slide-5 .statement-box {
513
+ max-width: 900px;
514
+ text-align: center;
515
+ position: relative;
516
+ padding: 3rem;
517
+ }
518
+
519
+ .slide-5 .statement-box .quote-mark {
520
+ font-family: var(--font-display);
521
+ font-size: 8rem;
522
+ line-height: 0;
523
+ color: var(--coral);
524
+ opacity: 0.3;
525
+ position: absolute;
526
+ top: 2rem;
527
+ left: 0;
528
+ }
529
+
530
+ .slide-5 .statement-box blockquote {
531
+ font-family: var(--font-display);
532
+ font-size: clamp(1.6rem, 3.5vw, 3rem);
533
+ font-weight: 600;
534
+ font-style: italic;
535
+ line-height: 1.35;
536
+ letter-spacing: -0.01em;
537
+ position: relative;
538
+ z-index: 1;
539
+ }
540
+
541
+ .slide-5 .statement-box .quote-highlight {
542
+ display: inline-block;
543
+ background: var(--lime);
544
+ padding: 0.1rem 0.8rem;
545
+ border-radius: 9999px;
546
+ border: 2px solid var(--outline);
547
+ font-style: normal;
548
+ font-weight: 700;
549
+ }
550
+
551
+ .slide-5 .statement-box .quote-highlight.alt {
552
+ background: var(--sky);
553
+ }
554
+
555
+ .slide-5 .statement-box .attribution {
556
+ margin-top: 2rem;
557
+ font-family: var(--font-body);
558
+ font-size: 0.85rem;
559
+ font-weight: 500;
560
+ letter-spacing: 0.08em;
561
+ text-transform: uppercase;
562
+ opacity: 0.5;
563
+ }
564
+
565
+ .slide-5 .floating-pills {
566
+ position: absolute;
567
+ inset: 0;
568
+ pointer-events: none;
569
+ overflow: hidden;
570
+ }
571
+
572
+ .slide-5 .floating-pills .f-pill {
573
+ position: absolute;
574
+ border-radius: 9999px;
575
+ border: 2px solid var(--outline);
576
+ font-size: 0.7rem;
577
+ font-weight: 600;
578
+ text-transform: uppercase;
579
+ letter-spacing: 0.06em;
580
+ display: flex;
581
+ align-items: center;
582
+ justify-content: center;
583
+ }
584
+
585
+ /* ============================================
586
+ SLIDE 6 — Process / Timeline
587
+ ============================================ */
588
+ .slide-6 {
589
+ justify-content: center;
590
+ background:
591
+ radial-gradient(ellipse at 50% 0%, rgba(232, 93, 78, 0.06) 0%, transparent 40%),
592
+ var(--bg);
593
+ }
594
+
595
+ .slide-6 .slide-inner {
596
+ max-width: 1100px;
597
+ width: 100%;
598
+ margin: 0 auto;
599
+ display: flex;
600
+ flex-direction: column;
601
+ gap: 2.5rem;
602
+ }
603
+
604
+ .slide-6 .slide-header {
605
+ text-align: center;
606
+ }
607
+
608
+ .slide-6 .slide-header h2 {
609
+ font-family: var(--font-display);
610
+ font-size: clamp(1.8rem, 3.5vw, 3rem);
611
+ font-weight: 700;
612
+ letter-spacing: -0.01em;
613
+ }
614
+
615
+ .slide-6 .timeline {
616
+ display: flex;
617
+ align-items: flex-start;
618
+ justify-content: space-between;
619
+ gap: 1rem;
620
+ position: relative;
621
+ padding-top: 1rem;
622
+ }
623
+
624
+ .slide-6 .timeline-track {
625
+ position: absolute;
626
+ top: 2.5rem;
627
+ left: 5%;
628
+ right: 5%;
629
+ height: 4px;
630
+ background: var(--bg);
631
+ border-radius: 9999px;
632
+ border: 2px solid var(--outline);
633
+ z-index: 0;
634
+ }
635
+
636
+ .slide-6 .timeline-step {
637
+ display: flex;
638
+ flex-direction: column;
639
+ align-items: center;
640
+ gap: 1rem;
641
+ position: relative;
642
+ z-index: 1;
643
+ flex: 1;
644
+ max-width: 220px;
645
+ }
646
+
647
+ .slide-6 .timeline-step .step-node {
648
+ width: 56px;
649
+ height: 56px;
650
+ border-radius: 50%;
651
+ border: 2px solid var(--outline);
652
+ display: flex;
653
+ align-items: center;
654
+ justify-content: center;
655
+ font-family: var(--font-display);
656
+ font-size: 1.3rem;
657
+ font-weight: 700;
658
+ background: #fff;
659
+ flex-shrink: 0;
660
+ box-shadow: 4px 4px 0 var(--shadow);
661
+ }
662
+
663
+ .slide-6 .timeline-step .step-label {
664
+ text-align: center;
665
+ font-size: 0.8rem;
666
+ font-weight: 600;
667
+ text-transform: uppercase;
668
+ letter-spacing: 0.06em;
669
+ line-height: 1.3;
670
+ }
671
+
672
+ .slide-6 .timeline-step .step-desc {
673
+ text-align: center;
674
+ font-size: 0.8rem;
675
+ line-height: 1.4;
676
+ opacity: 0.55;
677
+ margin-top: -0.5rem;
678
+ }
679
+
680
+ /* ============================================
681
+ SLIDE 7 — Statistics / Numbers
682
+ ============================================ */
683
+ .slide-7 {
684
+ justify-content: center;
685
+ background:
686
+ radial-gradient(ellipse at 80% 80%, rgba(200, 217, 78, 0.1) 0%, transparent 40%),
687
+ radial-gradient(ellipse at 20% 20%, rgba(245, 184, 149, 0.1) 0%, transparent 40%),
688
+ var(--bg);
689
+ }
690
+
691
+ .slide-7 .slide-inner {
692
+ max-width: 1100px;
693
+ width: 100%;
694
+ margin: 0 auto;
695
+ display: flex;
696
+ flex-direction: column;
697
+ gap: 3rem;
698
+ }
699
+
700
+ .slide-7 .slide-header {
701
+ text-align: center;
702
+ }
703
+
704
+ .slide-7 .slide-header h2 {
705
+ font-family: var(--font-display);
706
+ font-size: clamp(1.8rem, 3.5vw, 3rem);
707
+ font-weight: 700;
708
+ letter-spacing: -0.01em;
709
+ }
710
+
711
+ .slide-7 .stats-grid {
712
+ display: grid;
713
+ grid-template-columns: repeat(4, 1fr);
714
+ gap: 1.5rem;
715
+ }
716
+
717
+ .slide-7 .stat-pill {
718
+ background: #fff;
719
+ border: 2px solid var(--outline);
720
+ border-radius: 2rem;
721
+ padding: 2rem 1.5rem;
722
+ display: flex;
723
+ flex-direction: column;
724
+ align-items: center;
725
+ text-align: center;
726
+ gap: 0.75rem;
727
+ box-shadow: 6px 6px 0 var(--shadow);
728
+ }
729
+
730
+ .slide-7 .stat-pill .stat-number {
731
+ font-family: var(--font-display);
732
+ font-size: clamp(2rem, 3.5vw, 3rem);
733
+ font-weight: 800;
734
+ line-height: 1;
735
+ letter-spacing: -0.03em;
736
+ }
737
+
738
+ .slide-7 .stat-pill .stat-label {
739
+ font-size: 0.75rem;
740
+ font-weight: 600;
741
+ text-transform: uppercase;
742
+ letter-spacing: 0.08em;
743
+ opacity: 0.6;
744
+ line-height: 1.3;
745
+ }
746
+
747
+ .slide-7 .stat-pill .stat-bar {
748
+ width: 40px;
749
+ height: 4px;
750
+ border-radius: 9999px;
751
+ margin-top: 0.25rem;
752
+ }
753
+
754
+ /* ============================================
755
+ SLIDE 8 — Diagram / Flow
756
+ ============================================ */
757
+ .slide-8 {
758
+ justify-content: center;
759
+ background:
760
+ radial-gradient(ellipse at 50% 50%, rgba(139, 180, 247, 0.08) 0%, transparent 50%),
761
+ var(--bg);
762
+ }
763
+
764
+ .slide-8 .slide-inner {
765
+ max-width: 1000px;
766
+ width: 100%;
767
+ margin: 0 auto;
768
+ display: flex;
769
+ flex-direction: column;
770
+ gap: 2.5rem;
771
+ }
772
+
773
+ .slide-8 .slide-header {
774
+ text-align: center;
775
+ }
776
+
777
+ .slide-8 .slide-header h2 {
778
+ font-family: var(--font-display);
779
+ font-size: clamp(1.8rem, 3.5vw, 3rem);
780
+ font-weight: 700;
781
+ letter-spacing: -0.01em;
782
+ }
783
+
784
+ .slide-8 .diagram-container {
785
+ display: flex;
786
+ align-items: center;
787
+ justify-content: center;
788
+ gap: 0;
789
+ position: relative;
790
+ }
791
+
792
+ .slide-8 .diagram-node {
793
+ border-radius: 9999px;
794
+ border: 2px solid var(--outline);
795
+ display: flex;
796
+ align-items: center;
797
+ justify-content: center;
798
+ text-align: center;
799
+ font-weight: 600;
800
+ font-size: 0.85rem;
801
+ line-height: 1.3;
802
+ padding: 1rem 2rem;
803
+ box-shadow: 6px 6px 0 var(--shadow);
804
+ z-index: 2;
805
+ background: #fff;
806
+ min-width: 140px;
807
+ min-height: 60px;
808
+ }
809
+
810
+ .slide-8 .diagram-connector {
811
+ width: 50px;
812
+ height: 4px;
813
+ background: var(--outline);
814
+ position: relative;
815
+ }
816
+
817
+ .slide-8 .diagram-connector::after {
818
+ content: '';
819
+ position: absolute;
820
+ right: -6px;
821
+ top: 50%;
822
+ transform: translateY(-50%);
823
+ width: 0;
824
+ height: 0;
825
+ border-top: 6px solid transparent;
826
+ border-bottom: 6px solid transparent;
827
+ border-left: 10px solid var(--outline);
828
+ }
829
+
830
+ .slide-8 .diagram-branch {
831
+ display: flex;
832
+ flex-direction: column;
833
+ gap: 1.5rem;
834
+ }
835
+
836
+ .slide-8 .diagram-joiner {
837
+ position: absolute;
838
+ left: 50%;
839
+ transform: translateX(-50%);
840
+ width: 2px;
841
+ height: 100%;
842
+ background: var(--outline);
843
+ z-index: 0;
844
+ }
845
+
846
+ /* ============================================
847
+ SLIDE 9 — Split with Visual Frame
848
+ ============================================ */
849
+ .slide-9 {
850
+ justify-content: center;
851
+ background:
852
+ radial-gradient(ellipse at 100% 50%, rgba(245, 209, 96, 0.1) 0%, transparent 50%),
853
+ var(--bg);
854
+ }
855
+
856
+ .slide-9 .slide-inner {
857
+ max-width: 1200px;
858
+ width: 100%;
859
+ margin: 0 auto;
860
+ display: grid;
861
+ grid-template-columns: 1fr 1fr;
862
+ gap: 4rem;
863
+ align-items: center;
864
+ }
865
+
866
+ .slide-9 .visual-side {
867
+ position: relative;
868
+ height: 450px;
869
+ display: flex;
870
+ align-items: center;
871
+ justify-content: center;
872
+ }
873
+
874
+ .slide-9 .visual-frame {
875
+ width: 100%;
876
+ height: 100%;
877
+ border-radius: 2rem;
878
+ border: 2px solid var(--outline);
879
+ background:
880
+ linear-gradient(135deg, var(--lavender) 0%, var(--sky) 50%, var(--mint) 100%);
881
+ position: relative;
882
+ overflow: hidden;
883
+ box-shadow: 12px 12px 0 var(--shadow);
884
+ }
885
+
886
+ .slide-9 .visual-frame .frame-pattern {
887
+ position: absolute;
888
+ inset: 0;
889
+ opacity: 0.15;
890
+ background-image:
891
+ radial-gradient(circle at 25% 25%, var(--outline) 2px, transparent 2px),
892
+ radial-gradient(circle at 75% 75%, var(--outline) 2px, transparent 2px);
893
+ background-size: 40px 40px;
894
+ }
895
+
896
+ .slide-9 .visual-frame .frame-content {
897
+ position: absolute;
898
+ inset: 2rem;
899
+ border-radius: 1.5rem;
900
+ border: 2px dashed var(--outline);
901
+ display: flex;
902
+ align-items: center;
903
+ justify-content: center;
904
+ }
905
+
906
+ .slide-9 .visual-frame .frame-content span {
907
+ font-family: var(--font-body);
908
+ font-size: 0.8rem;
909
+ font-weight: 500;
910
+ text-transform: uppercase;
911
+ letter-spacing: 0.1em;
912
+ opacity: 0.5;
913
+ }
914
+
915
+ .slide-9 .text-side {
916
+ display: flex;
917
+ flex-direction: column;
918
+ gap: 1.5rem;
919
+ }
920
+
921
+ .slide-9 .text-side h2 {
922
+ font-family: var(--font-display);
923
+ font-size: clamp(2rem, 4vw, 3.5rem);
924
+ font-weight: 700;
925
+ line-height: 1.05;
926
+ letter-spacing: -0.02em;
927
+ }
928
+
929
+ .slide-9 .text-side p {
930
+ font-size: clamp(0.9rem, 1.1vw, 1.05rem);
931
+ line-height: 1.6;
932
+ opacity: 0.65;
933
+ }
934
+
935
+ .slide-9 .text-side .text-pills {
936
+ display: flex;
937
+ flex-wrap: wrap;
938
+ gap: 0.6rem;
939
+ margin-top: 0.5rem;
940
+ }
941
+
942
+ .slide-9 .text-side .text-pills .mini-pill {
943
+ padding: 0.35rem 1rem;
944
+ border-radius: 9999px;
945
+ border: 2px solid var(--outline);
946
+ font-size: 0.7rem;
947
+ font-weight: 500;
948
+ text-transform: uppercase;
949
+ letter-spacing: 0.06em;
950
+ }
951
+
952
+ /* ============================================
953
+ SLIDE 10 — Closing
954
+ ============================================ */
955
+ .slide-10 {
956
+ justify-content: center;
957
+ align-items: center;
958
+ background:
959
+ radial-gradient(ellipse at 20% 20%, rgba(200, 217, 78, 0.12) 0%, transparent 40%),
960
+ radial-gradient(ellipse at 80% 80%, rgba(245, 184, 149, 0.12) 0%, transparent 40%),
961
+ radial-gradient(ellipse at 50% 50%, rgba(160, 108, 232, 0.06) 0%, transparent 50%),
962
+ var(--bg);
963
+ }
964
+
965
+ .slide-10 .closing-content {
966
+ text-align: center;
967
+ display: flex;
968
+ flex-direction: column;
969
+ align-items: center;
970
+ gap: 1.5rem;
971
+ position: relative;
972
+ z-index: 2;
973
+ }
974
+
975
+ .slide-10 .closing-pill {
976
+ background: var(--yellow);
977
+ padding: 1rem 2.5rem;
978
+ border-radius: 9999px;
979
+ border: 2px solid var(--outline);
980
+ font-size: 0.8rem;
981
+ font-weight: 600;
982
+ text-transform: uppercase;
983
+ letter-spacing: 0.12em;
984
+ }
985
+
986
+ .slide-10 h2 {
987
+ font-family: var(--font-display);
988
+ font-size: clamp(2.5rem, 6vw, 5rem);
989
+ font-weight: 800;
990
+ line-height: 0.95;
991
+ letter-spacing: -0.03em;
992
+ max-width: 700px;
993
+ }
994
+
995
+ .slide-10 .closing-line {
996
+ width: 80px;
997
+ height: 4px;
998
+ background: var(--coral);
999
+ border-radius: 9999px;
1000
+ }
1001
+
1002
+ .slide-10 .closing-sub {
1003
+ font-family: var(--font-body);
1004
+ font-size: 0.85rem;
1005
+ font-weight: 400;
1006
+ letter-spacing: 0.12em;
1007
+ text-transform: uppercase;
1008
+ opacity: 0.5;
1009
+ }
1010
+
1011
+ .slide-10 .deco-pills-closing {
1012
+ position: absolute;
1013
+ inset: 0;
1014
+ pointer-events: none;
1015
+ overflow: hidden;
1016
+ }
1017
+
1018
+ .slide-10 .deco-pills-closing .c-pill {
1019
+ position: absolute;
1020
+ border-radius: 9999px;
1021
+ border: 2px solid var(--outline);
1022
+ display: flex;
1023
+ align-items: center;
1024
+ justify-content: center;
1025
+ font-size: 0.7rem;
1026
+ font-weight: 600;
1027
+ text-transform: uppercase;
1028
+ letter-spacing: 0.06em;
1029
+ }
1030
+
1031
+ /* Responsive adjustments */
1032
+ @media (max-width: 900px) {
1033
+ .slide { padding: 2rem; }
1034
+ .slide-2 .slide-inner,
1035
+ .slide-9 .slide-inner { grid-template-columns: 1fr; gap: 2rem; }
1036
+ .slide-3 .cards-grid { grid-template-columns: 1fr; }
1037
+ .slide-7 .stats-grid { grid-template-columns: repeat(2, 1fr); }
1038
+ .slide-6 .timeline { flex-direction: column; align-items: center; gap: 2rem; }
1039
+ .slide-6 .timeline-track { display: none; }
1040
+ .slide-4 .chart-row { flex-direction: column; align-items: flex-start; gap: 0.5rem; }
1041
+ .slide-4 .chart-label { text-align: left; }
1042
+ .nav-dots { display: none; }
1043
+ }
1044
+
1045
+ @media (max-width: 600px) {
1046
+ .slide-7 .stats-grid { grid-template-columns: 1fr; }
1047
+ }
1048
+ </style>
1049
+ </head>
1050
+ <body>
1051
+
1052
+ <div class="grain-overlay"></div>
1053
+
1054
+ <div class="presentation">
1055
+
1056
+ <!-- SLIDE 1: Title -->
1057
+ <div class="slide slide-1 active" data-slide="1">
1058
+ <div class="deco-pills">
1059
+ <div class="deco-pill pill-coral" style="width:120px;height:55px;top:12%;left:8%;transform:rotate(-12deg);font-size:0.85rem;">Concept</div>
1060
+ <div class="deco-pill pill-lavender" style="width:160px;height:60px;top:18%;right:12%;transform:rotate(8deg);font-size:0.9rem;">Strategy</div>
1061
+ <div class="deco-pill pill-sky" style="width:110px;height:50px;top:72%;left:15%;transform:rotate(6deg);font-size:0.8rem;">Vision</div>
1062
+ <div class="deco-pill pill-lime" style="width:135px;height:55px;top:78%;right:18%;transform:rotate(-8deg);font-size:0.85rem;">Future</div>
1063
+ <div class="deco-pill pill-peach" style="width:85px;height:85px;border-radius:50%;top:15%;left:45%;transform:rotate(0deg);font-size:0.75rem;">2026</div>
1064
+ <div class="deco-pill pill-white" style="width:105px;height:48px;top:65%;right:8%;transform:rotate(15deg);font-size:0.75rem;opacity:0.6;">Design</div>
1065
+ <div class="deco-pill pill-violet" style="width:90px;height:90px;border-radius:50%;top:75%;left:5%;transform:rotate(0deg);font-size:0.7rem;">Next</div>
1066
+ </div>
1067
+ <div class="title-pill">Presentation Template</div>
1068
+ <h1 class="main-title">
1069
+ CAPSULE
1070
+ <span class="subtitle">A Framework for Bold Ideas</span>
1071
+ </h1>
1072
+ </div>
1073
+
1074
+ <!-- SLIDE 2: Introduction Split -->
1075
+ <div class="slide slide-2" data-slide="2">
1076
+ <div class="slide-inner">
1077
+ <div class="left-content">
1078
+ <div class="accent-line"></div>
1079
+ <h2>Every Great Endeavor Begins with a Single Thought</h2>
1080
+ <p>We believe in the power of structured creativity. By combining rigorous methodology with unbounded imagination, teams can transform abstract concepts into tangible outcomes that resonate deeply with their audience.</p>
1081
+ <p>This template exists to give shape to your boldest visions. It is a starting point, a scaffold, and a catalyst for the work that matters most.</p>
1082
+ </div>
1083
+ <div class="right-visual">
1084
+ <div class="orbit-center">01</div>
1085
+ <div class="orbit-pill pill-coral" style="width:90px;height:42px;top:10%;left:20%;transform:rotate(-20deg);">Research</div>
1086
+ <div class="orbit-pill pill-lime" style="width:100px;height:45px;top:5%;right:15%;transform:rotate(15deg);">Ideation</div>
1087
+ <div class="orbit-pill pill-sky" style="width:95px;height:42px;bottom:15%;left:10%;transform:rotate(10deg);">Prototype</div>
1088
+ <div class="orbit-pill pill-lavender" style="width:110px;height:48px;bottom:10%;right:10%;transform:rotate(-12deg);">Iterate</div>
1089
+ <div class="orbit-pill pill-yellow" style="width:80px;height:38px;top:40%;left:0%;transform:rotate(25deg);font-size:0.65rem;">Launch</div>
1090
+ <div class="orbit-pill pill-violet" style="width:85px;height:40px;top:45%;right:0%;transform:rotate(-18deg);font-size:0.65rem;">Scale</div>
1091
+ </div>
1092
+ </div>
1093
+ </div>
1094
+
1095
+ <!-- SLIDE 3: Three Pillars -->
1096
+ <div class="slide slide-3" data-slide="3">
1097
+ <div class="slide-inner">
1098
+ <div class="slide-header">
1099
+ <div class="header-pill">Core Principles</div>
1100
+ <h2>The Foundation of Every Decision</h2>
1101
+ </div>
1102
+ <div class="cards-grid">
1103
+ <div class="pillar-card">
1104
+ <div class="card-icon pill-coral">I</div>
1105
+ <h3>Clarity of Purpose</h3>
1106
+ <p>Before any action is taken, define the north star that guides every subsequent choice. A well-articulated objective eliminates ambiguity and aligns stakeholders toward a unified destination.</p>
1107
+ </div>
1108
+ <div class="pillar-card">
1109
+ <div class="card-icon pill-lime">II</div>
1110
+ <h3>Structured Flexibility</h3>
1111
+ <p>Rigorous frameworks need not constrain creativity. The most effective systems provide scaffolding while leaving ample room for improvisation, adaptation, and unexpected breakthroughs.</p>
1112
+ </div>
1113
+ <div class="pillar-card">
1114
+ <div class="card-icon pill-sky">III</div>
1115
+ <h3>Measured Impact</h3>
1116
+ <p>Success is not a feeling but a quantity. Establish clear metrics early, track them honestly, and allow data to inform the evolution of your approach without dictating it entirely.</p>
1117
+ </div>
1118
+ </div>
1119
+ </div>
1120
+ </div>
1121
+
1122
+ <!-- SLIDE 4: Data / Chart -->
1123
+ <div class="slide slide-4" data-slide="4">
1124
+ <div class="slide-inner">
1125
+ <div class="slide-header">
1126
+ <h2>Performance Indicators</h2>
1127
+ </div>
1128
+ <div class="chart-container">
1129
+ <div class="chart-row">
1130
+ <div class="chart-label">Market Reach</div>
1131
+ <div class="chart-bar-track">
1132
+ <div class="chart-bar-fill pill-coral" style="width: 82%;">82%</div>
1133
+ </div>
1134
+ <div class="chart-value">8.2M</div>
1135
+ </div>
1136
+ <div class="chart-row">
1137
+ <div class="chart-label">Engagement</div>
1138
+ <div class="chart-bar-track">
1139
+ <div class="chart-bar-fill pill-lime" style="width: 67%;">67%</div>
1140
+ </div>
1141
+ <div class="chart-value">4.5M</div>
1142
+ </div>
1143
+ <div class="chart-row">
1144
+ <div class="chart-label">Conversion</div>
1145
+ <div class="chart-bar-track">
1146
+ <div class="chart-bar-fill pill-sky" style="width: 45%;">45%</div>
1147
+ </div>
1148
+ <div class="chart-value">2.1M</div>
1149
+ </div>
1150
+ <div class="chart-row">
1151
+ <div class="chart-label">Retention</div>
1152
+ <div class="chart-bar-track">
1153
+ <div class="chart-bar-fill pill-violet" style="width: 91%;">91%</div>
1154
+ </div>
1155
+ <div class="chart-value">7.8M</div>
1156
+ </div>
1157
+ <div class="chart-row">
1158
+ <div class="chart-label">Satisfaction</div>
1159
+ <div class="chart-bar-track">
1160
+ <div class="chart-bar-fill pill-yellow" style="width: 74%;">74%</div>
1161
+ </div>
1162
+ <div class="chart-value">6.3M</div>
1163
+ </div>
1164
+ </div>
1165
+ </div>
1166
+ </div>
1167
+
1168
+ <!-- SLIDE 5: Statement / Quote -->
1169
+ <div class="slide slide-5" data-slide="5">
1170
+ <div class="floating-pills">
1171
+ <div class="f-pill pill-coral" style="width:80px;height:35px;top:10%;left:8%;transform:rotate(-15deg);font-size:0.6rem;">Bold</div>
1172
+ <div class="f-pill pill-lavender" style="width:100px;height:40px;top:15%;right:10%;transform:rotate(12deg);font-size:0.65rem;">Inspire</div>
1173
+ <div class="f-pill pill-sky" style="width:90px;height:38px;bottom:12%;left:12%;transform:rotate(8deg);font-size:0.6rem;">Create</div>
1174
+ <div class="f-pill pill-lime" style="width:110px;height:42px;bottom:18%;right:8%;transform:rotate(-10deg);font-size:0.7rem;">Elevate</div>
1175
+ <div class="f-pill pill-violet" style="width:70px;height:70px;border-radius:50%;top:8%;left:40%;font-size:0.55rem;">Now</div>
1176
+ <div class="f-pill pill-peach" style="width:75px;height:35px;bottom:8%;left:45%;transform:rotate(20deg);font-size:0.55rem;">Today</div>
1177
+ </div>
1178
+ <div class="statement-box">
1179
+ <div class="quote-mark">&ldquo;</div>
1180
+ <blockquote>
1181
+ The best time to plant a tree was twenty years ago. The second best time is <span class="quote-highlight">right now</span>. Every moment of hesitation is a moment where <span class="quote-highlight alt">possibility</span> quietly dims.
1182
+ </blockquote>
1183
+ <div class="attribution">A Philosophy of Action</div>
1184
+ </div>
1185
+ </div>
1186
+
1187
+ <!-- SLIDE 6: Timeline -->
1188
+ <div class="slide slide-6" data-slide="6">
1189
+ <div class="slide-inner">
1190
+ <div class="slide-header">
1191
+ <h2>Phased Implementation</h2>
1192
+ </div>
1193
+ <div class="timeline">
1194
+ <div class="timeline-track"></div>
1195
+ <div class="timeline-step">
1196
+ <div class="step-node pill-coral">1</div>
1197
+ <div class="step-label">Discovery</div>
1198
+ <div class="step-desc">Map the terrain before you traverse it</div>
1199
+ </div>
1200
+ <div class="timeline-step">
1201
+ <div class="step-node pill-lime">2</div>
1202
+ <div class="step-label">Definition</div>
1203
+ <div class="step-desc">Sharpen the question to find the answer</div>
1204
+ </div>
1205
+ <div class="timeline-step">
1206
+ <div class="step-node pill-sky">3</div>
1207
+ <div class="step-label">Development</div>
1208
+ <div class="step-desc">Build with intent, iterate with care</div>
1209
+ </div>
1210
+ <div class="timeline-step">
1211
+ <div class="step-node pill-violet">4</div>
1212
+ <div class="step-label">Delivery</div>
1213
+ <div class="step-desc">Ship the work, then make it better</div>
1214
+ </div>
1215
+ <div class="timeline-step">
1216
+ <div class="step-node pill-yellow">5</div>
1217
+ <div class="step-label">Evolution</div>
1218
+ <div class="step-desc">Growth is a process, not a destination</div>
1219
+ </div>
1220
+ </div>
1221
+ </div>
1222
+ </div>
1223
+
1224
+ <!-- SLIDE 7: Statistics -->
1225
+ <div class="slide slide-7" data-slide="7">
1226
+ <div class="slide-inner">
1227
+ <div class="slide-header">
1228
+ <h2>Key Metrics at a Glance</h2>
1229
+ </div>
1230
+ <div class="stats-grid">
1231
+ <div class="stat-pill">
1232
+ <div class="stat-number" style="color: var(--coral);">340%</div>
1233
+ <div class="stat-label">Growth in<br>Active Users</div>
1234
+ <div class="stat-bar pill-coral"></div>
1235
+ </div>
1236
+ <div class="stat-pill">
1237
+ <div class="stat-number" style="color: var(--lime);">12.4M</div>
1238
+ <div class="stat-label">Total Reach<br>Across Channels</div>
1239
+ <div class="stat-bar pill-lime"></div>
1240
+ </div>
1241
+ <div class="stat-pill">
1242
+ <div class="stat-number" style="color: var(--sky);">98.2%</div>
1243
+ <div class="stat-label">System<br>Uptime Record</div>
1244
+ <div class="stat-bar pill-sky"></div>
1245
+ </div>
1246
+ <div class="stat-pill">
1247
+ <div class="stat-number" style="color: var(--violet);">4.9</div>
1248
+ <div class="stat-label">Average User<br>Satisfaction Score</div>
1249
+ <div class="stat-bar pill-violet"></div>
1250
+ </div>
1251
+ </div>
1252
+ </div>
1253
+ </div>
1254
+
1255
+ <!-- SLIDE 8: Diagram / Flow -->
1256
+ <div class="slide slide-8" data-slide="8">
1257
+ <div class="slide-inner">
1258
+ <div class="slide-header">
1259
+ <h2>System Architecture Overview</h2>
1260
+ </div>
1261
+ <div class="diagram-container">
1262
+ <div class="diagram-node pill-white" style="min-width:120px;">Input Layer</div>
1263
+ <div class="diagram-connector"></div>
1264
+ <div class="diagram-node pill-lavender" style="min-width:140px;">Processing Core</div>
1265
+ <div class="diagram-connector"></div>
1266
+ <div class="diagram-node" style="background:var(--lime);min-width:120px;">Decision Engine</div>
1267
+ <div class="diagram-connector"></div>
1268
+ <div class="diagram-node pill-coral" style="min-width:120px;">Output Stream</div>
1269
+ </div>
1270
+ <div style="display:flex;justify-content:center;gap:2rem;margin-top:2.5rem;">
1271
+ <div style="text-align:center;max-width:180px;">
1272
+ <div class="pill pill-filled pill-sky" style="padding:0.5rem 1.2rem;font-size:0.7rem;margin-bottom:0.5rem;">Data Ingestion</div>
1273
+ <div style="font-size:0.75rem;opacity:0.55;line-height:1.4;">Raw signals are captured and normalized from multiple sources in real time</div>
1274
+ </div>
1275
+ <div style="text-align:center;max-width:180px;">
1276
+ <div class="pill pill-filled pill-violet" style="padding:0.5rem 1.2rem;font-size:0.7rem;margin-bottom:0.5rem;">Transformation</div>
1277
+ <div style="font-size:0.75rem;opacity:0.55;line-height:1.4;">Information is enriched, filtered, and structured for downstream consumption</div>
1278
+ </div>
1279
+ <div style="text-align:center;max-width:180px;">
1280
+ <div class="pill pill-filled pill-yellow" style="padding:0.5rem 1.2rem;font-size:0.7rem;margin-bottom:0.5rem;">Distribution</div>
1281
+ <div style="font-size:0.75rem;opacity:0.55;line-height:1.4;">Results are routed to appropriate endpoints with guaranteed delivery</div>
1282
+ </div>
1283
+ </div>
1284
+ </div>
1285
+ </div>
1286
+
1287
+ <!-- SLIDE 9: Split with Visual -->
1288
+ <div class="slide slide-9" data-slide="9">
1289
+ <div class="slide-inner">
1290
+ <div class="visual-side">
1291
+ <div class="visual-frame">
1292
+ <div class="frame-pattern"></div>
1293
+ <div class="frame-content">
1294
+ <span>Visual Placeholder</span>
1295
+ </div>
1296
+ </div>
1297
+ </div>
1298
+ <div class="text-side">
1299
+ <h2>Where Vision Meets Execution</h2>
1300
+ <p>Great ideas deserve more than good intentions. They demand rigorous craft, thoughtful iteration, and an unwavering commitment to the user experience at every touchpoint.</p>
1301
+ <p>Our methodology bridges the gap between aspiration and reality. By grounding creative instinct in empirical insight, we produce work that is simultaneously daring and dependable.</p>
1302
+ <div class="text-pills">
1303
+ <div class="mini-pill pill-coral">Research</div>
1304
+ <div class="mini-pill pill-lime">Strategy</div>
1305
+ <div class="mini-pill pill-sky">Design</div>
1306
+ <div class="mini-pill pill-violet">Build</div>
1307
+ <div class="mini-pill pill-yellow">Measure</div>
1308
+ </div>
1309
+ </div>
1310
+ </div>
1311
+ </div>
1312
+
1313
+ <!-- SLIDE 10: Closing -->
1314
+ <div class="slide slide-10" data-slide="10">
1315
+ <div class="deco-pills-closing">
1316
+ <div class="c-pill pill-lime" style="width:100px;height:42px;top:15%;left:10%;transform:rotate(-12deg);font-size:0.65rem;">Continue</div>
1317
+ <div class="c-pill pill-sky" style="width:80px;height:38px;top:20%;right:12%;transform:rotate(15deg);font-size:0.6rem;">Explore</div>
1318
+ <div class="c-pill pill-lavender" style="width:110px;height:45px;bottom:20%;left:12%;transform:rotate(10deg);font-size:0.7rem;">Discover</div>
1319
+ <div class="c-pill pill-coral" style="width:70px;height:70px;border-radius:50%;bottom:15%;right:15%;font-size:0.6rem;">Go</div>
1320
+ <div class="c-pill pill-violet" style="width:90px;height:40px;top:50%;left:5%;transform:rotate(-20deg);font-size:0.6rem;">Begin</div>
1321
+ <div class="c-pill pill-yellow" style="width:85px;height:38px;top:45%;right:8%;transform:rotate(18deg);font-size:0.55rem;">Launch</div>
1322
+ <div class="c-pill pill-peach" style="width:75px;height:35px;top:8%;left:50%;transform:rotate(5deg);font-size:0.55rem;opacity:0.7;">More</div>
1323
+ </div>
1324
+ <div class="closing-content">
1325
+ <div class="closing-pill">The Journey Continues</div>
1326
+ <h2>Thank You for Your Attention</h2>
1327
+ <div class="closing-line"></div>
1328
+ <div class="closing-sub">Questions and conversation welcome</div>
1329
+ </div>
1330
+ </div>
1331
+
1332
+ </div>
1333
+
1334
+ <div class="nav-dots">
1335
+ <div class="nav-dot active" data-slide="1"></div>
1336
+ <div class="nav-dot" data-slide="2"></div>
1337
+ <div class="nav-dot" data-slide="3"></div>
1338
+ <div class="nav-dot" data-slide="4"></div>
1339
+ <div class="nav-dot" data-slide="5"></div>
1340
+ <div class="nav-dot" data-slide="6"></div>
1341
+ <div class="nav-dot" data-slide="7"></div>
1342
+ <div class="nav-dot" data-slide="8"></div>
1343
+ <div class="nav-dot" data-slide="9"></div>
1344
+ <div class="nav-dot" data-slide="10"></div>
1345
+ </div>
1346
+
1347
+ <div class="slide-counter"><span id="current">01</span> / 10</div>
1348
+ <div class="nav-hint">Use arrow keys to navigate</div>
1349
+
1350
+ <script>
1351
+ const slides = document.querySelectorAll('.slide');
1352
+ const dots = document.querySelectorAll('.nav-dot');
1353
+ const counterCurrent = document.getElementById('current');
1354
+ let currentSlide = 1;
1355
+ const totalSlides = slides.length;
1356
+
1357
+ function goToSlide(n) {
1358
+ if (n < 1) n = totalSlides;
1359
+ if (n > totalSlides) n = 1;
1360
+ currentSlide = n;
1361
+
1362
+ slides.forEach(s => s.classList.remove('active'));
1363
+ dots.forEach(d => d.classList.remove('active'));
1364
+
1365
+ const activeSlide = document.querySelector(`.slide[data-slide="${currentSlide}"]`);
1366
+ const activeDot = document.querySelector(`.nav-dot[data-slide="${currentSlide}"]`);
1367
+
1368
+ if (activeSlide) activeSlide.classList.add('active');
1369
+ if (activeDot) activeDot.classList.add('active');
1370
+ counterCurrent.textContent = String(currentSlide).padStart(2, '0');
1371
+ }
1372
+
1373
+ document.addEventListener('keydown', (e) => {
1374
+ if (e.key === 'ArrowRight' || e.key === 'ArrowDown' || e.key === ' ') {
1375
+ e.preventDefault();
1376
+ goToSlide(currentSlide + 1);
1377
+ } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {
1378
+ e.preventDefault();
1379
+ goToSlide(currentSlide - 1);
1380
+ } else if (e.key === 'Home') {
1381
+ e.preventDefault();
1382
+ goToSlide(1);
1383
+ } else if (e.key === 'End') {
1384
+ e.preventDefault();
1385
+ goToSlide(totalSlides);
1386
+ }
1387
+ });
1388
+
1389
+ dots.forEach(dot => {
1390
+ dot.addEventListener('click', () => {
1391
+ goToSlide(parseInt(dot.dataset.slide));
1392
+ });
1393
+ });
1394
+
1395
+ let touchStartX = 0;
1396
+ let touchEndX = 0;
1397
+
1398
+ document.addEventListener('touchstart', (e) => {
1399
+ touchStartX = e.changedTouches[0].screenX;
1400
+ }, { passive: true });
1401
+
1402
+ document.addEventListener('touchend', (e) => {
1403
+ touchEndX = e.changedTouches[0].screenX;
1404
+ const diff = touchStartX - touchEndX;
1405
+ if (Math.abs(diff) > 50) {
1406
+ if (diff > 0) goToSlide(currentSlide + 1);
1407
+ else goToSlide(currentSlide - 1);
1408
+ }
1409
+ }, { passive: true });
1410
+ </script>
1411
+
1412
+ </body>
1413
+ </html>