@vibedeckx/darwin-arm64 0.1.29 → 0.1.31

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 (84) hide show
  1. package/dist/bin.js +171640 -71377
  2. package/dist/ui/404/index.html +12 -1
  3. package/dist/ui/404.html +12 -1
  4. package/dist/ui/__next.__PAGE__.txt +2 -2
  5. package/dist/ui/__next._full.txt +11 -10
  6. package/dist/ui/__next._head.txt +1 -1
  7. package/dist/ui/__next._index.txt +6 -6
  8. package/dist/ui/__next._tree.txt +6 -5
  9. package/dist/ui/_next/static/chunks/1d01d81699d17df4.js +21 -0
  10. package/dist/ui/_next/static/chunks/1d14cce84c33e71d.js +1182 -0
  11. package/dist/ui/_next/static/chunks/52d56db34af4e41f.css +1 -0
  12. package/dist/ui/_next/static/chunks/536c9d708e59a931.js +19 -0
  13. package/dist/ui/_next/static/chunks/{af8114430894d79e.js → 74997414d07089e8.js} +1 -1
  14. package/dist/ui/_next/static/chunks/99b232bc532587d5.js +35 -0
  15. package/dist/ui/_next/static/chunks/{0d37083ccc5fbf7c.css → d6bec8fc7b13d308.css} +3 -2
  16. package/dist/ui/_next/static/media/1bffadaabf893a1e-s.7cd81963.woff2 +0 -0
  17. package/dist/ui/_next/static/media/2bbe8d2671613f1f-s.76dcb0b2.woff2 +0 -0
  18. package/dist/ui/_next/static/media/2c55a0e60120577a-s.2a48534a.woff2 +0 -0
  19. package/dist/ui/_next/static/media/4fa387ec64143e14-s.3b336396.woff2 +0 -0
  20. package/dist/ui/_next/static/media/53b9e256198e5412-s.853d50a3.woff2 +0 -0
  21. package/dist/ui/_next/static/media/5476f68d60460930-s.c995e352.woff2 +0 -0
  22. package/dist/ui/_next/static/media/5ce348bf30bf5439-s.56c1f21e.woff2 +0 -0
  23. package/dist/ui/_next/static/media/6306c77e7c8268e4-s.e3369375.woff2 +0 -0
  24. package/dist/ui/_next/static/media/7178b3e590c64307-s.55554cd0.woff2 +0 -0
  25. package/dist/ui/_next/static/media/797e433ab948586e-s.p.29207c2f.woff2 +0 -0
  26. package/dist/ui/_next/static/media/7d817b4c03b0c5f1-s.a40b9a8b.woff2 +0 -0
  27. package/dist/ui/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2 +0 -0
  28. package/dist/ui/_next/static/media/8a480f0b521d4e75-s.ea323500.woff2 +0 -0
  29. package/dist/ui/_next/static/media/9c72aa0f40e4eef8-s.18a48cbc.woff2 +0 -0
  30. package/dist/ui/_next/static/media/ad66f9afd8947f86-s.7a40eb73.woff2 +0 -0
  31. package/dist/ui/_next/static/media/bbc41e54d2fcbd21-s.fe42ddf4.woff2 +0 -0
  32. package/dist/ui/_next/static/media/caa3a2e1cccd8315-s.p.3b6cae6d.woff2 +0 -0
  33. package/dist/ui/_next/static/media/favicon.65147e27.ico +0 -0
  34. package/dist/ui/_next/static/media/fef07dbb0973bf53-s.518e079e.woff2 +0 -0
  35. package/dist/ui/_not-found/__next._full.txt +7 -7
  36. package/dist/ui/_not-found/__next._head.txt +1 -1
  37. package/dist/ui/_not-found/__next._index.txt +6 -6
  38. package/dist/ui/_not-found/__next._not-found.__PAGE__.txt +1 -1
  39. package/dist/ui/_not-found/__next._not-found.txt +1 -1
  40. package/dist/ui/_not-found/__next._tree.txt +3 -3
  41. package/dist/ui/_not-found/index.html +12 -1
  42. package/dist/ui/_not-found/index.txt +7 -7
  43. package/dist/ui/favicon.ico +0 -0
  44. package/dist/ui/index.html +12 -1
  45. package/dist/ui/index.txt +11 -10
  46. package/dist/ui/sounds/sound1.mp3 +0 -0
  47. package/dist/ui/sounds/sound2.mp3 +0 -0
  48. package/node_modules/better-sqlite3/README.md +1 -1
  49. package/node_modules/better-sqlite3/build/Release/better_sqlite3-127.node +0 -0
  50. package/node_modules/better-sqlite3/build/Release/better_sqlite3-137.node +0 -0
  51. package/node_modules/better-sqlite3/build/Release/better_sqlite3-141.node +0 -0
  52. package/node_modules/better-sqlite3/build/Release/better_sqlite3-147.node +0 -0
  53. package/node_modules/better-sqlite3/lib/database.js +2 -2
  54. package/node_modules/better-sqlite3/package.json +11 -3
  55. package/node_modules/node-pty/lib/conpty_console_list_agent.js +1 -1
  56. package/node_modules/node-pty/lib/index.js +6 -6
  57. package/node_modules/node-pty/lib/shared/conout.js +2 -3
  58. package/node_modules/node-pty/lib/terminal.js +2 -2
  59. package/node_modules/node-pty/lib/unixTerminal.js +5 -3
  60. package/node_modules/node-pty/lib/utils.js +6 -7
  61. package/node_modules/node-pty/lib/windowsConoutConnection.js +6 -6
  62. package/node_modules/node-pty/lib/windowsPtyAgent.js +35 -10
  63. package/node_modules/node-pty/lib/windowsTerminal.js +10 -2
  64. package/node_modules/node-pty/lib/worker/conoutSocketWorker.js +3 -3
  65. package/node_modules/node-pty/package.json +6 -5
  66. package/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  67. package/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  68. package/package.json +2 -2
  69. package/dist/ui/_next/static/chunks/0dc6cf26b91a20e8.js +0 -21
  70. package/dist/ui/_next/static/chunks/6134ca0517400811.js +0 -19
  71. package/dist/ui/_next/static/chunks/87951526e3ed5f5e.css +0 -1
  72. package/dist/ui/_next/static/chunks/c859d4f64b6b2057.js +0 -979
  73. package/dist/ui/_next/static/chunks/eaaacb70148ac267.js +0 -29
  74. package/dist/ui/_next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
  75. package/dist/ui/_next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
  76. package/dist/ui/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
  77. package/dist/ui/_next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
  78. package/dist/ui/_next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
  79. package/dist/ui/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
  80. package/dist/ui/_next/static/media/favicon.0b3bf435.ico +0 -0
  81. package/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  82. /package/dist/ui/_next/static/{X7XLphuDX-NShtX9FqfE6 → m1av2cpR6dc5u0uXtkk77}/_buildManifest.js +0 -0
  83. /package/dist/ui/_next/static/{X7XLphuDX-NShtX9FqfE6 → m1av2cpR6dc5u0uXtkk77}/_clientMiddlewareManifest.json +0 -0
  84. /package/dist/ui/_next/static/{X7XLphuDX-NShtX9FqfE6 → m1av2cpR6dc5u0uXtkk77}/_ssgManifest.js +0 -0
