@tarunspandit/codexflow 0.29.0

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 (92) hide show
  1. package/AGENTS.example.md +18 -0
  2. package/CHANGELOG.md +311 -0
  3. package/CHATGPT_PROMPT.md +12 -0
  4. package/CODEX_PROMPT.md +12 -0
  5. package/CONTRIBUTING.md +51 -0
  6. package/DOMAIN_SETUP.md +241 -0
  7. package/FAQ.md +327 -0
  8. package/FAQ_ZH.md +279 -0
  9. package/LICENSE +21 -0
  10. package/NOTICE +9 -0
  11. package/PUBLIC_LAUNCH_CHECKLIST.md +111 -0
  12. package/README.md +287 -0
  13. package/README_ZH.md +461 -0
  14. package/SECURITY.md +145 -0
  15. package/config.example.env +31 -0
  16. package/dist/analysis/cache.js +27 -0
  17. package/dist/analysis/cache.js.map +1 -0
  18. package/dist/analysis/classify.js +102 -0
  19. package/dist/analysis/classify.js.map +1 -0
  20. package/dist/analysis/extract.js +139 -0
  21. package/dist/analysis/extract.js.map +1 -0
  22. package/dist/analysis/graph.js +22 -0
  23. package/dist/analysis/graph.js.map +1 -0
  24. package/dist/analysis/impact.js +167 -0
  25. package/dist/analysis/impact.js.map +1 -0
  26. package/dist/analysis/index.js +215 -0
  27. package/dist/analysis/index.js.map +1 -0
  28. package/dist/analysis/inventory.js +51 -0
  29. package/dist/analysis/inventory.js.map +1 -0
  30. package/dist/analysis/providers.js +24 -0
  31. package/dist/analysis/providers.js.map +1 -0
  32. package/dist/analysis/rank.js +27 -0
  33. package/dist/analysis/rank.js.map +1 -0
  34. package/dist/analysis/types.js +8 -0
  35. package/dist/analysis/types.js.map +1 -0
  36. package/dist/bashOps.js +233 -0
  37. package/dist/bashOps.js.map +1 -0
  38. package/dist/capabilitiesOps.js +365 -0
  39. package/dist/capabilitiesOps.js.map +1 -0
  40. package/dist/codexSessions.js +379 -0
  41. package/dist/codexSessions.js.map +1 -0
  42. package/dist/config.js +289 -0
  43. package/dist/config.js.map +1 -0
  44. package/dist/fsOps.js +286 -0
  45. package/dist/fsOps.js.map +1 -0
  46. package/dist/gitOps.js +79 -0
  47. package/dist/gitOps.js.map +1 -0
  48. package/dist/guard.js +198 -0
  49. package/dist/guard.js.map +1 -0
  50. package/dist/http.js +1671 -0
  51. package/dist/http.js.map +1 -0
  52. package/dist/proContext.js +274 -0
  53. package/dist/proContext.js.map +1 -0
  54. package/dist/profileStore.js +89 -0
  55. package/dist/profileStore.js.map +1 -0
  56. package/dist/projectCatalog.js +134 -0
  57. package/dist/projectCatalog.js.map +1 -0
  58. package/dist/redact.js +73 -0
  59. package/dist/redact.js.map +1 -0
  60. package/dist/searchOps.js +186 -0
  61. package/dist/searchOps.js.map +1 -0
  62. package/dist/server.js +2502 -0
  63. package/dist/server.js.map +1 -0
  64. package/dist/stdio.js +36 -0
  65. package/dist/stdio.js.map +1 -0
  66. package/dist/toolCardWidget.js +1155 -0
  67. package/dist/toolCardWidget.js.map +1 -0
  68. package/dist/workspaceOps.js +229 -0
  69. package/dist/workspaceOps.js.map +1 -0
  70. package/docs/.nojekyll +1 -0
  71. package/docs/favicon.svg +5 -0
  72. package/docs/index.html +638 -0
  73. package/docs/og.png +0 -0
  74. package/docs/script.js +80 -0
  75. package/docs/star.svg +11 -0
  76. package/docs/styles.css +1229 -0
  77. package/docs/zh.html +436 -0
  78. package/package.json +94 -0
  79. package/scripts/analysis-cli-smoke.mjs +81 -0
  80. package/scripts/analysis-smoke.mjs +179 -0
  81. package/scripts/clean.mjs +6 -0
  82. package/scripts/cli-smoke.mjs +168 -0
  83. package/scripts/codexflow.mjs +4375 -0
  84. package/scripts/doctor-smoke.mjs +90 -0
  85. package/scripts/execute-handoff-smoke.mjs +1110 -0
  86. package/scripts/http-smoke.mjs +812 -0
  87. package/scripts/pro-apply.mjs +141 -0
  88. package/scripts/pro-bundle.mjs +121 -0
  89. package/scripts/pro-smoke.mjs +95 -0
  90. package/scripts/settings-smoke.mjs +756 -0
  91. package/scripts/smoke.mjs +1194 -0
  92. package/scripts/stress.mjs +835 -0
