@rubytech/create-realagent-code 0.1.255 → 0.1.257

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 (217) hide show
  1. package/dist/__tests__/plugin-install.test.js +58 -40
  2. package/dist/index.js +77 -26
  3. package/dist/lib/plugin-install.js +31 -29
  4. package/package.json +1 -1
  5. package/payload/platform/config/brand-registry.json +8 -0
  6. package/payload/platform/config/brand.json +2 -2
  7. package/payload/platform/lib/graph-search/src/__tests__/fulltext-coverage.test.ts +12 -0
  8. package/payload/platform/lib/graph-write/dist/index.d.ts.map +1 -1
  9. package/payload/platform/lib/graph-write/dist/index.js +2 -0
  10. package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
  11. package/payload/platform/lib/graph-write/src/index.ts +2 -0
  12. package/payload/platform/neo4j/schema.cypher +126 -0
  13. package/payload/platform/plugins/.claude-plugin/marketplace.json +5 -0
  14. package/payload/platform/plugins/admin/.claude-plugin/plugin.json +1 -1
  15. package/payload/platform/plugins/admin/PLUGIN.md +3 -6
  16. package/payload/platform/plugins/admin/mcp/dist/index.js +0 -60
  17. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  18. package/payload/platform/plugins/admin/skills/insight/SKILL.md +24 -0
  19. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +63 -10
  20. package/payload/platform/plugins/business-assistant/PLUGIN.md +1 -1
  21. package/payload/platform/plugins/business-assistant/references/document-management.md +1 -1
  22. package/payload/platform/plugins/business-assistant/references/invoicing.md +2 -2
  23. package/payload/platform/plugins/business-assistant/references/quoting.md +1 -1
  24. package/payload/platform/plugins/docs/PLUGIN.md +1 -0
  25. package/payload/platform/plugins/docs/references/admin-ui.md +1 -1
  26. package/payload/platform/plugins/docs/references/deployment.md +18 -5
  27. package/payload/platform/plugins/docs/references/memory-guide.md +4 -0
  28. package/payload/platform/plugins/docs/references/platform.md +1 -1
  29. package/payload/platform/plugins/docs/references/plugins-guide.md +1 -1
  30. package/payload/platform/plugins/docs/references/slides.md +31 -0
  31. package/payload/platform/plugins/docs/references/voice-mirror-guide.md +1 -1
  32. package/payload/platform/plugins/memory/PLUGIN.md +1 -1
  33. package/payload/platform/plugins/memory/mcp/dist/index.js +1 -1
  34. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  35. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts +1 -1
  36. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js +1 -1
  37. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
  38. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +10 -0
  39. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  40. package/payload/platform/plugins/memory/references/schema-construction.md +72 -0
  41. package/payload/platform/plugins/slides/.claude-plugin/plugin.json +8 -0
  42. package/payload/platform/plugins/slides/LICENSE +21 -0
  43. package/payload/platform/plugins/slides/PLUGIN.md +18 -0
  44. package/payload/platform/plugins/slides/PROVENANCE.md +40 -0
  45. package/payload/platform/plugins/slides/commands/add-slide.md +29 -0
  46. package/payload/platform/plugins/slides/commands/slides-claus.md +39 -0
  47. package/payload/platform/plugins/slides/commands/slides-new-component.md +39 -0
  48. package/payload/platform/plugins/slides/commands/slides-outline.md +43 -0
  49. package/payload/platform/plugins/slides/commands/slides-review.md +52 -0
  50. package/payload/platform/plugins/slides/commands/slides-theme.md +64 -0
  51. package/payload/platform/plugins/slides/commands/slides.md +59 -0
  52. package/payload/platform/plugins/slides/skills/deck-system/REFERENCE.md +581 -0
  53. package/payload/platform/plugins/slides/skills/deck-system/SKILL.md +607 -0
  54. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-board.md +426 -0
  55. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-claus.md +185 -0
  56. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-mbb.md +450 -0
  57. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-product-launch.md +579 -0
  58. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-sales.md +464 -0
  59. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-sequoia.md +489 -0
  60. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING.md +273 -0
  61. package/payload/platform/plugins/slides/skills/deck-system/deck-craft.html +1371 -0
  62. package/payload/platform/plugins/slides/skills/deck-system/deck-solid.html +1667 -0
  63. package/payload/platform/plugins/slides/skills/deck-system/deck.html +1359 -0
  64. package/payload/platform/plugins/url-get/.claude-plugin/plugin.json +1 -1
  65. package/payload/platform/plugins/url-get/PLUGIN.md +26 -21
  66. package/payload/platform/plugins/url-get/mcp/dist/index.js +3 -3
  67. package/payload/platform/plugins/url-get/mcp/dist/index.js.map +1 -1
  68. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.d.ts +1 -2
  69. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.d.ts.map +1 -1
  70. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.js +20 -40
  71. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.js.map +1 -1
  72. package/payload/platform/scripts/setup-account.sh +1 -10
  73. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  74. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +0 -1
  75. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  76. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +5 -0
  77. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  78. package/payload/platform/services/claude-session-manager/dist/http-server.js +32 -2
  79. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  80. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +2 -2
  81. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
  82. package/payload/platform/templates/specialists/agents/database-operator.md +1 -1
  83. package/payload/platform/templates/specialists/agents/typed-edge-classifier.md +1 -1
  84. package/payload/server/public/assets/AdminShell-T-YknnBn.js +1 -0
  85. package/payload/server/public/assets/Checkbox-DmDxpqVv.js +1 -0
  86. package/payload/server/public/assets/admin-COUV-jgt.js +1 -0
  87. package/payload/server/public/assets/{arc-aUiRP9AS.js → arc-B2CweJq3.js} +1 -1
  88. package/payload/server/public/assets/architecture-YZFGNWBL-Dnn6Hc65.js +1 -0
  89. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-c09loTER.js → architectureDiagram-Q4EWVU46-DP2o-MFV.js} +1 -1
  90. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-Cjdeyoq1.js → blockDiagram-DXYQGD6D-DO4mcYDJ.js} +1 -1
  91. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-NY6Wlzo2.js → c4Diagram-AHTNJAMY-Sy1giHbj.js} +1 -1
  92. package/payload/server/public/assets/channel-CEpR_0rE.js +1 -0
  93. package/payload/server/public/assets/{chunk-2KRD3SAO-BK3470lx.js → chunk-2KRD3SAO-CKsCYCsN.js} +1 -1
  94. package/payload/server/public/assets/chunk-336JU56O-C0-P-aUF.js +2 -0
  95. package/payload/server/public/assets/chunk-426QAEUC-DFjEt3Zb.js +1 -0
  96. package/payload/server/public/assets/{chunk-4BX2VUAB-BOvVdJLf.js → chunk-4BX2VUAB-B8bqAmBa.js} +1 -1
  97. package/payload/server/public/assets/{chunk-4TB4RGXK-BXpto3yW.js → chunk-4TB4RGXK-D1k0VSlW.js} +1 -1
  98. package/payload/server/public/assets/{chunk-55IACEB6-BwZyF7vR.js → chunk-55IACEB6-B-p_QNqz.js} +1 -1
  99. package/payload/server/public/assets/{chunk-5FUZZQ4R-C403gCUk.js → chunk-5FUZZQ4R-D6U6tV_j.js} +1 -1
  100. package/payload/server/public/assets/{chunk-5PVQY5BW-CjVzXQEp.js → chunk-5PVQY5BW-CYK76xfs.js} +1 -1
  101. package/payload/server/public/assets/{chunk-67CJDMHE-D5bhMrtY.js → chunk-67CJDMHE-BC9js-lf.js} +1 -1
  102. package/payload/server/public/assets/{chunk-7N4EOEYR-Si7Lgrwc.js → chunk-7N4EOEYR-4j2OqKkv.js} +1 -1
  103. package/payload/server/public/assets/{chunk-AA7GKIK3-DMuHtDqO.js → chunk-AA7GKIK3-Coen-fXN.js} +1 -1
  104. package/payload/server/public/assets/{chunk-BSJP7CBP-L79XKVcb.js → chunk-BSJP7CBP-CAiOBvec.js} +1 -1
  105. package/payload/server/public/assets/{chunk-CIAEETIT-C0O7Upmg.js → chunk-CIAEETIT-AJzzpZVb.js} +1 -1
  106. package/payload/server/public/assets/{chunk-EDXVE4YY-DJcJAsAg.js → chunk-EDXVE4YY-BL4BKozX.js} +1 -1
  107. package/payload/server/public/assets/{chunk-ENJZ2VHE-CFDNvYu1.js → chunk-ENJZ2VHE-mhAFG8UD.js} +1 -1
  108. package/payload/server/public/assets/{chunk-FMBD7UC4-C_E43NFJ.js → chunk-FMBD7UC4-H231gZA_.js} +1 -1
  109. package/payload/server/public/assets/{chunk-FOC6F5B3-D9lWWHAu.js → chunk-FOC6F5B3-Cl3ZZjYG.js} +1 -1
  110. package/payload/server/public/assets/{chunk-ICPOFSXX-ecLOxGhL.js → chunk-ICPOFSXX-DOEzvzJa.js} +2 -2
  111. package/payload/server/public/assets/{chunk-K5T4RW27-DuhsNH4c.js → chunk-K5T4RW27-C_ipbUDD.js} +1 -1
  112. package/payload/server/public/assets/{chunk-KGLVRYIC-B4-A1Abi.js → chunk-KGLVRYIC-CTsDNSCU.js} +1 -1
  113. package/payload/server/public/assets/{chunk-LIHQZDEY-BxqgHRgT.js → chunk-LIHQZDEY-DvSXhkGf.js} +1 -1
  114. package/payload/server/public/assets/{chunk-ORNJ4GCN-DEYQ5WaJ.js → chunk-ORNJ4GCN-p574NOI7.js} +1 -1
  115. package/payload/server/public/assets/{chunk-OYMX7WX6-B7MW66KB.js → chunk-OYMX7WX6-BlEgFM6U.js} +1 -1
  116. package/payload/server/public/assets/chunk-QZHKN3VN-DpF06ZZQ.js +1 -0
  117. package/payload/server/public/assets/{chunk-U2HBQHQK-BMawmsyk.js → chunk-U2HBQHQK-B2bDK0jv.js} +1 -1
  118. package/payload/server/public/assets/{chunk-X2U36JSP-CT6g7pno.js → chunk-X2U36JSP-D69BxKFw.js} +1 -1
  119. package/payload/server/public/assets/{chunk-XPW4576I-CBfZXZDB.js → chunk-XPW4576I-Dm-PcyUi.js} +1 -1
  120. package/payload/server/public/assets/{chunk-YZCP3GAM-xeAluiAH.js → chunk-YZCP3GAM-Be8RnXgx.js} +1 -1
  121. package/payload/server/public/assets/{chunk-ZZ45TVLE-BRN9qUC5.js → chunk-ZZ45TVLE-Ck8PCTa4.js} +1 -1
  122. package/payload/server/public/assets/classDiagram-6PBFFD2Q-CYbXvKLI.js +1 -0
  123. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DEyHzRhq.js +1 -0
  124. package/payload/server/public/assets/clone-y8gexbBy.js +1 -0
  125. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-Br2gjtEO.js → cose-bilkent-S5V4N54A-CmkW2Eaj.js} +1 -1
  126. package/payload/server/public/assets/{dagre-DTjePoco.js → dagre-Dqp-ns8F.js} +1 -1
  127. package/payload/server/public/assets/{dagre-KV5264BT-DHBkRke4.js → dagre-KV5264BT-ZgWWXPLc.js} +1 -1
  128. package/payload/server/public/assets/data-gy6QH9c1.js +1 -0
  129. package/payload/server/public/assets/{diagram-5BDNPKRD-BIq1-idL.js → diagram-5BDNPKRD-CTX5-ScM.js} +1 -1
  130. package/payload/server/public/assets/{diagram-G4DWMVQ6-BsIUDzV6.js → diagram-G4DWMVQ6-BovIsO6H.js} +1 -1
  131. package/payload/server/public/assets/{diagram-MMDJMWI5-CgHSri2i.js → diagram-MMDJMWI5-DcETsQy-.js} +1 -1
  132. package/payload/server/public/assets/{diagram-TYMM5635-Ce2Wh9ZX.js → diagram-TYMM5635-yyq6peoZ.js} +1 -1
  133. package/payload/server/public/assets/{erDiagram-SMLLAGMA-BU0Kh6OQ.js → erDiagram-SMLLAGMA-CiNToftB.js} +1 -1
  134. package/payload/server/public/assets/{flatten-Bo6YRmWl.js → flatten-BtFI066E.js} +1 -1
  135. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-B0N06MF7.js → flowDiagram-DWJPFMVM-Xnl3SpIM.js} +1 -1
  136. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-BVbx4ARZ.js → ganttDiagram-T4ZO3ILL-C1iyWe0f.js} +1 -1
  137. package/payload/server/public/assets/gitGraph-7Q5UKJZL-CNs-LD5i.js +1 -0
  138. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-C-xRJ94t.js → gitGraphDiagram-UUTBAWPF-D97pbMQb.js} +1 -1
  139. package/payload/server/public/assets/graph-labels-cZu4pK16.js +1 -0
  140. package/payload/server/public/assets/{graph-g48ZcA5M.js → graph-qz5tFKqU.js} +3 -3
  141. package/payload/server/public/assets/{graphlib-YmNcoMjY.js → graphlib-Lq8ijgON.js} +1 -1
  142. package/payload/server/public/assets/info-OMHHGYJF-DsTNigSS.js +1 -0
  143. package/payload/server/public/assets/infoDiagram-42DDH7IO-C_OarRTA.js +2 -0
  144. package/payload/server/public/assets/{isEmpty-D6Kr-M1M.js → isEmpty-D6QovjYR.js} +1 -1
  145. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-DTrq54yC.js → ishikawaDiagram-UXIWVN3A-B8XBdjJn.js} +1 -1
  146. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-OZZZMrFX.js → journeyDiagram-VCZTEJTY-CZYbiOaQ.js} +1 -1
  147. package/payload/server/public/assets/{kanban-definition-6JOO6SKY--w-IP9pN.js → kanban-definition-6JOO6SKY-B1PybFoh.js} +1 -1
  148. package/payload/server/public/assets/{line-Ckeulv5T.js → line-D-tw3hHp.js} +1 -1
  149. package/payload/server/public/assets/{linear-DOh_6k2k.js → linear-BHhXD3cd.js} +1 -1
  150. package/payload/server/public/assets/{mermaid-parser.core-CVRAxYRD.js → mermaid-parser.core-C9RAnysF.js} +2 -2
  151. package/payload/server/public/assets/{mermaid.core-B-mE18I1.js → mermaid.core-B532LT1r.js} +3 -3
  152. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-Bm8mDicL.js → mindmap-definition-QFDTVHPH-DGlgeeTV.js} +1 -1
  153. package/payload/server/public/assets/{ordinal-BDi6f4xk.js → ordinal-Bl-aM5b9.js} +1 -1
  154. package/payload/server/public/assets/packet-4T2RLAQJ-DGES22b-.js +1 -0
  155. package/payload/server/public/assets/pie-ZZUOXDRM-ChKeDbzt.js +1 -0
  156. package/payload/server/public/assets/{pieDiagram-DEJITSTG-BCmRLgGO.js → pieDiagram-DEJITSTG-DV9FIWko.js} +1 -1
  157. package/payload/server/public/assets/{public-DknO-g9S.js → public-Bu2_Xi0a.js} +5 -5
  158. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-CniTIUTm.js → quadrantDiagram-34T5L4WZ-Betwya4l.js} +1 -1
  159. package/payload/server/public/assets/radar-PYXPWWZC-FGG5Fs7N.js +1 -0
  160. package/payload/server/public/assets/{reduce-CGi9ik8i.js → reduce-BD4xUd2c.js} +1 -1
  161. package/payload/server/public/assets/{requirementDiagram-MS252O5E-CoxBSj9M.js → requirementDiagram-MS252O5E-Cq3vODdg.js} +1 -1
  162. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-BjS-4jzq.js → sankeyDiagram-XADWPNL6-x8krXWcS.js} +1 -1
  163. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-B9jVOnPR.js → sequenceDiagram-FGHM5R23-i-_uH-Yl.js} +1 -1
  164. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BvOQPzP8.js → stateDiagram-FHFEXIEX-il4KqSgI.js} +1 -1
  165. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-B6zNJ6Tv.js +1 -0
  166. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-CdfgWLo1.js → timeline-definition-GMOUNBTQ-DATdZkA5.js} +1 -1
  167. package/payload/server/public/assets/treeView-SZITEDCU-VAQQdbtf.js +1 -0
  168. package/payload/server/public/assets/treemap-W4RFUUIX-DKchO3zI.js +1 -0
  169. package/payload/server/public/assets/useSelectionMode-A5KItZ2T.js +13 -0
  170. package/payload/server/public/assets/{brand-D0gNihp7.css → useSelectionMode-C-Ojh7W9.css} +1 -1
  171. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-JCgpIbj-.js → vennDiagram-DHZGUBPP-BJh9tJTt.js} +1 -1
  172. package/payload/server/public/assets/wardley-RL74JXVD-CBGtx0bS.js +1 -0
  173. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-Dei3VqHo.js → wardleyDiagram-NUSXRM2D-EMN1Hdfg.js} +1 -1
  174. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-DUtIyoIb.js → xychartDiagram-5P7HB3ND-DbUWXa7T.js} +1 -1
  175. package/payload/server/public/data.html +5 -5
  176. package/payload/server/public/graph.html +6 -6
  177. package/payload/server/public/index.html +5 -6
  178. package/payload/server/public/public.html +4 -5
  179. package/payload/server/server.js +65 -23
  180. package/payload/platform/plugins/admin/hooks/__tests__/insight.test.sh +0 -395
  181. package/payload/platform/plugins/admin/hooks/insight.sh +0 -219
  182. package/payload/platform/plugins/admin/hooks/lib/admin-graph-pass-common.sh +0 -239
  183. package/payload/server/public/assets/AdminShell-892Jy_rs.js +0 -1
  184. package/payload/server/public/assets/Checkbox-Bc2QzX9b.js +0 -1
  185. package/payload/server/public/assets/admin-D3K13ndi.js +0 -1
  186. package/payload/server/public/assets/architecture-YZFGNWBL--v-pJPNp.js +0 -1
  187. package/payload/server/public/assets/brand-CcN3dELF.js +0 -9
  188. package/payload/server/public/assets/channel-B1IT7to2.js +0 -1
  189. package/payload/server/public/assets/chunk-336JU56O-CdKRCIeE.js +0 -2
  190. package/payload/server/public/assets/chunk-426QAEUC-BybuQ3Ve.js +0 -1
  191. package/payload/server/public/assets/chunk-QZHKN3VN-Bd-GrQM6.js +0 -1
  192. package/payload/server/public/assets/classDiagram-6PBFFD2Q-rjCize6i.js +0 -1
  193. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BORWOUt0.js +0 -1
  194. package/payload/server/public/assets/clone-Csqv5U6T.js +0 -1
  195. package/payload/server/public/assets/data-Br-pdljK.js +0 -1
  196. package/payload/server/public/assets/gitGraph-7Q5UKJZL-CI0s_tqn.js +0 -1
  197. package/payload/server/public/assets/graph-labels-BYH-IPCb.js +0 -1
  198. package/payload/server/public/assets/info-OMHHGYJF-g3gYW7Qm.js +0 -1
  199. package/payload/server/public/assets/infoDiagram-42DDH7IO-Di6oPQ_-.js +0 -2
  200. package/payload/server/public/assets/packet-4T2RLAQJ-CT0TB9HI.js +0 -1
  201. package/payload/server/public/assets/pie-ZZUOXDRM-CXLe7TFF.js +0 -1
  202. package/payload/server/public/assets/radar-PYXPWWZC-DnPLBl-D.js +0 -1
  203. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-v4ND10uR.js +0 -1
  204. package/payload/server/public/assets/treeView-SZITEDCU-C3cb7Xwe.js +0 -1
  205. package/payload/server/public/assets/treemap-W4RFUUIX-Dc7G3Bgm.js +0 -1
  206. package/payload/server/public/assets/useSelectionMode-DwsyptOw.js +0 -5
  207. package/payload/server/public/assets/wardley-RL74JXVD-DtgibWAt.js +0 -1
  208. /package/payload/server/public/assets/{_baseFor-Cam2PbSt.js → _baseFor-Cs8Y-rGh.js} +0 -0
  209. /package/payload/server/public/assets/{array-DYRGGQae.js → array-iHZP4KWJ.js} +0 -0
  210. /package/payload/server/public/assets/{cytoscape.esm-nWsJMTNI.js → cytoscape.esm-BR2GOQ8_.js} +0 -0
  211. /package/payload/server/public/assets/{defaultLocale-Du1XY3Dp.js → defaultLocale-B9aLeOTg.js} +0 -0
  212. /package/payload/server/public/assets/{dist-BzAsli7o.js → dist-DB-VPj_8.js} +0 -0
  213. /package/payload/server/public/assets/{init-B5BXBRcm.js → init-BNFRgqHM.js} +0 -0
  214. /package/payload/server/public/assets/{katex-HOUACuRw.js → katex-B-EfS3nw.js} +0 -0
  215. /package/payload/server/public/assets/{path-CNO468J-.js → path-DmWWdwp7.js} +0 -0
  216. /package/payload/server/public/assets/{rough.esm-DRO6hWPh.js → rough.esm-Ci7Kjt46.js} +0 -0
  217. /package/payload/server/public/assets/{src-CWiyyVfn.js → src-C1jfwBq0.js} +0 -0