@@ -0,0 +1,1182 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,573751,e=>{"use strict";var a=e.i(813443),r=e.i(629109),s=e.i(247755),n=e.i(642098),i=e.i(943445),l=e.i(553154),d=e.i(165512),o=e.i(423917),t=e.i(331053),c=e.i(710307),p=e.i(454267),x=e.i(183663);let v="npm install -g vibedeckx";function m({onSignIn:e}){let[s,n]=(0,r.useState)(!1);return(0,a.jsxs)("div",{className:"vdx-lp",children:[(0,a.jsx)("style",{children:h}),(0,a.jsx)("header",{className:"nav",children:(0,a.jsxs)("div",{className:"wrap nav-inner",children:[(0,a.jsxs)("a",{href:"#",className:"brand",onClick:e=>e.preventDefault(),children:[(0,a.jsx)(x.Logo,{size:24}),(0,a.jsx)("span",{children:"vibedeckx"})]}),(0,a.jsxs)("nav",{className:"nav-links",children:[(0,a.jsx)("a",{href:"#commander",children:"Commander"}),(0,a.jsx)("a",{href:"#features",children:"Features"}),(0,a.jsx)("a",{href:"#how",children:"How it works"}),(0,a.jsx)("a",{href:"https://github.com/vibedeckx-dev/vibedeckx",target:"_blank",rel:"noopener noreferrer",children:"Source"}),(0,a.jsx)("a",{href:"https://github.com/vibedeckx-dev/vibedeckx/releases",target:"_blank",rel:"noopener noreferrer",children:"Changelog"})]}),(0,a.jsxs)("div",{className:"nav-right",children:[(0,a.jsx)("button",{onClick:e,className:"btn btn-ghost",children:"Sign in"}),(0,a.jsxs)("button",{onClick:e,className:"btn btn-primary",children:["Open cockpit",(0,a.jsx)("span",{className:"kbd",children:"⏎"})]})]})]})}),(0,a.jsxs)("section",{className:"hero",children:[(0,a.jsxs)("div",{className:"wrap hero-inner",children:[(0,a.jsxs)("span",{className:"eyebrow",children:[(0,a.jsx)("span",{className:"dot"}),"v0.1.6 · now cloud-hosted · mobile app coming"]}),(0,a.jsxs)("h1",{children:["Mission control for your ",(0,a.jsx)("em",{children:"coding agents."})]}),(0,a.jsx)("p",{className:"lede",children:"Run a fleet of AI coding agents — Claude Code, Codex, your own — that write, test, and ship code for you. Vibedeckx is the cockpit you command them all from: every agent in its own workspace, live status at a glance, and a ping the moment one’s done."}),(0,a.jsxs)("div",{className:"hero-cta",children:[(0,a.jsx)("button",{onClick:e,className:"btn btn-primary btn-lg",children:"Enter the cockpit"}),(0,a.jsx)("a",{href:"#how",className:"btn btn-lg",children:"See it in action"})]}),(0,a.jsxs)("div",{className:"install",children:[(0,a.jsx)("span",{className:"dollar",children:"$"}),(0,a.jsx)("span",{children:v}),(0,a.jsx)("button",{className:"copy","aria-label":"Copy",onClick:()=>{navigator.clipboard.writeText(v),n(!0),setTimeout(()=>n(!1),1600)},children:s?(0,a.jsx)(p.Check,{width:13,height:13}):(0,a.jsx)(c.Copy,{width:13,height:13})})]})]}),(0,a.jsxs)("div",{className:"wrap preview-wrap",children:[(0,a.jsxs)("div",{className:"preview-frame",children:[(0,a.jsxs)("div",{className:"preview-chrome",children:[(0,a.jsxs)("div",{className:"traffic",children:[(0,a.jsx)("span",{})," ",(0,a.jsx)("span",{})," ",(0,a.jsx)("span",{})]}),(0,a.jsxs)("div",{className:"preview-url",children:[(0,a.jsxs)("svg",{className:"lock",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.4",children:[(0,a.jsx)("rect",{x:"3.5",y:"7.5",width:"9",height:"6",rx:"1"}),(0,a.jsx)("path",{d:"M5.5 7.5V5a2.5 2.5 0 0 1 5 0v2.5"})]}),"vibedeckx.local"]}),(0,a.jsx)("div",{style:{width:36}})]}),(0,a.jsxs)("div",{className:"mini-app",children:[(0,a.jsxs)("div",{className:"mini-topbar",children:[(0,a.jsx)("span",{className:"brand",children:(0,a.jsx)(x.Logo,{size:20,live:!1,stripes:"off"})}),(0,a.jsxs)("span",{className:"crumb",children:[(0,a.jsx)("b",{children:"orchestrator-core"})," ·"," ",(0,a.jsx)("span",{className:"mono",style:{color:"var(--vdx-accent)"},children:"feat/parallel-streams"})]}),(0,a.jsx)("div",{className:"right",children:(0,a.jsxs)("div",{className:"mini-search",children:[(0,a.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.4",children:[(0,a.jsx)("circle",{cx:"7",cy:"7",r:"4.5"}),(0,a.jsx)("path",{d:"m13 13-2.5-2.5"})]}),(0,a.jsx)("span",{children:"Search…"}),(0,a.jsx)("span",{className:"kbd",children:"⌘K"})]})})]}),(0,a.jsxs)("div",{className:"mini-sidebar",children:[(0,a.jsx)("div",{className:"mini-section-label",children:"Workspace"}),(0,a.jsxs)("div",{className:"mini-nav-item active",children:[(0,a.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[(0,a.jsx)("rect",{x:"2",y:"2",width:"5",height:"5",rx:"1"}),(0,a.jsx)("rect",{x:"9",y:"2",width:"5",height:"5",rx:"1"}),(0,a.jsx)("rect",{x:"2",y:"9",width:"5",height:"5",rx:"1"}),(0,a.jsx)("rect",{x:"9",y:"9",width:"5",height:"5",rx:"1"})]}),"Sessions ",(0,a.jsx)("span",{className:"count",children:"6"})]}),(0,a.jsxs)("div",{className:"mini-nav-item",children:[(0,a.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:(0,a.jsx)("path",{d:"M2 4h12M2 8h12M2 12h8"})}),"Tasks ",(0,a.jsx)("span",{className:"count",children:"11"})]}),(0,a.jsxs)("div",{className:"mini-nav-item",children:[(0,a.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[(0,a.jsx)("rect",{x:"2",y:"3",width:"12",height:"10",rx:"1.5"}),(0,a.jsx)("path",{d:"M2 6h12"})]}),"Files"]}),(0,a.jsx)("div",{className:"mini-section-label",style:{marginTop:10},children:"Branches"}),(0,a.jsx)("div",{className:"tree-project",children:"▾ orchestrator-core"}),(0,a.jsxs)("div",{className:"branch-row active",children:[(0,a.jsx)("span",{className:"bdot green"}),"feat/parallel-streams"]}),(0,a.jsxs)("div",{className:"branch-row",children:[(0,a.jsx)("span",{className:"bdot"}),"chore/upgrade-vercel-ai-sdk"]}),(0,a.jsx)("div",{className:"tree-project",children:"▾ web-ui"}),(0,a.jsxs)("div",{className:"branch-row",children:[(0,a.jsx)("span",{className:"bdot amber"}),"fix/diff-virtualization"]}),(0,a.jsxs)("div",{className:"branch-row",children:[(0,a.jsx)("span",{className:"bdot"}),"feat/command-palette"]}),(0,a.jsx)("div",{className:"tree-project",children:"▾ edge-runner"}),(0,a.jsxs)("div",{className:"branch-row",children:[(0,a.jsx)("span",{className:"bdot green"}),"main"]})]}),(0,a.jsxs)("div",{className:"mini-main",children:[(0,a.jsxs)("div",{className:"mini-page-head",children:[(0,a.jsxs)("h2",{children:["Sessions ",(0,a.jsx)("span",{className:"count",children:"6 active"})]}),(0,a.jsx)("button",{className:"btn",style:{padding:"4px 10px",fontSize:"11.5px"},children:"+ New session"})]}),(0,a.jsxs)("div",{className:"mini-filter",children:[(0,a.jsxs)("span",{className:"mini-chip active",children:["All ",(0,a.jsx)("span",{className:"count",children:"6"})]}),(0,a.jsxs)("span",{className:"mini-chip",children:["Working ",(0,a.jsx)("span",{className:"count",children:"2"})]}),(0,a.jsxs)("span",{className:"mini-chip",children:["Review ",(0,a.jsx)("span",{className:"count",children:"1"})]}),(0,a.jsxs)("span",{className:"mini-chip",children:["Done ",(0,a.jsx)("span",{className:"count",children:"1"})]}),(0,a.jsxs)("span",{className:"mini-chip",children:["Failed ",(0,a.jsx)("span",{className:"count",children:"1"})]})]}),(0,a.jsxs)("div",{className:"mini-grid",children:[(0,a.jsxs)("div",{className:"mini-card working",children:[(0,a.jsxs)("div",{className:"mini-card-head",children:[(0,a.jsx)("span",{className:"bdot green"}),(0,a.jsxs)("div",{className:"meta",children:[(0,a.jsx)("span",{className:"project",children:"orchestrator-core"}),(0,a.jsx)("span",{className:"branch",children:"feat/parallel-streams"})]}),(0,a.jsx)("span",{className:"mini-host",children:"local"})]}),(0,a.jsxs)("div",{className:"mini-card-body",children:[(0,a.jsx)("div",{className:"mini-task",children:"Refactor session multiplexer — per-stream write locks to stop torn JSON."}),(0,a.jsxs)("div",{className:"mini-tools",children:[(0,a.jsx)("span",{className:"mini-tool",children:"edit multiplex.ts"}),(0,a.jsx)("span",{className:"mini-tool",children:"pnpm test"})]})]}),(0,a.jsxs)("div",{className:"mini-card-foot",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"add",children:"+124"})," ",(0,a.jsx)("span",{className:"del",children:"−37"})]}),(0,a.jsx)("span",{className:"grow"}),(0,a.jsx)("span",{children:"12m 04s"})]})]}),(0,a.jsxs)("div",{className:"mini-card review",children:[(0,a.jsxs)("div",{className:"mini-card-head",children:[(0,a.jsx)("span",{className:"bdot amber"}),(0,a.jsxs)("div",{className:"meta",children:[(0,a.jsx)("span",{className:"project",children:"web-ui"}),(0,a.jsx)("span",{className:"branch",children:"fix/diff-virtualization"})]}),(0,a.jsx)("span",{className:"mini-host",children:"local"})]}),(0,a.jsxs)("div",{className:"mini-card-body",children:[(0,a.jsx)("div",{className:"mini-task",children:"Virtualize diff rows so scroll anchors on the line under the cursor."}),(0,a.jsxs)("div",{className:"mini-tools",children:[(0,a.jsx)("span",{className:"mini-tool",children:"edit useDiffRows.ts"}),(0,a.jsx)("span",{className:"mini-tool",children:"rm -rf …"})]})]}),(0,a.jsxs)("div",{className:"mini-card-foot",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"add",children:"+88"})," ",(0,a.jsx)("span",{className:"del",children:"−14"})]}),(0,a.jsx)("span",{className:"grow"}),(0,a.jsx)("span",{children:"Approval ↑"})]})]}),(0,a.jsxs)("div",{className:"mini-card working",children:[(0,a.jsxs)("div",{className:"mini-card-head",children:[(0,a.jsx)("span",{className:"bdot green"}),(0,a.jsxs)("div",{className:"meta",children:[(0,a.jsx)("span",{className:"project",children:"edge-runner"}),(0,a.jsx)("span",{className:"branch",children:"main"})]}),(0,a.jsx)("span",{className:"mini-host",children:"gpu-01"})]}),(0,a.jsxs)("div",{className:"mini-card-body",children:[(0,a.jsx)("div",{className:"mini-task",children:"Reproduce CUDA OOM at batch=16 and downshift to batch=8 instead of crashing."}),(0,a.jsx)("div",{className:"mini-tools",children:(0,a.jsx)("span",{className:"mini-tool",children:"bash bench.long_ctx"})})]}),(0,a.jsxs)("div",{className:"mini-card-foot",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"add",children:"+0"})," ",(0,a.jsx)("span",{className:"del",children:"−0"})]}),(0,a.jsx)("span",{className:"grow"}),(0,a.jsx)("span",{children:"38m 12s"})]})]})]})]})]})]}),(0,a.jsxs)("div",{className:"annot a1",children:[(0,a.jsx)("span",{className:"badge",children:"01"})," Live status at a glance"]}),(0,a.jsxs)("div",{className:"annot a2",children:[(0,a.jsx)("span",{className:"badge",children:"02"})," Live tool calls, streamed"]}),(0,a.jsxs)("div",{className:"annot a3",children:[(0,a.jsx)("span",{className:"badge",children:"03"})," Diff-first review · approve to merge"]})]})]}),(0,a.jsx)("section",{id:"commander",className:"commander",children:(0,a.jsxs)("div",{className:"wrap",children:[(0,a.jsxs)("div",{className:"section-head",children:[(0,a.jsx)("span",{className:"kicker",children:"The commander"}),(0,a.jsxs)("h2",{children:["Set the goal. Approve the plan.",(0,a.jsx)("br",{}),(0,a.jsx)("em",{children:"It runs the rest."})]}),(0,a.jsx)("p",{children:"Main Chat isn’t just another agent — it’s the commander. Hand it a goal and it breaks the work into a plan you approve, then dispatches and drives a fleet of agents to carry it out — looping you in only when a call is yours to make."})]}),(0,a.jsxs)("div",{className:"cmd-deck",children:[(0,a.jsxs)("div",{className:"cmd-deck-head",children:[(0,a.jsx)(x.Logo,{size:16,live:!1,stripes:"off"}),(0,a.jsxs)("span",{children:["main chat · ",(0,a.jsx)("span",{className:"star",children:"commander"})]}),(0,a.jsxs)("span",{className:"right",children:[(0,a.jsx)("span",{className:"bdot green"})," plan approved · running"]})]}),(0,a.jsxs)("div",{className:"cmd-body",children:[(0,a.jsxs)("div",{className:"cmd-goal",children:[(0,a.jsx)("span",{className:"who",children:"YOU"}),(0,a.jsxs)("span",{className:"msg",children:["Ship ",(0,a.jsx)("b",{children:"dark mode"})," across the web app — theme tokens, every component, and a settings toggle that persists."]})]}),(0,a.jsxs)("div",{className:"cmd-plan",children:[(0,a.jsxs)("div",{className:"cmd-plan-head",children:[(0,a.jsx)("span",{children:"Mission plan"}),(0,a.jsx)("span",{className:"count",children:"5 steps · 3 agents"})]}),(0,a.jsxs)("div",{className:"cmd-step done",children:[(0,a.jsx)("span",{className:"ck",children:"✓"}),(0,a.jsx)("span",{className:"txt",children:"Audit styles & extract theme tokens"}),(0,a.jsx)("span",{className:"who-pill",children:"done"})]}),(0,a.jsxs)("div",{className:"cmd-step work",children:[(0,a.jsx)("span",{className:"ck"}),(0,a.jsx)("span",{className:"txt",children:"Refactor 18 components onto tokens"}),(0,a.jsx)("span",{className:"who-pill green",children:"web-ui · sonnet-4.5"})]}),(0,a.jsxs)("div",{className:"cmd-step work",children:[(0,a.jsx)("span",{className:"ck"}),(0,a.jsx)("span",{className:"txt",children:"Wire the settings toggle + persistence"}),(0,a.jsx)("span",{className:"who-pill green",children:"web-ui · codex-1"})]}),(0,a.jsxs)("div",{className:"cmd-step ask",children:[(0,a.jsx)("span",{className:"ck",children:"!"}),(0,a.jsxs)("div",{className:"txt",children:["Drop legacy ",(0,a.jsx)("code",{children:"theme.css"})," ",(0,a.jsx)("span",{className:"del",children:"−420"}),(0,a.jsxs)("div",{className:"ask-row",children:[(0,a.jsx)("span",{className:"ask-label",children:"Destructive — your call"}),(0,a.jsx)("button",{className:"btn cmd-approve",children:"Approve"}),(0,a.jsx)("button",{className:"btn cmd-deny",children:"Deny"})]})]})]}),(0,a.jsxs)("div",{className:"cmd-step queued",children:[(0,a.jsx)("span",{className:"ck"}),(0,a.jsx)("span",{className:"txt",children:"Visual-regression sweep across breakpoints"}),(0,a.jsx)("span",{className:"who-pill",children:"queued"})]})]})]})]}),(0,a.jsxs)("div",{className:"cmd-promises",children:[(0,a.jsxs)("div",{className:"cmd-promise",children:[(0,a.jsx)("span",{className:"n",children:"01"}),(0,a.jsx)("h4",{children:"Set the goal. Approve the plan."}),(0,a.jsx)("p",{children:"Describe the outcome. The commander decomposes it into a plan you can see and sign off on — never a black box."})]}),(0,a.jsxs)("div",{className:"cmd-promise",children:[(0,a.jsx)("span",{className:"n",children:"02"}),(0,a.jsx)("h4",{children:"From one agent to a whole team."}),(0,a.jsx)("p",{children:"It dispatches and drives a fleet of agents in parallel — each in its own workspace — and keeps them on track."})]}),(0,a.jsxs)("div",{className:"cmd-promise",children:[(0,a.jsx)("span",{className:"n",children:"03"}),(0,a.jsx)("h4",{children:"It only interrupts you when it matters."}),(0,a.jsx)("p",{children:"It runs on its own and surfaces just the decisions that are yours — an approval, a failure, a fork in the road."})]})]})]})}),(0,a.jsx)("section",{id:"features",className:"features",children:(0,a.jsxs)("div",{className:"wrap",children:[(0,a.jsxs)("div",{className:"section-head",children:[(0,a.jsx)("span",{className:"kicker",children:"Built for the way agents actually work"}),(0,a.jsx)("h2",{children:"Mission control for a fleet of agents."}),(0,a.jsx)("p",{children:"Stop tab-juggling a dozen terminal windows. Vibedeckx gives every agent a named workspace, its own model, and one dashboard to see, steer, and ship them all."})]}),(0,a.jsxs)("div",{className:"feature-grid",children:[(0,a.jsxs)("div",{className:"feature f-wide",children:[(0,a.jsx)("span",{className:"kicker",children:"At a glance"}),(0,a.jsx)("h3",{children:"Know what every agent is doing — at a glance."}),(0,a.jsx)("p",{children:"Every agent runs in its own named workspace with a live status you can read in a second: working, waiting on you, done, or failed. No more squinting at four cramped windows trying to remember which is which."}),(0,a.jsxs)("div",{className:"branch-graph",children:[(0,a.jsxs)("div",{className:"bg-row",children:[(0,a.jsx)("span",{className:"gutter",children:"●"}),(0,a.jsx)("span",{className:"label",children:"main"}),(0,a.jsx)("span",{className:"pill",children:"protected"})]}),(0,a.jsxs)("div",{className:"bg-row",children:[(0,a.jsx)("span",{className:"gutter",children:"├╴●"}),(0,a.jsx)("span",{className:"label",children:"feat/parallel-streams"}),(0,a.jsx)("span",{className:"pill green",children:"working · sonnet-4.5"})]}),(0,a.jsxs)("div",{className:"bg-row",children:[(0,a.jsx)("span",{className:"gutter",children:"├╴●"}),(0,a.jsx)("span",{className:"label",children:"fix/diff-virtualization"}),(0,a.jsx)("span",{className:"pill amber",children:"review · codex-1"})]}),(0,a.jsxs)("div",{className:"bg-row",children:[(0,a.jsx)("span",{className:"gutter",children:"├╴●"}),(0,a.jsx)("span",{className:"label",children:"feat/command-palette"}),(0,a.jsx)("span",{className:"pill",children:"idle · sonnet-4.5"})]}),(0,a.jsxs)("div",{className:"bg-row",children:[(0,a.jsx)("span",{className:"gutter",children:"└╴●"}),(0,a.jsx)("span",{className:"label",children:"chore/upgrade-vercel-ai-sdk"}),(0,a.jsx)("span",{className:"pill accent",children:"pushed"})]})]})]}),(0,a.jsxs)("div",{className:"feature f-third",children:[(0,a.jsx)("span",{className:"kicker",children:"Live"}),(0,a.jsx)("h3",{children:"Stream every tool call."}),(0,a.jsx)("p",{children:"Tail an agent's terminal, reads, writes, and grep results without leaving the dashboard."}),(0,a.jsxs)("div",{className:"term",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"p",children:"~/orchestrator-core"})," ",(0,a.jsx)("span",{className:"o",children:"(feat/parallel-streams)"})]}),(0,a.jsx)("div",{children:(0,a.jsx)("span",{className:"o",children:"$ pnpm test multiplex"})}),(0,a.jsx)("div",{className:"ok",children:"✓ interleaves two streams (124ms)"}),(0,a.jsx)("div",{className:"ok",children:"✓ holds per-stream order (88ms)"}),(0,a.jsx)("div",{className:"o",children:"Tests: 24 passed"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"p",children:"$"})," ",(0,a.jsx)("span",{className:"cursor",children:"▌"})]})]})]}),(0,a.jsxs)("div",{className:"feature f-half",children:[(0,a.jsx)("span",{className:"kicker",children:"Diff-first review"}),(0,a.jsx)("h3",{children:"Approve at the line, not the PR."}),(0,a.jsx)("p",{children:"Inspect every hunk in a real diff viewer with syntax highlighting and line-by-line accept/reject. Merge only what you trust."}),(0,a.jsxs)("div",{className:"diff",children:[(0,a.jsxs)("div",{className:"diff-head",children:[(0,a.jsx)("span",{children:"multiplex.ts"}),(0,a.jsx)("span",{className:"add",children:"+12"}),(0,a.jsx)("span",{className:"del",children:"−4"})]}),(0,a.jsxs)("div",{className:"diff-row",children:[(0,a.jsx)("span",{className:"ln",children:"88"}),(0,a.jsx)("span",{className:"code",children:" write(streamId, chunk) {"})]}),(0,a.jsxs)("div",{className:"diff-row del",children:[(0,a.jsx)("span",{className:"ln",children:"89"}),(0,a.jsx)("span",{className:"code",children:" const lock = WriteLock.shared()"})]}),(0,a.jsxs)("div",{className:"diff-row add",children:[(0,a.jsx)("span",{className:"ln",children:"89"}),(0,a.jsx)("span",{className:"code",children:" // Per-stream lock prevents torn JSON"})]}),(0,a.jsxs)("div",{className:"diff-row add",children:[(0,a.jsx)("span",{className:"ln",children:"90"}),(0,a.jsx)("span",{className:"code",children:" const lock = WriteLock.perStream(id)"})]}),(0,a.jsxs)("div",{className:"diff-row",children:[(0,a.jsx)("span",{className:"ln",children:"91"}),(0,a.jsx)("span",{className:"code",children:" lock.acquire()"})]})]})]}),(0,a.jsxs)("div",{className:"feature f-half",children:[(0,a.jsx)("span",{className:"kicker",children:"Human-in-the-loop"}),(0,a.jsx)("h3",{children:"Approval gates for the scary stuff."}),(0,a.jsxs)("p",{children:["Mark commands as ",(0,a.jsx)("span",{className:"mono",children:"requires-approval"})," per project. The agent pauses, surfaces what it wants to run, and waits for your tap."]}),(0,a.jsxs)("div",{className:"approval",children:[(0,a.jsxs)("div",{className:"h",children:[(0,a.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.6",children:[(0,a.jsx)("path",{d:"M8 1.5 14.5 13.5h-13z"}),(0,a.jsx)("path",{d:"M8 6v3.5"}),(0,a.jsx)("circle",{cx:"8",cy:"11.5",r:"0.6",fill:"currentColor"})]}),"Approval required"]}),"web-ui · codex-1 wants to run"," ",(0,a.jsx)("code",{children:"rm -rf node_modules/.cache"}),(0,a.jsxs)("div",{className:"acts",children:[(0,a.jsx)("button",{className:"btn",style:{padding:"4px 10px",fontSize:"11.5px",background:"var(--vdx-fg)",color:"var(--vdx-bg)",borderColor:"var(--vdx-fg)"},children:"Approve"}),(0,a.jsx)("button",{className:"btn btn-deny",children:"Deny"})]})]})]}),(0,a.jsxs)("div",{className:"feature f-third",children:[(0,a.jsx)("span",{className:"kicker",children:"Model agnostic"}),(0,a.jsx)("h3",{children:"Use the right model per branch."}),(0,a.jsx)("p",{children:"Claude for refactors, Codex for tight loops, your own model over OpenAI-compat."}),(0,a.jsxs)("div",{className:"models",children:[(0,a.jsxs)("div",{className:"model-row active",children:[(0,a.jsx)("span",{className:"mark",children:"CL"}),(0,a.jsx)("span",{className:"name",children:"claude-sonnet-4.5"}),(0,a.jsx)("span",{className:"desc",children:"200K · $3/M"})]}),(0,a.jsxs)("div",{className:"model-row",children:[(0,a.jsx)("span",{className:"mark",children:"CX"}),(0,a.jsx)("span",{className:"name",children:"codex-1"}),(0,a.jsx)("span",{className:"desc",children:"128K · $2/M"})]}),(0,a.jsxs)("div",{className:"model-row",children:[(0,a.jsx)("span",{className:"mark",children:"LL"}),(0,a.jsx)("span",{className:"name",children:"llama-3.3-70b"}),(0,a.jsx)("span",{className:"desc",children:"local · ollama"})]})]})]}),(0,a.jsxs)("div",{className:"feature f-third",children:[(0,a.jsx)("span",{className:"kicker",children:"Cross-environment"}),(0,a.jsx)("h3",{children:"Edit here, test there."}),(0,a.jsx)("p",{children:"Wire up as many run environments as you like and route work between them — build on one, run the suite on your GPU box, deploy from a third."}),(0,a.jsxs)("div",{className:"branch-graph",children:[(0,a.jsxs)("div",{className:"bg-row",children:[(0,a.jsx)("span",{className:"gutter",children:"▣"}),(0,a.jsx)("span",{className:"label",children:"local"}),(0,a.jsx)("span",{className:"pill green",children:"4 sessions"})]}),(0,a.jsxs)("div",{className:"bg-row",children:[(0,a.jsx)("span",{className:"gutter",children:"▣"}),(0,a.jsx)("span",{className:"label",children:"gpu-01"}),(0,a.jsx)("span",{className:"pill green",children:"1 session"})]}),(0,a.jsxs)("div",{className:"bg-row",children:[(0,a.jsx)("span",{className:"gutter",children:"▣"}),(0,a.jsx)("span",{className:"label",children:"vps-fr-3"}),(0,a.jsx)("span",{className:"pill",children:"idle"})]})]})]}),(0,a.jsxs)("div",{className:"feature f-third",children:[(0,a.jsx)("span",{className:"kicker",children:"Alerts"}),(0,a.jsx)("h3",{children:"Get pinged when it’s done."}),(0,a.jsx)("p",{children:"Stop babysitting the dashboard. Vibedeckx notifies you the moment an agent finishes, needs approval, or fails — on the web now, your phone soon."}),(0,a.jsxs)("div",{className:"branch-graph",children:[(0,a.jsxs)("div",{className:"bg-row",children:[(0,a.jsx)("span",{className:"gutter",children:"✓"}),(0,a.jsx)("span",{className:"label",children:"feat/parallel-streams"}),(0,a.jsx)("span",{className:"pill green",children:"done"})]}),(0,a.jsxs)("div",{className:"bg-row",children:[(0,a.jsx)("span",{className:"gutter",children:"!"}),(0,a.jsx)("span",{className:"label",children:"fix/diff-virtualization"}),(0,a.jsx)("span",{className:"pill amber",children:"needs approval"})]}),(0,a.jsxs)("div",{className:"bg-row",children:[(0,a.jsx)("span",{className:"gutter",children:"✕"}),(0,a.jsx)("span",{className:"label",children:"edge-runner/main"}),(0,a.jsx)("span",{className:"pill rose",children:"failed"})]}),(0,a.jsxs)("div",{className:"bg-row",style:{borderTop:"1px dashed var(--vdx-line)",paddingTop:6,marginTop:4},children:[(0,a.jsx)("span",{className:"gutter",children:"♪"}),(0,a.jsx)("span",{className:"label",children:"today"}),(0,a.jsx)("span",{className:"pill accent",children:"3 alerts"})]})]})]})]})]})}),(0,a.jsx)("section",{id:"how",className:"steps",children:(0,a.jsxs)("div",{className:"wrap",children:[(0,a.jsxs)("div",{className:"section-head",children:[(0,a.jsx)("span",{className:"kicker",children:"How it works"}),(0,a.jsx)("h2",{children:"Sign in. Spin up a fleet. Stay on top."})]}),(0,a.jsxs)("div",{className:"steps-grid",children:[(0,a.jsxs)("div",{className:"step",children:[(0,a.jsx)("div",{className:"num",children:"STEP 01"}),(0,a.jsx)("h4",{children:"Connect your repos."}),(0,a.jsx)("p",{children:"Sign in from any device and point Vibedeckx at your repos and run environments — local, a GPU box, a remote VPS. Each agent works in its own isolated worktree."}),(0,a.jsxs)("div",{className:"stub",children:[(0,a.jsx)("span",{className:"dollar",children:"$"})," vibedeckx add ~/code/orchestrator-core"]})]}),(0,a.jsxs)("div",{className:"step",children:[(0,a.jsx)("div",{className:"num",children:"STEP 02"}),(0,a.jsx)("h4",{children:"Spawn a fleet."}),(0,a.jsx)("p",{children:"Open a workspace per task, pick a model, and hit go. Agents run in parallel and in isolation — install dependencies, run tests, mutate the lockfile freely."}),(0,a.jsxs)("div",{className:"stub",children:[(0,a.jsx)("span",{className:"dollar",children:"$"})," vibedeckx run feat/parallel-streams --model sonnet-4.5"]})]}),(0,a.jsxs)("div",{className:"step",children:[(0,a.jsx)("div",{className:"num",children:"STEP 03"}),(0,a.jsx)("h4",{children:"Stay on top & ship."}),(0,a.jsx)("p",{children:"Watch live status, get pinged the moment an agent finishes, then review the diff, approve, and push. Rejected hunks roll back without a stash."}),(0,a.jsxs)("div",{className:"stub",children:[(0,a.jsx)("span",{className:"dollar",children:"$"})," vibedeckx review ·"," ",(0,a.jsx)("span",{style:{color:"var(--vdx-green)"},children:"accept"})," 12 hunks · push"]})]})]})]})}),(0,a.jsx)("section",{className:"faq",children:(0,a.jsxs)("div",{className:"wrap",children:[(0,a.jsxs)("div",{className:"section-head",children:[(0,a.jsx)("span",{className:"kicker",children:"FAQ"}),(0,a.jsx)("h2",{children:"The honest answers."})]}),(0,a.jsxs)("div",{className:"faq-list",children:[(0,a.jsxs)("details",{className:"faq-item",open:!0,children:[(0,a.jsx)("summary",{children:"Cloud-hosted or self-hosted?"}),(0,a.jsx)("div",{className:"body",children:"Both. Vibedeckx runs as a hosted service so you can sign in and command your agents from any device — or self-host it on your own machines if you'd rather keep everything in-house. Either way, model traffic goes straight to your chosen provider with your own keys."})]}),(0,a.jsxs)("details",{className:"faq-item",children:[(0,a.jsx)("summary",{children:"Which models are supported?"}),(0,a.jsxs)("div",{className:"body",children:["Anthropic (Claude 3.5/4/4.5), OpenAI (Codex, GPT-4 family), any OpenAI-compatible endpoint, and local ",(0,a.jsx)("code",{children:"llama.cpp"})," /"," ",(0,a.jsx)("code",{children:"ollama"}),". Switch per session."]})]}),(0,a.jsxs)("details",{className:"faq-item",children:[(0,a.jsx)("summary",{children:"How are worktrees isolated?"}),(0,a.jsxs)("div",{className:"body",children:["We use git's native worktree feature to check each branch out into"," ",(0,a.jsx)("code",{children:"~/.vibedeckx/work/<project>/<branch>"}),". Agents only see their own copy — their ",(0,a.jsx)("code",{children:"node_modules"}),", their venv, their build artifacts. Nothing leaks back to your editor's checkout."]})]}),(0,a.jsxs)("details",{className:"faq-item",children:[(0,a.jsx)("summary",{children:"What about approval policies?"}),(0,a.jsxs)("div",{className:"body",children:["Per-project rules in ",(0,a.jsx)("code",{children:".vibedeckx/policy.yaml"}),". Match commands by regex, declare what auto-approves, what asks, what's banned. Defaults block ",(0,a.jsx)("code",{children:"rm -rf"}),", force pushes, and anything outside the worktree."]})]}),(0,a.jsxs)("details",{className:"faq-item",children:[(0,a.jsx)("summary",{children:"Linux? Windows? Mobile?"}),(0,a.jsxs)("div",{className:"body",children:["Use the hosted app from any modern browser. To self-host, macOS and Linux today via ",(0,a.jsx)("code",{children:"npm install -g vibedeckx"}),"; Windows via WSL works but isn't officially supported yet. A native mobile app is on the way."]})]})]})]})}),(0,a.jsx)("section",{className:"wrap",children:(0,a.jsxs)("div",{className:"cta-banner",children:[(0,a.jsxs)("h2",{children:["Stop juggling tabs. ",(0,a.jsx)("em",{children:"Take command."})]}),(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("button",{onClick:e,className:"btn btn-lg btn-light",children:"Enter the cockpit"}),(0,a.jsx)("a",{href:"https://github.com/vibedeckx-dev/vibedeckx",target:"_blank",rel:"noopener noreferrer",className:"btn btn-lg btn-dark",children:"Read the docs"})]})]})}),(0,a.jsx)("footer",{children:(0,a.jsxs)("div",{className:"wrap",children:[(0,a.jsxs)("div",{className:"foot-grid",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("a",{href:"#",className:"brand",onClick:e=>e.preventDefault(),style:{marginBottom:12},children:[(0,a.jsx)(x.Logo,{size:24}),(0,a.jsx)("span",{children:"vibedeckx"})]}),(0,a.jsx)("div",{className:"foot-brand",style:{marginTop:10},children:"Mission control for your coding agents."})]}),(0,a.jsxs)("div",{className:"foot-col",children:[(0,a.jsx)("h5",{children:"Product"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)("button",{onClick:e,children:"Download"})}),(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:"https://github.com/vibedeckx-dev/vibedeckx/releases",target:"_blank",rel:"noopener noreferrer",children:"Changelog"})}),(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:"#features",children:"Features"})})]})]}),(0,a.jsxs)("div",{className:"foot-col",children:[(0,a.jsx)("h5",{children:"Developers"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:"https://github.com/vibedeckx-dev/vibedeckx",target:"_blank",rel:"noopener noreferrer",children:"Source"})}),(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:"https://github.com/vibedeckx-dev/vibedeckx#readme",target:"_blank",rel:"noopener noreferrer",children:"Docs"})}),(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:"#how",children:"CLI reference"})}),(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:"#features",children:"Policy DSL"})})]})]}),(0,a.jsxs)("div",{className:"foot-col",children:[(0,a.jsx)("h5",{children:"Company"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:"#",children:"About"})}),(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:"#",children:"Blog"})}),(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:"mailto:hello@vibedeckx.dev",children:"Contact"})})]})]}),(0,a.jsxs)("div",{className:"foot-col",children:[(0,a.jsx)("h5",{children:"Legal"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:"#",children:"Privacy"})}),(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:"#",children:"Terms"})}),(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:"#",children:"Security"})})]})]})]}),(0,a.jsxs)("div",{className:"foot-bottom",children:[(0,a.jsx)("span",{children:"© 2026 vibedeckx"}),(0,a.jsxs)("span",{className:"status",children:[(0,a.jsx)("span",{className:"sdot"}),"All systems normal · v0.1.6"]})]})]})})]})}let h=`
2
+ .vdx-lp {
3
+ /* Scoped design tokens — avoid clashing with the app shell */
4
+ --vdx-bg: oklch(0.99 0.003 250);
5
+ --vdx-bg-2: oklch(0.975 0.004 250);
6
+ --vdx-surface: oklch(1 0 0);
7
+ --vdx-surface-2: oklch(0.985 0.003 250);
8
+ --vdx-surface-hover: oklch(0.97 0.004 250);
9
+
10
+ --vdx-fg: oklch(0.18 0.014 260);
11
+ --vdx-fg-2: oklch(0.32 0.012 260);
12
+ --vdx-fg-muted: oklch(0.52 0.012 260);
13
+ --vdx-fg-subtle: oklch(0.66 0.010 260);
14
+
15
+ --vdx-line: oklch(0.92 0.005 260);
16
+ --vdx-line-2: oklch(0.945 0.004 260);
17
+ --vdx-line-strong: oklch(0.86 0.006 260);
18
+
19
+ --vdx-accent: oklch(0.52 0.18 268);
20
+ --vdx-accent-hover: oklch(0.46 0.19 268);
21
+ --vdx-accent-tint: oklch(0.96 0.025 268);
22
+ --vdx-accent-tint-2: oklch(0.93 0.04 268);
23
+
24
+ --vdx-green: oklch(0.62 0.14 152);
25
+ --vdx-green-tint: oklch(0.95 0.04 152);
26
+ --vdx-amber: oklch(0.72 0.14 75);
27
+ --vdx-amber-tint: oklch(0.96 0.05 80);
28
+ --vdx-rose: oklch(0.6 0.19 22);
29
+ --vdx-rose-tint: oklch(0.96 0.04 22);
30
+
31
+ --vdx-shadow-sm: 0 1px 2px oklch(0.2 0.02 260 / 0.04), 0 0 0 1px oklch(0.2 0.02 260 / 0.04);
32
+ --vdx-shadow-md: 0 4px 12px oklch(0.2 0.02 260 / 0.06), 0 1px 2px oklch(0.2 0.02 260 / 0.04);
33
+ --vdx-shadow-xl: 0 40px 80px -20px oklch(0.2 0.04 260 / 0.20), 0 12px 24px -8px oklch(0.2 0.02 260 / 0.08);
34
+
35
+ font-family: var(--font-inter), ui-sans-serif, system-ui, sans-serif;
36
+ font-feature-settings: 'cv11', 'ss01', 'ss03';
37
+ background: var(--vdx-bg);
38
+ color: var(--vdx-fg);
39
+ -webkit-font-smoothing: antialiased;
40
+ -moz-osx-font-smoothing: grayscale;
41
+ font-size: 14px;
42
+ line-height: 1.5;
43
+ letter-spacing: -0.005em;
44
+ min-height: 100vh;
45
+ }
46
+ .vdx-lp *, .vdx-lp *::before, .vdx-lp *::after { box-sizing: border-box; }
47
+ .vdx-lp a { color: inherit; text-decoration: none; }
48
+ .vdx-lp button {
49
+ font-family: inherit; cursor: pointer; border: none; background: none;
50
+ padding: 0; color: inherit;
51
+ }
52
+ .vdx-lp .mono {
53
+ font-family: var(--font-jetbrains-mono), ui-monospace, monospace;
54
+ font-feature-settings: 'ss01', 'cv02';
55
+ }
56
+
57
+ /* Layout */
58
+ .vdx-lp .wrap { max-width: 1200px; margin: 0 auto; padding: 0 28px; }
59
+ .vdx-lp section { position: relative; }
60
+
61
+ /* Nav */
62
+ .vdx-lp .nav {
63
+ position: sticky; top: 0; z-index: 50;
64
+ background: oklch(0.99 0.003 250 / 0.85);
65
+ backdrop-filter: saturate(160%) blur(10px);
66
+ -webkit-backdrop-filter: saturate(160%) blur(10px);
67
+ border-bottom: 1px solid var(--vdx-line);
68
+ }
69
+ .vdx-lp .nav-inner {
70
+ display: flex; align-items: center; gap: 28px;
71
+ height: 56px;
72
+ }
73
+ .vdx-lp .brand {
74
+ display: inline-flex; align-items: center; gap: 9px;
75
+ font-weight: 600; font-size: 14px; letter-spacing: -0.01em;
76
+ color: var(--vdx-fg);
77
+ }
78
+ .vdx-lp .brand-mark {
79
+ width: 24px; height: 24px;
80
+ border-radius: 6px;
81
+ background: var(--vdx-fg);
82
+ color: var(--vdx-bg);
83
+ display: grid; place-items: center;
84
+ font-family: var(--font-jetbrains-mono), monospace;
85
+ font-size: 11px;
86
+ font-weight: 700;
87
+ flex-shrink: 0;
88
+ }
89
+ .vdx-lp .brand-x { color: var(--vdx-accent); }
90
+ .vdx-lp .nav-links { display: flex; align-items: center; gap: 22px; margin-left: 12px; }
91
+ .vdx-lp .nav-links a {
92
+ font-size: 13px; color: var(--vdx-fg-2); font-weight: 450;
93
+ transition: color 0.15s;
94
+ }
95
+ .vdx-lp .nav-links a:hover { color: var(--vdx-fg); }
96
+ .vdx-lp .nav-right { margin-left: auto; display: flex; align-items: center; gap: 8px; }
97
+
98
+ .vdx-lp .btn {
99
+ display: inline-flex; align-items: center; gap: 6px;
100
+ padding: 6px 12px;
101
+ border: 1px solid var(--vdx-line);
102
+ border-radius: 7px;
103
+ background: var(--vdx-surface);
104
+ color: var(--vdx-fg-2);
105
+ font-size: 13px; font-weight: 500;
106
+ line-height: 1.4;
107
+ font-family: inherit;
108
+ transition: background 0.15s, border-color 0.15s, color 0.15s;
109
+ }
110
+ .vdx-lp .btn:hover { background: var(--vdx-surface-hover); border-color: var(--vdx-line-strong); color: var(--vdx-fg); }
111
+ .vdx-lp .btn-ghost { border-color: transparent; background: transparent; }
112
+ .vdx-lp .btn-ghost:hover { background: var(--vdx-surface-hover); border-color: transparent; }
113
+ .vdx-lp .btn-primary {
114
+ background: var(--vdx-fg); border-color: var(--vdx-fg); color: var(--vdx-bg);
115
+ }
116
+ .vdx-lp .btn-primary:hover {
117
+ background: oklch(0.28 0.014 260); border-color: oklch(0.28 0.014 260); color: var(--vdx-bg);
118
+ }
119
+ .vdx-lp .btn-lg { padding: 9px 16px; font-size: 13.5px; border-radius: 8px; }
120
+ .vdx-lp .btn .kbd { font-family: var(--font-jetbrains-mono), monospace; font-size: 10.5px; opacity: 0.7; }
121
+
122
+ .vdx-lp .kbd {
123
+ font-family: var(--font-jetbrains-mono), monospace;
124
+ font-size: 10.5px;
125
+ color: var(--vdx-fg-muted);
126
+ padding: 1px 5px;
127
+ border: 1px solid var(--vdx-line);
128
+ border-bottom-width: 2px;
129
+ border-radius: 4px;
130
+ background: var(--vdx-surface-2);
131
+ line-height: 1.4;
132
+ }
133
+
134
+ /* Eyebrow pill */
135
+ .vdx-lp .eyebrow {
136
+ display: inline-flex; align-items: center; gap: 8px;
137
+ padding: 3px 9px 3px 7px;
138
+ border: 1px solid var(--vdx-line);
139
+ border-radius: 999px;
140
+ font-family: var(--font-jetbrains-mono), monospace;
141
+ font-size: 11px;
142
+ color: var(--vdx-fg-2);
143
+ background: var(--vdx-surface);
144
+ box-shadow: var(--vdx-shadow-sm);
145
+ }
146
+ .vdx-lp .eyebrow .dot {
147
+ width: 6px; height: 6px; border-radius: 999px;
148
+ background: var(--vdx-green); position: relative;
149
+ }
150
+ .vdx-lp .eyebrow .dot::after {
151
+ content: ''; position: absolute; inset: -2px;
152
+ border-radius: 999px; background: var(--vdx-green); opacity: 0.45;
153
+ animation: vdx-pulse 1.8s ease-out infinite;
154
+ }
155
+ @keyframes vdx-pulse {
156
+ 0% { transform: scale(1); opacity: 0.45; }
157
+ 100% { transform: scale(2.4); opacity: 0; }
158
+ }
159
+
160
+ /* Hero */
161
+ .vdx-lp .hero { padding: 80px 0 28px; position: relative; overflow: hidden; }
162
+ .vdx-lp .hero::before {
163
+ content: '';
164
+ position: absolute; inset: 0;
165
+ background-image:
166
+ linear-gradient(to right, oklch(0.18 0.014 260 / 0.04) 1px, transparent 1px),
167
+ linear-gradient(to bottom, oklch(0.18 0.014 260 / 0.04) 1px, transparent 1px);
168
+ background-size: 56px 56px;
169
+ mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, black 30%, transparent 75%);
170
+ -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, black 30%, transparent 75%);
171
+ pointer-events: none;
172
+ }
173
+ .vdx-lp .hero-inner { position: relative; text-align: center; }
174
+ .vdx-lp .hero h1 {
175
+ font-size: clamp(40px, 6vw, 68px);
176
+ line-height: 1.02;
177
+ letter-spacing: -0.035em;
178
+ font-weight: 600;
179
+ margin: 18px auto 0;
180
+ max-width: 880px;
181
+ color: var(--vdx-fg);
182
+ text-wrap: balance;
183
+ }
184
+ .vdx-lp .hero h1 em {
185
+ font-style: normal;
186
+ font-family: var(--font-jetbrains-mono), monospace;
187
+ font-weight: 500;
188
+ font-size: 0.82em;
189
+ color: var(--vdx-accent);
190
+ letter-spacing: -0.02em;
191
+ background: var(--vdx-accent-tint);
192
+ padding: 0.05em 0.18em;
193
+ border-radius: 8px;
194
+ vertical-align: 0.04em;
195
+ }
196
+ .vdx-lp .hero p.lede {
197
+ font-size: 17px;
198
+ color: var(--vdx-fg-muted);
199
+ max-width: 600px;
200
+ margin: 20px auto 0;
201
+ text-wrap: pretty;
202
+ line-height: 1.55;
203
+ }
204
+ .vdx-lp .hero-cta { display: flex; justify-content: center; gap: 10px; margin-top: 28px; flex-wrap: wrap; }
205
+
206
+ .vdx-lp .install {
207
+ margin: 18px auto 0;
208
+ display: inline-flex; align-items: center; gap: 10px;
209
+ padding: 6px 10px 6px 12px;
210
+ border: 1px solid var(--vdx-line);
211
+ border-radius: 8px;
212
+ background: var(--vdx-surface);
213
+ font-family: var(--font-jetbrains-mono), monospace;
214
+ font-size: 12px;
215
+ color: var(--vdx-fg-2);
216
+ box-shadow: var(--vdx-shadow-sm);
217
+ }
218
+ .vdx-lp .install .dollar { color: var(--vdx-fg-subtle); }
219
+ .vdx-lp .install .copy {
220
+ width: 22px; height: 22px; border-radius: 5px;
221
+ display: grid; place-items: center;
222
+ color: var(--vdx-fg-muted);
223
+ transition: background 0.15s, color 0.15s;
224
+ }
225
+ .vdx-lp .install .copy:hover { background: var(--vdx-surface-hover); color: var(--vdx-fg); }
226
+
227
+ /* Product preview */
228
+ .vdx-lp .preview-wrap { margin-top: 56px; padding: 0 0 4px; position: relative; }
229
+ .vdx-lp .preview-frame {
230
+ max-width: 1180px;
231
+ margin: 0 auto;
232
+ border: 1px solid var(--vdx-line-strong);
233
+ border-radius: 14px;
234
+ background: var(--vdx-bg);
235
+ overflow: hidden;
236
+ box-shadow: var(--vdx-shadow-xl);
237
+ position: relative;
238
+ }
239
+ .vdx-lp .preview-chrome {
240
+ display: flex; align-items: center; gap: 10px;
241
+ padding: 9px 14px;
242
+ border-bottom: 1px solid var(--vdx-line);
243
+ background: var(--vdx-surface-2);
244
+ }
245
+ .vdx-lp .traffic { display: flex; gap: 6px; }
246
+ .vdx-lp .traffic span {
247
+ width: 10px; height: 10px; border-radius: 999px;
248
+ background: var(--vdx-line-strong);
249
+ }
250
+ .vdx-lp .preview-url {
251
+ flex: 1;
252
+ display: flex; align-items: center; gap: 8px;
253
+ justify-content: center;
254
+ font-family: var(--font-jetbrains-mono), monospace;
255
+ font-size: 11.5px;
256
+ color: var(--vdx-fg-muted);
257
+ }
258
+ .vdx-lp .preview-url .lock { width: 11px; height: 11px; }
259
+
260
+ .vdx-lp .mini-app {
261
+ display: grid;
262
+ grid-template-columns: 180px 1fr;
263
+ grid-template-rows: 38px 1fr;
264
+ height: 540px;
265
+ background: var(--vdx-bg);
266
+ }
267
+ .vdx-lp .mini-topbar {
268
+ grid-column: 1 / -1;
269
+ display: flex; align-items: center; gap: 14px;
270
+ padding: 0 14px 0 12px;
271
+ border-bottom: 1px solid var(--vdx-line);
272
+ background: var(--vdx-surface);
273
+ font-size: 12px;
274
+ }
275
+ .vdx-lp .mini-topbar .crumb {
276
+ font-family: var(--font-jetbrains-mono), monospace;
277
+ color: var(--vdx-fg-muted);
278
+ font-size: 11.5px;
279
+ }
280
+ .vdx-lp .mini-topbar .crumb b { color: var(--vdx-fg); font-weight: 500; }
281
+ .vdx-lp .mini-topbar .right { margin-left: auto; display: flex; gap: 6px; align-items: center; }
282
+ .vdx-lp .mini-search {
283
+ display: flex; align-items: center; gap: 8px;
284
+ padding: 3px 8px 3px 10px;
285
+ border: 1px solid var(--vdx-line);
286
+ border-radius: 7px;
287
+ background: var(--vdx-surface-2);
288
+ color: var(--vdx-fg-muted);
289
+ font-size: 11.5px;
290
+ min-width: 180px;
291
+ }
292
+ .vdx-lp .mini-search .kbd { margin-left: auto; }
293
+
294
+ .vdx-lp .mini-sidebar {
295
+ background: var(--vdx-bg-2);
296
+ border-right: 1px solid var(--vdx-line);
297
+ padding: 12px 8px;
298
+ overflow: hidden;
299
+ font-size: 12px;
300
+ }
301
+ .vdx-lp .mini-section-label {
302
+ padding: 4px 8px;
303
+ font-size: 9.5px;
304
+ font-weight: 600;
305
+ text-transform: uppercase;
306
+ letter-spacing: 0.06em;
307
+ color: var(--vdx-fg-subtle);
308
+ }
309
+ .vdx-lp .mini-nav-item {
310
+ display: flex; align-items: center; gap: 8px;
311
+ padding: 5px 8px;
312
+ border-radius: 6px;
313
+ color: var(--vdx-fg-2);
314
+ font-size: 12px;
315
+ }
316
+ .vdx-lp .mini-nav-item.active {
317
+ background: var(--vdx-surface);
318
+ box-shadow: var(--vdx-shadow-sm);
319
+ color: var(--vdx-fg);
320
+ font-weight: 500;
321
+ position: relative;
322
+ }
323
+ .vdx-lp .mini-nav-item.active::before {
324
+ content: ''; position: absolute; left: -8px; top: 6px; bottom: 6px;
325
+ width: 2px; background: var(--vdx-accent); border-radius: 999px;
326
+ }
327
+ .vdx-lp .mini-nav-item .count { margin-left: auto; font-family: var(--font-jetbrains-mono), monospace; font-size: 10px; color: var(--vdx-fg-subtle); }
328
+ .vdx-lp .branch-row {
329
+ display: flex; align-items: center; gap: 7px;
330
+ padding: 3px 8px 3px 22px;
331
+ font-family: var(--font-jetbrains-mono), monospace;
332
+ font-size: 11px;
333
+ color: var(--vdx-fg-2);
334
+ border-radius: 5px;
335
+ }
336
+ .vdx-lp .branch-row.active { background: var(--vdx-accent-tint); color: var(--vdx-accent); }
337
+ .vdx-lp .bdot { width: 6px; height: 6px; border-radius: 999px; background: var(--vdx-fg-subtle); flex-shrink: 0; }
338
+ .vdx-lp .bdot.green { background: var(--vdx-green); }
339
+ .vdx-lp .bdot.amber { background: var(--vdx-amber); }
340
+ .vdx-lp .bdot.rose { background: var(--vdx-rose); }
341
+ .vdx-lp .tree-project {
342
+ display: flex; align-items: center; gap: 6px;
343
+ padding: 6px 8px 2px;
344
+ font-family: var(--font-jetbrains-mono), monospace;
345
+ font-size: 10.5px;
346
+ color: var(--vdx-fg-muted);
347
+ }
348
+
349
+ .vdx-lp .mini-main { overflow: hidden; display: flex; flex-direction: column; }
350
+ .vdx-lp .mini-page-head {
351
+ display: flex; align-items: center; justify-content: space-between;
352
+ padding: 12px 16px 10px;
353
+ border-bottom: 1px solid var(--vdx-line);
354
+ }
355
+ .vdx-lp .mini-page-head h2 {
356
+ margin: 0; font-size: 15px; font-weight: 600;
357
+ letter-spacing: -0.015em;
358
+ display: flex; align-items: baseline; gap: 8px;
359
+ }
360
+ .vdx-lp .mini-page-head h2 .count {
361
+ font-family: var(--font-jetbrains-mono), monospace;
362
+ font-size: 11px; color: var(--vdx-fg-subtle); font-weight: 500;
363
+ }
364
+ .vdx-lp .mini-filter {
365
+ display: flex; gap: 4px; padding: 7px 16px;
366
+ border-bottom: 1px solid var(--vdx-line);
367
+ font-size: 11.5px;
368
+ }
369
+ .vdx-lp .mini-chip {
370
+ padding: 2px 8px; border-radius: 999px;
371
+ color: var(--vdx-fg-muted);
372
+ border: 1px solid transparent;
373
+ }
374
+ .vdx-lp .mini-chip.active {
375
+ background: var(--vdx-surface);
376
+ border-color: var(--vdx-line);
377
+ color: var(--vdx-fg);
378
+ font-weight: 500;
379
+ box-shadow: var(--vdx-shadow-sm);
380
+ }
381
+ .vdx-lp .mini-chip .count { font-family: var(--font-jetbrains-mono), monospace; font-size: 10px; color: var(--vdx-fg-subtle); margin-left: 3px; }
382
+
383
+ .vdx-lp .mini-grid {
384
+ flex: 1;
385
+ display: grid;
386
+ grid-template-columns: repeat(3, 1fr);
387
+ gap: 12px;
388
+ padding: 14px 16px;
389
+ overflow: hidden;
390
+ }
391
+ .vdx-lp .mini-card {
392
+ background: var(--vdx-surface);
393
+ border: 1px solid var(--vdx-line);
394
+ border-radius: 9px;
395
+ display: flex; flex-direction: column;
396
+ overflow: hidden;
397
+ }
398
+ .vdx-lp .mini-card.working { border-color: oklch(from var(--vdx-green) l c h / 0.4); }
399
+ .vdx-lp .mini-card.review { border-color: oklch(from var(--vdx-amber) l c h / 0.45); }
400
+ .vdx-lp .mini-card-head {
401
+ padding: 9px 11px 7px;
402
+ border-bottom: 1px solid var(--vdx-line-2);
403
+ display: flex; align-items: center; gap: 7px;
404
+ }
405
+ .vdx-lp .mini-card-head .meta { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }
406
+ .vdx-lp .mini-card-head .project { font-family: var(--font-jetbrains-mono), monospace; font-size: 10px; color: var(--vdx-fg-muted); }
407
+ .vdx-lp .mini-card-head .branch { font-family: var(--font-jetbrains-mono), monospace; font-size: 11px; color: var(--vdx-fg); font-weight: 500; }
408
+ .vdx-lp .mini-host {
409
+ font-family: var(--font-jetbrains-mono), monospace; font-size: 9.5px; color: var(--vdx-fg-subtle);
410
+ padding: 1px 5px; background: var(--vdx-surface-2); border-radius: 4px;
411
+ }
412
+ .vdx-lp .mini-card-body {
413
+ padding: 9px 11px; flex: 1;
414
+ display: flex; flex-direction: column; gap: 8px;
415
+ }
416
+ .vdx-lp .mini-task {
417
+ font-size: 11.5px;
418
+ color: var(--vdx-fg-2);
419
+ line-height: 1.4;
420
+ display: -webkit-box;
421
+ -webkit-line-clamp: 2;
422
+ -webkit-box-orient: vertical;
423
+ overflow: hidden;
424
+ }
425
+ .vdx-lp .mini-tools { display: flex; gap: 3px; flex-wrap: wrap; }
426
+ .vdx-lp .mini-tool {
427
+ font-family: var(--font-jetbrains-mono), monospace;
428
+ font-size: 9.5px;
429
+ padding: 1px 5px;
430
+ background: var(--vdx-surface-2);
431
+ border: 1px solid var(--vdx-line);
432
+ border-radius: 4px;
433
+ color: var(--vdx-fg-2);
434
+ }
435
+ .vdx-lp .mini-card-foot {
436
+ padding: 7px 11px;
437
+ border-top: 1px solid var(--vdx-line-2);
438
+ background: var(--vdx-surface-2);
439
+ display: flex; align-items: center; gap: 10px;
440
+ font-family: var(--font-jetbrains-mono), monospace;
441
+ font-size: 9.5px;
442
+ color: var(--vdx-fg-muted);
443
+ }
444
+ .vdx-lp .mini-card-foot .add { color: var(--vdx-green); }
445
+ .vdx-lp .mini-card-foot .del { color: var(--vdx-rose); }
446
+ .vdx-lp .mini-card-foot .grow { flex: 1; }
447
+
448
+ /* Floating annotations */
449
+ .vdx-lp .annot {
450
+ position: absolute;
451
+ display: flex; align-items: center; gap: 8px;
452
+ font-family: var(--font-jetbrains-mono), monospace;
453
+ font-size: 11px;
454
+ color: var(--vdx-fg);
455
+ background: var(--vdx-surface);
456
+ border: 1px solid var(--vdx-line);
457
+ padding: 5px 9px 5px 8px;
458
+ border-radius: 7px;
459
+ box-shadow: var(--vdx-shadow-md);
460
+ white-space: nowrap;
461
+ }
462
+ .vdx-lp .annot .badge {
463
+ font-family: var(--font-jetbrains-mono), monospace;
464
+ font-size: 10px;
465
+ color: var(--vdx-accent);
466
+ background: var(--vdx-accent-tint);
467
+ padding: 1px 5px;
468
+ border-radius: 4px;
469
+ font-weight: 600;
470
+ }
471
+ .vdx-lp .annot.a1 { top: 88px; left: -10px; }
472
+ .vdx-lp .annot.a2 { top: 220px; right: -8px; }
473
+ .vdx-lp .annot.a3 { bottom: 56px; left: 100px; }
474
+
475
+ /* Logos */
476
+ .vdx-lp .logos { padding: 60px 0 20px; text-align: center; }
477
+ .vdx-lp .logos-label {
478
+ font-family: var(--font-jetbrains-mono), monospace;
479
+ font-size: 11.5px;
480
+ color: var(--vdx-fg-muted);
481
+ letter-spacing: 0.04em;
482
+ }
483
+ .vdx-lp .logos-row {
484
+ margin-top: 22px;
485
+ display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
486
+ gap: 36px 56px;
487
+ opacity: 0.78;
488
+ }
489
+ .vdx-lp .logo-mark {
490
+ font-family: var(--font-jetbrains-mono), monospace;
491
+ font-size: 14px;
492
+ letter-spacing: -0.02em;
493
+ font-weight: 600;
494
+ color: var(--vdx-fg-2);
495
+ display: inline-flex; align-items: center; gap: 7px;
496
+ }
497
+ .vdx-lp .logo-mark .glyph {
498
+ width: 14px; height: 14px;
499
+ border: 1.5px solid var(--vdx-fg-2);
500
+ border-radius: 3px;
501
+ }
502
+ .vdx-lp .logo-mark .glyph.round { border-radius: 999px; }
503
+ .vdx-lp .logo-mark .glyph.solid { background: var(--vdx-fg-2); border-color: var(--vdx-fg-2); }
504
+ .vdx-lp .logo-mark .glyph.tri {
505
+ width: 0; height: 0; border: none;
506
+ border-left: 7px solid transparent;
507
+ border-right: 7px solid transparent;
508
+ border-bottom: 12px solid var(--vdx-fg-2);
509
+ border-radius: 0;
510
+ }
511
+
512
+ /* Section head */
513
+ .vdx-lp .section-head {
514
+ display: flex; flex-direction: column; gap: 14px;
515
+ max-width: 720px;
516
+ margin: 0 auto 48px;
517
+ text-align: center;
518
+ align-items: center;
519
+ }
520
+ .vdx-lp .section-head h2 {
521
+ margin: 0;
522
+ font-size: clamp(28px, 3.6vw, 42px);
523
+ letter-spacing: -0.028em;
524
+ font-weight: 600;
525
+ line-height: 1.08;
526
+ text-wrap: balance;
527
+ color: var(--vdx-fg);
528
+ }
529
+ .vdx-lp .section-head p {
530
+ margin: 0;
531
+ color: var(--vdx-fg-muted);
532
+ font-size: 15.5px;
533
+ line-height: 1.55;
534
+ text-wrap: pretty;
535
+ max-width: 560px;
536
+ }
537
+ .vdx-lp .kicker {
538
+ font-family: var(--font-jetbrains-mono), monospace;
539
+ font-size: 11.5px;
540
+ color: var(--vdx-accent);
541
+ letter-spacing: 0.04em;
542
+ text-transform: uppercase;
543
+ }
544
+
545
+ /* The commander */
546
+ .vdx-lp .commander { padding: 96px 0 24px; position: relative; }
547
+ .vdx-lp .commander .section-head { margin-bottom: 42px; }
548
+ .vdx-lp .commander .section-head h2 em {
549
+ font-style: normal;
550
+ font-family: var(--font-jetbrains-mono), monospace;
551
+ font-weight: 500;
552
+ font-size: 0.86em;
553
+ color: var(--vdx-accent);
554
+ letter-spacing: -0.02em;
555
+ }
556
+
557
+ .vdx-lp .cmd-deck {
558
+ max-width: 720px;
559
+ margin: 0 auto;
560
+ border: 1px solid var(--vdx-line-strong);
561
+ border-radius: 14px;
562
+ background: var(--vdx-surface);
563
+ box-shadow: var(--vdx-shadow-xl);
564
+ overflow: hidden;
565
+ }
566
+ .vdx-lp .cmd-deck-head {
567
+ display: flex; align-items: center; gap: 9px;
568
+ padding: 10px 14px;
569
+ border-bottom: 1px solid var(--vdx-line);
570
+ background: var(--vdx-surface-2);
571
+ font-family: var(--font-jetbrains-mono), monospace;
572
+ font-size: 11.5px;
573
+ color: var(--vdx-fg-muted);
574
+ }
575
+ .vdx-lp .cmd-deck-head .star { color: var(--vdx-accent); font-weight: 600; }
576
+ .vdx-lp .cmd-deck-head .right {
577
+ margin-left: auto; display: inline-flex; align-items: center; gap: 6px;
578
+ color: var(--vdx-green); font-size: 11px;
579
+ }
580
+
581
+ .vdx-lp .cmd-body { padding: 16px; display: flex; flex-direction: column; gap: 14px; }
582
+
583
+ /* goal bubble */
584
+ .vdx-lp .cmd-goal { display: flex; gap: 10px; align-items: flex-start; }
585
+ .vdx-lp .cmd-goal .who {
586
+ flex-shrink: 0;
587
+ width: 26px; height: 26px; border-radius: 7px;
588
+ background: var(--vdx-fg); color: var(--vdx-bg);
589
+ display: grid; place-items: center;
590
+ font-family: var(--font-jetbrains-mono), monospace;
591
+ font-size: 8.5px; font-weight: 700; letter-spacing: 0.02em;
592
+ }
593
+ .vdx-lp .cmd-goal .msg {
594
+ background: var(--vdx-bg-2);
595
+ border: 1px solid var(--vdx-line);
596
+ border-radius: 9px;
597
+ padding: 9px 12px;
598
+ font-size: 13.5px;
599
+ color: var(--vdx-fg);
600
+ line-height: 1.5;
601
+ }
602
+ .vdx-lp .cmd-goal .msg b { font-weight: 600; }
603
+
604
+ /* plan */
605
+ .vdx-lp .cmd-plan {
606
+ border: 1px solid var(--vdx-line);
607
+ border-radius: 10px;
608
+ overflow: hidden;
609
+ background: var(--vdx-surface);
610
+ }
611
+ .vdx-lp .cmd-plan-head {
612
+ display: flex; align-items: center; gap: 8px;
613
+ padding: 9px 12px;
614
+ border-bottom: 1px solid var(--vdx-line-2);
615
+ background: var(--vdx-bg-2);
616
+ font-size: 10.5px; font-weight: 600;
617
+ text-transform: uppercase; letter-spacing: 0.06em;
618
+ color: var(--vdx-fg-muted);
619
+ }
620
+ .vdx-lp .cmd-plan-head .count {
621
+ margin-left: auto;
622
+ font-family: var(--font-jetbrains-mono), monospace;
623
+ font-size: 10px; letter-spacing: 0; text-transform: none;
624
+ color: var(--vdx-fg-subtle);
625
+ }
626
+ .vdx-lp .cmd-step {
627
+ display: flex; align-items: center; gap: 11px;
628
+ padding: 10px 12px;
629
+ border-bottom: 1px solid var(--vdx-line-2);
630
+ font-size: 12.5px;
631
+ color: var(--vdx-fg-2);
632
+ }
633
+ .vdx-lp .cmd-step:last-child { border-bottom: none; }
634
+ .vdx-lp .cmd-step .ck {
635
+ width: 16px; height: 16px; border-radius: 999px; flex-shrink: 0;
636
+ border: 1.5px solid var(--vdx-line-strong);
637
+ display: grid; place-items: center;
638
+ font-size: 9px; line-height: 1; color: transparent;
639
+ align-self: flex-start; margin-top: 1px;
640
+ }
641
+ .vdx-lp .cmd-step .txt { flex: 1; line-height: 1.45; }
642
+ .vdx-lp .cmd-step .txt code {
643
+ font-family: var(--font-jetbrains-mono), monospace;
644
+ font-size: 11px; background: var(--vdx-surface-2);
645
+ padding: 0 4px; border-radius: 4px; border: 1px solid var(--vdx-line-2);
646
+ }
647
+ .vdx-lp .cmd-step .txt .del { color: var(--vdx-rose); font-family: var(--font-jetbrains-mono), monospace; font-size: 10.5px; margin-left: 4px; }
648
+ .vdx-lp .cmd-step .who-pill {
649
+ flex-shrink: 0;
650
+ font-family: var(--font-jetbrains-mono), monospace;
651
+ font-size: 9.5px;
652
+ padding: 2px 6px; border-radius: 5px;
653
+ background: var(--vdx-surface-2);
654
+ border: 1px solid var(--vdx-line);
655
+ color: var(--vdx-fg-muted);
656
+ }
657
+ .vdx-lp .cmd-step .who-pill.green { background: var(--vdx-green-tint); border-color: transparent; color: var(--vdx-green); }
658
+
659
+ .vdx-lp .cmd-step.done .ck { background: var(--vdx-green); border-color: var(--vdx-green); color: #fff; }
660
+ .vdx-lp .cmd-step.done .txt { color: var(--vdx-fg-muted); text-decoration: line-through; text-decoration-color: var(--vdx-line-strong); }
661
+ .vdx-lp .cmd-step.work .ck { border-color: var(--vdx-green); position: relative; }
662
+ .vdx-lp .cmd-step.work .ck::after {
663
+ content: ''; position: absolute; inset: 2.5px; border-radius: 999px;
664
+ background: var(--vdx-green); animation: vdx-blink 1.3s steps(1) infinite;
665
+ }
666
+ .vdx-lp .cmd-step.ask {
667
+ background: var(--vdx-amber-tint);
668
+ border-color: transparent;
669
+ }
670
+ .vdx-lp .cmd-step.ask .ck {
671
+ background: var(--vdx-amber); border-color: var(--vdx-amber);
672
+ color: oklch(0.25 0.04 75); font-weight: 700;
673
+ }
674
+ .vdx-lp .cmd-step.ask .txt { color: var(--vdx-fg); }
675
+ .vdx-lp .cmd-step .ask-row {
676
+ display: flex; align-items: center; gap: 7px; margin-top: 8px;
677
+ }
678
+ .vdx-lp .cmd-step .ask-label {
679
+ font-family: var(--font-jetbrains-mono), monospace;
680
+ font-size: 10px; text-transform: uppercase; letter-spacing: 0.05em;
681
+ color: oklch(from var(--vdx-amber) 0.42 c h);
682
+ margin-right: auto;
683
+ }
684
+ .vdx-lp .cmd-step .btn.cmd-approve {
685
+ padding: 3px 10px; font-size: 11px;
686
+ background: var(--vdx-fg); border-color: var(--vdx-fg); color: var(--vdx-bg);
687
+ }
688
+ .vdx-lp .cmd-step .btn.cmd-deny {
689
+ padding: 3px 10px; font-size: 11px;
690
+ background: transparent; border-color: transparent;
691
+ color: oklch(from var(--vdx-amber) 0.42 c h);
692
+ }
693
+ .vdx-lp .cmd-step.queued .txt { color: var(--vdx-fg-muted); }
694
+
695
+ /* three promises */
696
+ .vdx-lp .cmd-promises {
697
+ max-width: 720px; margin: 26px auto 0;
698
+ display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px;
699
+ }
700
+ .vdx-lp .cmd-promise {
701
+ border: 1px solid var(--vdx-line);
702
+ border-radius: 11px;
703
+ background: var(--vdx-surface);
704
+ padding: 18px 16px 16px;
705
+ }
706
+ .vdx-lp .cmd-promise .n {
707
+ font-family: var(--font-jetbrains-mono), monospace;
708
+ font-size: 11px; font-weight: 600;
709
+ color: var(--vdx-accent);
710
+ background: var(--vdx-accent-tint);
711
+ padding: 2px 6px; border-radius: 5px;
712
+ }
713
+ .vdx-lp .cmd-promise h4 {
714
+ margin: 12px 0 6px;
715
+ font-size: 14.5px; font-weight: 600;
716
+ letter-spacing: -0.012em; line-height: 1.25;
717
+ color: var(--vdx-fg);
718
+ }
719
+ .vdx-lp .cmd-promise p {
720
+ margin: 0; font-size: 12.5px; line-height: 1.5;
721
+ color: var(--vdx-fg-muted); text-wrap: pretty;
722
+ }
723
+ @media (max-width: 760px) {
724
+ .vdx-lp .cmd-promises { grid-template-columns: 1fr; }
725
+ }
726
+
727
+ /* Feature grid */
728
+ .vdx-lp .features { padding: 100px 0 40px; }
729
+ .vdx-lp .feature-grid {
730
+ display: grid;
731
+ grid-template-columns: repeat(6, 1fr);
732
+ gap: 14px;
733
+ }
734
+ .vdx-lp .feature {
735
+ border: 1px solid var(--vdx-line);
736
+ border-radius: 12px;
737
+ background: var(--vdx-surface);
738
+ padding: 22px 22px 0;
739
+ display: flex; flex-direction: column;
740
+ gap: 8px;
741
+ overflow: hidden;
742
+ position: relative;
743
+ min-height: 320px;
744
+ }
745
+ .vdx-lp .feature.f-wide { grid-column: span 4; }
746
+ .vdx-lp .feature.f-half { grid-column: span 3; }
747
+ .vdx-lp .feature.f-third { grid-column: span 2; }
748
+ .vdx-lp .feature h3 {
749
+ margin: 0;
750
+ font-size: 17px;
751
+ font-weight: 600;
752
+ letter-spacing: -0.015em;
753
+ color: var(--vdx-fg);
754
+ }
755
+ .vdx-lp .feature p {
756
+ margin: 0;
757
+ color: var(--vdx-fg-muted);
758
+ font-size: 13.5px;
759
+ line-height: 1.55;
760
+ max-width: 460px;
761
+ text-wrap: pretty;
762
+ }
763
+
764
+ /* Visual: branch graph */
765
+ .vdx-lp .branch-graph {
766
+ margin: 18px -22px -1px;
767
+ padding: 18px 22px 22px;
768
+ border-top: 1px solid var(--vdx-line-2);
769
+ background: var(--vdx-bg-2);
770
+ font-family: var(--font-jetbrains-mono), monospace;
771
+ font-size: 11.5px;
772
+ color: var(--vdx-fg-2);
773
+ display: flex; flex-direction: column; gap: 6px;
774
+ }
775
+ .vdx-lp .bg-row { display: flex; align-items: center; gap: 8px; }
776
+ .vdx-lp .bg-row .gutter { width: 22px; display: inline-flex; justify-content: center; color: var(--vdx-fg-subtle); }
777
+ .vdx-lp .bg-row .label { color: var(--vdx-fg); }
778
+ .vdx-lp .bg-row .pill {
779
+ font-size: 9.5px;
780
+ padding: 1px 5px;
781
+ border-radius: 4px;
782
+ background: var(--vdx-surface);
783
+ border: 1px solid var(--vdx-line);
784
+ color: var(--vdx-fg-muted);
785
+ margin-left: auto;
786
+ }
787
+ .vdx-lp .bg-row .pill.green { background: var(--vdx-green-tint); border-color: transparent; color: var(--vdx-green); }
788
+ .vdx-lp .bg-row .pill.amber { background: var(--vdx-amber-tint); border-color: transparent; color: oklch(from var(--vdx-amber) 0.42 c h); }
789
+ .vdx-lp .bg-row .pill.accent { background: var(--vdx-accent-tint); border-color: transparent; color: var(--vdx-accent); }
790
+ .vdx-lp .bg-row .pill.rose { background: var(--vdx-rose-tint); border-color: transparent; color: var(--vdx-rose); }
791
+
792
+ /* Visual: terminal */
793
+ .vdx-lp .term {
794
+ margin: 18px -22px -1px;
795
+ padding: 14px 18px 16px;
796
+ border-top: 1px solid var(--vdx-line-2);
797
+ background: oklch(0.16 0.012 260);
798
+ color: oklch(0.88 0.005 260);
799
+ font-family: var(--font-jetbrains-mono), monospace;
800
+ font-size: 11.5px;
801
+ line-height: 1.6;
802
+ }
803
+ .vdx-lp .term .p { color: oklch(0.72 0.14 268); }
804
+ .vdx-lp .term .o { color: oklch(0.7 0.008 260); }
805
+ .vdx-lp .term .ok { color: oklch(0.72 0.14 152); }
806
+ .vdx-lp .term .er { color: oklch(0.72 0.18 22); }
807
+ .vdx-lp .term .cursor {
808
+ background: oklch(0.88 0.005 260);
809
+ color: oklch(0.16 0.012 260);
810
+ padding: 0 2px;
811
+ animation: vdx-blink 1.1s steps(1) infinite;
812
+ }
813
+ @keyframes vdx-blink {
814
+ 50% { opacity: 0; }
815
+ }
816
+
817
+ /* Visual: diff */
818
+ .vdx-lp .diff {
819
+ margin: 18px -22px -1px;
820
+ border-top: 1px solid var(--vdx-line-2);
821
+ font-family: var(--font-jetbrains-mono), monospace;
822
+ font-size: 11px;
823
+ line-height: 1.6;
824
+ background: var(--vdx-surface);
825
+ }
826
+ .vdx-lp .diff .diff-head {
827
+ display: flex; gap: 8px;
828
+ padding: 7px 14px;
829
+ background: var(--vdx-bg-2);
830
+ border-bottom: 1px solid var(--vdx-line-2);
831
+ color: var(--vdx-fg-2);
832
+ }
833
+ .vdx-lp .diff .diff-head .add { color: var(--vdx-green); }
834
+ .vdx-lp .diff .diff-head .del { color: var(--vdx-rose); }
835
+ .vdx-lp .diff .diff-row {
836
+ display: grid; grid-template-columns: 28px 1fr;
837
+ align-items: stretch;
838
+ }
839
+ .vdx-lp .diff .diff-row .ln { text-align: right; padding: 0 6px; color: var(--vdx-fg-subtle); font-size: 10px; background: var(--vdx-surface-2); border-right: 1px solid var(--vdx-line-2); }
840
+ .vdx-lp .diff .diff-row .code { padding: 0 10px; white-space: pre; overflow: hidden; color: var(--vdx-fg-2); }
841
+ .vdx-lp .diff .diff-row.add .code { background: oklch(from var(--vdx-green) l c h / 0.07); color: var(--vdx-fg); }
842
+ .vdx-lp .diff .diff-row.add .ln { background: oklch(from var(--vdx-green) l c h / 0.10); color: var(--vdx-green); }
843
+ .vdx-lp .diff .diff-row.del .code { background: oklch(from var(--vdx-rose) l c h / 0.07); color: var(--vdx-fg); }
844
+ .vdx-lp .diff .diff-row.del .ln { background: oklch(from var(--vdx-rose) l c h / 0.10); color: var(--vdx-rose); }
845
+
846
+ /* Visual: approval */
847
+ .vdx-lp .approval {
848
+ margin: 18px 0 22px;
849
+ border: 1px solid var(--vdx-amber);
850
+ background: var(--vdx-amber-tint);
851
+ border-radius: 8px;
852
+ padding: 11px 12px;
853
+ font-size: 12px;
854
+ color: var(--vdx-fg-2);
855
+ }
856
+ .vdx-lp .approval .h {
857
+ font-weight: 600;
858
+ color: oklch(from var(--vdx-amber) 0.4 c h);
859
+ font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em;
860
+ margin-bottom: 5px;
861
+ display: flex; align-items: center; gap: 6px;
862
+ }
863
+ .vdx-lp .approval code {
864
+ font-family: var(--font-jetbrains-mono), monospace;
865
+ background: oklch(1 0 0 / 0.6);
866
+ padding: 1px 5px;
867
+ border-radius: 4px;
868
+ font-size: 11px;
869
+ }
870
+ .vdx-lp .approval .acts { display: flex; gap: 6px; margin-top: 9px; }
871
+ .vdx-lp .approval .acts .btn { padding: 4px 9px; font-size: 11.5px; }
872
+ .vdx-lp .approval .acts .btn-deny { background: transparent; border-color: transparent; color: oklch(from var(--vdx-amber) 0.4 c h); }
873
+
874
+ /* Visual: model picker */
875
+ .vdx-lp .models { margin: 18px 0 22px; display: flex; flex-direction: column; gap: 6px; }
876
+ .vdx-lp .model-row {
877
+ display: flex; align-items: center; gap: 10px;
878
+ padding: 8px 10px;
879
+ border: 1px solid var(--vdx-line);
880
+ border-radius: 8px;
881
+ background: var(--vdx-surface);
882
+ font-size: 12px;
883
+ }
884
+ .vdx-lp .model-row.active { border-color: var(--vdx-accent); box-shadow: 0 0 0 2px var(--vdx-accent-tint); }
885
+ .vdx-lp .model-row .mark {
886
+ width: 22px; height: 22px; border-radius: 5px;
887
+ background: var(--vdx-surface-2); border: 1px solid var(--vdx-line);
888
+ display: grid; place-items: center;
889
+ font-family: var(--font-jetbrains-mono), monospace;
890
+ font-size: 9.5px; font-weight: 600;
891
+ color: var(--vdx-fg-2);
892
+ }
893
+ .vdx-lp .model-row .name { font-weight: 500; color: var(--vdx-fg); }
894
+ .vdx-lp .model-row .desc { font-size: 10.5px; color: var(--vdx-fg-muted); font-family: var(--font-jetbrains-mono), monospace; margin-left: auto; }
895
+
896
+ /* How it works */
897
+ .vdx-lp .steps { padding: 80px 0; }
898
+ .vdx-lp .steps-grid {
899
+ display: grid;
900
+ grid-template-columns: repeat(3, 1fr);
901
+ gap: 14px;
902
+ margin-top: 8px;
903
+ }
904
+ .vdx-lp .step {
905
+ padding: 26px 24px;
906
+ border: 1px solid var(--vdx-line);
907
+ border-radius: 12px;
908
+ background: var(--vdx-surface);
909
+ position: relative;
910
+ }
911
+ .vdx-lp .step .num {
912
+ font-family: var(--font-jetbrains-mono), monospace;
913
+ font-size: 11px;
914
+ color: var(--vdx-accent);
915
+ letter-spacing: 0.04em;
916
+ margin-bottom: 12px;
917
+ }
918
+ .vdx-lp .step h4 {
919
+ margin: 0 0 6px;
920
+ font-size: 16px;
921
+ font-weight: 600;
922
+ letter-spacing: -0.012em;
923
+ color: var(--vdx-fg);
924
+ }
925
+ .vdx-lp .step p {
926
+ margin: 0;
927
+ color: var(--vdx-fg-muted);
928
+ font-size: 13.5px;
929
+ line-height: 1.55;
930
+ text-wrap: pretty;
931
+ }
932
+ .vdx-lp .step .stub {
933
+ margin-top: 16px;
934
+ padding: 9px 11px;
935
+ border: 1px solid var(--vdx-line);
936
+ border-radius: 7px;
937
+ background: var(--vdx-bg-2);
938
+ font-family: var(--font-jetbrains-mono), monospace;
939
+ font-size: 11.5px;
940
+ color: var(--vdx-fg-2);
941
+ display: flex; align-items: center; gap: 8px;
942
+ }
943
+ .vdx-lp .step .stub .dollar { color: var(--vdx-fg-subtle); }
944
+
945
+ /* Pricing */
946
+ .vdx-lp .pricing { padding: 80px 0; }
947
+ .vdx-lp .price-grid {
948
+ display: grid;
949
+ grid-template-columns: repeat(3, 1fr);
950
+ gap: 14px;
951
+ }
952
+ .vdx-lp .price {
953
+ padding: 26px 26px 22px;
954
+ border: 1px solid var(--vdx-line);
955
+ border-radius: 12px;
956
+ background: var(--vdx-surface);
957
+ display: flex; flex-direction: column;
958
+ }
959
+ .vdx-lp .price.featured {
960
+ border-color: var(--vdx-fg);
961
+ box-shadow: var(--vdx-shadow-md);
962
+ position: relative;
963
+ }
964
+ .vdx-lp .price.featured::before {
965
+ content: 'Recommended';
966
+ position: absolute;
967
+ top: -10px; left: 24px;
968
+ font-family: var(--font-jetbrains-mono), monospace;
969
+ font-size: 10px;
970
+ letter-spacing: 0.04em;
971
+ text-transform: uppercase;
972
+ font-weight: 600;
973
+ background: var(--vdx-fg); color: var(--vdx-bg);
974
+ padding: 3px 8px;
975
+ border-radius: 999px;
976
+ }
977
+ .vdx-lp .price h4 {
978
+ margin: 0;
979
+ font-size: 14px;
980
+ font-weight: 600;
981
+ letter-spacing: -0.005em;
982
+ color: var(--vdx-fg);
983
+ font-family: var(--font-jetbrains-mono), monospace;
984
+ text-transform: uppercase;
985
+ }
986
+ .vdx-lp .price .amount { margin-top: 12px; display: flex; align-items: baseline; gap: 5px; }
987
+ .vdx-lp .price .amount .num {
988
+ font-size: 38px;
989
+ font-weight: 600;
990
+ letter-spacing: -0.03em;
991
+ line-height: 1;
992
+ color: var(--vdx-fg);
993
+ }
994
+ .vdx-lp .price .amount .per { font-size: 13px; color: var(--vdx-fg-muted); }
995
+ .vdx-lp .price .blurb {
996
+ margin: 8px 0 18px;
997
+ color: var(--vdx-fg-muted);
998
+ font-size: 13px;
999
+ line-height: 1.5;
1000
+ min-height: 38px;
1001
+ }
1002
+ .vdx-lp .price ul {
1003
+ list-style: none; padding: 0; margin: 0 0 22px;
1004
+ display: flex; flex-direction: column; gap: 7px;
1005
+ font-size: 13px;
1006
+ color: var(--vdx-fg-2);
1007
+ }
1008
+ .vdx-lp .price ul li {
1009
+ display: flex; gap: 9px; align-items: flex-start;
1010
+ line-height: 1.45;
1011
+ }
1012
+ .vdx-lp .price ul li::before {
1013
+ content: '';
1014
+ width: 14px; height: 14px;
1015
+ flex-shrink: 0;
1016
+ margin-top: 2px;
1017
+ background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23606b7a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><polyline points='3.5,8.5 6.5,11.5 12.5,4.5'/></svg>");
1018
+ background-size: contain; background-repeat: no-repeat;
1019
+ }
1020
+ .vdx-lp .price .cta { margin-top: auto; justify-content: center; }
1021
+ .vdx-lp .price.featured .cta {
1022
+ background: var(--vdx-fg); color: var(--vdx-bg); border-color: var(--vdx-fg);
1023
+ }
1024
+ .vdx-lp .price.featured .cta:hover {
1025
+ background: oklch(0.28 0.014 260); border-color: oklch(0.28 0.014 260); color: var(--vdx-bg);
1026
+ }
1027
+
1028
+ /* FAQ */
1029
+ .vdx-lp .faq { padding: 80px 0; }
1030
+ .vdx-lp .faq-list {
1031
+ max-width: 760px; margin: 0 auto;
1032
+ border-top: 1px solid var(--vdx-line);
1033
+ }
1034
+ .vdx-lp details.faq-item {
1035
+ border-bottom: 1px solid var(--vdx-line);
1036
+ padding: 16px 4px;
1037
+ }
1038
+ .vdx-lp details.faq-item summary {
1039
+ cursor: pointer;
1040
+ list-style: none;
1041
+ display: flex; align-items: center; justify-content: space-between;
1042
+ gap: 16px;
1043
+ font-size: 15px;
1044
+ font-weight: 500;
1045
+ letter-spacing: -0.012em;
1046
+ color: var(--vdx-fg);
1047
+ }
1048
+ .vdx-lp details.faq-item summary::-webkit-details-marker { display: none; }
1049
+ .vdx-lp details.faq-item summary::after {
1050
+ content: '+';
1051
+ font-family: var(--font-jetbrains-mono), monospace;
1052
+ font-size: 18px;
1053
+ color: var(--vdx-fg-muted);
1054
+ transition: transform 0.18s;
1055
+ }
1056
+ .vdx-lp details.faq-item[open] summary::after { content: '−'; }
1057
+ .vdx-lp details.faq-item .body {
1058
+ margin-top: 10px;
1059
+ color: var(--vdx-fg-muted);
1060
+ font-size: 13.5px;
1061
+ line-height: 1.6;
1062
+ max-width: 640px;
1063
+ text-wrap: pretty;
1064
+ }
1065
+ .vdx-lp details.faq-item .body code {
1066
+ font-family: var(--font-jetbrains-mono), monospace;
1067
+ font-size: 12px; background: var(--vdx-surface-2);
1068
+ padding: 0 5px; border-radius: 4px; border: 1px solid var(--vdx-line-2);
1069
+ }
1070
+
1071
+ /* CTA banner */
1072
+ .vdx-lp .cta-banner {
1073
+ margin: 60px 0;
1074
+ padding: 60px 48px;
1075
+ background: var(--vdx-fg);
1076
+ color: var(--vdx-bg);
1077
+ border-radius: 16px;
1078
+ position: relative; overflow: hidden;
1079
+ display: flex; flex-direction: column; align-items: center;
1080
+ text-align: center;
1081
+ gap: 22px;
1082
+ }
1083
+ .vdx-lp .cta-banner::before {
1084
+ content: '';
1085
+ position: absolute; inset: 0;
1086
+ background-image:
1087
+ linear-gradient(to right, oklch(1 0 0 / 0.04) 1px, transparent 1px),
1088
+ linear-gradient(to bottom, oklch(1 0 0 / 0.04) 1px, transparent 1px);
1089
+ background-size: 40px 40px;
1090
+ mask-image: radial-gradient(ellipse 70% 80% at 50% 50%, black 30%, transparent 80%);
1091
+ -webkit-mask-image: radial-gradient(ellipse 70% 80% at 50% 50%, black 30%, transparent 80%);
1092
+ pointer-events: none;
1093
+ }
1094
+ .vdx-lp .cta-banner h2 {
1095
+ margin: 0;
1096
+ font-size: clamp(28px, 3.6vw, 40px);
1097
+ letter-spacing: -0.028em;
1098
+ font-weight: 600;
1099
+ line-height: 1.08;
1100
+ max-width: 620px;
1101
+ position: relative;
1102
+ text-wrap: balance;
1103
+ }
1104
+ .vdx-lp .cta-banner h2 em {
1105
+ font-style: normal;
1106
+ font-family: var(--font-jetbrains-mono), monospace;
1107
+ font-weight: 500;
1108
+ font-size: 0.86em;
1109
+ color: oklch(0.72 0.14 268);
1110
+ }
1111
+ .vdx-lp .cta-banner .row { display: flex; gap: 10px; position: relative; flex-wrap: wrap; justify-content: center; }
1112
+ .vdx-lp .cta-banner .btn-light {
1113
+ background: var(--vdx-bg); color: var(--vdx-fg); border-color: var(--vdx-bg);
1114
+ }
1115
+ .vdx-lp .cta-banner .btn-light:hover {
1116
+ background: oklch(0.96 0.003 250); border-color: oklch(0.96 0.003 250); color: var(--vdx-fg);
1117
+ }
1118
+ .vdx-lp .cta-banner .btn-dark {
1119
+ background: transparent; color: var(--vdx-bg); border-color: oklch(1 0 0 / 0.25);
1120
+ }
1121
+ .vdx-lp .cta-banner .btn-dark:hover {
1122
+ background: oklch(1 0 0 / 0.08); border-color: oklch(1 0 0 / 0.4); color: var(--vdx-bg);
1123
+ }
1124
+
1125
+ /* Footer */
1126
+ .vdx-lp footer {
1127
+ border-top: 1px solid var(--vdx-line);
1128
+ padding: 44px 0 32px;
1129
+ color: var(--vdx-fg-muted);
1130
+ font-size: 12.5px;
1131
+ }
1132
+ .vdx-lp .foot-grid {
1133
+ display: grid;
1134
+ grid-template-columns: 1.4fr repeat(4, 1fr);
1135
+ gap: 28px;
1136
+ }
1137
+ .vdx-lp .foot-brand { font-size: 13px; color: var(--vdx-fg-2); line-height: 1.5; max-width: 280px; }
1138
+ .vdx-lp .foot-col h5 {
1139
+ margin: 0 0 12px;
1140
+ font-size: 10.5px;
1141
+ font-weight: 600;
1142
+ text-transform: uppercase;
1143
+ letter-spacing: 0.06em;
1144
+ color: var(--vdx-fg-subtle);
1145
+ }
1146
+ .vdx-lp .foot-col ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
1147
+ .vdx-lp .foot-col ul a,
1148
+ .vdx-lp .foot-col ul button {
1149
+ color: var(--vdx-fg-2);
1150
+ font-size: 12.5px;
1151
+ text-align: left;
1152
+ font-family: inherit;
1153
+ }
1154
+ .vdx-lp .foot-col ul a:hover,
1155
+ .vdx-lp .foot-col ul button:hover { color: var(--vdx-fg); }
1156
+ .vdx-lp .foot-bottom {
1157
+ margin-top: 36px;
1158
+ padding-top: 18px;
1159
+ border-top: 1px solid var(--vdx-line-2);
1160
+ display: flex; justify-content: space-between; align-items: center;
1161
+ font-family: var(--font-jetbrains-mono), monospace;
1162
+ font-size: 11px;
1163
+ color: var(--vdx-fg-subtle);
1164
+ gap: 12px;
1165
+ flex-wrap: wrap;
1166
+ }
1167
+ .vdx-lp .foot-bottom .status { display: inline-flex; align-items: center; gap: 7px; }
1168
+ .vdx-lp .foot-bottom .status .sdot { width: 6px; height: 6px; border-radius: 999px; background: var(--vdx-green); }
1169
+
1170
+ /* Responsive */
1171
+ @media (max-width: 980px) {
1172
+ .vdx-lp .feature-grid { grid-template-columns: repeat(2, 1fr); }
1173
+ .vdx-lp .feature.f-wide, .vdx-lp .feature.f-half, .vdx-lp .feature.f-third { grid-column: span 2; }
1174
+ .vdx-lp .price-grid, .vdx-lp .steps-grid { grid-template-columns: 1fr; }
1175
+ .vdx-lp .foot-grid { grid-template-columns: 1fr 1fr; }
1176
+ .vdx-lp .annot { display: none; }
1177
+ .vdx-lp .nav-links { display: none; }
1178
+ .vdx-lp .mini-app { grid-template-columns: 1fr; grid-template-rows: 38px 1fr; }
1179
+ .vdx-lp .mini-sidebar { display: none; }
1180
+ .vdx-lp .mini-grid { grid-template-columns: 1fr; }
1181
+ }
1182
+ `;function g({children:e}){let{getToken:s,isSignedIn:n}=(0,i.useAuth)();return(0,r.useEffect)(()=>{if(!n){(0,d.setTokenGetter)(null),(0,d.setAuthToken)(null);return}return(0,d.setTokenGetter)(e=>s(e)),(0,d.getFreshToken)(),()=>(0,d.setTokenGetter)(null)},[n,s]),(0,a.jsx)(a.Fragment,{children:e})}function f({children:e}){let{isSignedIn:s,isLoaded:d}=(0,i.useAuth)(),[o,c]=(0,r.useState)(!1);return((0,r.useEffect)(()=>{let e=window.location.hash;(e.includes("/sso-callback")||e.includes("/factor"))&&c(!0)},[]),d)?s?(0,a.jsx)(a.Fragment,{children:e}):o?(0,a.jsx)("div",{className:"h-screen flex flex-col items-center justify-center bg-background",children:(0,a.jsxs)("div",{className:"w-full max-w-md",children:[(0,a.jsxs)(t.Button,{variant:"ghost",className:"mb-4 text-muted-foreground hover:text-foreground",onClick:()=>c(!1),children:[(0,a.jsx)(l.ArrowLeft,{className:"mr-2 h-4 w-4"}),"Back"]}),(0,a.jsx)(n.SignIn,{routing:"hash",appearance:{elements:{rootBox:"mx-auto",card:"shadow-lg"}}})]})}):(0,a.jsx)(m,{onSignIn:()=>c(!0)}):(0,a.jsx)("div",{className:"h-screen flex items-center justify-center",children:(0,a.jsx)("div",{className:"animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full"})})}function b({children:e}){let{config:r,loading:n}=(0,o.useAppConfig)();return n?(0,a.jsx)("div",{className:"h-screen flex items-center justify-center",children:(0,a.jsx)("div",{className:"animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full"})}):r?.authEnabled&&r.clerkPublishableKey?(0,a.jsx)(s.ClerkProvider,{publishableKey:r.clerkPublishableKey,clerkJSVersion:"5.125.13",children:(0,a.jsx)(g,{children:(0,a.jsx)(f,{children:e})})}):(0,a.jsx)(a.Fragment,{children:e})}var u=e.i(254824),j=e.i(276949),k=e.i(909596),w=e.i(112683),N=e.i(371263);function y(){return(0,r.useEffect)(()=>{let e=new WeakMap,a=a=>{let r=a.target;if(!(r instanceof Element))return;r.classList.add("scrolling");let s=e.get(r);s&&clearTimeout(s),e.set(r,setTimeout(()=>r.classList.remove("scrolling"),600))},r={capture:!0,passive:!0};return window.addEventListener("scroll",a,r),()=>window.removeEventListener("scroll",a,r)},[]),null}function z({children:e}){return(0,a.jsxs)(N.ThemeProvider,{children:[(0,a.jsx)(y,{}),(0,a.jsx)(b,{children:(0,a.jsx)(j.TerminalSettingsProvider,{children:(0,a.jsx)(k.ConversationSettingsProvider,{children:(0,a.jsx)(u.BrowserFramesProvider,{children:(0,a.jsx)(w.GlobalEventStreamProvider,{children:e})})})})})]})}e.s(["ClientProviders",()=>z],573751)},888030,e=>{"use strict";var a=e.i(813443),r=e.i(754219),s=e.i(371263);function n(){let{theme:e}=(0,s.useTheme)();return(0,a.jsx)(r.Toaster,{theme:e})}e.s(["ThemedToaster",()=>n])}]);