@pixelbyte-software/pixcode 1.51.2 → 1.51.4

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 (331) hide show
  1. package/CODE_OF_CONDUCT.md +41 -41
  2. package/CONTRIBUTING.md +155 -155
  3. package/LICENSE +718 -718
  4. package/README.de.md +169 -169
  5. package/README.ja.md +167 -167
  6. package/README.ko.md +167 -167
  7. package/README.md +419 -419
  8. package/README.ru.md +169 -169
  9. package/README.tr.md +298 -298
  10. package/README.zh-CN.md +167 -167
  11. package/SECURITY.md +46 -46
  12. package/dist/api-automation.html +110 -110
  13. package/dist/api-docs.html +548 -548
  14. package/dist/assets/index-B9N-gfOQ.css +32 -0
  15. package/dist/assets/{index-EN9ngyxf.js → index-HfGHXhD6.js} +175 -175
  16. package/dist/clear-cache.html +85 -85
  17. package/dist/convert-icons.md +52 -52
  18. package/dist/docs.html +308 -308
  19. package/dist/favicon.svg +8 -8
  20. package/dist/features.html +133 -133
  21. package/dist/generate-icons.js +48 -48
  22. package/dist/humans.txt +15 -15
  23. package/dist/icons/codex-white.svg +3 -3
  24. package/dist/icons/codex.svg +3 -3
  25. package/dist/icons/cursor-white.svg +11 -11
  26. package/dist/icons/icon-128x128.svg +9 -9
  27. package/dist/icons/icon-144x144.svg +9 -9
  28. package/dist/icons/icon-152x152.svg +9 -9
  29. package/dist/icons/icon-192x192.svg +9 -9
  30. package/dist/icons/icon-384x384.svg +9 -9
  31. package/dist/icons/icon-512x512.svg +9 -9
  32. package/dist/icons/icon-72x72.svg +9 -9
  33. package/dist/icons/icon-96x96.svg +9 -9
  34. package/dist/icons/icon-template.svg +9 -9
  35. package/dist/icons/qwen-logo.svg +14 -14
  36. package/dist/index.html +59 -59
  37. package/dist/landing.html +268 -268
  38. package/dist/llms-full.txt +119 -119
  39. package/dist/llms.txt +53 -53
  40. package/dist/logo.svg +12 -12
  41. package/dist/manifest.json +60 -60
  42. package/dist/openapi.yaml +1696 -1696
  43. package/dist/orchestration.html +125 -125
  44. package/dist/robots.txt +4 -4
  45. package/dist/site.css +692 -692
  46. package/dist/sitemap.xml +51 -51
  47. package/dist/sw.js +132 -132
  48. package/dist-server/server/cli.js +96 -96
  49. package/dist-server/server/daemon/manager.js +33 -33
  50. package/dist-server/server/daemon-manager.js +64 -64
  51. package/dist-server/server/database/db.js +14 -2
  52. package/dist-server/server/database/db.js.map +1 -1
  53. package/dist-server/server/index.js +191 -31
  54. package/dist-server/server/index.js.map +1 -1
  55. package/dist-server/server/middleware/auth.js +16 -5
  56. package/dist-server/server/middleware/auth.js.map +1 -1
  57. package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.js +84 -0
  58. package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.js.map +1 -0
  59. package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.test.js +43 -0
  60. package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.test.js.map +1 -0
  61. package/dist-server/server/modules/orchestration/hermes/hermes.routes.js +55 -1
  62. package/dist-server/server/modules/orchestration/hermes/hermes.routes.js.map +1 -1
  63. package/dist-server/server/modules/orchestration/index.js +1 -0
  64. package/dist-server/server/modules/orchestration/index.js.map +1 -1
  65. package/dist-server/server/routes/auth.js +12 -5
  66. package/dist-server/server/routes/auth.js.map +1 -1
  67. package/dist-server/server/routes/commands.js +25 -25
  68. package/dist-server/server/routes/git.js +29 -17
  69. package/dist-server/server/routes/git.js.map +1 -1
  70. package/dist-server/server/routes/live-view.js +46 -46
  71. package/dist-server/server/routes/platformization.js +7 -6
  72. package/dist-server/server/routes/platformization.js.map +1 -1
  73. package/dist-server/server/services/hermes-gateway.js +310 -0
  74. package/dist-server/server/services/hermes-gateway.js.map +1 -1
  75. package/dist-server/server/services/platformization.js +58 -2
  76. package/dist-server/server/services/platformization.js.map +1 -1
  77. package/dist-server/server/services/public-api-manifest.js +59 -51
  78. package/dist-server/server/services/public-api-manifest.js.map +1 -1
  79. package/package.json +222 -222
  80. package/scripts/fix-node-pty.js +67 -67
  81. package/scripts/github/create-v1.38-issues.mjs +351 -351
  82. package/scripts/github/create-vscode-workbench-issues.mjs +121 -121
  83. package/scripts/hermes/configure-pixcode-mcp.mjs +165 -163
  84. package/scripts/hermes/pixcode-mcp-server.mjs +1009 -958
  85. package/scripts/smoke/changes-panel-layout.mjs +48 -48
  86. package/scripts/smoke/chat-composer-fixed-layout.mjs +55 -55
  87. package/scripts/smoke/chat-message-timeline-order.mjs +41 -41
  88. package/scripts/smoke/chat-realtime-hydration.mjs +44 -44
  89. package/scripts/smoke/chat-session-provider-pools.mjs +35 -35
  90. package/scripts/smoke/chat-session-state.mjs +19 -19
  91. package/scripts/smoke/code-editor-theme.mjs +55 -55
  92. package/scripts/smoke/code-editor-vscode-engine.mjs +91 -91
  93. package/scripts/smoke/command-center-agent-writes.mjs +79 -79
  94. package/scripts/smoke/command-center-non-git.mjs +46 -46
  95. package/scripts/smoke/context-packet.mjs +43 -43
  96. package/scripts/smoke/control-room-ux-redesign.mjs +91 -91
  97. package/scripts/smoke/daemon-entrypoint.mjs +20 -20
  98. package/scripts/smoke/default-landing-routing.mjs +33 -33
  99. package/scripts/smoke/desktop-native-notifications.mjs +30 -30
  100. package/scripts/smoke/desktop-tray-icon.mjs +33 -33
  101. package/scripts/smoke/discord-release-workflow.mjs +24 -24
  102. package/scripts/smoke/git-install-update.mjs +255 -255
  103. package/scripts/smoke/handoff-artifact-protocol.mjs +50 -50
  104. package/scripts/smoke/hermes-api-install.mjs +56 -56
  105. package/scripts/smoke/hermes-gateway-persistence.mjs +104 -104
  106. package/scripts/smoke/hermes-mcp-pixcode-roundtrip.mjs +426 -367
  107. package/scripts/smoke/hermes-rest-chat-api.mjs +162 -162
  108. package/scripts/smoke/hermes-rest-chat-live.mjs +45 -45
  109. package/scripts/smoke/hermes-rest-codex-launch.mjs +209 -209
  110. package/scripts/smoke/hermes-rest-gateway.mjs +79 -70
  111. package/scripts/smoke/hermes-rest-live.mjs +42 -42
  112. package/scripts/smoke/hermes-roundtrip.mjs +167 -167
  113. package/scripts/smoke/hermes-settings-commands.mjs +349 -346
  114. package/scripts/smoke/hermes-smoke-launcher-guard.mjs +34 -34
  115. package/scripts/smoke/live-view-diagnostics.mjs +53 -53
  116. package/scripts/smoke/live-view-environment.mjs +92 -92
  117. package/scripts/smoke/live-view-integration.mjs +450 -450
  118. package/scripts/smoke/mac-desktop-runtime.mjs +37 -37
  119. package/scripts/smoke/mobile-tunnel-guidance.mjs +29 -29
  120. package/scripts/smoke/model-registry.mjs +36 -36
  121. package/scripts/smoke/multi-project-ui.mjs +45 -45
  122. package/scripts/smoke/multi-worker-slots.mjs +42 -42
  123. package/scripts/smoke/notification-center.mjs +87 -87
  124. package/scripts/smoke/notification-inapp-preference.mjs +23 -23
  125. package/scripts/smoke/notification-taxonomy.mjs +58 -58
  126. package/scripts/smoke/orchestration-api.mjs +172 -172
  127. package/scripts/smoke/orchestration-execution-dashboard.mjs +33 -33
  128. package/scripts/smoke/orchestration-live-run.mjs +176 -176
  129. package/scripts/smoke/orchestration-mobile-scroll.mjs +29 -29
  130. package/scripts/smoke/orchestration-model-sync.mjs +30 -30
  131. package/scripts/smoke/orchestration-permission-fallback.mjs +34 -34
  132. package/scripts/smoke/orchestration-runtime-guards.mjs +48 -48
  133. package/scripts/smoke/orchestration-user-facing-output.mjs +25 -25
  134. package/scripts/smoke/permission-policy.mjs +50 -50
  135. package/scripts/smoke/pixcode-workbench-1-48.mjs +167 -167
  136. package/scripts/smoke/provider-models-opencode-live.mjs +66 -66
  137. package/scripts/smoke/provider-rest-api.mjs +124 -124
  138. package/scripts/smoke/provider-selection-status.mjs +52 -52
  139. package/scripts/smoke/run-state-refresh.mjs +52 -52
  140. package/scripts/smoke/runtime-manager.mjs +99 -99
  141. package/scripts/smoke/shell-manual-disconnect.mjs +30 -30
  142. package/scripts/smoke/side-panel-editor-layout.mjs +34 -34
  143. package/scripts/smoke/static-root-routing.mjs +21 -21
  144. package/scripts/smoke/strict-handoff-compact.mjs +60 -60
  145. package/scripts/smoke/taskmaster-config.mjs +24 -24
  146. package/scripts/smoke/taskmaster-execution-telegram.mjs +3 -3
  147. package/scripts/smoke/taskmaster-onboarding.mjs +3 -3
  148. package/scripts/smoke/taskmaster-run-graph.mjs +3 -3
  149. package/scripts/smoke/telegram-control.mjs +242 -242
  150. package/scripts/smoke/tunnel-persistence.mjs +56 -56
  151. package/scripts/smoke/update-issue-progress.mjs +69 -69
  152. package/scripts/smoke/update-ux.mjs +55 -55
  153. package/scripts/smoke/v138-completion.mjs +132 -132
  154. package/scripts/smoke/v138-desktop-release-hardening.mjs +69 -69
  155. package/scripts/smoke/v138-diagnostics.mjs +63 -63
  156. package/scripts/smoke/v138-issue-planner.mjs +33 -33
  157. package/scripts/smoke/v143-remote-control.mjs +76 -76
  158. package/scripts/smoke/v144-production-loop.mjs +47 -47
  159. package/scripts/smoke/v145-platformization.mjs +46 -46
  160. package/scripts/smoke/v146-control-room-ui.mjs +150 -150
  161. package/scripts/smoke/version-modal-autoshow.mjs +29 -29
  162. package/scripts/smoke/vscode-workbench-layout.mjs +63 -63
  163. package/scripts/smoke/vscode-workbench-polish.mjs +461 -436
  164. package/scripts/smoke/workflow-fallback-replay.mjs +56 -56
  165. package/scripts/smoke/workflow-templates.mjs +43 -43
  166. package/scripts/smoke/workflow-trace-timeline.mjs +46 -46
  167. package/scripts/update-git-install.mjs +293 -293
  168. package/server/claude-sdk.js +920 -920
  169. package/server/cli.js +1039 -1039
  170. package/server/constants/config.js +4 -4
  171. package/server/cursor-cli.js +344 -344
  172. package/server/daemon/manager.js +563 -563
  173. package/server/daemon-manager.js +964 -964
  174. package/server/database/db.js +908 -895
  175. package/server/database/json-store.js +197 -197
  176. package/server/gemini-cli.js +550 -550
  177. package/server/gemini-response-handler.js +79 -79
  178. package/server/index.js +201 -30
  179. package/server/load-env.js +35 -35
  180. package/server/middleware/auth.js +171 -156
  181. package/server/modules/orchestration/a2a/adapter-registry.ts +108 -108
  182. package/server/modules/orchestration/a2a/adapters/abstract-a2a.adapter.ts +63 -63
  183. package/server/modules/orchestration/a2a/adapters/claude-code.adapter.ts +286 -286
  184. package/server/modules/orchestration/a2a/adapters/codex.adapter.ts +244 -244
  185. package/server/modules/orchestration/a2a/adapters/cursor.adapter.ts +249 -249
  186. package/server/modules/orchestration/a2a/adapters/gemini.adapter.ts +248 -248
  187. package/server/modules/orchestration/a2a/adapters/json-event.adapter.test.ts +60 -0
  188. package/server/modules/orchestration/a2a/adapters/json-event.adapter.ts +101 -0
  189. package/server/modules/orchestration/a2a/adapters/opencode.adapter.ts +248 -248
  190. package/server/modules/orchestration/a2a/adapters/qwen.adapter.ts +248 -248
  191. package/server/modules/orchestration/a2a/agent-card.ts +55 -55
  192. package/server/modules/orchestration/a2a/routes.ts +590 -590
  193. package/server/modules/orchestration/a2a/task-store.ts +178 -178
  194. package/server/modules/orchestration/a2a/types.ts +126 -126
  195. package/server/modules/orchestration/a2a/validator.ts +113 -113
  196. package/server/modules/orchestration/hermes/hermes.routes.ts +642 -583
  197. package/server/modules/orchestration/index.ts +101 -100
  198. package/server/modules/orchestration/preview/port-watcher.ts +112 -112
  199. package/server/modules/orchestration/preview/preview-proxy.ts +60 -60
  200. package/server/modules/orchestration/preview/types.ts +19 -19
  201. package/server/modules/orchestration/security/permission-policy.ts +401 -401
  202. package/server/modules/orchestration/tasks/orchestration-task-store.ts +41 -41
  203. package/server/modules/orchestration/tasks/orchestration-task.routes.ts +64 -64
  204. package/server/modules/orchestration/tasks/orchestration-task.service.ts +209 -209
  205. package/server/modules/orchestration/tasks/orchestration-task.types.ts +40 -40
  206. package/server/modules/orchestration/tasks/task-run-graph.ts +155 -155
  207. package/server/modules/orchestration/workflows/approval-queue.ts +106 -106
  208. package/server/modules/orchestration/workflows/built-in-workflows.ts +127 -127
  209. package/server/modules/orchestration/workflows/context-packet.ts +186 -186
  210. package/server/modules/orchestration/workflows/handoff-artifact.ts +175 -175
  211. package/server/modules/orchestration/workflows/workflow-fallback-policy.ts +161 -161
  212. package/server/modules/orchestration/workflows/workflow-replay.ts +254 -254
  213. package/server/modules/orchestration/workflows/workflow-runner.ts +2070 -2070
  214. package/server/modules/orchestration/workflows/workflow-store.ts +97 -97
  215. package/server/modules/orchestration/workflows/workflow-templates.ts +272 -272
  216. package/server/modules/orchestration/workflows/workflow-trace.ts +424 -424
  217. package/server/modules/orchestration/workflows/workflow.routes.ts +586 -586
  218. package/server/modules/orchestration/workflows/workflow.types.ts +111 -111
  219. package/server/modules/orchestration/workflows/workspace-target.ts +122 -122
  220. package/server/modules/orchestration/workspace/docker-workspace.ts +136 -136
  221. package/server/modules/orchestration/workspace/path-safety.ts +55 -55
  222. package/server/modules/orchestration/workspace/types.ts +52 -52
  223. package/server/modules/orchestration/workspace/workspace-manager.ts +102 -102
  224. package/server/modules/orchestration/workspace/worktree-workspace.ts +126 -126
  225. package/server/modules/providers/index.ts +2 -2
  226. package/server/modules/providers/list/claude/claude-auth.provider.ts +146 -146
  227. package/server/modules/providers/list/claude/claude-mcp.provider.ts +135 -135
  228. package/server/modules/providers/list/claude/claude-sessions.provider.ts +306 -306
  229. package/server/modules/providers/list/claude/claude.provider.ts +15 -15
  230. package/server/modules/providers/list/codex/codex-auth.provider.ts +117 -117
  231. package/server/modules/providers/list/codex/codex-mcp.provider.ts +135 -135
  232. package/server/modules/providers/list/codex/codex-sessions.provider.ts +319 -319
  233. package/server/modules/providers/list/codex/codex.provider.ts +15 -15
  234. package/server/modules/providers/list/cursor/cursor-auth.provider.ts +147 -147
  235. package/server/modules/providers/list/cursor/cursor-mcp.provider.ts +108 -108
  236. package/server/modules/providers/list/cursor/cursor-sessions.provider.ts +421 -421
  237. package/server/modules/providers/list/cursor/cursor.provider.ts +15 -15
  238. package/server/modules/providers/list/gemini/gemini-auth.provider.ts +173 -173
  239. package/server/modules/providers/list/gemini/gemini-mcp.provider.ts +110 -110
  240. package/server/modules/providers/list/gemini/gemini-sessions.provider.ts +227 -227
  241. package/server/modules/providers/list/gemini/gemini.provider.ts +15 -15
  242. package/server/modules/providers/list/opencode/opencode-auth.provider.ts +131 -131
  243. package/server/modules/providers/list/opencode/opencode-mcp.provider.ts +126 -126
  244. package/server/modules/providers/list/opencode/opencode-sessions.provider.ts +286 -286
  245. package/server/modules/providers/list/opencode/opencode.provider.ts +29 -29
  246. package/server/modules/providers/list/qwen/qwen-auth.provider.ts +146 -146
  247. package/server/modules/providers/list/qwen/qwen-mcp.provider.ts +114 -114
  248. package/server/modules/providers/list/qwen/qwen-sessions.provider.ts +265 -265
  249. package/server/modules/providers/list/qwen/qwen.provider.ts +21 -21
  250. package/server/modules/providers/provider.registry.ts +40 -40
  251. package/server/modules/providers/provider.routes.ts +944 -944
  252. package/server/modules/providers/services/mcp.service.ts +86 -86
  253. package/server/modules/providers/services/provider-auth.service.ts +26 -26
  254. package/server/modules/providers/services/sessions.service.ts +45 -45
  255. package/server/modules/providers/shared/base/abstract.provider.ts +20 -20
  256. package/server/modules/providers/shared/mcp/mcp.provider.ts +151 -151
  257. package/server/modules/providers/shared/provider-configs.ts +142 -142
  258. package/server/modules/providers/tests/mcp.test.ts +293 -293
  259. package/server/openai-codex.js +462 -462
  260. package/server/opencode-cli.js +491 -491
  261. package/server/opencode-response-handler.js +111 -111
  262. package/server/projects.js +3008 -3008
  263. package/server/qwen-code-cli.js +410 -410
  264. package/server/qwen-response-handler.js +73 -73
  265. package/server/routes/agent.js +1435 -1435
  266. package/server/routes/auth.js +154 -146
  267. package/server/routes/codex.js +20 -20
  268. package/server/routes/commands.js +570 -570
  269. package/server/routes/cursor.js +61 -61
  270. package/server/routes/diagnostics.js +41 -41
  271. package/server/routes/gemini.js +25 -25
  272. package/server/routes/git.js +1650 -1635
  273. package/server/routes/live-view.js +411 -411
  274. package/server/routes/mcp-utils.js +13 -13
  275. package/server/routes/messages.js +62 -62
  276. package/server/routes/network.js +125 -125
  277. package/server/routes/platformization.js +198 -197
  278. package/server/routes/plugins.js +320 -320
  279. package/server/routes/production-agent-loop.js +90 -90
  280. package/server/routes/projects.js +917 -917
  281. package/server/routes/public-api.js +34 -34
  282. package/server/routes/qwen.js +27 -27
  283. package/server/routes/remote.js +55 -55
  284. package/server/routes/settings.js +321 -321
  285. package/server/routes/telegram.js +140 -140
  286. package/server/routes/user.js +125 -125
  287. package/server/routes/webhooks.js +63 -63
  288. package/server/services/control-room.js +102 -102
  289. package/server/services/diagnostics.js +165 -165
  290. package/server/services/external-access.js +375 -375
  291. package/server/services/hermes-gateway.js +1562 -1247
  292. package/server/services/hermes-install-jobs.js +729 -729
  293. package/server/services/install-jobs.js +715 -715
  294. package/server/services/live-view.js +956 -956
  295. package/server/services/managed-runtimes.js +493 -493
  296. package/server/services/model-registry.js +144 -144
  297. package/server/services/notification-orchestrator.js +365 -365
  298. package/server/services/notification-taxonomy.js +204 -204
  299. package/server/services/platformization.js +844 -779
  300. package/server/services/production-agent-loop.js +248 -248
  301. package/server/services/provider-cli-versions.js +149 -149
  302. package/server/services/provider-credentials.js +189 -189
  303. package/server/services/provider-models.js +396 -396
  304. package/server/services/public-api-manifest.js +190 -182
  305. package/server/services/remote-connection.js +127 -127
  306. package/server/services/runtime-manager.js +323 -323
  307. package/server/services/startup-update.js +234 -234
  308. package/server/services/telegram/bot.js +331 -331
  309. package/server/services/telegram/control-center.js +979 -979
  310. package/server/services/telegram/telegram-http-client.js +151 -151
  311. package/server/services/telegram/translations.js +340 -340
  312. package/server/services/vapid-keys.js +36 -36
  313. package/server/services/webhooks.js +216 -216
  314. package/server/sessionManager.js +225 -225
  315. package/server/shared/interfaces.ts +54 -54
  316. package/server/shared/types.ts +172 -172
  317. package/server/shared/utils.ts +193 -193
  318. package/server/tsconfig.json +36 -36
  319. package/server/utils/colors.js +21 -21
  320. package/server/utils/commandParser.js +305 -305
  321. package/server/utils/frontmatter.js +18 -18
  322. package/server/utils/gitConfig.js +34 -34
  323. package/server/utils/plugin-loader.js +457 -457
  324. package/server/utils/plugin-process-manager.js +185 -185
  325. package/server/utils/port-access.js +209 -209
  326. package/server/utils/runtime-paths.js +37 -37
  327. package/server/utils/url-detection.js +71 -71
  328. package/server/vite-daemon.js +79 -79
  329. package/shared/modelConstants.js +161 -161
  330. package/shared/networkHosts.js +22 -22
  331. package/dist/assets/index-DMz0zv6T.css +0 -32