@@ -0,0 +1,1229 @@
1
+ :root {
2
+ color-scheme: dark;
3
+ --bg: #080a0c;
4
+ --surface: #0d1115;
5
+ --surface-muted: #10161a;
6
+ --surface-strong: #151c21;
7
+ --line: #222c32;
8
+ --line-strong: #344149;
9
+ --text: #f2f5f4;
10
+ --muted: #9ca8a7;
11
+ --faint: #687574;
12
+ --accent: #52f4d1;
13
+ --accent-strong: #74f7dc;
14
+ --accent-soft: #101f1c;
15
+ --success: #c9ff5a;
16
+ --shadow: 0 26px 70px rgba(0, 0, 0, 0.32);
17
+ --mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
18
+ --sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Noto Sans CJK SC", sans-serif;
19
+ }
20
+
21
+ * {
22
+ box-sizing: border-box;
23
+ }
24
+
25
+ html {
26
+ overflow-x: clip;
27
+ scroll-behavior: smooth;
28
+ }
29
+
30
+ body {
31
+ min-width: 320px;
32
+ margin: 0;
33
+ overflow-x: clip;
34
+ background:
35
+ radial-gradient(circle at 82% 8%, rgba(82, 244, 209, 0.1), transparent 28rem),
36
+ linear-gradient(180deg, rgba(201, 255, 90, 0.035), transparent 34rem),
37
+ var(--bg);
38
+ color: var(--text);
39
+ font-family: var(--sans);
40
+ letter-spacing: 0;
41
+ }
42
+
43
+ body::before {
44
+ position: fixed;
45
+ inset: 0;
46
+ pointer-events: none;
47
+ background-image:
48
+ linear-gradient(rgba(82, 244, 209, 0.045) 1px, transparent 1px),
49
+ linear-gradient(90deg, rgba(82, 244, 209, 0.045) 1px, transparent 1px);
50
+ background-size: 48px 48px;
51
+ content: "";
52
+ mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.55), transparent 72%);
53
+ }
54
+
55
+ [id] {
56
+ scroll-margin-top: 92px;
57
+ }
58
+
59
+ a {
60
+ color: inherit;
61
+ text-decoration: none;
62
+ }
63
+
64
+ code,
65
+ pre {
66
+ font-family: var(--mono);
67
+ }
68
+
69
+ pre {
70
+ margin: 0;
71
+ overflow-x: auto;
72
+ white-space: pre-wrap;
73
+ overflow-wrap: anywhere;
74
+ }
75
+
76
+ .skip-link {
77
+ position: fixed;
78
+ top: 12px;
79
+ left: 16px;
80
+ z-index: 20;
81
+ transform: translateY(-150%);
82
+ border-radius: 999px;
83
+ background: var(--text);
84
+ color: var(--surface);
85
+ padding: 10px 14px;
86
+ font-weight: 800;
87
+ transition: transform 180ms ease;
88
+ }
89
+
90
+ .skip-link:focus {
91
+ transform: translateY(0);
92
+ }
93
+
94
+ .sr-only {
95
+ position: absolute;
96
+ width: 1px;
97
+ height: 1px;
98
+ margin: -1px;
99
+ overflow: hidden;
100
+ clip: rect(0, 0, 0, 0);
101
+ white-space: nowrap;
102
+ clip-path: inset(50%);
103
+ }
104
+
105
+ .site-header,
106
+ .site-footer,
107
+ main {
108
+ width: min(1120px, calc(100% - 40px));
109
+ margin: 0 auto;
110
+ }
111
+
112
+ .site-header {
113
+ position: sticky;
114
+ top: 0;
115
+ z-index: 10;
116
+ display: flex;
117
+ align-items: center;
118
+ justify-content: space-between;
119
+ gap: 24px;
120
+ padding: 18px 0;
121
+ border-bottom: 1px solid rgba(82, 244, 209, 0.08);
122
+ background: rgba(8, 10, 12, 0.82);
123
+ backdrop-filter: blur(18px);
124
+ }
125
+
126
+ .brand {
127
+ display: inline-flex;
128
+ flex: 0 0 auto;
129
+ align-items: center;
130
+ gap: 10px;
131
+ color: var(--text);
132
+ font-weight: 760;
133
+ }
134
+
135
+ .brand-mark {
136
+ width: 34px;
137
+ height: 34px;
138
+ flex: 0 0 auto;
139
+ border-radius: 8px;
140
+ box-shadow: 0 0 0 1px rgba(82, 244, 209, 0.28), 0 0 28px rgba(82, 244, 209, 0.08);
141
+ }
142
+
143
+ nav {
144
+ display: flex;
145
+ flex-wrap: wrap;
146
+ align-items: center;
147
+ justify-content: flex-end;
148
+ gap: 8px;
149
+ }
150
+
151
+ nav a {
152
+ border: 1px solid transparent;
153
+ border-radius: 999px;
154
+ color: var(--muted);
155
+ padding: 8px 12px;
156
+ font-size: 14px;
157
+ transition: border-color 180ms ease, color 180ms ease, background 180ms ease;
158
+ }
159
+
160
+ nav a:hover {
161
+ border-color: var(--line);
162
+ background: var(--surface);
163
+ color: var(--text);
164
+ }
165
+
166
+ a:focus-visible,
167
+ button:focus-visible {
168
+ outline: 2px solid var(--accent);
169
+ outline-offset: 3px;
170
+ }
171
+
172
+ .nav-star,
173
+ .star-button,
174
+ .star-link {
175
+ display: inline-flex;
176
+ align-items: center;
177
+ gap: 7px;
178
+ }
179
+
180
+ .nav-star,
181
+ .star-button,
182
+ .star-link,
183
+ .launch-pill,
184
+ .hero-proof span,
185
+ .message-chip,
186
+ .tag {
187
+ border: 1px solid rgba(82, 244, 209, 0.24);
188
+ background: rgba(82, 244, 209, 0.07);
189
+ color: var(--accent-strong);
190
+ }
191
+
192
+ .nav-star img,
193
+ .star-button img,
194
+ .star-link img {
195
+ width: 16px;
196
+ height: 16px;
197
+ flex: 0 0 auto;
198
+ }
199
+
200
+ .hero {
201
+ display: grid;
202
+ grid-template-columns: minmax(0, 1.02fr) minmax(420px, 0.98fr);
203
+ align-items: center;
204
+ gap: 56px;
205
+ min-height: min(760px, calc(100dvh - 112px));
206
+ padding: 52px 0 64px;
207
+ }
208
+
209
+ .hero-copy {
210
+ min-width: 0;
211
+ }
212
+
213
+ .launch-pill {
214
+ display: inline-flex;
215
+ align-items: center;
216
+ gap: 8px;
217
+ width: fit-content;
218
+ margin: 0 0 18px;
219
+ border-radius: 999px;
220
+ padding: 8px 12px;
221
+ font-size: 13px;
222
+ font-weight: 760;
223
+ }
224
+
225
+ .launch-pill img {
226
+ width: 16px;
227
+ height: 16px;
228
+ }
229
+
230
+ .eyebrow {
231
+ margin: 0 0 14px;
232
+ color: var(--accent-strong);
233
+ font-family: var(--mono);
234
+ font-size: 12px;
235
+ font-weight: 700;
236
+ text-transform: uppercase;
237
+ }
238
+
239
+ h1,
240
+ h2,
241
+ h3,
242
+ p {
243
+ margin-top: 0;
244
+ }
245
+
246
+ h1,
247
+ h2,
248
+ h3 {
249
+ color: var(--text);
250
+ text-wrap: balance;
251
+ }
252
+
253
+ h1 {
254
+ max-width: 780px;
255
+ margin-bottom: 22px;
256
+ font-size: 5.125rem;
257
+ line-height: 0.94;
258
+ letter-spacing: -0.045em;
259
+ }
260
+
261
+ h1 em {
262
+ color: var(--success);
263
+ font-style: normal;
264
+ }
265
+
266
+ h2 {
267
+ margin-bottom: 18px;
268
+ font-size: 3.625rem;
269
+ line-height: 0.98;
270
+ letter-spacing: -0.04em;
271
+ }
272
+
273
+ h3 {
274
+ margin-bottom: 12px;
275
+ font-size: 1.5rem;
276
+ line-height: 1.1;
277
+ }
278
+
279
+ p {
280
+ color: var(--muted);
281
+ font-size: 17px;
282
+ line-height: 1.7;
283
+ text-wrap: pretty;
284
+ }
285
+
286
+ .hero-lede {
287
+ max-width: 660px;
288
+ font-size: 19px;
289
+ }
290
+
291
+ .hero-proof {
292
+ display: flex;
293
+ flex-wrap: wrap;
294
+ gap: 8px;
295
+ margin-top: 22px;
296
+ }
297
+
298
+ .hero-proof span {
299
+ border-radius: 999px;
300
+ padding: 7px 10px;
301
+ font-family: var(--mono);
302
+ font-size: 12px;
303
+ }
304
+
305
+ .hero-actions {
306
+ display: flex;
307
+ flex-wrap: wrap;
308
+ gap: 12px;
309
+ margin: 30px 0 18px;
310
+ }
311
+
312
+ .button,
313
+ .copy-button {
314
+ display: inline-flex;
315
+ min-height: 44px;
316
+ align-items: center;
317
+ justify-content: center;
318
+ border: 1px solid var(--line-strong);
319
+ border-radius: 999px;
320
+ padding: 0 18px;
321
+ font: inherit;
322
+ font-weight: 750;
323
+ cursor: pointer;
324
+ transition: transform 160ms ease, background 160ms ease, border-color 160ms ease;
325
+ }
326
+
327
+ .button:hover,
328
+ .copy-button:hover {
329
+ border-color: var(--accent);
330
+ transform: translateY(-1px);
331
+ }
332
+
333
+ .button:active,
334
+ .copy-button:active {
335
+ transform: translateY(1px) scale(0.99);
336
+ }
337
+
338
+ .primary {
339
+ border-color: var(--accent);
340
+ background: var(--accent);
341
+ color: #06100d;
342
+ }
343
+
344
+ .secondary,
345
+ .copy-button {
346
+ background: var(--surface);
347
+ color: var(--accent-strong);
348
+ }
349
+
350
+ .install-line {
351
+ display: inline-flex;
352
+ max-width: 100%;
353
+ align-items: center;
354
+ gap: 10px;
355
+ border: 1px solid var(--line);
356
+ border-radius: 8px;
357
+ background: var(--surface);
358
+ padding: 8px;
359
+ box-shadow: var(--shadow);
360
+ }
361
+
362
+ .install-line code {
363
+ padding: 0 12px;
364
+ color: var(--accent-strong);
365
+ font-size: 14px;
366
+ line-height: 1.45;
367
+ white-space: pre;
368
+ }
369
+
370
+ .copy-button {
371
+ min-height: 34px;
372
+ border: 0;
373
+ padding: 0 14px;
374
+ }
375
+
376
+ .copy-button:disabled {
377
+ cursor: wait;
378
+ opacity: 0.7;
379
+ }
380
+
381
+ .hero-visual {
382
+ display: grid;
383
+ min-width: 0;
384
+ gap: 14px;
385
+ }
386
+
387
+ .workspace-demo,
388
+ .floating-note,
389
+ .strip,
390
+ .compare-grid article,
391
+ .steps,
392
+ .command-stack > div,
393
+ .reference-grid article,
394
+ .tool-reference,
395
+ .link-row,
396
+ .rules > div,
397
+ .safety,
398
+ .mode-row > div,
399
+ .faq-grid article,
400
+ .value-matrix > div {
401
+ border: 1px solid var(--line);
402
+ background: rgba(13, 17, 21, 0.92);
403
+ box-shadow: var(--shadow);
404
+ }
405
+
406
+ .workspace-demo {
407
+ position: relative;
408
+ overflow: hidden;
409
+ border-radius: 8px;
410
+ background:
411
+ linear-gradient(180deg, rgba(82, 244, 209, 0.07), transparent 54%),
412
+ var(--surface);
413
+ }
414
+
415
+ .workspace-demo::before {
416
+ position: absolute;
417
+ inset: 0;
418
+ pointer-events: none;
419
+ border-radius: inherit;
420
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
421
+ content: "";
422
+ }
423
+
424
+ .demo-status {
425
+ display: flex;
426
+ align-items: center;
427
+ gap: 12px;
428
+ border-bottom: 1px solid var(--line);
429
+ background: rgba(16, 31, 28, 0.82);
430
+ padding: 15px 18px;
431
+ }
432
+
433
+ .demo-status strong {
434
+ display: block;
435
+ color: var(--text);
436
+ font-size: 14px;
437
+ }
438
+
439
+ .demo-status small,
440
+ .floating-note small,
441
+ .command-stack small,
442
+ dt,
443
+ .reference-grid p,
444
+ .faq-grid p,
445
+ .repo-row strong {
446
+ color: var(--muted);
447
+ }
448
+
449
+ .demo-status small {
450
+ display: block;
451
+ margin-top: 2px;
452
+ font-family: var(--mono);
453
+ font-size: 11px;
454
+ }
455
+
456
+ .status-label {
457
+ min-width: 0;
458
+ }
459
+
460
+ .status-badge {
461
+ margin-left: auto;
462
+ border: 1px solid rgba(82, 244, 209, 0.22);
463
+ border-radius: 999px;
464
+ color: var(--accent-strong);
465
+ font-family: var(--mono);
466
+ font-size: 11px;
467
+ padding: 5px 8px;
468
+ }
469
+
470
+ .status-dot {
471
+ width: 9px;
472
+ height: 9px;
473
+ flex: 0 0 auto;
474
+ border-radius: 999px;
475
+ background: var(--success);
476
+ box-shadow: 0 0 0 8px rgba(201, 255, 90, 0.08);
477
+ }
478
+
479
+ .connection-map,
480
+ .trust-row {
481
+ display: grid;
482
+ gap: 1px;
483
+ overflow: hidden;
484
+ background: var(--line);
485
+ }
486
+
487
+ .connection-map {
488
+ margin: 18px;
489
+ border: 1px solid var(--line);
490
+ border-radius: 8px;
491
+ }
492
+
493
+ .connection-map > div {
494
+ min-width: 0;
495
+ background: var(--surface);
496
+ padding: 22px;
497
+ }
498
+
499
+ .connection-map span,
500
+ .trust-row span {
501
+ display: block;
502
+ margin-bottom: 10px;
503
+ color: var(--accent-strong);
504
+ font-family: var(--mono);
505
+ font-size: 12px;
506
+ font-weight: 760;
507
+ }
508
+
509
+ .connection-map strong,
510
+ .trust-row strong {
511
+ display: block;
512
+ color: var(--text);
513
+ line-height: 1.25;
514
+ }
515
+
516
+ .connection-map p {
517
+ margin: 10px 0 0;
518
+ font-size: 15px;
519
+ line-height: 1.6;
520
+ }
521
+
522
+ .trust-row {
523
+ grid-template-columns: repeat(3, minmax(0, 1fr));
524
+ margin: 0 18px 18px;
525
+ border: 1px solid var(--line);
526
+ border-radius: 8px;
527
+ }
528
+
529
+ .trust-row > div {
530
+ min-width: 0;
531
+ background: #0b1013;
532
+ padding: 18px;
533
+ }
534
+
535
+ .floating-note {
536
+ border-radius: 8px;
537
+ background:
538
+ linear-gradient(180deg, rgba(82, 244, 209, 0.09), transparent 72%),
539
+ var(--surface);
540
+ padding: 18px;
541
+ }
542
+
543
+ .floating-note span,
544
+ .floating-note strong,
545
+ .tool-card-mini strong,
546
+ .repo-row span,
547
+ .chat-pane p {
548
+ color: var(--text);
549
+ }
550
+
551
+ .floating-note span {
552
+ display: block;
553
+ margin-bottom: 8px;
554
+ color: var(--accent-strong);
555
+ font-family: var(--mono);
556
+ font-size: 12px;
557
+ }
558
+
559
+ .floating-note strong {
560
+ display: block;
561
+ margin-bottom: 6px;
562
+ font-family: var(--mono);
563
+ }
564
+
565
+ .demo-grid {
566
+ display: grid;
567
+ grid-template-columns: 0.95fr 1.05fr;
568
+ gap: 14px;
569
+ padding: 18px;
570
+ }
571
+
572
+ .chat-pane,
573
+ .tool-pane,
574
+ .repo-pane {
575
+ border: 1px solid var(--line);
576
+ border-radius: 8px;
577
+ background: var(--surface-muted);
578
+ padding: 18px;
579
+ }
580
+
581
+ .chat-pane small,
582
+ .tool-pane small {
583
+ display: block;
584
+ margin-bottom: 12px;
585
+ color: var(--accent-strong);
586
+ font-family: var(--mono);
587
+ font-size: 12px;
588
+ }
589
+
590
+ .chat-pane p {
591
+ margin-bottom: 18px;
592
+ font-size: 18px;
593
+ line-height: 1.45;
594
+ }
595
+
596
+ .message-chip {
597
+ width: fit-content;
598
+ border-radius: 999px;
599
+ padding: 8px 10px;
600
+ font-family: var(--mono);
601
+ font-size: 12px;
602
+ }
603
+
604
+ .tool-pane {
605
+ display: grid;
606
+ gap: 10px;
607
+ }
608
+
609
+ .tool-card-mini {
610
+ border: 1px solid var(--line);
611
+ border-radius: 8px;
612
+ background: var(--surface);
613
+ padding: 13px;
614
+ }
615
+
616
+ .tool-card-mini.active {
617
+ border-color: rgba(82, 244, 209, 0.38);
618
+ background: rgba(82, 244, 209, 0.08);
619
+ }
620
+
621
+ .tool-card-mini span {
622
+ display: block;
623
+ margin-bottom: 6px;
624
+ color: var(--faint);
625
+ font-family: var(--mono);
626
+ font-size: 12px;
627
+ }
628
+
629
+ .tool-card-mini strong {
630
+ font-size: 14px;
631
+ }
632
+
633
+ .repo-pane {
634
+ display: grid;
635
+ gap: 8px;
636
+ margin: 0 18px 18px;
637
+ }
638
+
639
+ .repo-row {
640
+ display: grid;
641
+ grid-template-columns: minmax(0, 0.75fr) minmax(0, 1.25fr);
642
+ gap: 12px;
643
+ border-top: 1px solid var(--line);
644
+ padding-top: 9px;
645
+ }
646
+
647
+ .repo-row:first-child {
648
+ border-top: 0;
649
+ padding-top: 0;
650
+ }
651
+
652
+ .repo-row span {
653
+ overflow: hidden;
654
+ font-family: var(--mono);
655
+ font-size: 12px;
656
+ text-overflow: ellipsis;
657
+ white-space: nowrap;
658
+ }
659
+
660
+ .repo-row strong {
661
+ font-size: 13px;
662
+ font-weight: 650;
663
+ }
664
+
665
+ .strip {
666
+ display: grid;
667
+ grid-template-columns: repeat(3, 1fr);
668
+ gap: 1px;
669
+ overflow: hidden;
670
+ border-radius: 8px;
671
+ margin-bottom: 104px;
672
+ background: var(--line);
673
+ }
674
+
675
+ .strip div {
676
+ min-height: 150px;
677
+ background: var(--surface);
678
+ padding: 24px;
679
+ }
680
+
681
+ .strip span {
682
+ color: var(--accent-strong);
683
+ font-family: var(--mono);
684
+ font-size: 13px;
685
+ }
686
+
687
+ .strip strong {
688
+ display: block;
689
+ margin: 12px 0 8px;
690
+ color: var(--text);
691
+ font-size: 22px;
692
+ }
693
+
694
+ .strip p {
695
+ margin: 0;
696
+ font-size: 15px;
697
+ }
698
+
699
+ .section {
700
+ padding: 92px 0;
701
+ border-top: 1px solid var(--line);
702
+ }
703
+
704
+ .value-section,
705
+ .two-col,
706
+ .safety {
707
+ display: grid;
708
+ align-items: start;
709
+ gap: 58px;
710
+ }
711
+
712
+ .value-section,
713
+ .two-col {
714
+ grid-template-columns: minmax(0, 0.9fr) minmax(420px, 1.1fr);
715
+ }
716
+
717
+ .value-section {
718
+ grid-template-columns: minmax(0, 0.95fr) minmax(420px, 1.05fr);
719
+ }
720
+
721
+ .reverse {
722
+ grid-template-columns: minmax(420px, 1.1fr) minmax(0, 0.9fr);
723
+ }
724
+
725
+ .section-heading {
726
+ max-width: 760px;
727
+ margin-bottom: 32px;
728
+ }
729
+
730
+ .value-matrix {
731
+ display: grid;
732
+ gap: 12px;
733
+ }
734
+
735
+ .value-matrix > div {
736
+ border-radius: 8px;
737
+ background:
738
+ linear-gradient(180deg, rgba(82, 244, 209, 0.055), transparent 62%),
739
+ var(--surface);
740
+ padding: 24px;
741
+ }
742
+
743
+ .value-matrix small {
744
+ display: block;
745
+ margin-bottom: 10px;
746
+ color: var(--accent-strong);
747
+ font-family: var(--mono);
748
+ }
749
+
750
+ .value-matrix strong {
751
+ display: block;
752
+ color: var(--text);
753
+ font-size: 23px;
754
+ line-height: 1.2;
755
+ }
756
+
757
+ .steps,
758
+ .rules {
759
+ display: grid;
760
+ gap: 1px;
761
+ overflow: hidden;
762
+ border-radius: 8px;
763
+ background: var(--line);
764
+ }
765
+
766
+ .step,
767
+ .rules > div {
768
+ display: grid;
769
+ grid-template-columns: auto minmax(0, 1fr);
770
+ gap: 18px;
771
+ background: var(--surface);
772
+ padding: 22px;
773
+ }
774
+
775
+ .step span {
776
+ display: grid;
777
+ width: 34px;
778
+ height: 34px;
779
+ place-items: center;
780
+ border-radius: 999px;
781
+ background: rgba(82, 244, 209, 0.1);
782
+ color: var(--accent-strong);
783
+ font-family: var(--mono);
784
+ }
785
+
786
+ .step strong,
787
+ .rules strong,
788
+ .mode-row strong {
789
+ display: block;
790
+ margin-bottom: 8px;
791
+ color: var(--text);
792
+ font-size: 18px;
793
+ }
794
+
795
+ .step p,
796
+ .rules p,
797
+ .mode-row p {
798
+ margin-bottom: 0;
799
+ font-size: 15px;
800
+ }
801
+
802
+ .step pre,
803
+ .command-stack pre,
804
+ .compare-grid pre,
805
+ .reference-grid pre,
806
+ .install-line code {
807
+ border: 1px solid rgba(82, 244, 209, 0.15);
808
+ border-radius: 8px;
809
+ background: var(--accent-soft);
810
+ color: var(--accent-strong);
811
+ padding: 14px;
812
+ }
813
+
814
+ .step pre,
815
+ .command-stack pre,
816
+ .compare-grid pre,
817
+ .reference-grid pre {
818
+ margin-top: 12px;
819
+ }
820
+
821
+ .compare-grid {
822
+ display: grid;
823
+ grid-template-columns: repeat(4, minmax(0, 1fr));
824
+ gap: 16px;
825
+ }
826
+
827
+ .compare-grid article {
828
+ display: flex;
829
+ min-height: 310px;
830
+ flex-direction: column;
831
+ border-radius: 8px;
832
+ padding: 24px;
833
+ }
834
+
835
+ .compare-grid pre {
836
+ margin-top: auto;
837
+ }
838
+
839
+ .tag {
840
+ width: fit-content;
841
+ margin-bottom: 32px;
842
+ border-radius: 999px;
843
+ padding: 6px 10px;
844
+ font-family: var(--mono);
845
+ font-size: 12px;
846
+ }
847
+
848
+ .command-stack {
849
+ display: grid;
850
+ gap: 12px;
851
+ }
852
+
853
+ .command-stack > div {
854
+ border-radius: 8px;
855
+ padding: 18px;
856
+ }
857
+
858
+ .command-stack small {
859
+ display: block;
860
+ margin-bottom: 10px;
861
+ font-family: var(--mono);
862
+ }
863
+
864
+ .mode-row {
865
+ display: grid;
866
+ grid-template-columns: 1.2fr 1fr 1fr;
867
+ gap: 16px;
868
+ }
869
+
870
+ .mode-row > div {
871
+ border-radius: 8px;
872
+ padding: 24px;
873
+ }
874
+
875
+ .reference-section {
876
+ padding-bottom: 112px;
877
+ }
878
+
879
+ .reference-grid {
880
+ display: grid;
881
+ grid-template-columns: repeat(3, minmax(0, 1fr));
882
+ gap: 16px;
883
+ }
884
+
885
+ .reference-grid article {
886
+ min-height: 270px;
887
+ border-radius: 8px;
888
+ padding: 22px;
889
+ }
890
+
891
+ .reference-grid.compact {
892
+ grid-template-columns: repeat(4, minmax(0, 1fr));
893
+ margin-top: 16px;
894
+ }
895
+
896
+ .reference-grid.compact article {
897
+ min-height: 230px;
898
+ }
899
+
900
+ .reference-grid small,
901
+ .tool-reference small {
902
+ display: block;
903
+ margin-bottom: 12px;
904
+ color: var(--accent-strong);
905
+ font-family: var(--mono);
906
+ font-size: 12px;
907
+ text-transform: uppercase;
908
+ }
909
+
910
+ .reference-grid h3,
911
+ .tool-reference h3 {
912
+ margin-bottom: 16px;
913
+ }
914
+
915
+ .reference-grid p,
916
+ .faq-grid p {
917
+ margin-bottom: 0;
918
+ font-size: 15px;
919
+ }
920
+
921
+ dl {
922
+ display: grid;
923
+ gap: 10px;
924
+ margin: 0;
925
+ }
926
+
927
+ dl div {
928
+ display: grid;
929
+ grid-template-columns: 112px minmax(0, 1fr);
930
+ gap: 12px;
931
+ border-top: 1px solid var(--line);
932
+ padding-top: 10px;
933
+ }
934
+
935
+ dt {
936
+ font-family: var(--mono);
937
+ font-size: 12px;
938
+ }
939
+
940
+ dd {
941
+ margin: 0;
942
+ color: var(--text);
943
+ }
944
+
945
+ .tool-reference {
946
+ display: grid;
947
+ grid-template-columns: minmax(260px, 0.75fr) minmax(0, 1.25fr);
948
+ gap: 28px;
949
+ margin: 16px 0;
950
+ border-radius: 8px;
951
+ padding: 26px;
952
+ }
953
+
954
+ .tool-reference h3 {
955
+ margin-bottom: 0;
956
+ }
957
+
958
+ .tool-list {
959
+ display: flex;
960
+ flex-wrap: wrap;
961
+ gap: 8px;
962
+ }
963
+
964
+ .tool-list span {
965
+ border: 1px solid rgba(82, 244, 209, 0.18);
966
+ border-radius: 999px;
967
+ background: var(--surface);
968
+ color: var(--text);
969
+ font-family: var(--mono);
970
+ font-size: 12px;
971
+ padding: 8px 10px;
972
+ }
973
+
974
+ .link-row {
975
+ display: flex;
976
+ flex-wrap: wrap;
977
+ gap: 10px;
978
+ margin-top: 16px;
979
+ border-radius: 8px;
980
+ padding: 16px;
981
+ }
982
+
983
+ .link-row a,
984
+ .site-footer a {
985
+ display: inline-flex;
986
+ align-items: center;
987
+ border: 1px solid rgba(82, 244, 209, 0.18);
988
+ border-radius: 999px;
989
+ background: var(--surface);
990
+ color: var(--text);
991
+ padding: 9px 12px;
992
+ }
993
+
994
+ .link-row .star-link,
995
+ .site-footer .star-link {
996
+ background: rgba(82, 244, 209, 0.075);
997
+ color: var(--accent-strong);
998
+ }
999
+
1000
+ .faq-grid {
1001
+ display: grid;
1002
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1003
+ gap: 16px;
1004
+ }
1005
+
1006
+ .faq-grid article {
1007
+ min-height: 240px;
1008
+ border-radius: 8px;
1009
+ background:
1010
+ linear-gradient(180deg, rgba(82, 244, 209, 0.055), transparent 58%),
1011
+ var(--surface);
1012
+ padding: 24px;
1013
+ }
1014
+
1015
+ .faq-grid h3 {
1016
+ margin-bottom: 14px;
1017
+ font-size: 21px;
1018
+ line-height: 1.2;
1019
+ }
1020
+
1021
+ .safety {
1022
+ grid-template-columns: minmax(0, 0.9fr) minmax(420px, 1.1fr);
1023
+ border-radius: 8px;
1024
+ padding: 34px;
1025
+ }
1026
+
1027
+ .safety ul {
1028
+ display: grid;
1029
+ gap: 10px;
1030
+ margin: 0;
1031
+ padding: 0;
1032
+ list-style: none;
1033
+ }
1034
+
1035
+ .safety li {
1036
+ color: var(--text);
1037
+ }
1038
+
1039
+ .safety li::before {
1040
+ display: inline-block;
1041
+ width: 7px;
1042
+ height: 7px;
1043
+ margin-right: 10px;
1044
+ border-radius: 999px;
1045
+ background: var(--accent);
1046
+ content: "";
1047
+ }
1048
+
1049
+ .site-footer {
1050
+ display: flex;
1051
+ flex-wrap: wrap;
1052
+ justify-content: center;
1053
+ gap: 16px;
1054
+ border-top: 1px solid var(--line);
1055
+ color: var(--muted);
1056
+ padding: 36px 0 54px;
1057
+ }
1058
+
1059
+ .site-footer span {
1060
+ color: var(--text);
1061
+ font-weight: 760;
1062
+ }
1063
+
1064
+ @media (max-width: 980px) {
1065
+ .hero,
1066
+ .value-section,
1067
+ .two-col,
1068
+ .reverse,
1069
+ .safety {
1070
+ grid-template-columns: 1fr;
1071
+ }
1072
+
1073
+ .hero {
1074
+ min-height: auto;
1075
+ }
1076
+
1077
+ .compare-grid,
1078
+ .reference-grid,
1079
+ .reference-grid.compact,
1080
+ .faq-grid {
1081
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1082
+ }
1083
+
1084
+ .tool-reference {
1085
+ grid-template-columns: 1fr;
1086
+ }
1087
+
1088
+ .safety {
1089
+ gap: 30px;
1090
+ }
1091
+ }
1092
+
1093
+ @media (max-width: 720px) {
1094
+ .site-header {
1095
+ align-items: flex-start;
1096
+ flex-direction: column;
1097
+ }
1098
+
1099
+ nav {
1100
+ width: 100%;
1101
+ justify-content: flex-start;
1102
+ }
1103
+
1104
+ h1 {
1105
+ font-size: 4rem;
1106
+ }
1107
+
1108
+ h2 {
1109
+ font-size: 3rem;
1110
+ }
1111
+
1112
+ .strip,
1113
+ .compare-grid,
1114
+ .mode-row,
1115
+ .reference-grid,
1116
+ .reference-grid.compact,
1117
+ .faq-grid,
1118
+ .trust-row {
1119
+ grid-template-columns: 1fr;
1120
+ }
1121
+
1122
+ .demo-grid {
1123
+ grid-template-columns: 1fr;
1124
+ }
1125
+
1126
+ .reference-grid article,
1127
+ .reference-grid.compact article,
1128
+ .faq-grid article {
1129
+ min-height: auto;
1130
+ }
1131
+
1132
+ .strip {
1133
+ margin-bottom: 56px;
1134
+ }
1135
+ }
1136
+
1137
+ @media (max-width: 560px) {
1138
+ .site-header,
1139
+ .site-footer,
1140
+ main {
1141
+ width: min(100% - 28px, 1120px);
1142
+ }
1143
+
1144
+ h1 {
1145
+ font-size: 2.7rem;
1146
+ }
1147
+
1148
+ h2 {
1149
+ font-size: 2.35rem;
1150
+ }
1151
+
1152
+ nav {
1153
+ gap: 6px;
1154
+ }
1155
+
1156
+ nav a {
1157
+ padding: 7px 9px;
1158
+ font-size: 13px;
1159
+ }
1160
+
1161
+ .hero {
1162
+ padding-top: 28px;
1163
+ }
1164
+
1165
+ .hero-lede {
1166
+ font-size: 17px;
1167
+ line-height: 1.58;
1168
+ }
1169
+
1170
+ .install-line {
1171
+ display: grid;
1172
+ width: 100%;
1173
+ }
1174
+
1175
+ .install-line code {
1176
+ overflow-x: auto;
1177
+ padding: 8px;
1178
+ }
1179
+
1180
+ .hero-actions .button {
1181
+ width: 100%;
1182
+ }
1183
+
1184
+ .connection-map,
1185
+ .trust-row {
1186
+ margin-right: 12px;
1187
+ margin-left: 12px;
1188
+ }
1189
+
1190
+ .connection-map > div,
1191
+ .trust-row > div {
1192
+ padding: 18px;
1193
+ }
1194
+
1195
+ .repo-pane {
1196
+ margin-right: 12px;
1197
+ margin-left: 12px;
1198
+ }
1199
+
1200
+ .repo-row,
1201
+ dl div {
1202
+ grid-template-columns: 1fr;
1203
+ gap: 4px;
1204
+ }
1205
+
1206
+ .section {
1207
+ padding: 68px 0;
1208
+ }
1209
+
1210
+ .safety,
1211
+ .tool-reference {
1212
+ padding: 22px;
1213
+ }
1214
+ }
1215
+
1216
+ @media (prefers-reduced-motion: reduce) {
1217
+ html {
1218
+ scroll-behavior: auto;
1219
+ }
1220
+
1221
+ *,
1222
+ *::before,
1223
+ *::after {
1224
+ scroll-behavior: auto !important;
1225
+ transition-duration: 0.01ms !important;
1226
+ animation-duration: 0.01ms !important;
1227
+ animation-iteration-count: 1 !important;
1228
+ }
1229
+ }