@oobe-protocol-labs/sap-mcp-server 0.7.3 → 0.8.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 (90) hide show
  1. package/CHANGELOG.md +139 -0
  2. package/README.md +14 -7
  3. package/USER_DOCS/00_START_HERE.md +45 -7
  4. package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +2 -0
  5. package/USER_DOCS/03_PAYMENTS_X402_PAYSH.md +13 -5
  6. package/USER_DOCS/04_CLIENT_CONFIGS.md +25 -15
  7. package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +36 -21
  8. package/assets/logos/drift.svg +12 -0
  9. package/assets/logos/jupiter.ico +0 -0
  10. package/assets/logos/mcp.svg +11 -0
  11. package/assets/logos/meteora.png +0 -0
  12. package/assets/logos/orca.ico +0 -0
  13. package/assets/logos/raydium.ico +0 -0
  14. package/assets/logos/smithery.svg +11 -0
  15. package/assets/oobe-logo.png +0 -0
  16. package/dist/config/mcp-client-injection.d.ts +26 -7
  17. package/dist/config/mcp-client-injection.d.ts.map +1 -1
  18. package/dist/config/mcp-client-injection.js +182 -58
  19. package/dist/config/mcp-client-injection.js.map +1 -1
  20. package/dist/config/wizard.d.ts.map +1 -1
  21. package/dist/config/wizard.js +92 -57
  22. package/dist/config/wizard.js.map +1 -1
  23. package/dist/core/constants.d.ts +1 -1
  24. package/dist/core/constants.js +1 -1
  25. package/dist/payments/pricing.d.ts.map +1 -1
  26. package/dist/payments/pricing.js +11 -0
  27. package/dist/payments/pricing.js.map +1 -1
  28. package/dist/payments/x402-paid-call.d.ts +85 -1
  29. package/dist/payments/x402-paid-call.d.ts.map +1 -1
  30. package/dist/payments/x402-paid-call.js +168 -4
  31. package/dist/payments/x402-paid-call.js.map +1 -1
  32. package/dist/prompts/context/sap-agent-context.prompt.js +6 -3
  33. package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
  34. package/dist/remote/public-home/escape.d.ts +11 -0
  35. package/dist/remote/public-home/escape.d.ts.map +1 -0
  36. package/dist/remote/public-home/escape.js +20 -0
  37. package/dist/remote/public-home/escape.js.map +1 -0
  38. package/dist/remote/public-home/index.d.ts +8 -0
  39. package/dist/remote/public-home/index.d.ts.map +1 -0
  40. package/dist/remote/public-home/index.js +57 -0
  41. package/dist/remote/public-home/index.js.map +1 -0
  42. package/dist/remote/public-home/scripts.d.ts +6 -0
  43. package/dist/remote/public-home/scripts.d.ts.map +1 -0
  44. package/dist/remote/public-home/scripts.js +106 -0
  45. package/dist/remote/public-home/scripts.js.map +1 -0
  46. package/dist/remote/public-home/sections.d.ts +67 -0
  47. package/dist/remote/public-home/sections.d.ts.map +1 -0
  48. package/dist/remote/public-home/sections.js +727 -0
  49. package/dist/remote/public-home/sections.js.map +1 -0
  50. package/dist/remote/public-home/styles.d.ts +6 -0
  51. package/dist/remote/public-home/styles.d.ts.map +1 -0
  52. package/dist/remote/public-home/styles.js +1534 -0
  53. package/dist/remote/public-home/styles.js.map +1 -0
  54. package/dist/remote/public-home/types.d.ts +95 -0
  55. package/dist/remote/public-home/types.d.ts.map +1 -0
  56. package/dist/remote/public-home/types.js +2 -0
  57. package/dist/remote/public-home/types.js.map +1 -0
  58. package/dist/remote/server.d.ts +41 -1
  59. package/dist/remote/server.d.ts.map +1 -1
  60. package/dist/remote/server.js +109 -292
  61. package/dist/remote/server.js.map +1 -1
  62. package/dist/security/tool-permissions.d.ts.map +1 -1
  63. package/dist/security/tool-permissions.js +5 -0
  64. package/dist/security/tool-permissions.js.map +1 -1
  65. package/dist/tools/magicblock-tools.js +6 -6
  66. package/dist/tools/magicblock-tools.js.map +1 -1
  67. package/dist/tools/profile-tools.d.ts.map +1 -1
  68. package/dist/tools/profile-tools.js +136 -33
  69. package/dist/tools/profile-tools.js.map +1 -1
  70. package/dist/tools/register-tools.d.ts.map +1 -1
  71. package/dist/tools/register-tools.js +5 -0
  72. package/dist/tools/register-tools.js.map +1 -1
  73. package/dist/tools/x402-paid-call-tool.d.ts +1 -1
  74. package/dist/tools/x402-paid-call-tool.d.ts.map +1 -1
  75. package/dist/tools/x402-paid-call-tool.js +314 -28
  76. package/dist/tools/x402-paid-call-tool.js.map +1 -1
  77. package/dist/wizard-core/desktop-flow.d.ts +40 -1
  78. package/dist/wizard-core/desktop-flow.d.ts.map +1 -1
  79. package/dist/wizard-core/desktop-flow.js +206 -15
  80. package/dist/wizard-core/desktop-flow.js.map +1 -1
  81. package/docs/03_CONFIGURATION_AND_WIZARD.md +6 -2
  82. package/docs/06_PAYMENTS_X402_AND_PAYSH.md +29 -7
  83. package/docs/07_ENDPOINTS_AND_CLIENTS.md +1 -1
  84. package/docs/14_DESKTOP_WIZARD_RELEASE.md +24 -5
  85. package/docs/15_DASHBOARD_SCREENSHARE_SCRIPT.md +137 -0
  86. package/docs/README.md +23 -2
  87. package/package.json +1 -1
  88. package/server.json +3 -3
  89. package/skills/sap-mcp/SKILL.md +23 -7
  90. package/skills/sap-payments-x402/SKILL.md +37 -13
