appium-desktop-driver 1.4.2 → 1.5.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 (67) hide show
  1. package/build/eslint.config.d.mts +3 -0
  2. package/build/eslint.config.d.mts.map +1 -0
  3. package/build/eslint.config.mjs +22 -0
  4. package/build/eslint.config.mjs.map +1 -0
  5. package/build/lib/commands/actions.d.ts +10 -10
  6. package/build/lib/commands/actions.d.ts.map +1 -1
  7. package/build/lib/commands/actions.js.map +1 -1
  8. package/build/lib/commands/app.d.ts +16 -16
  9. package/build/lib/commands/app.d.ts.map +1 -1
  10. package/build/lib/commands/app.js.map +1 -1
  11. package/build/lib/commands/device.d.ts +10 -10
  12. package/build/lib/commands/device.d.ts.map +1 -1
  13. package/build/lib/commands/device.js.map +1 -1
  14. package/build/lib/commands/element.d.ts +14 -14
  15. package/build/lib/commands/element.d.ts.map +1 -1
  16. package/build/lib/commands/element.js.map +1 -1
  17. package/build/lib/commands/extension.d.ts +39 -38
  18. package/build/lib/commands/extension.d.ts.map +1 -1
  19. package/build/lib/commands/extension.js +6 -0
  20. package/build/lib/commands/extension.js.map +1 -1
  21. package/build/lib/commands/index.d.ts +98 -89
  22. package/build/lib/commands/index.d.ts.map +1 -1
  23. package/build/lib/commands/index.js +2 -0
  24. package/build/lib/commands/index.js.map +1 -1
  25. package/build/lib/commands/powershell.d.ts +5 -5
  26. package/build/lib/commands/powershell.d.ts.map +1 -1
  27. package/build/lib/commands/powershell.js.map +1 -1
  28. package/build/lib/commands/system.d.ts +2 -2
  29. package/build/lib/commands/system.d.ts.map +1 -1
  30. package/build/lib/commands/vision.d.ts +10 -0
  31. package/build/lib/commands/vision.d.ts.map +1 -0
  32. package/build/lib/commands/vision.js +33 -0
  33. package/build/lib/commands/vision.js.map +1 -0
  34. package/build/lib/constraints.d.ts +1 -1
  35. package/build/lib/constraints.d.ts.map +1 -1
  36. package/build/lib/driver.d.ts +5 -5
  37. package/build/lib/driver.d.ts.map +1 -1
  38. package/build/lib/driver.js +3 -3
  39. package/build/lib/driver.js.map +1 -1
  40. package/build/lib/mcp/tools/index.d.ts.map +1 -1
  41. package/build/lib/mcp/tools/index.js +2 -0
  42. package/build/lib/mcp/tools/index.js.map +1 -1
  43. package/build/lib/mcp/tools/vision.d.ts +4 -0
  44. package/build/lib/mcp/tools/vision.d.ts.map +1 -0
  45. package/build/lib/mcp/tools/vision.js +76 -0
  46. package/build/lib/mcp/tools/vision.js.map +1 -0
  47. package/build/lib/util.d.ts +9 -0
  48. package/build/lib/util.d.ts.map +1 -1
  49. package/build/lib/util.js +10 -0
  50. package/build/lib/util.js.map +1 -1
  51. package/build/lib/vision-utils.d.ts +33 -0
  52. package/build/lib/vision-utils.d.ts.map +1 -0
  53. package/build/lib/vision-utils.js +90 -0
  54. package/build/lib/vision-utils.js.map +1 -0
  55. package/build/lib/winapi/user32.d.ts +1 -0
  56. package/build/lib/winapi/user32.d.ts.map +1 -1
  57. package/build/lib/winapi/user32.js +2 -3
  58. package/build/lib/winapi/user32.js.map +1 -1
  59. package/build/tsconfig.tsbuildinfo +1 -0
  60. package/package.json +11 -3
  61. package/docs/driver-demo.mp4 +0 -0
  62. package/docs/index.html +0 -582
  63. package/docs/logo.png +0 -0
  64. package/docs/mcp-demo.mp4 +0 -0
  65. package/docs/script.js +0 -69
  66. package/docs/style.css +0 -706
  67. package/npm-shrinkwrap.json +0 -5951
