create-openclaw-bot 4.0.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/style.css ADDED
@@ -0,0 +1,1347 @@
1
+ /* ============================================
2
+ OpenClaw Setup Wizard — Design System v2
3
+ Enhanced gradients, multi-provider, plugin grid
4
+ ============================================ */
5
+
6
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap');
7
+
8
+ :root {
9
+ /* Brand */
10
+ --claw-coral: #FF6B35;
11
+ --claw-coral-light: #FF8F66;
12
+ --claw-coral-dark: #E05520;
13
+
14
+ /* Neutrals */
15
+ --bg-primary: #060612;
16
+ --bg-secondary: #0e0e1c;
17
+ --bg-card: rgba(255, 255, 255, 0.04);
18
+ --bg-card-hover: rgba(255, 255, 255, 0.08);
19
+ --bg-glass: rgba(255, 255, 255, 0.05);
20
+ --bg-glass-strong: rgba(255, 255, 255, 0.08);
21
+
22
+ /* Text */
23
+ --text-primary: #f0f0f5;
24
+ --text-secondary: #9494b0;
25
+ --text-muted: #5a5a72;
26
+
27
+ /* Channels */
28
+ --telegram-blue: #26A5E4;
29
+ --zalo-blue: #0068FF;
30
+ --zalo-personal: #8B5CF6;
31
+
32
+ /* Providers */
33
+ --google-blue: #4285F4;
34
+ --anthropic-orange: #D97706;
35
+ --openai-green: #10B981;
36
+ --openrouter-purple: #7C3AED;
37
+ --ollama-pink: #EC4899;
38
+
39
+ /* Status */
40
+ --success: #22c55e;
41
+ --warning: #f59e0b;
42
+ --danger: #ef4444;
43
+
44
+ /* Spacing */
45
+ --radius-sm: 8px;
46
+ --radius-md: 12px;
47
+ --radius-lg: 16px;
48
+ --radius-xl: 24px;
49
+
50
+ /* Transitions */
51
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
52
+ --duration-fast: 200ms;
53
+ --duration-normal: 350ms;
54
+ --duration-slow: 600ms;
55
+ }
56
+
57
+ /* ============ Reset & Base ============ */
58
+ *,
59
+ *::before,
60
+ *::after {
61
+ margin: 0;
62
+ padding: 0;
63
+ box-sizing: border-box;
64
+ }
65
+
66
+ html {
67
+ font-size: 16px;
68
+ scroll-behavior: smooth;
69
+ }
70
+
71
+ body {
72
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
73
+ background: var(--bg-primary);
74
+ color: var(--text-primary);
75
+ min-height: 100vh;
76
+ overflow-x: hidden;
77
+ -webkit-font-smoothing: antialiased;
78
+ }
79
+
80
+ /* ========== Multi-layer animated background ========== */
81
+ body::before {
82
+ content: '';
83
+ position: fixed;
84
+ top: 0;
85
+ left: 0;
86
+ width: 100%;
87
+ height: 100%;
88
+ background:
89
+ radial-gradient(ellipse 80% 50% at 50% -10%, rgba(255, 107, 53, 0.15), transparent 60%),
90
+ radial-gradient(ellipse 50% 60% at 85% 80%, rgba(38, 165, 228, 0.08), transparent 60%),
91
+ radial-gradient(ellipse 50% 60% at 15% 80%, rgba(139, 92, 246, 0.08), transparent 60%),
92
+ radial-gradient(circle at 50% 50%, rgba(16, 185, 129, 0.04), transparent 70%);
93
+ pointer-events: none;
94
+ z-index: 0;
95
+ animation: bgPulse 8s ease-in-out infinite alternate;
96
+ }
97
+
98
+ body::after {
99
+ content: '';
100
+ position: fixed;
101
+ top: 0;
102
+ left: 0;
103
+ width: 100%;
104
+ height: 100%;
105
+ background:
106
+ radial-gradient(circle 300px at 20% 30%, rgba(255, 107, 53, 0.06), transparent),
107
+ radial-gradient(circle 300px at 80% 60%, rgba(124, 58, 237, 0.06), transparent);
108
+ pointer-events: none;
109
+ z-index: 0;
110
+ animation: bgPulse 12s ease-in-out infinite alternate-reverse;
111
+ }
112
+
113
+ @keyframes bgPulse {
114
+ 0% { opacity: 1; }
115
+ 100% { opacity: 0.6; }
116
+ }
117
+
118
+ /* ============ Layout ============ */
119
+ .app-container {
120
+ position: relative;
121
+ z-index: 1;
122
+ max-width: 900px;
123
+ margin: 0 auto;
124
+ padding: 40px 24px 80px;
125
+ }
126
+
127
+ /* ============ Header ============ */
128
+ .header {
129
+ text-align: center;
130
+ margin-bottom: 48px;
131
+ }
132
+
133
+ .header__logo {
134
+ font-size: 52px;
135
+ margin-bottom: 8px;
136
+ animation: float 3s ease-in-out infinite;
137
+ filter: drop-shadow(0 8px 24px rgba(255, 107, 53, 0.3));
138
+ }
139
+
140
+ @keyframes float {
141
+ 0%, 100% { transform: translateY(0px); }
142
+ 50% { transform: translateY(-8px); }
143
+ }
144
+
145
+ .header__title {
146
+ font-size: 34px;
147
+ font-weight: 800;
148
+ letter-spacing: -0.5px;
149
+ background: linear-gradient(135deg, var(--claw-coral), #FF9966, var(--claw-coral-light));
150
+ background-size: 200% 200%;
151
+ -webkit-background-clip: text;
152
+ -webkit-text-fill-color: transparent;
153
+ background-clip: text;
154
+ margin-bottom: 8px;
155
+ animation: shimmer 3s ease-in-out infinite;
156
+ }
157
+
158
+ @keyframes shimmer {
159
+ 0%, 100% { background-position: 0% 50%; }
160
+ 50% { background-position: 100% 50%; }
161
+ }
162
+
163
+ .header__subtitle {
164
+ font-size: 16px;
165
+ color: var(--text-secondary);
166
+ font-weight: 400;
167
+ }
168
+
169
+ /* ============ Progress Bar ============ */
170
+ .progress-bar {
171
+ display: flex;
172
+ align-items: center;
173
+ justify-content: center;
174
+ gap: 0;
175
+ margin-bottom: 48px;
176
+ }
177
+
178
+ .progress-step {
179
+ display: flex;
180
+ align-items: center;
181
+ gap: 8px;
182
+ cursor: pointer;
183
+ transition: all var(--duration-normal) var(--ease-out);
184
+ }
185
+
186
+ .progress-step__circle {
187
+ width: 36px;
188
+ height: 36px;
189
+ border-radius: 50%;
190
+ display: flex;
191
+ align-items: center;
192
+ justify-content: center;
193
+ font-size: 14px;
194
+ font-weight: 600;
195
+ background: var(--bg-card);
196
+ border: 2px solid var(--text-muted);
197
+ color: var(--text-muted);
198
+ transition: all var(--duration-normal) var(--ease-out);
199
+ flex-shrink: 0;
200
+ }
201
+
202
+ .progress-step__label {
203
+ font-size: 13px;
204
+ font-weight: 500;
205
+ color: var(--text-muted);
206
+ white-space: nowrap;
207
+ transition: color var(--duration-normal) var(--ease-out);
208
+ }
209
+
210
+ .progress-step--active .progress-step__circle {
211
+ background: var(--claw-coral);
212
+ border-color: var(--claw-coral);
213
+ color: white;
214
+ box-shadow: 0 0 24px rgba(255, 107, 53, 0.5);
215
+ }
216
+
217
+ .progress-step--active .progress-step__label {
218
+ color: var(--text-primary);
219
+ }
220
+
221
+ .progress-step--completed .progress-step__circle {
222
+ background: var(--success);
223
+ border-color: var(--success);
224
+ color: white;
225
+ }
226
+
227
+ .progress-step--completed .progress-step__label {
228
+ color: var(--text-secondary);
229
+ }
230
+
231
+ .progress-line {
232
+ width: 48px;
233
+ height: 2px;
234
+ background: var(--text-muted);
235
+ margin: 0 4px;
236
+ transition: background var(--duration-normal) var(--ease-out);
237
+ flex-shrink: 0;
238
+ }
239
+
240
+ .progress-line--active {
241
+ background: linear-gradient(90deg, var(--success), var(--success));
242
+ }
243
+
244
+ /* ============ Steps Container ============ */
245
+ .steps-container {
246
+ position: relative;
247
+ }
248
+
249
+ .step {
250
+ display: none;
251
+ animation: fadeSlideIn var(--duration-slow) var(--ease-out);
252
+ }
253
+
254
+ .step--active {
255
+ display: block;
256
+ }
257
+
258
+ @keyframes fadeSlideIn {
259
+ from {
260
+ opacity: 0;
261
+ transform: translateY(20px);
262
+ }
263
+ to {
264
+ opacity: 1;
265
+ transform: translateY(0);
266
+ }
267
+ }
268
+
269
+ .step__title {
270
+ font-size: 24px;
271
+ font-weight: 700;
272
+ margin-bottom: 8px;
273
+ }
274
+
275
+ .step__description {
276
+ font-size: 15px;
277
+ color: var(--text-secondary);
278
+ margin-bottom: 32px;
279
+ line-height: 1.6;
280
+ }
281
+
282
+ /* ============ Channel Cards (Step 1) ============ */
283
+ .channel-grid {
284
+ display: grid;
285
+ grid-template-columns: repeat(3, 1fr);
286
+ gap: 16px;
287
+ }
288
+
289
+ .channel-card {
290
+ position: relative;
291
+ background: var(--bg-glass);
292
+ backdrop-filter: blur(16px);
293
+ -webkit-backdrop-filter: blur(16px);
294
+ border: 1px solid rgba(255, 255, 255, 0.08);
295
+ border-radius: var(--radius-lg);
296
+ padding: 28px 20px;
297
+ text-align: center;
298
+ cursor: pointer;
299
+ transition: all var(--duration-normal) var(--ease-out);
300
+ overflow: hidden;
301
+ }
302
+
303
+ .channel-card::before {
304
+ content: '';
305
+ position: absolute;
306
+ top: 0;
307
+ left: 0;
308
+ right: 0;
309
+ height: 3px;
310
+ opacity: 0;
311
+ transition: opacity var(--duration-normal) var(--ease-out);
312
+ }
313
+
314
+ .channel-card[data-channel="telegram"]::before {
315
+ background: linear-gradient(90deg, var(--telegram-blue), #66ccff);
316
+ }
317
+
318
+ .channel-card[data-channel="zalo-bot"]::before {
319
+ background: linear-gradient(90deg, var(--zalo-blue), #4d9fff);
320
+ }
321
+
322
+ .channel-card[data-channel="zalo-personal"]::before {
323
+ background: linear-gradient(90deg, var(--zalo-personal), #c084fc);
324
+ }
325
+
326
+ .channel-card:hover {
327
+ background: var(--bg-card-hover);
328
+ border-color: rgba(255, 255, 255, 0.15);
329
+ transform: translateY(-4px);
330
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3);
331
+ }
332
+
333
+ .channel-card--selected {
334
+ border-color: var(--claw-coral) !important;
335
+ background: rgba(255, 107, 53, 0.06) !important;
336
+ box-shadow: 0 0 30px rgba(255, 107, 53, 0.12), inset 0 0 30px rgba(255, 107, 53, 0.03);
337
+ }
338
+
339
+ .channel-card--selected::before {
340
+ opacity: 1;
341
+ }
342
+
343
+ .channel-card__icon {
344
+ width: 56px;
345
+ height: 56px;
346
+ border-radius: var(--radius-md);
347
+ display: flex;
348
+ align-items: center;
349
+ justify-content: center;
350
+ font-size: 28px;
351
+ margin: 0 auto 16px;
352
+ }
353
+
354
+ .channel-card__icon img {
355
+ width: 32px;
356
+ height: 32px;
357
+ object-fit: contain;
358
+ }
359
+
360
+ .channel-card[data-channel="telegram"] .channel-card__icon {
361
+ background: linear-gradient(135deg, rgba(38, 165, 228, 0.2), rgba(38, 165, 228, 0.05));
362
+ }
363
+
364
+ .channel-card[data-channel="zalo-bot"] .channel-card__icon {
365
+ background: linear-gradient(135deg, rgba(0, 104, 255, 0.2), rgba(0, 104, 255, 0.05));
366
+ }
367
+
368
+ .channel-card[data-channel="zalo-personal"] .channel-card__icon {
369
+ background: linear-gradient(135deg, rgba(139, 92, 246, 0.2), rgba(139, 92, 246, 0.05));
370
+ }
371
+
372
+ .channel-card__name {
373
+ font-size: 16px;
374
+ font-weight: 600;
375
+ margin-bottom: 8px;
376
+ }
377
+
378
+ .channel-card__desc {
379
+ font-size: 13px;
380
+ color: var(--text-secondary);
381
+ line-height: 1.5;
382
+ margin-bottom: 12px;
383
+ }
384
+
385
+ .channel-card__badge {
386
+ display: inline-block;
387
+ padding: 4px 10px;
388
+ border-radius: 20px;
389
+ font-size: 11px;
390
+ font-weight: 600;
391
+ text-transform: uppercase;
392
+ letter-spacing: 0.5px;
393
+ }
394
+
395
+ .badge--official {
396
+ background: rgba(34, 197, 94, 0.12);
397
+ color: var(--success);
398
+ }
399
+
400
+ .badge--warning {
401
+ background: rgba(245, 158, 11, 0.12);
402
+ color: var(--warning);
403
+ }
404
+
405
+ /* ============ Form Fields (Step 2) ============ */
406
+ .form-group {
407
+ margin-bottom: 24px;
408
+ }
409
+
410
+ .form-group__label {
411
+ display: block;
412
+ font-size: 14px;
413
+ font-weight: 600;
414
+ margin-bottom: 8px;
415
+ color: var(--text-primary);
416
+ }
417
+
418
+ .form-group__hint {
419
+ font-size: 12px;
420
+ color: var(--text-muted);
421
+ margin-top: 6px;
422
+ }
423
+
424
+ .form-input,
425
+ .form-select,
426
+ .form-textarea {
427
+ width: 100%;
428
+ padding: 12px 16px;
429
+ background: var(--bg-glass);
430
+ backdrop-filter: blur(8px);
431
+ -webkit-backdrop-filter: blur(8px);
432
+ border: 1px solid rgba(255, 255, 255, 0.1);
433
+ border-radius: var(--radius-md);
434
+ color: var(--text-primary);
435
+ font-family: inherit;
436
+ font-size: 15px;
437
+ transition: all var(--duration-fast) var(--ease-out);
438
+ outline: none;
439
+ }
440
+
441
+ .form-input:focus,
442
+ .form-select:focus,
443
+ .form-textarea:focus {
444
+ border-color: var(--claw-coral);
445
+ box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.1), 0 0 20px rgba(255, 107, 53, 0.08);
446
+ }
447
+
448
+ .form-input::placeholder,
449
+ .form-textarea::placeholder {
450
+ color: var(--text-muted);
451
+ }
452
+
453
+ .form-select {
454
+ cursor: pointer;
455
+ -webkit-appearance: none;
456
+ appearance: none;
457
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%238b8ba3' fill='none' stroke-width='2'/%3E%3C/svg%3E");
458
+ background-repeat: no-repeat;
459
+ background-position: right 16px center;
460
+ padding-right: 40px;
461
+ }
462
+
463
+ .form-select option {
464
+ background: var(--bg-secondary);
465
+ color: var(--text-primary);
466
+ }
467
+
468
+ /* ============ Language Toggle Switch ============ */
469
+ .model-header {
470
+ display: flex;
471
+ align-items: center;
472
+ justify-content: space-between;
473
+ margin-bottom: 8px;
474
+ }
475
+
476
+ .model-header .form-group__label {
477
+ margin-bottom: 0;
478
+ }
479
+
480
+ .lang-toggle {
481
+ display: inline-flex;
482
+ background: rgba(255, 255, 255, 0.06);
483
+ border: 1px solid rgba(255, 255, 255, 0.08);
484
+ border-radius: 24px;
485
+ overflow: hidden;
486
+ height: 48px;
487
+ padding: 4px;
488
+ gap: 2px;
489
+ }
490
+
491
+ .lang-toggle__btn {
492
+ display: flex;
493
+ align-items: center;
494
+ gap: 4px;
495
+ padding: 0 10px;
496
+ background: transparent;
497
+ border: none;
498
+ color: var(--text-secondary);
499
+ font-size: 11px;
500
+ font-weight: 700;
501
+ font-family: inherit;
502
+ letter-spacing: 0.5px;
503
+ cursor: pointer;
504
+ transition: all var(--duration-fast) var(--ease-out);
505
+ white-space: nowrap;
506
+ border-radius: 20px;
507
+ }
508
+
509
+ .lang-toggle__btn:hover {
510
+ color: var(--text-primary);
511
+ }
512
+
513
+ .lang-toggle__btn--active {
514
+ background: rgba(255, 255, 255, 0.12);
515
+ color: var(--text-primary);
516
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
517
+ }
518
+
519
+ .lang-toggle__flag {
520
+ display: flex;
521
+ align-items: center;
522
+ flex-shrink: 0;
523
+ }
524
+
525
+ .lang-toggle__flag svg {
526
+ width: 16px;
527
+ height: 16px;
528
+ border-radius: 50%;
529
+ }
530
+
531
+ /* ============ Provider Card Images ============ */
532
+ .provider-card__icon {
533
+ width: 40px;
534
+ height: 40px;
535
+ border-radius: var(--radius-sm);
536
+ display: flex;
537
+ align-items: center;
538
+ justify-content: center;
539
+ }
540
+
541
+ .provider-card__icon img {
542
+ width: 28px;
543
+ height: 28px;
544
+ object-fit: contain;
545
+ }
546
+
547
+ /* Colored backgrounds per provider */
548
+ .provider-card[data-provider="google"] .provider-card__icon {
549
+ background: rgba(142, 117, 178, 0.15);
550
+ }
551
+
552
+ .provider-card[data-provider="anthropic"] .provider-card__icon {
553
+ background: rgba(217, 119, 6, 0.15);
554
+ }
555
+ .provider-card[data-provider="anthropic"] .provider-card__icon img {
556
+ filter: brightness(0) saturate(100%) invert(56%) sepia(85%) saturate(600%) hue-rotate(360deg) brightness(100%) contrast(100%);
557
+ }
558
+
559
+ .provider-card[data-provider="openai"] .provider-card__icon {
560
+ background: rgba(16, 185, 129, 0.15);
561
+ }
562
+ .provider-card[data-provider="openai"] .provider-card__icon img {
563
+ filter: brightness(0) saturate(100%) invert(62%) sepia(52%) saturate(500%) hue-rotate(116deg) brightness(96%) contrast(92%);
564
+ }
565
+
566
+ .provider-card[data-provider="openrouter"] .provider-card__icon {
567
+ background: rgba(124, 58, 237, 0.15);
568
+ }
569
+ .provider-card[data-provider="openrouter"] .provider-card__icon img {
570
+ filter: brightness(0) saturate(100%) invert(30%) sepia(90%) saturate(1200%) hue-rotate(246deg) brightness(95%) contrast(90%);
571
+ }
572
+
573
+ .provider-card[data-provider="ollama"] .provider-card__icon {
574
+ background: rgba(0, 210, 211, 0.15);
575
+ }
576
+ .provider-card[data-provider="ollama"] .provider-card__icon img {
577
+ filter: brightness(0) saturate(100%) invert(72%) sepia(50%) saturate(500%) hue-rotate(140deg) brightness(105%) contrast(95%);
578
+ }
579
+
580
+ .provider-card[data-provider="9router"] .provider-card__icon {
581
+ background: rgba(0, 200, 200, 0.15);
582
+ }
583
+
584
+ .form-textarea {
585
+ min-height: 180px;
586
+ max-height: none;
587
+ overflow: hidden;
588
+ resize: none;
589
+ line-height: 1.6;
590
+ font-size: 14px;
591
+ field-sizing: content;
592
+ }
593
+
594
+ .form-row {
595
+ display: grid;
596
+ grid-template-columns: 1fr 1fr;
597
+ gap: 16px;
598
+ }
599
+
600
+ /* ============ Identity Grid ============ */
601
+ .identity-grid {
602
+ display: grid;
603
+ grid-template-columns: 1fr 1fr 72px;
604
+ gap: 16px;
605
+ margin-bottom: 24px;
606
+ }
607
+
608
+ .form-input--emoji {
609
+ text-align: center;
610
+ font-size: 22px;
611
+ line-height: 1;
612
+ padding: 10px 4px;
613
+ }
614
+
615
+ /* ============ Section Dividers ============ */
616
+ .section-divider {
617
+ display: flex;
618
+ align-items: center;
619
+ gap: 10px;
620
+ margin: 32px 0 20px;
621
+ padding: 0;
622
+ }
623
+
624
+ .section-divider::before,
625
+ .section-divider::after {
626
+ content: '';
627
+ flex: 1;
628
+ height: 1px;
629
+ background: linear-gradient(90deg, transparent, rgba(255,255,255,0.08), transparent);
630
+ }
631
+
632
+ .section-divider::before {
633
+ background: linear-gradient(90deg, transparent, rgba(255,255,255,0.08));
634
+ }
635
+
636
+ .section-divider::after {
637
+ background: linear-gradient(90deg, rgba(255,255,255,0.08), transparent);
638
+ }
639
+
640
+ .section-divider__icon {
641
+ font-size: 18px;
642
+ flex-shrink: 0;
643
+ }
644
+
645
+ .section-divider__text {
646
+ font-size: 13px;
647
+ font-weight: 600;
648
+ color: var(--text-secondary);
649
+ letter-spacing: 0.3px;
650
+ white-space: nowrap;
651
+ }
652
+
653
+ /* ============ Security Rules ============ */
654
+ .security-rules-header {
655
+ display: flex;
656
+ align-items: center;
657
+ justify-content: space-between;
658
+ margin-bottom: 8px;
659
+ }
660
+
661
+ .security-rules-header .form-group__label {
662
+ margin-bottom: 0;
663
+ }
664
+
665
+ .btn-toggle-edit {
666
+ padding: 4px 12px;
667
+ background: rgba(255, 255, 255, 0.06);
668
+ border: 1px solid rgba(255, 255, 255, 0.1);
669
+ border-radius: 16px;
670
+ color: var(--text-secondary);
671
+ font-size: 12px;
672
+ font-weight: 500;
673
+ font-family: inherit;
674
+ cursor: pointer;
675
+ transition: all var(--duration-fast) var(--ease-out);
676
+ }
677
+
678
+ .btn-toggle-edit:hover {
679
+ background: rgba(255, 255, 255, 0.1);
680
+ color: var(--text-primary);
681
+ }
682
+
683
+ .btn-toggle-edit--active {
684
+ background: rgba(239, 68, 68, 0.1);
685
+ border-color: rgba(239, 68, 68, 0.3);
686
+ color: #f87171;
687
+ }
688
+
689
+ .security-textarea {
690
+ min-height: 200px;
691
+ font-size: 12px !important;
692
+ line-height: 1.7 !important;
693
+ font-family: 'JetBrains Mono', 'Fira Code', monospace !important;
694
+ opacity: 0.7;
695
+ transition: opacity var(--duration-fast) var(--ease-out);
696
+ }
697
+
698
+ .security-textarea:not([readonly]) {
699
+ opacity: 1;
700
+ border-color: rgba(239, 68, 68, 0.3);
701
+ }
702
+
703
+ /* ============ Provider Cards ============ */
704
+ .provider-grid {
705
+ display: grid;
706
+ grid-template-columns: repeat(3, 1fr);
707
+ gap: 10px;
708
+ }
709
+
710
+ .provider-card {
711
+ display: flex;
712
+ flex-direction: column;
713
+ align-items: center;
714
+ gap: 8px;
715
+ padding: 16px 10px;
716
+ background: var(--bg-glass);
717
+ backdrop-filter: blur(12px);
718
+ -webkit-backdrop-filter: blur(12px);
719
+ border: 1px solid rgba(255, 255, 255, 0.08);
720
+ border-radius: var(--radius-md);
721
+ cursor: pointer;
722
+ transition: all var(--duration-normal) var(--ease-out);
723
+ text-align: center;
724
+ }
725
+
726
+ .provider-card:hover {
727
+ background: var(--bg-card-hover);
728
+ border-color: rgba(255, 255, 255, 0.15);
729
+ transform: translateY(-2px);
730
+ }
731
+
732
+ .provider-card--selected {
733
+ border-color: var(--claw-coral) !important;
734
+ background: rgba(255, 107, 53, 0.06) !important;
735
+ box-shadow: 0 0 20px rgba(255, 107, 53, 0.1), inset 0 0 20px rgba(255, 107, 53, 0.02);
736
+ }
737
+
738
+ .provider-card__icon {
739
+ font-size: 24px;
740
+ }
741
+
742
+ .provider-card__info {
743
+ display: flex;
744
+ flex-direction: column;
745
+ gap: 4px;
746
+ }
747
+
748
+ .provider-card__name {
749
+ font-size: 12px;
750
+ font-weight: 600;
751
+ color: var(--text-primary);
752
+ white-space: nowrap;
753
+ }
754
+
755
+ .cred-step a, .prompt-notice a, .form-group__hint a, .form-group__label a {
756
+ color: #ffffff;
757
+ text-decoration: underline;
758
+ text-underline-offset: 2px;
759
+ }
760
+ .cred-step a:hover, .prompt-notice a:hover, .form-group__hint a:hover, .form-group__label a:hover {
761
+ color: var(--claw-coral);
762
+ }
763
+
764
+ .provider-card__badge {
765
+ display: inline-block;
766
+ padding: 2px 8px;
767
+ border-radius: 12px;
768
+ font-size: 10px;
769
+ font-weight: 600;
770
+ white-space: nowrap;
771
+ }
772
+
773
+ .badge--free {
774
+ background: rgba(34, 197, 94, 0.12);
775
+ color: var(--success);
776
+ }
777
+
778
+ .badge--paid {
779
+ background: rgba(245, 158, 11, 0.12);
780
+ color: var(--warning);
781
+ }
782
+
783
+ .badge--proxy {
784
+ background: rgba(0, 200, 200, 0.12);
785
+ color: #22d3ee;
786
+ }
787
+
788
+ /* ============ Plugin Grid ============ */
789
+ .plugin-grid {
790
+ display: grid;
791
+ grid-template-columns: repeat(4, 1fr);
792
+ gap: 12px;
793
+ }
794
+
795
+ .plugin-card {
796
+ display: flex;
797
+ align-items: flex-start;
798
+ gap: 12px;
799
+ padding: 16px;
800
+ background: var(--bg-glass);
801
+ backdrop-filter: blur(12px);
802
+ -webkit-backdrop-filter: blur(12px);
803
+ border: 1px solid rgba(255, 255, 255, 0.08);
804
+ border-radius: var(--radius-md);
805
+ cursor: pointer;
806
+ transition: all var(--duration-normal) var(--ease-out);
807
+ position: relative;
808
+ }
809
+
810
+ .plugin-card:hover {
811
+ background: var(--bg-card-hover);
812
+ border-color: rgba(255, 255, 255, 0.15);
813
+ }
814
+
815
+ .plugin-card--selected {
816
+ border-color: var(--claw-coral) !important;
817
+ background: rgba(255, 107, 53, 0.06) !important;
818
+ }
819
+
820
+ .plugin-checkbox {
821
+ position: absolute;
822
+ opacity: 0;
823
+ width: 0;
824
+ height: 0;
825
+ }
826
+
827
+ .plugin-card__icon {
828
+ font-size: 22px;
829
+ flex-shrink: 0;
830
+ margin-top: 2px;
831
+ }
832
+
833
+ .plugin-card__info {
834
+ flex: 1;
835
+ min-width: 0;
836
+ }
837
+
838
+ .plugin-card__name {
839
+ font-size: 13px;
840
+ font-weight: 600;
841
+ color: var(--text-primary);
842
+ margin-bottom: 4px;
843
+ }
844
+
845
+ .plugin-card__desc {
846
+ font-size: 11px;
847
+ color: var(--text-muted);
848
+ line-height: 1.4;
849
+ }
850
+
851
+ .plugin-card__note {
852
+ font-size: 10px;
853
+ color: rgba(255, 193, 7, 0.7);
854
+ line-height: 1.3;
855
+ margin-top: 3px;
856
+ }
857
+
858
+ .plugin-card__check {
859
+ position: absolute;
860
+ top: 8px;
861
+ right: 10px;
862
+ width: 20px;
863
+ height: 20px;
864
+ border-radius: 50%;
865
+ background: rgba(255, 255, 255, 0.06);
866
+ border: 1px solid rgba(255, 255, 255, 0.12);
867
+ display: flex;
868
+ align-items: center;
869
+ justify-content: center;
870
+ font-size: 11px;
871
+ color: transparent;
872
+ transition: all var(--duration-fast) var(--ease-out);
873
+ }
874
+
875
+ .plugin-card--selected .plugin-card__check {
876
+ background: var(--claw-coral);
877
+ border-color: var(--claw-coral);
878
+ color: white;
879
+ box-shadow: 0 0 10px rgba(255, 107, 53, 0.3);
880
+ }
881
+
882
+ /* ============ Prompt Notice ============ */
883
+ .prompt-notice {
884
+ display: flex;
885
+ align-items: flex-start;
886
+ gap: 10px;
887
+ margin-top: 10px;
888
+ padding: 14px 16px;
889
+ background: linear-gradient(135deg, rgba(34, 197, 94, 0.06), rgba(34, 197, 94, 0.02));
890
+ border: 1px solid rgba(34, 197, 94, 0.15);
891
+ border-radius: var(--radius-md);
892
+ backdrop-filter: blur(8px);
893
+ -webkit-backdrop-filter: blur(8px);
894
+ }
895
+
896
+ .prompt-notice__icon {
897
+ font-size: 18px;
898
+ flex-shrink: 0;
899
+ }
900
+
901
+ .prompt-notice__text {
902
+ font-size: 12px;
903
+ color: var(--text-secondary);
904
+ line-height: 1.6;
905
+ }
906
+
907
+ .prompt-notice__text strong {
908
+ color: var(--success);
909
+ }
910
+
911
+ /* ============ Credentials Checklist (Step 3) ============ */
912
+ .cred-section {
913
+ background: var(--bg-glass);
914
+ backdrop-filter: blur(16px);
915
+ -webkit-backdrop-filter: blur(16px);
916
+ border: 1px solid rgba(255, 255, 255, 0.08);
917
+ border-radius: var(--radius-lg);
918
+ padding: 24px;
919
+ margin-bottom: 20px;
920
+ }
921
+
922
+ .cred-section__title {
923
+ font-size: 16px;
924
+ font-weight: 600;
925
+ margin-bottom: 16px;
926
+ display: flex;
927
+ align-items: center;
928
+ gap: 8px;
929
+ }
930
+
931
+ .cred-step {
932
+ display: flex;
933
+ align-items: flex-start;
934
+ gap: 12px;
935
+ padding: 12px 0;
936
+ border-bottom: 1px solid rgba(255, 255, 255, 0.04);
937
+ }
938
+
939
+ .cred-step:last-child {
940
+ border-bottom: none;
941
+ }
942
+
943
+ .cred-step__number {
944
+ width: 24px;
945
+ height: 24px;
946
+ border-radius: 50%;
947
+ background: linear-gradient(135deg, rgba(255, 107, 53, 0.2), rgba(255, 107, 53, 0.08));
948
+ color: var(--claw-coral);
949
+ font-size: 12px;
950
+ font-weight: 700;
951
+ display: flex;
952
+ align-items: center;
953
+ justify-content: center;
954
+ flex-shrink: 0;
955
+ margin-top: 2px;
956
+ }
957
+
958
+ .cred-step__text {
959
+ font-size: 14px;
960
+ color: var(--text-secondary);
961
+ line-height: 1.5;
962
+ }
963
+
964
+ .cred-step__text a {
965
+ color: var(--claw-coral);
966
+ text-decoration: none;
967
+ }
968
+
969
+ .cred-step__text a:hover {
970
+ text-decoration: underline;
971
+ }
972
+
973
+ .cred-step__text code {
974
+ background: rgba(255, 255, 255, 0.08);
975
+ padding: 2px 6px;
976
+ border-radius: 4px;
977
+ font-size: 13px;
978
+ font-family: 'JetBrains Mono', 'Fira Code', monospace;
979
+ color: var(--claw-coral-light);
980
+ }
981
+
982
+ .env-preview {
983
+ background: var(--bg-secondary);
984
+ border: 1px solid rgba(255, 255, 255, 0.08);
985
+ border-radius: var(--radius-md);
986
+ padding: 16px;
987
+ margin-top: 16px;
988
+ position: relative;
989
+ }
990
+
991
+ .env-preview__header {
992
+ display: flex;
993
+ align-items: center;
994
+ justify-content: space-between;
995
+ margin-bottom: 12px;
996
+ }
997
+
998
+ .env-preview__filename {
999
+ font-size: 13px;
1000
+ font-weight: 600;
1001
+ color: var(--text-muted);
1002
+ }
1003
+
1004
+ .env-preview pre {
1005
+ font-family: 'JetBrains Mono', 'Fira Code', monospace;
1006
+ font-size: 13px;
1007
+ line-height: 1.8;
1008
+ color: var(--text-secondary);
1009
+ white-space: pre-wrap;
1010
+ }
1011
+
1012
+ .env-preview .env-key {
1013
+ color: var(--claw-coral-light);
1014
+ }
1015
+
1016
+ .env-preview .env-val {
1017
+ color: var(--success);
1018
+ }
1019
+
1020
+ .env-preview .env-comment {
1021
+ color: var(--text-muted);
1022
+ font-style: italic;
1023
+ }
1024
+
1025
+ /* Warning box */
1026
+ .warning-box {
1027
+ background: linear-gradient(135deg, rgba(245, 158, 11, 0.08), rgba(245, 158, 11, 0.03));
1028
+ border: 1px solid rgba(245, 158, 11, 0.2);
1029
+ border-radius: var(--radius-md);
1030
+ padding: 14px 16px;
1031
+ display: flex;
1032
+ align-items: flex-start;
1033
+ gap: 10px;
1034
+ margin-top: 16px;
1035
+ backdrop-filter: blur(8px);
1036
+ -webkit-backdrop-filter: blur(8px);
1037
+ }
1038
+
1039
+ .warning-box__icon {
1040
+ font-size: 18px;
1041
+ flex-shrink: 0;
1042
+ }
1043
+
1044
+ .warning-box__text {
1045
+ font-size: 13px;
1046
+ color: var(--warning);
1047
+ line-height: 1.5;
1048
+ }
1049
+
1050
+ /* ============ Generated Output (Step 4) ============ */
1051
+ .output-section {
1052
+ margin-bottom: 24px;
1053
+ }
1054
+
1055
+ .output-section__title {
1056
+ font-size: 15px;
1057
+ font-weight: 600;
1058
+ margin-bottom: 12px;
1059
+ display: flex;
1060
+ align-items: center;
1061
+ gap: 8px;
1062
+ }
1063
+
1064
+ .code-block {
1065
+ background: var(--bg-secondary);
1066
+ border: 1px solid rgba(255, 255, 255, 0.08);
1067
+ border-radius: var(--radius-md);
1068
+ overflow: hidden;
1069
+ }
1070
+
1071
+ .code-block__header {
1072
+ display: flex;
1073
+ align-items: center;
1074
+ justify-content: space-between;
1075
+ padding: 10px 16px;
1076
+ background: rgba(255, 255, 255, 0.03);
1077
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
1078
+ }
1079
+
1080
+ .code-block__filename {
1081
+ font-size: 12px;
1082
+ font-weight: 600;
1083
+ color: var(--text-muted);
1084
+ font-family: 'JetBrains Mono', 'Fira Code', monospace;
1085
+ }
1086
+
1087
+ .code-block__content {
1088
+ padding: 16px;
1089
+ font-family: 'JetBrains Mono', 'Fira Code', monospace;
1090
+ font-size: 13px;
1091
+ line-height: 1.7;
1092
+ color: var(--text-secondary);
1093
+ white-space: pre-wrap;
1094
+ word-break: break-all;
1095
+ overflow-x: auto;
1096
+ max-height: 320px;
1097
+ overflow-y: auto;
1098
+ }
1099
+
1100
+ /* Copy button */
1101
+ .btn-copy {
1102
+ display: inline-flex;
1103
+ align-items: center;
1104
+ gap: 6px;
1105
+ padding: 6px 12px;
1106
+ background: rgba(255, 255, 255, 0.06);
1107
+ border: 1px solid rgba(255, 255, 255, 0.1);
1108
+ border-radius: var(--radius-sm);
1109
+ color: var(--text-secondary);
1110
+ font-size: 12px;
1111
+ font-weight: 500;
1112
+ cursor: pointer;
1113
+ transition: all var(--duration-fast) var(--ease-out);
1114
+ font-family: inherit;
1115
+ }
1116
+
1117
+ .btn-copy:hover {
1118
+ background: rgba(255, 255, 255, 0.1);
1119
+ color: var(--text-primary);
1120
+ }
1121
+
1122
+ .btn-copy--copied {
1123
+ color: var(--success) !important;
1124
+ border-color: rgba(34, 197, 94, 0.3) !important;
1125
+ }
1126
+
1127
+ /* File tree */
1128
+ .file-tree {
1129
+ background: var(--bg-glass);
1130
+ backdrop-filter: blur(12px);
1131
+ -webkit-backdrop-filter: blur(12px);
1132
+ border: 1px solid rgba(255, 255, 255, 0.08);
1133
+ border-radius: var(--radius-md);
1134
+ padding: 20px;
1135
+ font-family: 'JetBrains Mono', 'Fira Code', monospace;
1136
+ font-size: 13px;
1137
+ line-height: 1.8;
1138
+ color: var(--text-secondary);
1139
+ white-space: pre;
1140
+ overflow-x: auto;
1141
+ }
1142
+
1143
+ .file-tree .dir {
1144
+ color: var(--claw-coral-light);
1145
+ }
1146
+
1147
+ .file-tree .file {
1148
+ color: var(--text-secondary);
1149
+ }
1150
+
1151
+ .file-tree .comment {
1152
+ color: var(--text-muted);
1153
+ font-style: italic;
1154
+ }
1155
+
1156
+ /* ============ Navigation Buttons ============ */
1157
+ .nav-buttons {
1158
+ display: flex;
1159
+ justify-content: space-between;
1160
+ align-items: center;
1161
+ margin-top: 40px;
1162
+ padding-top: 24px;
1163
+ border-top: 1px solid rgba(255, 255, 255, 0.06);
1164
+ }
1165
+
1166
+ .btn {
1167
+ display: inline-flex;
1168
+ align-items: center;
1169
+ gap: 8px;
1170
+ padding: 12px 28px;
1171
+ border-radius: var(--radius-md);
1172
+ font-size: 15px;
1173
+ font-weight: 600;
1174
+ font-family: inherit;
1175
+ cursor: pointer;
1176
+ transition: all var(--duration-normal) var(--ease-out);
1177
+ border: none;
1178
+ outline: none;
1179
+ }
1180
+
1181
+ .btn--primary {
1182
+ background: linear-gradient(135deg, var(--claw-coral), var(--claw-coral-dark));
1183
+ color: white;
1184
+ box-shadow: 0 4px 20px rgba(255, 107, 53, 0.35);
1185
+ }
1186
+
1187
+ .btn--primary:hover {
1188
+ transform: translateY(-2px);
1189
+ box-shadow: 0 8px 30px rgba(255, 107, 53, 0.5);
1190
+ }
1191
+
1192
+ .btn--primary:disabled {
1193
+ opacity: 0.4;
1194
+ cursor: not-allowed;
1195
+ transform: none;
1196
+ box-shadow: none;
1197
+ }
1198
+
1199
+ .btn--secondary {
1200
+ background: var(--bg-glass);
1201
+ border: 1px solid rgba(255, 255, 255, 0.1);
1202
+ color: var(--text-secondary);
1203
+ }
1204
+
1205
+ .btn--secondary:hover {
1206
+ background: var(--bg-card-hover);
1207
+ color: var(--text-primary);
1208
+ }
1209
+
1210
+ .btn--ghost {
1211
+ background: transparent;
1212
+ color: var(--text-muted);
1213
+ padding: 12px 16px;
1214
+ }
1215
+
1216
+ .btn--ghost:hover {
1217
+ color: var(--text-primary);
1218
+ }
1219
+
1220
+ /* ============ Responsive ============ */
1221
+ @media (max-width: 768px) {
1222
+ .app-container {
1223
+ padding: 24px 16px 60px;
1224
+ }
1225
+
1226
+ .header__title {
1227
+ font-size: 24px;
1228
+ }
1229
+
1230
+ .channel-grid {
1231
+ grid-template-columns: 1fr;
1232
+ gap: 12px;
1233
+ }
1234
+
1235
+ .provider-grid {
1236
+ grid-template-columns: repeat(2, 1fr);
1237
+ }
1238
+
1239
+ .plugin-grid {
1240
+ grid-template-columns: 1fr;
1241
+ }
1242
+
1243
+ .form-row {
1244
+ grid-template-columns: 1fr;
1245
+ }
1246
+
1247
+ .identity-grid {
1248
+ grid-template-columns: 1fr 72px;
1249
+ }
1250
+
1251
+ .identity-grid > .form-group:first-child {
1252
+ grid-column: 1 / -1;
1253
+ }
1254
+
1255
+ .progress-step__label {
1256
+ display: none;
1257
+ }
1258
+
1259
+ .progress-line {
1260
+ width: 32px;
1261
+ }
1262
+
1263
+ .nav-buttons {
1264
+ flex-direction: column-reverse;
1265
+ gap: 12px;
1266
+ }
1267
+
1268
+ .nav-buttons .btn {
1269
+ width: 100%;
1270
+ justify-content: center;
1271
+ }
1272
+ }
1273
+
1274
+ @media (max-width: 480px) {
1275
+ .provider-grid {
1276
+ grid-template-columns: repeat(2, 1fr);
1277
+ }
1278
+ }
1279
+
1280
+ /* ============ Scrollbar ============ */
1281
+ ::-webkit-scrollbar {
1282
+ width: 6px;
1283
+ height: 6px;
1284
+ }
1285
+
1286
+ ::-webkit-scrollbar-track {
1287
+ background: transparent;
1288
+ }
1289
+
1290
+ ::-webkit-scrollbar-thumb {
1291
+ background: rgba(255, 255, 255, 0.1);
1292
+ border-radius: 3px;
1293
+ }
1294
+
1295
+ ::-webkit-scrollbar-thumb:hover {
1296
+ background: rgba(255, 255, 255, 0.2);
1297
+ }
1298
+
1299
+ /* ============ Collapsible ============ */
1300
+ .collapsible {
1301
+ margin-bottom: 12px;
1302
+ }
1303
+
1304
+ .collapsible__toggle {
1305
+ width: 100%;
1306
+ display: flex;
1307
+ align-items: center;
1308
+ justify-content: space-between;
1309
+ padding: 14px 16px;
1310
+ background: var(--bg-glass);
1311
+ backdrop-filter: blur(12px);
1312
+ -webkit-backdrop-filter: blur(12px);
1313
+ border: 1px solid rgba(255, 255, 255, 0.08);
1314
+ border-radius: var(--radius-md);
1315
+ color: var(--text-primary);
1316
+ font-size: 14px;
1317
+ font-weight: 500;
1318
+ cursor: pointer;
1319
+ font-family: inherit;
1320
+ transition: all var(--duration-fast) var(--ease-out);
1321
+ }
1322
+
1323
+ .collapsible__toggle:hover {
1324
+ background: var(--bg-card-hover);
1325
+ }
1326
+
1327
+ .collapsible__arrow {
1328
+ transition: transform var(--duration-fast) var(--ease-out);
1329
+ }
1330
+
1331
+ .collapsible--open .collapsible__arrow {
1332
+ transform: rotate(180deg);
1333
+ }
1334
+
1335
+ .collapsible__content {
1336
+ max-height: 0;
1337
+ overflow: hidden;
1338
+ transition: max-height var(--duration-normal) var(--ease-out);
1339
+ }
1340
+
1341
+ .collapsible--open .collapsible__content {
1342
+ max-height: 2000px;
1343
+ }
1344
+
1345
+ .collapsible__inner {
1346
+ padding: 16px 0 0;
1347
+ }