@@ -0,0 +1,1371 @@
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>Deck — Craft</title>
7
+ <!--
8
+ ============================================================
9
+ TEMPLATE: CRAFT
10
+
11
+ A warm editorial theme inspired by premium SaaS sites
12
+ (Cursor, Linear, Notion). Parchment tones meet modern software.
13
+
14
+ - Warm cream/parchment base (#f5f0e8)
15
+ - Burnt orange accent for CTAs (#c05a3a)
16
+ - Light font weights with large sizes — elegance through scale
17
+ - Soft rounded cards (12px radius) with subtle borders
18
+ - Classical art + software overlay (signature component)
19
+ - Sans-serif editorial feel (Inter at 300–500)
20
+
21
+ NEW COMPONENTS (craft-specific):
22
+ 22. Testimonial grid (3×2 quote cards with avatar)
23
+ 23. Logo bar (horizontal partner logos)
24
+ 24. Art overlay (painting background + UI mockup)
25
+ 25. Feature card row (3-col with CTA links)
26
+ 26. Update row (changelog-style badges with dates)
27
+
28
+ Same 21 base components + 5 new. Same navigation behavior.
29
+ ============================================================
30
+ -->
31
+ <style>
32
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap');
33
+
34
+ :root {
35
+ --bg: #f5f0e8;
36
+ --bg-card: #ffffff;
37
+ --bg-card-warm: #faf6ef;
38
+ --bg-dark: #1a1a1a;
39
+ --text: #1a1a1a;
40
+ --text-light: #f5f0e8;
41
+ --text-secondary: #6b6560;
42
+ --text-muted: #9a9490;
43
+ --text-faint: #b5b0aa;
44
+ --accent: #c05a3a;
45
+ --accent-hover: #a84d30;
46
+ --border: #e5e0d8;
47
+ --border-strong: #d5d0c8;
48
+ --radius: 12px;
49
+ --radius-sm: 8px;
50
+ --radius-lg: 16px;
51
+ }
52
+
53
+ * { margin: 0; padding: 0; box-sizing: border-box; }
54
+
55
+ html, body {
56
+ width: 100%;
57
+ height: 100%;
58
+ overflow: hidden;
59
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
60
+ background: var(--bg);
61
+ color: var(--text);
62
+ -webkit-font-smoothing: antialiased;
63
+ }
64
+
65
+ .deck {
66
+ width: 100vw;
67
+ height: 100vh;
68
+ position: relative;
69
+ }
70
+
71
+ .slide {
72
+ position: absolute;
73
+ inset: 0;
74
+ display: none;
75
+ align-items: center;
76
+ justify-content: center;
77
+ padding: 6vh 8vw;
78
+ background: var(--bg);
79
+ color: var(--text);
80
+ }
81
+
82
+ .slide.active { display: flex; }
83
+
84
+ .slide-inner {
85
+ width: 100%;
86
+ max-width: 1100px;
87
+ }
88
+
89
+ /* --- Dark slides --- */
90
+ .slide.dark {
91
+ background: var(--bg-dark);
92
+ color: var(--text-light);
93
+ }
94
+
95
+ .slide.dark .eyebrow { color: var(--text-muted); }
96
+ .slide.dark .dim { color: #666; }
97
+ .slide.dark .subtitle { color: #999; }
98
+ .slide.dark .meta { color: #666; }
99
+
100
+ /* --- Typography --- */
101
+ .eyebrow {
102
+ font-size: 0.75rem;
103
+ font-weight: 500;
104
+ text-transform: uppercase;
105
+ letter-spacing: 0.08em;
106
+ color: var(--text-muted);
107
+ margin-bottom: 1.25rem;
108
+ }
109
+
110
+ h1 {
111
+ font-size: clamp(2.5rem, 5.5vw, 4.5rem);
112
+ font-weight: 400;
113
+ line-height: 1.1;
114
+ letter-spacing: -0.03em;
115
+ margin-bottom: 1.2rem;
116
+ }
117
+
118
+ h2 {
119
+ font-size: clamp(1.5rem, 3vw, 2.2rem);
120
+ font-weight: 400;
121
+ line-height: 1.15;
122
+ letter-spacing: -0.02em;
123
+ margin-bottom: 1.2rem;
124
+ }
125
+
126
+ h3 {
127
+ font-size: 1rem;
128
+ font-weight: 500;
129
+ margin-bottom: 0.5rem;
130
+ }
131
+
132
+ .dim {
133
+ color: var(--text-muted);
134
+ font-weight: 300;
135
+ }
136
+
137
+ .subtitle {
138
+ font-size: clamp(0.9rem, 1.2vw, 1.05rem);
139
+ color: var(--text-secondary);
140
+ max-width: 620px;
141
+ line-height: 1.6;
142
+ font-weight: 300;
143
+ margin-top: 0.8rem;
144
+ }
145
+
146
+ .meta {
147
+ font-size: 0.75rem;
148
+ color: var(--text-muted);
149
+ margin-top: 2rem;
150
+ font-weight: 400;
151
+ }
152
+
153
+ .cta-link {
154
+ color: var(--accent);
155
+ text-decoration: none;
156
+ font-size: 0.85rem;
157
+ font-weight: 500;
158
+ display: inline-flex;
159
+ align-items: center;
160
+ gap: 0.3rem;
161
+ transition: color 0.15s;
162
+ }
163
+
164
+ .cta-link:hover { color: var(--accent-hover); }
165
+
166
+ /* --- Quote slide --- */
167
+ .quote-slide { text-align: left; }
168
+ .quote-slide h1 {
169
+ font-size: clamp(2.5rem, 6vw, 5rem);
170
+ max-width: 90%;
171
+ line-height: 1.15;
172
+ }
173
+
174
+ /* --- Two-column --- */
175
+ .two-col {
176
+ display: grid;
177
+ grid-template-columns: 1fr 1fr;
178
+ gap: 3rem;
179
+ margin-top: 2rem;
180
+ }
181
+
182
+ .two-col p {
183
+ font-size: 0.9rem;
184
+ line-height: 1.6;
185
+ color: var(--text-secondary);
186
+ margin-top: 0.5rem;
187
+ font-weight: 300;
188
+ }
189
+
190
+ /* --- Step stack --- */
191
+ .col-stack { display: flex; flex-direction: column; gap: 0.5rem; margin-top: 1rem; }
192
+ .step {
193
+ font-size: 0.85rem;
194
+ padding: 0.6rem 0.85rem;
195
+ border-left: 2px solid var(--border-strong);
196
+ color: var(--text);
197
+ font-weight: 400;
198
+ border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
199
+ background: var(--bg-card);
200
+ }
201
+ .step.dim { color: var(--text-muted); background: transparent; border-left-color: var(--border); }
202
+ .step.kill { color: #b44; border-left-color: #b44; }
203
+ .step.live { color: #3a7; border-left-color: #3a7; }
204
+
205
+ /* --- Three-column --- */
206
+ .three-col {
207
+ display: grid;
208
+ grid-template-columns: 1fr 1fr 1fr;
209
+ gap: 2rem;
210
+ }
211
+
212
+ .three-col p {
213
+ font-size: 0.85rem;
214
+ line-height: 1.55;
215
+ color: var(--text-secondary);
216
+ margin-top: 0.3rem;
217
+ font-weight: 300;
218
+ }
219
+
220
+ /* --- Capability list --- */
221
+ .cap-list { margin-top: 2rem; }
222
+ .cap-row {
223
+ display: grid;
224
+ grid-template-columns: 1fr 2fr;
225
+ gap: 2rem;
226
+ padding: 1.1rem 0;
227
+ border-top: 1px solid var(--border);
228
+ align-items: baseline;
229
+ }
230
+
231
+ .cap-q {
232
+ font-weight: 500;
233
+ font-size: 0.85rem;
234
+ }
235
+
236
+ .cap-a {
237
+ font-size: 0.9rem;
238
+ line-height: 1.55;
239
+ color: var(--text-secondary);
240
+ font-weight: 300;
241
+ }
242
+
243
+ /* --- Dark callout --- */
244
+ .callout {
245
+ background: var(--bg-dark);
246
+ color: var(--text-light);
247
+ padding: 2rem 2.5rem;
248
+ border-radius: var(--radius);
249
+ margin-top: 2.5rem;
250
+ }
251
+
252
+ .callout h3 { color: var(--text-muted); margin-bottom: 0.75rem; }
253
+ .callout p { font-size: 0.95rem; line-height: 1.6; color: #ccc; font-weight: 300; }
254
+ .callout strong { color: #fff; font-weight: 500; }
255
+
256
+ /* --- Dot flow --- */
257
+ .dot-flow {
258
+ display: flex;
259
+ align-items: flex-start;
260
+ gap: 0;
261
+ margin-top: 2.5rem;
262
+ position: relative;
263
+ }
264
+
265
+ .dot-flow::before {
266
+ content: '';
267
+ position: absolute;
268
+ top: 10px;
269
+ left: 10px;
270
+ right: 10px;
271
+ height: 1px;
272
+ background: var(--border-strong);
273
+ }
274
+
275
+ .dot-step { flex: 1; text-align: center; position: relative; z-index: 1; }
276
+ .dot {
277
+ width: 20px;
278
+ height: 20px;
279
+ background: var(--text);
280
+ border-radius: 50%;
281
+ margin: 0 auto 0.75rem;
282
+ }
283
+
284
+ .slide.dark .dot { background: var(--text-light); }
285
+
286
+ .dot-step h4 { font-size: 0.8rem; font-weight: 500; margin-bottom: 0.25rem; }
287
+ .dot-step p { font-size: 0.75rem; color: var(--text-muted); line-height: 1.4; padding: 0 0.5rem; font-weight: 300; }
288
+
289
+ /* --- Stack grid --- */
290
+ .stack-grid {
291
+ display: grid;
292
+ grid-template-columns: 1fr 1fr;
293
+ gap: 1rem;
294
+ margin-top: 2rem;
295
+ }
296
+
297
+ .stack-card {
298
+ background: var(--bg-card);
299
+ border: 1px solid var(--border);
300
+ border-radius: var(--radius);
301
+ padding: 1.5rem;
302
+ }
303
+
304
+ .stack-card-label {
305
+ font-size: 0.65rem;
306
+ font-weight: 500;
307
+ text-transform: uppercase;
308
+ letter-spacing: 0.08em;
309
+ color: var(--text-muted);
310
+ margin-bottom: 0.75rem;
311
+ }
312
+
313
+ .stack-tool {
314
+ font-size: 0.85rem;
315
+ padding: 0.35rem 0;
316
+ display: flex;
317
+ align-items: center;
318
+ gap: 0.5rem;
319
+ font-weight: 400;
320
+ }
321
+
322
+ .mark {
323
+ width: 6px;
324
+ height: 6px;
325
+ background: var(--text);
326
+ border-radius: 50%;
327
+ display: inline-block;
328
+ }
329
+
330
+ /* --- Spec flow --- */
331
+ .spec-flow { margin-top: 2rem; }
332
+
333
+ .spec-block {
334
+ background: var(--bg-card);
335
+ border: 1px solid var(--border);
336
+ border-radius: var(--radius);
337
+ padding: 1.5rem;
338
+ margin-bottom: 1rem;
339
+ }
340
+
341
+ .spec-block h4 {
342
+ font-size: 0.7rem;
343
+ font-weight: 500;
344
+ text-transform: uppercase;
345
+ letter-spacing: 0.08em;
346
+ color: var(--text-muted);
347
+ margin-bottom: 0.5rem;
348
+ }
349
+
350
+ .spec-block p { font-size: 0.9rem; line-height: 1.5; font-weight: 300; }
351
+
352
+ .ctx-row { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 1rem; flex-wrap: wrap; }
353
+ .ctx-label { font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); font-weight: 500; }
354
+ .ctx-pill {
355
+ font-size: 0.7rem;
356
+ padding: 0.25rem 0.75rem;
357
+ background: var(--bg-card);
358
+ border: 1px solid var(--border);
359
+ border-radius: 999px;
360
+ font-weight: 400;
361
+ }
362
+
363
+ .ai-divider { display: flex; align-items: center; gap: 1rem; margin: 1rem 0; }
364
+ .ai-divider .line { flex: 1; height: 1px; background: var(--border); }
365
+ .ai-pill {
366
+ font-size: 0.65rem;
367
+ text-transform: uppercase;
368
+ letter-spacing: 0.08em;
369
+ font-weight: 500;
370
+ color: var(--text-muted);
371
+ padding: 0.3rem 1rem;
372
+ background: var(--bg-card);
373
+ border: 1px solid var(--border);
374
+ border-radius: 999px;
375
+ }
376
+
377
+ .outputs-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
378
+ .output-card {
379
+ background: var(--bg-card);
380
+ border: 1px solid var(--border);
381
+ border-radius: var(--radius);
382
+ padding: 1.25rem;
383
+ }
384
+ .output-card h5 { font-size: 0.7rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 0.4rem; }
385
+ .output-card p { font-size: 0.8rem; color: var(--text-secondary); line-height: 1.4; font-weight: 300; }
386
+
387
+ /* --- Product slide --- */
388
+ .product-row { display: grid; grid-template-columns: 1fr auto; gap: 4rem; align-items: center; }
389
+ .product-meta { max-width: 500px; }
390
+ .product-num { font-size: 0.75rem; font-weight: 400; color: var(--text-muted); margin-bottom: 0.75rem; }
391
+ .product-tag { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 500; color: var(--text-muted); margin-bottom: 1rem; }
392
+ .product-headline { font-size: 1.3rem; font-weight: 400; line-height: 1.3; margin-bottom: 0.75rem; }
393
+ .product-desc { font-size: 0.85rem; line-height: 1.6; color: var(--text-secondary); margin-bottom: 1rem; font-weight: 300; }
394
+ .product-stat { font-size: 0.75rem; font-weight: 500; color: var(--text-muted); padding-top: 0.75rem; border-top: 1px solid var(--border); }
395
+ .product-name {
396
+ font-size: clamp(3rem, 8vw, 7rem);
397
+ font-weight: 300;
398
+ line-height: 0.9;
399
+ letter-spacing: -0.04em;
400
+ text-align: right;
401
+ color: var(--text-faint);
402
+ }
403
+
404
+ /* --- Collage slide --- */
405
+ .collage-slide { padding: 0; background: var(--bg-dark); }
406
+ .collage { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; overflow: hidden; }
407
+ .collage img, .collage video { width: 100%; height: 100%; object-fit: cover; }
408
+
409
+ /* --- JEDUF --- */
410
+ .jeduf { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 1rem; margin-top: 2rem; }
411
+ .jeduf-col { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 1.5rem; }
412
+ .jeduf-col.hero { background: var(--bg-dark); color: var(--text-light); border-color: transparent; }
413
+ .jeduf-label { font-size: 0.6rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.1em; color: var(--text-muted); margin-bottom: 0.5rem; }
414
+ .jeduf-col.hero .jeduf-label { color: #888; }
415
+ .jeduf-title { font-size: 1.1rem; font-weight: 400; margin-bottom: 0.5rem; }
416
+ .jeduf-philosophy { font-size: 0.8rem; font-style: italic; color: var(--text-muted); margin-bottom: 1rem; line-height: 1.4; font-weight: 300; }
417
+ .jeduf-col.hero .jeduf-philosophy { color: #aaa; }
418
+ .jeduf-step { font-size: 0.8rem; padding: 0.3rem 0; border-top: 1px solid var(--border); font-weight: 300; }
419
+ .jeduf-col.hero .jeduf-step { border-top-color: #333; }
420
+
421
+ /* --- Timeline --- */
422
+ .timeline { margin-top: 2rem; }
423
+ .timeline-row { display: grid; grid-template-columns: 80px 24px 1fr; gap: 1.5rem; min-height: 70px; align-items: start; }
424
+ .timeline-year { font-size: 0.8rem; font-weight: 500; text-align: right; padding-top: 2px; color: var(--text-muted); }
425
+ .timeline-track { display: flex; flex-direction: column; align-items: center; height: 100%; }
426
+ .timeline-dot { width: 8px; height: 8px; background: var(--accent); border-radius: 50%; flex-shrink: 0; }
427
+ .timeline-line { width: 1px; flex: 1; background: var(--border); margin-top: 4px; }
428
+ .timeline-row:last-child .timeline-line { display: none; }
429
+ .timeline-content h4 { font-size: 0.85rem; font-weight: 500; margin-bottom: 0.2rem; }
430
+ .timeline-content p { font-size: 0.8rem; color: var(--text-secondary); line-height: 1.4; font-weight: 300; }
431
+
432
+ /* --- Stat grid --- */
433
+ .stat-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-top: 2rem; }
434
+ .stat-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 1.5rem; }
435
+ .stat-card.stat-dark { background: var(--bg-dark); color: var(--text-light); border-color: transparent; }
436
+ .stat-label { font-size: 0.65rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); margin-bottom: 0.5rem; }
437
+ .stat-dark .stat-label { color: #888; }
438
+ .stat-number { font-size: clamp(2rem, 4vw, 3rem); font-weight: 300; letter-spacing: -0.03em; line-height: 1; margin-bottom: 0.5rem; }
439
+ .stat-desc { font-size: 0.75rem; color: var(--text-secondary); line-height: 1.4; font-weight: 300; }
440
+ .stat-dark .stat-desc { color: #999; }
441
+
442
+ /* --- Quote pair --- */
443
+ .quote-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 2rem; }
444
+ .quote-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 2rem; }
445
+ .quote-card.quote-dark { background: var(--bg-dark); color: var(--text-light); border-color: transparent; }
446
+ .quote-text { font-size: 1rem; font-weight: 300; line-height: 1.5; margin-bottom: 1rem; }
447
+ .quote-attr { font-size: 0.7rem; font-weight: 500; color: var(--text-muted); }
448
+ .quote-dark .quote-attr { color: #888; }
449
+
450
+ /* --- Logo grid --- */
451
+ .logo-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin-top: 2rem; }
452
+ .logo-cell { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 1.5rem; text-align: center; }
453
+ .logo-mark { width: 40px; height: 40px; background: var(--bg-dark); border-radius: var(--radius-sm); margin: 0 auto 0.75rem; }
454
+ .logo-name { font-size: 0.8rem; font-weight: 500; }
455
+ .logo-role { font-size: 0.65rem; color: var(--text-muted); margin-top: 0.15rem; }
456
+
457
+ /* --- Code frame --- */
458
+ .code-frame { background: var(--bg-dark); border-radius: var(--radius); margin-top: 1.5rem; overflow: hidden; }
459
+ .code-frame-header { display: flex; align-items: center; padding: 0.75rem 1.25rem; border-bottom: 1px solid #333; }
460
+ .code-frame-dot { width: 8px; height: 8px; border-radius: 50%; background: #444; margin-right: 6px; }
461
+ .code-frame-title { margin-left: auto; font-size: 0.65rem; color: #666; font-weight: 400; }
462
+ .code-frame pre { padding: 1.5rem; font-family: 'SF Mono', ui-monospace, monospace; font-size: 0.78rem; line-height: 1.7; color: #ccc; overflow-x: auto; }
463
+ .code-comment { color: #555; }
464
+ .code-keyword { color: #e0e0e0; }
465
+ .code-string { color: var(--accent); }
466
+ .code-dim { color: #666; }
467
+
468
+ /* ============================================================
469
+ NEW CRAFT-SPECIFIC COMPONENTS
470
+ ============================================================ */
471
+
472
+ /* --- 22. Testimonial grid --- */
473
+ .testimonial-grid {
474
+ display: grid;
475
+ grid-template-columns: repeat(3, 1fr);
476
+ gap: 1rem;
477
+ margin-top: 2rem;
478
+ }
479
+
480
+ .testimonial-card {
481
+ background: var(--bg-card);
482
+ border: 1px solid var(--border);
483
+ border-radius: var(--radius);
484
+ padding: 1.5rem;
485
+ display: flex;
486
+ flex-direction: column;
487
+ justify-content: space-between;
488
+ }
489
+
490
+ .testimonial-quote {
491
+ font-size: 0.85rem;
492
+ line-height: 1.55;
493
+ color: var(--text);
494
+ font-weight: 400;
495
+ margin-bottom: 1.25rem;
496
+ }
497
+
498
+ .testimonial-author {
499
+ display: flex;
500
+ align-items: center;
501
+ gap: 0.75rem;
502
+ }
503
+
504
+ .testimonial-avatar {
505
+ width: 32px;
506
+ height: 32px;
507
+ border-radius: 50%;
508
+ background: var(--border-strong);
509
+ flex-shrink: 0;
510
+ }
511
+
512
+ .testimonial-name {
513
+ font-size: 0.75rem;
514
+ font-weight: 500;
515
+ line-height: 1.3;
516
+ }
517
+
518
+ .testimonial-title {
519
+ font-size: 0.65rem;
520
+ color: var(--text-muted);
521
+ font-weight: 400;
522
+ }
523
+
524
+ /* --- 23. Logo bar --- */
525
+ .logo-bar {
526
+ display: flex;
527
+ align-items: center;
528
+ justify-content: center;
529
+ gap: 3rem;
530
+ margin-top: 2rem;
531
+ padding: 1.5rem 2rem;
532
+ border-top: 1px solid var(--border);
533
+ border-bottom: 1px solid var(--border);
534
+ flex-wrap: wrap;
535
+ }
536
+
537
+ .logo-bar-item {
538
+ font-size: 1.1rem;
539
+ font-weight: 600;
540
+ color: var(--text);
541
+ letter-spacing: -0.02em;
542
+ white-space: nowrap;
543
+ }
544
+
545
+ /* --- 24. Art overlay (painting + UI) --- */
546
+ .art-overlay {
547
+ position: relative;
548
+ margin-top: 2rem;
549
+ border-radius: var(--radius-lg);
550
+ overflow: hidden;
551
+ aspect-ratio: 16/9;
552
+ }
553
+
554
+ .art-overlay-bg {
555
+ position: absolute;
556
+ inset: 0;
557
+ background: linear-gradient(135deg, #8b7355 0%, #a0926e 25%, #6b7c5a 50%, #8a9470 75%, #c4b896 100%);
558
+ filter: brightness(0.85) saturate(0.8);
559
+ }
560
+
561
+ .art-overlay-ui {
562
+ position: absolute;
563
+ inset: 10%;
564
+ background: var(--bg-card);
565
+ border-radius: var(--radius);
566
+ box-shadow: 0 25px 80px rgba(0,0,0,0.3), 0 8px 20px rgba(0,0,0,0.15);
567
+ display: flex;
568
+ flex-direction: column;
569
+ overflow: hidden;
570
+ }
571
+
572
+ .art-overlay-titlebar {
573
+ display: flex;
574
+ align-items: center;
575
+ padding: 0.6rem 1rem;
576
+ background: #f8f8f6;
577
+ border-bottom: 1px solid var(--border);
578
+ gap: 0.4rem;
579
+ }
580
+
581
+ .art-overlay-dot {
582
+ width: 8px;
583
+ height: 8px;
584
+ border-radius: 50%;
585
+ }
586
+
587
+ .art-overlay-dot:nth-child(1) { background: #ff605c; }
588
+ .art-overlay-dot:nth-child(2) { background: #ffbd44; }
589
+ .art-overlay-dot:nth-child(3) { background: #00ca4e; }
590
+
591
+ .art-overlay-content {
592
+ flex: 1;
593
+ padding: 1.5rem;
594
+ display: flex;
595
+ gap: 1rem;
596
+ font-size: 0.7rem;
597
+ color: var(--text-secondary);
598
+ overflow: hidden;
599
+ }
600
+
601
+ .art-overlay-sidebar {
602
+ width: 35%;
603
+ border-right: 1px solid var(--border);
604
+ padding-right: 1rem;
605
+ }
606
+
607
+ .art-overlay-main {
608
+ flex: 1;
609
+ display: flex;
610
+ flex-direction: column;
611
+ gap: 0.5rem;
612
+ }
613
+
614
+ .art-overlay-line {
615
+ height: 6px;
616
+ background: var(--border);
617
+ border-radius: 3px;
618
+ }
619
+
620
+ .art-overlay-line.short { width: 60%; }
621
+ .art-overlay-line.accent { background: var(--accent); width: 40%; opacity: 0.6; }
622
+
623
+ .art-overlay-caption {
624
+ position: absolute;
625
+ bottom: 0;
626
+ left: 0;
627
+ right: 0;
628
+ padding: 2rem 2.5rem;
629
+ background: linear-gradient(transparent, rgba(0,0,0,0.7));
630
+ color: #fff;
631
+ }
632
+
633
+ .art-overlay-caption h3 {
634
+ font-size: 1.1rem;
635
+ font-weight: 400;
636
+ color: #fff;
637
+ margin-bottom: 0.25rem;
638
+ }
639
+
640
+ .art-overlay-caption p {
641
+ font-size: 0.75rem;
642
+ color: rgba(255,255,255,0.7);
643
+ font-weight: 300;
644
+ }
645
+
646
+ /* --- 25. Feature card row --- */
647
+ .feature-cards {
648
+ display: grid;
649
+ grid-template-columns: repeat(3, 1fr);
650
+ gap: 1rem;
651
+ margin-top: 2rem;
652
+ }
653
+
654
+ .feature-card {
655
+ background: var(--bg-card);
656
+ border: 1px solid var(--border);
657
+ border-radius: var(--radius);
658
+ padding: 1.75rem;
659
+ display: flex;
660
+ flex-direction: column;
661
+ justify-content: space-between;
662
+ min-height: 200px;
663
+ }
664
+
665
+ .feature-card-title {
666
+ font-size: 1rem;
667
+ font-weight: 500;
668
+ margin-bottom: 0.5rem;
669
+ }
670
+
671
+ .feature-card-desc {
672
+ font-size: 0.85rem;
673
+ color: var(--text-secondary);
674
+ line-height: 1.55;
675
+ font-weight: 300;
676
+ margin-bottom: 1.5rem;
677
+ }
678
+
679
+ .feature-card-inner {
680
+ background: var(--bg-card-warm);
681
+ border: 1px solid var(--border);
682
+ border-radius: var(--radius-sm);
683
+ padding: 1rem;
684
+ flex: 1;
685
+ margin-top: 1rem;
686
+ display: flex;
687
+ flex-direction: column;
688
+ justify-content: center;
689
+ gap: 0.4rem;
690
+ }
691
+
692
+ .feature-card-mock-line {
693
+ height: 5px;
694
+ background: var(--border);
695
+ border-radius: 3px;
696
+ }
697
+
698
+ .feature-card-mock-line.short { width: 50%; }
699
+ .feature-card-mock-line.accent { background: var(--accent); width: 35%; opacity: 0.4; }
700
+
701
+ /* --- 26. Update row (changelog) --- */
702
+ .update-row {
703
+ display: grid;
704
+ grid-template-columns: repeat(4, 1fr);
705
+ gap: 1rem;
706
+ margin-top: 2rem;
707
+ }
708
+
709
+ .update-card {
710
+ background: var(--bg-card);
711
+ border: 1px solid var(--border);
712
+ border-radius: var(--radius);
713
+ padding: 1.25rem;
714
+ }
715
+
716
+ .update-header {
717
+ display: flex;
718
+ align-items: center;
719
+ gap: 0.5rem;
720
+ margin-bottom: 0.75rem;
721
+ }
722
+
723
+ .update-badge {
724
+ font-size: 0.6rem;
725
+ font-weight: 500;
726
+ padding: 0.15rem 0.5rem;
727
+ border: 1px solid var(--border-strong);
728
+ border-radius: 999px;
729
+ color: var(--text-secondary);
730
+ }
731
+
732
+ .update-date {
733
+ font-size: 0.7rem;
734
+ color: var(--text-muted);
735
+ font-weight: 400;
736
+ }
737
+
738
+ .update-title {
739
+ font-size: 0.85rem;
740
+ font-weight: 400;
741
+ line-height: 1.4;
742
+ }
743
+
744
+ /* --- Progress bar --- */
745
+ #progress {
746
+ position: fixed;
747
+ top: 0;
748
+ left: 0;
749
+ height: 2px;
750
+ background: var(--accent);
751
+ transition: width 0.3s ease;
752
+ z-index: 100;
753
+ }
754
+
755
+ /* --- Navigation --- */
756
+ .nav {
757
+ position: fixed;
758
+ bottom: 2rem;
759
+ right: 2.5rem;
760
+ display: flex;
761
+ align-items: center;
762
+ gap: 0.75rem;
763
+ z-index: 100;
764
+ }
765
+
766
+ .nav span {
767
+ font-size: 0.7rem;
768
+ color: var(--text-muted);
769
+ font-weight: 400;
770
+ }
771
+
772
+ .nav-buttons { display: flex; gap: 0.35rem; }
773
+ .nav-btn {
774
+ width: 32px;
775
+ height: 32px;
776
+ border: 1px solid var(--border);
777
+ border-radius: var(--radius-sm);
778
+ background: var(--bg-card);
779
+ color: var(--text);
780
+ cursor: pointer;
781
+ font-size: 1rem;
782
+ display: flex;
783
+ align-items: center;
784
+ justify-content: center;
785
+ transition: all 0.15s;
786
+ }
787
+
788
+ .nav-btn:hover {
789
+ background: var(--text);
790
+ color: var(--bg);
791
+ border-color: var(--text);
792
+ }
793
+
794
+ /* --- PDF button --- */
795
+ .pdf-btn {
796
+ position: fixed;
797
+ bottom: 2rem;
798
+ left: 2.5rem;
799
+ font-size: 0.65rem;
800
+ font-weight: 500;
801
+ border: 1px solid var(--border);
802
+ border-radius: var(--radius-sm);
803
+ background: var(--bg-card);
804
+ color: var(--text-muted);
805
+ padding: 0.5rem 1.25rem;
806
+ cursor: pointer;
807
+ font-family: inherit;
808
+ transition: all 0.15s;
809
+ z-index: 100;
810
+ }
811
+
812
+ .pdf-btn:hover { background: var(--text); color: var(--bg); border-color: var(--text); }
813
+
814
+ /* --- Print --- */
815
+ @page { size: 13.333in 7.5in; margin: 0; }
816
+ @media print {
817
+ html, body { overflow: visible; height: auto; }
818
+ .slide { display: flex !important; position: relative; page-break-after: always; height: 100vh; }
819
+ .nav, .pdf-btn, #progress { display: none !important; }
820
+ }
821
+ </style>
822
+ </head>
823
+ <body>
824
+
825
+ <div id="progress"></div>
826
+
827
+ <div class="deck">
828
+
829
+ <!-- ========== 1. COVER ========== -->
830
+ <section class="slide active">
831
+ <div class="slide-inner">
832
+ <div class="eyebrow">Company · Product launch</div>
833
+ <h1>Built to make you<br>extraordinarily productive.</h1>
834
+ <p class="subtitle">A single sentence that frames what you've built, why it matters, and who it's for. Clear, warm, no jargon.</p>
835
+ <div class="meta">Name · Title · Date</div>
836
+ </div>
837
+ </section>
838
+
839
+ <!-- ========== 2. QUOTE ========== -->
840
+ <section class="slide quote-slide">
841
+ <div class="slide-inner">
842
+ <h1>The new way to build software.</h1>
843
+ </div>
844
+ </section>
845
+
846
+ <!-- ========== 3. LOGO BAR ========== -->
847
+ <section class="slide">
848
+ <div class="slide-inner">
849
+ <div class="eyebrow" style="text-align:center;">Trusted every day by teams that build world-class software</div>
850
+ <div class="logo-bar">
851
+ <div class="logo-bar-item">Stripe</div>
852
+ <div class="logo-bar-item">OpenAI</div>
853
+ <div class="logo-bar-item">Linear</div>
854
+ <div class="logo-bar-item">Datadog</div>
855
+ <div class="logo-bar-item">NVIDIA</div>
856
+ <div class="logo-bar-item">Figma</div>
857
+ <div class="logo-bar-item">Adobe</div>
858
+ </div>
859
+ </div>
860
+ </section>
861
+
862
+ <!-- ========== 4. ART OVERLAY ========== -->
863
+ <section class="slide">
864
+ <div class="slide-inner">
865
+ <div class="eyebrow">The experience</div>
866
+ <h2>Agents turn ideas into code.</h2>
867
+ <p class="subtitle">Accelerate development by handing off tasks, while you focus on making decisions.</p>
868
+ <div class="art-overlay">
869
+ <div class="art-overlay-bg"></div>
870
+ <div class="art-overlay-ui">
871
+ <div class="art-overlay-titlebar">
872
+ <div class="art-overlay-dot"></div>
873
+ <div class="art-overlay-dot"></div>
874
+ <div class="art-overlay-dot"></div>
875
+ </div>
876
+ <div class="art-overlay-content">
877
+ <div class="art-overlay-sidebar">
878
+ <div class="art-overlay-line" style="margin-bottom:0.5rem;"></div>
879
+ <div class="art-overlay-line short" style="margin-bottom:0.8rem;"></div>
880
+ <div class="art-overlay-line" style="margin-bottom:0.4rem;"></div>
881
+ <div class="art-overlay-line" style="margin-bottom:0.4rem;"></div>
882
+ <div class="art-overlay-line accent" style="margin-bottom:0.4rem;"></div>
883
+ <div class="art-overlay-line" style="margin-bottom:0.4rem;"></div>
884
+ <div class="art-overlay-line short"></div>
885
+ </div>
886
+ <div class="art-overlay-main">
887
+ <div class="art-overlay-line" style="width:80%;"></div>
888
+ <div class="art-overlay-line short"></div>
889
+ <div style="height:0.5rem;"></div>
890
+ <div class="art-overlay-line"></div>
891
+ <div class="art-overlay-line"></div>
892
+ <div class="art-overlay-line" style="width:70%;"></div>
893
+ <div style="height:0.5rem;"></div>
894
+ <div class="art-overlay-line accent" style="width:25%;"></div>
895
+ </div>
896
+ </div>
897
+ </div>
898
+ </div>
899
+ </div>
900
+ </section>
901
+
902
+ <!-- ========== 5. FEATURE CARDS ========== -->
903
+ <section class="slide">
904
+ <div class="slide-inner">
905
+ <h2>Understands your codebase,<br><span class="dim">no matter the size.</span></h2>
906
+ <div class="feature-cards">
907
+ <div class="feature-card">
908
+ <div>
909
+ <div class="feature-card-title">Multiple models</div>
910
+ <div class="feature-card-desc">Subagents run in parallel to explore your codebase, each using the best model for the task.</div>
911
+ </div>
912
+ <div class="feature-card-inner">
913
+ <div class="feature-card-mock-line"></div>
914
+ <div class="feature-card-mock-line short"></div>
915
+ <div class="feature-card-mock-line accent"></div>
916
+ </div>
917
+ </div>
918
+ <div class="feature-card">
919
+ <div>
920
+ <div class="feature-card-title">Deep indexing</div>
921
+ <div class="feature-card-desc">A custom embedding model gives agents best-in-class recall across large codebases.</div>
922
+ </div>
923
+ <div class="feature-card-inner">
924
+ <div class="feature-card-mock-line"></div>
925
+ <div class="feature-card-mock-line"></div>
926
+ <div class="feature-card-mock-line short"></div>
927
+ </div>
928
+ </div>
929
+ <div class="feature-card">
930
+ <div>
931
+ <div class="feature-card-title">Team rules</div>
932
+ <div class="feature-card-desc">Teach it your preferences, from team conventions to specific architectural decisions.</div>
933
+ </div>
934
+ <div class="feature-card-inner">
935
+ <div class="feature-card-mock-line accent"></div>
936
+ <div class="feature-card-mock-line"></div>
937
+ <div class="feature-card-mock-line short"></div>
938
+ </div>
939
+ </div>
940
+ </div>
941
+ </div>
942
+ </section>
943
+
944
+ <!-- ========== 6. TWO-COLUMN ========== -->
945
+ <section class="slide">
946
+ <div class="slide-inner">
947
+ <div class="eyebrow">The shift</div>
948
+ <h2>Before and after.</h2>
949
+ <div class="two-col">
950
+ <div>
951
+ <h3>The old way</h3>
952
+ <p>Manual search across files. Copy-paste between tools. Context switching that kills focus. Hours spent on boilerplate that adds no value.</p>
953
+ </div>
954
+ <div>
955
+ <h3>The new way</h3>
956
+ <p>Describe what you want. The agent reads your codebase, understands your patterns, and builds it. You review and iterate.</p>
957
+ </div>
958
+ </div>
959
+ </div>
960
+ </section>
961
+
962
+ <!-- ========== 7. TESTIMONIAL GRID ========== -->
963
+ <section class="slide">
964
+ <div class="slide-inner">
965
+ <h2 style="text-align:center;">The new way to build software.</h2>
966
+ <div class="testimonial-grid">
967
+ <div class="testimonial-card">
968
+ <div class="testimonial-quote">"It was night and day from one batch to another, adoption went from single digits to over 80%."</div>
969
+ <div class="testimonial-author">
970
+ <div class="testimonial-avatar"></div>
971
+ <div><div class="testimonial-name">Name One</div><div class="testimonial-title">Role, Company</div></div>
972
+ </div>
973
+ </div>
974
+ <div class="testimonial-card">
975
+ <div class="testimonial-quote">"Every one of our engineers, some 40,000, are now assisted by AI and our productivity has gone up incredibly."</div>
976
+ <div class="testimonial-author">
977
+ <div class="testimonial-avatar"></div>
978
+ <div><div class="testimonial-name">Name Two</div><div class="testimonial-title">Role, Company</div></div>
979
+ </div>
980
+ </div>
981
+ <div class="testimonial-card">
982
+ <div class="testimonial-quote">"You control how much independence to give the AI. You can do targeted edits, or you can let it rip."</div>
983
+ <div class="testimonial-author">
984
+ <div class="testimonial-avatar"></div>
985
+ <div><div class="testimonial-name">Name Three</div><div class="testimonial-title">Role, Company</div></div>
986
+ </div>
987
+ </div>
988
+ <div class="testimonial-card">
989
+ <div class="testimonial-quote">"We spend more on R&D and software creation than any other undertaking, and there's significant economic advantages."</div>
990
+ <div class="testimonial-author">
991
+ <div class="testimonial-avatar"></div>
992
+ <div><div class="testimonial-name">Name Four</div><div class="testimonial-title">Role, Company</div></div>
993
+ </div>
994
+ </div>
995
+ <div class="testimonial-card">
996
+ <div class="testimonial-quote">"The most useful AI tool that I currently pay for, hands down. It's fast, autocompletes when and where you need it."</div>
997
+ <div class="testimonial-author">
998
+ <div class="testimonial-avatar"></div>
999
+ <div><div class="testimonial-name">Name Five</div><div class="testimonial-title">Role, Company</div></div>
1000
+ </div>
1001
+ </div>
1002
+ <div class="testimonial-card">
1003
+ <div class="testimonial-quote">"We are at the 1% of what's possible, and it's in interactive experiences like this where models shine brightest."</div>
1004
+ <div class="testimonial-author">
1005
+ <div class="testimonial-avatar"></div>
1006
+ <div><div class="testimonial-name">Name Six</div><div class="testimonial-title">Role, Company</div></div>
1007
+ </div>
1008
+ </div>
1009
+ </div>
1010
+ </div>
1011
+ </section>
1012
+
1013
+ <!-- ========== 8. CAPABILITY LIST ========== -->
1014
+ <section class="slide">
1015
+ <div class="slide-inner">
1016
+ <div class="eyebrow">Everywhere you work</div>
1017
+ <h2>One agent across every surface.</h2>
1018
+ <div class="cap-list">
1019
+ <div class="cap-row"><div class="cap-q">Desktop</div><div class="cap-a">The full IDE experience. Manual to agentic coding, in one familiar editor.</div></div>
1020
+ <div class="cap-row"><div class="cap-q">CLI</div><div class="cap-a">Run agents in any terminal, script, or editor. Same power, no GUI needed.</div></div>
1021
+ <div class="cap-row"><div class="cap-q">Integrations</div><div class="cap-a">Start agents from GitHub, Slack, Linear, and more. Where your team already works.</div></div>
1022
+ <div class="cap-row"><div class="cap-q">Web & Mobile</div><div class="cap-a">Run cloud agents from your browser or phone. No installation required.</div></div>
1023
+ </div>
1024
+ </div>
1025
+ </section>
1026
+
1027
+ <!-- ========== 9. STAT GRID ========== -->
1028
+ <section class="slide">
1029
+ <div class="slide-inner">
1030
+ <div class="eyebrow">Impact</div>
1031
+ <h2>The numbers.</h2>
1032
+ <div class="stat-grid">
1033
+ <div class="stat-card">
1034
+ <div class="stat-label">Adoption</div>
1035
+ <div class="stat-number">80%+</div>
1036
+ <div class="stat-desc">Team adoption rate within the first quarter of deployment.</div>
1037
+ </div>
1038
+ <div class="stat-card stat-dark">
1039
+ <div class="stat-label">Engineers</div>
1040
+ <div class="stat-number">40,000</div>
1041
+ <div class="stat-desc">Engineers using AI-assisted development across the organization.</div>
1042
+ </div>
1043
+ <div class="stat-card">
1044
+ <div class="stat-label">Velocity</div>
1045
+ <div class="stat-number">3×</div>
1046
+ <div class="stat-desc">Faster from idea to pull request compared to the previous year.</div>
1047
+ </div>
1048
+ </div>
1049
+ </div>
1050
+ </section>
1051
+
1052
+ <!-- ========== 10. DOT FLOW ========== -->
1053
+ <section class="slide">
1054
+ <div class="slide-inner">
1055
+ <div class="eyebrow">Workflow</div>
1056
+ <h2>How it works.</h2>
1057
+ <div class="dot-flow">
1058
+ <div class="dot-step"><div class="dot"></div><h4>Describe</h4><p>Tell the agent what you need</p></div>
1059
+ <div class="dot-step"><div class="dot"></div><h4>Plan</h4><p>Agent reads codebase, proposes steps</p></div>
1060
+ <div class="dot-step"><div class="dot"></div><h4>Build</h4><p>Code written across files</p></div>
1061
+ <div class="dot-step"><div class="dot"></div><h4>Review</h4><p>You inspect the diff</p></div>
1062
+ <div class="dot-step"><div class="dot"></div><h4>Ship</h4><p>Merge and deploy</p></div>
1063
+ </div>
1064
+ </div>
1065
+ </section>
1066
+
1067
+ <!-- ========== 11. DARK CALLOUT ========== -->
1068
+ <section class="slide">
1069
+ <div class="slide-inner">
1070
+ <div class="eyebrow">Why now</div>
1071
+ <h2>The moment matters.</h2>
1072
+ <div class="callout">
1073
+ <h3>Context</h3>
1074
+ <p>The tools are finally good enough. <strong>Not because AI got smarter — because it learned to read your code.</strong> Context-aware agents change the economics of software development.</p>
1075
+ </div>
1076
+ </div>
1077
+ </section>
1078
+
1079
+ <!-- ========== 12. UPDATE ROW ========== -->
1080
+ <section class="slide">
1081
+ <div class="slide-inner">
1082
+ <div class="eyebrow">Changelog</div>
1083
+ <h2>Always shipping.</h2>
1084
+ <div class="update-row">
1085
+ <div class="update-card">
1086
+ <div class="update-header">
1087
+ <span class="update-badge">3.3</span>
1088
+ <span class="update-date">May 7, 2026</span>
1089
+ </div>
1090
+ <div class="update-title">PR Review, Build Plan in Parallel, and Split PRs</div>
1091
+ </div>
1092
+ <div class="update-card">
1093
+ <div class="update-header">
1094
+ <span class="update-badge">3.3</span>
1095
+ <span class="update-date">May 6, 2026</span>
1096
+ </div>
1097
+ <div class="update-title">Context Usage Breakdown</div>
1098
+ </div>
1099
+ <div class="update-card">
1100
+ <div class="update-header">
1101
+ <span class="update-date">May 4, 2026</span>
1102
+ </div>
1103
+ <div class="update-title">Model controls, spend management, and usage analytics</div>
1104
+ </div>
1105
+ <div class="update-card">
1106
+ <div class="update-header">
1107
+ <span class="update-date">May 1, 2026</span>
1108
+ </div>
1109
+ <div class="update-title">Team Marketplace Updates</div>
1110
+ </div>
1111
+ </div>
1112
+ <div style="margin-top:1.25rem;">
1113
+ <a href="#" class="cta-link">See what's new &rarr;</a>
1114
+ </div>
1115
+ </div>
1116
+ </section>
1117
+
1118
+ <!-- ========== 13. THREE-COLUMN ========== -->
1119
+ <section class="slide">
1120
+ <div class="slide-inner">
1121
+ <div class="eyebrow">Architecture</div>
1122
+ <h2>Three pillars.</h2>
1123
+ <div class="three-col" style="margin-top: 2rem;">
1124
+ <div><h3>Models</h3><p>The best foundation models, orchestrated to work together. Each sub-task routed to the right model.</p></div>
1125
+ <div><h3>Context</h3><p>Deep codebase understanding through custom embeddings. The agent knows your patterns before you ask.</p></div>
1126
+ <div><h3>Interface</h3><p>Meet developers where they are. Desktop, terminal, browser, phone. One experience everywhere.</p></div>
1127
+ </div>
1128
+ </div>
1129
+ </section>
1130
+
1131
+ <!-- ========== 14. TIMELINE ========== -->
1132
+ <section class="slide">
1133
+ <div class="slide-inner">
1134
+ <div class="eyebrow">Journey</div>
1135
+ <h2>How we got here.</h2>
1136
+ <div class="timeline">
1137
+ <div class="timeline-row">
1138
+ <div class="timeline-year">2022</div>
1139
+ <div class="timeline-track"><div class="timeline-dot"></div><div class="timeline-line"></div></div>
1140
+ <div class="timeline-content"><h4>Started</h4><p>Small team, big bet. The hypothesis: AI can understand entire codebases.</p></div>
1141
+ </div>
1142
+ <div class="timeline-row">
1143
+ <div class="timeline-year">2023</div>
1144
+ <div class="timeline-track"><div class="timeline-dot"></div><div class="timeline-line"></div></div>
1145
+ <div class="timeline-content"><h4>Product-market fit</h4><p>Tab completion that actually works. Developers started switching in weeks, not months.</p></div>
1146
+ </div>
1147
+ <div class="timeline-row">
1148
+ <div class="timeline-year">2025</div>
1149
+ <div class="timeline-track"><div class="timeline-dot"></div><div class="timeline-line"></div></div>
1150
+ <div class="timeline-content"><h4>Agents</h4><p>From autocomplete to autonomous. Agents that plan, build, and iterate across entire projects.</p></div>
1151
+ </div>
1152
+ <div class="timeline-row">
1153
+ <div class="timeline-year">2026</div>
1154
+ <div class="timeline-track"><div class="timeline-dot"></div><div class="timeline-line"></div></div>
1155
+ <div class="timeline-content"><h4>The platform</h4><p>Every surface. Every team. The way software gets built, fundamentally different.</p></div>
1156
+ </div>
1157
+ </div>
1158
+ </div>
1159
+ </section>
1160
+
1161
+ <!-- ========== 15. PRODUCT SLIDE ========== -->
1162
+ <section class="slide">
1163
+ <div class="slide-inner">
1164
+ <div class="product-row">
1165
+ <div class="product-meta">
1166
+ <div class="product-num">/01</div>
1167
+ <div class="product-tag">Core product</div>
1168
+ <h3 class="product-headline">The IDE that thinks with you.</h3>
1169
+ <p class="product-desc">Not just autocomplete. A full development environment that understands your codebase, your team's conventions, and your intent.</p>
1170
+ <div class="product-stat">Used by 40,000+ engineers</div>
1171
+ </div>
1172
+ <div class="product-name">Editor</div>
1173
+ </div>
1174
+ </div>
1175
+ </section>
1176
+
1177
+ <!-- ========== 16. COLLAGE ========== -->
1178
+ <section class="slide collage-slide">
1179
+ <div class="collage">
1180
+ <img src="media/KMSsp437.jpg" alt="" style="width:100%;height:100%;object-fit:cover;">
1181
+ </div>
1182
+ </section>
1183
+
1184
+ <!-- ========== 17. QUOTE PAIR ========== -->
1185
+ <section class="slide">
1186
+ <div class="slide-inner">
1187
+ <div class="eyebrow">Perspectives</div>
1188
+ <h2>Two views.</h2>
1189
+ <div class="quote-pair">
1190
+ <div class="quote-card">
1191
+ <div class="quote-text">"The best tools disappear. You stop thinking about the tool and start thinking about the work."</div>
1192
+ <div class="quote-attr">Builder</div>
1193
+ </div>
1194
+ <div class="quote-card quote-dark">
1195
+ <div class="quote-text">"Speed without quality is just faster failure. The bar has to stay high."</div>
1196
+ <div class="quote-attr">Architect</div>
1197
+ </div>
1198
+ </div>
1199
+ </div>
1200
+ </section>
1201
+
1202
+ <!-- ========== 18. JEDUF ========== -->
1203
+ <section class="slide">
1204
+ <div class="slide-inner">
1205
+ <div class="eyebrow">Spectrum</div>
1206
+ <h2>Finding the right level.</h2>
1207
+ <div class="jeduf">
1208
+ <div class="jeduf-col">
1209
+ <div class="jeduf-label">Too manual</div>
1210
+ <div class="jeduf-title">Write everything</div>
1211
+ <div class="jeduf-philosophy">"Every line by hand."</div>
1212
+ <div class="jeduf-step">Full control</div>
1213
+ <div class="jeduf-step">Slow iteration</div>
1214
+ <div class="jeduf-step">High cognitive load</div>
1215
+ </div>
1216
+ <div class="jeduf-col hero">
1217
+ <div class="jeduf-label">Just right</div>
1218
+ <div class="jeduf-title">Human + agent</div>
1219
+ <div class="jeduf-philosophy">"You decide. It builds."</div>
1220
+ <div class="jeduf-step">Intent-driven</div>
1221
+ <div class="jeduf-step">Fast iteration</div>
1222
+ <div class="jeduf-step">Quality preserved</div>
1223
+ </div>
1224
+ <div class="jeduf-col">
1225
+ <div class="jeduf-label">Too autonomous</div>
1226
+ <div class="jeduf-title">Fully automated</div>
1227
+ <div class="jeduf-philosophy">"Just ship it, fix later."</div>
1228
+ <div class="jeduf-step">No oversight</div>
1229
+ <div class="jeduf-step">Drift from intent</div>
1230
+ <div class="jeduf-step">Technical debt</div>
1231
+ </div>
1232
+ </div>
1233
+ </div>
1234
+ </section>
1235
+
1236
+ <!-- ========== 19. DARK SLIDE ========== -->
1237
+ <section class="slide dark">
1238
+ <div class="slide-inner">
1239
+ <div class="eyebrow">The honest part</div>
1240
+ <h1>We're early. <span class="dim">And that's the point.</span></h1>
1241
+ <p class="subtitle">The tools will get better. The models will get smarter. The teams that start building this way now will compound every advantage.</p>
1242
+ </div>
1243
+ </section>
1244
+
1245
+ <!-- ========== 20. ART OVERLAY (as closing visual) ========== -->
1246
+ <section class="slide">
1247
+ <div class="slide-inner" style="display:flex; flex-direction:column; align-items:center; text-align:center;">
1248
+ <h2>Craft meets code.</h2>
1249
+ <p class="subtitle" style="text-align:center; margin-bottom:2rem;">The best software has always been made by people who care deeply about their tools.</p>
1250
+ <div class="art-overlay" style="width:100%; max-width:900px;">
1251
+ <div class="art-overlay-bg" style="background:linear-gradient(160deg, #7a6a4a 0%, #9a8866 20%, #5a6a4a 45%, #889070 65%, #b4a876 85%, #d4c896 100%);"></div>
1252
+ <div class="art-overlay-ui">
1253
+ <div class="art-overlay-titlebar">
1254
+ <div class="art-overlay-dot"></div>
1255
+ <div class="art-overlay-dot"></div>
1256
+ <div class="art-overlay-dot"></div>
1257
+ </div>
1258
+ <div class="art-overlay-content">
1259
+ <div class="art-overlay-sidebar">
1260
+ <div class="art-overlay-line" style="margin-bottom:0.5rem;"></div>
1261
+ <div class="art-overlay-line short" style="margin-bottom:0.8rem;"></div>
1262
+ <div class="art-overlay-line accent" style="margin-bottom:0.4rem;"></div>
1263
+ <div class="art-overlay-line" style="margin-bottom:0.4rem;"></div>
1264
+ <div class="art-overlay-line short"></div>
1265
+ </div>
1266
+ <div class="art-overlay-main">
1267
+ <div class="art-overlay-line" style="width:85%;"></div>
1268
+ <div class="art-overlay-line short"></div>
1269
+ <div style="height:0.3rem;"></div>
1270
+ <div class="art-overlay-line"></div>
1271
+ <div class="art-overlay-line" style="width:75%;"></div>
1272
+ <div style="height:0.3rem;"></div>
1273
+ <div class="art-overlay-line accent" style="width:30%;"></div>
1274
+ </div>
1275
+ </div>
1276
+ </div>
1277
+ <div class="art-overlay-caption">
1278
+ <h3>Your product, built with care.</h3>
1279
+ <p>Classical craft. Modern tools. The same attention to detail.</p>
1280
+ </div>
1281
+ </div>
1282
+ </div>
1283
+ </section>
1284
+
1285
+ <!-- ========== 21. CLOSING ========== -->
1286
+ <section class="slide dark quote-slide">
1287
+ <div class="slide-inner">
1288
+ <h1>Stay on<br>the frontier.</h1>
1289
+ </div>
1290
+ </section>
1291
+
1292
+ <!-- ========== 22. THANKS ========== -->
1293
+ <section class="slide">
1294
+ <div class="slide-inner">
1295
+ <h1 style="font-size: clamp(2.5rem, 5vw, 4rem); font-weight: 300;">Thank you.</h1>
1296
+ <p class="subtitle">Questions?</p>
1297
+ <div class="meta">Name · Title</div>
1298
+ <div style="margin-top: 1.5rem;">
1299
+ <a href="#" class="cta-link">Learn more &rarr;</a>
1300
+ </div>
1301
+ </div>
1302
+ </section>
1303
+
1304
+ </div>
1305
+
1306
+ <button class="pdf-btn" onclick="downloadPDF()">Download PDF</button>
1307
+
1308
+ <div class="nav">
1309
+ <span id="counter">1 / 22</span>
1310
+ <div class="nav-buttons">
1311
+ <button class="nav-btn" onclick="prev()">&#8249;</button>
1312
+ <button class="nav-btn" onclick="next()">&#8250;</button>
1313
+ </div>
1314
+ </div>
1315
+
1316
+ <script>
1317
+ const slides = document.querySelectorAll('.slide');
1318
+ const counter = document.getElementById('counter');
1319
+ const progress = document.getElementById('progress');
1320
+ let current = 0;
1321
+
1322
+ function show(i) {
1323
+ slides.forEach(s => s.classList.remove('active'));
1324
+ slides[i].classList.add('active');
1325
+ counter.textContent = `${i + 1} / ${slides.length}`;
1326
+ progress.style.width = `${((i + 1) / slides.length) * 100}%`;
1327
+ current = i;
1328
+ }
1329
+
1330
+ function next() { if (current < slides.length - 1) show(current + 1); }
1331
+ function prev() { if (current > 0) show(current - 1); }
1332
+
1333
+ document.addEventListener('keydown', (e) => {
1334
+ if (e.key === 'ArrowRight' || e.key === ' ' || e.key === 'PageDown') { e.preventDefault(); next(); }
1335
+ if (e.key === 'ArrowLeft' || e.key === 'PageUp') { e.preventDefault(); prev(); }
1336
+ if (e.key === 'Home') { show(0); }
1337
+ if (e.key === 'End') { show(slides.length - 1); }
1338
+ if (e.key === 'p' || e.key === 'P') { e.preventDefault(); downloadPDF(); }
1339
+ });
1340
+
1341
+ function downloadPDF() {
1342
+ const originalTitle = document.title;
1343
+ document.title = 'deck-craft';
1344
+ window.print();
1345
+ setTimeout(() => { document.title = originalTitle; }, 1000);
1346
+ }
1347
+
1348
+ let touchStartX = 0;
1349
+ let touchStartY = 0;
1350
+ const SWIPE_THRESHOLD = 50;
1351
+
1352
+ document.addEventListener('touchstart', (e) => {
1353
+ touchStartX = e.changedTouches[0].screenX;
1354
+ touchStartY = e.changedTouches[0].screenY;
1355
+ }, { passive: true });
1356
+
1357
+ document.addEventListener('touchend', (e) => {
1358
+ const dx = e.changedTouches[0].screenX - touchStartX;
1359
+ const dy = e.changedTouches[0].screenY - touchStartY;
1360
+ if (Math.abs(dx) < SWIPE_THRESHOLD || Math.abs(dy) > Math.abs(dx)) return;
1361
+ if (dx < 0) next();
1362
+ else prev();
1363
+ }, { passive: true });
1364
+
1365
+ const isEmbed = new URLSearchParams(window.location.search).has('embed');
1366
+
1367
+ show(0);
1368
+ </script>
1369
+
1370
+ </body>
1371
+ </html>