@@ -0,0 +1,1534 @@
1
+ /**
2
+ * @name LANDING_CSS
3
+ * @description Server-rendered CSS for the public SAP MCP homepage.
4
+ */
5
+ export const LANDING_CSS = `
6
+ :root {
7
+ color-scheme: dark;
8
+ --bg: #111413;
9
+ --bg-2: #20201e;
10
+ --paper: #d9d4cd;
11
+ --paper-ink: #242320;
12
+ --ink: #f5fbfc;
13
+ --muted: #a8b9bc;
14
+ --subtle: #7e9397;
15
+ --panel: rgba(255, 255, 255, .055);
16
+ --panel-strong: rgba(255, 255, 255, .09);
17
+ --line: rgba(255, 255, 255, .14);
18
+ --line-strong: rgba(40, 216, 232, .44);
19
+ --aqua: #28d8e8;
20
+ --aqua-2: #55f1df;
21
+ --green: #8ce99a;
22
+ --yellow: #f6d365;
23
+ --coral: #ff7666;
24
+ --blue: #86a6ff;
25
+ --radius: 16px;
26
+ --content: 1180px;
27
+ --nav-height: 74px;
28
+ }
29
+
30
+ * { box-sizing: border-box; }
31
+ html { scroll-behavior: smooth; }
32
+ body {
33
+ margin: 0;
34
+ min-height: 100vh;
35
+ font: 16px/1.55 Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
36
+ color: var(--ink);
37
+ background:
38
+ linear-gradient(rgba(40, 216, 232, .025) 1px, transparent 1px),
39
+ linear-gradient(90deg, rgba(40, 216, 232, .025) 1px, transparent 1px),
40
+ var(--bg);
41
+ background-size: 80px 80px;
42
+ overflow-x: hidden;
43
+ }
44
+ body::before {
45
+ content: "";
46
+ position: fixed;
47
+ inset: 0;
48
+ z-index: -1;
49
+ pointer-events: none;
50
+ background:
51
+ radial-gradient(circle at 16% 10%, rgba(40, 216, 232, .12), transparent 30%),
52
+ radial-gradient(circle at 84% 18%, rgba(134, 166, 255, .08), transparent 28%),
53
+ linear-gradient(180deg, rgba(255,255,255,.025), transparent 40%);
54
+ }
55
+
56
+ a { color: inherit; }
57
+ a:focus-visible, button:focus-visible {
58
+ outline: 2px solid var(--aqua);
59
+ outline-offset: 3px;
60
+ }
61
+
62
+ .skip-link {
63
+ position: fixed;
64
+ left: 16px;
65
+ top: 16px;
66
+ z-index: 100;
67
+ transform: translateY(-150%);
68
+ border: 1px solid var(--line-strong);
69
+ border-radius: 999px;
70
+ padding: 10px 14px;
71
+ background: #061517;
72
+ color: var(--ink);
73
+ }
74
+ .skip-link:focus { transform: translateY(0); }
75
+
76
+ .site-nav {
77
+ position: sticky;
78
+ top: 12px;
79
+ z-index: 20;
80
+ width: min(calc(100% - 32px), var(--content));
81
+ min-height: var(--nav-height);
82
+ margin: 12px auto 0;
83
+ padding: 10px 12px;
84
+ display: grid;
85
+ grid-template-columns: auto 1fr auto;
86
+ gap: 14px;
87
+ align-items: center;
88
+ border: 1px solid rgba(255, 255, 255, .11);
89
+ border-radius: 999px;
90
+ background: rgba(11, 17, 17, .78);
91
+ box-shadow: 0 18px 44px rgba(0, 0, 0, .28);
92
+ backdrop-filter: blur(18px);
93
+ }
94
+ .brand {
95
+ display: inline-flex;
96
+ align-items: center;
97
+ gap: 10px;
98
+ min-width: 0;
99
+ text-decoration: none;
100
+ }
101
+ .brand img {
102
+ width: 42px;
103
+ height: 42px;
104
+ border-radius: 12px;
105
+ box-shadow: 0 0 0 1px rgba(40, 216, 232, .2);
106
+ }
107
+ .brand strong {
108
+ display: block;
109
+ font-size: 15px;
110
+ line-height: 1.1;
111
+ }
112
+ .brand span {
113
+ display: block;
114
+ color: var(--subtle);
115
+ font-size: 12px;
116
+ }
117
+ .nav-center {
118
+ display: flex;
119
+ justify-content: center;
120
+ align-items: center;
121
+ gap: 6px;
122
+ min-width: 0;
123
+ }
124
+ .nav-pill,
125
+ .nav-dropdown summary,
126
+ .nav-actions a,
127
+ .button {
128
+ min-height: 42px;
129
+ display: inline-flex;
130
+ align-items: center;
131
+ justify-content: center;
132
+ border: 1px solid rgba(255, 255, 255, .12);
133
+ border-radius: 999px;
134
+ padding: 10px 14px;
135
+ color: var(--ink);
136
+ text-decoration: none;
137
+ font-weight: 800;
138
+ font-size: 14px;
139
+ background: rgba(255, 255, 255, .04);
140
+ }
141
+ .nav-pill:hover,
142
+ .nav-dropdown summary:hover,
143
+ .nav-actions a:hover,
144
+ .button:hover {
145
+ border-color: var(--line-strong);
146
+ background: rgba(40, 216, 232, .09);
147
+ }
148
+ .nav-pill.is-active,
149
+ .nav-pill-strong {
150
+ border-color: rgba(40, 216, 232, .28);
151
+ background: rgba(40, 216, 232, .09);
152
+ }
153
+ .nav-pill-strong {
154
+ color: var(--aqua);
155
+ }
156
+ .oobe-nav {
157
+ gap: 8px;
158
+ padding-left: 10px;
159
+ }
160
+ .oobe-nav img {
161
+ width: 24px;
162
+ height: 24px;
163
+ border-radius: 999px;
164
+ box-shadow: 0 0 0 1px rgba(140, 233, 154, .28);
165
+ }
166
+ .nav-dropdown {
167
+ position: relative;
168
+ }
169
+ .nav-dropdown summary {
170
+ gap: 7px;
171
+ cursor: pointer;
172
+ list-style: none;
173
+ user-select: none;
174
+ }
175
+ .nav-dropdown summary::-webkit-details-marker {
176
+ display: none;
177
+ }
178
+ .nav-dropdown[open] summary {
179
+ border-color: var(--line-strong);
180
+ background: rgba(40, 216, 232, .11);
181
+ }
182
+ .nav-dropdown[open] summary span {
183
+ transform: rotate(180deg);
184
+ }
185
+ .nav-dropdown summary span {
186
+ color: var(--aqua);
187
+ transition: transform .18s ease;
188
+ }
189
+ .nav-menu {
190
+ position: absolute;
191
+ top: calc(100% + 12px);
192
+ left: 50%;
193
+ z-index: 40;
194
+ display: grid;
195
+ gap: 8px;
196
+ width: min(420px, calc(100vw - 34px));
197
+ max-height: min(72vh, 560px);
198
+ overflow: auto;
199
+ border: 1px solid rgba(255, 255, 255, .12);
200
+ border-radius: 22px;
201
+ padding: 10px;
202
+ background: rgba(10, 17, 18, .9);
203
+ box-shadow: 0 28px 80px rgba(0, 0, 0, .44);
204
+ backdrop-filter: blur(20px);
205
+ -webkit-backdrop-filter: blur(20px);
206
+ transform: translateX(-50%);
207
+ }
208
+ .nav-menu-wide {
209
+ width: min(690px, calc(100vw - 34px));
210
+ grid-template-columns: repeat(2, minmax(0, 1fr));
211
+ }
212
+ .nav-menu-link {
213
+ display: grid;
214
+ grid-template-columns: 42px 1fr;
215
+ gap: 12px;
216
+ align-items: start;
217
+ min-width: 0;
218
+ border: 1px solid rgba(255, 255, 255, .08);
219
+ border-radius: 16px;
220
+ padding: 12px;
221
+ color: var(--ink);
222
+ text-decoration: none;
223
+ background: rgba(255, 255, 255, .04);
224
+ }
225
+ .nav-menu-link:hover {
226
+ border-color: rgba(40, 216, 232, .34);
227
+ background: rgba(40, 216, 232, .075);
228
+ }
229
+ .nav-menu-link span:not(.nav-glyph) {
230
+ min-width: 0;
231
+ }
232
+ .nav-menu-link strong,
233
+ .nav-menu-link small {
234
+ display: block;
235
+ }
236
+ .nav-menu-link strong {
237
+ font-size: 14px;
238
+ line-height: 1.2;
239
+ }
240
+ .nav-menu-link small {
241
+ margin-top: 5px;
242
+ color: var(--subtle);
243
+ font-size: 12px;
244
+ line-height: 1.35;
245
+ }
246
+ .nav-glyph {
247
+ display: grid;
248
+ place-items: center;
249
+ width: 42px;
250
+ height: 42px;
251
+ border: 1px solid rgba(40, 216, 232, .2);
252
+ border-radius: 14px;
253
+ color: var(--aqua);
254
+ background: rgba(40, 216, 232, .08);
255
+ font-weight: 900;
256
+ font-size: 12px;
257
+ }
258
+ .nav-actions {
259
+ display: flex;
260
+ gap: 8px;
261
+ align-items: center;
262
+ }
263
+ .nav-install {
264
+ gap: 8px;
265
+ }
266
+ .install-os {
267
+ display: none;
268
+ width: 20px;
269
+ height: 20px;
270
+ color: #061517;
271
+ }
272
+ .install-os svg {
273
+ width: 20px;
274
+ height: 20px;
275
+ fill: currentColor;
276
+ }
277
+ html[data-os="windows"] .install-os-windows,
278
+ html[data-os="macos"] .install-os-macos,
279
+ html[data-os="linux"] .install-os-linux {
280
+ display: inline-grid;
281
+ place-items: center;
282
+ }
283
+ .button.primary {
284
+ border-color: rgba(40, 216, 232, .58);
285
+ color: #061517;
286
+ background: var(--aqua);
287
+ }
288
+ .version-pill {
289
+ border: 1px solid rgba(255, 255, 255, .12);
290
+ border-radius: 999px;
291
+ padding: 9px 12px;
292
+ color: var(--muted);
293
+ font-weight: 800;
294
+ font-size: 13px;
295
+ white-space: nowrap;
296
+ }
297
+
298
+ .page-shell {
299
+ width: min(calc(100% - 32px), var(--content));
300
+ margin: 0 auto;
301
+ }
302
+
303
+ .hero {
304
+ min-height: calc(96svh - var(--nav-height));
305
+ display: grid;
306
+ grid-template-columns: minmax(0, .98fr) minmax(380px, 560px);
307
+ gap: 56px;
308
+ align-items: center;
309
+ padding: 78px 0 52px;
310
+ }
311
+ .hero-copy { align-self: center; }
312
+ .eyebrow {
313
+ margin: 0 0 18px;
314
+ color: var(--aqua);
315
+ font-weight: 900;
316
+ font-size: 13px;
317
+ text-transform: uppercase;
318
+ }
319
+ h1, h2, h3, p { margin-top: 0; }
320
+ h1 {
321
+ max-width: 760px;
322
+ margin-bottom: 22px;
323
+ font-size: clamp(56px, 7vw, 108px);
324
+ line-height: .84;
325
+ letter-spacing: 0;
326
+ }
327
+ .lead {
328
+ max-width: 620px;
329
+ color: var(--muted);
330
+ font-size: clamp(17px, 1.7vw, 22px);
331
+ }
332
+ .hero-actions,
333
+ .inline-actions {
334
+ display: flex;
335
+ flex-wrap: wrap;
336
+ gap: 10px;
337
+ align-items: center;
338
+ margin-top: 30px;
339
+ }
340
+ .micro-copy {
341
+ margin-top: 18px;
342
+ color: var(--subtle);
343
+ font-size: 14px;
344
+ }
345
+
346
+ .hero-visual {
347
+ position: relative;
348
+ min-height: 620px;
349
+ border: 1px solid rgba(255,255,255,.11);
350
+ border-radius: 34px;
351
+ background:
352
+ linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.035)),
353
+ radial-gradient(circle at 50% 42%, rgba(40,216,232,var(--hero-glow, .16)), transparent 42%);
354
+ box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 34px 90px rgba(0,0,0,.36);
355
+ overflow: hidden;
356
+ }
357
+ .hero-visual::before {
358
+ content: "";
359
+ position: absolute;
360
+ inset: 18px;
361
+ border: 1px solid rgba(255,255,255,.07);
362
+ border-radius: 26px;
363
+ pointer-events: none;
364
+ }
365
+ .terminal-strip {
366
+ position: absolute;
367
+ left: 24px;
368
+ right: 24px;
369
+ top: 24px;
370
+ display: flex;
371
+ align-items: center;
372
+ gap: 8px;
373
+ min-height: 42px;
374
+ border: 1px solid rgba(255,255,255,.09);
375
+ border-radius: 999px;
376
+ padding: 0 14px;
377
+ color: var(--subtle);
378
+ background: rgba(0,0,0,.22);
379
+ }
380
+ .terminal-strip span {
381
+ width: 8px;
382
+ height: 8px;
383
+ border-radius: 999px;
384
+ background: var(--coral);
385
+ }
386
+ .terminal-strip span:nth-child(2) { background: var(--yellow); }
387
+ .terminal-strip span:nth-child(3) { background: var(--green); }
388
+ .terminal-strip code {
389
+ margin-left: auto;
390
+ color: var(--aqua);
391
+ font-size: 12px;
392
+ }
393
+ .orbital-engine {
394
+ position: absolute;
395
+ inset: 86px 26px 124px;
396
+ display: grid;
397
+ place-items: center;
398
+ perspective: 1100px;
399
+ }
400
+ .orbit {
401
+ position: absolute;
402
+ width: min(78%, 390px);
403
+ aspect-ratio: 1;
404
+ border: 1px solid rgba(40,216,232,.24);
405
+ border-radius: 42%;
406
+ transform: rotateX(var(--engine-tilt, 0deg)) rotateZ(var(--orbit-a, 0deg));
407
+ }
408
+ .orbit-b {
409
+ width: min(58%, 300px);
410
+ border-color: rgba(246,211,101,.24);
411
+ transform: rotateX(var(--engine-tilt, 0deg)) rotateZ(var(--orbit-b, 0deg));
412
+ }
413
+ .orbit-c {
414
+ width: min(40%, 220px);
415
+ border-color: rgba(255,118,102,.22);
416
+ transform: rotateX(var(--engine-tilt, 0deg)) rotateZ(var(--orbit-c, 0deg));
417
+ }
418
+ .orbit-core {
419
+ position: relative;
420
+ z-index: 3;
421
+ display: grid;
422
+ place-items: center;
423
+ width: 148px;
424
+ height: 148px;
425
+ border: 1px solid rgba(40,216,232,.45);
426
+ border-radius: 34px;
427
+ color: var(--aqua);
428
+ background: rgba(4, 16, 18, .76);
429
+ box-shadow: 0 0 70px rgba(40,216,232,.16), inset 0 0 44px rgba(40,216,232,.08);
430
+ transform: rotateZ(var(--engine-spin, 0deg));
431
+ }
432
+ .orbit-core img { border-radius: 16px; }
433
+ .orbit-core strong {
434
+ margin-top: 8px;
435
+ font-size: 28px;
436
+ line-height: 1;
437
+ }
438
+ .orbit-chip {
439
+ position: absolute;
440
+ z-index: 4;
441
+ width: 118px;
442
+ border: 1px solid rgba(255,255,255,.12);
443
+ border-radius: 16px;
444
+ padding: 12px;
445
+ background: rgba(8, 16, 17, .78);
446
+ box-shadow: 0 20px 40px rgba(0,0,0,.24);
447
+ }
448
+ .orbit-chip b,
449
+ .orbit-chip span { display: block; }
450
+ .orbit-chip b { color: var(--ink); }
451
+ .orbit-chip span { color: var(--subtle); font-size: 12px; }
452
+ .chip-a { left: calc(12% - var(--chip-spread, 0px)); top: 22%; transform: rotate(-12deg); }
453
+ .chip-b { right: calc(10% - var(--chip-spread, 0px)); top: 24%; transform: rotate(12deg); }
454
+ .chip-c { left: calc(13% - var(--chip-spread, 0px)); bottom: 18%; transform: rotate(10deg); }
455
+ .chip-d { right: calc(12% - var(--chip-spread, 0px)); bottom: 16%; transform: rotate(-10deg); }
456
+ .hero-bento-mini {
457
+ position: absolute;
458
+ left: 24px;
459
+ right: 24px;
460
+ bottom: 24px;
461
+ display: grid;
462
+ grid-template-columns: repeat(3, minmax(0, 1fr));
463
+ gap: 10px;
464
+ }
465
+ .hero-bento-mini div {
466
+ border: 1px solid rgba(255,255,255,.1);
467
+ border-radius: 16px;
468
+ padding: 14px;
469
+ background: rgba(255,255,255,.04);
470
+ }
471
+ .hero-bento-mini span,
472
+ .hero-bento-mini strong { display: block; }
473
+ .hero-bento-mini span {
474
+ color: var(--subtle);
475
+ font-size: 11px;
476
+ font-weight: 900;
477
+ text-transform: uppercase;
478
+ }
479
+ .hero-bento-mini strong {
480
+ margin-top: 4px;
481
+ font-size: 20px;
482
+ }
483
+
484
+ .bento-strip {
485
+ padding: 34px 0 96px;
486
+ }
487
+ .bento-stack {
488
+ display: grid;
489
+ grid-template-columns: minmax(0, .92fr) minmax(480px, .68fr);
490
+ gap: 58px;
491
+ align-items: start;
492
+ }
493
+ .bento-sticky-copy {
494
+ position: sticky;
495
+ top: 112px;
496
+ min-height: min(74vh, 760px);
497
+ display: flex;
498
+ flex-direction: column;
499
+ justify-content: flex-end;
500
+ padding: 4px 0 10px;
501
+ }
502
+ .bento-sticky-copy h2 {
503
+ max-width: 720px;
504
+ margin: 0 0 18px;
505
+ font-size: clamp(52px, 5.8vw, 104px);
506
+ line-height: .88;
507
+ }
508
+ .bento-sticky-copy p:last-child {
509
+ max-width: 620px;
510
+ margin-bottom: 0;
511
+ color: var(--muted);
512
+ font-size: clamp(18px, 1.6vw, 24px);
513
+ }
514
+ .bento-grid {
515
+ display: grid;
516
+ grid-template-columns: repeat(4, minmax(0, 1fr));
517
+ grid-auto-rows: minmax(260px, auto);
518
+ gap: 14px;
519
+ }
520
+ .bento-card {
521
+ position: relative;
522
+ grid-column: span 1;
523
+ min-height: 260px;
524
+ border: 1px solid rgba(255,255,255,.11);
525
+ border-radius: 26px;
526
+ padding: 22px;
527
+ overflow: hidden;
528
+ background: linear-gradient(180deg, rgba(255,255,255,.075), rgba(255,255,255,.035));
529
+ }
530
+ .bento-card::after {
531
+ content: "";
532
+ position: absolute;
533
+ right: -36px;
534
+ bottom: -48px;
535
+ width: 150px;
536
+ height: 150px;
537
+ border-radius: 44px;
538
+ opacity: .14;
539
+ background: var(--aqua);
540
+ transform: rotate(16deg);
541
+ }
542
+ .bento-card[data-tone="coral"]::after { background: var(--coral); }
543
+ .bento-card[data-tone="yellow"]::after { background: var(--yellow); }
544
+ .bento-card[data-tone="green"]::after { background: var(--green); }
545
+ .bento-card[data-tone="blue"]::after { background: var(--blue); }
546
+ .bento-card.wide { grid-column: span 2; }
547
+ .bento-card.full {
548
+ grid-column: 1 / -1;
549
+ min-height: 220px;
550
+ }
551
+ .bento-card.tall { grid-column: span 2; grid-row: span 2; }
552
+ .bento-card span {
553
+ color: var(--aqua);
554
+ font-size: 12px;
555
+ font-weight: 900;
556
+ text-transform: uppercase;
557
+ }
558
+ .bento-card h3 {
559
+ margin: 14px 0 10px;
560
+ font-size: clamp(24px, 3vw, 40px);
561
+ line-height: .96;
562
+ }
563
+ .bento-card p { color: var(--muted); }
564
+ .bento-card code {
565
+ display: block;
566
+ margin: 18px 0;
567
+ overflow-wrap: anywhere;
568
+ color: var(--aqua);
569
+ }
570
+
571
+ .machine-section {
572
+ position: relative;
573
+ width: 100vw;
574
+ min-height: 180vh;
575
+ margin-left: calc(50% - 50vw);
576
+ padding: 110px max(16px, calc((100vw - var(--content)) / 2));
577
+ border-top: 1px solid rgba(255, 255, 255, .08);
578
+ border-bottom: 1px solid rgba(255, 255, 255, .08);
579
+ background:
580
+ linear-gradient(rgba(40, 216, 232, .022) 1px, transparent 1px),
581
+ linear-gradient(90deg, rgba(40, 216, 232, .022) 1px, transparent 1px),
582
+ #0c1111;
583
+ background-size: 80px 80px;
584
+ color: var(--ink);
585
+ overflow: clip;
586
+ }
587
+ .machine-copy {
588
+ position: sticky;
589
+ top: 112px;
590
+ z-index: 2;
591
+ width: min(430px, 100%);
592
+ }
593
+ .machine-copy h2 {
594
+ margin: 0 0 16px;
595
+ font-size: clamp(36px, 5vw, 72px);
596
+ line-height: .9;
597
+ }
598
+ .machine-copy p { color: var(--muted); }
599
+ .machine-stage {
600
+ position: sticky;
601
+ top: 90px;
602
+ height: min(76vh, 760px);
603
+ margin-left: min(460px, 42vw);
604
+ display: grid;
605
+ place-items: center;
606
+ }
607
+ .machine-core {
608
+ position: relative;
609
+ z-index: 4;
610
+ display: grid;
611
+ place-items: center;
612
+ width: 270px;
613
+ height: 190px;
614
+ border: 0;
615
+ border-radius: 0;
616
+ background: transparent;
617
+ color: var(--aqua);
618
+ box-shadow: none;
619
+ transform: rotate(var(--machine-rotate, 0deg));
620
+ }
621
+ .machine-logo-pair {
622
+ display: flex;
623
+ align-items: center;
624
+ gap: 22px;
625
+ filter: drop-shadow(0 28px 50px rgba(0,0,0,.36));
626
+ }
627
+ .machine-logo-pair img {
628
+ width: 100px;
629
+ height: 100px;
630
+ border-radius: 25px;
631
+ }
632
+ .solana-mark {
633
+ width: 112px;
634
+ height: auto;
635
+ color: var(--ink);
636
+ }
637
+ .solana-mark path {
638
+ fill: rgba(245, 251, 252, .94);
639
+ }
640
+ .machine-core-ring {
641
+ position: absolute;
642
+ inset: -52px;
643
+ border: 1px solid rgba(40,216,232,.14);
644
+ border-radius: 50%;
645
+ }
646
+ .machine-part {
647
+ position: absolute;
648
+ z-index: 3;
649
+ width: min(250px, 36vw);
650
+ border: 1px solid rgba(255,255,255,.12);
651
+ border-radius: 20px;
652
+ padding: 18px;
653
+ background: rgba(255,255,255,.055);
654
+ box-shadow: 0 20px 40px rgba(0,0,0,.18);
655
+ opacity: var(--machine-fade, .2);
656
+ }
657
+ .machine-part span {
658
+ color: var(--aqua);
659
+ font-weight: 900;
660
+ font-size: 12px;
661
+ }
662
+ .machine-part strong {
663
+ display: block;
664
+ margin: 6px 0;
665
+ font-size: 22px;
666
+ }
667
+ .machine-part p {
668
+ margin: 0;
669
+ color: var(--muted);
670
+ overflow-wrap: anywhere;
671
+ }
672
+ .part-remote { transform: translate(calc(-230px - var(--machine-open, 0px)), -180px); }
673
+ .part-policy { transform: translate(calc(220px + var(--machine-open, 0px)), -160px); }
674
+ .part-payments { transform: translate(calc(-230px - var(--machine-open, 0px)), 170px); }
675
+ .part-signer { transform: translate(calc(230px + var(--machine-open, 0px)), 160px); }
676
+ .machine-rail {
677
+ position: absolute;
678
+ width: min(780px, 72vw);
679
+ height: 1px;
680
+ background: rgba(40,216,232,.2);
681
+ transform: rotate(24deg) scaleX(var(--machine-rail-scale, .4));
682
+ }
683
+ .rail-b { transform: rotate(-24deg) scaleX(var(--machine-rail-scale, .4)); }
684
+
685
+ .section {
686
+ padding: 86px 0;
687
+ }
688
+ .section.paper {
689
+ width: 100vw;
690
+ margin-left: calc(50% - 50vw);
691
+ padding-left: max(16px, calc((100vw - var(--content)) / 2));
692
+ padding-right: max(16px, calc((100vw - var(--content)) / 2));
693
+ color: var(--paper-ink);
694
+ background: var(--paper);
695
+ }
696
+ .section-head {
697
+ display: grid;
698
+ gap: 10px;
699
+ max-width: 740px;
700
+ margin-bottom: 28px;
701
+ }
702
+ .section h2 {
703
+ margin-bottom: 0;
704
+ font-size: 44px;
705
+ line-height: 1;
706
+ letter-spacing: 0;
707
+ }
708
+ .section-head p {
709
+ color: var(--muted);
710
+ font-size: 18px;
711
+ }
712
+ .paper .section-head p { color: #67615a; }
713
+ .paper .feature {
714
+ border-color: rgba(36, 35, 32, .16);
715
+ background: rgba(36, 35, 32, .055);
716
+ }
717
+ .paper .feature p { color: #67615a; }
718
+
719
+ .protocol-surface {
720
+ position: relative;
721
+ width: 100vw;
722
+ margin-left: calc(50% - 50vw);
723
+ padding-left: max(16px, calc((100vw - var(--content)) / 2));
724
+ padding-right: max(16px, calc((100vw - var(--content)) / 2));
725
+ border-top: 1px solid rgba(255, 255, 255, .08);
726
+ border-bottom: 1px solid rgba(255, 255, 255, .08);
727
+ background:
728
+ radial-gradient(circle at 20% 10%, rgba(40, 216, 232, .13), transparent 30%),
729
+ linear-gradient(rgba(40, 216, 232, .022) 1px, transparent 1px),
730
+ linear-gradient(90deg, rgba(40, 216, 232, .022) 1px, transparent 1px),
731
+ #0c1111;
732
+ background-size: auto, 80px 80px, 80px 80px;
733
+ color: var(--ink);
734
+ }
735
+ .protocol-surface .section-head {
736
+ max-width: 820px;
737
+ }
738
+ .protocol-bento {
739
+ display: grid;
740
+ grid-template-columns: repeat(4, minmax(0, 1fr));
741
+ grid-auto-rows: minmax(260px, auto);
742
+ gap: 14px;
743
+ }
744
+ .protocol-card {
745
+ position: relative;
746
+ grid-column: span 1;
747
+ min-height: 260px;
748
+ display: flex;
749
+ flex-direction: column;
750
+ justify-content: flex-end;
751
+ border: 1px solid rgba(255, 255, 255, .11);
752
+ border-radius: 28px;
753
+ padding: 22px;
754
+ overflow: hidden;
755
+ background:
756
+ linear-gradient(180deg, rgba(255,255,255,.075), rgba(255,255,255,.032)),
757
+ rgba(255,255,255,.035);
758
+ box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
759
+ animation: surfaceRise .34s cubic-bezier(0, 0, .2, 1) both, bentoDrift 14s ease-in-out infinite;
760
+ }
761
+ .protocol-card:nth-child(2n) { animation-delay: .06s, -4s; }
762
+ .protocol-card:nth-child(3n) { animation-delay: .12s, -8s; }
763
+ .protocol-card::before {
764
+ content: "";
765
+ position: absolute;
766
+ inset: auto -54px -68px auto;
767
+ width: 180px;
768
+ height: 180px;
769
+ border-radius: 54px;
770
+ background: linear-gradient(135deg, rgba(40,216,232,.2), rgba(140,233,154,.06));
771
+ transform: rotate(18deg);
772
+ opacity: .1;
773
+ }
774
+ .protocol-card.wide { grid-column: span 2; }
775
+ .protocol-card.tall { grid-column: span 1; grid-row: span 2; }
776
+ .protocol-sap {
777
+ min-height: 534px;
778
+ }
779
+ .protocol-index {
780
+ position: absolute;
781
+ top: 18px;
782
+ left: 18px;
783
+ display: grid;
784
+ place-items: center;
785
+ width: 42px;
786
+ height: 42px;
787
+ border: 1px solid rgba(255,255,255,.13);
788
+ border-radius: 999px;
789
+ color: var(--muted);
790
+ background: rgba(255,255,255,.045);
791
+ font-size: 12px;
792
+ font-weight: 900;
793
+ }
794
+ .protocol-logo-rail {
795
+ position: absolute;
796
+ top: 18px;
797
+ right: 18px;
798
+ width: min(270px, 48%);
799
+ overflow: hidden;
800
+ mask-image: linear-gradient(90deg, transparent, #000 18%, #000 82%, transparent);
801
+ z-index: 2;
802
+ }
803
+ .protocol-logo-rail div {
804
+ display: flex;
805
+ width: max-content;
806
+ gap: 8px;
807
+ animation: logoRail 22s linear infinite;
808
+ }
809
+ .protocol-logo-rail span {
810
+ display: grid;
811
+ place-items: center;
812
+ width: 42px;
813
+ height: 42px;
814
+ border: 1px solid rgba(255,255,255,.12);
815
+ border-radius: 999px;
816
+ color: rgba(245,251,252,.9);
817
+ background: rgba(255,255,255,.055);
818
+ backdrop-filter: blur(10px);
819
+ }
820
+ .protocol-logo-rail img {
821
+ width: 28px;
822
+ height: 28px;
823
+ border-radius: 999px;
824
+ object-fit: cover;
825
+ }
826
+ .protocol-avatar {
827
+ position: absolute;
828
+ top: 18px;
829
+ right: 18px;
830
+ display: grid;
831
+ place-items: center;
832
+ width: 44px;
833
+ height: 44px;
834
+ border: 1px solid rgba(255,255,255,.1);
835
+ border-radius: 14px;
836
+ background: rgba(255,255,255,.045);
837
+ box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
838
+ z-index: 2;
839
+ }
840
+ .protocol-avatar .solana-mark {
841
+ width: 30px;
842
+ }
843
+ .sap-avatar {
844
+ width: 56px;
845
+ height: 56px;
846
+ border-radius: 18px;
847
+ background: rgba(40,216,232,.06);
848
+ }
849
+ .sap-avatar img {
850
+ width: 40px;
851
+ height: 40px;
852
+ border-radius: 12px;
853
+ }
854
+ .protocol-card strong,
855
+ .protocol-card p {
856
+ position: relative;
857
+ z-index: 1;
858
+ }
859
+ .protocol-card strong {
860
+ display: block;
861
+ max-width: 360px;
862
+ margin-bottom: 10px;
863
+ font-size: clamp(24px, 3vw, 42px);
864
+ line-height: .96;
865
+ }
866
+ .protocol-card p {
867
+ max-width: 460px;
868
+ margin-bottom: 0;
869
+ color: var(--muted);
870
+ }
871
+ @keyframes bentoDrift {
872
+ 0%, 100% { transform: translateY(0); }
873
+ 50% { transform: translateY(-4px); }
874
+ }
875
+ @keyframes surfaceRise {
876
+ from {
877
+ opacity: 0;
878
+ filter: blur(8px);
879
+ }
880
+ to {
881
+ opacity: 1;
882
+ filter: blur(0);
883
+ }
884
+ }
885
+ @keyframes logoRail {
886
+ from { transform: translateX(0); }
887
+ to { transform: translateX(-50%); }
888
+ }
889
+
890
+ .registry-section {
891
+ padding-top: 94px;
892
+ }
893
+ .registry-grid {
894
+ display: grid;
895
+ grid-template-columns: repeat(2, minmax(0, 1fr));
896
+ gap: 14px;
897
+ }
898
+ .registry-card {
899
+ position: relative;
900
+ display: grid;
901
+ grid-template-columns: 74px 1fr auto;
902
+ gap: 16px;
903
+ align-items: center;
904
+ min-height: 154px;
905
+ border: 1px solid rgba(255,255,255,.11);
906
+ border-radius: 28px;
907
+ padding: 22px;
908
+ color: var(--ink);
909
+ text-decoration: none;
910
+ overflow: hidden;
911
+ background:
912
+ linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,.032)),
913
+ rgba(255,255,255,.04);
914
+ animation: surfaceRise .34s cubic-bezier(0, 0, .2, 1) both;
915
+ transition: border-color .18s ease, background .18s ease, transform .18s ease;
916
+ }
917
+ .registry-card:hover {
918
+ border-color: var(--line-strong);
919
+ background: rgba(40,216,232,.075);
920
+ transform: translateY(-2px);
921
+ }
922
+ .registry-logo {
923
+ display: grid;
924
+ place-items: center;
925
+ width: 74px;
926
+ height: 74px;
927
+ border: 1px solid rgba(40,216,232,.24);
928
+ border-radius: 22px;
929
+ color: var(--aqua);
930
+ background: rgba(40,216,232,.08);
931
+ font-weight: 950;
932
+ }
933
+ .registry-logo img {
934
+ width: 44px;
935
+ height: 44px;
936
+ object-fit: contain;
937
+ }
938
+ .registry-copy {
939
+ display: grid;
940
+ gap: 6px;
941
+ min-width: 0;
942
+ }
943
+ .registry-copy strong {
944
+ font-size: clamp(24px, 3vw, 38px);
945
+ line-height: 1;
946
+ }
947
+ .registry-copy small {
948
+ color: var(--muted);
949
+ font-size: 15px;
950
+ line-height: 1.45;
951
+ }
952
+ .registry-status {
953
+ align-self: start;
954
+ border: 1px solid rgba(140,233,154,.28);
955
+ border-radius: 999px;
956
+ padding: 8px 10px;
957
+ color: var(--green);
958
+ background: rgba(140,233,154,.08);
959
+ font-size: 12px;
960
+ font-weight: 900;
961
+ }
962
+
963
+ .metric-grid,
964
+ .feature-grid,
965
+ .install-grid,
966
+ .setup-grid,
967
+ .endpoint-grid,
968
+ .download-grid {
969
+ display: grid;
970
+ gap: 14px;
971
+ }
972
+ .metric-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
973
+ .feature-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
974
+ .install-grid { grid-template-columns: 1.15fr .85fr; }
975
+ .setup-grid { grid-template-columns: minmax(0, .95fr) minmax(380px, 1.05fr); }
976
+ .endpoint-grid { grid-template-columns: 1.35fr .65fr; }
977
+ .download-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
978
+
979
+ .card,
980
+ .metric,
981
+ .feature,
982
+ .download-card,
983
+ .code-block {
984
+ border: 1px solid var(--line);
985
+ border-radius: var(--radius);
986
+ background: var(--panel);
987
+ }
988
+ .card,
989
+ .feature {
990
+ padding: 22px;
991
+ }
992
+ .card,
993
+ .metric,
994
+ .feature,
995
+ .bento-card,
996
+ .download-card,
997
+ .doc-tile {
998
+ overflow-wrap: anywhere;
999
+ }
1000
+ .metric {
1001
+ padding: 20px;
1002
+ }
1003
+ .metric span,
1004
+ .feature span,
1005
+ .download-card > span:not(.os-mark) > span {
1006
+ display: block;
1007
+ color: var(--subtle);
1008
+ font-size: 12px;
1009
+ font-weight: 900;
1010
+ text-transform: uppercase;
1011
+ }
1012
+ .metric strong {
1013
+ display: block;
1014
+ margin-top: 6px;
1015
+ font-size: 48px;
1016
+ line-height: 1;
1017
+ }
1018
+ .metric p,
1019
+ .feature p,
1020
+ .card p {
1021
+ color: var(--muted);
1022
+ }
1023
+ .feature strong {
1024
+ display: block;
1025
+ margin: 8px 0;
1026
+ font-size: 21px;
1027
+ }
1028
+ .feature[data-tone="coral"] span { color: var(--coral); }
1029
+ .feature[data-tone="yellow"] span { color: var(--yellow); }
1030
+ .feature[data-tone="green"] span { color: var(--green); }
1031
+ .feature[data-tone="blue"] span { color: var(--blue); }
1032
+ .feature[data-tone="aqua"] span { color: var(--aqua); }
1033
+
1034
+ .step-list {
1035
+ display: grid;
1036
+ gap: 12px;
1037
+ margin: 18px 0 0;
1038
+ padding: 0;
1039
+ list-style: none;
1040
+ }
1041
+ .step-list li {
1042
+ display: grid;
1043
+ grid-template-columns: 34px 1fr;
1044
+ gap: 12px;
1045
+ align-items: start;
1046
+ min-width: 0;
1047
+ }
1048
+ .step-list b {
1049
+ display: grid;
1050
+ place-items: center;
1051
+ width: 34px;
1052
+ height: 34px;
1053
+ border: 1px solid var(--line-strong);
1054
+ border-radius: 999px;
1055
+ color: var(--aqua);
1056
+ }
1057
+ .step-list code,
1058
+ .code-block code {
1059
+ white-space: pre-wrap;
1060
+ overflow-wrap: anywhere;
1061
+ word-break: break-word;
1062
+ }
1063
+ .code-block {
1064
+ margin-top: 14px;
1065
+ padding: 16px;
1066
+ overflow: auto;
1067
+ max-width: 100%;
1068
+ color: #d8faff;
1069
+ background: rgba(0, 0, 0, .34);
1070
+ }
1071
+ .command-stack {
1072
+ display: grid;
1073
+ gap: 12px;
1074
+ margin-top: 18px;
1075
+ }
1076
+ .command-stack > div > span {
1077
+ display: block;
1078
+ margin-bottom: 8px;
1079
+ color: var(--subtle);
1080
+ font-size: 12px;
1081
+ font-weight: 900;
1082
+ text-transform: uppercase;
1083
+ }
1084
+ .download-actions,
1085
+ .step-downloads {
1086
+ display: grid;
1087
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1088
+ gap: 10px;
1089
+ margin-top: 18px;
1090
+ }
1091
+ .step-downloads {
1092
+ margin-top: 12px;
1093
+ }
1094
+ .download-action {
1095
+ display: grid;
1096
+ grid-template-columns: auto 1fr;
1097
+ gap: 12px;
1098
+ align-items: center;
1099
+ min-width: 0;
1100
+ border: 1px solid var(--line);
1101
+ border-radius: 16px;
1102
+ padding: 12px;
1103
+ color: var(--ink);
1104
+ text-decoration: none;
1105
+ background: rgba(255, 255, 255, .045);
1106
+ transition: border-color .18s ease, background .18s ease, transform .18s ease;
1107
+ }
1108
+ .download-action:hover {
1109
+ border-color: var(--line-strong);
1110
+ background: rgba(40, 216, 232, .08);
1111
+ transform: translateY(-2px);
1112
+ }
1113
+ .download-action .os-mark {
1114
+ width: 44px;
1115
+ height: 44px;
1116
+ border-radius: 14px;
1117
+ }
1118
+ .download-action .os-mark svg {
1119
+ width: 26px;
1120
+ height: 26px;
1121
+ }
1122
+ .download-action span:last-child {
1123
+ display: grid;
1124
+ gap: 2px;
1125
+ min-width: 0;
1126
+ }
1127
+ .download-action strong,
1128
+ .download-action small {
1129
+ display: block;
1130
+ }
1131
+ .download-action small {
1132
+ color: var(--subtle);
1133
+ font-size: 12px;
1134
+ }
1135
+ .download-card {
1136
+ display: grid;
1137
+ grid-template-columns: auto 1fr;
1138
+ gap: 14px;
1139
+ align-items: center;
1140
+ min-height: 112px;
1141
+ padding: 16px;
1142
+ text-decoration: none;
1143
+ transition: border-color .18s ease, background .18s ease, transform .18s ease;
1144
+ }
1145
+ .download-card:hover {
1146
+ border-color: var(--line-strong);
1147
+ background: rgba(40, 216, 232, .08);
1148
+ transform: translateY(-2px);
1149
+ }
1150
+ .os-mark {
1151
+ display: grid;
1152
+ place-items: center;
1153
+ width: 54px;
1154
+ height: 54px;
1155
+ border-radius: 16px;
1156
+ color: var(--aqua);
1157
+ background: rgba(40, 216, 232, .11);
1158
+ box-shadow: inset 0 0 0 1px rgba(40, 216, 232, .22);
1159
+ }
1160
+ .os-mark svg {
1161
+ width: 30px;
1162
+ height: 30px;
1163
+ fill: currentColor;
1164
+ }
1165
+ .os-macos { color: var(--aqua-2); }
1166
+ .os-linux { color: var(--green); }
1167
+ .os-windows { color: #3ed7ff; }
1168
+ .download-card > span:last-child {
1169
+ display: grid;
1170
+ gap: 3px;
1171
+ }
1172
+ .download-card strong {
1173
+ display: block;
1174
+ font-size: 20px;
1175
+ }
1176
+
1177
+ .docs-launchpad {
1178
+ position: relative;
1179
+ padding: 94px 0;
1180
+ }
1181
+ .docs-launchpad h2 {
1182
+ max-width: 740px;
1183
+ margin: 0 0 26px;
1184
+ font-size: clamp(36px, 5vw, 72px);
1185
+ line-height: .9;
1186
+ }
1187
+ .docs-grid {
1188
+ display: grid;
1189
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1190
+ gap: 12px;
1191
+ }
1192
+ .doc-tile {
1193
+ display: grid;
1194
+ grid-template-columns: 12px 1fr auto;
1195
+ gap: 14px;
1196
+ align-items: center;
1197
+ min-height: 74px;
1198
+ border: 1px solid rgba(255,255,255,.11);
1199
+ border-radius: 18px;
1200
+ padding: 18px;
1201
+ color: var(--ink);
1202
+ text-decoration: none;
1203
+ background: rgba(255,255,255,.045);
1204
+ transition: border-color .18s ease, background .18s ease, transform .18s ease;
1205
+ }
1206
+ .doc-tile:hover {
1207
+ border-color: var(--line-strong);
1208
+ background: rgba(40,216,232,.08);
1209
+ transform: translateY(-2px);
1210
+ }
1211
+ .doc-tile > span {
1212
+ width: 9px;
1213
+ height: 9px;
1214
+ border-radius: 999px;
1215
+ background: var(--aqua);
1216
+ }
1217
+ .doc-tile[data-tone="coral"] > span { background: var(--coral); }
1218
+ .doc-tile[data-tone="yellow"] > span { background: var(--yellow); }
1219
+ .doc-tile[data-tone="green"] > span { background: var(--green); }
1220
+ .doc-tile[data-tone="blue"] > span { background: var(--blue); }
1221
+ .doc-tile b {
1222
+ color: var(--subtle);
1223
+ }
1224
+
1225
+ .timeline {
1226
+ position: relative;
1227
+ display: grid;
1228
+ gap: 16px;
1229
+ margin-top: 20px;
1230
+ }
1231
+ .timeline::before {
1232
+ content: "";
1233
+ position: absolute;
1234
+ left: 16px;
1235
+ top: 8px;
1236
+ bottom: 8px;
1237
+ width: 1px;
1238
+ background: rgba(40, 216, 232, .3);
1239
+ }
1240
+ .timeline-item {
1241
+ position: relative;
1242
+ display: grid;
1243
+ grid-template-columns: 34px 1fr;
1244
+ gap: 14px;
1245
+ }
1246
+ .timeline-item b {
1247
+ z-index: 1;
1248
+ display: grid;
1249
+ place-items: center;
1250
+ width: 34px;
1251
+ height: 34px;
1252
+ border-radius: 999px;
1253
+ color: #061517;
1254
+ background: var(--aqua);
1255
+ }
1256
+ .timeline-item p { margin-bottom: 0; }
1257
+ .endpoint-list {
1258
+ display: grid;
1259
+ gap: 10px;
1260
+ margin-top: 20px;
1261
+ }
1262
+ .endpoint-row {
1263
+ display: grid;
1264
+ grid-template-columns: 54px minmax(0, 1fr);
1265
+ gap: 12px;
1266
+ align-items: center;
1267
+ min-width: 0;
1268
+ }
1269
+ .method-badge {
1270
+ display: inline-grid;
1271
+ place-items: center;
1272
+ min-width: 46px;
1273
+ height: 26px;
1274
+ border: 1px solid rgba(40, 216, 232, .28);
1275
+ border-radius: 999px;
1276
+ padding: 0 9px;
1277
+ color: var(--aqua);
1278
+ font-size: 10px;
1279
+ font-weight: 900;
1280
+ line-height: 1;
1281
+ }
1282
+ .method-post {
1283
+ color: var(--green);
1284
+ border-color: rgba(140, 233, 154, .32);
1285
+ }
1286
+ .endpoint-row a {
1287
+ min-width: 0;
1288
+ overflow-wrap: anywhere;
1289
+ }
1290
+
1291
+ .footer {
1292
+ padding: 70px 0 50px;
1293
+ color: var(--muted);
1294
+ }
1295
+ .footer-grid {
1296
+ display: grid;
1297
+ grid-template-columns: 1.1fr repeat(3, minmax(0, .7fr));
1298
+ gap: 14px;
1299
+ border-top: 1px solid var(--line);
1300
+ padding-top: 24px;
1301
+ }
1302
+ .footer a {
1303
+ display: block;
1304
+ padding: 7px 0;
1305
+ color: var(--muted);
1306
+ text-decoration: none;
1307
+ }
1308
+ .footer a:hover { color: var(--aqua); }
1309
+
1310
+ @media (prefers-reduced-motion: reduce) {
1311
+ html { scroll-behavior: auto; }
1312
+ .download-card,
1313
+ .doc-tile,
1314
+ .protocol-card,
1315
+ .protocol-logo-rail div,
1316
+ .registry-card {
1317
+ animation: none;
1318
+ transition: none;
1319
+ }
1320
+ }
1321
+
1322
+ @media (max-width: 980px) {
1323
+ .site-nav {
1324
+ grid-template-columns: 1fr;
1325
+ align-items: stretch;
1326
+ border-radius: 28px;
1327
+ }
1328
+ .nav-center {
1329
+ justify-content: stretch;
1330
+ overflow-x: auto;
1331
+ padding-bottom: 2px;
1332
+ }
1333
+ .nav-center > * {
1334
+ flex: 0 0 auto;
1335
+ }
1336
+ .nav-menu {
1337
+ left: 0;
1338
+ transform: none;
1339
+ }
1340
+ .nav-menu-wide {
1341
+ grid-template-columns: 1fr;
1342
+ }
1343
+ .nav-actions { justify-content: space-between; }
1344
+ .hero {
1345
+ grid-template-columns: 1fr;
1346
+ padding-top: 56px;
1347
+ }
1348
+ .hero-visual {
1349
+ min-height: 540px;
1350
+ }
1351
+ h1 { font-size: 52px; }
1352
+ .bento-stack,
1353
+ .bento-grid {
1354
+ grid-template-columns: 1fr;
1355
+ }
1356
+ .bento-sticky-copy {
1357
+ position: relative;
1358
+ top: auto;
1359
+ order: -1;
1360
+ min-height: 0;
1361
+ }
1362
+ .bento-card,
1363
+ .bento-card.wide,
1364
+ .bento-card.full,
1365
+ .bento-card.tall {
1366
+ grid-column: auto;
1367
+ grid-row: auto;
1368
+ }
1369
+ .protocol-bento {
1370
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1371
+ }
1372
+ .registry-grid {
1373
+ grid-template-columns: 1fr;
1374
+ }
1375
+ .protocol-card,
1376
+ .protocol-card.wide,
1377
+ .protocol-card.tall {
1378
+ grid-column: auto;
1379
+ grid-row: auto;
1380
+ }
1381
+ .protocol-sap {
1382
+ min-height: 360px;
1383
+ }
1384
+ .machine-section {
1385
+ min-height: auto;
1386
+ padding-top: 74px;
1387
+ padding-bottom: 74px;
1388
+ }
1389
+ .machine-copy,
1390
+ .machine-stage {
1391
+ position: relative;
1392
+ top: auto;
1393
+ }
1394
+ .machine-copy {
1395
+ width: 100%;
1396
+ max-width: 680px;
1397
+ }
1398
+ .machine-stage {
1399
+ height: auto;
1400
+ min-height: 680px;
1401
+ margin: 36px 0 0;
1402
+ }
1403
+ .docs-grid {
1404
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1405
+ }
1406
+ .metric-grid,
1407
+ .feature-grid,
1408
+ .install-grid,
1409
+ .setup-grid,
1410
+ .endpoint-grid,
1411
+ .footer-grid {
1412
+ grid-template-columns: 1fr;
1413
+ }
1414
+ }
1415
+
1416
+ @media (max-width: 640px) {
1417
+ .page-shell,
1418
+ .site-nav {
1419
+ width: min(calc(100% - 24px), var(--content));
1420
+ }
1421
+ h1 { font-size: 42px; }
1422
+ .section h2 { font-size: 34px; }
1423
+ .lead { font-size: 18px; }
1424
+ .hero {
1425
+ min-height: auto;
1426
+ gap: 34px;
1427
+ padding-bottom: 44px;
1428
+ }
1429
+ .hero-actions .button,
1430
+ .inline-actions .button {
1431
+ width: 100%;
1432
+ }
1433
+ .hero-visual {
1434
+ min-height: 500px;
1435
+ border-radius: 24px;
1436
+ }
1437
+ .orbital-engine {
1438
+ inset: 78px 12px 132px;
1439
+ }
1440
+ .orbit-chip {
1441
+ width: 92px;
1442
+ padding: 10px;
1443
+ font-size: 12px;
1444
+ }
1445
+ .chip-a,
1446
+ .chip-c {
1447
+ left: 4%;
1448
+ }
1449
+ .chip-b,
1450
+ .chip-d {
1451
+ right: 4%;
1452
+ }
1453
+ .hero-bento-mini {
1454
+ grid-template-columns: 1fr;
1455
+ }
1456
+ .bento-header h2,
1457
+ .docs-launchpad h2,
1458
+ .machine-copy h2 {
1459
+ font-size: 38px;
1460
+ }
1461
+ .machine-stage {
1462
+ display: grid;
1463
+ grid-template-columns: 1fr;
1464
+ gap: 12px;
1465
+ min-height: 0;
1466
+ place-items: stretch;
1467
+ }
1468
+ .machine-core {
1469
+ order: -1;
1470
+ justify-self: center;
1471
+ width: 100%;
1472
+ height: auto;
1473
+ min-height: 136px;
1474
+ }
1475
+ .machine-core-ring,
1476
+ .machine-rail {
1477
+ display: none;
1478
+ }
1479
+ .machine-part {
1480
+ position: relative;
1481
+ width: 100%;
1482
+ opacity: 1;
1483
+ transform: none !important;
1484
+ }
1485
+ .download-grid,
1486
+ .download-actions,
1487
+ .step-downloads,
1488
+ .docs-grid,
1489
+ .protocol-bento,
1490
+ .registry-card {
1491
+ grid-template-columns: 1fr;
1492
+ }
1493
+ .protocol-logo-rail {
1494
+ width: min(210px, 54%);
1495
+ }
1496
+ .protocol-logo-rail span {
1497
+ width: 36px;
1498
+ height: 36px;
1499
+ }
1500
+ .protocol-logo-rail img {
1501
+ width: 24px;
1502
+ height: 24px;
1503
+ }
1504
+ .protocol-avatar {
1505
+ width: 40px;
1506
+ height: 40px;
1507
+ border-radius: 12px;
1508
+ }
1509
+ .protocol-avatar .solana-mark {
1510
+ width: 28px;
1511
+ }
1512
+ .sap-avatar {
1513
+ width: 48px;
1514
+ height: 48px;
1515
+ border-radius: 16px;
1516
+ }
1517
+ .sap-avatar img {
1518
+ width: 34px;
1519
+ height: 34px;
1520
+ border-radius: 10px;
1521
+ }
1522
+ .registry-status {
1523
+ justify-self: start;
1524
+ }
1525
+ .metric strong { font-size: 40px; }
1526
+ .card,
1527
+ .feature,
1528
+ .metric { padding: 18px; }
1529
+ .download-card {
1530
+ min-height: 96px;
1531
+ }
1532
+ }
1533
+ `;
1534
+ //# sourceMappingURL=styles.js.map