package/docs/style.css DELETED
@@ -1,706 +0,0 @@
1
- /* ============================================================
2
- Reset & Custom Properties
3
- ============================================================ */
4
- *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
5
-
6
- :root {
7
- --bg: #ffffff;
8
- --bg-card: #f8fafb;
9
- --bg-code: #f1f5f7;
10
- --border: #e2e8ee;
11
- --accent: #3ecfb2;
12
- --accent-dim: #2baf96;
13
- --text: #111827;
14
- --text-muted: #6b7280;
15
- --radius: 8px;
16
- --font-body: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
17
- --font-code: 'JetBrains Mono', 'Cascadia Code', 'Consolas', monospace;
18
- --max-width: 1100px;
19
- }
20
-
21
- html { scroll-behavior: smooth; }
22
-
23
- body {
24
- background: var(--bg);
25
- color: var(--text);
26
- font-family: var(--font-body);
27
- font-size: 16px;
28
- line-height: 1.7;
29
- }
30
-
31
- a { color: var(--accent); text-decoration: none; }
32
- a:hover { text-decoration: underline; }
33
-
34
- /* ============================================================
35
- Layout Helpers
36
- ============================================================ */
37
- .container {
38
- max-width: var(--max-width);
39
- margin: 0 auto;
40
- padding: 0 24px;
41
- }
42
-
43
- section { padding: 80px 0; }
44
- section + section { border-top: 1px solid var(--border); }
45
- section:nth-child(even) { background: var(--bg-card); }
46
-
47
- h1, h2, h3 { line-height: 1.25; }
48
- h2 { font-size: 2rem; margin-bottom: 12px; }
49
- h3 { font-size: 1.25rem; margin-bottom: 8px; }
50
-
51
- .section-label {
52
- font-size: 0.75rem;
53
- font-weight: 600;
54
- letter-spacing: 0.12em;
55
- text-transform: uppercase;
56
- color: var(--accent);
57
- margin-bottom: 12px;
58
- }
59
-
60
- .section-intro {
61
- color: var(--text-muted);
62
- max-width: 640px;
63
- margin-bottom: 40px;
64
- }
65
-
66
- /* ============================================================
67
- Nav
68
- ============================================================ */
69
- nav {
70
- position: sticky;
71
- top: 0;
72
- z-index: 100;
73
- background: rgba(255,255,255,0.92);
74
- backdrop-filter: blur(8px);
75
- border-bottom: 1px solid var(--border);
76
- box-shadow: 0 1px 3px rgba(0,0,0,0.06);
77
- }
78
-
79
- .nav-inner {
80
- display: flex;
81
- align-items: center;
82
- justify-content: space-between;
83
- height: 56px;
84
- max-width: var(--max-width);
85
- margin: 0 auto;
86
- padding: 0 24px;
87
- }
88
-
89
- .nav-brand {
90
- font-weight: 700;
91
- font-size: 0.95rem;
92
- color: var(--text);
93
- display: flex;
94
- align-items: center;
95
- gap: 8px;
96
- }
97
-
98
- .nav-brand span { color: var(--accent); }
99
-
100
- .nav-logo {
101
- height: 26px;
102
- width: auto;
103
- border-radius: 5px;
104
- display: block;
105
- }
106
-
107
- .nav-links {
108
- display: flex;
109
- gap: 24px;
110
- list-style: none;
111
- }
112
-
113
- .nav-links a {
114
- color: var(--text-muted);
115
- font-size: 0.875rem;
116
- transition: color 0.15s;
117
- }
118
- .nav-links a:hover { color: var(--text); text-decoration: none; }
119
-
120
- /* ============================================================
121
- Hero
122
- ============================================================ */
123
- #hero {
124
- padding: 100px 0 80px;
125
- border-top: none;
126
- }
127
-
128
- .hero-eyebrow {
129
- display: inline-flex;
130
- align-items: center;
131
- gap: 8px;
132
- font-size: 0.8rem;
133
- font-weight: 600;
134
- letter-spacing: 0.1em;
135
- text-transform: uppercase;
136
- color: var(--accent-dim);
137
- background: rgba(62,207,178,0.1);
138
- border: 1px solid rgba(62,207,178,0.3);
139
- border-radius: 100px;
140
- padding: 4px 12px;
141
- margin-bottom: 24px;
142
- }
143
-
144
- .hero-eyebrow::before {
145
- content: '';
146
- width: 6px; height: 6px;
147
- border-radius: 50%;
148
- background: var(--accent-dim);
149
- }
150
-
151
- #hero h1 {
152
- font-size: clamp(2.4rem, 5vw, 3.8rem);
153
- font-weight: 800;
154
- letter-spacing: -0.02em;
155
- margin-bottom: 16px;
156
- max-width: 800px;
157
- }
158
-
159
- #hero h1 .accent { color: var(--accent); }
160
-
161
- .hero-pitch {
162
- font-size: 1.15rem;
163
- color: var(--text-muted);
164
- max-width: 620px;
165
- margin-bottom: 24px;
166
- }
167
-
168
- .hero-install-row {
169
- display: flex;
170
- align-items: center;
171
- gap: 16px;
172
- flex-wrap: wrap;
173
- margin-bottom: 32px;
174
- }
175
-
176
- .hero-install {
177
- position: relative;
178
- background: var(--bg-code);
179
- border: 1px solid var(--border);
180
- border-radius: var(--radius);
181
- padding: 14px 48px 14px 20px;
182
- display: inline-block;
183
- }
184
-
185
- .hero-install-copy {
186
- position: absolute;
187
- top: 50%; right: 12px;
188
- transform: translateY(-50%);
189
- display: flex;
190
- align-items: center;
191
- justify-content: center;
192
- width: 26px; height: 26px;
193
- background: none;
194
- border: 1px solid var(--border);
195
- color: var(--text-muted);
196
- border-radius: 4px;
197
- cursor: pointer;
198
- transition: background 0.15s, color 0.15s;
199
- }
200
- .hero-install-copy:hover { background: rgba(0,0,0,0.05); color: var(--text); }
201
- .hero-install-copy.copied { color: #0f7a5c; }
202
-
203
- .hero-install pre,
204
- .hero-install pre code {
205
- margin: 0;
206
- padding: 0;
207
- background: none;
208
- border: none;
209
- font-family: var(--font-code);
210
- font-size: 0.875rem;
211
- color: #0f7a5c;
212
- }
213
-
214
- .hero-actions {
215
- display: flex;
216
- align-items: center;
217
- flex-wrap: wrap;
218
- gap: 16px;
219
- margin-bottom: 48px;
220
- }
221
-
222
- .install-block {
223
- display: flex;
224
- align-items: center;
225
- background: var(--bg-code);
226
- border: 1px solid var(--border);
227
- border-radius: var(--radius);
228
- overflow: hidden;
229
- font-family: var(--font-code);
230
- font-size: 0.85rem;
231
- }
232
-
233
- .install-block code {
234
- padding: 10px 16px;
235
- color: #0f7a5c;
236
- }
237
-
238
- .install-block .copy-btn {
239
- padding: 10px 14px;
240
- background: transparent;
241
- border: none;
242
- border-left: 1px solid var(--border);
243
- color: var(--text-muted);
244
- cursor: pointer;
245
- font-size: 0.75rem;
246
- font-family: var(--font-body);
247
- transition: color 0.15s, background 0.15s;
248
- white-space: nowrap;
249
- }
250
- .install-block .copy-btn:hover { background: #e8f4f1; color: var(--text); }
251
-
252
- .btn-primary {
253
- display: inline-flex;
254
- align-items: center;
255
- gap: 8px;
256
- background: var(--accent);
257
- color: #fff;
258
- padding: 10px 20px;
259
- border-radius: var(--radius);
260
- font-weight: 600;
261
- font-size: 0.9rem;
262
- transition: background 0.15s;
263
- }
264
- .btn-primary:hover { background: var(--accent-dim); text-decoration: none; }
265
-
266
- .badges {
267
- display: flex;
268
- flex-wrap: wrap;
269
- gap: 8px;
270
- }
271
-
272
- .badge {
273
- font-size: 0.75rem;
274
- font-weight: 600;
275
- padding: 3px 10px;
276
- border-radius: 100px;
277
- border: 1px solid var(--border);
278
- color: var(--text-muted);
279
- background: var(--bg-card);
280
- }
281
-
282
- /* ============================================================
283
- Video sections
284
- ============================================================ */
285
- .video-outer {
286
- max-width: 860px;
287
- }
288
-
289
- .video-wrapper {
290
- position: relative;
291
- padding-top: 56.25%;
292
- border-radius: var(--radius);
293
- overflow: hidden;
294
- border: 1px solid var(--border);
295
- background: var(--bg-card);
296
- }
297
-
298
- .video-wrapper iframe,
299
- .video-wrapper video {
300
- position: absolute;
301
- inset: 0;
302
- width: 100%; height: 100%;
303
- border: none;
304
- object-fit: contain;
305
- }
306
-
307
- .video-placeholder-box {
308
- position: absolute;
309
- inset: 0;
310
- display: flex;
311
- flex-direction: column;
312
- align-items: center;
313
- justify-content: center;
314
- gap: 12px;
315
- color: var(--text-muted);
316
- font-size: 0.9rem;
317
- }
318
-
319
- .video-placeholder-box .play-icon {
320
- width: 56px; height: 56px;
321
- border: 2px solid var(--border);
322
- border-radius: 50%;
323
- display: flex; align-items: center; justify-content: center;
324
- color: var(--text-muted);
325
- }
326
-
327
- /* ============================================================
328
- Comparison table (Why Not WinAppDriver)
329
- ============================================================ */
330
- .comparison-table {
331
- width: 100%;
332
- border-collapse: collapse;
333
- font-size: 0.9rem;
334
- }
335
-
336
- .comparison-table th {
337
- text-align: left;
338
- padding: 12px 16px;
339
- background: var(--bg-card);
340
- border-bottom: 2px solid var(--border);
341
- color: var(--text-muted);
342
- font-weight: 600;
343
- font-size: 0.8rem;
344
- text-transform: uppercase;
345
- letter-spacing: 0.08em;
346
- }
347
-
348
- .comparison-table td {
349
- padding: 14px 16px;
350
- border-bottom: 1px solid var(--border);
351
- vertical-align: top;
352
- }
353
-
354
- .comparison-table tr:last-child td { border-bottom: none; }
355
-
356
- .comparison-table td:first-child { color: var(--text-muted); }
357
- .comparison-table td:last-child { color: var(--text); }
358
-
359
- .check { color: #2baf96; font-weight: 700; margin-right: 6px; }
360
- .cross { color: #e05252; font-weight: 700; margin-right: 6px; }
361
-
362
- /* ============================================================
363
- App type chips
364
- ============================================================ */
365
- .app-chips {
366
- display: flex;
367
- flex-wrap: wrap;
368
- gap: 12px;
369
- }
370
-
371
- .app-chip {
372
- display: flex;
373
- align-items: center;
374
- gap: 10px;
375
- background: #fff;
376
- border: 1px solid var(--border);
377
- border-radius: var(--radius);
378
- padding: 12px 20px;
379
- font-weight: 600;
380
- font-size: 0.9rem;
381
- box-shadow: 0 1px 3px rgba(0,0,0,0.05);
382
- }
383
-
384
- .app-chip .chip-icon {
385
- font-size: 1.25rem;
386
- }
387
-
388
- /* ============================================================
389
- Feature cards
390
- ============================================================ */
391
- .feature-grid {
392
- display: grid;
393
- grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
394
- gap: 20px;
395
- }
396
-
397
- .feature-card {
398
- background: #fff;
399
- border: 1px solid var(--border);
400
- border-radius: var(--radius);
401
- padding: 24px;
402
- transition: border-color 0.2s, box-shadow 0.2s;
403
- box-shadow: 0 1px 4px rgba(0,0,0,0.05);
404
- }
405
-
406
- .feature-card:hover { border-color: var(--accent); box-shadow: 0 4px 12px rgba(62,207,178,0.12); }
407
-
408
- .feature-icon {
409
- font-size: 1.75rem;
410
- margin-bottom: 14px;
411
- }
412
-
413
- .feature-card h3 { margin-bottom: 8px; }
414
- .feature-card p { color: var(--text-muted); font-size: 0.9rem; }
415
-
416
- /* ============================================================
417
- Tables (generic)
418
- ============================================================ */
419
- .data-table-wrap { overflow-x: auto; }
420
-
421
- .data-table {
422
- width: 100%;
423
- border-collapse: collapse;
424
- font-size: 0.875rem;
425
- }
426
-
427
- .data-table th {
428
- text-align: left;
429
- padding: 10px 14px;
430
- background: var(--bg-card);
431
- border-bottom: 2px solid var(--border);
432
- color: var(--text-muted);
433
- font-size: 0.78rem;
434
- font-weight: 600;
435
- text-transform: uppercase;
436
- letter-spacing: 0.08em;
437
- white-space: nowrap;
438
- }
439
-
440
- .data-table td {
441
- padding: 10px 14px;
442
- border-bottom: 1px solid var(--border);
443
- vertical-align: top;
444
- }
445
-
446
- .data-table tr:last-child td { border-bottom: none; }
447
-
448
- .data-table code {
449
- font-family: var(--font-code);
450
- font-size: 0.82rem;
451
- background: var(--bg-code);
452
- border: 1px solid var(--border);
453
- padding: 1px 6px;
454
- border-radius: 4px;
455
- color: #0f7a5c;
456
- white-space: nowrap;
457
- }
458
-
459
- /* ============================================================
460
- MCP Steps
461
- ============================================================ */
462
- .mcp-steps {
463
- display: grid;
464
- grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
465
- gap: 20px;
466
- margin-bottom: 48px;
467
- }
468
-
469
- .mcp-step {
470
- background: #fff;
471
- border: 1px solid var(--border);
472
- border-radius: var(--radius);
473
- padding: 24px;
474
- position: relative;
475
- box-shadow: 0 1px 4px rgba(0,0,0,0.05);
476
- }
477
-
478
- .step-num {
479
- display: inline-flex;
480
- align-items: center;
481
- justify-content: center;
482
- width: 32px; height: 32px;
483
- background: rgba(62,207,178,0.12);
484
- border: 1px solid rgba(62,207,178,0.35);
485
- color: var(--accent-dim);
486
- border-radius: 50%;
487
- font-weight: 700;
488
- font-size: 0.85rem;
489
- margin-bottom: 14px;
490
- }
491
-
492
- .mcp-step p { color: var(--text-muted); font-size: 0.9rem; }
493
-
494
- /* MCP tool group table rows */
495
- .mcp-group-table td:first-child { white-space: nowrap; font-weight: 600; color: var(--accent); }
496
-
497
- /* ============================================================
498
- Code blocks
499
- ============================================================ */
500
- .code-block-wrap {
501
- position: relative;
502
- background: var(--bg-code);
503
- border: 1px solid var(--border);
504
- border-radius: var(--radius);
505
- overflow: hidden;
506
- box-shadow: 0 1px 3px rgba(0,0,0,0.05);
507
- }
508
-
509
- .code-block-wrap pre {
510
- margin: 0;
511
- padding: 20px;
512
- overflow-x: auto;
513
- font-size: 0.85rem;
514
- line-height: 1.6;
515
- }
516
-
517
- .code-block-wrap .copy-btn {
518
- position: absolute;
519
- top: 44px; right: 10px;
520
- display: flex;
521
- align-items: center;
522
- justify-content: center;
523
- width: 28px; height: 28px;
524
- background: rgba(255,255,255,0.8);
525
- border: 1px solid var(--border);
526
- color: var(--text-muted);
527
- border-radius: 4px;
528
- cursor: pointer;
529
- transition: background 0.15s, color 0.15s;
530
- }
531
- .code-block-wrap .copy-btn:hover { background: #fff; color: var(--text); }
532
- .code-block-wrap .copy-btn.copied { color: #0f7a5c; }
533
-
534
- /* Language tabs */
535
- .lang-tabs {
536
- display: flex;
537
- gap: 0;
538
- border-bottom: 1px solid var(--border);
539
- background: rgba(0,0,0,0.02);
540
- overflow-x: auto;
541
- }
542
-
543
- .lang-tab {
544
- padding: 8px 18px;
545
- font-size: 0.82rem;
546
- font-weight: 600;
547
- color: var(--text-muted);
548
- cursor: pointer;
549
- border-bottom: 2px solid transparent;
550
- white-space: nowrap;
551
- transition: color 0.15s, border-color 0.15s;
552
- background: none;
553
- border-top: none;
554
- border-left: none;
555
- border-right: none;
556
- font-family: var(--font-body);
557
- }
558
-
559
- .lang-tab[data-active] {
560
- color: var(--accent);
561
- border-bottom-color: var(--accent);
562
- }
563
-
564
- .tabbed-code { position: relative; }
565
-
566
- .tabbed-code pre { display: none; }
567
- .tabbed-code pre[data-active] { display: block; }
568
-
569
- /* ============================================================
570
- executeScript groups
571
- ============================================================ */
572
- .ext-groups {
573
- display: grid;
574
- grid-template-columns: repeat(2, 1fr);
575
- gap: 20px;
576
- }
577
-
578
- .ext-group {
579
- background: #fff;
580
- border: 1px solid var(--border);
581
- border-radius: var(--radius);
582
- padding: 20px;
583
- box-shadow: 0 1px 4px rgba(0,0,0,0.05);
584
- }
585
-
586
- .ext-group h3 {
587
- font-size: 0.85rem;
588
- font-weight: 700;
589
- text-transform: uppercase;
590
- letter-spacing: 0.08em;
591
- color: var(--accent);
592
- margin-bottom: 12px;
593
- }
594
-
595
- .ext-group ul {
596
- list-style: none;
597
- display: flex;
598
- flex-direction: column;
599
- gap: 6px;
600
- }
601
-
602
- .ext-group li {
603
- font-size: 0.85rem;
604
- color: var(--text-muted);
605
- }
606
-
607
- .ext-group li code {
608
- font-family: var(--font-code);
609
- font-size: 0.8rem;
610
- color: #0f7a5c;
611
- background: rgba(62,207,178,0.1);
612
- padding: 1px 5px;
613
- border-radius: 3px;
614
- }
615
-
616
- /* ============================================================
617
- Install section
618
- ============================================================ */
619
- .install-steps {
620
- display: flex;
621
- flex-direction: column;
622
- gap: 20px;
623
- max-width: 720px;
624
- }
625
-
626
- .req-list {
627
- list-style: none;
628
- display: flex;
629
- flex-direction: column;
630
- gap: 8px;
631
- }
632
-
633
- .req-list li {
634
- display: flex;
635
- align-items: center;
636
- gap: 10px;
637
- font-size: 0.9rem;
638
- color: var(--text-muted);
639
- }
640
-
641
- .req-list li::before {
642
- content: '✓';
643
- color: #2baf96;
644
- font-weight: 700;
645
- flex-shrink: 0;
646
- }
647
-
648
- /* ============================================================
649
- Footer
650
- ============================================================ */
651
- footer {
652
- border-top: 1px solid var(--border);
653
- padding: 40px 0;
654
- color: var(--text-muted);
655
- font-size: 0.875rem;
656
- }
657
-
658
- .footer-inner {
659
- max-width: var(--max-width);
660
- margin: 0 auto;
661
- padding: 0 24px;
662
- display: flex;
663
- flex-wrap: wrap;
664
- justify-content: space-between;
665
- align-items: center;
666
- gap: 16px;
667
- }
668
-
669
- .footer-links {
670
- display: flex;
671
- flex-wrap: wrap;
672
- gap: 20px;
673
- list-style: none;
674
- }
675
-
676
- .footer-links a { color: var(--text-muted); transition: color 0.15s; }
677
- .footer-links a:hover { color: var(--text); text-decoration: none; }
678
-
679
- .footer-logo {
680
- height: 20px;
681
- width: auto;
682
- border-radius: 3px;
683
- vertical-align: middle;
684
- margin: 0 2px;
685
- display: inline-block;
686
- }
687
-
688
- /* ============================================================
689
- Utilities
690
- ============================================================ */
691
- .mt-4 { margin-top: 16px; }
692
- .mt-8 { margin-top: 32px; }
693
- .mt-12 { margin-top: 48px; }
694
-
695
- /* ============================================================
696
- Responsive
697
- ============================================================ */
698
- @media (max-width: 640px) {
699
- nav .nav-links { display: none; }
700
- #hero h1 { font-size: 2rem; }
701
- .install-block code { font-size: 0.75rem; }
702
- .feature-grid { grid-template-columns: 1fr; }
703
- .mcp-steps { grid-template-columns: 1fr; }
704
- .ext-groups { grid-template-columns: 1fr; }
705
-
706
- }