@spacefast/setup-ui 0.2.1

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.
package/src/styles.css ADDED
@@ -0,0 +1,827 @@
1
+ /* Public, framework-agnostic setup renderer. Every selector is namespaced so
2
+ consumers can import this stylesheet without inheriting global resets.
3
+ Hierarchy contract: one hero primary per page; alternates recede; the
4
+ terminal lane is open but quiet; source lanes are the big friendly exits. */
5
+ .sf-setup-page,
6
+ .sf-setup-picker,
7
+ .sf-setup-detection,
8
+ .sf-setup-generic,
9
+ .sf-setup-failure,
10
+ .sf-setup-state,
11
+ .sf-setup-source-lanes,
12
+ .sf-setup-terminal,
13
+ .sf-setup-method,
14
+ .sf-setup-let-agent,
15
+ .sf-setup-dock {
16
+ --sf-setup-bg: var(--background, Canvas);
17
+ --sf-setup-fg: var(--foreground, CanvasText);
18
+ --sf-setup-muted: var(--muted, color-mix(in srgb, CanvasText 7%, Canvas));
19
+ --sf-setup-muted-fg: var(--muted-foreground, color-mix(in srgb, CanvasText 65%, Canvas));
20
+ --sf-setup-border: var(--border, color-mix(in srgb, CanvasText 16%, Canvas));
21
+ --sf-setup-accent: var(--primary, CanvasText);
22
+ --sf-setup-accent-fg: var(--primary-foreground, Canvas);
23
+ /* Amber wash derived locally — host themes define `--warm` as a foreground
24
+ token, so it must never be consumed as a background. */
25
+ --sf-setup-warm: color-mix(in srgb, #f59e0b 12%, var(--background, Canvas));
26
+ --sf-setup-warning: var(--warning-text, #9a6700);
27
+ box-sizing: border-box;
28
+ color: var(--sf-setup-fg);
29
+ }
30
+
31
+ .sf-setup-page *,
32
+ .sf-setup-picker *,
33
+ .sf-setup-detection *,
34
+ .sf-setup-generic *,
35
+ .sf-setup-failure *,
36
+ .sf-setup-state *,
37
+ .sf-setup-source-lanes *,
38
+ .sf-setup-terminal *,
39
+ .sf-setup-dock *,
40
+ .sf-setup-let-agent * {
41
+ box-sizing: border-box;
42
+ }
43
+
44
+ .sf-setup-page,
45
+ .sf-setup-picker,
46
+ .sf-setup-detection,
47
+ .sf-setup-generic,
48
+ .sf-setup-failure,
49
+ .sf-setup-state,
50
+ .sf-setup-terminal {
51
+ display: flex;
52
+ flex-direction: column;
53
+ }
54
+ .sf-setup-page {
55
+ width: min(100%, 52rem);
56
+ margin-inline: auto;
57
+ gap: 3rem;
58
+ min-width: 0;
59
+ }
60
+ .sf-setup-picker {
61
+ width: min(100%, 52rem);
62
+ margin-inline: auto;
63
+ gap: 2.5rem;
64
+ }
65
+ .sf-setup-picker > section,
66
+ .sf-setup-generic,
67
+ .sf-setup-failure,
68
+ .sf-setup-detection {
69
+ gap: 1rem;
70
+ }
71
+ .sf-setup-page__head {
72
+ display: grid;
73
+ grid-template-columns: auto minmax(0, 1fr);
74
+ align-items: flex-start;
75
+ gap: 1.25rem;
76
+ }
77
+ .sf-setup-method__head {
78
+ display: flex;
79
+ align-items: flex-start;
80
+ gap: 1rem;
81
+ }
82
+ .sf-setup-page__head > div,
83
+ .sf-setup-method__head > div {
84
+ min-width: 0;
85
+ flex: 1;
86
+ }
87
+ .sf-setup-page h1,
88
+ .sf-setup-picker h1,
89
+ .sf-setup-detection h1 {
90
+ margin: 0;
91
+ font-family: var(--font-serif, ui-serif, Georgia, serif);
92
+ font-size: clamp(2.6rem, 7vw, 3.6rem);
93
+ font-weight: 500;
94
+ line-height: 1.02;
95
+ letter-spacing: -0.035em;
96
+ text-wrap: balance;
97
+ }
98
+ .sf-setup-page h2,
99
+ .sf-setup-page h3,
100
+ .sf-setup-generic h2,
101
+ .sf-setup-failure h2,
102
+ .sf-setup-state h2,
103
+ .sf-setup-dock h2 {
104
+ margin: 0;
105
+ text-wrap: balance;
106
+ }
107
+ .sf-setup-page p,
108
+ .sf-setup-picker p,
109
+ .sf-setup-detection p,
110
+ .sf-setup-generic p,
111
+ .sf-setup-failure p,
112
+ .sf-setup-state p,
113
+ .sf-setup-dock p {
114
+ margin: 0.35rem 0 0;
115
+ color: var(--sf-setup-muted-fg);
116
+ line-height: 1.55;
117
+ text-wrap: pretty;
118
+ }
119
+ .sf-setup-page__head > div > p {
120
+ max-width: 56ch;
121
+ font-size: 1.05rem;
122
+ }
123
+ .sf-setup-page__docs {
124
+ display: inline-block;
125
+ margin-top: 0.75rem;
126
+ font-size: 0.9rem;
127
+ }
128
+ .sf-setup-back {
129
+ display: inline-flex;
130
+ align-items: center;
131
+ gap: 0.4rem;
132
+ align-self: flex-start;
133
+ margin-bottom: -1.5rem;
134
+ padding: 0.35rem 0.55rem;
135
+ border: 0;
136
+ border-radius: 0.45rem;
137
+ background: none;
138
+ color: var(--sf-setup-muted-fg);
139
+ font: inherit;
140
+ font-size: 0.875rem;
141
+ cursor: pointer;
142
+ }
143
+ .sf-setup-back:hover {
144
+ color: var(--sf-setup-fg);
145
+ background: var(--sf-setup-muted);
146
+ }
147
+ .sf-setup-back svg {
148
+ width: 0.95rem;
149
+ height: 0.95rem;
150
+ transform: scaleX(-1);
151
+ }
152
+ .sf-setup-eyebrow {
153
+ margin: 0 0 0.45rem !important;
154
+ color: var(--sf-setup-muted-fg);
155
+ font:
156
+ 500 0.75rem/1.3 ui-monospace,
157
+ monospace;
158
+ letter-spacing: 0.08em;
159
+ text-transform: uppercase;
160
+ }
161
+ .sf-setup-page__head .sf-setup-eyebrow,
162
+ .sf-setup-method--primary .sf-setup-eyebrow {
163
+ color: var(--sf-setup-warning);
164
+ }
165
+ .sf-setup-eyebrow svg {
166
+ width: 1rem;
167
+ height: 1rem;
168
+ vertical-align: -0.15rem;
169
+ }
170
+ .sf-setup-mark {
171
+ display: inline-flex;
172
+ width: 1.5rem;
173
+ height: 1.5rem;
174
+ flex: none;
175
+ align-items: center;
176
+ justify-content: center;
177
+ border: 1px solid var(--sf-setup-border);
178
+ border-radius: 0.4rem;
179
+ background: var(--sf-setup-muted);
180
+ color: var(--sf-setup-muted-fg);
181
+ object-fit: contain;
182
+ font:
183
+ 600 0.65rem/1 ui-monospace,
184
+ monospace;
185
+ }
186
+ .sf-setup-mark--large {
187
+ width: 3.5rem;
188
+ height: 3.5rem;
189
+ border-radius: 0.75rem;
190
+ box-shadow: 0 1px 2px color-mix(in srgb, CanvasText 12%, transparent);
191
+ }
192
+ .sf-setup-button {
193
+ display: inline-flex;
194
+ min-height: 2.25rem;
195
+ flex: none;
196
+ align-items: center;
197
+ justify-content: center;
198
+ gap: 0.45rem;
199
+ padding: 0.45rem 0.8rem;
200
+ border: 1px solid var(--sf-setup-accent);
201
+ border-radius: 0.45rem;
202
+ background: var(--sf-setup-accent);
203
+ color: var(--sf-setup-accent-fg);
204
+ font: inherit;
205
+ font-size: 0.875rem;
206
+ font-weight: 600;
207
+ text-decoration: none;
208
+ cursor: pointer;
209
+ }
210
+ .sf-setup-button svg {
211
+ width: 1rem;
212
+ height: 1rem;
213
+ }
214
+ .sf-setup-button:hover:not(:disabled) {
215
+ filter: brightness(1.12);
216
+ }
217
+ .sf-setup-button:focus-visible,
218
+ .sf-setup-search:focus-within,
219
+ .sf-setup-picker-grid button:focus-visible,
220
+ .sf-setup-source-grid a:focus-visible,
221
+ .sf-setup-method__payload:focus-visible,
222
+ .sf-setup-terminal-row__copy:focus-visible,
223
+ .sf-setup-let-agent:focus-visible {
224
+ outline: 2px solid var(--sf-setup-accent);
225
+ outline-offset: 2px;
226
+ }
227
+ .sf-setup-button:disabled {
228
+ cursor: not-allowed;
229
+ opacity: 0.52;
230
+ }
231
+ .sf-setup-button--quiet {
232
+ border-color: var(--sf-setup-border);
233
+ background: var(--sf-setup-bg);
234
+ color: var(--sf-setup-fg);
235
+ }
236
+ .sf-setup-methods,
237
+ .sf-setup-terminal__content {
238
+ display: flex;
239
+ flex-direction: column;
240
+ gap: 0.9rem;
241
+ }
242
+
243
+ /* Method cards — the primary is the hero; alternates are quiet siblings. */
244
+ .sf-setup-method {
245
+ display: flex;
246
+ min-width: 0;
247
+ flex-direction: column;
248
+ gap: 0.85rem;
249
+ padding: 1rem 1.1rem;
250
+ border: 1px solid var(--sf-setup-border);
251
+ border-radius: 0.75rem;
252
+ background: var(--sf-setup-bg);
253
+ transition:
254
+ border-color 150ms ease,
255
+ box-shadow 150ms ease;
256
+ }
257
+ .sf-setup-method:hover {
258
+ border-color: color-mix(in srgb, var(--sf-setup-fg) 28%, transparent);
259
+ }
260
+ .sf-setup-method--primary {
261
+ gap: 1.2rem;
262
+ padding: 1.75rem;
263
+ border-color: color-mix(in srgb, var(--sf-setup-fg) 14%, transparent);
264
+ background: var(--sf-setup-muted);
265
+ box-shadow: 0 22px 50px -38px color-mix(in srgb, CanvasText 55%, transparent);
266
+ }
267
+ .sf-setup-method h3 {
268
+ font-size: 0.95rem;
269
+ font-weight: 600;
270
+ }
271
+ .sf-setup-method p {
272
+ font-size: 0.9rem;
273
+ }
274
+ .sf-setup-method--primary h3 {
275
+ font-family: var(--font-serif, ui-serif, Georgia, serif);
276
+ font-size: 1.6rem;
277
+ font-weight: 500;
278
+ letter-spacing: -0.015em;
279
+ }
280
+ .sf-setup-method--primary p {
281
+ font-size: 1rem;
282
+ }
283
+ .sf-setup-method__payload {
284
+ display: grid;
285
+ width: 100%;
286
+ max-width: 100%;
287
+ margin: 0;
288
+ grid-template-columns: minmax(0, 1fr) auto;
289
+ align-items: start;
290
+ gap: 0.8rem;
291
+ padding: 1rem 1.1rem;
292
+ border: 1px solid color-mix(in srgb, var(--sf-setup-fg) 9%, transparent);
293
+ border-radius: 0.55rem;
294
+ background: var(--sf-setup-bg);
295
+ color: var(--sf-setup-fg);
296
+ cursor: pointer;
297
+ text-align: left;
298
+ box-shadow: inset 0 1px 0 color-mix(in srgb, CanvasText 5%, transparent);
299
+ }
300
+ .sf-setup-method__payload code {
301
+ min-width: 0;
302
+ overflow: auto;
303
+ font-size: 0.84rem;
304
+ line-height: 1.55;
305
+ white-space: pre;
306
+ }
307
+ .sf-setup-method__payload svg {
308
+ width: 1rem;
309
+ height: 1rem;
310
+ flex: none;
311
+ }
312
+ .sf-setup-method__payload:hover:not(:disabled) {
313
+ border-color: color-mix(in srgb, var(--sf-setup-fg) 22%, transparent);
314
+ }
315
+ .sf-setup-method--primary .sf-setup-method__payload {
316
+ border-color: color-mix(in srgb, var(--sf-setup-fg) 14%, transparent);
317
+ }
318
+ .sf-setup-method--primary .sf-setup-method__payload code {
319
+ font-size: 0.9rem;
320
+ }
321
+ .sf-setup-method[data-listing-status="submitted"],
322
+ .sf-setup-method[data-listing-status="planned"] {
323
+ border-style: dashed;
324
+ background: color-mix(in srgb, var(--sf-setup-muted) 45%, var(--sf-setup-bg));
325
+ }
326
+ .sf-setup-alternatives {
327
+ display: flex;
328
+ flex-direction: column;
329
+ gap: 1rem;
330
+ margin-top: 1.35rem;
331
+ }
332
+ .sf-setup-section-head {
333
+ display: flex;
334
+ flex-direction: column;
335
+ gap: 0.25rem;
336
+ }
337
+ .sf-setup-section-head h2 {
338
+ font-family: var(--font-serif, ui-serif, Georgia, serif);
339
+ font-size: 1.6rem;
340
+ font-weight: 500;
341
+ letter-spacing: -0.02em;
342
+ }
343
+ .sf-setup-section-head p {
344
+ max-width: 62ch;
345
+ margin: 0;
346
+ }
347
+ .sf-setup-alternatives__list {
348
+ display: flex;
349
+ flex-direction: column;
350
+ gap: 0.75rem;
351
+ }
352
+ .sf-setup-warning {
353
+ color: var(--sf-setup-warning) !important;
354
+ font-size: 0.85rem;
355
+ }
356
+ .sf-setup-link {
357
+ color: var(--sf-setup-fg);
358
+ text-decoration: underline;
359
+ text-underline-offset: 0.2rem;
360
+ }
361
+ .sf-setup-failure {
362
+ padding: 1.25rem;
363
+ border: 1px solid color-mix(in srgb, var(--sf-setup-warning) 35%, transparent);
364
+ border-radius: 0.65rem;
365
+ background: color-mix(in srgb, var(--sf-setup-warning) 8%, transparent);
366
+ }
367
+
368
+ /* Source lanes — the big friendly “or just bring your stuff” exits. */
369
+ .sf-setup-source-lanes {
370
+ display: flex;
371
+ flex-direction: column;
372
+ gap: 1rem;
373
+ }
374
+ .sf-setup-source-grid {
375
+ display: grid;
376
+ grid-template-columns: repeat(3, minmax(0, 1fr));
377
+ gap: 1rem;
378
+ }
379
+ .sf-setup-source-grid a {
380
+ display: flex;
381
+ min-width: 0;
382
+ flex-direction: column;
383
+ gap: 0.9rem;
384
+ padding: 1.4rem 1.3rem;
385
+ border: 1px solid var(--sf-setup-border);
386
+ border-radius: 0.9rem;
387
+ background: var(--sf-setup-bg);
388
+ color: var(--sf-setup-fg);
389
+ text-decoration: none;
390
+ transition:
391
+ border-color 150ms ease,
392
+ background-color 150ms ease,
393
+ transform 150ms ease,
394
+ box-shadow 150ms ease;
395
+ }
396
+ .sf-setup-source-grid a:hover {
397
+ border-color: color-mix(in srgb, var(--sf-setup-fg) 28%, transparent);
398
+ background: var(--sf-setup-muted);
399
+ transform: translateY(-2px);
400
+ box-shadow: 0 16px 36px -30px color-mix(in srgb, CanvasText 55%, transparent);
401
+ }
402
+ .sf-setup-source-grid svg {
403
+ width: 1.15rem;
404
+ height: 1.15rem;
405
+ flex: none;
406
+ box-sizing: content-box;
407
+ padding: 0.5rem;
408
+ border: 1px solid color-mix(in srgb, var(--sf-setup-fg) 10%, transparent);
409
+ border-radius: 0.6rem;
410
+ background: var(--sf-setup-muted);
411
+ color: var(--sf-setup-fg);
412
+ }
413
+ .sf-setup-source-grid strong {
414
+ font-size: 1rem;
415
+ font-weight: 600;
416
+ }
417
+ .sf-setup-source-grid span {
418
+ display: flex;
419
+ min-width: 0;
420
+ flex-direction: column;
421
+ gap: 0.3rem;
422
+ }
423
+ .sf-setup-source-grid small,
424
+ .sf-setup-picker-grid small,
425
+ .sf-setup-let-agent small {
426
+ color: var(--sf-setup-muted-fg);
427
+ font-size: 0.85rem;
428
+ line-height: 1.5;
429
+ }
430
+ /* Compact variant — a slim row strip at the bottom of agent pages. */
431
+ .sf-setup-source-lanes--compact {
432
+ gap: 0.6rem;
433
+ }
434
+ .sf-setup-source-lanes--compact .sf-setup-source-grid {
435
+ gap: 0.6rem;
436
+ }
437
+ .sf-setup-source-lanes--compact .sf-setup-source-grid a {
438
+ flex-direction: row;
439
+ align-items: center;
440
+ gap: 0.65rem;
441
+ padding: 0.75rem 0.9rem;
442
+ border-radius: 0.65rem;
443
+ transform: none;
444
+ box-shadow: none;
445
+ }
446
+ .sf-setup-source-lanes--compact .sf-setup-source-grid a:hover {
447
+ transform: none;
448
+ box-shadow: none;
449
+ }
450
+ .sf-setup-source-lanes--compact .sf-setup-source-grid svg {
451
+ padding: 0;
452
+ border: 0;
453
+ background: none;
454
+ }
455
+ .sf-setup-source-lanes--compact .sf-setup-source-grid strong {
456
+ font-size: 0.9rem;
457
+ }
458
+
459
+ /* Generic MCP lane */
460
+ .sf-setup-generic {
461
+ padding: 1.5rem;
462
+ border: 1px solid color-mix(in srgb, var(--sf-setup-fg) 9%, transparent);
463
+ border-radius: 0.75rem;
464
+ background: var(--sf-setup-muted);
465
+ box-shadow: 0 20px 48px -40px color-mix(in srgb, CanvasText 50%, transparent);
466
+ }
467
+ .sf-setup-generic h2 {
468
+ font-family: var(--font-serif, ui-serif, Georgia, serif);
469
+ font-size: 1.5rem;
470
+ font-weight: 500;
471
+ letter-spacing: -0.015em;
472
+ }
473
+ .sf-setup-generic nav {
474
+ display: flex;
475
+ flex-wrap: wrap;
476
+ gap: 1rem;
477
+ }
478
+ .sf-setup-search {
479
+ display: flex;
480
+ align-items: center;
481
+ gap: 0.55rem;
482
+ margin: 1rem 0;
483
+ padding: 0 0.75rem;
484
+ border: 1px solid var(--sf-setup-border);
485
+ border-radius: 0.5rem;
486
+ background: var(--sf-setup-bg);
487
+ }
488
+ .sf-setup-search svg {
489
+ width: 1rem;
490
+ height: 1rem;
491
+ }
492
+ .sf-setup-search input {
493
+ width: 100%;
494
+ min-height: 2.75rem;
495
+ border: 0;
496
+ outline: 0;
497
+ background: transparent;
498
+ color: var(--sf-setup-fg);
499
+ font: inherit;
500
+ }
501
+ .sf-setup-picker-groups {
502
+ display: flex;
503
+ flex-direction: column;
504
+ gap: 1.75rem;
505
+ }
506
+ .sf-setup-picker-group {
507
+ display: flex;
508
+ flex-direction: column;
509
+ gap: 0.65rem;
510
+ }
511
+ .sf-setup-picker-grid {
512
+ display: grid;
513
+ grid-template-columns: repeat(2, minmax(0, 1fr));
514
+ gap: 0.6rem;
515
+ }
516
+ .sf-setup-picker-grid button {
517
+ display: flex;
518
+ min-width: 0;
519
+ align-items: center;
520
+ gap: 0.8rem;
521
+ padding: 0.9rem 1rem;
522
+ border: 1px solid var(--sf-setup-border);
523
+ border-radius: 0.75rem;
524
+ background: var(--sf-setup-bg);
525
+ color: var(--sf-setup-fg);
526
+ text-align: left;
527
+ cursor: pointer;
528
+ transition:
529
+ border-color 150ms ease,
530
+ background-color 150ms ease,
531
+ box-shadow 150ms ease;
532
+ }
533
+ .sf-setup-picker-grid button:hover,
534
+ .sf-setup-picker-grid button[aria-selected="true"] {
535
+ border-color: color-mix(in srgb, var(--sf-setup-fg) 28%, transparent);
536
+ background: var(--sf-setup-muted);
537
+ box-shadow: 0 14px 30px -26px color-mix(in srgb, CanvasText 55%, transparent);
538
+ }
539
+ .sf-setup-picker-grid strong {
540
+ font-size: 0.95rem;
541
+ font-weight: 600;
542
+ }
543
+ .sf-setup-picker-grid small {
544
+ overflow: hidden;
545
+ display: -webkit-box;
546
+ -webkit-box-orient: vertical;
547
+ -webkit-line-clamp: 1;
548
+ }
549
+ .sf-setup-mark--picker {
550
+ width: 2.1rem;
551
+ height: 2.1rem;
552
+ border-radius: 0.55rem;
553
+ }
554
+ .sf-setup-picker-go {
555
+ width: 1rem;
556
+ height: 1rem;
557
+ flex: none;
558
+ color: var(--sf-setup-muted-fg);
559
+ opacity: 0;
560
+ transition: opacity 150ms ease;
561
+ }
562
+ .sf-setup-picker-grid button:hover .sf-setup-picker-go,
563
+ .sf-setup-picker-grid button:focus-visible .sf-setup-picker-go {
564
+ opacity: 1;
565
+ }
566
+ .sf-setup-picker-grid button > span:last-child,
567
+ .sf-setup-let-agent span {
568
+ display: flex;
569
+ min-width: 0;
570
+ flex: 1;
571
+ flex-direction: column;
572
+ gap: 0.2rem;
573
+ }
574
+ .sf-setup-actions {
575
+ display: flex;
576
+ flex-wrap: wrap;
577
+ gap: 0.75rem;
578
+ }
579
+
580
+ /* Overlapping agent-logo strip — hints at the crowd behind a grouped option. */
581
+ .sf-setup-avatar-group {
582
+ display: inline-flex;
583
+ flex: none;
584
+ align-items: center;
585
+ }
586
+ .sf-setup-avatar-group .sf-setup-mark {
587
+ width: 1.6rem;
588
+ height: 1.6rem;
589
+ border-radius: 999px;
590
+ background: var(--sf-setup-bg);
591
+ box-shadow: 0 0 0 2px var(--sf-setup-bg);
592
+ }
593
+ .sf-setup-avatar-group .sf-setup-mark + .sf-setup-mark,
594
+ .sf-setup-avatar-group .sf-setup-avatar-group__more {
595
+ margin-left: -0.45rem;
596
+ }
597
+ .sf-setup-avatar-group__more {
598
+ z-index: 1;
599
+ display: inline-flex;
600
+ height: 1.6rem;
601
+ min-width: 1.6rem;
602
+ align-items: center;
603
+ justify-content: center;
604
+ padding-inline: 0.25rem;
605
+ border: 1px solid var(--sf-setup-border);
606
+ border-radius: 999px;
607
+ background: var(--sf-setup-muted);
608
+ color: var(--sf-setup-muted-fg);
609
+ font:
610
+ 600 0.62rem/1 ui-monospace,
611
+ monospace;
612
+ box-shadow: 0 0 0 2px var(--sf-setup-bg);
613
+ }
614
+ .sf-setup-detection {
615
+ width: min(100%, 48rem);
616
+ margin-inline: auto;
617
+ gap: 1.25rem;
618
+ }
619
+
620
+ /* Terminal lane — open but quiet. Command rows, not cards. */
621
+ .sf-setup-terminal {
622
+ padding: 1.1rem 1.2rem;
623
+ border: 1px dashed color-mix(in srgb, var(--sf-setup-fg) 14%, transparent);
624
+ border-radius: 0.75rem;
625
+ background: color-mix(in srgb, var(--sf-setup-muted) 55%, var(--sf-setup-bg));
626
+ }
627
+ .sf-setup-terminal__content {
628
+ gap: 0.65rem;
629
+ }
630
+ .sf-setup-terminal-row p {
631
+ margin: 0 0 0.3rem;
632
+ color: var(--sf-setup-muted-fg);
633
+ font-size: 0.82rem;
634
+ }
635
+ .sf-setup-terminal-row > div {
636
+ display: flex;
637
+ min-width: 0;
638
+ align-items: center;
639
+ gap: 0.5rem;
640
+ }
641
+ .sf-setup-terminal-row__copy {
642
+ display: flex;
643
+ min-width: 0;
644
+ flex: 1;
645
+ align-items: center;
646
+ gap: 0.5rem;
647
+ padding: 0;
648
+ border: 0;
649
+ background: none;
650
+ color: inherit;
651
+ cursor: pointer;
652
+ text-align: left;
653
+ }
654
+ .sf-setup-terminal-row__copy code {
655
+ min-width: 0;
656
+ flex: 1;
657
+ overflow-x: auto;
658
+ padding: 0.45rem 0.65rem;
659
+ border-radius: 0.45rem;
660
+ background: color-mix(in srgb, var(--sf-setup-fg) 6%, transparent);
661
+ color: var(--sf-setup-fg);
662
+ font:
663
+ 400 0.8rem/1.5 ui-monospace,
664
+ monospace;
665
+ white-space: pre;
666
+ }
667
+ .sf-setup-terminal-row__copy > svg {
668
+ width: 1rem;
669
+ height: 1rem;
670
+ flex: none;
671
+ color: var(--sf-setup-muted-fg);
672
+ }
673
+ .sf-setup-terminal-row__copy:hover:not(:disabled) > svg {
674
+ color: var(--sf-setup-fg);
675
+ }
676
+ .sf-setup-terminal-row__tools {
677
+ display: inline-flex;
678
+ flex: none;
679
+ align-items: center;
680
+ gap: 0.55rem;
681
+ color: var(--sf-setup-muted-fg);
682
+ font-size: 0.8rem;
683
+ }
684
+ .sf-setup-terminal-row__tools svg {
685
+ width: 1rem;
686
+ height: 1rem;
687
+ }
688
+ .sf-setup-terminal-row__tools .sf-setup-link {
689
+ color: var(--sf-setup-muted-fg);
690
+ }
691
+ .sf-setup-state {
692
+ max-width: 36rem;
693
+ align-items: flex-start;
694
+ gap: 1rem;
695
+ padding: 2rem 0;
696
+ }
697
+
698
+ /* Dock */
699
+ .sf-setup-dock {
700
+ --sf-setup-fg: var(--foreground, CanvasText);
701
+ --sf-setup-muted-fg: var(--muted-foreground, color-mix(in srgb, CanvasText 65%, Canvas));
702
+ --sf-setup-accent: var(--primary, CanvasText);
703
+ --sf-setup-accent-fg: var(--primary-foreground, Canvas);
704
+ position: sticky;
705
+ z-index: 30;
706
+ bottom: 0;
707
+ border-top: 1px solid color-mix(in srgb, #f59e0b 42%, transparent);
708
+ background: color-mix(in srgb, var(--background, Canvas) 84%, #f59e0b);
709
+ color: var(--sf-setup-fg);
710
+ backdrop-filter: blur(12px);
711
+ box-shadow: 0 -18px 50px -40px color-mix(in srgb, CanvasText 45%, transparent);
712
+ }
713
+ .sf-setup-dock > div {
714
+ display: flex;
715
+ width: min(100%, 56rem);
716
+ margin: 0 auto;
717
+ align-items: center;
718
+ justify-content: space-between;
719
+ gap: 1rem;
720
+ padding: 1.1rem 1.5rem max(1.1rem, env(safe-area-inset-bottom));
721
+ }
722
+ .sf-setup-dock h2 {
723
+ font-family: var(--font-serif, ui-serif, Georgia, serif);
724
+ font-size: 1.4rem;
725
+ font-weight: 500;
726
+ }
727
+ .sf-setup-dock[data-copied] > div {
728
+ padding-block: 0.65rem;
729
+ }
730
+ .sf-setup-dock[data-copied] h2 {
731
+ font-size: 1.05rem;
732
+ }
733
+
734
+ /* The promoted fast-path row on question one. */
735
+ .sf-setup-let-agent {
736
+ display: flex;
737
+ width: 100%;
738
+ align-items: center;
739
+ gap: 1rem;
740
+ padding: 1.1rem 1.2rem;
741
+ border: 1px solid color-mix(in srgb, #f59e0b 45%, transparent);
742
+ border-radius: 0.75rem;
743
+ background: var(--sf-setup-warm);
744
+ color: var(--sf-setup-fg);
745
+ text-align: left;
746
+ cursor: pointer;
747
+ transition:
748
+ border-color 150ms ease,
749
+ box-shadow 150ms ease;
750
+ }
751
+ .sf-setup-let-agent:hover {
752
+ border-color: color-mix(in srgb, #f59e0b 70%, transparent);
753
+ box-shadow: 0 14px 34px -28px color-mix(in srgb, #b45309 65%, transparent);
754
+ }
755
+ .sf-setup-let-agent > svg {
756
+ width: 1.05rem;
757
+ height: 1.05rem;
758
+ flex: none;
759
+ color: var(--sf-setup-warning);
760
+ }
761
+ .sf-setup-let-agent strong {
762
+ font-size: 1rem;
763
+ font-weight: 600;
764
+ }
765
+ .sf-setup-let-agent kbd {
766
+ display: inline-flex;
767
+ width: 1.75rem;
768
+ height: 1.75rem;
769
+ flex: none;
770
+ align-items: center;
771
+ justify-content: center;
772
+ border: 1px solid color-mix(in srgb, #b45309 35%, transparent);
773
+ border-radius: 0.4rem;
774
+ background: var(--sf-setup-bg);
775
+ color: var(--sf-setup-warning);
776
+ font:
777
+ 600 0.75rem/1 ui-monospace,
778
+ monospace;
779
+ }
780
+ .sf-setup-let-agent[data-copied="true"] {
781
+ border-color: color-mix(in srgb, #16a34a 55%, transparent);
782
+ }
783
+
784
+ @media (max-width: 48rem) {
785
+ .sf-setup-source-grid,
786
+ .sf-setup-picker-grid {
787
+ grid-template-columns: 1fr;
788
+ }
789
+ .sf-setup-source-grid a {
790
+ flex-direction: row;
791
+ align-items: center;
792
+ }
793
+ .sf-setup-dock > div {
794
+ align-items: flex-start;
795
+ flex-direction: column;
796
+ }
797
+ .sf-setup-dock .sf-setup-button {
798
+ width: 100%;
799
+ min-height: 2.75rem;
800
+ }
801
+ .sf-setup-button {
802
+ min-height: 2.75rem;
803
+ }
804
+ }
805
+
806
+ @media (max-width: 34rem) {
807
+ .sf-setup-page {
808
+ gap: 2.25rem;
809
+ }
810
+ .sf-setup-page__head {
811
+ grid-template-columns: 1fr;
812
+ }
813
+ .sf-setup-method__head {
814
+ flex-direction: column;
815
+ }
816
+ .sf-setup-method__head .sf-setup-button {
817
+ width: 100%;
818
+ }
819
+ .sf-setup-method--primary {
820
+ padding: 1.15rem;
821
+ }
822
+ .sf-setup-page h1,
823
+ .sf-setup-picker h1,
824
+ .sf-setup-detection h1 {
825
+ font-size: clamp(2.25rem, 12vw, 3rem);
826
+ }
827
+ }