@webgrow/skillhub 0.1.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.
@@ -0,0 +1,982 @@
1
+ :root {
2
+ color-scheme: light;
3
+ font-family:
4
+ Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
5
+ sans-serif;
6
+ background: #f6f7f8;
7
+ color: #18202a;
8
+ font-synthesis: none;
9
+ text-rendering: optimizeLegibility;
10
+ }
11
+
12
+ * {
13
+ box-sizing: border-box;
14
+ }
15
+
16
+ body {
17
+ margin: 0;
18
+ min-width: 320px;
19
+ min-height: 100vh;
20
+ }
21
+
22
+ button,
23
+ input,
24
+ textarea,
25
+ select {
26
+ font: inherit;
27
+ }
28
+
29
+ button {
30
+ cursor: pointer;
31
+ }
32
+
33
+ code {
34
+ background: #eef2f5;
35
+ border: 1px solid #d9e0e6;
36
+ border-radius: 5px;
37
+ padding: 0.12rem 0.32rem;
38
+ }
39
+
40
+ .setup-shell {
41
+ display: grid;
42
+ min-height: 100vh;
43
+ place-items: center;
44
+ padding: 24px;
45
+ }
46
+
47
+ .setup-panel {
48
+ width: min(520px, 100%);
49
+ border: 1px solid #d9e0e6;
50
+ border-radius: 8px;
51
+ background: #ffffff;
52
+ padding: 28px;
53
+ box-shadow: 0 16px 42px rgba(24, 32, 42, 0.08);
54
+ }
55
+
56
+ .setup-panel h1 {
57
+ margin: 0 0 12px;
58
+ font-size: 1.6rem;
59
+ letter-spacing: 0;
60
+ }
61
+
62
+ .setup-panel p {
63
+ margin: 0;
64
+ color: #52606d;
65
+ line-height: 1.6;
66
+ }
67
+
68
+ .app-shell {
69
+ display: grid;
70
+ grid-template-columns: 290px minmax(0, 1fr);
71
+ min-height: 100vh;
72
+ }
73
+
74
+ .sidebar {
75
+ display: flex;
76
+ flex-direction: column;
77
+ min-height: 100vh;
78
+ border-right: 1px solid #d9e0e6;
79
+ background: #fbfcfd;
80
+ padding: 18px;
81
+ }
82
+
83
+ .brand-row {
84
+ display: flex;
85
+ align-items: center;
86
+ gap: 12px;
87
+ min-height: 46px;
88
+ }
89
+
90
+ .brand-mark {
91
+ display: grid;
92
+ width: 34px;
93
+ height: 34px;
94
+ place-items: center;
95
+ border-radius: 7px;
96
+ background: #0f766e;
97
+ color: #ffffff;
98
+ }
99
+
100
+ .brand-title {
101
+ font-weight: 740;
102
+ line-height: 1.1;
103
+ }
104
+
105
+ .brand-subtitle,
106
+ .run-meta,
107
+ .action-main p,
108
+ .stream-copy small,
109
+ .state-item dt,
110
+ .field span,
111
+ .preview-meta span,
112
+ .version-row span,
113
+ .eyebrow {
114
+ color: #657383;
115
+ font-size: 0.78rem;
116
+ }
117
+
118
+ .view-tabs {
119
+ display: grid;
120
+ gap: 8px;
121
+ margin-top: 22px;
122
+ }
123
+
124
+ .view-tabs button {
125
+ display: grid;
126
+ grid-template-columns: 24px minmax(0, 1fr) auto;
127
+ align-items: center;
128
+ min-height: 44px;
129
+ width: 100%;
130
+ border: 1px solid #d9e0e6;
131
+ border-radius: 8px;
132
+ background: #ffffff;
133
+ color: #3d4854;
134
+ padding: 8px 10px;
135
+ text-align: left;
136
+ }
137
+
138
+ .view-tabs button:hover {
139
+ background: #f1f5f7;
140
+ }
141
+
142
+ .view-tabs button.selected {
143
+ border-color: #9ed8d1;
144
+ background: #e9f7f5;
145
+ color: #0f766e;
146
+ }
147
+
148
+ .view-tabs span {
149
+ overflow: hidden;
150
+ font-weight: 740;
151
+ text-overflow: ellipsis;
152
+ white-space: nowrap;
153
+ }
154
+
155
+ .view-tabs strong {
156
+ min-width: 26px;
157
+ border: 1px solid currentColor;
158
+ border-radius: 999px;
159
+ padding: 1px 7px;
160
+ font-size: 0.76rem;
161
+ text-align: center;
162
+ }
163
+
164
+ .sidebar-header {
165
+ display: flex;
166
+ align-items: center;
167
+ justify-content: space-between;
168
+ margin: 28px 0 10px;
169
+ color: #3d4854;
170
+ font-size: 0.82rem;
171
+ font-weight: 720;
172
+ text-transform: uppercase;
173
+ }
174
+
175
+ .count-pill {
176
+ min-width: 28px;
177
+ border: 1px solid #d5dde4;
178
+ border-radius: 999px;
179
+ padding: 2px 8px;
180
+ text-align: center;
181
+ }
182
+
183
+ .run-list {
184
+ display: grid;
185
+ gap: 8px;
186
+ overflow: auto;
187
+ padding-right: 2px;
188
+ }
189
+
190
+ .run-item,
191
+ .skill-item,
192
+ .loop-item,
193
+ .worker-item {
194
+ display: grid;
195
+ grid-template-columns: 28px minmax(0, 1fr);
196
+ align-items: center;
197
+ min-height: 56px;
198
+ width: 100%;
199
+ border: 1px solid transparent;
200
+ border-radius: 8px;
201
+ background: transparent;
202
+ color: inherit;
203
+ padding: 8px;
204
+ text-align: left;
205
+ }
206
+
207
+ .run-item:hover,
208
+ .skill-item:hover,
209
+ .loop-item:hover {
210
+ background: #f1f5f7;
211
+ }
212
+
213
+ .run-item.selected,
214
+ .skill-item.selected,
215
+ .loop-item.selected {
216
+ border-color: #9ed8d1;
217
+ background: #e9f7f5;
218
+ }
219
+
220
+ .worker-item {
221
+ cursor: default;
222
+ }
223
+
224
+ .connect-summary {
225
+ display: grid;
226
+ grid-template-columns: auto minmax(0, 1fr);
227
+ align-items: center;
228
+ gap: 8px;
229
+ min-height: 48px;
230
+ border: 1px solid #d9e0e6;
231
+ border-radius: 8px;
232
+ background: #ffffff;
233
+ padding: 10px;
234
+ color: #3d4854;
235
+ font-weight: 740;
236
+ }
237
+
238
+ .run-item-main {
239
+ display: grid;
240
+ min-width: 0;
241
+ gap: 4px;
242
+ }
243
+
244
+ .run-name {
245
+ overflow: hidden;
246
+ font-size: 0.9rem;
247
+ font-weight: 700;
248
+ text-overflow: ellipsis;
249
+ white-space: nowrap;
250
+ }
251
+
252
+ .status-dot {
253
+ display: grid;
254
+ width: 24px;
255
+ height: 24px;
256
+ place-items: center;
257
+ border-radius: 999px;
258
+ }
259
+
260
+ .workspace {
261
+ display: flex;
262
+ min-width: 0;
263
+ flex-direction: column;
264
+ gap: 18px;
265
+ padding: 20px;
266
+ }
267
+
268
+ .topbar {
269
+ display: flex;
270
+ align-items: center;
271
+ justify-content: space-between;
272
+ gap: 14px;
273
+ min-height: 58px;
274
+ }
275
+
276
+ .eyebrow {
277
+ margin: 0 0 3px;
278
+ font-weight: 720;
279
+ text-transform: uppercase;
280
+ }
281
+
282
+ .topbar h1 {
283
+ margin: 0;
284
+ overflow-wrap: anywhere;
285
+ font-size: clamp(1.35rem, 2vw, 2rem);
286
+ letter-spacing: 0;
287
+ }
288
+
289
+ .primary-button {
290
+ display: inline-flex;
291
+ align-items: center;
292
+ justify-content: center;
293
+ gap: 8px;
294
+ min-width: 126px;
295
+ min-height: 44px;
296
+ border: 1px solid #0f766e;
297
+ border-radius: 7px;
298
+ background: #0f766e;
299
+ color: #ffffff;
300
+ font-weight: 760;
301
+ }
302
+
303
+ .primary-button:disabled {
304
+ cursor: not-allowed;
305
+ opacity: 0.7;
306
+ }
307
+
308
+ .secondary-button {
309
+ display: inline-flex;
310
+ align-items: center;
311
+ justify-content: center;
312
+ gap: 8px;
313
+ min-height: 44px;
314
+ border: 1px solid #c8d2db;
315
+ border-radius: 7px;
316
+ background: #ffffff;
317
+ color: #24313f;
318
+ font-weight: 740;
319
+ padding: 0 14px;
320
+ }
321
+
322
+ .secondary-button:hover {
323
+ background: #f4f7f9;
324
+ }
325
+
326
+ .secondary-button:disabled {
327
+ cursor: not-allowed;
328
+ opacity: 0.62;
329
+ }
330
+
331
+ .error-banner,
332
+ .notice-banner {
333
+ border: 1px solid #f0a5a3;
334
+ border-radius: 7px;
335
+ background: #fff0ef;
336
+ color: #9f1d1b;
337
+ padding: 10px 12px;
338
+ }
339
+
340
+ .notice-banner {
341
+ border-color: #9ed8d1;
342
+ background: #e9f7f5;
343
+ color: #0f5f59;
344
+ }
345
+
346
+ .metric-grid {
347
+ display: grid;
348
+ grid-template-columns: repeat(3, minmax(0, 1fr));
349
+ gap: 12px;
350
+ }
351
+
352
+ .metric {
353
+ display: grid;
354
+ grid-template-columns: 24px minmax(0, 1fr) auto;
355
+ align-items: center;
356
+ min-height: 58px;
357
+ border: 1px solid #d9e0e6;
358
+ border-radius: 8px;
359
+ background: #ffffff;
360
+ padding: 12px;
361
+ }
362
+
363
+ .metric span {
364
+ color: #52606d;
365
+ font-size: 0.86rem;
366
+ }
367
+
368
+ .metric strong {
369
+ color: #111827;
370
+ font-size: 1.35rem;
371
+ }
372
+
373
+ .content-grid {
374
+ display: grid;
375
+ grid-template-columns: minmax(260px, 0.85fr) minmax(320px, 1.15fr);
376
+ gap: 14px;
377
+ min-height: 0;
378
+ }
379
+
380
+ .onboarding-grid {
381
+ display: grid;
382
+ grid-template-columns: minmax(320px, 0.9fr) minmax(360px, 1.1fr);
383
+ gap: 14px;
384
+ min-height: 0;
385
+ }
386
+
387
+ .skills-grid,
388
+ .loops-grid {
389
+ display: grid;
390
+ grid-template-columns: minmax(360px, 1.15fr) minmax(300px, 0.85fr);
391
+ gap: 14px;
392
+ min-height: 0;
393
+ }
394
+
395
+ .checklist {
396
+ display: grid;
397
+ gap: 10px;
398
+ }
399
+
400
+ .checklist-item {
401
+ display: grid;
402
+ grid-template-columns: 30px minmax(0, 1fr);
403
+ gap: 10px;
404
+ align-items: start;
405
+ border: 1px solid #e5eaee;
406
+ border-radius: 7px;
407
+ padding: 10px;
408
+ }
409
+
410
+ .checklist-item span:last-child {
411
+ display: grid;
412
+ min-width: 0;
413
+ gap: 3px;
414
+ }
415
+
416
+ .checklist-item strong {
417
+ color: #24313f;
418
+ }
419
+
420
+ .checklist-item small,
421
+ .worker-row span {
422
+ color: #657383;
423
+ font-size: 0.8rem;
424
+ line-height: 1.45;
425
+ }
426
+
427
+ .advanced-disclosure {
428
+ margin-top: 12px;
429
+ border-top: 1px solid #edf0f3;
430
+ padding-top: 8px;
431
+ }
432
+
433
+ .advanced-disclosure summary {
434
+ display: inline-flex;
435
+ align-items: center;
436
+ gap: 7px;
437
+ min-height: 34px;
438
+ color: #52606d;
439
+ cursor: pointer;
440
+ font-size: 0.82rem;
441
+ font-weight: 740;
442
+ list-style: none;
443
+ }
444
+
445
+ .advanced-disclosure summary::-webkit-details-marker {
446
+ display: none;
447
+ }
448
+
449
+ .worker-table {
450
+ display: grid;
451
+ gap: 10px;
452
+ }
453
+
454
+ .worker-row {
455
+ display: grid;
456
+ grid-template-columns: minmax(0, 1fr) auto;
457
+ gap: 10px;
458
+ border: 1px solid #e5eaee;
459
+ border-radius: 7px;
460
+ padding: 10px;
461
+ }
462
+
463
+ .worker-row > div:first-child {
464
+ display: grid;
465
+ min-width: 0;
466
+ gap: 3px;
467
+ }
468
+
469
+ .worker-detail {
470
+ display: grid;
471
+ grid-column: 1 / -1;
472
+ gap: 4px;
473
+ border: 1px solid #edf0f3;
474
+ border-radius: 7px;
475
+ padding: 9px;
476
+ }
477
+
478
+ .worker-detail strong {
479
+ overflow-wrap: anywhere;
480
+ color: #24313f;
481
+ font-size: 0.88rem;
482
+ }
483
+
484
+ .panel {
485
+ min-width: 0;
486
+ border: 1px solid #d9e0e6;
487
+ border-radius: 8px;
488
+ background: #ffffff;
489
+ padding: 14px;
490
+ }
491
+
492
+ .stream-panel {
493
+ grid-column: 1 / -1;
494
+ }
495
+
496
+ .panel-title {
497
+ display: flex;
498
+ align-items: center;
499
+ gap: 8px;
500
+ min-height: 30px;
501
+ margin-bottom: 12px;
502
+ }
503
+
504
+ .panel-title h2 {
505
+ margin: 0;
506
+ font-size: 0.95rem;
507
+ letter-spacing: 0;
508
+ }
509
+
510
+ .state-grid {
511
+ display: grid;
512
+ grid-template-columns: repeat(2, minmax(0, 1fr));
513
+ gap: 10px;
514
+ margin: 0;
515
+ }
516
+
517
+ .state-item {
518
+ min-height: 62px;
519
+ border: 1px solid #e5eaee;
520
+ border-radius: 7px;
521
+ padding: 10px;
522
+ }
523
+
524
+ .state-item.wide {
525
+ grid-column: 1 / -1;
526
+ }
527
+
528
+ .state-item dt {
529
+ margin-bottom: 6px;
530
+ }
531
+
532
+ .state-item dd {
533
+ margin: 0;
534
+ overflow-wrap: anywhere;
535
+ font-weight: 700;
536
+ }
537
+
538
+ .action-list,
539
+ .stream-list {
540
+ display: grid;
541
+ gap: 8px;
542
+ }
543
+
544
+ .form-stack,
545
+ .preview-stack {
546
+ display: grid;
547
+ gap: 12px;
548
+ }
549
+
550
+ .form-two {
551
+ display: grid;
552
+ grid-template-columns: repeat(2, minmax(0, 1fr));
553
+ gap: 12px;
554
+ }
555
+
556
+ .field {
557
+ display: grid;
558
+ gap: 6px;
559
+ }
560
+
561
+ .field span {
562
+ font-weight: 760;
563
+ text-transform: uppercase;
564
+ }
565
+
566
+ .field input,
567
+ .field textarea,
568
+ .field select {
569
+ width: 100%;
570
+ min-height: 44px;
571
+ border: 1px solid #cfd8df;
572
+ border-radius: 7px;
573
+ background: #ffffff;
574
+ color: #18202a;
575
+ padding: 10px 11px;
576
+ line-height: 1.45;
577
+ }
578
+
579
+ .field select {
580
+ appearance: auto;
581
+ }
582
+
583
+ .field textarea {
584
+ min-height: 104px;
585
+ resize: vertical;
586
+ }
587
+
588
+ .field .textarea-large {
589
+ min-height: 210px;
590
+ }
591
+
592
+ .field input:focus,
593
+ .field textarea:focus,
594
+ .field select:focus,
595
+ .primary-button:focus-visible,
596
+ .secondary-button:focus-visible,
597
+ .view-tabs button:focus-visible,
598
+ .run-item:focus-visible,
599
+ .skill-item:focus-visible,
600
+ .loop-item:focus-visible,
601
+ .icon-button:focus-visible {
602
+ outline: 3px solid rgba(15, 118, 110, 0.22);
603
+ outline-offset: 2px;
604
+ }
605
+
606
+ .step-toolbar {
607
+ display: flex;
608
+ align-items: center;
609
+ justify-content: space-between;
610
+ gap: 12px;
611
+ }
612
+
613
+ .step-toolbar .panel-title {
614
+ margin-bottom: 0;
615
+ }
616
+
617
+ .step-list {
618
+ display: grid;
619
+ gap: 10px;
620
+ }
621
+
622
+ .step-card {
623
+ display: grid;
624
+ gap: 12px;
625
+ border: 1px solid #e2e8ee;
626
+ border-radius: 8px;
627
+ background: #fbfcfd;
628
+ padding: 12px;
629
+ }
630
+
631
+ .step-header {
632
+ display: grid;
633
+ grid-template-columns: 30px minmax(0, 1fr) 38px;
634
+ align-items: center;
635
+ gap: 9px;
636
+ min-height: 38px;
637
+ }
638
+
639
+ .step-header strong {
640
+ overflow: hidden;
641
+ color: #24313f;
642
+ font-size: 0.94rem;
643
+ text-overflow: ellipsis;
644
+ white-space: nowrap;
645
+ }
646
+
647
+ .step-index {
648
+ display: grid;
649
+ width: 28px;
650
+ height: 28px;
651
+ place-items: center;
652
+ border: 1px solid #bfd0dd;
653
+ border-radius: 999px;
654
+ background: #ffffff;
655
+ color: #334155;
656
+ font-size: 0.78rem;
657
+ font-weight: 780;
658
+ }
659
+
660
+ .step-fields {
661
+ display: grid;
662
+ grid-template-columns: repeat(2, minmax(0, 1fr));
663
+ gap: 10px;
664
+ }
665
+
666
+ .icon-button {
667
+ display: inline-grid;
668
+ width: 38px;
669
+ height: 38px;
670
+ place-items: center;
671
+ border: 1px solid #d7e0e7;
672
+ border-radius: 7px;
673
+ background: #ffffff;
674
+ color: #52606d;
675
+ }
676
+
677
+ .icon-button:hover {
678
+ background: #f4f7f9;
679
+ color: #9f1d1b;
680
+ }
681
+
682
+ .icon-button:disabled {
683
+ cursor: not-allowed;
684
+ opacity: 0.48;
685
+ }
686
+
687
+ .form-actions {
688
+ display: flex;
689
+ flex-wrap: wrap;
690
+ justify-content: flex-end;
691
+ gap: 10px;
692
+ }
693
+
694
+ .preview-meta {
695
+ display: flex;
696
+ align-items: center;
697
+ flex-wrap: wrap;
698
+ gap: 8px;
699
+ min-height: 32px;
700
+ }
701
+
702
+ .prompt-preview {
703
+ overflow: auto;
704
+ max-height: 460px;
705
+ margin: 0;
706
+ border: 1px solid #d9e0e6;
707
+ border-radius: 8px;
708
+ background: #f8fafb;
709
+ color: #22303d;
710
+ font-family:
711
+ "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
712
+ font-size: 0.84rem;
713
+ line-height: 1.55;
714
+ padding: 12px;
715
+ white-space: pre-wrap;
716
+ }
717
+
718
+ .version-list {
719
+ display: grid;
720
+ gap: 8px;
721
+ }
722
+
723
+ .version-disclosure {
724
+ border-top: 1px solid #edf0f3;
725
+ padding-top: 8px;
726
+ }
727
+
728
+ .version-disclosure summary {
729
+ display: inline-flex;
730
+ align-items: center;
731
+ gap: 7px;
732
+ min-height: 34px;
733
+ border-radius: 6px;
734
+ color: #52606d;
735
+ cursor: pointer;
736
+ font-size: 0.82rem;
737
+ font-weight: 740;
738
+ list-style: none;
739
+ }
740
+
741
+ .version-disclosure summary::-webkit-details-marker {
742
+ display: none;
743
+ }
744
+
745
+ .version-disclosure summary:hover {
746
+ color: #0f766e;
747
+ }
748
+
749
+ .version-disclosure[open] summary {
750
+ margin-bottom: 8px;
751
+ }
752
+
753
+ .version-row {
754
+ display: grid;
755
+ grid-template-columns: minmax(0, 1fr) auto;
756
+ align-items: center;
757
+ gap: 10px;
758
+ min-height: 54px;
759
+ border: 1px solid #e5eaee;
760
+ border-radius: 7px;
761
+ padding: 9px 10px;
762
+ }
763
+
764
+ .version-row div {
765
+ display: grid;
766
+ min-width: 0;
767
+ gap: 3px;
768
+ }
769
+
770
+ .version-row strong {
771
+ overflow: hidden;
772
+ text-overflow: ellipsis;
773
+ white-space: nowrap;
774
+ }
775
+
776
+ .action-item {
777
+ display: grid;
778
+ grid-template-columns: minmax(0, 1fr) auto;
779
+ align-items: center;
780
+ gap: 10px;
781
+ min-height: 66px;
782
+ border: 1px solid #e5eaee;
783
+ border-radius: 7px;
784
+ padding: 10px;
785
+ }
786
+
787
+ .action-main {
788
+ min-width: 0;
789
+ }
790
+
791
+ .action-main h3 {
792
+ margin: 0 0 4px;
793
+ overflow-wrap: anywhere;
794
+ font-size: 0.93rem;
795
+ letter-spacing: 0;
796
+ }
797
+
798
+ .action-main p {
799
+ margin: 0;
800
+ }
801
+
802
+ .status-badge {
803
+ display: inline-flex;
804
+ align-items: center;
805
+ justify-content: center;
806
+ min-height: 26px;
807
+ border-radius: 999px;
808
+ padding: 3px 9px;
809
+ font-size: 0.76rem;
810
+ font-weight: 760;
811
+ white-space: nowrap;
812
+ }
813
+
814
+ .good {
815
+ background: #e7f7ee;
816
+ color: #12663a;
817
+ }
818
+
819
+ .warn {
820
+ background: #fff4d7;
821
+ color: #87530f;
822
+ }
823
+
824
+ .bad {
825
+ background: #ffe7e5;
826
+ color: #9f1d1b;
827
+ }
828
+
829
+ .info {
830
+ background: #e8f1ff;
831
+ color: #1d4f91;
832
+ }
833
+
834
+ .neutral {
835
+ background: #eef2f5;
836
+ color: #47515d;
837
+ }
838
+
839
+ .stream-row {
840
+ display: grid;
841
+ grid-template-columns: 62px minmax(0, 1fr);
842
+ gap: 10px;
843
+ border-bottom: 1px solid #edf0f3;
844
+ padding: 9px 0;
845
+ }
846
+
847
+ .stream-row:last-child {
848
+ border-bottom: 0;
849
+ }
850
+
851
+ .stream-level {
852
+ width: 58px;
853
+ height: 24px;
854
+ border-radius: 999px;
855
+ font-size: 0.72rem;
856
+ font-weight: 760;
857
+ line-height: 24px;
858
+ text-align: center;
859
+ }
860
+
861
+ .stream-level.debug {
862
+ background: #eef2f5;
863
+ color: #4d5966;
864
+ }
865
+
866
+ .stream-level.info {
867
+ background: #e9f7f5;
868
+ color: #0f766e;
869
+ }
870
+
871
+ .stream-level.warn {
872
+ background: #fff4d7;
873
+ color: #87530f;
874
+ }
875
+
876
+ .stream-level.error {
877
+ background: #ffe7e5;
878
+ color: #9f1d1b;
879
+ }
880
+
881
+ .stream-copy {
882
+ display: grid;
883
+ min-width: 0;
884
+ gap: 3px;
885
+ }
886
+
887
+ .stream-copy span {
888
+ overflow-wrap: anywhere;
889
+ }
890
+
891
+ .empty-state,
892
+ .empty-panel,
893
+ .loading-row {
894
+ display: flex;
895
+ align-items: center;
896
+ justify-content: center;
897
+ min-height: 76px;
898
+ border: 1px dashed #cbd5dd;
899
+ border-radius: 8px;
900
+ color: #657383;
901
+ font-size: 0.88rem;
902
+ }
903
+
904
+ .loading-row {
905
+ gap: 8px;
906
+ }
907
+
908
+ .spin {
909
+ animation: spin 900ms linear infinite;
910
+ }
911
+
912
+ @keyframes spin {
913
+ to {
914
+ transform: rotate(360deg);
915
+ }
916
+ }
917
+
918
+ @media (max-width: 920px) {
919
+ .app-shell {
920
+ grid-template-columns: 1fr;
921
+ }
922
+
923
+ .sidebar {
924
+ min-height: auto;
925
+ border-right: 0;
926
+ border-bottom: 1px solid #d9e0e6;
927
+ }
928
+
929
+ .run-list {
930
+ grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
931
+ }
932
+
933
+ .content-grid,
934
+ .onboarding-grid,
935
+ .skills-grid,
936
+ .loops-grid,
937
+ .metric-grid {
938
+ grid-template-columns: 1fr;
939
+ }
940
+ }
941
+
942
+ @media (max-width: 620px) {
943
+ .workspace,
944
+ .sidebar {
945
+ padding: 14px;
946
+ }
947
+
948
+ .topbar {
949
+ align-items: stretch;
950
+ flex-direction: column;
951
+ }
952
+
953
+ .primary-button {
954
+ width: 100%;
955
+ }
956
+
957
+ .state-grid {
958
+ grid-template-columns: 1fr;
959
+ }
960
+
961
+ .form-two {
962
+ grid-template-columns: 1fr;
963
+ }
964
+
965
+ .step-fields {
966
+ grid-template-columns: 1fr;
967
+ }
968
+
969
+ .step-toolbar {
970
+ align-items: stretch;
971
+ flex-direction: column;
972
+ }
973
+
974
+ .form-actions {
975
+ align-items: stretch;
976
+ flex-direction: column;
977
+ }
978
+
979
+ .secondary-button {
980
+ width: 100%;
981
+ }
982
+ }