agent-relay 2.0.21 → 2.0.23

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 (412) hide show
  1. package/bin/relay-pty-linux-arm64 +0 -0
  2. package/dist/src/cli/index.d.ts +3 -3
  3. package/dist/src/cli/index.js +31 -100
  4. package/package.json +22 -29
  5. package/packages/api-types/package.json +1 -1
  6. package/packages/bridge/package.json +8 -8
  7. package/packages/cli-tester/package.json +1 -1
  8. package/packages/cloud/dist/server.js +25 -4
  9. package/packages/cloud/package.json +6 -6
  10. package/packages/config/package.json +2 -2
  11. package/packages/continuity/package.json +1 -1
  12. package/packages/daemon/dist/orchestrator.js +21 -1
  13. package/packages/daemon/dist/router.d.ts +5 -0
  14. package/packages/daemon/dist/router.js +31 -0
  15. package/packages/daemon/dist/server.d.ts +5 -0
  16. package/packages/daemon/dist/server.js +131 -1
  17. package/packages/daemon/package.json +12 -12
  18. package/packages/hooks/package.json +4 -4
  19. package/packages/mcp/dist/client.d.ts +15 -0
  20. package/packages/mcp/dist/client.js +9 -0
  21. package/packages/mcp/dist/server.js +13 -1
  22. package/packages/mcp/dist/tools/index.d.ts +2 -0
  23. package/packages/mcp/dist/tools/index.js +2 -0
  24. package/packages/mcp/dist/tools/relay-connected.d.ts +17 -0
  25. package/packages/mcp/dist/tools/relay-connected.js +40 -0
  26. package/packages/mcp/dist/tools/relay-remove-agent.d.ts +20 -0
  27. package/packages/mcp/dist/tools/relay-remove-agent.js +50 -0
  28. package/packages/mcp/package.json +2 -2
  29. package/packages/memory/package.json +2 -2
  30. package/packages/policy/package.json +2 -2
  31. package/packages/protocol/dist/types.d.ts +46 -1
  32. package/packages/protocol/package.json +1 -1
  33. package/packages/resiliency/package.json +1 -1
  34. package/packages/sdk/dist/client.d.ts +22 -1
  35. package/packages/sdk/dist/client.js +31 -0
  36. package/packages/sdk/dist/protocol/index.d.ts +1 -1
  37. package/packages/sdk/dist/protocol/types.d.ts +35 -1
  38. package/packages/sdk/package.json +2 -2
  39. package/packages/spawner/package.json +1 -1
  40. package/packages/state/package.json +1 -1
  41. package/packages/storage/dist/adapter.d.ts +4 -0
  42. package/packages/storage/dist/sqlite-adapter.d.ts +10 -0
  43. package/packages/storage/dist/sqlite-adapter.js +26 -0
  44. package/packages/storage/package.json +2 -2
  45. package/packages/telemetry/package.json +1 -1
  46. package/packages/trajectory/package.json +2 -2
  47. package/packages/user-directory/package.json +2 -2
  48. package/packages/utils/dist/update-checker.js +4 -0
  49. package/packages/utils/package.json +1 -1
  50. package/packages/wrapper/package.json +6 -6
  51. package/deploy/workspace/codex.config.toml +0 -20
  52. package/deploy/workspace/entrypoint-browser.sh +0 -118
  53. package/deploy/workspace/entrypoint.sh +0 -612
  54. package/deploy/workspace/gh-credential-relay +0 -90
  55. package/deploy/workspace/gh-relay +0 -156
  56. package/deploy/workspace/git-credential-relay +0 -330
  57. package/deploy/workspace/git-credential-relay.test.sh +0 -230
  58. package/dist/dashboard/out/404.html +0 -1
  59. package/dist/dashboard/out/_next/static/7MZPqYkVGw3EGzVBkVmY9/_buildManifest.js +0 -1
  60. package/dist/dashboard/out/_next/static/7MZPqYkVGw3EGzVBkVmY9/_ssgManifest.js +0 -1
  61. package/dist/dashboard/out/_next/static/chunks/116-a883fca163f3a5bc.js +0 -1
  62. package/dist/dashboard/out/_next/static/chunks/117-c8afed19e821a35d.js +0 -2
  63. package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +0 -1
  64. package/dist/dashboard/out/_next/static/chunks/320-a6304232cd0ee2ce.js +0 -1
  65. package/dist/dashboard/out/_next/static/chunks/532-bace199897eeab37.js +0 -9
  66. package/dist/dashboard/out/_next/static/chunks/631-16b905e5920f9b59.js +0 -1
  67. package/dist/dashboard/out/_next/static/chunks/648-acb2ff9f77cbfbd3.js +0 -1
  68. package/dist/dashboard/out/_next/static/chunks/766-2aea80818f7eb0d8.js +0 -1
  69. package/dist/dashboard/out/_next/static/chunks/83-26d2bde54616ee90.js +0 -1
  70. package/dist/dashboard/out/_next/static/chunks/847-f1f467060f32afff.js +0 -1
  71. package/dist/dashboard/out/_next/static/chunks/891-5cb1513eeb97a891.js +0 -1
  72. package/dist/dashboard/out/_next/static/chunks/app/_not-found/page-60501fddbafba9dc.js +0 -1
  73. package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-9914652442f7e4fb.js +0 -1
  74. package/dist/dashboard/out/_next/static/chunks/app/app/page-366fb7c078d4e9e0.js +0 -1
  75. package/dist/dashboard/out/_next/static/chunks/app/cloud/link/page-fa1d5842aa90e8a6.js +0 -1
  76. package/dist/dashboard/out/_next/static/chunks/app/complete-profile/page-dd64bbdf66b639cd.js +0 -1
  77. package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-113060009ef35bc2.js +0 -1
  78. package/dist/dashboard/out/_next/static/chunks/app/history/page-9965d2483011b846.js +0 -1
  79. package/dist/dashboard/out/_next/static/chunks/app/layout-6b91e33784c20610.js +0 -1
  80. package/dist/dashboard/out/_next/static/chunks/app/login/page-435eceb0073be027.js +0 -1
  81. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-1e37ef8e73940b40.js +0 -1
  82. package/dist/dashboard/out/_next/static/chunks/app/page-8119d4246743574e.js +0 -1
  83. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-9db3ebdfa567a7c9.js +0 -1
  84. package/dist/dashboard/out/_next/static/chunks/app/providers/page-ecb16ffd3b36262b.js +0 -1
  85. package/dist/dashboard/out/_next/static/chunks/app/providers/setup/[provider]/page-4dbe33f0f7691b7c.js +0 -1
  86. package/dist/dashboard/out/_next/static/chunks/app/signup/page-c7a0a28341365ae0.js +0 -1
  87. package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +0 -18
  88. package/dist/dashboard/out/_next/static/chunks/fd9d1056-609918ca7b6280bb.js +0 -1
  89. package/dist/dashboard/out/_next/static/chunks/framework-f66176bb897dc684.js +0 -1
  90. package/dist/dashboard/out/_next/static/chunks/main-311c3db74dcfadb7.js +0 -1
  91. package/dist/dashboard/out/_next/static/chunks/main-app-fdbeb09028f57c9f.js +0 -1
  92. package/dist/dashboard/out/_next/static/chunks/pages/_app-72b849fbd24ac258.js +0 -1
  93. package/dist/dashboard/out/_next/static/chunks/pages/_error-7ba65e1336b92748.js +0 -1
  94. package/dist/dashboard/out/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
  95. package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +0 -1
  96. package/dist/dashboard/out/_next/static/css/4034f236dd1a3178.css +0 -1
  97. package/dist/dashboard/out/_next/static/css/6892f8422896ef7a.css +0 -1
  98. package/dist/dashboard/out/alt-logos/agent-relay-logo-128.png +0 -0
  99. package/dist/dashboard/out/alt-logos/agent-relay-logo-256.png +0 -0
  100. package/dist/dashboard/out/alt-logos/agent-relay-logo-32.png +0 -0
  101. package/dist/dashboard/out/alt-logos/agent-relay-logo-512.png +0 -0
  102. package/dist/dashboard/out/alt-logos/agent-relay-logo-64.png +0 -0
  103. package/dist/dashboard/out/alt-logos/agent-relay-logo.svg +0 -45
  104. package/dist/dashboard/out/alt-logos/logo.svg +0 -38
  105. package/dist/dashboard/out/alt-logos/monogram-logo-128.png +0 -0
  106. package/dist/dashboard/out/alt-logos/monogram-logo-256.png +0 -0
  107. package/dist/dashboard/out/alt-logos/monogram-logo-32.png +0 -0
  108. package/dist/dashboard/out/alt-logos/monogram-logo-512.png +0 -0
  109. package/dist/dashboard/out/alt-logos/monogram-logo-64.png +0 -0
  110. package/dist/dashboard/out/alt-logos/monogram-logo.svg +0 -38
  111. package/dist/dashboard/out/app/onboarding.html +0 -1
  112. package/dist/dashboard/out/app/onboarding.txt +0 -7
  113. package/dist/dashboard/out/app.html +0 -1
  114. package/dist/dashboard/out/app.txt +0 -7
  115. package/dist/dashboard/out/apple-icon.png +0 -0
  116. package/dist/dashboard/out/cloud/link.html +0 -1
  117. package/dist/dashboard/out/cloud/link.txt +0 -7
  118. package/dist/dashboard/out/complete-profile.html +0 -5
  119. package/dist/dashboard/out/complete-profile.txt +0 -7
  120. package/dist/dashboard/out/connect-repos.html +0 -1
  121. package/dist/dashboard/out/connect-repos.txt +0 -7
  122. package/dist/dashboard/out/history.html +0 -1
  123. package/dist/dashboard/out/history.txt +0 -7
  124. package/dist/dashboard/out/index.html +0 -1
  125. package/dist/dashboard/out/index.txt +0 -7
  126. package/dist/dashboard/out/login.html +0 -5
  127. package/dist/dashboard/out/login.txt +0 -7
  128. package/dist/dashboard/out/metrics.html +0 -1
  129. package/dist/dashboard/out/metrics.txt +0 -7
  130. package/dist/dashboard/out/pricing.html +0 -13
  131. package/dist/dashboard/out/pricing.txt +0 -7
  132. package/dist/dashboard/out/providers/setup/claude.html +0 -1
  133. package/dist/dashboard/out/providers/setup/claude.txt +0 -8
  134. package/dist/dashboard/out/providers/setup/codex.html +0 -1
  135. package/dist/dashboard/out/providers/setup/codex.txt +0 -8
  136. package/dist/dashboard/out/providers/setup/cursor.html +0 -1
  137. package/dist/dashboard/out/providers/setup/cursor.txt +0 -8
  138. package/dist/dashboard/out/providers.html +0 -1
  139. package/dist/dashboard/out/providers.txt +0 -7
  140. package/dist/dashboard/out/signup.html +0 -6
  141. package/dist/dashboard/out/signup.txt +0 -7
  142. package/dist/src/dashboard-server/index.d.ts +0 -8
  143. package/dist/src/dashboard-server/index.js +0 -8
  144. package/packages/dashboard/README.md +0 -48
  145. package/packages/dashboard/dist/health-worker-manager.d.ts +0 -62
  146. package/packages/dashboard/dist/health-worker-manager.js +0 -144
  147. package/packages/dashboard/dist/health-worker.d.ts +0 -9
  148. package/packages/dashboard/dist/health-worker.js +0 -79
  149. package/packages/dashboard/dist/index.d.ts +0 -20
  150. package/packages/dashboard/dist/index.js +0 -19
  151. package/packages/dashboard/dist/metrics.d.ts +0 -105
  152. package/packages/dashboard/dist/metrics.js +0 -193
  153. package/packages/dashboard/dist/needs-attention.d.ts +0 -24
  154. package/packages/dashboard/dist/needs-attention.js +0 -78
  155. package/packages/dashboard/dist/server.d.ts +0 -25
  156. package/packages/dashboard/dist/server.js +0 -5270
  157. package/packages/dashboard/dist/start.d.ts +0 -6
  158. package/packages/dashboard/dist/start.js +0 -13
  159. package/packages/dashboard/dist/types/threading.d.ts +0 -8
  160. package/packages/dashboard/dist/types/threading.js +0 -2
  161. package/packages/dashboard/dist/user-bridge.d.ts +0 -154
  162. package/packages/dashboard/dist/user-bridge.js +0 -372
  163. package/packages/dashboard/package.json +0 -65
  164. package/packages/dashboard/ui/app/app/onboarding/page.tsx +0 -394
  165. package/packages/dashboard/ui/app/app/page.tsx +0 -667
  166. package/packages/dashboard/ui/app/apple-icon.png +0 -0
  167. package/packages/dashboard/ui/app/cloud/link/page.tsx +0 -464
  168. package/packages/dashboard/ui/app/complete-profile/page.tsx +0 -204
  169. package/packages/dashboard/ui/app/connect-repos/page.tsx +0 -410
  170. package/packages/dashboard/ui/app/favicon.png +0 -0
  171. package/packages/dashboard/ui/app/globals.css +0 -59
  172. package/packages/dashboard/ui/app/history/page.tsx +0 -658
  173. package/packages/dashboard/ui/app/layout.tsx +0 -25
  174. package/packages/dashboard/ui/app/login/page.tsx +0 -424
  175. package/packages/dashboard/ui/app/metrics/page.tsx +0 -751
  176. package/packages/dashboard/ui/app/page.tsx +0 -59
  177. package/packages/dashboard/ui/app/pricing/page.tsx +0 -7
  178. package/packages/dashboard/ui/app/providers/page.tsx +0 -193
  179. package/packages/dashboard/ui/app/providers/setup/[provider]/ProviderSetupClient.tsx +0 -148
  180. package/packages/dashboard/ui/app/providers/setup/[provider]/constants.ts +0 -35
  181. package/packages/dashboard/ui/app/providers/setup/[provider]/page.tsx +0 -42
  182. package/packages/dashboard/ui/app/signup/page.tsx +0 -533
  183. package/packages/dashboard/ui/index.ts +0 -49
  184. package/packages/dashboard/ui/landing/LandingPage.tsx +0 -713
  185. package/packages/dashboard/ui/landing/PricingPage.tsx +0 -559
  186. package/packages/dashboard/ui/landing/index.ts +0 -6
  187. package/packages/dashboard/ui/landing/styles.css +0 -2850
  188. package/packages/dashboard/ui/lib/agent-merge.ts +0 -35
  189. package/packages/dashboard/ui/lib/api.ts +0 -1155
  190. package/packages/dashboard/ui/lib/cloudApi.ts +0 -877
  191. package/packages/dashboard/ui/lib/colors.ts +0 -218
  192. package/packages/dashboard/ui/lib/hierarchy.ts +0 -242
  193. package/packages/dashboard/ui/lib/stuckDetection.ts +0 -142
  194. package/packages/dashboard/ui/next-env.d.ts +0 -5
  195. package/packages/dashboard/ui/next.config.js +0 -41
  196. package/packages/dashboard/ui/package-lock.json +0 -2882
  197. package/packages/dashboard/ui/package.json +0 -33
  198. package/packages/dashboard/ui/postcss.config.js +0 -5
  199. package/packages/dashboard/ui/react-components/ActivityFeed.tsx +0 -216
  200. package/packages/dashboard/ui/react-components/AddWorkspaceModal.tsx +0 -170
  201. package/packages/dashboard/ui/react-components/AgentCard.tsx +0 -587
  202. package/packages/dashboard/ui/react-components/AgentList.tsx +0 -411
  203. package/packages/dashboard/ui/react-components/AgentProfilePanel.tsx +0 -564
  204. package/packages/dashboard/ui/react-components/App.tsx +0 -3033
  205. package/packages/dashboard/ui/react-components/BillingPanel.tsx +0 -922
  206. package/packages/dashboard/ui/react-components/BillingResult.tsx +0 -447
  207. package/packages/dashboard/ui/react-components/BroadcastComposer.tsx +0 -690
  208. package/packages/dashboard/ui/react-components/ChannelAdminPanel.tsx +0 -773
  209. package/packages/dashboard/ui/react-components/ChannelBrowser.tsx +0 -385
  210. package/packages/dashboard/ui/react-components/ChannelChat.tsx +0 -261
  211. package/packages/dashboard/ui/react-components/ChannelSidebar.tsx +0 -399
  212. package/packages/dashboard/ui/react-components/CloudSessionProvider.tsx +0 -130
  213. package/packages/dashboard/ui/react-components/CommandPalette.tsx +0 -815
  214. package/packages/dashboard/ui/react-components/ConfirmationDialog.tsx +0 -133
  215. package/packages/dashboard/ui/react-components/ConversationHistory.tsx +0 -518
  216. package/packages/dashboard/ui/react-components/CoordinatorPanel.tsx +0 -944
  217. package/packages/dashboard/ui/react-components/DecisionQueue.tsx +0 -717
  218. package/packages/dashboard/ui/react-components/DirectMessageView.tsx +0 -164
  219. package/packages/dashboard/ui/react-components/FileAutocomplete.tsx +0 -368
  220. package/packages/dashboard/ui/react-components/FleetOverview.tsx +0 -278
  221. package/packages/dashboard/ui/react-components/LogViewer.tsx +0 -310
  222. package/packages/dashboard/ui/react-components/LogViewerPanel.tsx +0 -482
  223. package/packages/dashboard/ui/react-components/Logo.tsx +0 -284
  224. package/packages/dashboard/ui/react-components/MentionAutocomplete.tsx +0 -384
  225. package/packages/dashboard/ui/react-components/MessageComposer.tsx +0 -457
  226. package/packages/dashboard/ui/react-components/MessageList.tsx +0 -649
  227. package/packages/dashboard/ui/react-components/MessageSenderName.tsx +0 -91
  228. package/packages/dashboard/ui/react-components/MessageStatusIndicator.tsx +0 -142
  229. package/packages/dashboard/ui/react-components/NewConversationModal.tsx +0 -400
  230. package/packages/dashboard/ui/react-components/NotificationToast.tsx +0 -488
  231. package/packages/dashboard/ui/react-components/OnlineUsersIndicator.tsx +0 -164
  232. package/packages/dashboard/ui/react-components/Pagination.tsx +0 -124
  233. package/packages/dashboard/ui/react-components/PricingPlans.tsx +0 -386
  234. package/packages/dashboard/ui/react-components/ProjectList.tsx +0 -625
  235. package/packages/dashboard/ui/react-components/ProviderAuthFlow.tsx +0 -853
  236. package/packages/dashboard/ui/react-components/ProviderConnectionList.tsx +0 -378
  237. package/packages/dashboard/ui/react-components/ProvisioningProgress.tsx +0 -730
  238. package/packages/dashboard/ui/react-components/RepoAccessPanel.tsx +0 -549
  239. package/packages/dashboard/ui/react-components/ServerCard.tsx +0 -202
  240. package/packages/dashboard/ui/react-components/SessionExpiredModal.tsx +0 -128
  241. package/packages/dashboard/ui/react-components/SpawnModal.tsx +0 -804
  242. package/packages/dashboard/ui/react-components/TaskAssignmentUI.tsx +0 -375
  243. package/packages/dashboard/ui/react-components/TerminalProviderSetup.tsx +0 -608
  244. package/packages/dashboard/ui/react-components/ThemeProvider.tsx +0 -325
  245. package/packages/dashboard/ui/react-components/ThinkingIndicator.tsx +0 -231
  246. package/packages/dashboard/ui/react-components/ThreadList.tsx +0 -198
  247. package/packages/dashboard/ui/react-components/ThreadPanel.tsx +0 -346
  248. package/packages/dashboard/ui/react-components/TrajectoryViewer.tsx +0 -698
  249. package/packages/dashboard/ui/react-components/TypingIndicator.tsx +0 -69
  250. package/packages/dashboard/ui/react-components/UsageBanner.tsx +0 -231
  251. package/packages/dashboard/ui/react-components/UserProfilePanel.tsx +0 -233
  252. package/packages/dashboard/ui/react-components/WorkspaceContext.tsx +0 -107
  253. package/packages/dashboard/ui/react-components/WorkspaceSelector.tsx +0 -234
  254. package/packages/dashboard/ui/react-components/WorkspaceStatusIndicator.tsx +0 -370
  255. package/packages/dashboard/ui/react-components/XTermInteractive.tsx +0 -510
  256. package/packages/dashboard/ui/react-components/XTermLogViewer.tsx +0 -719
  257. package/packages/dashboard/ui/react-components/channels/ChannelDialogs.tsx +0 -1411
  258. package/packages/dashboard/ui/react-components/channels/ChannelHeader.tsx +0 -317
  259. package/packages/dashboard/ui/react-components/channels/ChannelMessageList.tsx +0 -463
  260. package/packages/dashboard/ui/react-components/channels/ChannelViewV1.tsx +0 -146
  261. package/packages/dashboard/ui/react-components/channels/MessageInput.tsx +0 -288
  262. package/packages/dashboard/ui/react-components/channels/SearchInput.tsx +0 -172
  263. package/packages/dashboard/ui/react-components/channels/SearchResults.tsx +0 -336
  264. package/packages/dashboard/ui/react-components/channels/api.ts +0 -697
  265. package/packages/dashboard/ui/react-components/channels/index.ts +0 -76
  266. package/packages/dashboard/ui/react-components/channels/mockApi.ts +0 -344
  267. package/packages/dashboard/ui/react-components/channels/types.ts +0 -566
  268. package/packages/dashboard/ui/react-components/hooks/index.ts +0 -57
  269. package/packages/dashboard/ui/react-components/hooks/useAgentLogs.ts +0 -394
  270. package/packages/dashboard/ui/react-components/hooks/useAgents.ts +0 -127
  271. package/packages/dashboard/ui/react-components/hooks/useBroadcastDedup.ts +0 -86
  272. package/packages/dashboard/ui/react-components/hooks/useChannelAdmin.ts +0 -329
  273. package/packages/dashboard/ui/react-components/hooks/useChannelBrowser.ts +0 -239
  274. package/packages/dashboard/ui/react-components/hooks/useChannelCommands.ts +0 -138
  275. package/packages/dashboard/ui/react-components/hooks/useChannels.ts +0 -328
  276. package/packages/dashboard/ui/react-components/hooks/useDebounce.ts +0 -29
  277. package/packages/dashboard/ui/react-components/hooks/useDirectMessage.ts +0 -141
  278. package/packages/dashboard/ui/react-components/hooks/useMessages.ts +0 -309
  279. package/packages/dashboard/ui/react-components/hooks/useOrchestrator.ts +0 -364
  280. package/packages/dashboard/ui/react-components/hooks/usePinnedAgents.ts +0 -140
  281. package/packages/dashboard/ui/react-components/hooks/usePresence.ts +0 -340
  282. package/packages/dashboard/ui/react-components/hooks/useRecentRepos.ts +0 -130
  283. package/packages/dashboard/ui/react-components/hooks/useSession.ts +0 -209
  284. package/packages/dashboard/ui/react-components/hooks/useTrajectory.ts +0 -265
  285. package/packages/dashboard/ui/react-components/hooks/useWebSocket.ts +0 -169
  286. package/packages/dashboard/ui/react-components/hooks/useWorkspaceMembers.ts +0 -120
  287. package/packages/dashboard/ui/react-components/hooks/useWorkspaceRepos.ts +0 -73
  288. package/packages/dashboard/ui/react-components/hooks/useWorkspaceStatus.ts +0 -237
  289. package/packages/dashboard/ui/react-components/index.ts +0 -81
  290. package/packages/dashboard/ui/react-components/layout/Header.tsx +0 -355
  291. package/packages/dashboard/ui/react-components/layout/RepoContextHeader.tsx +0 -361
  292. package/packages/dashboard/ui/react-components/layout/Sidebar.archive.test.tsx +0 -126
  293. package/packages/dashboard/ui/react-components/layout/Sidebar.test.tsx +0 -691
  294. package/packages/dashboard/ui/react-components/layout/Sidebar.tsx +0 -930
  295. package/packages/dashboard/ui/react-components/layout/index.ts +0 -7
  296. package/packages/dashboard/ui/react-components/settings/BillingSettingsPanel.tsx +0 -564
  297. package/packages/dashboard/ui/react-components/settings/SettingsPage.tsx +0 -544
  298. package/packages/dashboard/ui/react-components/settings/TeamSettingsPanel.tsx +0 -560
  299. package/packages/dashboard/ui/react-components/settings/WorkspaceSettingsPanel.tsx +0 -1386
  300. package/packages/dashboard/ui/react-components/settings/index.ts +0 -11
  301. package/packages/dashboard/ui/react-components/settings/types.ts +0 -53
  302. package/packages/dashboard/ui/react-components/utils/messageFormatting.tsx +0 -370
  303. package/packages/dashboard/ui/tailwind.config.js +0 -148
  304. package/packages/dashboard/ui/types/index.ts +0 -304
  305. package/packages/dashboard/ui/types/threading.ts +0 -7
  306. package/packages/dashboard/ui-dist/404.html +0 -1
  307. package/packages/dashboard/ui-dist/_next/static/7MZPqYkVGw3EGzVBkVmY9/_buildManifest.js +0 -1
  308. package/packages/dashboard/ui-dist/_next/static/7MZPqYkVGw3EGzVBkVmY9/_ssgManifest.js +0 -1
  309. package/packages/dashboard/ui-dist/_next/static/chunks/116-a883fca163f3a5bc.js +0 -1
  310. package/packages/dashboard/ui-dist/_next/static/chunks/117-c8afed19e821a35d.js +0 -2
  311. package/packages/dashboard/ui-dist/_next/static/chunks/282-980c2eb8fff20123.js +0 -1
  312. package/packages/dashboard/ui-dist/_next/static/chunks/320-a6304232cd0ee2ce.js +0 -1
  313. package/packages/dashboard/ui-dist/_next/static/chunks/532-bace199897eeab37.js +0 -9
  314. package/packages/dashboard/ui-dist/_next/static/chunks/631-16b905e5920f9b59.js +0 -1
  315. package/packages/dashboard/ui-dist/_next/static/chunks/648-acb2ff9f77cbfbd3.js +0 -1
  316. package/packages/dashboard/ui-dist/_next/static/chunks/766-2aea80818f7eb0d8.js +0 -1
  317. package/packages/dashboard/ui-dist/_next/static/chunks/83-26d2bde54616ee90.js +0 -1
  318. package/packages/dashboard/ui-dist/_next/static/chunks/847-f1f467060f32afff.js +0 -1
  319. package/packages/dashboard/ui-dist/_next/static/chunks/891-5cb1513eeb97a891.js +0 -1
  320. package/packages/dashboard/ui-dist/_next/static/chunks/app/_not-found/page-60501fddbafba9dc.js +0 -1
  321. package/packages/dashboard/ui-dist/_next/static/chunks/app/app/onboarding/page-9914652442f7e4fb.js +0 -1
  322. package/packages/dashboard/ui-dist/_next/static/chunks/app/app/page-366fb7c078d4e9e0.js +0 -1
  323. package/packages/dashboard/ui-dist/_next/static/chunks/app/cloud/link/page-fa1d5842aa90e8a6.js +0 -1
  324. package/packages/dashboard/ui-dist/_next/static/chunks/app/complete-profile/page-dd64bbdf66b639cd.js +0 -1
  325. package/packages/dashboard/ui-dist/_next/static/chunks/app/connect-repos/page-113060009ef35bc2.js +0 -1
  326. package/packages/dashboard/ui-dist/_next/static/chunks/app/history/page-9965d2483011b846.js +0 -1
  327. package/packages/dashboard/ui-dist/_next/static/chunks/app/layout-6b91e33784c20610.js +0 -1
  328. package/packages/dashboard/ui-dist/_next/static/chunks/app/login/page-435eceb0073be027.js +0 -1
  329. package/packages/dashboard/ui-dist/_next/static/chunks/app/metrics/page-1e37ef8e73940b40.js +0 -1
  330. package/packages/dashboard/ui-dist/_next/static/chunks/app/page-8119d4246743574e.js +0 -1
  331. package/packages/dashboard/ui-dist/_next/static/chunks/app/pricing/page-9db3ebdfa567a7c9.js +0 -1
  332. package/packages/dashboard/ui-dist/_next/static/chunks/app/providers/page-ecb16ffd3b36262b.js +0 -1
  333. package/packages/dashboard/ui-dist/_next/static/chunks/app/providers/setup/[provider]/page-4dbe33f0f7691b7c.js +0 -1
  334. package/packages/dashboard/ui-dist/_next/static/chunks/app/signup/page-c7a0a28341365ae0.js +0 -1
  335. package/packages/dashboard/ui-dist/_next/static/chunks/e868780c-48e5f147c90a3a41.js +0 -18
  336. package/packages/dashboard/ui-dist/_next/static/chunks/fd9d1056-609918ca7b6280bb.js +0 -1
  337. package/packages/dashboard/ui-dist/_next/static/chunks/framework-f66176bb897dc684.js +0 -1
  338. package/packages/dashboard/ui-dist/_next/static/chunks/main-311c3db74dcfadb7.js +0 -1
  339. package/packages/dashboard/ui-dist/_next/static/chunks/main-app-fdbeb09028f57c9f.js +0 -1
  340. package/packages/dashboard/ui-dist/_next/static/chunks/pages/_app-72b849fbd24ac258.js +0 -1
  341. package/packages/dashboard/ui-dist/_next/static/chunks/pages/_error-7ba65e1336b92748.js +0 -1
  342. package/packages/dashboard/ui-dist/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
  343. package/packages/dashboard/ui-dist/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +0 -1
  344. package/packages/dashboard/ui-dist/_next/static/css/4034f236dd1a3178.css +0 -1
  345. package/packages/dashboard/ui-dist/_next/static/css/6892f8422896ef7a.css +0 -1
  346. package/packages/dashboard/ui-dist/_next/static/iJ3Uiz3IrqUJL7IxKZHiV/_buildManifest.js +0 -1
  347. package/packages/dashboard/ui-dist/_next/static/iJ3Uiz3IrqUJL7IxKZHiV/_ssgManifest.js +0 -1
  348. package/packages/dashboard/ui-dist/_next/static/l-jd878zUJ_IlraqEWMZc/_buildManifest.js +0 -1
  349. package/packages/dashboard/ui-dist/_next/static/l-jd878zUJ_IlraqEWMZc/_ssgManifest.js +0 -1
  350. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-128.png +0 -0
  351. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-256.png +0 -0
  352. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-32.png +0 -0
  353. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-512.png +0 -0
  354. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-64.png +0 -0
  355. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo.svg +0 -45
  356. package/packages/dashboard/ui-dist/alt-logos/logo.svg +0 -38
  357. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-128.png +0 -0
  358. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-256.png +0 -0
  359. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-32.png +0 -0
  360. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-512.png +0 -0
  361. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-64.png +0 -0
  362. package/packages/dashboard/ui-dist/alt-logos/monogram-logo.svg +0 -38
  363. package/packages/dashboard/ui-dist/app/onboarding.html +0 -1
  364. package/packages/dashboard/ui-dist/app/onboarding.txt +0 -7
  365. package/packages/dashboard/ui-dist/app.html +0 -1
  366. package/packages/dashboard/ui-dist/app.txt +0 -7
  367. package/packages/dashboard/ui-dist/apple-icon.png +0 -0
  368. package/packages/dashboard/ui-dist/cloud/link.html +0 -1
  369. package/packages/dashboard/ui-dist/cloud/link.txt +0 -7
  370. package/packages/dashboard/ui-dist/complete-profile.html +0 -5
  371. package/packages/dashboard/ui-dist/complete-profile.txt +0 -7
  372. package/packages/dashboard/ui-dist/connect-repos.html +0 -1
  373. package/packages/dashboard/ui-dist/connect-repos.txt +0 -7
  374. package/packages/dashboard/ui-dist/history.html +0 -1
  375. package/packages/dashboard/ui-dist/history.txt +0 -7
  376. package/packages/dashboard/ui-dist/index.html +0 -1
  377. package/packages/dashboard/ui-dist/index.txt +0 -7
  378. package/packages/dashboard/ui-dist/login.html +0 -5
  379. package/packages/dashboard/ui-dist/login.txt +0 -7
  380. package/packages/dashboard/ui-dist/metrics.html +0 -1
  381. package/packages/dashboard/ui-dist/metrics.txt +0 -7
  382. package/packages/dashboard/ui-dist/pricing.html +0 -13
  383. package/packages/dashboard/ui-dist/pricing.txt +0 -7
  384. package/packages/dashboard/ui-dist/providers/setup/claude.html +0 -1
  385. package/packages/dashboard/ui-dist/providers/setup/claude.txt +0 -8
  386. package/packages/dashboard/ui-dist/providers/setup/codex.html +0 -1
  387. package/packages/dashboard/ui-dist/providers/setup/codex.txt +0 -8
  388. package/packages/dashboard/ui-dist/providers/setup/cursor.html +0 -1
  389. package/packages/dashboard/ui-dist/providers/setup/cursor.txt +0 -8
  390. package/packages/dashboard/ui-dist/providers.html +0 -1
  391. package/packages/dashboard/ui-dist/providers.txt +0 -7
  392. package/packages/dashboard/ui-dist/signup.html +0 -6
  393. package/packages/dashboard/ui-dist/signup.txt +0 -7
  394. package/packages/dashboard-server/dist/health-worker-manager.d.ts +0 -62
  395. package/packages/dashboard-server/dist/health-worker-manager.js +0 -144
  396. package/packages/dashboard-server/dist/health-worker.d.ts +0 -9
  397. package/packages/dashboard-server/dist/health-worker.js +0 -79
  398. package/packages/dashboard-server/dist/index.d.ts +0 -18
  399. package/packages/dashboard-server/dist/index.js +0 -17
  400. package/packages/dashboard-server/dist/metrics.d.ts +0 -105
  401. package/packages/dashboard-server/dist/metrics.js +0 -193
  402. package/packages/dashboard-server/dist/needs-attention.d.ts +0 -24
  403. package/packages/dashboard-server/dist/needs-attention.js +0 -78
  404. package/packages/dashboard-server/dist/server.d.ts +0 -25
  405. package/packages/dashboard-server/dist/server.js +0 -5158
  406. package/packages/dashboard-server/dist/start.d.ts +0 -6
  407. package/packages/dashboard-server/dist/start.js +0 -13
  408. package/packages/dashboard-server/dist/types/threading.d.ts +0 -8
  409. package/packages/dashboard-server/dist/types/threading.js +0 -2
  410. package/packages/dashboard-server/dist/user-bridge.d.ts +0 -158
  411. package/packages/dashboard-server/dist/user-bridge.js +0 -390
  412. package/packages/dashboard-server/package.json +0 -55