package/dist/site.css CHANGED
@@ -1,692 +1,692 @@
1
- :root {
2
- color-scheme: dark;
3
- --bg: #080a0c;
4
- --bg-soft: #101316;
5
- --bg-warm: #15120d;
6
- --panel: rgba(18, 22, 25, 0.92);
7
- --panel-strong: #151a1d;
8
- --ink: #f3f7f4;
9
- --muted: #b9c3bd;
10
- --soft: #87938d;
11
- --line: rgba(190, 203, 194, 0.2);
12
- --line-strong: rgba(190, 203, 194, 0.34);
13
- --green: #20d17d;
14
- --green-soft: rgba(32, 209, 125, 0.16);
15
- --cyan: #40c9d8;
16
- --amber: #f0b84f;
17
- --rose: #ef6f75;
18
- --code: #b8f7cf;
19
- --shadow: 0 22px 70px rgba(0, 0, 0, 0.42);
20
- }
21
-
22
- * {
23
- box-sizing: border-box;
24
- }
25
-
26
- html {
27
- scroll-behavior: smooth;
28
- }
29
-
30
- body {
31
- margin: 0;
32
- background:
33
- linear-gradient(180deg, rgba(32, 209, 125, 0.08), rgba(8, 10, 12, 0) 360px),
34
- var(--bg);
35
- color: var(--ink);
36
- font-family:
37
- Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
38
- sans-serif;
39
- line-height: 1.6;
40
- }
41
-
42
- a {
43
- color: inherit;
44
- }
45
-
46
- code,
47
- pre {
48
- font-family:
49
- "SFMono-Regular", "Cascadia Code", "Liberation Mono", Menlo, Consolas, monospace;
50
- }
51
-
52
- img {
53
- max-width: 100%;
54
- }
55
-
56
- .site-nav {
57
- position: sticky;
58
- top: 0;
59
- z-index: 20;
60
- display: flex;
61
- align-items: center;
62
- justify-content: space-between;
63
- gap: 18px;
64
- min-height: 64px;
65
- padding: 12px clamp(18px, 5vw, 72px);
66
- border-bottom: 1px solid var(--line);
67
- background: rgba(8, 10, 12, 0.84);
68
- backdrop-filter: blur(18px);
69
- }
70
-
71
- .brand {
72
- display: inline-flex;
73
- align-items: center;
74
- gap: 10px;
75
- color: var(--ink);
76
- font-weight: 900;
77
- text-decoration: none;
78
- }
79
-
80
- .brand img {
81
- width: 32px;
82
- height: 32px;
83
- }
84
-
85
- .nav-links {
86
- display: flex;
87
- align-items: center;
88
- gap: 18px;
89
- color: #d9e3dd;
90
- font-size: 14px;
91
- }
92
-
93
- .nav-links a {
94
- text-decoration: none;
95
- }
96
-
97
- .nav-links a:hover,
98
- .brand:hover {
99
- color: var(--green);
100
- }
101
-
102
- .hero {
103
- display: grid;
104
- grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.95fr);
105
- gap: clamp(28px, 5vw, 72px);
106
- align-items: center;
107
- min-height: calc(100vh - 64px);
108
- padding: clamp(52px, 8vw, 96px) clamp(18px, 5vw, 72px);
109
- border-bottom: 1px solid var(--line);
110
- }
111
-
112
- .hero.docs-hero {
113
- min-height: auto;
114
- grid-template-columns: minmax(0, 1fr) minmax(300px, 0.72fr);
115
- padding-top: 62px;
116
- padding-bottom: 46px;
117
- }
118
-
119
- .hero.text-hero {
120
- grid-template-columns: minmax(0, 1fr) minmax(300px, 0.46fr);
121
- align-items: end;
122
- min-height: auto;
123
- padding-top: clamp(70px, 10vw, 128px);
124
- padding-bottom: clamp(58px, 8vw, 96px);
125
- }
126
-
127
- .hero-copy {
128
- max-width: 1040px;
129
- }
130
-
131
- .hero-summary {
132
- display: grid;
133
- gap: 14px;
134
- padding: 24px;
135
- border: 1px solid var(--line);
136
- border-radius: 8px;
137
- background: rgba(18, 22, 25, 0.78);
138
- box-shadow: var(--shadow);
139
- }
140
-
141
- .hero-summary strong {
142
- color: var(--green);
143
- font-size: 14px;
144
- letter-spacing: 0.08em;
145
- text-transform: uppercase;
146
- }
147
-
148
- .hero-summary p {
149
- margin: 0;
150
- color: #dce7df;
151
- font-size: 18px;
152
- }
153
-
154
- .eyebrow {
155
- color: var(--green);
156
- font-size: 13px;
157
- font-weight: 900;
158
- letter-spacing: 0.08em;
159
- text-transform: uppercase;
160
- }
161
-
162
- h1,
163
- h2,
164
- h3 {
165
- letter-spacing: 0;
166
- }
167
-
168
- h1 {
169
- margin: 12px 0 18px;
170
- max-width: 880px;
171
- font-size: clamp(50px, 8vw, 104px);
172
- line-height: 0.94;
173
- }
174
-
175
- .docs-hero h1 {
176
- font-size: clamp(40px, 6vw, 76px);
177
- }
178
-
179
- h2 {
180
- margin: 0 0 14px;
181
- font-size: clamp(30px, 4.4vw, 56px);
182
- line-height: 1.03;
183
- }
184
-
185
- h3 {
186
- margin: 0 0 10px;
187
- font-size: 20px;
188
- }
189
-
190
- .lead {
191
- max-width: 820px;
192
- margin: 0;
193
- color: #dce7df;
194
- font-size: clamp(18px, 2.1vw, 24px);
195
- }
196
-
197
- .sublead {
198
- max-width: 860px;
199
- margin: 0 0 30px;
200
- color: var(--muted);
201
- font-size: 18px;
202
- }
203
-
204
- .actions {
205
- display: flex;
206
- flex-wrap: wrap;
207
- gap: 12px;
208
- margin-top: 28px;
209
- }
210
-
211
- .button {
212
- display: inline-flex;
213
- min-height: 44px;
214
- align-items: center;
215
- justify-content: center;
216
- padding: 0 18px;
217
- border: 1px solid var(--line-strong);
218
- border-radius: 8px;
219
- background: #151a1d;
220
- color: var(--ink);
221
- font-weight: 850;
222
- text-decoration: none;
223
- transition:
224
- transform 160ms ease,
225
- border-color 160ms ease,
226
- background 160ms ease;
227
- }
228
-
229
- .button:hover {
230
- transform: translateY(-1px);
231
- border-color: var(--green);
232
- background: #18211d;
233
- }
234
-
235
- .button.primary {
236
- border-color: rgba(32, 209, 125, 0.8);
237
- background: #0f7c50;
238
- }
239
-
240
- .button.primary:hover {
241
- background: #11935d;
242
- }
243
-
244
- .hero-panel,
245
- .panel,
246
- .card,
247
- .code-panel,
248
- .image-slot {
249
- border: 1px solid var(--line);
250
- border-radius: 8px;
251
- background: var(--panel);
252
- box-shadow: var(--shadow);
253
- }
254
-
255
- .hero-panel {
256
- overflow: hidden;
257
- }
258
-
259
- .hero-panel img {
260
- display: block;
261
- width: 100%;
262
- border-bottom: 1px solid var(--line);
263
- }
264
-
265
- .terminal-strip {
266
- display: grid;
267
- gap: 8px;
268
- padding: 16px;
269
- color: var(--code);
270
- font-size: 13px;
271
- }
272
-
273
- .prompt-line {
274
- display: flex;
275
- gap: 10px;
276
- }
277
-
278
- .prompt-line span:first-child {
279
- color: var(--green);
280
- }
281
-
282
- .section {
283
- padding: 78px clamp(18px, 5vw, 72px);
284
- border-bottom: 1px solid var(--line);
285
- }
286
-
287
- .section.compact {
288
- padding-top: 56px;
289
- padding-bottom: 56px;
290
- }
291
-
292
- .section.alt {
293
- background: var(--bg-soft);
294
- }
295
-
296
- .section.warm {
297
- background: var(--bg-warm);
298
- }
299
-
300
- .grid {
301
- display: grid;
302
- gap: 16px;
303
- }
304
-
305
- .grid.three {
306
- grid-template-columns: repeat(3, minmax(0, 1fr));
307
- }
308
-
309
- .grid.two {
310
- grid-template-columns: repeat(2, minmax(0, 1fr));
311
- }
312
-
313
- .grid.sidebar {
314
- grid-template-columns: minmax(240px, 0.34fr) minmax(0, 1fr);
315
- align-items: start;
316
- }
317
-
318
- .split {
319
- display: grid;
320
- grid-template-columns: minmax(0, 0.95fr) minmax(320px, 0.8fr);
321
- gap: clamp(24px, 5vw, 64px);
322
- align-items: start;
323
- }
324
-
325
- .card,
326
- .panel,
327
- .code-panel {
328
- padding: 22px;
329
- }
330
-
331
- .card strong {
332
- display: block;
333
- margin-bottom: 8px;
334
- color: #ffffff;
335
- font-size: 18px;
336
- }
337
-
338
- .card p,
339
- .panel p {
340
- margin: 0;
341
- color: var(--muted);
342
- }
343
-
344
- .feature-list {
345
- display: grid;
346
- gap: 10px;
347
- margin: 18px 0 0;
348
- padding: 0;
349
- list-style: none;
350
- }
351
-
352
- .feature-list li {
353
- position: relative;
354
- padding-left: 18px;
355
- color: #d7e1db;
356
- }
357
-
358
- .feature-list li::before {
359
- position: absolute;
360
- left: 0;
361
- color: var(--green);
362
- content: ">";
363
- }
364
-
365
- .toc {
366
- position: sticky;
367
- top: 88px;
368
- display: grid;
369
- gap: 8px;
370
- }
371
-
372
- .toc a {
373
- display: block;
374
- padding: 9px 10px;
375
- border: 1px solid var(--line);
376
- border-radius: 8px;
377
- color: #dce7df;
378
- text-decoration: none;
379
- }
380
-
381
- .toc a:hover {
382
- border-color: var(--green);
383
- color: var(--green);
384
- }
385
-
386
- .doc-content {
387
- display: grid;
388
- gap: 46px;
389
- }
390
-
391
- .doc-section {
392
- scroll-margin-top: 94px;
393
- }
394
-
395
- .doc-section p {
396
- max-width: 940px;
397
- color: var(--muted);
398
- }
399
-
400
- .doc-section h2 {
401
- max-width: 960px;
402
- }
403
-
404
- .doc-section h3 {
405
- margin-top: 24px;
406
- }
407
-
408
- .image-slot {
409
- display: grid;
410
- min-height: 280px;
411
- place-items: center;
412
- padding: 24px;
413
- color: #c3cec7;
414
- text-align: center;
415
- background:
416
- linear-gradient(135deg, rgba(32, 209, 125, 0.12), rgba(64, 201, 216, 0.08)),
417
- repeating-linear-gradient(
418
- 45deg,
419
- rgba(255, 255, 255, 0.04),
420
- rgba(255, 255, 255, 0.04) 10px,
421
- rgba(255, 255, 255, 0.01) 10px,
422
- rgba(255, 255, 255, 0.01) 20px
423
- ),
424
- #101316;
425
- }
426
-
427
- .image-slot.tall {
428
- min-height: 520px;
429
- }
430
-
431
- .image-slot.wide {
432
- min-height: 360px;
433
- }
434
-
435
- .image-slot span {
436
- display: block;
437
- max-width: 520px;
438
- }
439
-
440
- .image-slot strong {
441
- display: block;
442
- margin-bottom: 8px;
443
- color: var(--ink);
444
- font-size: 18px;
445
- }
446
-
447
- .screen-grid {
448
- display: grid;
449
- grid-template-columns: 1.35fr 0.7fr;
450
- gap: 16px;
451
- align-items: start;
452
- }
453
-
454
- .screen-grid img {
455
- width: 100%;
456
- border: 1px solid var(--line);
457
- border-radius: 8px;
458
- background: #050607;
459
- box-shadow: var(--shadow);
460
- }
461
-
462
- pre {
463
- overflow: auto;
464
- margin: 0;
465
- color: var(--code);
466
- font-size: 14px;
467
- line-height: 1.55;
468
- }
469
-
470
- .code-panel {
471
- background: #070908;
472
- }
473
-
474
- .command-panel {
475
- width: min(100%, 620px);
476
- margin-top: 26px;
477
- box-shadow: none;
478
- }
479
-
480
- .chips {
481
- display: flex;
482
- flex-wrap: wrap;
483
- gap: 10px;
484
- margin-top: 22px;
485
- }
486
-
487
- .chips.tight {
488
- margin-top: 0;
489
- }
490
-
491
- .chip {
492
- border: 1px solid var(--line);
493
- border-radius: 999px;
494
- padding: 8px 12px;
495
- color: #e0e8e2;
496
- background: rgba(18, 22, 25, 0.75);
497
- font-size: 14px;
498
- }
499
-
500
- .kpi-row {
501
- display: grid;
502
- grid-template-columns: repeat(4, minmax(0, 1fr));
503
- gap: 14px;
504
- margin-top: 30px;
505
- }
506
-
507
- .kpi {
508
- border: 1px solid var(--line);
509
- border-radius: 8px;
510
- padding: 18px;
511
- background: rgba(18, 22, 25, 0.82);
512
- }
513
-
514
- .kpi strong {
515
- display: block;
516
- color: var(--green);
517
- font-size: 24px;
518
- }
519
-
520
- .kpi span {
521
- color: var(--muted);
522
- font-size: 13px;
523
- }
524
-
525
- .statement {
526
- max-width: 1120px;
527
- }
528
-
529
- .statement span {
530
- color: var(--green);
531
- font-size: 13px;
532
- font-weight: 900;
533
- letter-spacing: 0.08em;
534
- text-transform: uppercase;
535
- }
536
-
537
- .statement p {
538
- max-width: 960px;
539
- margin: 0;
540
- color: var(--muted);
541
- font-size: 20px;
542
- }
543
-
544
- .capability-grid {
545
- display: grid;
546
- grid-template-columns: repeat(4, minmax(0, 1fr));
547
- gap: 14px;
548
- }
549
-
550
- .capability-card {
551
- min-height: 240px;
552
- padding: 22px;
553
- border: 1px solid var(--line);
554
- border-radius: 8px;
555
- background: var(--panel);
556
- }
557
-
558
- .capability-card span {
559
- color: var(--green);
560
- font-family:
561
- "SFMono-Regular", "Cascadia Code", "Liberation Mono", Menlo, Consolas, monospace;
562
- font-size: 13px;
563
- }
564
-
565
- .capability-card h3 {
566
- margin-top: 24px;
567
- }
568
-
569
- .capability-card p {
570
- margin: 0;
571
- color: var(--muted);
572
- }
573
-
574
- .flow-list {
575
- display: grid;
576
- gap: 12px;
577
- }
578
-
579
- .flow-list div,
580
- .check-grid span {
581
- border: 1px solid var(--line);
582
- border-radius: 8px;
583
- background: rgba(18, 22, 25, 0.78);
584
- }
585
-
586
- .flow-list div {
587
- padding: 18px;
588
- }
589
-
590
- .flow-list strong {
591
- display: block;
592
- margin-bottom: 6px;
593
- color: var(--ink);
594
- }
595
-
596
- .flow-list span {
597
- color: var(--muted);
598
- }
599
-
600
- .check-grid {
601
- display: grid;
602
- grid-template-columns: repeat(3, minmax(0, 1fr));
603
- gap: 12px;
604
- }
605
-
606
- .check-grid span {
607
- position: relative;
608
- padding: 16px 16px 16px 34px;
609
- color: #dce7df;
610
- }
611
-
612
- .check-grid span::before {
613
- position: absolute;
614
- top: 16px;
615
- left: 16px;
616
- color: var(--green);
617
- content: ">";
618
- }
619
-
620
- .accent-green {
621
- color: var(--green);
622
- }
623
-
624
- .accent-cyan {
625
- color: var(--cyan);
626
- }
627
-
628
- .accent-amber {
629
- color: var(--amber);
630
- }
631
-
632
- .accent-rose {
633
- color: var(--rose);
634
- }
635
-
636
- .disclaimer {
637
- color: var(--soft);
638
- font-size: 13px;
639
- }
640
-
641
- .footer {
642
- padding: 36px clamp(18px, 5vw, 72px);
643
- color: var(--soft);
644
- background: #050607;
645
- }
646
-
647
- .footer a {
648
- color: #dce7df;
649
- }
650
-
651
- @media (max-width: 980px) {
652
- .hero,
653
- .hero.docs-hero,
654
- .hero.text-hero,
655
- .grid.sidebar,
656
- .screen-grid,
657
- .split {
658
- grid-template-columns: 1fr;
659
- }
660
-
661
- .grid.three,
662
- .grid.two,
663
- .kpi-row,
664
- .capability-grid,
665
- .check-grid {
666
- grid-template-columns: 1fr;
667
- }
668
-
669
- .toc {
670
- position: static;
671
- }
672
- }
673
-
674
- @media (max-width: 720px) {
675
- .site-nav {
676
- align-items: flex-start;
677
- flex-direction: column;
678
- }
679
-
680
- .nav-links {
681
- flex-wrap: wrap;
682
- gap: 12px;
683
- }
684
-
685
- .hero {
686
- min-height: auto;
687
- }
688
-
689
- h1 {
690
- font-size: clamp(42px, 15vw, 70px);
691
- }
692
- }
1
+ :root {
2
+ color-scheme: dark;
3
+ --bg: #080a0c;
4
+ --bg-soft: #101316;
5
+ --bg-warm: #15120d;
6
+ --panel: rgba(18, 22, 25, 0.92);
7
+ --panel-strong: #151a1d;
8
+ --ink: #f3f7f4;
9
+ --muted: #b9c3bd;
10
+ --soft: #87938d;
11
+ --line: rgba(190, 203, 194, 0.2);
12
+ --line-strong: rgba(190, 203, 194, 0.34);
13
+ --green: #20d17d;
14
+ --green-soft: rgba(32, 209, 125, 0.16);
15
+ --cyan: #40c9d8;
16
+ --amber: #f0b84f;
17
+ --rose: #ef6f75;
18
+ --code: #b8f7cf;
19
+ --shadow: 0 22px 70px rgba(0, 0, 0, 0.42);
20
+ }
21
+
22
+ * {
23
+ box-sizing: border-box;
24
+ }
25
+
26
+ html {
27
+ scroll-behavior: smooth;
28
+ }
29
+
30
+ body {
31
+ margin: 0;
32
+ background:
33
+ linear-gradient(180deg, rgba(32, 209, 125, 0.08), rgba(8, 10, 12, 0) 360px),
34
+ var(--bg);
35
+ color: var(--ink);
36
+ font-family:
37
+ Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
38
+ sans-serif;
39
+ line-height: 1.6;
40
+ }
41
+
42
+ a {
43
+ color: inherit;
44
+ }
45
+
46
+ code,
47
+ pre {
48
+ font-family:
49
+ "SFMono-Regular", "Cascadia Code", "Liberation Mono", Menlo, Consolas, monospace;
50
+ }
51
+
52
+ img {
53
+ max-width: 100%;
54
+ }
55
+
56
+ .site-nav {
57
+ position: sticky;
58
+ top: 0;
59
+ z-index: 20;
60
+ display: flex;
61
+ align-items: center;
62
+ justify-content: space-between;
63
+ gap: 18px;
64
+ min-height: 64px;
65
+ padding: 12px clamp(18px, 5vw, 72px);
66
+ border-bottom: 1px solid var(--line);
67
+ background: rgba(8, 10, 12, 0.84);
68
+ backdrop-filter: blur(18px);
69
+ }
70
+
71
+ .brand {
72
+ display: inline-flex;
73
+ align-items: center;
74
+ gap: 10px;
75
+ color: var(--ink);
76
+ font-weight: 900;
77
+ text-decoration: none;
78
+ }
79
+
80
+ .brand img {
81
+ width: 32px;
82
+ height: 32px;
83
+ }
84
+
85
+ .nav-links {
86
+ display: flex;
87
+ align-items: center;
88
+ gap: 18px;
89
+ color: #d9e3dd;
90
+ font-size: 14px;
91
+ }
92
+
93
+ .nav-links a {
94
+ text-decoration: none;
95
+ }
96
+
97
+ .nav-links a:hover,
98
+ .brand:hover {
99
+ color: var(--green);
100
+ }
101
+
102
+ .hero {
103
+ display: grid;
104
+ grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.95fr);
105
+ gap: clamp(28px, 5vw, 72px);
106
+ align-items: center;
107
+ min-height: calc(100vh - 64px);
108
+ padding: clamp(52px, 8vw, 96px) clamp(18px, 5vw, 72px);
109
+ border-bottom: 1px solid var(--line);
110
+ }
111
+
112
+ .hero.docs-hero {
113
+ min-height: auto;
114
+ grid-template-columns: minmax(0, 1fr) minmax(300px, 0.72fr);
115
+ padding-top: 62px;
116
+ padding-bottom: 46px;
117
+ }
118
+
119
+ .hero.text-hero {
120
+ grid-template-columns: minmax(0, 1fr) minmax(300px, 0.46fr);
121
+ align-items: end;
122
+ min-height: auto;
123
+ padding-top: clamp(70px, 10vw, 128px);
124
+ padding-bottom: clamp(58px, 8vw, 96px);
125
+ }
126
+
127
+ .hero-copy {
128
+ max-width: 1040px;
129
+ }
130
+
131
+ .hero-summary {
132
+ display: grid;
133
+ gap: 14px;
134
+ padding: 24px;
135
+ border: 1px solid var(--line);
136
+ border-radius: 8px;
137
+ background: rgba(18, 22, 25, 0.78);
138
+ box-shadow: var(--shadow);
139
+ }
140
+
141
+ .hero-summary strong {
142
+ color: var(--green);
143
+ font-size: 14px;
144
+ letter-spacing: 0.08em;
145
+ text-transform: uppercase;
146
+ }
147
+
148
+ .hero-summary p {
149
+ margin: 0;
150
+ color: #dce7df;
151
+ font-size: 18px;
152
+ }
153
+
154
+ .eyebrow {
155
+ color: var(--green);
156
+ font-size: 13px;
157
+ font-weight: 900;
158
+ letter-spacing: 0.08em;
159
+ text-transform: uppercase;
160
+ }
161
+
162
+ h1,
163
+ h2,
164
+ h3 {
165
+ letter-spacing: 0;
166
+ }
167
+
168
+ h1 {
169
+ margin: 12px 0 18px;
170
+ max-width: 880px;
171
+ font-size: clamp(50px, 8vw, 104px);
172
+ line-height: 0.94;
173
+ }
174
+
175
+ .docs-hero h1 {
176
+ font-size: clamp(40px, 6vw, 76px);
177
+ }
178
+
179
+ h2 {
180
+ margin: 0 0 14px;
181
+ font-size: clamp(30px, 4.4vw, 56px);
182
+ line-height: 1.03;
183
+ }
184
+
185
+ h3 {
186
+ margin: 0 0 10px;
187
+ font-size: 20px;
188
+ }
189
+
190
+ .lead {
191
+ max-width: 820px;
192
+ margin: 0;
193
+ color: #dce7df;
194
+ font-size: clamp(18px, 2.1vw, 24px);
195
+ }
196
+
197
+ .sublead {
198
+ max-width: 860px;
199
+ margin: 0 0 30px;
200
+ color: var(--muted);
201
+ font-size: 18px;
202
+ }
203
+
204
+ .actions {
205
+ display: flex;
206
+ flex-wrap: wrap;
207
+ gap: 12px;
208
+ margin-top: 28px;
209
+ }
210
+
211
+ .button {
212
+ display: inline-flex;
213
+ min-height: 44px;
214
+ align-items: center;
215
+ justify-content: center;
216
+ padding: 0 18px;
217
+ border: 1px solid var(--line-strong);
218
+ border-radius: 8px;
219
+ background: #151a1d;
220
+ color: var(--ink);
221
+ font-weight: 850;
222
+ text-decoration: none;
223
+ transition:
224
+ transform 160ms ease,
225
+ border-color 160ms ease,
226
+ background 160ms ease;
227
+ }
228
+
229
+ .button:hover {
230
+ transform: translateY(-1px);
231
+ border-color: var(--green);
232
+ background: #18211d;
233
+ }
234
+
235
+ .button.primary {
236
+ border-color: rgba(32, 209, 125, 0.8);
237
+ background: #0f7c50;
238
+ }
239
+
240
+ .button.primary:hover {
241
+ background: #11935d;
242
+ }
243
+
244
+ .hero-panel,
245
+ .panel,
246
+ .card,
247
+ .code-panel,
248
+ .image-slot {
249
+ border: 1px solid var(--line);
250
+ border-radius: 8px;
251
+ background: var(--panel);
252
+ box-shadow: var(--shadow);
253
+ }
254
+
255
+ .hero-panel {
256
+ overflow: hidden;
257
+ }
258
+
259
+ .hero-panel img {
260
+ display: block;
261
+ width: 100%;
262
+ border-bottom: 1px solid var(--line);
263
+ }
264
+
265
+ .terminal-strip {
266
+ display: grid;
267
+ gap: 8px;
268
+ padding: 16px;
269
+ color: var(--code);
270
+ font-size: 13px;
271
+ }
272
+
273
+ .prompt-line {
274
+ display: flex;
275
+ gap: 10px;
276
+ }
277
+
278
+ .prompt-line span:first-child {
279
+ color: var(--green);
280
+ }
281
+
282
+ .section {
283
+ padding: 78px clamp(18px, 5vw, 72px);
284
+ border-bottom: 1px solid var(--line);
285
+ }
286
+
287
+ .section.compact {
288
+ padding-top: 56px;
289
+ padding-bottom: 56px;
290
+ }
291
+
292
+ .section.alt {
293
+ background: var(--bg-soft);
294
+ }
295
+
296
+ .section.warm {
297
+ background: var(--bg-warm);
298
+ }
299
+
300
+ .grid {
301
+ display: grid;
302
+ gap: 16px;
303
+ }
304
+
305
+ .grid.three {
306
+ grid-template-columns: repeat(3, minmax(0, 1fr));
307
+ }
308
+
309
+ .grid.two {
310
+ grid-template-columns: repeat(2, minmax(0, 1fr));
311
+ }
312
+
313
+ .grid.sidebar {
314
+ grid-template-columns: minmax(240px, 0.34fr) minmax(0, 1fr);
315
+ align-items: start;
316
+ }
317
+
318
+ .split {
319
+ display: grid;
320
+ grid-template-columns: minmax(0, 0.95fr) minmax(320px, 0.8fr);
321
+ gap: clamp(24px, 5vw, 64px);
322
+ align-items: start;
323
+ }
324
+
325
+ .card,
326
+ .panel,
327
+ .code-panel {
328
+ padding: 22px;
329
+ }
330
+
331
+ .card strong {
332
+ display: block;
333
+ margin-bottom: 8px;
334
+ color: #ffffff;
335
+ font-size: 18px;
336
+ }
337
+
338
+ .card p,
339
+ .panel p {
340
+ margin: 0;
341
+ color: var(--muted);
342
+ }
343
+
344
+ .feature-list {
345
+ display: grid;
346
+ gap: 10px;
347
+ margin: 18px 0 0;
348
+ padding: 0;
349
+ list-style: none;
350
+ }
351
+
352
+ .feature-list li {
353
+ position: relative;
354
+ padding-left: 18px;
355
+ color: #d7e1db;
356
+ }
357
+
358
+ .feature-list li::before {
359
+ position: absolute;
360
+ left: 0;
361
+ color: var(--green);
362
+ content: ">";
363
+ }
364
+
365
+ .toc {
366
+ position: sticky;
367
+ top: 88px;
368
+ display: grid;
369
+ gap: 8px;
370
+ }
371
+
372
+ .toc a {
373
+ display: block;
374
+ padding: 9px 10px;
375
+ border: 1px solid var(--line);
376
+ border-radius: 8px;
377
+ color: #dce7df;
378
+ text-decoration: none;
379
+ }
380
+
381
+ .toc a:hover {
382
+ border-color: var(--green);
383
+ color: var(--green);
384
+ }
385
+
386
+ .doc-content {
387
+ display: grid;
388
+ gap: 46px;
389
+ }
390
+
391
+ .doc-section {
392
+ scroll-margin-top: 94px;
393
+ }
394
+
395
+ .doc-section p {
396
+ max-width: 940px;
397
+ color: var(--muted);
398
+ }
399
+
400
+ .doc-section h2 {
401
+ max-width: 960px;
402
+ }
403
+
404
+ .doc-section h3 {
405
+ margin-top: 24px;
406
+ }
407
+
408
+ .image-slot {
409
+ display: grid;
410
+ min-height: 280px;
411
+ place-items: center;
412
+ padding: 24px;
413
+ color: #c3cec7;
414
+ text-align: center;
415
+ background:
416
+ linear-gradient(135deg, rgba(32, 209, 125, 0.12), rgba(64, 201, 216, 0.08)),
417
+ repeating-linear-gradient(
418
+ 45deg,
419
+ rgba(255, 255, 255, 0.04),
420
+ rgba(255, 255, 255, 0.04) 10px,
421
+ rgba(255, 255, 255, 0.01) 10px,
422
+ rgba(255, 255, 255, 0.01) 20px
423
+ ),
424
+ #101316;
425
+ }
426
+
427
+ .image-slot.tall {
428
+ min-height: 520px;
429
+ }
430
+
431
+ .image-slot.wide {
432
+ min-height: 360px;
433
+ }
434
+
435
+ .image-slot span {
436
+ display: block;
437
+ max-width: 520px;
438
+ }
439
+
440
+ .image-slot strong {
441
+ display: block;
442
+ margin-bottom: 8px;
443
+ color: var(--ink);
444
+ font-size: 18px;
445
+ }
446
+
447
+ .screen-grid {
448
+ display: grid;
449
+ grid-template-columns: 1.35fr 0.7fr;
450
+ gap: 16px;
451
+ align-items: start;
452
+ }
453
+
454
+ .screen-grid img {
455
+ width: 100%;
456
+ border: 1px solid var(--line);
457
+ border-radius: 8px;
458
+ background: #050607;
459
+ box-shadow: var(--shadow);
460
+ }
461
+
462
+ pre {
463
+ overflow: auto;
464
+ margin: 0;
465
+ color: var(--code);
466
+ font-size: 14px;
467
+ line-height: 1.55;
468
+ }
469
+
470
+ .code-panel {
471
+ background: #070908;
472
+ }
473
+
474
+ .command-panel {
475
+ width: min(100%, 620px);
476
+ margin-top: 26px;
477
+ box-shadow: none;
478
+ }
479
+
480
+ .chips {
481
+ display: flex;
482
+ flex-wrap: wrap;
483
+ gap: 10px;
484
+ margin-top: 22px;
485
+ }
486
+
487
+ .chips.tight {
488
+ margin-top: 0;
489
+ }
490
+
491
+ .chip {
492
+ border: 1px solid var(--line);
493
+ border-radius: 999px;
494
+ padding: 8px 12px;
495
+ color: #e0e8e2;
496
+ background: rgba(18, 22, 25, 0.75);
497
+ font-size: 14px;
498
+ }
499
+
500
+ .kpi-row {
501
+ display: grid;
502
+ grid-template-columns: repeat(4, minmax(0, 1fr));
503
+ gap: 14px;
504
+ margin-top: 30px;
505
+ }
506
+
507
+ .kpi {
508
+ border: 1px solid var(--line);
509
+ border-radius: 8px;
510
+ padding: 18px;
511
+ background: rgba(18, 22, 25, 0.82);
512
+ }
513
+
514
+ .kpi strong {
515
+ display: block;
516
+ color: var(--green);
517
+ font-size: 24px;
518
+ }
519
+
520
+ .kpi span {
521
+ color: var(--muted);
522
+ font-size: 13px;
523
+ }
524
+
525
+ .statement {
526
+ max-width: 1120px;
527
+ }
528
+
529
+ .statement span {
530
+ color: var(--green);
531
+ font-size: 13px;
532
+ font-weight: 900;
533
+ letter-spacing: 0.08em;
534
+ text-transform: uppercase;
535
+ }
536
+
537
+ .statement p {
538
+ max-width: 960px;
539
+ margin: 0;
540
+ color: var(--muted);
541
+ font-size: 20px;
542
+ }
543
+
544
+ .capability-grid {
545
+ display: grid;
546
+ grid-template-columns: repeat(4, minmax(0, 1fr));
547
+ gap: 14px;
548
+ }
549
+
550
+ .capability-card {
551
+ min-height: 240px;
552
+ padding: 22px;
553
+ border: 1px solid var(--line);
554
+ border-radius: 8px;
555
+ background: var(--panel);
556
+ }
557
+
558
+ .capability-card span {
559
+ color: var(--green);
560
+ font-family:
561
+ "SFMono-Regular", "Cascadia Code", "Liberation Mono", Menlo, Consolas, monospace;
562
+ font-size: 13px;
563
+ }
564
+
565
+ .capability-card h3 {
566
+ margin-top: 24px;
567
+ }
568
+
569
+ .capability-card p {
570
+ margin: 0;
571
+ color: var(--muted);
572
+ }
573
+
574
+ .flow-list {
575
+ display: grid;
576
+ gap: 12px;
577
+ }
578
+
579
+ .flow-list div,
580
+ .check-grid span {
581
+ border: 1px solid var(--line);
582
+ border-radius: 8px;
583
+ background: rgba(18, 22, 25, 0.78);
584
+ }
585
+
586
+ .flow-list div {
587
+ padding: 18px;
588
+ }
589
+
590
+ .flow-list strong {
591
+ display: block;
592
+ margin-bottom: 6px;
593
+ color: var(--ink);
594
+ }
595
+
596
+ .flow-list span {
597
+ color: var(--muted);
598
+ }
599
+
600
+ .check-grid {
601
+ display: grid;
602
+ grid-template-columns: repeat(3, minmax(0, 1fr));
603
+ gap: 12px;
604
+ }
605
+
606
+ .check-grid span {
607
+ position: relative;
608
+ padding: 16px 16px 16px 34px;
609
+ color: #dce7df;
610
+ }
611
+
612
+ .check-grid span::before {
613
+ position: absolute;
614
+ top: 16px;
615
+ left: 16px;
616
+ color: var(--green);
617
+ content: ">";
618
+ }
619
+
620
+ .accent-green {
621
+ color: var(--green);
622
+ }
623
+
624
+ .accent-cyan {
625
+ color: var(--cyan);
626
+ }
627
+
628
+ .accent-amber {
629
+ color: var(--amber);
630
+ }
631
+
632
+ .accent-rose {
633
+ color: var(--rose);
634
+ }
635
+
636
+ .disclaimer {
637
+ color: var(--soft);
638
+ font-size: 13px;
639
+ }
640
+
641
+ .footer {
642
+ padding: 36px clamp(18px, 5vw, 72px);
643
+ color: var(--soft);
644
+ background: #050607;
645
+ }
646
+
647
+ .footer a {
648
+ color: #dce7df;
649
+ }
650
+
651
+ @media (max-width: 980px) {
652
+ .hero,
653
+ .hero.docs-hero,
654
+ .hero.text-hero,
655
+ .grid.sidebar,
656
+ .screen-grid,
657
+ .split {
658
+ grid-template-columns: 1fr;
659
+ }
660
+
661
+ .grid.three,
662
+ .grid.two,
663
+ .kpi-row,
664
+ .capability-grid,
665
+ .check-grid {
666
+ grid-template-columns: 1fr;
667
+ }
668
+
669
+ .toc {
670
+ position: static;
671
+ }
672
+ }
673
+
674
+ @media (max-width: 720px) {
675
+ .site-nav {
676
+ align-items: flex-start;
677
+ flex-direction: column;
678
+ }
679
+
680
+ .nav-links {
681
+ flex-wrap: wrap;
682
+ gap: 12px;
683
+ }
684
+
685
+ .hero {
686
+ min-height: auto;
687
+ }
688
+
689
+ h1 {
690
+ font-size: clamp(42px, 15vw, 70px);
691
+ }
692
+ }