@backbay/glia 0.2.0-alpha.6 → 0.2.0-alpha.8

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 (226) hide show
  1. package/dist/audio/index.js +1145 -5
  2. package/dist/audio/index.js.map +1 -1
  3. package/dist/components/index.js +3187 -10
  4. package/dist/components/index.js.map +1 -1
  5. package/dist/core.js +19714 -12
  6. package/dist/core.js.map +1 -1
  7. package/dist/emotion/index.js +1 -1
  8. package/dist/emotion/index.js.map +1 -1
  9. package/dist/hooks/index.js +941 -6
  10. package/dist/hooks/index.js.map +1 -1
  11. package/dist/index.js +31841 -183
  12. package/dist/index.js.map +1 -1
  13. package/dist/primitives/index.js +21111 -57
  14. package/dist/primitives/index.js.map +1 -1
  15. package/dist/protocol/index.js +360 -2
  16. package/dist/protocol/index.js.map +1 -1
  17. package/dist/speakeasy/index.js +2786 -38
  18. package/dist/speakeasy/index.js.map +1 -1
  19. package/dist/styles.css +1 -1
  20. package/dist/theme/index.js +1150 -3
  21. package/dist/theme/index.js.map +1 -1
  22. package/dist/vision/index.js +370 -2
  23. package/dist/vision/index.js.map +1 -1
  24. package/dist/workspace/index.js +16824 -2
  25. package/dist/workspace/index.js.map +1 -1
  26. package/package.json +16 -10
  27. package/dist/AuroraBackground-AP6ZHVFA.js +0 -6
  28. package/dist/AuroraBackground-AP6ZHVFA.js.map +0 -1
  29. package/dist/BentoGrid-CDARICNM.js +0 -6
  30. package/dist/BentoGrid-CDARICNM.js.map +0 -1
  31. package/dist/CommandPalette-JCWJKRBY.js +0 -6
  32. package/dist/CommandPalette-JCWJKRBY.js.map +0 -1
  33. package/dist/Glass-H4X4ZI4P.js +0 -7
  34. package/dist/Glass-H4X4ZI4P.js.map +0 -1
  35. package/dist/GlitchText-KLQ57PPY.js +0 -6
  36. package/dist/GlitchText-KLQ57PPY.js.map +0 -1
  37. package/dist/GlowButton-VGBPMZO7.js +0 -6
  38. package/dist/GlowButton-VGBPMZO7.js.map +0 -1
  39. package/dist/Graph3D-GO7N2EZQ.js +0 -540
  40. package/dist/Graph3D-GO7N2EZQ.js.map +0 -1
  41. package/dist/HUDProgressRing-N6C5NAEV.js +0 -6
  42. package/dist/HUDProgressRing-N6C5NAEV.js.map +0 -1
  43. package/dist/KPIStat-PBQK27ZB.js +0 -6
  44. package/dist/KPIStat-PBQK27ZB.js.map +0 -1
  45. package/dist/NeonToast-W5F7MU3U.js +0 -6
  46. package/dist/NeonToast-W5F7MU3U.js.map +0 -1
  47. package/dist/ParticleField-WK6CNHWU.js +0 -51
  48. package/dist/ParticleField-WK6CNHWU.js.map +0 -1
  49. package/dist/TextGenerateEffect-EUCEIIUJ.js +0 -6
  50. package/dist/TextGenerateEffect-EUCEIIUJ.js.map +0 -1
  51. package/dist/ThreeDCard-VH5I3SSY.js +0 -6
  52. package/dist/ThreeDCard-VH5I3SSY.js.map +0 -1
  53. package/dist/TypingAnimation-GIWOHPIX.js +0 -6
  54. package/dist/TypingAnimation-GIWOHPIX.js.map +0 -1
  55. package/dist/alert-dialog-QOSYBIIE.js +0 -19
  56. package/dist/alert-dialog-QOSYBIIE.js.map +0 -1
  57. package/dist/avatar-N5R37PCU.js +0 -10
  58. package/dist/avatar-N5R37PCU.js.map +0 -1
  59. package/dist/badge-GTVIIGPY.js +0 -8
  60. package/dist/badge-GTVIIGPY.js.map +0 -1
  61. package/dist/button-D7IMSV2D.js +0 -8
  62. package/dist/button-D7IMSV2D.js.map +0 -1
  63. package/dist/chunk-3CMPQOMY.js +0 -69
  64. package/dist/chunk-3CMPQOMY.js.map +0 -1
  65. package/dist/chunk-3OQT6IYR.js +0 -41
  66. package/dist/chunk-3OQT6IYR.js.map +0 -1
  67. package/dist/chunk-43B2WVLS.js +0 -85
  68. package/dist/chunk-43B2WVLS.js.map +0 -1
  69. package/dist/chunk-4SRFO5W3.js +0 -121
  70. package/dist/chunk-4SRFO5W3.js.map +0 -1
  71. package/dist/chunk-5IZELOOU.js +0 -362
  72. package/dist/chunk-5IZELOOU.js.map +0 -1
  73. package/dist/chunk-6DM4ACSS.js +0 -154
  74. package/dist/chunk-6DM4ACSS.js.map +0 -1
  75. package/dist/chunk-6IGT34PC.js +0 -50
  76. package/dist/chunk-6IGT34PC.js.map +0 -1
  77. package/dist/chunk-6RKBCJHN.js +0 -194
  78. package/dist/chunk-6RKBCJHN.js.map +0 -1
  79. package/dist/chunk-6RX2WGCO.js +0 -108
  80. package/dist/chunk-6RX2WGCO.js.map +0 -1
  81. package/dist/chunk-7K4WZM3U.js +0 -189
  82. package/dist/chunk-7K4WZM3U.js.map +0 -1
  83. package/dist/chunk-7MDBHJPT.js +0 -407
  84. package/dist/chunk-7MDBHJPT.js.map +0 -1
  85. package/dist/chunk-7UQD6ROV.js +0 -9
  86. package/dist/chunk-7UQD6ROV.js.map +0 -1
  87. package/dist/chunk-AFNIVLZP.js +0 -1069
  88. package/dist/chunk-AFNIVLZP.js.map +0 -1
  89. package/dist/chunk-ANWYRO6A.js +0 -407
  90. package/dist/chunk-ANWYRO6A.js.map +0 -1
  91. package/dist/chunk-DIXPOHDO.js +0 -71
  92. package/dist/chunk-DIXPOHDO.js.map +0 -1
  93. package/dist/chunk-DWYMKYPI.js +0 -3
  94. package/dist/chunk-DWYMKYPI.js.map +0 -1
  95. package/dist/chunk-E3NVDCZG.js +0 -280
  96. package/dist/chunk-E3NVDCZG.js.map +0 -1
  97. package/dist/chunk-EBM7YBKL.js +0 -399
  98. package/dist/chunk-EBM7YBKL.js.map +0 -1
  99. package/dist/chunk-EPAM7IWW.js +0 -294
  100. package/dist/chunk-EPAM7IWW.js.map +0 -1
  101. package/dist/chunk-EXQ7GYRS.js +0 -134
  102. package/dist/chunk-EXQ7GYRS.js.map +0 -1
  103. package/dist/chunk-F4QTUZ3C.js +0 -136
  104. package/dist/chunk-F4QTUZ3C.js.map +0 -1
  105. package/dist/chunk-FEW533R2.js +0 -105
  106. package/dist/chunk-FEW533R2.js.map +0 -1
  107. package/dist/chunk-FFZLJKC7.js +0 -270
  108. package/dist/chunk-FFZLJKC7.js.map +0 -1
  109. package/dist/chunk-GEAMOBF7.js +0 -8486
  110. package/dist/chunk-GEAMOBF7.js.map +0 -1
  111. package/dist/chunk-GRTRSCTD.js +0 -74
  112. package/dist/chunk-GRTRSCTD.js.map +0 -1
  113. package/dist/chunk-IKGYOGLK.js +0 -16
  114. package/dist/chunk-IKGYOGLK.js.map +0 -1
  115. package/dist/chunk-IQ7WYWVJ.js +0 -73
  116. package/dist/chunk-IQ7WYWVJ.js.map +0 -1
  117. package/dist/chunk-IXIVWQLF.js +0 -543
  118. package/dist/chunk-IXIVWQLF.js.map +0 -1
  119. package/dist/chunk-JCJU57RC.js +0 -115
  120. package/dist/chunk-JCJU57RC.js.map +0 -1
  121. package/dist/chunk-KORSTBU4.js +0 -117
  122. package/dist/chunk-KORSTBU4.js.map +0 -1
  123. package/dist/chunk-KSEZ6UM2.js +0 -235
  124. package/dist/chunk-KSEZ6UM2.js.map +0 -1
  125. package/dist/chunk-MHPF7R3O.js +0 -1376
  126. package/dist/chunk-MHPF7R3O.js.map +0 -1
  127. package/dist/chunk-MPC5IH7E.js +0 -81
  128. package/dist/chunk-MPC5IH7E.js.map +0 -1
  129. package/dist/chunk-MQIU2NYA.js +0 -114
  130. package/dist/chunk-MQIU2NYA.js.map +0 -1
  131. package/dist/chunk-NYMBJOGR.js +0 -2192
  132. package/dist/chunk-NYMBJOGR.js.map +0 -1
  133. package/dist/chunk-OBZD2M3C.js +0 -169
  134. package/dist/chunk-OBZD2M3C.js.map +0 -1
  135. package/dist/chunk-ODM2AG6G.js +0 -176
  136. package/dist/chunk-ODM2AG6G.js.map +0 -1
  137. package/dist/chunk-ONDKF5LP.js +0 -53
  138. package/dist/chunk-ONDKF5LP.js.map +0 -1
  139. package/dist/chunk-P25YCWQB.js +0 -41
  140. package/dist/chunk-P25YCWQB.js.map +0 -1
  141. package/dist/chunk-PFYVNM6H.js +0 -14
  142. package/dist/chunk-PFYVNM6H.js.map +0 -1
  143. package/dist/chunk-PWNNSGFL.js +0 -20
  144. package/dist/chunk-PWNNSGFL.js.map +0 -1
  145. package/dist/chunk-Q2PGZVOT.js +0 -36
  146. package/dist/chunk-Q2PGZVOT.js.map +0 -1
  147. package/dist/chunk-Q2XDMV7U.js +0 -76
  148. package/dist/chunk-Q2XDMV7U.js.map +0 -1
  149. package/dist/chunk-QG7FH2FI.js +0 -45
  150. package/dist/chunk-QG7FH2FI.js.map +0 -1
  151. package/dist/chunk-R7HUOK2D.js +0 -1914
  152. package/dist/chunk-R7HUOK2D.js.map +0 -1
  153. package/dist/chunk-REUYY7G5.js +0 -773
  154. package/dist/chunk-REUYY7G5.js.map +0 -1
  155. package/dist/chunk-RHC2Z2HT.js +0 -199
  156. package/dist/chunk-RHC2Z2HT.js.map +0 -1
  157. package/dist/chunk-RMCVLIFE.js +0 -23
  158. package/dist/chunk-RMCVLIFE.js.map +0 -1
  159. package/dist/chunk-ROZLTXGR.js +0 -234
  160. package/dist/chunk-ROZLTXGR.js.map +0 -1
  161. package/dist/chunk-RSS2C2O3.js +0 -17
  162. package/dist/chunk-RSS2C2O3.js.map +0 -1
  163. package/dist/chunk-SAGCG5SH.js +0 -355
  164. package/dist/chunk-SAGCG5SH.js.map +0 -1
  165. package/dist/chunk-TM6AOUSD.js +0 -40
  166. package/dist/chunk-TM6AOUSD.js.map +0 -1
  167. package/dist/chunk-TPK4BYCO.js +0 -970
  168. package/dist/chunk-TPK4BYCO.js.map +0 -1
  169. package/dist/chunk-UNQIL4K2.js +0 -34
  170. package/dist/chunk-UNQIL4K2.js.map +0 -1
  171. package/dist/chunk-UUG6L75Y.js +0 -47
  172. package/dist/chunk-UUG6L75Y.js.map +0 -1
  173. package/dist/chunk-V2SYMV4W.js +0 -114
  174. package/dist/chunk-V2SYMV4W.js.map +0 -1
  175. package/dist/chunk-V7EN5CTH.js +0 -130
  176. package/dist/chunk-V7EN5CTH.js.map +0 -1
  177. package/dist/chunk-VITKG2HL.js +0 -1125
  178. package/dist/chunk-VITKG2HL.js.map +0 -1
  179. package/dist/chunk-VYEWU5LO.js +0 -2631
  180. package/dist/chunk-VYEWU5LO.js.map +0 -1
  181. package/dist/chunk-W67QAGSH.js +0 -178
  182. package/dist/chunk-W67QAGSH.js.map +0 -1
  183. package/dist/chunk-WWBIN6KV.js +0 -1353
  184. package/dist/chunk-WWBIN6KV.js.map +0 -1
  185. package/dist/chunk-X77Z4PFB.js +0 -224
  186. package/dist/chunk-X77Z4PFB.js.map +0 -1
  187. package/dist/chunk-X7VG7OTT.js +0 -8
  188. package/dist/chunk-X7VG7OTT.js.map +0 -1
  189. package/dist/chunk-XE4K2SGI.js +0 -74
  190. package/dist/chunk-XE4K2SGI.js.map +0 -1
  191. package/dist/chunk-YIUG7IJK.js +0 -628
  192. package/dist/chunk-YIUG7IJK.js.map +0 -1
  193. package/dist/chunk-YNVN3V4Y.js +0 -13
  194. package/dist/chunk-YNVN3V4Y.js.map +0 -1
  195. package/dist/chunk-Z2S54IZX.js +0 -198
  196. package/dist/chunk-Z2S54IZX.js.map +0 -1
  197. package/dist/chunk-ZR6AH25Z.js +0 -17
  198. package/dist/chunk-ZR6AH25Z.js.map +0 -1
  199. package/dist/dialog-SPM3DTTI.js +0 -17
  200. package/dist/dialog-SPM3DTTI.js.map +0 -1
  201. package/dist/dropdown-menu-HMTWKWGK.js +0 -21
  202. package/dist/dropdown-menu-HMTWKWGK.js.map +0 -1
  203. package/dist/input-BH4P4S26.js +0 -6
  204. package/dist/input-BH4P4S26.js.map +0 -1
  205. package/dist/label-5Z4Q6VER.js +0 -8
  206. package/dist/label-5Z4Q6VER.js.map +0 -1
  207. package/dist/popover-IFOUXYLI.js +0 -18
  208. package/dist/popover-IFOUXYLI.js.map +0 -1
  209. package/dist/scroll-area-DJXNW6QX.js +0 -14
  210. package/dist/scroll-area-DJXNW6QX.js.map +0 -1
  211. package/dist/select-FZ277C3G.js +0 -22
  212. package/dist/select-FZ277C3G.js.map +0 -1
  213. package/dist/separator-BTMLN4NB.js +0 -8
  214. package/dist/separator-BTMLN4NB.js.map +0 -1
  215. package/dist/skeleton-DXIWBH4W.js +0 -6
  216. package/dist/skeleton-DXIWBH4W.js.map +0 -1
  217. package/dist/switch-4MCXIZBY.js +0 -13
  218. package/dist/switch-4MCXIZBY.js.map +0 -1
  219. package/dist/tabs-O7AW3APK.js +0 -17
  220. package/dist/tabs-O7AW3APK.js.map +0 -1
  221. package/dist/textarea-IB5WAFDO.js +0 -6
  222. package/dist/textarea-IB5WAFDO.js.map +0 -1
  223. package/dist/toggle-XVPPG6P4.js +0 -10
  224. package/dist/toggle-XVPPG6P4.js.map +0 -1
  225. package/dist/tooltip-JICZTD4F.js +0 -18
  226. package/dist/tooltip-JICZTD4F.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/ClusterHero/config.ts","../src/primitives/environment/shared/types.ts","../src/primitives/environment/shared/performance.ts","../src/primitives/environment/shared/noise.ts","../src/primitives/environment/VolumetricLight/types.ts","../src/primitives/environment/VolumetricLight/VolumetricLight.tsx","../src/primitives/environment/FogLayer/types.ts","../src/primitives/environment/FogLayer/FogLayer.tsx","../src/components/ClusterHero/ClusterAtmosphere.tsx","../src/components/ClusterHero/GradientVeil.tsx","../src/components/ClusterHero/StructuralElements.tsx","../src/components/ClusterHero/VideoBackground.tsx","../src/components/ClusterHero/ClusterRail.tsx","../src/components/ClusterHero/BriefingPanel.tsx","../src/components/ClusterHero/SigilMonument.tsx","../src/components/ClusterHero/LiveStrip.tsx","../src/components/ClusterHero/useVideoPreload.ts","../src/components/ClusterHero/ClusterHero.tsx","../src/components/ClusterHero/ClusterHeroPage.tsx"],"names":["useReducedMotion","React2","jsx","jsxs","useState","useEffect","Fragment","motion","useRef","useMemo","useTransform"],"mappings":"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","file":"chunk-R7HUOK2D.js","sourcesContent":["import type { ClusterConfig, ClusterId } from './types.js';\n\n/**\n * Local development ports for each cluster app.\n * Used when NODE_ENV=development to route to localhost instead of subdomains.\n */\nexport const CLUSTER_DEV_PORTS: Record<ClusterId, number> = {\n alexandria: 3001,\n alpha: 3002,\n opus: 3003,\n baia: 3004,\n kdot: 3005,\n aegis: 3006,\n providence: 3007,\n};\n\n/**\n * Returns the docs URL for a cluster, respecting development vs production.\n * In development: http://localhost:{port}\n * In production: https://{cluster}.backbay.io\n */\nexport function getClusterDocsUrl(clusterId: ClusterId): string {\n if (typeof window !== 'undefined' && window.location.hostname === 'localhost') {\n return `http://localhost:${CLUSTER_DEV_PORTS[clusterId]}`;\n }\n return `https://${clusterId}.backbay.io`;\n}\n\nexport const CLUSTER_CONFIGS: Record<ClusterId, ClusterConfig> = {\n alexandria: {\n id: 'alexandria',\n name: 'Alexandria',\n tagline: 'Where knowledge compounds',\n latinMotto: 'SEQUERE FILUM',\n sigilSrc: '/sigils/alexandria.svg',\n videoSrc: '/videos/clusters/alexandria.mp4',\n videoPoster: '/videos/clusters/alexandria-poster.jpg',\n accentColor: '#C9A227',\n accentColorRGB: '201, 162, 39',\n atmosphere: {\n dustMotes: {\n colors: ['#C9A227', '#E8D5A3', '#8B7355'],\n density: 0.6,\n speed: 0.3,\n },\n light: {\n type: 'godrays',\n color: '#C9A227',\n intensity: 0.7,\n source: { x: 0.8, y: 0.1 },\n },\n },\n buttons: [\n { label: 'Launch', href: '/clusters/alexandria', variant: 'primary' },\n { label: 'Docs', href: 'https://alexandria.backbay.io', variant: 'secondary', external: true },\n { label: 'Governance', href: '/governance/alexandria', variant: 'ghost' },\n ],\n // Briefing\n description: 'The decentralized knowledge marketplace. Publish, lease, and compound intelligence artifacts.',\n capabilities: ['PUBLISH', 'LEASE', 'COMPOUND'],\n fastPath: { label: 'Start a Knowledge Compound', href: '/clusters/alexandria/compound/new' },\n status: { network: 'STABLE', verification: 'ON', fees: '2%' },\n // Live\n liveModule: 'market',\n liveContent: '3 new blueprints published today',\n // Metrics\n metrics: { realms: 847, output24h: '2.4M', rank: 12 },\n },\n\n alpha: {\n id: 'alpha',\n name: 'Alpha',\n tagline: 'Where signals become strategy',\n latinMotto: 'ALPHA IN MOTU',\n sigilSrc: '/sigils/alpha.svg',\n videoSrc: '/videos/clusters/alpha.mp4',\n videoPoster: '/videos/clusters/alpha-poster.jpg',\n accentColor: '#E8E8E8',\n accentColorRGB: '232, 232, 232',\n atmosphere: {\n fog: {\n type: 'volumetric',\n color: '#E8E8E8',\n intensity: 0.5,\n },\n },\n buttons: [\n { label: 'Launch', href: '/clusters/alpha', variant: 'primary' },\n { label: 'Docs', href: 'https://alpha.backbay.io', variant: 'secondary', external: true },\n { label: 'Governance', href: '/governance/alpha', variant: 'ghost' },\n ],\n // Briefing\n description: 'A social exchange for research-grade finance. Models, signals, and playbooks—shared, challenged, and refined in public.',\n capabilities: ['BACKTEST', 'PRICE', 'EXECUTE'],\n fastPath: { label: 'Explore strategy marketplace', href: '/clusters/alpha/market' },\n status: { network: 'STABLE', verification: 'ON', fees: '1.5%' },\n // Live\n liveModule: 'live',\n liveContent: 'Live: 218 strategies • 24h volume $3.1B',\n // Metrics\n metrics: { realms: 234, output24h: '4.8M', rank: 3 },\n },\n\n opus: {\n id: 'opus',\n name: 'Opus',\n tagline: 'Where care meets code',\n latinMotto: 'SALUS PER MACHINAM',\n sigilSrc: '/sigils/opus.svg',\n videoSrc: '/videos/clusters/opus.mp4',\n videoPoster: '/videos/clusters/opus-poster.jpg',\n accentColor: '#B87333',\n accentColorRGB: '184, 115, 51',\n atmosphere: {\n dustMotes: {\n colors: ['#B87333', '#D4956A', '#8B5A2B'],\n density: 0.8,\n speed: 0.2,\n },\n light: {\n type: 'bloom',\n color: '#B87333',\n intensity: 0.6,\n },\n },\n buttons: [\n { label: 'Launch', href: '/clusters/opus', variant: 'primary' },\n { label: 'Docs', href: 'https://opus.backbay.io', variant: 'secondary', external: true },\n { label: 'Governance', href: '/governance/opus', variant: 'ghost' },\n ],\n // Briefing\n description: 'The clinic-to-code commons. Practical health systems, shared and iterated together.',\n capabilities: ['DIAGNOSE', 'COORDINATE', 'PRODUCE'],\n fastPath: { label: 'Explore the Exchange', href: '/clusters/opus/exchange' },\n status: { network: 'STABLE', verification: 'HIPAA', fees: '2%' },\n // Live\n liveModule: 'live',\n liveContent: 'New: Autonomous diagnostic pipeline • 12 protocols deployed',\n // Metrics\n metrics: { realms: 156, output24h: '892K' },\n },\n\n baia: {\n id: 'baia',\n name: 'Baia',\n tagline: 'Where imagination renders',\n latinMotto: 'ARS EX MACHINA',\n sigilSrc: '/sigils/baia.svg',\n videoSrc: '/videos/clusters/baia.mp4',\n videoPoster: '/videos/clusters/baia-poster.jpg',\n accentColor: '#D4AF37',\n accentColorRGB: '212, 175, 55',\n atmosphere: {\n light: {\n type: 'godrays',\n color: '#D4AF37',\n intensity: 0.8,\n source: { x: 0.5, y: 0 },\n },\n },\n buttons: [\n { label: 'Launch', href: '/clusters/baia', variant: 'primary' },\n { label: 'Docs', href: 'https://baia.backbay.io', variant: 'secondary', external: true },\n { label: 'Governance', href: '/governance/baia', variant: 'ghost' },\n ],\n // Briefing\n description: 'A social market for generative culture. Artists and builders publish, collaborate, and curate evolving collections.',\n capabilities: ['GENERATE', 'COMPOSE', 'RENDER'],\n fastPath: { label: 'Open the Studio', href: '/clusters/baia/studio' },\n status: { network: 'STABLE', verification: 'ON', fees: '2.5%' },\n // Live\n liveModule: 'market',\n liveContent: 'Trending: Neural symphony generator • 847 works minted today',\n // Metrics\n metrics: { realms: 89, output24h: '124K', rank: 47 },\n },\n\n kdot: {\n id: 'kdot',\n name: 'KDoT',\n tagline: 'Kernel design of thought',\n latinMotto: 'MENS • MACHINA • DEUS',\n sigilSrc: '/sigils/kdot.svg',\n videoSrc: '/videos/clusters/kdot.mp4',\n videoPoster: '/videos/clusters/kdot-poster.jpg',\n accentColor: '#00D4AA',\n accentColorRGB: '0, 212, 170',\n atmosphere: {\n fog: {\n type: 'mist',\n color: '#00D4AA',\n intensity: 0.4,\n },\n },\n buttons: [\n { label: 'Launch', href: '/clusters/kdot', variant: 'primary' },\n { label: 'Docs', href: 'https://kdot.backbay.io', variant: 'secondary', external: true },\n { label: 'Status', href: '/status/kdot', variant: 'ghost' },\n ],\n // Briefing\n description: 'Compile thought into territory. Ship verifiable services. Forge living culture. Spin up economies.\\nKernel Design of Thought: where creativity becomes industry.',\n capabilities: ['DESIGN', 'SYNTHESIZE', 'ALIGN'],\n fastPath: { label: 'Open the Kernel', href: '/clusters/kdot/topology' },\n status: { network: 'OPTIMAL', verification: 'ON', fees: '0.1%' },\n // Live\n liveModule: 'live',\n liveContent: 'The Cathedral awakens • 12 kernels compiled today',\n // Metrics\n metrics: { realms: 1247, output24h: '8.4PB', rank: 1 },\n },\n\n aegis: {\n id: 'aegis',\n name: 'Aegis',\n tagline: 'Shield of the realm',\n latinMotto: 'TUTELA PERPETUA',\n sigilSrc: '/sigils/aegis.svg',\n videoSrc: '/videos/clusters/aegis.mp4',\n videoPoster: '/videos/clusters/aegis-poster.jpg',\n accentColor: '#4A7BF7',\n accentColorRGB: '74, 123, 247',\n atmosphere: {\n light: {\n type: 'bloom',\n color: '#4A7BF7',\n intensity: 0.5,\n },\n },\n buttons: [\n { label: 'Launch', href: '/clusters/aegis', variant: 'primary' },\n { label: 'Docs', href: 'https://aegis.backbay.io', variant: 'secondary', external: true },\n { label: 'Audit', href: '/audit/aegis', variant: 'ghost' },\n ],\n // Briefing\n description: 'The EDR layer for agent economies. Aegis is a trust-minimized distributed security mesh to enable autonomous production at scale.',\n capabilities: ['PROTECT', 'DETECT', 'RESPOND'],\n fastPath: { label: 'View threat dashboard', href: '/clusters/aegis/threats' },\n status: { network: 'SECURE', verification: 'ENFORCED', fees: '1%' },\n // Live\n liveModule: 'governance',\n liveContent: 'Security Proposal #7 — Policy update pending review',\n // Metrics\n metrics: { realms: 312, output24h: '2.1B threats blocked', rank: 2 },\n },\n\n providence: {\n id: 'providence',\n name: 'Providence',\n tagline: 'Foresight is defense',\n latinMotto: 'PRAEVIDEO ERGO PROTEGO',\n sigilSrc: '/sigils/providence.svg',\n videoSrc: '/videos/clusters/providence.mp4',\n videoPoster: '/videos/clusters/providence-poster.jpg',\n accentColor: '#00D4AA',\n accentColorRGB: '0, 212, 170',\n atmosphere: {\n light: {\n type: 'godrays',\n color: '#00D4AA',\n intensity: 0.5,\n source: { x: 0.55, y: 0.05 },\n },\n fog: {\n type: 'mist',\n color: '#00D4AA',\n intensity: 0.25,\n },\n },\n buttons: [\n { label: 'Launch', href: '/clusters/providence', variant: 'primary' },\n { label: 'Docs', href: 'https://providence.backbay.io', variant: 'secondary', external: true },\n { label: 'Threat Intel', href: '/providence/threats', variant: 'ghost' },\n ],\n description: 'The EDR layer for agent economies. Aegis is a trust-minimized security distributed security for autonomous production.',\n capabilities: ['PREDICT', 'RESPOND', 'DEFEND'],\n fastPath: { label: 'View threat dashboard', href: '/clusters/providence/threats' },\n status: { network: 'SECURE', verification: 'ENFORCED', fees: '1%' },\n liveModule: 'live',\n liveContent: '24/7 monitoring active • 847K threats analyzed today',\n metrics: { realms: 96, output24h: '38K', rank: 19 },\n },\n};\n\nexport function getClusterConfig(clusterId: ClusterId): ClusterConfig {\n return CLUSTER_CONFIGS[clusterId];\n}\n\n/**\n * Returns cluster config with docs URLs resolved for the current environment.\n * Call this on the client side to get URLs that work in development.\n */\nexport function getClusterConfigWithResolvedUrls(clusterId: ClusterId): ClusterConfig {\n const config = CLUSTER_CONFIGS[clusterId];\n const docsUrl = getClusterDocsUrl(clusterId);\n\n return {\n ...config,\n buttons: config.buttons.map(button =>\n button.label === 'Docs'\n ? { ...button, href: docsUrl }\n : button\n ),\n };\n}\n","export type PerformanceTier = 'high' | 'medium' | 'low' | 'minimal';\n\nexport type EnvironmentStylePreset = 'cinematic' | 'ui';\n\nexport interface PerformanceConfig {\n tier: PerformanceTier;\n maxParticles: number;\n useShaders: boolean;\n targetFPS: number;\n}\n\nexport const PERFORMANCE_PRESETS: Record<PerformanceTier, PerformanceConfig> = {\n high: { tier: 'high', maxParticles: 2000, useShaders: true, targetFPS: 60 },\n medium: { tier: 'medium', maxParticles: 800, useShaders: true, targetFPS: 60 },\n low: { tier: 'low', maxParticles: 300, useShaders: false, targetFPS: 30 },\n minimal: { tier: 'minimal', maxParticles: 0, useShaders: false, targetFPS: 0 },\n};\n\nexport interface BaseLayerProps {\n intensity?: number;\n speed?: number;\n stylePreset?: EnvironmentStylePreset;\n enabled?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n","import { PERFORMANCE_PRESETS, type PerformanceTier, type PerformanceConfig } from './types';\n\nexport function detectPerformanceTier(): PerformanceTier {\n if (typeof window === 'undefined') return 'medium';\n\n // Check reduced motion first\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n return 'minimal';\n }\n\n // Check device memory (Chrome only)\n const nav = navigator as Navigator & { deviceMemory?: number };\n if (nav.deviceMemory && nav.deviceMemory < 4) {\n return 'low';\n }\n\n // Check hardware concurrency\n if (navigator.hardwareConcurrency && navigator.hardwareConcurrency < 4) {\n return 'low';\n }\n\n // Check if mobile\n const isMobile = /Android|iPhone|iPad|iPod/i.test(navigator.userAgent);\n if (isMobile) return 'low';\n\n // Default to medium\n return 'medium';\n}\n\nexport function getPerformanceConfig(tier?: PerformanceTier): PerformanceConfig {\n const detected = tier ?? detectPerformanceTier();\n return PERFORMANCE_PRESETS[detected];\n}\n","const NOISE_SVG = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"200\" viewBox=\"0 0 200 200\">\n <filter id=\"n\">\n <feTurbulence type=\"fractalNoise\" baseFrequency=\"0.9\" numOctaves=\"3\" seed=\"2\" stitchTiles=\"stitch\" />\n <feColorMatrix type=\"saturate\" values=\"0\" />\n </filter>\n <rect width=\"200\" height=\"200\" filter=\"url(#n)\" opacity=\"0.55\" />\n</svg>`;\n\nexport const NOISE_DATA_URL = `data:image/svg+xml,${encodeURIComponent(NOISE_SVG)}`;\n\n","import type { BaseLayerProps } from '../shared/types';\n\nexport type LightType = 'godrays' | 'shaft' | 'bloom' | 'flare' | 'caustics' | 'scanner' | 'neon' | 'spotlight' | 'rim' | 'laser';\n\nexport interface VolumetricLightProps extends BaseLayerProps {\n type: LightType;\n source?: { x: number; y: number };\n color?: string;\n decay?: number;\n angle?: number;\n width?: number;\n animated?: boolean;\n}\n\nexport interface LightConfig {\n defaultColor: string;\n defaultIntensity: number;\n animated: boolean;\n blendMode: string;\n}\n\nexport const LIGHT_CONFIGS: Record<LightType, LightConfig> = {\n godrays: { defaultColor: '#fffbe6', defaultIntensity: 0.6, animated: true, blendMode: 'screen' },\n shaft: { defaultColor: '#ffffff', defaultIntensity: 0.5, animated: false, blendMode: 'screen' },\n bloom: { defaultColor: '#ffffff', defaultIntensity: 0.4, animated: false, blendMode: 'screen' },\n flare: { defaultColor: '#ffe4b5', defaultIntensity: 0.7, animated: true, blendMode: 'screen' },\n caustics: { defaultColor: '#00d4ff', defaultIntensity: 0.4, animated: true, blendMode: 'overlay' },\n scanner: { defaultColor: '#00ff00', defaultIntensity: 0.6, animated: true, blendMode: 'screen' },\n neon: { defaultColor: '#ff00ff', defaultIntensity: 0.8, animated: true, blendMode: 'screen' },\n spotlight: { defaultColor: '#ffffff', defaultIntensity: 0.7, animated: false, blendMode: 'screen' },\n rim: { defaultColor: '#00f0ff', defaultIntensity: 0.5, animated: false, blendMode: 'screen' },\n laser: { defaultColor: '#ff0000', defaultIntensity: 0.9, animated: true, blendMode: 'screen' },\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useReducedMotion } from \"framer-motion\";\nimport { cn } from \"../../../lib/utils\";\nimport { getPerformanceConfig } from \"../shared/performance\";\nimport { NOISE_DATA_URL } from \"../shared/noise\";\nimport type { VolumetricLightProps } from \"./types\";\nimport { LIGHT_CONFIGS } from \"./types\";\n\nexport function VolumetricLight({\n type,\n source = { x: 0.5, y: 0 },\n color: propColor,\n intensity = 0.5,\n decay = 0.5,\n angle = 0,\n width = 0.3,\n animated: propAnimated,\n stylePreset = 'ui',\n enabled = true,\n className,\n style,\n}: VolumetricLightProps) {\n const reducedMotion = useReducedMotion();\n const perfConfig = getPerformanceConfig();\n const [time, setTime] = React.useState(0);\n\n const config = LIGHT_CONFIGS[type];\n const color = propColor ?? config.defaultColor;\n const shouldAnimate = (propAnimated ?? config.animated) && !reducedMotion && perfConfig.tier !== 'minimal';\n\n React.useEffect(() => {\n if (!shouldAnimate || !enabled) return;\n let frame: number;\n const animate = () => {\n setTime(prev => prev + 0.016);\n frame = requestAnimationFrame(animate);\n };\n frame = requestAnimationFrame(animate);\n return () => cancelAnimationFrame(frame);\n }, [shouldAnimate, enabled]);\n\n if (!enabled) return null;\n\n const lightStyle = React.useMemo((): React.CSSProperties => {\n const opacity = intensity * config.defaultIntensity;\n const d = Math.max(0, Math.min(1, decay));\n\n switch (type) {\n case 'godrays':\n return {\n background: `conic-gradient(from ${angle}deg at ${source.x * 100}% ${source.y * 100}%,\n ${color}${Math.round(opacity * 0.4 * 255).toString(16).padStart(2, '0')} 0deg,\n transparent 15deg,\n ${color}${Math.round(opacity * 0.3 * 255).toString(16).padStart(2, '0')} 30deg,\n transparent 45deg,\n ${color}${Math.round(opacity * 0.35 * 255).toString(16).padStart(2, '0')} 60deg,\n transparent 75deg,\n ${color}${Math.round(opacity * 0.25 * 255).toString(16).padStart(2, '0')} 90deg,\n transparent 105deg\n )`,\n mixBlendMode: config.blendMode as React.CSSProperties['mixBlendMode'],\n };\n\n case 'shaft':\n return {\n background: `linear-gradient(${angle}deg,\n transparent ${(source.x - width/2) * 100}%,\n ${color}${Math.round(opacity * 0.5 * 255).toString(16).padStart(2, '0')} ${source.x * 100}%,\n transparent ${(source.x + width/2) * 100}%\n )`,\n mixBlendMode: config.blendMode as React.CSSProperties['mixBlendMode'],\n };\n\n case 'bloom': {\n const bloomInner = 18 + d * 22; // 18% → 40%\n const bloomMid = 42 + d * 24; // 42% → 66%\n return {\n background: `radial-gradient(circle at ${source.x * 100}% ${source.y * 100}%,\n ${color}${Math.round(opacity * 0.6 * 255).toString(16).padStart(2, '0')},\n ${color}${Math.round(opacity * 0.3 * 255).toString(16).padStart(2, '0')} ${bloomInner}%,\n transparent ${bloomMid}%\n )`,\n mixBlendMode: config.blendMode as React.CSSProperties['mixBlendMode'],\n filter: 'blur(20px)',\n };\n }\n\n case 'flare':\n const flareOffset = Math.sin(time * 2) * 5;\n return {\n background: `\n radial-gradient(ellipse 20% 5% at ${source.x * 100}% ${source.y * 100 + flareOffset}%, ${color}${Math.round(opacity * 0.8 * 255).toString(16).padStart(2, '0')}, transparent),\n radial-gradient(ellipse 5% 20% at ${source.x * 100}% ${source.y * 100}%, ${color}${Math.round(opacity * 0.6 * 255).toString(16).padStart(2, '0')}, transparent),\n radial-gradient(circle at ${source.x * 100}% ${source.y * 100}%, ${color}${Math.round(opacity * 0.4 * 255).toString(16).padStart(2, '0')}, transparent 20%)\n `,\n mixBlendMode: config.blendMode as React.CSSProperties['mixBlendMode'],\n };\n\n case 'caustics':\n const causticPhase = time * 0.5;\n return {\n background: `\n radial-gradient(ellipse at ${50 + Math.sin(causticPhase) * 20}% ${50 + Math.cos(causticPhase * 1.3) * 20}%, ${color}${Math.round(opacity * 0.3 * 255).toString(16).padStart(2, '0')}, transparent 40%),\n radial-gradient(ellipse at ${50 + Math.cos(causticPhase * 0.7) * 25}% ${50 + Math.sin(causticPhase * 1.1) * 25}%, ${color}${Math.round(opacity * 0.25 * 255).toString(16).padStart(2, '0')}, transparent 35%)\n `,\n mixBlendMode: config.blendMode as React.CSSProperties['mixBlendMode'],\n };\n\n case 'scanner':\n const scanAngle = (time * 60) % 360;\n return {\n background: `conic-gradient(from ${scanAngle}deg at ${source.x * 100}% ${source.y * 100}%,\n ${color}${Math.round(opacity * 0.6 * 255).toString(16).padStart(2, '0')} 0deg,\n transparent 30deg,\n transparent 360deg\n )`,\n mixBlendMode: config.blendMode as React.CSSProperties['mixBlendMode'],\n };\n\n case 'neon':\n const flickerIntensity = 0.9 + Math.sin(time * 20) * 0.1;\n return {\n background: `linear-gradient(${angle}deg, transparent 40%, ${color}${Math.round(opacity * flickerIntensity * 0.8 * 255).toString(16).padStart(2, '0')} 50%, transparent 60%)`,\n boxShadow: `0 0 30px ${color}${Math.round(opacity * flickerIntensity * 0.5 * 255).toString(16).padStart(2, '0')}, 0 0 60px ${color}${Math.round(opacity * flickerIntensity * 0.3 * 255).toString(16).padStart(2, '0')}`,\n mixBlendMode: config.blendMode as React.CSSProperties['mixBlendMode'],\n };\n\n case 'spotlight': {\n const spotMid = 40 + d * 35; // 40% → 75%\n return {\n background: `radial-gradient(ellipse ${width * 100}% ${width * 150}% at ${source.x * 100}% ${source.y * 100}%,\n ${color}${Math.round(opacity * 0.7 * 255).toString(16).padStart(2, '0')},\n ${color}${Math.round(opacity * 0.3 * 255).toString(16).padStart(2, '0')} ${spotMid}%,\n transparent 100%\n )`,\n mixBlendMode: config.blendMode as React.CSSProperties['mixBlendMode'],\n };\n }\n\n case 'rim':\n return {\n boxShadow: `inset 0 0 ${60 * intensity}px ${color}${Math.round(opacity * 0.6 * 255).toString(16).padStart(2, '0')}`,\n mixBlendMode: config.blendMode as React.CSSProperties['mixBlendMode'],\n };\n\n case 'laser':\n const laserOffset = Math.sin(time * 3) * 10;\n return {\n background: `linear-gradient(${angle + laserOffset}deg,\n transparent 49%,\n ${color}${Math.round(opacity * 255).toString(16).padStart(2, '0')} 49.5%,\n ${color}${Math.round(opacity * 255).toString(16).padStart(2, '0')} 50.5%,\n transparent 51%\n )`,\n mixBlendMode: config.blendMode as React.CSSProperties['mixBlendMode'],\n };\n\n default:\n return {};\n }\n }, [type, source, color, intensity, decay, angle, width, time, config]);\n\n return (\n <div\n className={cn(\"pointer-events-none absolute inset-0\", className)}\n style={{ ...lightStyle, ...style }}\n aria-hidden=\"true\"\n >\n {stylePreset === 'cinematic' && (\n <div\n className=\"absolute inset-0\"\n style={{\n backgroundImage: `url(\"${NOISE_DATA_URL}\")`,\n backgroundRepeat: 'repeat',\n backgroundSize: '240px 240px',\n backgroundPosition: `${time * 160}px ${time * 110}px`,\n opacity: Math.min(0.12, 0.03 + intensity * 0.06),\n mixBlendMode: 'overlay',\n filter: 'blur(0.4px) contrast(1.25)',\n }}\n aria-hidden=\"true\"\n />\n )}\n </div>\n );\n}\n","import type { BaseLayerProps } from '../shared/types';\n\nexport type FogType = 'depth' | 'ground' | 'volumetric' | 'mist';\n\nexport interface FogLayerProps extends BaseLayerProps {\n type: FogType;\n density?: number;\n color?: string;\n height?: number; // 0-1 for ground fog\n animated?: boolean;\n}\n\nexport interface FogConfig {\n defaultColor: string;\n defaultDensity: number;\n animationSpeed: number;\n gradientStops: number;\n}\n\nexport const FOG_CONFIGS: Record<FogType, FogConfig> = {\n depth: {\n defaultColor: '#0a0a0f',\n defaultDensity: 0.5,\n animationSpeed: 0,\n gradientStops: 2,\n },\n ground: {\n defaultColor: '#ffffff',\n defaultDensity: 0.7,\n animationSpeed: 0.02,\n gradientStops: 3,\n },\n volumetric: {\n defaultColor: '#e8e8ff',\n defaultDensity: 0.4,\n animationSpeed: 0.01,\n gradientStops: 4,\n },\n mist: {\n defaultColor: '#f0f0ff',\n defaultDensity: 0.3,\n animationSpeed: 0.015,\n gradientStops: 5,\n },\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useReducedMotion } from \"framer-motion\";\nimport { cn } from \"../../../lib/utils\";\nimport { getPerformanceConfig } from \"../shared/performance\";\nimport { NOISE_DATA_URL } from \"../shared/noise\";\nimport type { FogLayerProps } from \"./types\";\nimport { FOG_CONFIGS } from \"./types\";\n\nexport function FogLayer({\n type,\n density: propDensity,\n color: propColor,\n height = 0.4,\n animated = true,\n intensity = 1,\n stylePreset = 'ui',\n enabled = true,\n className,\n style,\n}: FogLayerProps) {\n const reducedMotion = useReducedMotion();\n const perfConfig = getPerformanceConfig();\n const [offset, setOffset] = React.useState(0);\n\n const config = FOG_CONFIGS[type];\n const density = propDensity ?? config.defaultDensity;\n const color = propColor ?? config.defaultColor;\n\n const shouldAnimate = animated && !reducedMotion && perfConfig.tier !== 'minimal';\n\n // Animation loop for mist/volumetric movement\n React.useEffect(() => {\n if (!shouldAnimate || !enabled || config.animationSpeed === 0) return;\n\n let frame: number;\n const animate = () => {\n setOffset(prev => (prev + config.animationSpeed) % 100);\n frame = requestAnimationFrame(animate);\n };\n frame = requestAnimationFrame(animate);\n return () => cancelAnimationFrame(frame);\n }, [shouldAnimate, enabled, config.animationSpeed]);\n\n if (!enabled) return null;\n\n const gradientStyle = React.useMemo(() => {\n const opacity = density * intensity;\n\n switch (type) {\n case 'depth':\n return {\n background: `linear-gradient(to top, ${color}${Math.round(opacity * 255).toString(16).padStart(2, '0')}, transparent)`,\n };\n case 'ground':\n return {\n background: `linear-gradient(to top,\n ${color}${Math.round(opacity * 255).toString(16).padStart(2, '0')} 0%,\n ${color}${Math.round(opacity * 0.5 * 255).toString(16).padStart(2, '0')} ${height * 50}%,\n transparent ${height * 100}%)`,\n };\n case 'volumetric':\n return {\n background: `\n radial-gradient(ellipse 120% 60% at 50% ${100 - offset}%, ${color}${Math.round(opacity * 0.6 * 255).toString(16).padStart(2, '0')}, transparent),\n radial-gradient(ellipse 100% 40% at ${30 + offset * 0.2}% 80%, ${color}${Math.round(opacity * 0.4 * 255).toString(16).padStart(2, '0')}, transparent),\n radial-gradient(ellipse 80% 50% at ${70 - offset * 0.15}% 90%, ${color}${Math.round(opacity * 0.5 * 255).toString(16).padStart(2, '0')}, transparent)\n `,\n };\n case 'mist':\n return {\n background: `\n radial-gradient(ellipse 150% 80% at ${40 + Math.sin(offset * 0.1) * 20}% ${60 + Math.cos(offset * 0.08) * 10}%, ${color}${Math.round(opacity * 0.3 * 255).toString(16).padStart(2, '0')}, transparent),\n radial-gradient(ellipse 120% 60% at ${60 + Math.cos(offset * 0.12) * 15}% ${40 + Math.sin(offset * 0.09) * 15}%, ${color}${Math.round(opacity * 0.25 * 255).toString(16).padStart(2, '0')}, transparent),\n linear-gradient(to top, ${color}${Math.round(opacity * 0.15 * 255).toString(16).padStart(2, '0')}, transparent 50%)\n `,\n };\n default:\n return {};\n }\n }, [type, color, density, intensity, height, offset]);\n\n return (\n <div\n className={cn(\n \"pointer-events-none absolute inset-0\",\n className\n )}\n style={{\n ...gradientStyle,\n ...style,\n }}\n aria-hidden=\"true\"\n >\n {stylePreset === 'cinematic' && (\n <div\n className=\"absolute inset-0\"\n style={{\n backgroundImage: `url(\"${NOISE_DATA_URL}\")`,\n backgroundRepeat: 'repeat',\n backgroundSize: `${260 - Math.round(density * 80)}px ${260 - Math.round(density * 80)}px`,\n backgroundPosition: `${offset * 30}px ${offset * 20}px`,\n opacity: Math.min(0.18, 0.04 + density * intensity * 0.12),\n mixBlendMode: 'soft-light',\n filter: 'blur(0.6px) contrast(1.2)',\n }}\n aria-hidden=\"true\"\n />\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { DustMotesLayer } from \"../../primitives/ambient/DustMotesLayer\";\nimport { VolumetricLight } from \"../../primitives/environment/VolumetricLight\";\nimport { FogLayer } from \"../../primitives/environment/FogLayer\";\nimport type { AtmosphereConfig } from \"./types.js\";\n\nexport interface ClusterAtmosphereProps {\n config: AtmosphereConfig;\n accentColor: string;\n className?: string;\n}\n\nexport function ClusterAtmosphere({\n config,\n accentColor,\n className,\n}: ClusterAtmosphereProps) {\n return (\n <div\n className={cn(\"pointer-events-none absolute inset-0\", className)}\n aria-hidden=\"true\"\n >\n {config.dustMotes && (\n <DustMotesLayer\n colors={config.dustMotes.colors}\n density={config.dustMotes.density}\n speed={config.dustMotes.speed}\n />\n )}\n {config.fog && (\n <FogLayer\n type={config.fog.type}\n color={config.fog.color}\n intensity={config.fog.intensity}\n />\n )}\n {config.light && (\n <VolumetricLight\n type={config.light.type}\n color={config.light.color}\n intensity={config.light.intensity}\n source={config.light.source}\n />\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\n\nexport interface GradientVeilProps {\n className?: string;\n /** Intensity of the gradient (0-1, default 1) */\n intensity?: number;\n}\n\n/**\n * A bottom-anchored gradient overlay for text legibility over video backgrounds.\n * The gradient fades from opaque black at the bottom to transparent at the top.\n */\nexport function GradientVeil({ className, intensity = 1 }: GradientVeilProps) {\n // Scale alpha values by intensity\n const a1 = (0.85 * intensity).toFixed(2);\n const a2 = (0.5 * intensity).toFixed(2);\n const a3 = (0.2 * intensity).toFixed(2);\n\n return (\n <div\n className={cn(\"absolute inset-0 pointer-events-none\", className)}\n style={{\n background: `linear-gradient(\n to top,\n rgba(0, 0, 0, ${a1}) 0%,\n rgba(0, 0, 0, ${a2}) 30%,\n rgba(0, 0, 0, ${a3}) 50%,\n transparent 70%\n )`,\n }}\n />\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { motion } from \"framer-motion\";\nimport { cn } from \"../../lib/utils\";\nimport type { StructuralElementsProps } from \"./types.js\";\nexport type { StructuralElementsProps } from \"./types.js\";\n\n/**\n * Atmospheric structural elements for ClusterHero.\n * Renders corner brackets, radial vignette, and subtle dot grid overlay.\n */\nexport function StructuralElements({\n accentColor,\n className,\n}: StructuralElementsProps) {\n return (\n <div\n className={cn(\"pointer-events-none absolute inset-0 overflow-hidden\", className)}\n aria-hidden=\"true\"\n >\n {/* Corner brackets */}\n <CornerBrackets accentColor={accentColor} />\n\n {/* Radial vignette behind sigil area (right side) */}\n <div\n className=\"absolute inset-0\"\n style={{\n background: `radial-gradient(ellipse 60% 80% at 85% 50%, ${accentColor}1A 0%, transparent 70%)`,\n }}\n />\n\n {/* Dot grid overlay */}\n <DotGrid />\n </div>\n );\n}\n\n/**\n * Corner bracket decorations at top-left and bottom-right.\n */\nfunction CornerBrackets({ accentColor }: { accentColor: string }) {\n const bracketLength = 40;\n const thickness = 2;\n\n return (\n <>\n {/* Top-left bracket */}\n <motion.div\n className=\"absolute top-6 left-6\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.8, delay: 0.2 }}\n >\n {/* Horizontal line */}\n <div\n className=\"absolute top-0 left-0\"\n style={{\n width: bracketLength,\n height: thickness,\n backgroundColor: accentColor,\n }}\n />\n {/* Vertical line */}\n <div\n className=\"absolute top-0 left-0\"\n style={{\n width: thickness,\n height: bracketLength,\n backgroundColor: accentColor,\n }}\n />\n </motion.div>\n\n {/* Bottom-right bracket */}\n <motion.div\n className=\"absolute bottom-6 right-6\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.8, delay: 0.3 }}\n >\n {/* Horizontal line */}\n <div\n className=\"absolute bottom-0 right-0\"\n style={{\n width: bracketLength,\n height: thickness,\n backgroundColor: accentColor,\n }}\n />\n {/* Vertical line */}\n <div\n className=\"absolute bottom-0 right-0\"\n style={{\n width: thickness,\n height: bracketLength,\n backgroundColor: accentColor,\n }}\n />\n </motion.div>\n </>\n );\n}\n\n/**\n * Subtle dot grid pattern overlay.\n */\nfunction DotGrid() {\n return (\n <div\n className=\"absolute inset-0\"\n style={{\n opacity: 0.04,\n backgroundImage: `radial-gradient(circle at center, currentColor 1px, transparent 1px)`,\n backgroundSize: \"24px 24px\",\n }}\n />\n );\n}\n","\"use client\";\n\nimport { useState, useRef, useCallback, useEffect } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface VideoBackgroundProps {\n /** Source URL for the video (MP4 preferred) */\n videoSrc: string;\n /** WebM fallback source URL (optional, for better browser support) */\n webmSrc?: string;\n /** Poster image shown during loading and as fallback */\n posterSrc: string;\n /** Fallback CSS background (used behind poster/video, and if assets 404) */\n fallbackBackground?: string;\n /** Additional CSS classes */\n className?: string;\n /** Duration of the crossfade animation in seconds (default: 0.8) */\n crossfadeDuration?: number;\n /** Whether to add preload hints for video and poster (default: true) */\n preload?: boolean;\n /** Video playback rate (default: 1.0, use 0.5 for half speed) */\n playbackRate?: number;\n /** Callback fired when video successfully loads */\n onLoad?: () => void;\n /** Callback fired when video fails to load */\n onError?: (error: Event) => void;\n}\n\n/**\n * A fullscreen video background with crossfade loading animation.\n * Falls back to poster image if video fails to load.\n *\n * Features:\n * - Crossfade from poster to video when canplaythrough fires\n * - Graceful fallback to poster on video error\n * - Reduces motion for accessibility when user prefers reduced motion\n * - Optimized with playsInline, muted, autoPlay, loop attributes\n * - Optional preload hints for faster loading\n * - WebM format support for better compression\n */\nexport function VideoBackground({\n videoSrc,\n webmSrc,\n posterSrc,\n fallbackBackground,\n className,\n crossfadeDuration = 0.8,\n preload = true,\n playbackRate = 0.75,\n onLoad,\n onError,\n}: VideoBackgroundProps) {\n const [isVideoReady, setIsVideoReady] = useState(false);\n const [hasError, setHasError] = useState(false);\n const videoRef = useRef<HTMLVideoElement>(null);\n\n // Check for reduced motion preference\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(false);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const mediaQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n setPrefersReducedMotion(mediaQuery.matches);\n\n const handleChange = (e: MediaQueryListEvent) => {\n setPrefersReducedMotion(e.matches);\n };\n\n mediaQuery.addEventListener(\"change\", handleChange);\n return () => mediaQuery.removeEventListener(\"change\", handleChange);\n }, []);\n\n const handleCanPlayThrough = useCallback(() => {\n setIsVideoReady(true);\n onLoad?.();\n }, [onLoad]);\n\n const handleError = useCallback(\n (e: React.SyntheticEvent<HTMLVideoElement, Event>) => {\n setHasError(true);\n setIsVideoReady(false);\n onError?.(e.nativeEvent);\n },\n [onError]\n );\n\n // Attempt to play video when it becomes visible and set playback rate\n useEffect(() => {\n const video = videoRef.current;\n if (!video || hasError || prefersReducedMotion) return;\n\n // Set playback rate\n video.playbackRate = playbackRate;\n\n // Some browsers require user interaction before autoplay works\n // This attempts to play and silently handles any autoplay restrictions\n const playPromise = video.play();\n if (playPromise !== undefined) {\n playPromise.catch(() => {\n // Autoplay was prevented, video will show poster instead\n // This is expected behavior on some mobile browsers\n });\n }\n }, [hasError, prefersReducedMotion, playbackRate]);\n\n // Add preload hints to document head for faster loading\n useEffect(() => {\n if (!preload || typeof document === \"undefined\") return;\n\n const links: HTMLLinkElement[] = [];\n\n // Preload poster image\n if (posterSrc) {\n const posterLink = document.createElement(\"link\");\n posterLink.rel = \"preload\";\n posterLink.as = \"image\";\n posterLink.href = posterSrc;\n document.head.appendChild(posterLink);\n links.push(posterLink);\n }\n\n // Preload primary video\n if (videoSrc) {\n const videoLink = document.createElement(\"link\");\n videoLink.rel = \"preload\";\n videoLink.as = \"video\";\n videoLink.href = videoSrc;\n if (videoSrc.endsWith(\".mp4\")) {\n videoLink.type = \"video/mp4\";\n } else if (videoSrc.endsWith(\".webm\")) {\n videoLink.type = \"video/webm\";\n }\n document.head.appendChild(videoLink);\n links.push(videoLink);\n }\n\n // Preload WebM fallback if provided\n if (webmSrc) {\n const webmLink = document.createElement(\"link\");\n webmLink.rel = \"preload\";\n webmLink.as = \"video\";\n webmLink.href = webmSrc;\n webmLink.type = \"video/webm\";\n document.head.appendChild(webmLink);\n links.push(webmLink);\n }\n\n return () => {\n links.forEach((link) => {\n if (link.parentNode === document.head) {\n document.head.removeChild(link);\n }\n });\n };\n }, [preload, videoSrc, webmSrc, posterSrc]);\n\n // Shared styles for both video and fallback\n const mediaStyles = cn(\n \"absolute inset-0 w-full h-full object-cover\",\n className\n );\n\n const fallbackBg =\n fallbackBackground ??\n \"radial-gradient(1200px 700px at 50% 30%, rgba(255,255,255,0.10), rgba(0,0,0,0) 60%), linear-gradient(180deg, rgba(255,255,255,0.06), rgba(0,0,0,0) 40%), #000\";\n\n // Use multiple backgrounds so if the poster 404s, the fallback still paints.\n const posterBackgroundImage = posterSrc ? `url(${posterSrc}), ${fallbackBg}` : fallbackBg;\n const posterBackgroundSize = posterSrc ? \"cover, cover\" : \"cover\";\n const posterBackgroundPosition = posterSrc ? \"center, center\" : \"center\";\n\n // If user prefers reduced motion, just show the poster\n if (prefersReducedMotion) {\n return (\n <div\n className={mediaStyles}\n style={{\n backgroundImage: posterBackgroundImage,\n backgroundSize: posterBackgroundSize,\n backgroundPosition: posterBackgroundPosition,\n }}\n role=\"img\"\n aria-label=\"Background image\"\n />\n );\n }\n\n return (\n <>\n {/* Poster fallback - always rendered underneath */}\n <div\n className={cn(mediaStyles, \"z-0\")}\n style={{\n backgroundImage: posterBackgroundImage,\n backgroundSize: posterBackgroundSize,\n backgroundPosition: posterBackgroundPosition,\n }}\n role=\"img\"\n aria-hidden={isVideoReady && !hasError}\n />\n\n {/* Video layer with crossfade */}\n <AnimatePresence>\n {!hasError && (\n <motion.video\n ref={videoRef}\n key={videoSrc}\n className={cn(mediaStyles, \"z-10\")}\n poster={posterSrc}\n autoPlay\n muted\n loop\n playsInline\n disablePictureInPicture\n disableRemotePlayback\n onCanPlayThrough={handleCanPlayThrough}\n onError={handleError}\n initial={{ opacity: 0 }}\n animate={{ opacity: isVideoReady ? 1 : 0 }}\n exit={{ opacity: 0 }}\n transition={{\n opacity: {\n duration: crossfadeDuration,\n ease: [0.4, 0, 0.2, 1], // ease-out cubic\n },\n }}\n aria-hidden=\"true\"\n >\n {/* WebM format first (better compression, preferred by modern browsers) */}\n {webmSrc && <source src={webmSrc} type=\"video/webm\" />}\n {/* MP4 fallback for broader compatibility */}\n <source src={videoSrc} type=\"video/mp4\" />\n </motion.video>\n )}\n </AnimatePresence>\n </>\n );\n}\n\nexport default VideoBackground;\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport { cn } from \"../../lib/utils\";\nimport type { ClusterRailProps, ButtonConfig } from \"./types.js\";\n\n// ============================================================================\n// Animation Variants\n// ============================================================================\n\nconst fadeUpVariants = {\n hidden: { opacity: 0, y: 20 },\n visible: { opacity: 1, y: 0 },\n};\n\nconst fadeUpTransition = {\n duration: 0.6,\n ease: [0.22, 1, 0.36, 1],\n};\n\nconst staggerContainer = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n staggerChildren: 0.12,\n delayChildren: 0.1,\n },\n },\n};\n\n// ============================================================================\n// Sub-components\n// ============================================================================\n\nfunction ClusterName({ name }: { name: string }) {\n return (\n <motion.h2\n variants={fadeUpVariants}\n className=\"text-4xl md:text-5xl lg:text-6xl font-semibold uppercase text-white\"\n style={{\n fontVariant: \"small-caps\",\n letterSpacing: \"0.12em\",\n }}\n >\n {name}\n </motion.h2>\n );\n}\n\nfunction Tagline({ text }: { text: string }) {\n return (\n <motion.p\n variants={fadeUpVariants}\n className=\"text-lg md:text-xl text-white/70 font-light italic leading-relaxed mt-3\"\n >\n {text}\n </motion.p>\n );\n}\n\nfunction MetricsRow({\n metrics,\n}: {\n metrics: { realms: number; output24h: string; rank?: number };\n}) {\n const formattedRealms = metrics.realms.toLocaleString();\n\n return (\n <motion.div\n variants={fadeUpVariants}\n className=\"flex items-center gap-2 font-mono text-xs text-white/50 mt-4 tracking-wide\"\n >\n <span>{formattedRealms} realms</span>\n <span className=\"text-white/30\">•</span>\n <span>{metrics.output24h} output</span>\n {metrics.rank !== undefined && (\n <>\n <span className=\"text-white/30\">•</span>\n <span>Rank #{metrics.rank}</span>\n </>\n )}\n </motion.div>\n );\n}\n\nfunction RailButton({ button }: { button: ButtonConfig }) {\n const baseClasses =\n \"w-full px-6 py-3 text-sm font-medium tracking-wider uppercase transition-all duration-300 text-center\";\n\n const variantClasses: Record<ButtonConfig[\"variant\"], string> = {\n primary: \"text-neutral-900 hover:brightness-110 hover:scale-[1.02]\",\n secondary:\n \"bg-transparent border hover:bg-[var(--cluster-accent)]/10\",\n ghost:\n \"bg-transparent border-none text-white/50 hover:text-white/80\",\n };\n\n const variantStyles: Record<ButtonConfig[\"variant\"], React.CSSProperties> = {\n primary: {\n backgroundColor: \"var(--cluster-accent)\",\n },\n secondary: {\n borderColor: \"var(--cluster-accent)\",\n color: \"var(--cluster-accent)\",\n },\n ghost: {},\n };\n\n return (\n <motion.a\n variants={fadeUpVariants}\n href={button.href}\n className={cn(baseClasses, variantClasses[button.variant])}\n style={variantStyles[button.variant]}\n {...(button.external && {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n })}\n >\n {button.label}\n </motion.a>\n );\n}\n\nfunction ButtonStack({ buttons }: { buttons: ButtonConfig[] }) {\n return (\n <div className=\"flex flex-col gap-3 mt-8 w-full max-w-xs\">\n {buttons.map((button) => (\n <RailButton key={button.label} button={button} />\n ))}\n </div>\n );\n}\n\n// ============================================================================\n// Main Component\n// ============================================================================\n\n/**\n * ClusterRail renders the bottom-left cluster identity panel with:\n * - Cluster name in small caps with wide tracking\n * - Italic tagline at reduced opacity\n * - Metrics row with dot separators (monospace)\n * - Vertically stacked CTA buttons (primary/secondary/ghost)\n *\n * Uses CSS variable --cluster-accent for theming.\n */\nexport function ClusterRail({\n name,\n tagline,\n metrics,\n buttons,\n accentColor,\n className,\n}: ClusterRailProps) {\n return (\n <motion.aside\n variants={staggerContainer}\n initial=\"hidden\"\n animate=\"visible\"\n className={cn(\"flex flex-col items-start\", className)}\n style={\n {\n \"--cluster-accent\": accentColor,\n } as React.CSSProperties\n }\n >\n <ClusterName name={name} />\n <Tagline text={tagline} />\n <MetricsRow metrics={metrics} />\n <ButtonStack buttons={buttons} />\n </motion.aside>\n );\n}\n\nexport default ClusterRail;\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport { cn } from \"../../lib/utils\";\nimport type { BriefingPanelProps } from \"./types.js\";\n\nconst containerVariants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n staggerChildren: 0.12,\n delayChildren: 0.1,\n },\n },\n};\n\nconst itemVariants = {\n hidden: { opacity: 0, y: 12 },\n visible: {\n opacity: 1,\n y: 0,\n transition: {\n duration: 0.5,\n ease: [0.22, 1, 0.36, 1] as [number, number, number, number],\n },\n },\n};\n\nfunction Description({ text }: { text: string }) {\n return (\n <motion.p\n variants={itemVariants}\n className=\"text-sm text-white/70 leading-relaxed max-w-xs whitespace-pre-line\"\n >\n {text}\n </motion.p>\n );\n}\n\nfunction CapabilityChips({\n capabilities,\n accentColor,\n}: {\n capabilities: [string, string, string];\n accentColor: string;\n}) {\n return (\n <motion.div variants={itemVariants} className=\"flex flex-wrap gap-2\">\n {capabilities.map((capability) => (\n <span\n key={capability}\n className=\"px-2.5 py-1 text-[10px] uppercase tracking-widest text-white/80 rounded-sm\"\n style={{\n backgroundColor: `color-mix(in srgb, ${accentColor} 15%, transparent)`,\n }}\n >\n {capability}\n </span>\n ))}\n </motion.div>\n );\n}\n\nfunction FastPath({\n fastPath,\n accentColor,\n}: {\n fastPath: { label: string; href: string };\n accentColor: string;\n}) {\n return (\n <motion.a\n variants={itemVariants}\n href={fastPath.href}\n className=\"group inline-flex items-center gap-2 text-sm transition-colors duration-200 hover:brightness-125\"\n style={{ color: accentColor }}\n >\n <span>{fastPath.label}</span>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"transition-transform duration-200 group-hover:translate-x-1\"\n >\n <path\n d=\"M6 4L10 8L6 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </motion.a>\n );\n}\n\nfunction StatusLine({\n status,\n}: {\n status: { network: string; verification: string; fees: string };\n}) {\n return (\n <motion.div\n variants={itemVariants}\n className=\"font-mono text-[10px] text-white/50 tracking-wide\"\n >\n Network: {status.network}\n <span className=\"mx-2\">•</span>\n Verification: {status.verification}\n <span className=\"mx-2\">•</span>\n Fees: {status.fees}\n </motion.div>\n );\n}\n\n/**\n * BriefingPanel renders the top-left briefing information for a cluster hero.\n *\n * Includes:\n * - Description text (max 110 chars)\n * - Capability chips with accent-tinted backgrounds\n * - Fast path link with animated arrow\n * - Status line with network/verification/fees info\n *\n * All elements animate in with staggered fade-up on mount.\n */\nexport function BriefingPanel({\n description,\n capabilities,\n fastPath,\n status,\n accentColor,\n className,\n}: BriefingPanelProps) {\n return (\n <motion.div\n variants={containerVariants}\n initial=\"hidden\"\n animate=\"visible\"\n className={cn(\"flex flex-col gap-4 rounded-xl p-4 backdrop-blur-xl\", className)}\n style={{\n background: \"rgba(2,4,10,0.6)\",\n border: \"1px solid rgba(255,255,255,0.06)\",\n }}\n >\n <Description text={description} />\n <CapabilityChips capabilities={capabilities} accentColor={accentColor} />\n <FastPath fastPath={fastPath} accentColor={accentColor} />\n <StatusLine status={status} />\n </motion.div>\n );\n}\n\nexport default BriefingPanel;\n","\"use client\";\n\nimport { useEffect, useMemo, useRef, useId, useState } from \"react\";\nimport {\n motion,\n useMotionValue,\n useTransform,\n useSpring,\n} from \"framer-motion\";\nimport { cn } from \"../../lib/utils\";\nimport type { SigilMonumentProps } from \"./types.js\";\n\n/**\n * SigilMonument renders a large cluster sigil/emblem with parallax effect.\n *\n * Features:\n * - Large sigil image (35-45% viewport height)\n * - 2-6px parallax drift on mouse movement\n * - Subtle CSS shimmer animation (10s cycle)\n * - Plaque below with cluster name, tagline, and optional Latin motto\n */\nexport function SigilMonument({\n name,\n tagline,\n latinMotto,\n sigilSrc,\n accentColor,\n className,\n}: SigilMonumentProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const styleId = useId();\n const [sigilFailed, setSigilFailed] = useState(false);\n\n const initials = useMemo(() => {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n const letters = parts.map((p) => p[0] ?? \"\").join(\"\");\n return letters.slice(0, 2).toUpperCase() || name.slice(0, 2).toUpperCase();\n }, [name]);\n\n useEffect(() => {\n setSigilFailed(false);\n }, [sigilSrc]);\n\n // Mouse position tracking for parallax\n const mouseX = useMotionValue(0);\n const mouseY = useMotionValue(0);\n\n // Spring-smoothed parallax offsets (2-6px range)\n const springConfig = { damping: 25, stiffness: 150 };\n const parallaxX = useSpring(\n useTransform(mouseX, [-1, 1], [-4, 4]),\n springConfig\n );\n const parallaxY = useSpring(\n useTransform(mouseY, [-1, 1], [-4, 4]),\n springConfig\n );\n\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!containerRef.current) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const centerX = rect.left + rect.width / 2;\n const centerY = rect.top + rect.height / 2;\n\n // Normalize to -1 to 1 range\n const normalizedX = (e.clientX - centerX) / (rect.width / 2);\n const normalizedY = (e.clientY - centerY) / (rect.height / 2);\n\n mouseX.set(Math.max(-1, Math.min(1, normalizedX)));\n mouseY.set(Math.max(-1, Math.min(1, normalizedY)));\n };\n\n const handleMouseLeave = () => {\n mouseX.set(0);\n mouseY.set(0);\n };\n\n // Unique class name for scoped keyframes\n const shimmerClass = `sigil-shimmer-${styleId.replace(/:/g, \"\")}`;\n\n return (\n <div\n ref={containerRef}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n className={cn(\n \"relative flex flex-col items-center justify-center\",\n className\n )}\n style={{ \"--sigil-accent\": accentColor } as React.CSSProperties}\n >\n {/* Scoped shimmer animation styles */}\n <style\n dangerouslySetInnerHTML={{\n __html: `\n @keyframes ${shimmerClass}-anim {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n }\n .${shimmerClass} {\n animation: ${shimmerClass}-anim 10s ease-in-out infinite;\n }\n `,\n }}\n />\n\n {/* Sigil Container with Parallax */}\n <motion.div\n className=\"relative\"\n style={{\n x: parallaxX,\n y: parallaxY,\n }}\n >\n {/* Shimmer Overlay */}\n <div\n className=\"absolute inset-0 pointer-events-none overflow-hidden\"\n aria-hidden=\"true\"\n >\n <div\n className={`absolute inset-0 ${shimmerClass}`}\n style={{\n background: `linear-gradient(\n 105deg,\n transparent 40%,\n ${accentColor}15 45%,\n ${accentColor}25 50%,\n ${accentColor}15 55%,\n transparent 60%\n )`,\n backgroundSize: \"200% 100%\",\n }}\n />\n </div>\n\n {/* Sigil Image */}\n {!sigilFailed && sigilSrc ? (\n <img\n src={sigilSrc}\n alt={`${name} sigil`}\n className=\"h-[35vh] min-h-[280px] max-h-[45vh] w-auto object-contain drop-shadow-2xl\"\n style={{\n filter: `drop-shadow(0 0 60px ${accentColor}40)`,\n }}\n onError={() => setSigilFailed(true)}\n />\n ) : (\n <div\n className=\"h-[35vh] min-h-[280px] max-h-[45vh] aspect-square rounded-full flex items-center justify-center\"\n style={{\n background: `radial-gradient(circle at 30% 30%, ${accentColor}35, transparent 65%), radial-gradient(circle at 70% 80%, ${accentColor}18, transparent 60%), rgba(255,255,255,0.02)`,\n border: `1px solid ${accentColor}40`,\n boxShadow: `0 0 60px ${accentColor}30, inset 0 0 40px rgba(255,255,255,0.08)`,\n filter: `drop-shadow(0 0 60px ${accentColor}40)`,\n }}\n aria-hidden=\"true\"\n >\n <div\n className=\"font-serif text-6xl text-white/70 tracking-[0.18em]\"\n style={{ textShadow: `0 0 30px ${accentColor}30` }}\n >\n {initials}\n </div>\n </div>\n )}\n </motion.div>\n\n {/* Plaque */}\n <div className=\"mt-10 text-center\">\n {/* Cluster Name - Small Caps */}\n <h2\n className=\"font-serif text-3xl md:text-4xl text-white/95 mb-3\"\n style={{\n fontVariant: \"small-caps\",\n letterSpacing: \"0.12em\",\n }}\n >\n {name}\n </h2>\n\n {/* Tagline - Italic */}\n <p className=\"font-serif text-lg md:text-xl text-white/60 italic max-w-md leading-relaxed\">\n {tagline}\n </p>\n\n {/* Latin Motto - Tiny */}\n {latinMotto && (\n <p\n className=\"mt-4 font-mono text-[10px] uppercase tracking-[0.2em] text-white/30\"\n aria-label=\"Latin motto\"\n >\n {latinMotto}\n </p>\n )}\n </div>\n </div>\n );\n}\n\nexport default SigilMonument;\n","\"use client\";\n\nimport { FileText, Zap, Vote, Trophy, ArrowRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport type { LiveStripProps, LiveModuleType } from \"./types.js\";\n\nconst DEFAULT_CONTENT: Record<LiveModuleType, string> = {\n market: \"3 new blueprints published today\",\n live: \"24 active workflows running\",\n governance: \"Proposal #18 — Voting ends in 6h\",\n progress: \"You minted 4 verified artifacts this week\",\n};\n\nconst MODULE_ICONS: Record<LiveModuleType, typeof FileText> = {\n market: FileText,\n live: Zap,\n governance: Vote,\n progress: Trophy,\n};\n\n/**\n * LiveStrip renders a single horizontal activity strip with a contextual\n * icon, message text, and an animated arrow indicator.\n */\nexport function LiveStrip({\n moduleType,\n content,\n accentColor,\n className,\n}: LiveStripProps) {\n const Icon = MODULE_ICONS[moduleType];\n const displayContent = content ?? DEFAULT_CONTENT[moduleType];\n\n return (\n <div\n className={cn(\n \"group flex items-center gap-3 px-4 py-2.5 rounded-lg bg-white/[0.05] backdrop-blur-sm\",\n \"transition-colors duration-200 hover:bg-white/[0.10] cursor-pointer\",\n className\n )}\n >\n {/* Left icon - tinted with accent color */}\n <Icon\n className=\"w-4 h-4 shrink-0 transition-colors duration-200\"\n style={{ color: accentColor }}\n />\n\n {/* Message text */}\n <span className=\"text-sm text-white/80 font-normal flex-1 truncate\">\n {displayContent}\n </span>\n\n {/* Right arrow with hover animation */}\n <ArrowRight\n className={cn(\n \"w-4 h-4 shrink-0 text-white/40\",\n \"transition-all duration-200 ease-out\",\n \"group-hover:translate-x-1 group-hover:text-white/60\"\n )}\n />\n </div>\n );\n}\n\nexport default LiveStrip;\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nexport interface UseVideoPreloadOptions {\n /** Video source URL to preload */\n videoSrc: string;\n /** Poster image source URL to preload */\n posterSrc: string;\n /** Whether preloading is enabled (default: true) */\n enabled?: boolean;\n}\n\nexport interface UseVideoPreloadResult {\n /** Whether the assets have been preloaded */\n isPreloaded: boolean;\n}\n\n/**\n * Custom hook to preload video and poster assets.\n * Adds <link rel=\"preload\"> hints to the document head for faster loading.\n * Cleans up preload hints on unmount.\n *\n * @example\n * ```tsx\n * const { isPreloaded } = useVideoPreload({\n * videoSrc: '/videos/hero.mp4',\n * posterSrc: '/images/hero-poster.jpg',\n * });\n * ```\n */\nexport function useVideoPreload({\n videoSrc,\n posterSrc,\n enabled = true,\n}: UseVideoPreloadOptions): UseVideoPreloadResult {\n const [isPreloaded, setIsPreloaded] = useState(false);\n\n useEffect(() => {\n if (!enabled || typeof document === \"undefined\") {\n return;\n }\n\n const links: HTMLLinkElement[] = [];\n\n // Preload poster image\n if (posterSrc) {\n const posterLink = document.createElement(\"link\");\n posterLink.rel = \"preload\";\n posterLink.as = \"image\";\n posterLink.href = posterSrc;\n document.head.appendChild(posterLink);\n links.push(posterLink);\n }\n\n // Preload video\n if (videoSrc) {\n const videoLink = document.createElement(\"link\");\n videoLink.rel = \"preload\";\n videoLink.as = \"video\";\n videoLink.href = videoSrc;\n // Set type hint for better browser optimization\n if (videoSrc.endsWith(\".webm\")) {\n videoLink.type = \"video/webm\";\n } else if (videoSrc.endsWith(\".mp4\")) {\n videoLink.type = \"video/mp4\";\n }\n document.head.appendChild(videoLink);\n links.push(videoLink);\n }\n\n setIsPreloaded(true);\n\n // Cleanup on unmount\n return () => {\n links.forEach((link) => {\n if (link.parentNode === document.head) {\n document.head.removeChild(link);\n }\n });\n };\n }, [videoSrc, posterSrc, enabled]);\n\n return { isPreloaded };\n}\n\nexport default useVideoPreload;\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { getClusterConfigWithResolvedUrls } from \"./config.js\";\nimport type { ClusterHeroProps } from \"./types.js\";\nimport { VideoBackground } from \"./VideoBackground.js\";\nimport { GradientVeil } from \"./GradientVeil.js\";\nimport { ClusterAtmosphere } from \"./ClusterAtmosphere.js\";\nimport { StructuralElements } from \"./StructuralElements.js\";\nimport { BriefingPanel } from \"./BriefingPanel.js\";\nimport { SigilMonument } from \"./SigilMonument.js\";\nimport { LiveStrip } from \"./LiveStrip.js\";\nimport { ClusterRail } from \"./ClusterRail.js\";\nimport { useVideoPreload } from \"./useVideoPreload.js\";\n\n/**\n * ClusterHero is the main hero component for cluster landing pages.\n * Uses a \"Monument + Briefing\" layout with 12-column grid:\n *\n * Layout:\n * - cols 1-4: BriefingPanel (top-left)\n * - cols 5-8: Empty space (mood/atmosphere)\n * - cols 9-12: SigilMonument (mid-right)\n * - cols 5-12, bottom: LiveStrip\n * - Bottom-left fixed: ClusterRail\n *\n * Layers (z-index order):\n * - z-0: VideoBackground\n * - z-5: StructuralElements (brackets, vignette, grid)\n * - z-10: ClusterAtmosphere\n * - z-20: GradientVeil\n * - z-30: Grid content (BriefingPanel, SigilMonument, LiveStrip, ClusterRail)\n */\nexport function ClusterHero({ cluster, className }: ClusterHeroProps) {\n const config = getClusterConfigWithResolvedUrls(cluster);\n const fallbackBackground = `radial-gradient(900px 600px at 65% 25%, rgba(${config.accentColorRGB}, 0.22), rgba(0,0,0,0) 62%), radial-gradient(700px 520px at 25% 78%, rgba(${config.accentColorRGB}, 0.10), rgba(0,0,0,0) 58%), #000`;\n\n // Preload video and poster assets for faster loading\n useVideoPreload({\n videoSrc: config.videoSrc,\n posterSrc: config.videoPoster,\n });\n\n return (\n <section\n className={cn(\n \"relative min-h-screen h-full w-full overflow-hidden bg-black\",\n className\n )}\n style={{ \"--cluster-accent\": config.accentColor } as React.CSSProperties}\n >\n {/* Background layers */}\n <VideoBackground\n videoSrc={config.videoSrc}\n posterSrc={config.videoPoster}\n preload={true}\n fallbackBackground={fallbackBackground}\n className=\"z-0\"\n />\n <StructuralElements\n accentColor={config.accentColor}\n className=\"z-[5]\"\n />\n <ClusterAtmosphere\n config={config.atmosphere}\n accentColor={config.accentColor}\n className=\"z-10\"\n />\n <GradientVeil className=\"z-20\" />\n\n {/* Briefing Panel - top-left */}\n <div\n className=\"absolute z-30\"\n style={{ top: '80px', left: '48px', maxWidth: '380px' }}\n >\n <BriefingPanel\n description={config.description}\n capabilities={config.capabilities}\n fastPath={config.fastPath}\n status={config.status}\n accentColor={config.accentColor}\n />\n </div>\n\n {/* Sigil Monument - right center */}\n <div\n className=\"absolute z-30\"\n style={{ top: '50%', right: '80px', transform: 'translateY(-50%)' }}\n >\n <SigilMonument\n name={config.name}\n tagline={config.tagline}\n latinMotto={config.latinMotto}\n sigilSrc={config.sigilSrc}\n accentColor={config.accentColor}\n />\n </div>\n\n {/* Live Strip - bottom center */}\n <div\n className=\"absolute z-30\"\n style={{ bottom: '80px', left: '50%', transform: 'translateX(-50%)', maxWidth: '600px', width: '100%' }}\n >\n <LiveStrip\n moduleType={config.liveModule}\n content={config.liveContent}\n accentColor={config.accentColor}\n />\n </div>\n\n {/* Cluster Rail - bottom-left */}\n <div\n className=\"absolute z-40\"\n style={{ bottom: '32px', left: '48px', maxWidth: '280px' }}\n >\n <ClusterRail\n name={config.name}\n tagline={config.tagline}\n metrics={config.metrics}\n buttons={config.buttons}\n accentColor={config.accentColor}\n />\n </div>\n </section>\n );\n}\n\nexport default ClusterHero;\n","\"use client\";\n\nimport { useRef } from \"react\";\nimport { motion, useScroll, useTransform } from \"framer-motion\";\nimport { cn } from \"../../lib/utils\";\nimport { ClusterHero } from \"./ClusterHero.js\";\nimport { getClusterConfigWithResolvedUrls } from \"./config.js\";\nimport type { ClusterId, ClusterConfig } from \"./types.js\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface ClusterHeroPageProps {\n clusterId: ClusterId;\n className?: string;\n}\n\ninterface SectionProps {\n clusterId: ClusterId;\n config: ClusterConfig;\n}\n\n// ============================================================================\n// Feature Cards Section\n// ============================================================================\n\nconst FEATURE_DATA: Record<ClusterId, Array<{ title: string; description: string; icon: string }>> = {\n alexandria: [\n { title: \"Knowledge Graph\", description: \"Interconnected data structures that compound understanding over time\", icon: \"book\" },\n { title: \"Semantic Search\", description: \"Query across documents with natural language understanding\", icon: \"search\" },\n { title: \"Version History\", description: \"Every edit preserved, every branch trackable\", icon: \"history\" },\n ],\n alpha: [\n { title: \"Genesis Protocol\", description: \"The foundational layer from which all clusters derive\", icon: \"origin\" },\n { title: \"Core APIs\", description: \"Stable interfaces that power the entire ecosystem\", icon: \"api\" },\n { title: \"Identity Layer\", description: \"Sovereign authentication across all surfaces\", icon: \"key\" },\n ],\n opus: [\n { title: \"Diagnostic Engines\", description: \"AI-powered analysis pipelines for medical imaging and patient data\", icon: \"scan\" },\n { title: \"Care Protocols\", description: \"Autonomous coordination of treatment workflows and provider networks\", icon: \"workflow\" },\n { title: \"Compliance Layer\", description: \"Built-in HIPAA, SOC2, and regulatory framework adherence\", icon: \"shield\" },\n ],\n baia: [\n { title: \"Neural Canvas\", description: \"Generative models that transform prompts into visual masterpieces\", icon: \"palette\" },\n { title: \"Sound Synthesis\", description: \"AI composition engines for music, ambience, and audio design\", icon: \"waveform\" },\n { title: \"Style Transfer\", description: \"Cross-modal translation between artistic mediums and formats\", icon: \"layers\" },\n ],\n kdot: [\n { title: \"Mesh Network\", description: \"Distributed connectivity that routes around failures\", icon: \"network\" },\n { title: \"Protocol Layer\", description: \"Universal translation between disparate systems\", icon: \"protocol\" },\n { title: \"Node Discovery\", description: \"Automatic peer detection and topology mapping\", icon: \"discovery\" },\n ],\n aegis: [\n { title: \"Threat Detection\", description: \"Real-time monitoring for anomalous patterns\", icon: \"shield\" },\n { title: \"Access Control\", description: \"Fine-grained permissions and authentication flows\", icon: \"lock\" },\n { title: \"Audit Trail\", description: \"Immutable logs of every action and decision\", icon: \"log\" },\n ],\n providence: [\n { title: \"Threat Intelligence\", description: \"Predictive analysis and proactive defense postures\", icon: \"radar\" },\n { title: \"Incident Response\", description: \"Automated containment and remediation workflows\", icon: \"alert\" },\n { title: \"Compliance Engine\", description: \"Continuous verification against security frameworks\", icon: \"certificate\" },\n ],\n};\n\nfunction FeatureCard({\n title,\n description,\n accentColor,\n index\n}: {\n title: string;\n description: string;\n accentColor: string;\n index: number;\n}) {\n return (\n <motion.article\n initial={{ opacity: 0, y: 40 }}\n whileInView={{ opacity: 1, y: 0 }}\n viewport={{ once: true, margin: \"-100px\" }}\n transition={{\n duration: 0.6,\n delay: index * 0.15,\n ease: [0.22, 1, 0.36, 1]\n }}\n className=\"group relative p-8 bg-zinc-900/80 backdrop-blur-sm border border-zinc-800 hover:border-zinc-700 transition-colors duration-300\"\n >\n <div\n className=\"absolute top-0 left-0 w-1 h-0 group-hover:h-full transition-all duration-500\"\n style={{ backgroundColor: accentColor }}\n />\n <h3 className=\"font-serif text-2xl text-white mb-3 tracking-wide\">\n {title}\n </h3>\n <p className=\"text-neutral-400 leading-relaxed\">\n {description}\n </p>\n </motion.article>\n );\n}\n\nexport function FeatureCardsSection({ clusterId, config }: SectionProps) {\n const features = FEATURE_DATA[clusterId];\n\n return (\n <section className=\"relative z-10 bg-zinc-950 py-32 px-16\">\n <div className=\"max-w-7xl mx-auto\">\n <motion.header\n initial={{ opacity: 0, y: 20 }}\n whileInView={{ opacity: 1, y: 0 }}\n viewport={{ once: true }}\n transition={{ duration: 0.6 }}\n className=\"mb-16\"\n >\n <span\n className=\"font-mono text-xs uppercase tracking-[0.2em]\"\n style={{ color: config.accentColor }}\n >\n Capabilities\n </span>\n <h2 className=\"font-serif text-5xl text-white mt-4 tracking-wide\">\n What defines {config.name}\n </h2>\n </motion.header>\n\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n {features.map((feature, index) => (\n <FeatureCard\n key={feature.title}\n title={feature.title}\n description={feature.description}\n accentColor={config.accentColor}\n index={index}\n />\n ))}\n </div>\n </div>\n </section>\n );\n}\n\n// ============================================================================\n// Cluster Stats Section\n// ============================================================================\n\nconst STATS_DATA: Record<ClusterId, Array<{ value: string; label: string }>> = {\n alexandria: [\n { value: \"2.4M\", label: \"Documents Indexed\" },\n { value: \"847K\", label: \"Active Queries/Day\" },\n { value: \"99.97%\", label: \"Uptime\" },\n { value: \"12ms\", label: \"Avg Response\" },\n ],\n alpha: [\n { value: \"1.0\", label: \"Protocol Version\" },\n { value: \"∞\", label: \"Scalability\" },\n { value: \"100%\", label: \"Backwards Compatible\" },\n { value: \"0\", label: \"Breaking Changes\" },\n ],\n opus: [\n { value: \"2.4M\", label: \"Diagnostics Processed\" },\n { value: \"847\", label: \"Active Protocols\" },\n { value: \"99.97%\", label: \"Compliance Rate\" },\n { value: \"< 2s\", label: \"Analysis Latency\" },\n ],\n baia: [\n { value: \"4.2M\", label: \"Works Generated\" },\n { value: \"156K\", label: \"Active Artists\" },\n { value: \"847K\", label: \"Daily Renders\" },\n { value: \"12TB\", label: \"Media Produced\" },\n ],\n kdot: [\n { value: \"1.2M\", label: \"Connected Nodes\" },\n { value: \"47ms\", label: \"Avg Latency\" },\n { value: \"99.99%\", label: \"Uptime\" },\n { value: \"8.4PB\", label: \"Daily Throughput\" },\n ],\n aegis: [\n { value: \"0\", label: \"Breaches\" },\n { value: \"2.1B\", label: \"Threats Blocked\" },\n { value: \"99.97%\", label: \"Detection Rate\" },\n { value: \"< 1s\", label: \"Response Time\" },\n ],\n providence: [\n { value: \"24/7\", label: \"Monitoring\" },\n { value: \"847K\", label: \"Threats Analyzed\" },\n { value: \"99.99%\", label: \"Uptime\" },\n { value: \"< 50ms\", label: \"Alert Latency\" },\n ],\n};\n\nfunction StatBlock({\n value,\n label,\n accentColor,\n index\n}: {\n value: string;\n label: string;\n accentColor: string;\n index: number;\n}) {\n return (\n <motion.div\n initial={{ opacity: 0, scale: 0.9 }}\n whileInView={{ opacity: 1, scale: 1 }}\n viewport={{ once: true, margin: \"-50px\" }}\n transition={{\n duration: 0.5,\n delay: index * 0.1,\n ease: [0.22, 1, 0.36, 1]\n }}\n className=\"text-center p-8\"\n >\n <div\n className=\"font-mono text-5xl md:text-6xl font-light mb-3\"\n style={{ color: accentColor }}\n >\n {value}\n </div>\n <div className=\"text-neutral-400 uppercase tracking-[0.15em] text-sm\">\n {label}\n </div>\n </motion.div>\n );\n}\n\nexport function ClusterStatsSection({ clusterId, config }: SectionProps) {\n const stats = STATS_DATA[clusterId];\n\n return (\n <section className=\"relative z-10 bg-black py-32 px-16\">\n <div className=\"max-w-6xl mx-auto\">\n <motion.div\n initial={{ scaleX: 0 }}\n whileInView={{ scaleX: 1 }}\n viewport={{ once: true }}\n transition={{ duration: 1, ease: [0.22, 1, 0.36, 1] }}\n className=\"h-px mb-16 origin-left\"\n style={{ backgroundColor: config.accentColor }}\n />\n\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-8\">\n {stats.map((stat, index) => (\n <StatBlock\n key={stat.label}\n value={stat.value}\n label={stat.label}\n accentColor={config.accentColor}\n index={index}\n />\n ))}\n </div>\n\n <motion.div\n initial={{ scaleX: 0 }}\n whileInView={{ scaleX: 1 }}\n viewport={{ once: true }}\n transition={{ duration: 1, ease: [0.22, 1, 0.36, 1] }}\n className=\"h-px mt-16 origin-right\"\n style={{ backgroundColor: config.accentColor }}\n />\n </div>\n </section>\n );\n}\n\n// ============================================================================\n// CTA Section\n// ============================================================================\n\nconst CTA_DATA: Record<ClusterId, { headline: string; subtext: string; buttonLabel: string }> = {\n alexandria: {\n headline: \"Begin your research\",\n subtext: \"Join thousands of scholars building the world's knowledge commons\",\n buttonLabel: \"Enter Alexandria\",\n },\n alpha: {\n headline: \"Start from the source\",\n subtext: \"Everything begins here. Every journey starts with Alpha.\",\n buttonLabel: \"Initialize\",\n },\n opus: {\n headline: \"Healthcare, autonomous\",\n subtext: \"Diagnostic pipelines and care protocols that run themselves.\",\n buttonLabel: \"Enter Opus\",\n },\n baia: {\n headline: \"Art from the machine\",\n subtext: \"Generative works that blur the line between human and artificial creativity.\",\n buttonLabel: \"Open Studio\",\n },\n kdot: {\n headline: \"Join the mesh\",\n subtext: \"Connect to the network that never sleeps.\",\n buttonLabel: \"Connect Now\",\n },\n aegis: {\n headline: \"Secure your realm\",\n subtext: \"Protection that scales with your ambition.\",\n buttonLabel: \"Activate Shield\",\n },\n providence: {\n headline: \"Foresee. Prevent. Prevail.\",\n subtext: \"Security through foresight. Protection before the threat arrives.\",\n buttonLabel: \"Enter Providence\",\n },\n};\n\nexport function CTASection({ clusterId, config }: SectionProps) {\n const cta = CTA_DATA[clusterId];\n\n return (\n <section className=\"relative z-10 bg-zinc-950 py-48 px-16\">\n <motion.div\n initial={{ opacity: 0, y: 60 }}\n whileInView={{ opacity: 1, y: 0 }}\n viewport={{ once: true, margin: \"-100px\" }}\n transition={{ duration: 0.8, ease: [0.22, 1, 0.36, 1] }}\n className=\"max-w-4xl mx-auto text-center\"\n >\n <h2 className=\"font-serif text-6xl md:text-7xl text-white tracking-wide mb-8 leading-[1.1]\">\n {cta.headline}\n </h2>\n <p className=\"text-xl text-neutral-400 mb-12 max-w-2xl mx-auto leading-relaxed\">\n {cta.subtext}\n </p>\n <a\n href={`/clusters/${clusterId}`}\n className=\"inline-block px-12 py-5 text-lg font-medium tracking-wider uppercase text-neutral-900 transition-all duration-300 hover:brightness-110 hover:scale-105\"\n style={{ backgroundColor: config.accentColor }}\n >\n {cta.buttonLabel}\n </a>\n </motion.div>\n </section>\n );\n}\n\n// ============================================================================\n// Main ClusterHeroPage Component\n// ============================================================================\n\n/**\n * ClusterHeroPage composes a full landing page experience for a cluster.\n *\n * Structure:\n * - Sticky hero (100vh) with scroll-based parallax and dimming\n * - Feature cards section scrolling over the hero\n * - Stats section with animated counters\n * - CTA section with final call to action\n *\n * The hero uses sticky positioning so it remains as a background while\n * subsequent sections with solid backgrounds scroll over it.\n */\nexport function ClusterHeroPage({ clusterId, className }: ClusterHeroPageProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const config = getClusterConfigWithResolvedUrls(clusterId);\n\n const { scrollYProgress } = useScroll({\n target: containerRef,\n offset: [\"start start\", \"end start\"],\n });\n\n // Hero dims from opacity 1 to 0.3 as you scroll through first 20% of page\n const heroOpacity = useTransform(scrollYProgress, [0, 0.15], [1, 0.3]);\n\n // Content has subtle parallax - moves up slower than scroll\n const heroY = useTransform(scrollYProgress, [0, 0.3], [0, -100]);\n\n return (\n <main\n ref={containerRef}\n className={cn(\n \"relative scroll-smooth\",\n className\n )}\n >\n {/* Sticky hero container */}\n <motion.div\n className=\"sticky top-0 h-screen overflow-hidden\"\n style={{ opacity: heroOpacity }}\n >\n <motion.div style={{ y: heroY }} className=\"h-full\">\n <ClusterHero cluster={clusterId} className=\"h-full\" />\n </motion.div>\n </motion.div>\n\n {/* Scroll sections - these scroll over the sticky hero */}\n <div className=\"relative\">\n <FeatureCardsSection clusterId={clusterId} config={config} />\n <ClusterStatsSection clusterId={clusterId} config={config} />\n <CTASection clusterId={clusterId} config={config} />\n </div>\n </main>\n );\n}\n\nexport default ClusterHeroPage;\n"]}