@@ -1,2850 +0,0 @@
1
- /**
2
- * Agent Relay Cloud - Landing Page Styles
3
- *
4
- * Aesthetic: Mission Control / Command Center
5
- * Dark, atmospheric, with glowing agent connections
6
- */
7
-
8
- /* ============================================
9
- FONTS
10
- ============================================ */
11
- @import url('https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&family=Inter:wght@400;500;600&display=swap');
12
-
13
- /* ============================================
14
- CSS VARIABLES
15
- ============================================ */
16
- :root {
17
- /* Colors */
18
- --bg-deep: #0a0a0f;
19
- --bg-primary: #0d0d14;
20
- --bg-secondary: #12121c;
21
- --bg-tertiary: #181824;
22
- --bg-card: #1a1a28;
23
- --bg-elevated: #202030;
24
-
25
- --text-primary: #f0f0f5;
26
- --text-secondary: #a0a0b0;
27
- --text-muted: #606070;
28
- --text-dim: #404050;
29
-
30
- --accent-cyan: #00d9ff;
31
- --accent-orange: #ff6b35;
32
- --accent-teal: #00ffc8;
33
- --accent-blue: #0891b2;
34
- --accent-green: #00ffc8;
35
-
36
- --border-subtle: rgba(255, 255, 255, 0.06);
37
- --border-light: rgba(255, 255, 255, 0.1);
38
- --border-medium: rgba(255, 255, 255, 0.15);
39
-
40
- --glow-cyan: 0 0 30px rgba(0, 217, 255, 0.3);
41
- --glow-orange: 0 0 30px rgba(255, 107, 53, 0.3);
42
- --glow-teal: 0 0 30px rgba(0, 255, 200, 0.3);
43
- --glow-blue: 0 0 30px rgba(8, 145, 178, 0.3);
44
-
45
- /* Typography */
46
- --font-display: 'Outfit', sans-serif;
47
- --font-mono: 'IBM Plex Mono', monospace;
48
- --font-body: 'Inter', sans-serif;
49
-
50
- /* Spacing */
51
- --section-padding: 120px;
52
- --container-max: 1280px;
53
-
54
- /* Transitions */
55
- --transition-fast: 0.15s ease;
56
- --transition-medium: 0.3s ease;
57
- --transition-slow: 0.5s ease;
58
- }
59
-
60
- /* ============================================
61
- RESET & BASE (scoped to landing pages only)
62
- ============================================ */
63
- .landing-page *,
64
- .landing-page *::before,
65
- .landing-page *::after,
66
- .pricing-page *,
67
- .pricing-page *::before,
68
- .pricing-page *::after {
69
- margin: 0;
70
- padding: 0;
71
- box-sizing: border-box;
72
- }
73
-
74
- .landing-page,
75
- .pricing-page {
76
- font-family: var(--font-body);
77
- font-size: 16px;
78
- line-height: 1.6;
79
- color: var(--text-primary);
80
- background: var(--bg-deep);
81
- -webkit-font-smoothing: antialiased;
82
- -moz-osx-font-smoothing: grayscale;
83
- }
84
-
85
- .landing-page a,
86
- .pricing-page a {
87
- color: inherit;
88
- text-decoration: none;
89
- }
90
-
91
- .landing-page button,
92
- .pricing-page button {
93
- font-family: inherit;
94
- cursor: pointer;
95
- border: none;
96
- background: none;
97
- }
98
-
99
- /* ============================================
100
- LANDING PAGE CONTAINER
101
- ============================================ */
102
- .landing-page {
103
- position: relative;
104
- min-height: 100vh;
105
- overflow-x: hidden;
106
- }
107
-
108
- .landing-bg {
109
- position: fixed;
110
- inset: 0;
111
- pointer-events: none;
112
- z-index: 0;
113
- }
114
-
115
- /* ============================================
116
- GRID BACKGROUND
117
- ============================================ */
118
- .grid-bg {
119
- position: absolute;
120
- inset: 0;
121
- overflow: hidden;
122
- }
123
-
124
- .grid-lines {
125
- position: absolute;
126
- inset: 0;
127
- background-image:
128
- linear-gradient(rgba(255, 255, 255, 0.02) 1px, transparent 1px),
129
- linear-gradient(90deg, rgba(255, 255, 255, 0.02) 1px, transparent 1px);
130
- background-size: 60px 60px;
131
- mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, black 30%, transparent 70%);
132
- }
133
-
134
- .grid-glow {
135
- position: absolute;
136
- top: 0;
137
- left: 50%;
138
- transform: translateX(-50%);
139
- width: 100%;
140
- height: 600px;
141
- background: radial-gradient(ellipse 60% 40% at 50% 0%, rgba(0, 217, 255, 0.08) 0%, transparent 70%);
142
- }
143
-
144
- /* ============================================
145
- GLOW ORBS
146
- ============================================ */
147
- .glow-orbs {
148
- position: absolute;
149
- inset: 0;
150
- }
151
-
152
- .orb {
153
- position: absolute;
154
- border-radius: 50%;
155
- filter: blur(100px);
156
- opacity: 0.4;
157
- animation: float 20s ease-in-out infinite;
158
- }
159
-
160
- .orb-1 {
161
- width: 600px;
162
- height: 600px;
163
- background: var(--accent-cyan);
164
- top: -200px;
165
- left: -200px;
166
- animation-delay: 0s;
167
- }
168
-
169
- .orb-2 {
170
- width: 500px;
171
- height: 500px;
172
- background: var(--accent-teal);
173
- top: 40%;
174
- right: -150px;
175
- animation-delay: -7s;
176
- }
177
-
178
- .orb-3 {
179
- width: 400px;
180
- height: 400px;
181
- background: var(--accent-orange);
182
- bottom: 10%;
183
- left: 20%;
184
- animation-delay: -14s;
185
- }
186
-
187
- @keyframes float {
188
- 0%, 100% { transform: translate(0, 0) scale(1); }
189
- 25% { transform: translate(30px, -30px) scale(1.05); }
190
- 50% { transform: translate(-20px, 20px) scale(0.95); }
191
- 75% { transform: translate(20px, 10px) scale(1.02); }
192
- }
193
-
194
- /* ============================================
195
- NAVIGATION
196
- ============================================ */
197
- .nav {
198
- position: fixed;
199
- top: 0;
200
- left: 0;
201
- right: 0;
202
- z-index: 100;
203
- padding: 20px 40px;
204
- transition: var(--transition-medium);
205
- }
206
-
207
- .nav.scrolled {
208
- background: rgba(10, 10, 15, 0.9);
209
- backdrop-filter: blur(20px);
210
- border-bottom: 1px solid var(--border-subtle);
211
- padding: 16px 40px;
212
- }
213
-
214
- .nav-inner {
215
- max-width: var(--container-max);
216
- margin: 0 auto;
217
- display: flex;
218
- align-items: center;
219
- justify-content: space-between;
220
- }
221
-
222
- .nav-logo {
223
- display: flex;
224
- align-items: center;
225
- gap: 10px;
226
- font-family: var(--font-display);
227
- font-weight: 700;
228
- font-size: 20px;
229
- }
230
-
231
- .logo-icon {
232
- font-size: 24px;
233
- color: var(--accent-cyan);
234
- filter: drop-shadow(var(--glow-cyan));
235
- }
236
-
237
- .nav-links {
238
- display: flex;
239
- align-items: center;
240
- gap: 40px;
241
- }
242
-
243
- .nav-links a {
244
- font-size: 14px;
245
- font-weight: 500;
246
- color: var(--text-secondary);
247
- transition: var(--transition-fast);
248
- }
249
-
250
- .nav-links a:hover {
251
- color: var(--text-primary);
252
- }
253
-
254
- .nav-docs {
255
- padding: 6px 14px;
256
- background: var(--bg-elevated);
257
- border-radius: 6px;
258
- border: 1px solid var(--border-light);
259
- }
260
-
261
- .nav-actions {
262
- display: flex;
263
- align-items: center;
264
- gap: 12px;
265
- }
266
-
267
- /* Hide mobile elements on desktop */
268
- .mobile-menu-toggle,
269
- .mobile-menu-overlay,
270
- .mobile-menu {
271
- display: none;
272
- }
273
-
274
- /* ============================================
275
- BUTTONS
276
- ============================================ */
277
- .btn-primary {
278
- display: inline-flex;
279
- align-items: center;
280
- gap: 8px;
281
- padding: 12px 24px;
282
- background: linear-gradient(135deg, var(--accent-cyan) 0%, #00b8d9 100%);
283
- color: var(--bg-deep);
284
- font-weight: 600;
285
- font-size: 14px;
286
- border-radius: 8px;
287
- transition: var(--transition-fast);
288
- box-shadow: 0 4px 20px rgba(0, 217, 255, 0.3);
289
- }
290
-
291
- .btn-primary:hover {
292
- transform: translateY(-2px);
293
- box-shadow: 0 6px 30px rgba(0, 217, 255, 0.4);
294
- }
295
-
296
- .btn-ghost {
297
- display: inline-flex;
298
- align-items: center;
299
- gap: 8px;
300
- padding: 12px 24px;
301
- background: transparent;
302
- color: var(--text-primary);
303
- font-weight: 500;
304
- font-size: 14px;
305
- border-radius: 8px;
306
- border: 1px solid var(--border-light);
307
- transition: var(--transition-fast);
308
- }
309
-
310
- .btn-ghost:hover {
311
- background: rgba(255, 255, 255, 0.05);
312
- border-color: var(--border-medium);
313
- }
314
-
315
- .btn-large {
316
- padding: 16px 32px;
317
- font-size: 16px;
318
- }
319
-
320
- .btn-full {
321
- width: 100%;
322
- justify-content: center;
323
- }
324
-
325
- .btn-arrow {
326
- transition: transform var(--transition-fast);
327
- }
328
-
329
- .btn-primary:hover .btn-arrow {
330
- transform: translateX(4px);
331
- }
332
-
333
- .play-icon {
334
- font-size: 10px;
335
- }
336
-
337
- /* ============================================
338
- HERO SECTION
339
- ============================================ */
340
- .hero {
341
- position: relative;
342
- z-index: 1;
343
- min-height: 100vh;
344
- display: grid;
345
- grid-template-columns: 1fr 1fr;
346
- gap: 80px;
347
- align-items: center;
348
- max-width: var(--container-max);
349
- margin: 0 auto;
350
- padding: 140px 40px 100px;
351
- }
352
-
353
- .hero-badge {
354
- display: inline-flex;
355
- align-items: center;
356
- gap: 8px;
357
- padding: 8px 16px;
358
- background: rgba(0, 217, 255, 0.1);
359
- border: 1px solid rgba(0, 217, 255, 0.2);
360
- border-radius: 100px;
361
- font-size: 13px;
362
- font-weight: 500;
363
- color: var(--accent-cyan);
364
- margin-bottom: 24px;
365
- animation: fadeInUp 0.6s ease forwards;
366
- }
367
-
368
- .badge-dot {
369
- width: 6px;
370
- height: 6px;
371
- background: var(--accent-cyan);
372
- border-radius: 50%;
373
- animation: pulse 2s ease-in-out infinite;
374
- }
375
-
376
- @keyframes pulse {
377
- 0%, 100% { opacity: 1; transform: scale(1); }
378
- 50% { opacity: 0.5; transform: scale(1.2); }
379
- }
380
-
381
- .hero-title {
382
- font-family: var(--font-display);
383
- font-size: clamp(48px, 6vw, 72px);
384
- font-weight: 800;
385
- line-height: 1.1;
386
- letter-spacing: -0.02em;
387
- margin-bottom: 24px;
388
- }
389
-
390
- .title-line {
391
- display: block;
392
- animation: fadeInUp 0.6s ease forwards;
393
- animation-delay: 0.1s;
394
- opacity: 0;
395
- }
396
-
397
- .title-line:nth-child(2) {
398
- animation-delay: 0.2s;
399
- }
400
-
401
- .title-line.gradient {
402
- background: linear-gradient(135deg, var(--accent-cyan) 0%, var(--accent-teal) 50%, var(--accent-blue) 100%);
403
- -webkit-background-clip: text;
404
- -webkit-text-fill-color: transparent;
405
- background-clip: text;
406
- }
407
-
408
- @keyframes fadeInUp {
409
- from {
410
- opacity: 0;
411
- transform: translateY(20px);
412
- }
413
- to {
414
- opacity: 1;
415
- transform: translateY(0);
416
- }
417
- }
418
-
419
- .hero-subtitle {
420
- font-size: 18px;
421
- line-height: 1.7;
422
- color: var(--text-secondary);
423
- max-width: 500px;
424
- margin-bottom: 40px;
425
- animation: fadeInUp 0.6s ease forwards;
426
- animation-delay: 0.3s;
427
- opacity: 0;
428
- }
429
-
430
- .hero-cta {
431
- display: flex;
432
- gap: 16px;
433
- margin-bottom: 60px;
434
- animation: fadeInUp 0.6s ease forwards;
435
- animation-delay: 0.4s;
436
- opacity: 0;
437
- }
438
-
439
- .hero-stats {
440
- display: flex;
441
- align-items: center;
442
- gap: 32px;
443
- animation: fadeInUp 0.6s ease forwards;
444
- animation-delay: 0.5s;
445
- opacity: 0;
446
- }
447
-
448
- .stat {
449
- display: flex;
450
- flex-direction: column;
451
- gap: 4px;
452
- }
453
-
454
- .stat-value {
455
- font-family: var(--font-display);
456
- font-size: 28px;
457
- font-weight: 700;
458
- color: var(--text-primary);
459
- }
460
-
461
- .stat-label {
462
- font-size: 13px;
463
- color: var(--text-muted);
464
- }
465
-
466
- .stat-divider {
467
- width: 1px;
468
- height: 40px;
469
- background: var(--border-light);
470
- }
471
-
472
- /* ============================================
473
- AGENT NETWORK VISUALIZATION
474
- ============================================ */
475
- .hero-visual {
476
- position: relative;
477
- animation: fadeIn 1s ease forwards;
478
- animation-delay: 0.6s;
479
- opacity: 0;
480
- overflow: hidden;
481
- }
482
-
483
- @keyframes fadeIn {
484
- to { opacity: 1; }
485
- }
486
-
487
- .agent-network {
488
- position: relative;
489
- width: 100%;
490
- aspect-ratio: 1;
491
- max-width: 500px;
492
- margin: 0 auto;
493
- overflow: hidden;
494
- }
495
-
496
- .network-lines {
497
- position: absolute;
498
- inset: 0;
499
- width: 100%;
500
- height: 100%;
501
- }
502
-
503
- .network-line {
504
- stroke: rgba(255, 255, 255, 0.1);
505
- stroke-width: 0.5;
506
- }
507
-
508
- .network-line-glow {
509
- stroke: var(--accent-cyan);
510
- stroke-width: 1;
511
- stroke-dasharray: 100;
512
- stroke-dashoffset: 100;
513
- animation: lineFlow 3s ease-in-out infinite;
514
- filter: drop-shadow(0 0 4px var(--accent-cyan));
515
- }
516
-
517
- @keyframes lineFlow {
518
- 0% { stroke-dashoffset: 100; opacity: 0; }
519
- 50% { opacity: 1; }
520
- 100% { stroke-dashoffset: -100; opacity: 0; }
521
- }
522
-
523
- .network-agent {
524
- position: absolute;
525
- transform: translate(-50%, -50%);
526
- display: flex;
527
- flex-direction: column;
528
- align-items: center;
529
- gap: 8px;
530
- }
531
-
532
- .agent-glow {
533
- position: absolute;
534
- width: 80px;
535
- height: 80px;
536
- background: var(--agent-color);
537
- border-radius: 50%;
538
- filter: blur(30px);
539
- opacity: 0.3;
540
- z-index: -1;
541
- }
542
-
543
- .agent-icon {
544
- width: 56px;
545
- height: 56px;
546
- display: flex;
547
- align-items: center;
548
- justify-content: center;
549
- background: var(--bg-card);
550
- border: 2px solid var(--agent-color);
551
- border-radius: 16px;
552
- font-size: 24px;
553
- color: var(--agent-color);
554
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.5), inset 0 0 20px rgba(255, 255, 255, 0.02);
555
- transition: var(--transition-medium);
556
- }
557
-
558
- .network-agent.pulse .agent-icon {
559
- animation: agentPulse 2s ease-in-out infinite;
560
- }
561
-
562
- @keyframes agentPulse {
563
- 0%, 100% { box-shadow: 0 0 20px rgba(0, 0, 0, 0.5), 0 0 0 0 var(--agent-color); }
564
- 50% { box-shadow: 0 0 20px rgba(0, 0, 0, 0.5), 0 0 30px 10px transparent; }
565
- }
566
-
567
- .agent-label {
568
- font-family: var(--font-mono);
569
- font-size: 12px;
570
- font-weight: 500;
571
- color: var(--text-secondary);
572
- text-transform: uppercase;
573
- letter-spacing: 0.5px;
574
- white-space: nowrap;
575
- text-overflow: ellipsis;
576
- max-width: 80px;
577
- overflow: hidden;
578
- }
579
-
580
- .data-packet {
581
- position: absolute;
582
- width: 8px;
583
- height: 8px;
584
- background: var(--accent-cyan);
585
- border-radius: 50%;
586
- filter: blur(2px);
587
- box-shadow: 0 0 10px var(--accent-cyan);
588
- animation: packetMove 3s ease-in-out infinite;
589
- }
590
-
591
- @keyframes packetMove {
592
- 0% {
593
- left: var(--from-x);
594
- top: var(--from-y);
595
- opacity: 0;
596
- }
597
- 10% { opacity: 1; }
598
- 90% { opacity: 1; }
599
- 100% {
600
- left: var(--to-x);
601
- top: var(--to-y);
602
- opacity: 0;
603
- }
604
- }
605
-
606
- /* ============================================
607
- SECTION COMMON STYLES
608
- ============================================ */
609
- section {
610
- position: relative;
611
- z-index: 1;
612
- }
613
-
614
- .section-header {
615
- text-align: center;
616
- max-width: 700px;
617
- margin: 0 auto 60px;
618
- }
619
-
620
- .section-tag {
621
- display: inline-block;
622
- font-family: var(--font-mono);
623
- font-size: 12px;
624
- font-weight: 500;
625
- text-transform: uppercase;
626
- letter-spacing: 2px;
627
- color: var(--accent-cyan);
628
- margin-bottom: 16px;
629
- }
630
-
631
- .section-header h2 {
632
- font-family: var(--font-display);
633
- font-size: clamp(32px, 4vw, 48px);
634
- font-weight: 700;
635
- margin-bottom: 16px;
636
- }
637
-
638
- .section-header p {
639
- font-size: 18px;
640
- color: var(--text-secondary);
641
- }
642
-
643
- /* ============================================
644
- DEMO SECTION
645
- ============================================ */
646
- .demo-section {
647
- padding: var(--section-padding) 40px;
648
- max-width: var(--container-max);
649
- margin: 0 auto;
650
- }
651
-
652
- .demo-container {
653
- perspective: 1000px;
654
- }
655
-
656
- .demo-window {
657
- background: var(--bg-secondary);
658
- border: 1px solid var(--border-light);
659
- border-radius: 16px;
660
- overflow: hidden;
661
- box-shadow:
662
- 0 0 0 1px rgba(255, 255, 255, 0.05),
663
- 0 20px 80px rgba(0, 0, 0, 0.5);
664
- transform: rotateX(2deg);
665
- transition: var(--transition-medium);
666
- }
667
-
668
- .demo-window:hover {
669
- transform: rotateX(0deg);
670
- box-shadow:
671
- 0 0 0 1px rgba(255, 255, 255, 0.1),
672
- 0 30px 100px rgba(0, 0, 0, 0.6);
673
- }
674
-
675
- .window-header {
676
- display: flex;
677
- align-items: center;
678
- padding: 16px 20px;
679
- background: var(--bg-tertiary);
680
- border-bottom: 1px solid var(--border-subtle);
681
- }
682
-
683
- .window-dots {
684
- display: flex;
685
- gap: 8px;
686
- }
687
-
688
- .dot {
689
- width: 12px;
690
- height: 12px;
691
- border-radius: 50%;
692
- }
693
-
694
- .dot.red { background: #ff5f57; }
695
- .dot.yellow { background: #febc2e; }
696
- .dot.green { background: #28c840; }
697
-
698
- .window-title {
699
- flex: 1;
700
- text-align: center;
701
- font-family: var(--font-mono);
702
- font-size: 13px;
703
- color: var(--text-muted);
704
- }
705
-
706
- .window-status {
707
- display: flex;
708
- align-items: center;
709
- gap: 8px;
710
- font-size: 12px;
711
- color: var(--text-muted);
712
- }
713
-
714
- .status-dot {
715
- width: 8px;
716
- height: 8px;
717
- background: var(--accent-green);
718
- border-radius: 50%;
719
- animation: pulse 2s ease-in-out infinite;
720
- }
721
-
722
- .demo-content {
723
- display: grid;
724
- grid-template-columns: 200px 1fr;
725
- height: 400px;
726
- }
727
-
728
- .demo-sidebar {
729
- padding: 20px;
730
- background: var(--bg-tertiary);
731
- border-right: 1px solid var(--border-subtle);
732
- }
733
-
734
- .sidebar-section {
735
- margin-bottom: 24px;
736
- }
737
-
738
- .sidebar-label {
739
- font-family: var(--font-mono);
740
- font-size: 10px;
741
- font-weight: 600;
742
- text-transform: uppercase;
743
- letter-spacing: 1px;
744
- color: var(--text-dim);
745
- margin-bottom: 12px;
746
- }
747
-
748
- .sidebar-agent {
749
- display: flex;
750
- align-items: center;
751
- gap: 10px;
752
- padding: 8px 10px;
753
- border-radius: 6px;
754
- margin-bottom: 4px;
755
- transition: var(--transition-fast);
756
- }
757
-
758
- .sidebar-agent:hover {
759
- background: rgba(255, 255, 255, 0.03);
760
- }
761
-
762
- .agent-dot {
763
- width: 8px;
764
- height: 8px;
765
- border-radius: 50%;
766
- }
767
-
768
- .sidebar-agent .agent-name {
769
- flex: 1;
770
- font-size: 13px;
771
- color: var(--text-secondary);
772
- }
773
-
774
- .sidebar-agent .agent-status {
775
- font-size: 8px;
776
- color: var(--accent-green);
777
- }
778
-
779
- .demo-messages {
780
- padding: 20px;
781
- overflow-y: auto;
782
- display: flex;
783
- flex-direction: column;
784
- gap: 16px;
785
- }
786
-
787
- .message {
788
- animation: messageSlide 0.3s ease forwards;
789
- }
790
-
791
- @keyframes messageSlide {
792
- from {
793
- opacity: 0;
794
- transform: translateY(10px);
795
- }
796
- to {
797
- opacity: 1;
798
- transform: translateY(0);
799
- }
800
- }
801
-
802
- .message-header {
803
- display: flex;
804
- align-items: center;
805
- gap: 8px;
806
- margin-bottom: 6px;
807
- }
808
-
809
- .message-icon {
810
- width: 24px;
811
- height: 24px;
812
- display: flex;
813
- align-items: center;
814
- justify-content: center;
815
- border-radius: 6px;
816
- font-size: 12px;
817
- color: var(--bg-deep);
818
- }
819
-
820
- .message-from {
821
- font-weight: 600;
822
- font-size: 13px;
823
- color: var(--msg-color);
824
- }
825
-
826
- .message-arrow {
827
- font-size: 10px;
828
- color: var(--text-dim);
829
- }
830
-
831
- .message-to {
832
- font-size: 13px;
833
- color: var(--text-muted);
834
- }
835
-
836
- .message-time {
837
- margin-left: auto;
838
- font-size: 11px;
839
- color: var(--text-dim);
840
- }
841
-
842
- .message-content {
843
- font-size: 14px;
844
- color: var(--text-secondary);
845
- line-height: 1.6;
846
- padding-left: 32px;
847
- }
848
-
849
- .typing-indicator {
850
- display: flex;
851
- align-items: center;
852
- gap: 4px;
853
- padding: 8px 0;
854
- padding-left: 32px;
855
- }
856
-
857
- .typing-dot {
858
- width: 6px;
859
- height: 6px;
860
- background: var(--text-dim);
861
- border-radius: 50%;
862
- animation: typingBounce 1.4s ease-in-out infinite;
863
- }
864
-
865
- .typing-dot:nth-child(2) { animation-delay: 0.2s; }
866
- .typing-dot:nth-child(3) { animation-delay: 0.4s; }
867
-
868
- @keyframes typingBounce {
869
- 0%, 60%, 100% { transform: translateY(0); }
870
- 30% { transform: translateY(-6px); }
871
- }
872
-
873
- .demo-caption {
874
- text-align: center;
875
- margin-top: 20px;
876
- }
877
-
878
- .demo-caption p {
879
- font-size: 13px;
880
- color: var(--text-dim);
881
- }
882
-
883
- /* ============================================
884
- FEATURES SECTION
885
- ============================================ */
886
- .features-section {
887
- padding: var(--section-padding) 40px;
888
- max-width: var(--container-max);
889
- margin: 0 auto;
890
- }
891
-
892
- .features-grid {
893
- display: grid;
894
- grid-template-columns: repeat(3, 1fr);
895
- gap: 24px;
896
- }
897
-
898
- .feature-card {
899
- padding: 32px;
900
- background: var(--bg-card);
901
- border: 1px solid var(--border-subtle);
902
- border-radius: 16px;
903
- transition: var(--transition-medium);
904
- animation: fadeInUp 0.6s ease forwards;
905
- opacity: 0;
906
- }
907
-
908
- .feature-card:hover {
909
- background: var(--bg-elevated);
910
- border-color: var(--border-light);
911
- transform: translateY(-4px);
912
- }
913
-
914
- .feature-icon {
915
- font-size: 32px;
916
- margin-bottom: 20px;
917
- }
918
-
919
- .feature-card h3 {
920
- font-family: var(--font-display);
921
- font-size: 18px;
922
- font-weight: 600;
923
- margin-bottom: 12px;
924
- }
925
-
926
- .feature-card p {
927
- font-size: 14px;
928
- color: var(--text-secondary);
929
- line-height: 1.6;
930
- }
931
-
932
- /* ============================================
933
- PROVIDERS SECTION
934
- ============================================ */
935
- .providers-section {
936
- padding: var(--section-padding) 40px;
937
- max-width: var(--container-max);
938
- margin: 0 auto;
939
- }
940
-
941
- .providers-grid {
942
- display: grid;
943
- grid-template-columns: repeat(4, 1fr);
944
- gap: 24px;
945
- }
946
-
947
- .provider-card {
948
- padding: 40px 32px;
949
- background: var(--bg-card);
950
- border: 1px solid var(--border-subtle);
951
- border-radius: 16px;
952
- text-align: center;
953
- transition: var(--transition-medium);
954
- }
955
-
956
- .provider-card:hover {
957
- border-color: var(--provider-color);
958
- box-shadow: 0 0 40px rgba(0, 0, 0, 0.3);
959
- }
960
-
961
- .provider-icon {
962
- font-size: 48px;
963
- color: var(--provider-color);
964
- margin-bottom: 16px;
965
- filter: drop-shadow(0 0 20px var(--provider-color));
966
- }
967
-
968
- .provider-name {
969
- font-family: var(--font-display);
970
- font-size: 20px;
971
- font-weight: 600;
972
- margin-bottom: 8px;
973
- }
974
-
975
- .provider-status {
976
- font-size: 12px;
977
- color: var(--accent-green);
978
- text-transform: uppercase;
979
- letter-spacing: 1px;
980
- }
981
-
982
- .provider-card.coming-soon {
983
- --provider-color: var(--text-dim);
984
- }
985
-
986
- .provider-card.coming-soon .provider-status {
987
- color: var(--text-muted);
988
- }
989
-
990
- /* ============================================
991
- PRICING SECTION
992
- ============================================ */
993
- .pricing-section {
994
- padding: var(--section-padding) 40px;
995
- max-width: var(--container-max);
996
- margin: 0 auto;
997
- }
998
-
999
- .pricing-grid {
1000
- display: grid;
1001
- grid-template-columns: repeat(4, 1fr);
1002
- gap: 24px;
1003
- align-items: stretch;
1004
- }
1005
-
1006
- .pricing-card {
1007
- position: relative;
1008
- padding: 32px;
1009
- background: var(--bg-card);
1010
- border: 1px solid var(--border-subtle);
1011
- border-radius: 16px;
1012
- transition: var(--transition-medium);
1013
- display: flex;
1014
- flex-direction: column;
1015
- }
1016
-
1017
- .pricing-card:hover {
1018
- border-color: var(--border-light);
1019
- }
1020
-
1021
- .pricing-card.highlighted {
1022
- background: linear-gradient(135deg, rgba(0, 217, 255, 0.05) 0%, rgba(99, 102, 241, 0.05) 100%);
1023
- border-color: var(--accent-cyan);
1024
- transform: scale(1.02);
1025
- }
1026
-
1027
- .pricing-card .popular-badge {
1028
- position: absolute;
1029
- top: -12px;
1030
- left: 50%;
1031
- transform: translateX(-50%);
1032
- padding: 6px 16px;
1033
- background: linear-gradient(135deg, var(--accent-cyan) 0%, var(--accent-blue) 100%);
1034
- color: var(--bg-deep);
1035
- font-size: 11px;
1036
- font-weight: 600;
1037
- text-transform: uppercase;
1038
- letter-spacing: 1px;
1039
- border-radius: 100px;
1040
- }
1041
-
1042
- .pricing-header {
1043
- margin-bottom: 24px;
1044
- padding-bottom: 24px;
1045
- border-bottom: 1px solid var(--border-subtle);
1046
- }
1047
-
1048
- .pricing-header h3 {
1049
- font-family: var(--font-display);
1050
- font-size: 20px;
1051
- font-weight: 600;
1052
- margin-bottom: 12px;
1053
- }
1054
-
1055
- .pricing-price {
1056
- margin-bottom: 12px;
1057
- }
1058
-
1059
- .pricing-price .price {
1060
- font-family: var(--font-display);
1061
- font-size: 40px;
1062
- font-weight: 700;
1063
- }
1064
-
1065
- .pricing-price .period {
1066
- font-size: 16px;
1067
- color: var(--text-muted);
1068
- }
1069
-
1070
- .pricing-description {
1071
- font-size: 13px;
1072
- color: var(--text-muted);
1073
- }
1074
-
1075
- .pricing-features {
1076
- list-style: none;
1077
- margin-bottom: 32px;
1078
- flex: 1;
1079
- }
1080
-
1081
- .pricing-features li {
1082
- display: flex;
1083
- align-items: flex-start;
1084
- gap: 10px;
1085
- font-size: 14px;
1086
- color: var(--text-secondary);
1087
- padding: 8px 0;
1088
- }
1089
-
1090
- .pricing-features .check {
1091
- color: var(--accent-green);
1092
- font-weight: bold;
1093
- }
1094
-
1095
- /* ============================================
1096
- CTA SECTION
1097
- ============================================ */
1098
- .cta-section {
1099
- padding: var(--section-padding) 40px;
1100
- max-width: var(--container-max);
1101
- margin: 0 auto;
1102
- display: grid;
1103
- grid-template-columns: 1fr 1fr;
1104
- gap: 80px;
1105
- align-items: center;
1106
- }
1107
-
1108
- .cta-content h2 {
1109
- font-family: var(--font-display);
1110
- font-size: clamp(32px, 4vw, 48px);
1111
- font-weight: 700;
1112
- margin-bottom: 16px;
1113
- }
1114
-
1115
- .cta-content p {
1116
- font-size: 18px;
1117
- color: var(--text-secondary);
1118
- margin-bottom: 32px;
1119
- }
1120
-
1121
- .cta-buttons {
1122
- display: flex;
1123
- gap: 16px;
1124
- }
1125
-
1126
- .cta-terminal {
1127
- background: var(--bg-secondary);
1128
- border: 1px solid var(--border-light);
1129
- border-radius: 12px;
1130
- padding: 24px;
1131
- font-family: var(--font-mono);
1132
- font-size: 14px;
1133
- }
1134
-
1135
- .terminal-header {
1136
- display: flex;
1137
- align-items: center;
1138
- gap: 12px;
1139
- margin-bottom: 20px;
1140
- padding-bottom: 16px;
1141
- border-bottom: 1px solid var(--border-subtle);
1142
- }
1143
-
1144
- .terminal-prompt {
1145
- color: var(--accent-cyan);
1146
- }
1147
-
1148
- .terminal-text {
1149
- color: var(--text-primary);
1150
- }
1151
-
1152
- .terminal-output {
1153
- display: flex;
1154
- flex-direction: column;
1155
- gap: 8px;
1156
- }
1157
-
1158
- .output-line {
1159
- color: var(--text-secondary);
1160
- }
1161
-
1162
- .output-line.dim {
1163
- color: var(--text-muted);
1164
- margin-top: 4px;
1165
- }
1166
-
1167
- .output-line.cursor::after {
1168
- content: '▋';
1169
- animation: cursorBlink 1s step-end infinite;
1170
- color: var(--accent-cyan);
1171
- }
1172
-
1173
- @keyframes cursorBlink {
1174
- 50% { opacity: 0; }
1175
- }
1176
-
1177
- /* ============================================
1178
- FOOTER
1179
- ============================================ */
1180
- .footer {
1181
- position: relative;
1182
- z-index: 1;
1183
- border-top: 1px solid var(--border-subtle);
1184
- padding: 60px 40px 40px;
1185
- background: var(--bg-primary);
1186
- }
1187
-
1188
- .footer-inner {
1189
- max-width: var(--container-max);
1190
- margin: 0 auto;
1191
- display: grid;
1192
- grid-template-columns: 1fr 2fr;
1193
- gap: 80px;
1194
- margin-bottom: 60px;
1195
- }
1196
-
1197
- .footer-logo {
1198
- display: flex;
1199
- align-items: center;
1200
- gap: 10px;
1201
- font-family: var(--font-display);
1202
- font-weight: 700;
1203
- font-size: 18px;
1204
- margin-bottom: 12px;
1205
- }
1206
-
1207
- .footer-brand p {
1208
- font-size: 14px;
1209
- color: var(--text-muted);
1210
- }
1211
-
1212
- .footer-links {
1213
- display: grid;
1214
- grid-template-columns: repeat(3, 1fr);
1215
- gap: 40px;
1216
- }
1217
-
1218
- .footer-column h4 {
1219
- font-family: var(--font-display);
1220
- font-size: 14px;
1221
- font-weight: 600;
1222
- margin-bottom: 20px;
1223
- }
1224
-
1225
- .footer-column a {
1226
- display: block;
1227
- font-size: 14px;
1228
- color: var(--text-muted);
1229
- padding: 6px 0;
1230
- transition: var(--transition-fast);
1231
- }
1232
-
1233
- .footer-column a:hover {
1234
- color: var(--text-primary);
1235
- }
1236
-
1237
- .footer-bottom {
1238
- max-width: var(--container-max);
1239
- margin: 0 auto;
1240
- display: flex;
1241
- align-items: center;
1242
- justify-content: space-between;
1243
- padding-top: 24px;
1244
- border-top: 1px solid var(--border-subtle);
1245
- }
1246
-
1247
- .footer-bottom p {
1248
- font-size: 13px;
1249
- color: var(--text-dim);
1250
- }
1251
-
1252
- .social-links {
1253
- display: flex;
1254
- gap: 16px;
1255
- }
1256
-
1257
- .social-links a {
1258
- display: flex;
1259
- align-items: center;
1260
- justify-content: center;
1261
- width: 36px;
1262
- height: 36px;
1263
- background: var(--bg-card);
1264
- border: 1px solid var(--border-subtle);
1265
- border-radius: 8px;
1266
- color: var(--text-muted);
1267
- transition: var(--transition-fast);
1268
- }
1269
-
1270
- .social-links a:hover {
1271
- background: var(--bg-elevated);
1272
- border-color: var(--border-light);
1273
- color: var(--text-primary);
1274
- }
1275
-
1276
- /* ============================================
1277
- MOBILE MENU (styles for when visible)
1278
- ============================================ */
1279
- .mobile-menu-toggle {
1280
- padding: 8px;
1281
- background: transparent;
1282
- border: none;
1283
- cursor: pointer;
1284
- z-index: 102;
1285
- }
1286
-
1287
- .hamburger {
1288
- display: flex;
1289
- flex-direction: column;
1290
- justify-content: center;
1291
- gap: 5px;
1292
- width: 24px;
1293
- height: 20px;
1294
- }
1295
-
1296
- .hamburger-line {
1297
- width: 100%;
1298
- height: 2px;
1299
- background: var(--text-primary);
1300
- border-radius: 2px;
1301
- transition: var(--transition-fast);
1302
- transform-origin: center;
1303
- }
1304
-
1305
- .hamburger.open .hamburger-line:nth-child(1) {
1306
- transform: translateY(7px) rotate(45deg);
1307
- }
1308
-
1309
- .hamburger.open .hamburger-line:nth-child(2) {
1310
- opacity: 0;
1311
- transform: scaleX(0);
1312
- }
1313
-
1314
- .hamburger.open .hamburger-line:nth-child(3) {
1315
- transform: translateY(-7px) rotate(-45deg);
1316
- }
1317
-
1318
- .mobile-menu-overlay {
1319
- position: fixed;
1320
- inset: 0;
1321
- background: rgba(0, 0, 0, 0.6);
1322
- opacity: 0;
1323
- visibility: hidden;
1324
- transition: var(--transition-medium);
1325
- z-index: 99;
1326
- }
1327
-
1328
- .mobile-menu-overlay.open {
1329
- opacity: 1;
1330
- visibility: visible;
1331
- }
1332
-
1333
- .mobile-menu {
1334
- position: fixed;
1335
- top: 0;
1336
- right: 0;
1337
- width: 300px;
1338
- max-width: 85vw;
1339
- height: 100vh;
1340
- background: var(--bg-secondary);
1341
- border-left: 1px solid var(--border-subtle);
1342
- transform: translateX(100%);
1343
- transition: transform var(--transition-medium);
1344
- z-index: 100;
1345
- overflow-y: auto;
1346
- }
1347
-
1348
- .mobile-menu.open {
1349
- transform: translateX(0);
1350
- }
1351
-
1352
- .mobile-menu-content {
1353
- padding: 100px 24px 40px;
1354
- display: flex;
1355
- flex-direction: column;
1356
- min-height: 100%;
1357
- }
1358
-
1359
- .mobile-nav-links {
1360
- display: flex;
1361
- flex-direction: column;
1362
- gap: 8px;
1363
- margin-bottom: 32px;
1364
- }
1365
-
1366
- .mobile-nav-links a {
1367
- display: block;
1368
- padding: 16px 20px;
1369
- font-size: 16px;
1370
- font-weight: 500;
1371
- color: var(--text-secondary);
1372
- border-radius: 12px;
1373
- transition: var(--transition-fast);
1374
- }
1375
-
1376
- .mobile-nav-links a:hover {
1377
- background: rgba(255, 255, 255, 0.05);
1378
- color: var(--text-primary);
1379
- }
1380
-
1381
- .mobile-nav-actions {
1382
- display: flex;
1383
- flex-direction: column;
1384
- gap: 12px;
1385
- margin-top: auto;
1386
- }
1387
-
1388
- /* ============================================
1389
- RESPONSIVE - Large Tablets (1024px)
1390
- ============================================ */
1391
- @media (max-width: 1024px) {
1392
- .hero {
1393
- grid-template-columns: 1fr;
1394
- text-align: center;
1395
- padding: 140px 32px 80px;
1396
- gap: 60px;
1397
- }
1398
-
1399
- .hero-subtitle {
1400
- margin-left: auto;
1401
- margin-right: auto;
1402
- }
1403
-
1404
- .hero-cta {
1405
- justify-content: center;
1406
- }
1407
-
1408
- .hero-stats {
1409
- justify-content: center;
1410
- }
1411
-
1412
- .hero-visual {
1413
- order: -1;
1414
- max-width: 350px;
1415
- margin: 0 auto;
1416
- }
1417
-
1418
- .agent-network {
1419
- max-width: 350px;
1420
- }
1421
-
1422
- .features-grid {
1423
- grid-template-columns: repeat(2, 1fr);
1424
- }
1425
-
1426
- .providers-grid {
1427
- grid-template-columns: repeat(2, 1fr);
1428
- }
1429
-
1430
- .pricing-grid {
1431
- grid-template-columns: repeat(2, 1fr);
1432
- }
1433
-
1434
- .cta-section {
1435
- grid-template-columns: 1fr;
1436
- text-align: center;
1437
- gap: 48px;
1438
- }
1439
-
1440
- .cta-buttons {
1441
- justify-content: center;
1442
- }
1443
-
1444
- .cta-terminal {
1445
- max-width: 500px;
1446
- margin: 0 auto;
1447
- }
1448
-
1449
- .demo-content {
1450
- grid-template-columns: 160px 1fr;
1451
- }
1452
-
1453
- .demo-sidebar {
1454
- padding: 16px;
1455
- }
1456
-
1457
- .sidebar-agent {
1458
- padding: 6px 8px;
1459
- }
1460
-
1461
- .sidebar-agent .agent-name {
1462
- font-size: 12px;
1463
- }
1464
-
1465
- .footer-inner {
1466
- grid-template-columns: 1fr;
1467
- gap: 40px;
1468
- text-align: center;
1469
- }
1470
-
1471
- .footer-brand {
1472
- display: flex;
1473
- flex-direction: column;
1474
- align-items: center;
1475
- }
1476
-
1477
- .footer-links {
1478
- justify-content: center;
1479
- }
1480
- }
1481
-
1482
- /* ============================================
1483
- RESPONSIVE - Small Tablets (900px)
1484
- ============================================ */
1485
- @media (max-width: 900px) {
1486
- .demo-content {
1487
- grid-template-columns: 1fr;
1488
- height: auto;
1489
- min-height: 350px;
1490
- }
1491
-
1492
- .demo-sidebar {
1493
- display: none;
1494
- }
1495
-
1496
- .demo-messages {
1497
- max-height: 400px;
1498
- }
1499
-
1500
- .window-status {
1501
- display: none;
1502
- }
1503
- }
1504
-
1505
- /* ============================================
1506
- RESPONSIVE - Small Tablets Edge Case (850px)
1507
- Fixes agent network display at intermediate widths
1508
- ============================================ */
1509
- @media (max-width: 850px) {
1510
- .hero-visual {
1511
- max-width: 320px;
1512
- }
1513
-
1514
- .agent-network {
1515
- max-width: 320px;
1516
- }
1517
-
1518
- .agent-icon {
1519
- width: 50px;
1520
- height: 50px;
1521
- font-size: 20px;
1522
- }
1523
-
1524
- .agent-label {
1525
- font-size: 11px;
1526
- }
1527
- }
1528
-
1529
- /* ============================================
1530
- RESPONSIVE - Tablets (768px)
1531
- ============================================ */
1532
- @media (max-width: 768px) {
1533
- :root {
1534
- --section-padding: 80px;
1535
- }
1536
-
1537
- /* Show mobile menu elements */
1538
- .mobile-menu-toggle,
1539
- .mobile-menu-overlay,
1540
- .mobile-menu {
1541
- display: block;
1542
- }
1543
-
1544
- /* Hide desktop nav */
1545
- .nav {
1546
- padding: 16px 20px;
1547
- }
1548
-
1549
- .nav.scrolled {
1550
- padding: 12px 20px;
1551
- }
1552
-
1553
- .nav-links {
1554
- display: none;
1555
- }
1556
-
1557
- .nav-actions {
1558
- display: none;
1559
- }
1560
-
1561
- /* Hero adjustments */
1562
- .hero {
1563
- padding: 120px 20px 60px;
1564
- gap: 40px;
1565
- }
1566
-
1567
- .hero-title {
1568
- font-size: clamp(32px, 8vw, 42px);
1569
- }
1570
-
1571
- .hero-badge {
1572
- padding: 6px 12px;
1573
- font-size: 12px;
1574
- margin-bottom: 20px;
1575
- }
1576
-
1577
- .hero-subtitle {
1578
- font-size: 16px;
1579
- margin-bottom: 32px;
1580
- }
1581
-
1582
- .hero-cta {
1583
- flex-direction: column;
1584
- align-items: center;
1585
- gap: 12px;
1586
- margin-bottom: 40px;
1587
- }
1588
-
1589
- .hero-cta .btn-large {
1590
- width: 100%;
1591
- max-width: 280px;
1592
- justify-content: center;
1593
- }
1594
-
1595
- .hero-stats {
1596
- flex-wrap: wrap;
1597
- gap: 20px;
1598
- }
1599
-
1600
- .stat {
1601
- min-width: 80px;
1602
- }
1603
-
1604
- .stat-value {
1605
- font-size: 24px;
1606
- }
1607
-
1608
- .stat-label {
1609
- font-size: 11px;
1610
- }
1611
-
1612
- .stat-divider {
1613
- display: none;
1614
- }
1615
-
1616
- .hero-visual {
1617
- width: 100%;
1618
- max-width: 320px;
1619
- }
1620
-
1621
- .agent-network {
1622
- width: 100%;
1623
- max-width: 320px;
1624
- min-width: 280px;
1625
- aspect-ratio: 1.2;
1626
- }
1627
-
1628
- .agent-icon {
1629
- width: 48px;
1630
- height: 48px;
1631
- font-size: 18px;
1632
- border-radius: 12px;
1633
- }
1634
-
1635
- .agent-label {
1636
- font-size: 10px;
1637
- }
1638
-
1639
- .agent-glow {
1640
- width: 50px;
1641
- height: 50px;
1642
- filter: blur(20px);
1643
- }
1644
-
1645
- /* Section headers */
1646
- .section-header {
1647
- margin-bottom: 40px;
1648
- padding: 0 8px;
1649
- }
1650
-
1651
- .section-header h2 {
1652
- font-size: clamp(26px, 6vw, 36px);
1653
- }
1654
-
1655
- .section-header p {
1656
- font-size: 15px;
1657
- }
1658
-
1659
- /* Demo section */
1660
- .demo-section {
1661
- padding: var(--section-padding) 20px;
1662
- }
1663
-
1664
- .demo-window {
1665
- border-radius: 12px;
1666
- }
1667
-
1668
- .window-header {
1669
- padding: 12px 16px;
1670
- }
1671
-
1672
- .window-dots {
1673
- gap: 6px;
1674
- }
1675
-
1676
- .dot {
1677
- width: 10px;
1678
- height: 10px;
1679
- }
1680
-
1681
- .window-title {
1682
- font-size: 11px;
1683
- }
1684
-
1685
- .demo-messages {
1686
- padding: 16px;
1687
- gap: 12px;
1688
- max-height: 320px;
1689
- }
1690
-
1691
- .message-header {
1692
- flex-wrap: wrap;
1693
- gap: 6px;
1694
- }
1695
-
1696
- .message-icon {
1697
- width: 20px;
1698
- height: 20px;
1699
- font-size: 10px;
1700
- }
1701
-
1702
- .message-from,
1703
- .message-to {
1704
- font-size: 12px;
1705
- }
1706
-
1707
- .message-time {
1708
- width: 100%;
1709
- margin-left: 26px;
1710
- margin-top: 4px;
1711
- }
1712
-
1713
- .message-content {
1714
- font-size: 13px;
1715
- padding-left: 26px;
1716
- }
1717
-
1718
- .demo-caption p {
1719
- font-size: 12px;
1720
- }
1721
-
1722
- /* Features */
1723
- .features-section {
1724
- padding: var(--section-padding) 20px;
1725
- }
1726
-
1727
- .features-grid {
1728
- grid-template-columns: 1fr;
1729
- gap: 16px;
1730
- }
1731
-
1732
- .feature-card {
1733
- padding: 24px;
1734
- border-radius: 12px;
1735
- }
1736
-
1737
- .feature-icon {
1738
- font-size: 28px;
1739
- margin-bottom: 16px;
1740
- }
1741
-
1742
- .feature-card h3 {
1743
- font-size: 16px;
1744
- margin-bottom: 8px;
1745
- }
1746
-
1747
- .feature-card p {
1748
- font-size: 13px;
1749
- }
1750
-
1751
- /* Providers */
1752
- .providers-section {
1753
- padding: var(--section-padding) 20px;
1754
- }
1755
-
1756
- .providers-grid {
1757
- grid-template-columns: repeat(2, 1fr);
1758
- gap: 16px;
1759
- }
1760
-
1761
- .provider-card {
1762
- padding: 24px 16px;
1763
- border-radius: 12px;
1764
- }
1765
-
1766
- .provider-icon {
1767
- font-size: 36px;
1768
- margin-bottom: 12px;
1769
- }
1770
-
1771
- .provider-name {
1772
- font-size: 16px;
1773
- margin-bottom: 4px;
1774
- }
1775
-
1776
- .provider-status {
1777
- font-size: 10px;
1778
- }
1779
-
1780
- /* Pricing */
1781
- .pricing-section {
1782
- padding: var(--section-padding) 20px;
1783
- }
1784
-
1785
- .pricing-grid {
1786
- grid-template-columns: 1fr;
1787
- gap: 20px;
1788
- }
1789
-
1790
- .pricing-card {
1791
- padding: 24px;
1792
- border-radius: 14px;
1793
- }
1794
-
1795
- .pricing-card.highlighted {
1796
- transform: none;
1797
- }
1798
-
1799
- .pricing-header h3 {
1800
- font-size: 18px;
1801
- }
1802
-
1803
- .pricing-price .price {
1804
- font-size: 32px;
1805
- }
1806
-
1807
- .pricing-features li {
1808
- font-size: 13px;
1809
- padding: 6px 0;
1810
- }
1811
-
1812
- /* CTA Section */
1813
- .cta-section {
1814
- padding: var(--section-padding) 20px;
1815
- gap: 32px;
1816
- }
1817
-
1818
- .cta-content h2 {
1819
- font-size: clamp(26px, 6vw, 36px);
1820
- }
1821
-
1822
- .cta-content p {
1823
- font-size: 15px;
1824
- margin-bottom: 24px;
1825
- }
1826
-
1827
- .cta-buttons {
1828
- flex-direction: column;
1829
- align-items: center;
1830
- }
1831
-
1832
- .cta-buttons .btn-large {
1833
- width: 100%;
1834
- max-width: 280px;
1835
- justify-content: center;
1836
- }
1837
-
1838
- .cta-terminal {
1839
- padding: 20px;
1840
- border-radius: 10px;
1841
- }
1842
-
1843
- .terminal-header {
1844
- margin-bottom: 16px;
1845
- padding-bottom: 12px;
1846
- }
1847
-
1848
- .cta-terminal,
1849
- .terminal-output {
1850
- font-size: 12px;
1851
- }
1852
-
1853
- .terminal-output {
1854
- gap: 6px;
1855
- }
1856
-
1857
- /* Footer */
1858
- .footer {
1859
- padding: 40px 20px 32px;
1860
- }
1861
-
1862
- .footer-inner {
1863
- gap: 32px;
1864
- margin-bottom: 32px;
1865
- }
1866
-
1867
- .footer-logo {
1868
- font-size: 16px;
1869
- justify-content: center;
1870
- }
1871
-
1872
- .footer-brand p {
1873
- font-size: 13px;
1874
- }
1875
-
1876
- .footer-links {
1877
- grid-template-columns: repeat(3, 1fr);
1878
- gap: 24px;
1879
- text-align: left;
1880
- }
1881
-
1882
- .footer-column h4 {
1883
- font-size: 13px;
1884
- margin-bottom: 16px;
1885
- }
1886
-
1887
- .footer-column a {
1888
- font-size: 13px;
1889
- padding: 4px 0;
1890
- }
1891
-
1892
- .footer-bottom {
1893
- flex-direction: column;
1894
- gap: 16px;
1895
- text-align: center;
1896
- padding-top: 20px;
1897
- }
1898
-
1899
- .footer-bottom p {
1900
- font-size: 12px;
1901
- }
1902
-
1903
- .social-links a {
1904
- width: 32px;
1905
- height: 32px;
1906
- }
1907
- }
1908
-
1909
- /* ============================================
1910
- RESPONSIVE - Small Phones (480px)
1911
- ============================================ */
1912
- @media (max-width: 480px) {
1913
- :root {
1914
- --section-padding: 60px;
1915
- }
1916
-
1917
- .hero {
1918
- padding: 100px 16px 48px;
1919
- gap: 32px;
1920
- }
1921
-
1922
- .hero-title {
1923
- font-size: 28px;
1924
- }
1925
-
1926
- .hero-subtitle {
1927
- font-size: 14px;
1928
- line-height: 1.6;
1929
- }
1930
-
1931
- .hero-visual {
1932
- width: 100%;
1933
- max-width: 100%;
1934
- overflow-x: auto;
1935
- display: flex;
1936
- justify-content: center;
1937
- }
1938
-
1939
- .agent-network {
1940
- width: 280px;
1941
- min-width: 280px;
1942
- flex-shrink: 0;
1943
- }
1944
-
1945
- .agent-icon {
1946
- width: 42px;
1947
- height: 42px;
1948
- font-size: 16px;
1949
- border-radius: 10px;
1950
- }
1951
-
1952
- .agent-label {
1953
- font-size: 9px;
1954
- }
1955
-
1956
- .agent-glow {
1957
- width: 40px;
1958
- height: 40px;
1959
- filter: blur(15px);
1960
- opacity: 0.4;
1961
- }
1962
-
1963
- .data-packet {
1964
- width: 6px;
1965
- height: 6px;
1966
- }
1967
-
1968
- .hero-stats {
1969
- gap: 16px;
1970
- }
1971
-
1972
- .stat-value {
1973
- font-size: 20px;
1974
- }
1975
-
1976
- .stat-label {
1977
- font-size: 10px;
1978
- }
1979
-
1980
- /* Sections */
1981
- .section-header h2 {
1982
- font-size: 24px;
1983
- }
1984
-
1985
- .section-header p {
1986
- font-size: 14px;
1987
- }
1988
-
1989
- /* Demo */
1990
- .demo-section {
1991
- padding: var(--section-padding) 16px;
1992
- }
1993
-
1994
- .demo-messages {
1995
- padding: 12px;
1996
- max-height: 280px;
1997
- }
1998
-
1999
- .message-content {
2000
- font-size: 12px;
2001
- line-height: 1.5;
2002
- }
2003
-
2004
- /* Features */
2005
- .features-section {
2006
- padding: var(--section-padding) 16px;
2007
- }
2008
-
2009
- .feature-card {
2010
- padding: 20px;
2011
- }
2012
-
2013
- /* Providers */
2014
- .providers-section {
2015
- padding: var(--section-padding) 16px;
2016
- }
2017
-
2018
- .providers-grid {
2019
- gap: 12px;
2020
- }
2021
-
2022
- .provider-card {
2023
- padding: 20px 12px;
2024
- }
2025
-
2026
- .provider-icon {
2027
- font-size: 28px;
2028
- }
2029
-
2030
- .provider-name {
2031
- font-size: 14px;
2032
- }
2033
-
2034
- /* Pricing */
2035
- .pricing-section {
2036
- padding: var(--section-padding) 16px;
2037
- }
2038
-
2039
- .pricing-card {
2040
- padding: 20px;
2041
- }
2042
-
2043
- .pricing-price .price {
2044
- font-size: 28px;
2045
- }
2046
-
2047
- /* CTA */
2048
- .cta-section {
2049
- padding: var(--section-padding) 16px;
2050
- }
2051
-
2052
- .cta-content h2 {
2053
- font-size: 24px;
2054
- }
2055
-
2056
- .cta-terminal {
2057
- padding: 16px;
2058
- }
2059
-
2060
- /* Footer */
2061
- .footer {
2062
- padding: 32px 16px 24px;
2063
- }
2064
-
2065
- .footer-links {
2066
- grid-template-columns: repeat(2, 1fr);
2067
- gap: 24px 16px;
2068
- }
2069
-
2070
- .footer-links .footer-column:last-child {
2071
- grid-column: span 2;
2072
- text-align: center;
2073
- }
2074
-
2075
- .footer-links .footer-column:last-child a {
2076
- display: inline-block;
2077
- padding: 4px 8px;
2078
- }
2079
-
2080
- /* Mobile menu adjustments */
2081
- .mobile-menu {
2082
- width: 100%;
2083
- max-width: none;
2084
- }
2085
- }
2086
-
2087
- /* ============================================
2088
- PRICING PAGE STYLES
2089
- ============================================ */
2090
- .pricing-page {
2091
- position: relative;
2092
- min-height: 100vh;
2093
- overflow-x: hidden;
2094
- }
2095
-
2096
- .pricing-bg {
2097
- position: fixed;
2098
- inset: 0;
2099
- pointer-events: none;
2100
- z-index: 0;
2101
- }
2102
-
2103
- /* Active nav link */
2104
- .nav-links a.active {
2105
- color: var(--accent-cyan);
2106
- }
2107
-
2108
- /* Pricing Hero */
2109
- .pricing-hero {
2110
- position: relative;
2111
- z-index: 1;
2112
- padding: 180px 40px 80px;
2113
- text-align: center;
2114
- }
2115
-
2116
- .pricing-hero-content {
2117
- max-width: 700px;
2118
- margin: 0 auto;
2119
- }
2120
-
2121
- .pricing-hero .hero-badge {
2122
- display: inline-flex;
2123
- align-items: center;
2124
- gap: 10px;
2125
- padding: 10px 20px;
2126
- background: rgba(0, 217, 255, 0.08);
2127
- border: 1px solid rgba(0, 217, 255, 0.2);
2128
- border-radius: 100px;
2129
- font-size: 14px;
2130
- font-weight: 500;
2131
- color: var(--accent-cyan);
2132
- margin-bottom: 32px;
2133
- animation: fadeInUp 0.6s ease forwards;
2134
- }
2135
-
2136
- .badge-icon {
2137
- font-size: 16px;
2138
- filter: drop-shadow(0 0 8px var(--accent-cyan));
2139
- }
2140
-
2141
- .pricing-hero h1 {
2142
- font-family: var(--font-display);
2143
- font-size: clamp(40px, 5vw, 64px);
2144
- font-weight: 800;
2145
- line-height: 1.1;
2146
- letter-spacing: -0.02em;
2147
- margin-bottom: 24px;
2148
- }
2149
-
2150
- .pricing-hero .title-line {
2151
- display: block;
2152
- animation: fadeInUp 0.6s ease forwards;
2153
- opacity: 0;
2154
- }
2155
-
2156
- .pricing-hero .title-line:nth-child(1) {
2157
- animation-delay: 0.1s;
2158
- }
2159
-
2160
- .pricing-hero .title-line:nth-child(2) {
2161
- animation-delay: 0.2s;
2162
- }
2163
-
2164
- .pricing-hero .title-line.gradient {
2165
- background: linear-gradient(135deg, var(--accent-cyan) 0%, var(--accent-teal) 50%, var(--accent-blue) 100%);
2166
- -webkit-background-clip: text;
2167
- -webkit-text-fill-color: transparent;
2168
- background-clip: text;
2169
- }
2170
-
2171
- .pricing-hero .hero-subtitle {
2172
- font-size: 18px;
2173
- line-height: 1.8;
2174
- color: var(--text-secondary);
2175
- margin-bottom: 40px;
2176
- animation: fadeInUp 0.6s ease forwards;
2177
- animation-delay: 0.3s;
2178
- opacity: 0;
2179
- }
2180
-
2181
- /* Billing Toggle */
2182
- .billing-toggle {
2183
- display: inline-flex;
2184
- padding: 4px;
2185
- background: var(--bg-card);
2186
- border: 1px solid var(--border-light);
2187
- border-radius: 12px;
2188
- animation: fadeInUp 0.6s ease forwards;
2189
- animation-delay: 0.4s;
2190
- opacity: 0;
2191
- }
2192
-
2193
- .billing-toggle button {
2194
- position: relative;
2195
- padding: 12px 24px;
2196
- font-size: 14px;
2197
- font-weight: 500;
2198
- color: var(--text-muted);
2199
- border-radius: 8px;
2200
- transition: var(--transition-fast);
2201
- }
2202
-
2203
- .billing-toggle button.active {
2204
- background: var(--bg-elevated);
2205
- color: var(--text-primary);
2206
- }
2207
-
2208
- .billing-toggle button:hover:not(.active) {
2209
- color: var(--text-secondary);
2210
- }
2211
-
2212
- .save-badge {
2213
- position: absolute;
2214
- top: -8px;
2215
- right: -8px;
2216
- padding: 4px 8px;
2217
- background: var(--accent-green);
2218
- color: var(--bg-deep);
2219
- font-size: 10px;
2220
- font-weight: 700;
2221
- border-radius: 100px;
2222
- text-transform: uppercase;
2223
- letter-spacing: 0.5px;
2224
- }
2225
-
2226
- /* Plans Section */
2227
- .plans-section {
2228
- position: relative;
2229
- z-index: 1;
2230
- padding: 0 40px 100px;
2231
- max-width: var(--container-max);
2232
- margin: 0 auto;
2233
- }
2234
-
2235
- .plans-grid {
2236
- display: grid;
2237
- grid-template-columns: repeat(4, 1fr);
2238
- gap: 24px;
2239
- align-items: start;
2240
- }
2241
-
2242
- .plan-card {
2243
- position: relative;
2244
- padding: 32px;
2245
- background: var(--bg-card);
2246
- border: 1px solid var(--border-subtle);
2247
- border-radius: 20px;
2248
- transition: var(--transition-medium);
2249
- }
2250
-
2251
- .plan-card:hover {
2252
- border-color: var(--border-light);
2253
- transform: translateY(-4px);
2254
- }
2255
-
2256
- .plan-card.highlighted {
2257
- background: linear-gradient(135deg, rgba(0, 217, 255, 0.08) 0%, rgba(99, 102, 241, 0.05) 100%);
2258
- border-color: var(--accent-cyan);
2259
- box-shadow: 0 0 60px rgba(0, 217, 255, 0.15);
2260
- }
2261
-
2262
- .plan-badge {
2263
- position: absolute;
2264
- top: -12px;
2265
- left: 50%;
2266
- transform: translateX(-50%);
2267
- padding: 6px 16px;
2268
- background: linear-gradient(135deg, var(--accent-cyan) 0%, var(--accent-blue) 100%);
2269
- color: var(--bg-deep);
2270
- font-size: 11px;
2271
- font-weight: 700;
2272
- text-transform: uppercase;
2273
- letter-spacing: 1px;
2274
- border-radius: 100px;
2275
- white-space: nowrap;
2276
- }
2277
-
2278
- .plan-header {
2279
- margin-bottom: 24px;
2280
- }
2281
-
2282
- .plan-header h3 {
2283
- font-family: var(--font-display);
2284
- font-size: 24px;
2285
- font-weight: 700;
2286
- margin-bottom: 4px;
2287
- }
2288
-
2289
- .plan-tagline {
2290
- font-size: 13px;
2291
- color: var(--text-muted);
2292
- }
2293
-
2294
- .plan-price {
2295
- margin-bottom: 16px;
2296
- }
2297
-
2298
- .plan-price .price {
2299
- font-family: var(--font-display);
2300
- font-size: 48px;
2301
- font-weight: 800;
2302
- letter-spacing: -0.02em;
2303
- }
2304
-
2305
- .plan-price .period {
2306
- font-size: 14px;
2307
- color: var(--text-muted);
2308
- margin-left: 4px;
2309
- }
2310
-
2311
- .plan-description {
2312
- font-size: 14px;
2313
- color: var(--text-secondary);
2314
- line-height: 1.6;
2315
- margin-bottom: 24px;
2316
- min-height: 44px;
2317
- }
2318
-
2319
- .plan-limits {
2320
- display: grid;
2321
- grid-template-columns: repeat(2, 1fr);
2322
- gap: 12px;
2323
- padding: 20px;
2324
- background: rgba(0, 0, 0, 0.2);
2325
- border-radius: 12px;
2326
- margin-bottom: 24px;
2327
- }
2328
-
2329
- .limit-item {
2330
- display: flex;
2331
- flex-direction: column;
2332
- align-items: center;
2333
- gap: 4px;
2334
- padding: 8px;
2335
- }
2336
-
2337
- .limit-icon {
2338
- font-size: 16px;
2339
- color: var(--accent-cyan);
2340
- opacity: 0.6;
2341
- }
2342
-
2343
- .limit-value {
2344
- font-family: var(--font-display);
2345
- font-size: 24px;
2346
- font-weight: 700;
2347
- color: var(--text-primary);
2348
- }
2349
-
2350
- .limit-label {
2351
- font-size: 11px;
2352
- color: var(--text-muted);
2353
- text-transform: uppercase;
2354
- letter-spacing: 0.5px;
2355
- }
2356
-
2357
- /* Comparison Section */
2358
- .comparison-section {
2359
- position: relative;
2360
- z-index: 1;
2361
- padding: var(--section-padding) 40px;
2362
- max-width: var(--container-max);
2363
- margin: 0 auto;
2364
- }
2365
-
2366
- .comparison-table-wrapper {
2367
- overflow-x: auto;
2368
- border-radius: 16px;
2369
- border: 1px solid var(--border-subtle);
2370
- background: var(--bg-card);
2371
- }
2372
-
2373
- .comparison-table {
2374
- width: 100%;
2375
- border-collapse: collapse;
2376
- font-size: 14px;
2377
- }
2378
-
2379
- .comparison-table th,
2380
- .comparison-table td {
2381
- padding: 16px 24px;
2382
- text-align: center;
2383
- border-bottom: 1px solid var(--border-subtle);
2384
- }
2385
-
2386
- .comparison-table th {
2387
- font-family: var(--font-display);
2388
- font-weight: 600;
2389
- font-size: 16px;
2390
- background: var(--bg-tertiary);
2391
- }
2392
-
2393
- .comparison-table th.highlighted {
2394
- background: rgba(0, 217, 255, 0.1);
2395
- color: var(--accent-cyan);
2396
- }
2397
-
2398
- .comparison-table td.highlighted {
2399
- background: rgba(0, 217, 255, 0.03);
2400
- }
2401
-
2402
- .comparison-table .feature-col {
2403
- text-align: left;
2404
- font-weight: 500;
2405
- color: var(--text-secondary);
2406
- }
2407
-
2408
- .comparison-table .check {
2409
- color: var(--accent-green);
2410
- font-size: 18px;
2411
- font-weight: bold;
2412
- }
2413
-
2414
- .comparison-table .dash {
2415
- color: var(--text-dim);
2416
- }
2417
-
2418
- .comparison-table .feature-value {
2419
- color: var(--text-primary);
2420
- font-weight: 500;
2421
- }
2422
-
2423
- .comparison-table tbody tr:last-child td {
2424
- border-bottom: none;
2425
- }
2426
-
2427
- .comparison-table tbody tr:hover td {
2428
- background: rgba(255, 255, 255, 0.02);
2429
- }
2430
-
2431
- .comparison-table tbody tr:hover td.highlighted {
2432
- background: rgba(0, 217, 255, 0.05);
2433
- }
2434
-
2435
- /* FAQ Section */
2436
- .faq-section {
2437
- position: relative;
2438
- z-index: 1;
2439
- padding: var(--section-padding) 40px;
2440
- max-width: 900px;
2441
- margin: 0 auto;
2442
- }
2443
-
2444
- .faq-grid {
2445
- display: flex;
2446
- flex-direction: column;
2447
- gap: 12px;
2448
- }
2449
-
2450
- .faq-item {
2451
- background: var(--bg-card);
2452
- border: 1px solid var(--border-subtle);
2453
- border-radius: 12px;
2454
- overflow: hidden;
2455
- cursor: pointer;
2456
- transition: var(--transition-fast);
2457
- }
2458
-
2459
- .faq-item:hover {
2460
- border-color: var(--border-light);
2461
- }
2462
-
2463
- .faq-item.open {
2464
- border-color: var(--accent-cyan);
2465
- background: rgba(0, 217, 255, 0.03);
2466
- }
2467
-
2468
- .faq-question {
2469
- display: flex;
2470
- align-items: center;
2471
- justify-content: space-between;
2472
- padding: 20px 24px;
2473
- font-weight: 500;
2474
- font-size: 15px;
2475
- }
2476
-
2477
- .faq-toggle {
2478
- font-size: 24px;
2479
- color: var(--text-muted);
2480
- line-height: 1;
2481
- transition: var(--transition-fast);
2482
- }
2483
-
2484
- .faq-item.open .faq-toggle {
2485
- color: var(--accent-cyan);
2486
- }
2487
-
2488
- .faq-answer {
2489
- max-height: 0;
2490
- overflow: hidden;
2491
- transition: max-height 0.3s ease;
2492
- }
2493
-
2494
- .faq-item.open .faq-answer {
2495
- max-height: 300px;
2496
- }
2497
-
2498
- .faq-answer p {
2499
- padding: 0 24px 20px;
2500
- font-size: 14px;
2501
- color: var(--text-secondary);
2502
- line-height: 1.7;
2503
- }
2504
-
2505
- /* CTA Section with Orbital Visual */
2506
- .pricing-page .cta-section {
2507
- padding: var(--section-padding) 40px;
2508
- max-width: var(--container-max);
2509
- margin: 0 auto;
2510
- }
2511
-
2512
- .cta-card {
2513
- display: grid;
2514
- grid-template-columns: 1fr 1fr;
2515
- gap: 60px;
2516
- align-items: center;
2517
- padding: 60px;
2518
- background: linear-gradient(135deg, var(--bg-card) 0%, var(--bg-secondary) 100%);
2519
- border: 1px solid var(--border-light);
2520
- border-radius: 24px;
2521
- overflow: hidden;
2522
- }
2523
-
2524
- .cta-card .cta-content h2 {
2525
- font-family: var(--font-display);
2526
- font-size: 36px;
2527
- font-weight: 700;
2528
- margin-bottom: 12px;
2529
- }
2530
-
2531
- .cta-card .cta-content p {
2532
- font-size: 16px;
2533
- color: var(--text-secondary);
2534
- margin-bottom: 32px;
2535
- }
2536
-
2537
- /* Orbital Animation */
2538
- .orbit {
2539
- position: relative;
2540
- width: 300px;
2541
- height: 300px;
2542
- margin: 0 auto;
2543
- }
2544
-
2545
- .orbit-ring {
2546
- position: absolute;
2547
- border: 1px solid var(--border-subtle);
2548
- border-radius: 50%;
2549
- animation: spin 20s linear infinite;
2550
- }
2551
-
2552
- .ring-1 {
2553
- width: 100%;
2554
- height: 100%;
2555
- top: 0;
2556
- left: 0;
2557
- }
2558
-
2559
- .ring-2 {
2560
- width: 70%;
2561
- height: 70%;
2562
- top: 15%;
2563
- left: 15%;
2564
- animation-duration: 15s;
2565
- animation-direction: reverse;
2566
- }
2567
-
2568
- .ring-3 {
2569
- width: 40%;
2570
- height: 40%;
2571
- top: 30%;
2572
- left: 30%;
2573
- animation-duration: 10s;
2574
- }
2575
-
2576
- @keyframes spin {
2577
- from { transform: rotate(0deg); }
2578
- to { transform: rotate(360deg); }
2579
- }
2580
-
2581
- .orbit-center {
2582
- position: absolute;
2583
- top: 50%;
2584
- left: 50%;
2585
- transform: translate(-50%, -50%);
2586
- font-size: 40px;
2587
- color: var(--accent-cyan);
2588
- filter: drop-shadow(var(--glow-cyan));
2589
- }
2590
-
2591
- .orbit-dot {
2592
- position: absolute;
2593
- font-size: 20px;
2594
- animation: orbitMove 6s ease-in-out infinite;
2595
- }
2596
-
2597
- .dot-1 {
2598
- top: 0;
2599
- left: 50%;
2600
- transform: translateX(-50%);
2601
- color: var(--accent-cyan);
2602
- animation-delay: 0s;
2603
- }
2604
-
2605
- .dot-2 {
2606
- top: 50%;
2607
- right: 0;
2608
- transform: translateY(-50%);
2609
- color: var(--accent-orange);
2610
- animation-delay: -2s;
2611
- }
2612
-
2613
- .dot-3 {
2614
- bottom: 15%;
2615
- left: 15%;
2616
- color: var(--accent-teal);
2617
- animation-delay: -4s;
2618
- }
2619
-
2620
- @keyframes orbitMove {
2621
- 0%, 100% { opacity: 1; transform: scale(1); }
2622
- 50% { opacity: 0.6; transform: scale(0.8); }
2623
- }
2624
-
2625
- /* Pricing Page Responsive */
2626
- @media (max-width: 1024px) {
2627
- .plans-grid {
2628
- grid-template-columns: repeat(2, 1fr);
2629
- }
2630
-
2631
- .cta-card {
2632
- grid-template-columns: 1fr;
2633
- text-align: center;
2634
- }
2635
-
2636
- .cta-card .cta-content {
2637
- order: 1;
2638
- }
2639
-
2640
- .cta-visual {
2641
- order: 0;
2642
- }
2643
-
2644
- .orbit {
2645
- width: 200px;
2646
- height: 200px;
2647
- }
2648
- }
2649
-
2650
- @media (max-width: 768px) {
2651
- .pricing-hero {
2652
- padding: 120px 20px 48px;
2653
- }
2654
-
2655
- .pricing-hero h1 {
2656
- font-size: clamp(32px, 8vw, 48px);
2657
- }
2658
-
2659
- .pricing-hero .hero-subtitle {
2660
- font-size: 15px;
2661
- line-height: 1.7;
2662
- }
2663
-
2664
- .billing-toggle {
2665
- width: 100%;
2666
- max-width: 280px;
2667
- }
2668
-
2669
- .billing-toggle button {
2670
- flex: 1;
2671
- padding: 10px 16px;
2672
- font-size: 13px;
2673
- }
2674
-
2675
- .plans-section {
2676
- padding: 0 20px 60px;
2677
- }
2678
-
2679
- .plans-grid {
2680
- grid-template-columns: 1fr;
2681
- gap: 20px;
2682
- }
2683
-
2684
- .plan-card {
2685
- padding: 24px;
2686
- border-radius: 16px;
2687
- }
2688
-
2689
- .plan-card.highlighted {
2690
- transform: none;
2691
- }
2692
-
2693
- .plan-header h3 {
2694
- font-size: 20px;
2695
- }
2696
-
2697
- .plan-price .price {
2698
- font-size: 40px;
2699
- }
2700
-
2701
- .plan-limits {
2702
- padding: 16px;
2703
- gap: 8px;
2704
- }
2705
-
2706
- .limit-value {
2707
- font-size: 20px;
2708
- }
2709
-
2710
- .limit-label {
2711
- font-size: 10px;
2712
- }
2713
-
2714
- .comparison-section {
2715
- padding: 60px 20px;
2716
- }
2717
-
2718
- .comparison-table-wrapper {
2719
- border-radius: 12px;
2720
- }
2721
-
2722
- .comparison-table th,
2723
- .comparison-table td {
2724
- padding: 10px 12px;
2725
- font-size: 12px;
2726
- }
2727
-
2728
- .comparison-table th {
2729
- font-size: 13px;
2730
- }
2731
-
2732
- .faq-section {
2733
- padding: 60px 20px;
2734
- }
2735
-
2736
- .faq-question {
2737
- padding: 16px 20px;
2738
- font-size: 14px;
2739
- }
2740
-
2741
- .faq-answer p {
2742
- padding: 0 20px 16px;
2743
- font-size: 13px;
2744
- }
2745
-
2746
- .pricing-page .cta-section {
2747
- padding: 60px 20px;
2748
- }
2749
-
2750
- .cta-card {
2751
- padding: 32px 20px;
2752
- border-radius: 16px;
2753
- gap: 40px;
2754
- }
2755
-
2756
- .cta-card .cta-content h2 {
2757
- font-size: 28px;
2758
- }
2759
-
2760
- .cta-card .cta-content p {
2761
- font-size: 14px;
2762
- margin-bottom: 24px;
2763
- }
2764
-
2765
- .cta-buttons {
2766
- flex-direction: column;
2767
- align-items: center;
2768
- }
2769
-
2770
- .cta-buttons .btn-large {
2771
- width: 100%;
2772
- max-width: 260px;
2773
- }
2774
-
2775
- .orbit {
2776
- width: 160px;
2777
- height: 160px;
2778
- }
2779
-
2780
- .orbit-center {
2781
- font-size: 28px;
2782
- }
2783
-
2784
- .orbit-dot {
2785
- font-size: 14px;
2786
- }
2787
- }
2788
-
2789
- @media (max-width: 480px) {
2790
- .pricing-hero {
2791
- padding: 100px 16px 40px;
2792
- }
2793
-
2794
- .pricing-hero h1 {
2795
- font-size: 28px;
2796
- }
2797
-
2798
- .pricing-hero .hero-subtitle {
2799
- font-size: 14px;
2800
- }
2801
-
2802
- .pricing-hero .hero-badge {
2803
- padding: 8px 14px;
2804
- font-size: 12px;
2805
- margin-bottom: 24px;
2806
- }
2807
-
2808
- .plans-section {
2809
- padding: 0 16px 48px;
2810
- }
2811
-
2812
- .plan-card {
2813
- padding: 20px;
2814
- }
2815
-
2816
- .plan-price .price {
2817
- font-size: 36px;
2818
- }
2819
-
2820
- .comparison-section {
2821
- padding: 48px 16px;
2822
- }
2823
-
2824
- .comparison-table th,
2825
- .comparison-table td {
2826
- padding: 8px 8px;
2827
- font-size: 11px;
2828
- }
2829
-
2830
- .faq-section {
2831
- padding: 48px 16px;
2832
- }
2833
-
2834
- .pricing-page .cta-section {
2835
- padding: 48px 16px;
2836
- }
2837
-
2838
- .cta-card {
2839
- padding: 24px 16px;
2840
- }
2841
-
2842
- .cta-card .cta-content h2 {
2843
- font-size: 24px;
2844
- }
2845
-
2846
- .orbit {
2847
- width: 140px;
2848
- height: 140px;
2849
- }
2850
- }