web-agent-bridge 1.0.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,1235 @@
1
+ /* ═══════════════════════════════════════════════════════════════════════
2
+ Web Agent Bridge — Design System & Styles
3
+ ═══════════════════════════════════════════════════════════════════════ */
4
+
5
+ :root {
6
+ --bg-primary: #0a0e1a;
7
+ --bg-secondary: #111827;
8
+ --bg-card: #1a2236;
9
+ --bg-card-hover: #1f2a42;
10
+ --bg-surface: #0f1629;
11
+ --bg-input: #1a2236;
12
+
13
+ --text-primary: #f0f4ff;
14
+ --text-secondary: #94a3b8;
15
+ --text-muted: #64748b;
16
+ --text-link: #60a5fa;
17
+
18
+ --accent-blue: #3b82f6;
19
+ --accent-blue-hover: #2563eb;
20
+ --accent-cyan: #06b6d4;
21
+ --accent-purple: #8b5cf6;
22
+ --accent-green: #10b981;
23
+ --accent-orange: #f59e0b;
24
+ --accent-red: #ef4444;
25
+ --accent-pink: #ec4899;
26
+
27
+ --gradient-primary: linear-gradient(135deg, #3b82f6, #8b5cf6);
28
+ --gradient-secondary: linear-gradient(135deg, #06b6d4, #3b82f6);
29
+ --gradient-accent: linear-gradient(135deg, #8b5cf6, #ec4899);
30
+ --gradient-hero: linear-gradient(160deg, #0a0e1a 0%, #111827 40%, #1a1a3e 100%);
31
+
32
+ --border-color: #1e293b;
33
+ --border-hover: #334155;
34
+
35
+ --radius-sm: 6px;
36
+ --radius-md: 10px;
37
+ --radius-lg: 16px;
38
+ --radius-xl: 24px;
39
+ --radius-full: 9999px;
40
+
41
+ --shadow-sm: 0 1px 2px rgba(0,0,0,0.3);
42
+ --shadow-md: 0 4px 12px rgba(0,0,0,0.3);
43
+ --shadow-lg: 0 8px 32px rgba(0,0,0,0.4);
44
+ --shadow-glow: 0 0 30px rgba(59,130,246,0.15);
45
+
46
+ --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
47
+ --font-mono: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
48
+
49
+ --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
50
+ --transition-normal: 250ms cubic-bezier(0.4, 0, 0.2, 1);
51
+ --transition-slow: 400ms cubic-bezier(0.4, 0, 0.2, 1);
52
+ }
53
+
54
+ *, *::before, *::after {
55
+ box-sizing: border-box;
56
+ margin: 0;
57
+ padding: 0;
58
+ }
59
+
60
+ html {
61
+ scroll-behavior: smooth;
62
+ -webkit-font-smoothing: antialiased;
63
+ -moz-osx-font-smoothing: grayscale;
64
+ }
65
+
66
+ body {
67
+ font-family: var(--font-sans);
68
+ background: var(--bg-primary);
69
+ color: var(--text-primary);
70
+ line-height: 1.6;
71
+ min-height: 100vh;
72
+ }
73
+
74
+ a { color: var(--text-link); text-decoration: none; transition: color var(--transition-fast); }
75
+ a:hover { color: var(--accent-blue-hover); }
76
+
77
+ /* ─── Typography ─────────────────────────────────────────────────────── */
78
+ h1, h2, h3, h4, h5, h6 {
79
+ font-weight: 700;
80
+ line-height: 1.2;
81
+ letter-spacing: -0.02em;
82
+ }
83
+
84
+ h1 { font-size: clamp(2.4rem, 5vw, 4rem); }
85
+ h2 { font-size: clamp(1.8rem, 3vw, 2.8rem); }
86
+ h3 { font-size: clamp(1.3rem, 2vw, 1.7rem); }
87
+ h4 { font-size: 1.2rem; }
88
+
89
+ .gradient-text {
90
+ background: var(--gradient-primary);
91
+ -webkit-background-clip: text;
92
+ -webkit-text-fill-color: transparent;
93
+ background-clip: text;
94
+ }
95
+
96
+ .gradient-text-accent {
97
+ background: var(--gradient-accent);
98
+ -webkit-background-clip: text;
99
+ -webkit-text-fill-color: transparent;
100
+ background-clip: text;
101
+ }
102
+
103
+ /* ─── Layout ─────────────────────────────────────────────────────────── */
104
+ .container {
105
+ max-width: 1200px;
106
+ margin: 0 auto;
107
+ padding: 0 24px;
108
+ }
109
+
110
+ .section {
111
+ padding: 100px 0;
112
+ }
113
+
114
+ .grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 32px; }
115
+ .grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
116
+ .grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
117
+
118
+ @media (max-width: 1024px) {
119
+ .grid-3 { grid-template-columns: repeat(2, 1fr); }
120
+ .grid-4 { grid-template-columns: repeat(2, 1fr); }
121
+ }
122
+ @media (max-width: 768px) {
123
+ .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; }
124
+ .section { padding: 64px 0; }
125
+ }
126
+
127
+ /* ─── Navbar ─────────────────────────────────────────────────────────── */
128
+ .navbar {
129
+ position: fixed;
130
+ top: 0;
131
+ left: 0;
132
+ right: 0;
133
+ z-index: 100;
134
+ padding: 16px 0;
135
+ backdrop-filter: blur(20px);
136
+ background: rgba(10, 14, 26, 0.8);
137
+ border-bottom: 1px solid var(--border-color);
138
+ transition: all var(--transition-normal);
139
+ }
140
+
141
+ .navbar .container {
142
+ display: flex;
143
+ align-items: center;
144
+ justify-content: space-between;
145
+ }
146
+
147
+ .navbar-brand {
148
+ display: flex;
149
+ align-items: center;
150
+ gap: 10px;
151
+ font-size: 1.25rem;
152
+ font-weight: 800;
153
+ color: var(--text-primary);
154
+ letter-spacing: -0.03em;
155
+ }
156
+
157
+ .navbar-brand .brand-icon {
158
+ width: 36px;
159
+ height: 36px;
160
+ background: var(--gradient-primary);
161
+ border-radius: var(--radius-md);
162
+ display: flex;
163
+ align-items: center;
164
+ justify-content: center;
165
+ font-size: 1.1rem;
166
+ }
167
+
168
+ .navbar-links {
169
+ display: flex;
170
+ align-items: center;
171
+ gap: 32px;
172
+ list-style: none;
173
+ }
174
+
175
+ .navbar-links a {
176
+ color: var(--text-secondary);
177
+ font-size: 0.925rem;
178
+ font-weight: 500;
179
+ transition: color var(--transition-fast);
180
+ }
181
+
182
+ .navbar-links a:hover { color: var(--text-primary); }
183
+
184
+ .navbar-actions {
185
+ display: flex;
186
+ align-items: center;
187
+ gap: 12px;
188
+ }
189
+
190
+ .mobile-menu-btn {
191
+ display: none;
192
+ background: none;
193
+ border: none;
194
+ color: var(--text-primary);
195
+ font-size: 1.5rem;
196
+ cursor: pointer;
197
+ }
198
+
199
+ @media (max-width: 768px) {
200
+ .navbar-links { display: none; }
201
+ .mobile-menu-btn { display: block; }
202
+ .navbar-actions .btn-ghost { display: none; }
203
+ }
204
+
205
+ /* ─── Buttons ────────────────────────────────────────────────────────── */
206
+ .btn {
207
+ display: inline-flex;
208
+ align-items: center;
209
+ justify-content: center;
210
+ gap: 8px;
211
+ padding: 12px 28px;
212
+ font-family: var(--font-sans);
213
+ font-size: 0.925rem;
214
+ font-weight: 600;
215
+ border: none;
216
+ border-radius: var(--radius-full);
217
+ cursor: pointer;
218
+ transition: all var(--transition-fast);
219
+ white-space: nowrap;
220
+ text-decoration: none;
221
+ line-height: 1;
222
+ }
223
+
224
+ .btn-primary {
225
+ background: var(--gradient-primary);
226
+ color: white;
227
+ box-shadow: 0 4px 16px rgba(59,130,246,0.3);
228
+ }
229
+ .btn-primary:hover {
230
+ transform: translateY(-1px);
231
+ box-shadow: 0 6px 24px rgba(59,130,246,0.4);
232
+ color: white;
233
+ }
234
+
235
+ .btn-secondary {
236
+ background: var(--bg-card);
237
+ color: var(--text-primary);
238
+ border: 1px solid var(--border-color);
239
+ }
240
+ .btn-secondary:hover {
241
+ background: var(--bg-card-hover);
242
+ border-color: var(--border-hover);
243
+ color: var(--text-primary);
244
+ }
245
+
246
+ .btn-ghost {
247
+ background: transparent;
248
+ color: var(--text-secondary);
249
+ padding: 10px 20px;
250
+ }
251
+ .btn-ghost:hover { color: var(--text-primary); }
252
+
253
+ .btn-sm { padding: 8px 18px; font-size: 0.85rem; }
254
+ .btn-lg { padding: 16px 36px; font-size: 1.05rem; }
255
+ .btn-icon { padding: 10px; border-radius: var(--radius-md); }
256
+
257
+ .btn-danger { background: var(--accent-red); color: white; }
258
+ .btn-danger:hover { background: #dc2626; color: white; }
259
+
260
+ .btn-success { background: var(--accent-green); color: white; }
261
+ .btn-success:hover { background: #059669; color: white; }
262
+
263
+ /* ─── Hero ───────────────────────────────────────────────────────────── */
264
+ .hero {
265
+ min-height: 100vh;
266
+ display: flex;
267
+ align-items: center;
268
+ text-align: center;
269
+ background: var(--gradient-hero);
270
+ position: relative;
271
+ overflow: hidden;
272
+ padding-top: 80px;
273
+ }
274
+
275
+ .hero::before {
276
+ content: '';
277
+ position: absolute;
278
+ top: -50%;
279
+ left: -50%;
280
+ width: 200%;
281
+ height: 200%;
282
+ background:
283
+ radial-gradient(circle at 25% 25%, rgba(59,130,246,0.06) 0%, transparent 50%),
284
+ radial-gradient(circle at 75% 75%, rgba(139,92,246,0.06) 0%, transparent 50%);
285
+ animation: heroGlow 15s ease-in-out infinite alternate;
286
+ }
287
+
288
+ @keyframes heroGlow {
289
+ 0% { transform: translate(0, 0); }
290
+ 100% { transform: translate(-5%, -5%); }
291
+ }
292
+
293
+ .hero-content {
294
+ position: relative;
295
+ z-index: 1;
296
+ max-width: 820px;
297
+ margin: 0 auto;
298
+ }
299
+
300
+ .hero-badge {
301
+ display: inline-flex;
302
+ align-items: center;
303
+ gap: 8px;
304
+ padding: 6px 16px;
305
+ background: rgba(59,130,246,0.1);
306
+ border: 1px solid rgba(59,130,246,0.2);
307
+ border-radius: var(--radius-full);
308
+ font-size: 0.85rem;
309
+ color: var(--accent-blue);
310
+ margin-bottom: 28px;
311
+ }
312
+
313
+ .hero h1 {
314
+ margin-bottom: 24px;
315
+ }
316
+
317
+ .hero p {
318
+ font-size: 1.2rem;
319
+ color: var(--text-secondary);
320
+ max-width: 640px;
321
+ margin: 0 auto 40px;
322
+ line-height: 1.7;
323
+ }
324
+
325
+ .hero-actions {
326
+ display: flex;
327
+ align-items: center;
328
+ justify-content: center;
329
+ gap: 16px;
330
+ flex-wrap: wrap;
331
+ }
332
+
333
+ .hero-code {
334
+ margin-top: 60px;
335
+ background: var(--bg-card);
336
+ border: 1px solid var(--border-color);
337
+ border-radius: var(--radius-lg);
338
+ padding: 28px 32px;
339
+ text-align: left;
340
+ max-width: 700px;
341
+ margin-left: auto;
342
+ margin-right: auto;
343
+ position: relative;
344
+ overflow: hidden;
345
+ }
346
+
347
+ .hero-code::before {
348
+ content: '';
349
+ position: absolute;
350
+ top: 0;
351
+ left: 0;
352
+ right: 0;
353
+ height: 3px;
354
+ background: var(--gradient-primary);
355
+ }
356
+
357
+ .hero-code code {
358
+ font-family: var(--font-mono);
359
+ font-size: 0.85rem;
360
+ line-height: 1.8;
361
+ color: var(--text-secondary);
362
+ }
363
+
364
+ .hero-code .keyword { color: var(--accent-purple); }
365
+ .hero-code .string { color: var(--accent-green); }
366
+ .hero-code .property { color: var(--accent-blue); }
367
+ .hero-code .comment { color: var(--text-muted); font-style: italic; }
368
+ .hero-code .boolean { color: var(--accent-orange); }
369
+
370
+ /* ─── Cards ──────────────────────────────────────────────────────────── */
371
+ .card {
372
+ background: var(--bg-card);
373
+ border: 1px solid var(--border-color);
374
+ border-radius: var(--radius-lg);
375
+ padding: 32px;
376
+ transition: all var(--transition-normal);
377
+ }
378
+
379
+ .card:hover {
380
+ border-color: var(--border-hover);
381
+ transform: translateY(-2px);
382
+ box-shadow: var(--shadow-lg);
383
+ }
384
+
385
+ .card-icon {
386
+ width: 52px;
387
+ height: 52px;
388
+ border-radius: var(--radius-md);
389
+ display: flex;
390
+ align-items: center;
391
+ justify-content: center;
392
+ font-size: 1.5rem;
393
+ margin-bottom: 20px;
394
+ }
395
+
396
+ .card-icon.blue { background: rgba(59,130,246,0.12); color: var(--accent-blue); }
397
+ .card-icon.purple { background: rgba(139,92,246,0.12); color: var(--accent-purple); }
398
+ .card-icon.cyan { background: rgba(6,182,212,0.12); color: var(--accent-cyan); }
399
+ .card-icon.green { background: rgba(16,185,129,0.12); color: var(--accent-green); }
400
+ .card-icon.orange { background: rgba(245,158,11,0.12); color: var(--accent-orange); }
401
+ .card-icon.pink { background: rgba(236,72,153,0.12); color: var(--accent-pink); }
402
+
403
+ .card h3 { margin-bottom: 12px; }
404
+ .card p { color: var(--text-secondary); font-size: 0.95rem; line-height: 1.65; }
405
+
406
+ /* ─── Section Header ─────────────────────────────────────────────────── */
407
+ .section-header {
408
+ text-align: center;
409
+ margin-bottom: 64px;
410
+ }
411
+
412
+ .section-header .label {
413
+ display: inline-block;
414
+ padding: 4px 14px;
415
+ background: rgba(59,130,246,0.1);
416
+ border: 1px solid rgba(59,130,246,0.2);
417
+ border-radius: var(--radius-full);
418
+ font-size: 0.8rem;
419
+ font-weight: 600;
420
+ color: var(--accent-blue);
421
+ text-transform: uppercase;
422
+ letter-spacing: 0.05em;
423
+ margin-bottom: 16px;
424
+ }
425
+
426
+ .section-header h2 { margin-bottom: 16px; }
427
+ .section-header p {
428
+ color: var(--text-secondary);
429
+ max-width: 600px;
430
+ margin: 0 auto;
431
+ font-size: 1.05rem;
432
+ }
433
+
434
+ /* ─── Pricing ────────────────────────────────────────────────────────── */
435
+ .pricing-card {
436
+ background: var(--bg-card);
437
+ border: 1px solid var(--border-color);
438
+ border-radius: var(--radius-lg);
439
+ padding: 40px 32px;
440
+ display: flex;
441
+ flex-direction: column;
442
+ transition: all var(--transition-normal);
443
+ position: relative;
444
+ }
445
+
446
+ .pricing-card.featured {
447
+ border-color: var(--accent-blue);
448
+ box-shadow: var(--shadow-glow);
449
+ }
450
+
451
+ .pricing-card.featured::before {
452
+ content: 'Most Popular';
453
+ position: absolute;
454
+ top: -12px;
455
+ left: 50%;
456
+ transform: translateX(-50%);
457
+ padding: 4px 16px;
458
+ background: var(--gradient-primary);
459
+ border-radius: var(--radius-full);
460
+ font-size: 0.75rem;
461
+ font-weight: 700;
462
+ color: white;
463
+ text-transform: uppercase;
464
+ letter-spacing: 0.04em;
465
+ }
466
+
467
+ .pricing-card:hover {
468
+ transform: translateY(-4px);
469
+ box-shadow: var(--shadow-lg);
470
+ }
471
+
472
+ .pricing-tier {
473
+ font-size: 0.85rem;
474
+ font-weight: 700;
475
+ text-transform: uppercase;
476
+ letter-spacing: 0.06em;
477
+ color: var(--text-muted);
478
+ margin-bottom: 8px;
479
+ }
480
+
481
+ .pricing-price {
482
+ font-size: 3rem;
483
+ font-weight: 800;
484
+ letter-spacing: -0.04em;
485
+ margin-bottom: 4px;
486
+ }
487
+
488
+ .pricing-price span {
489
+ font-size: 1rem;
490
+ font-weight: 400;
491
+ color: var(--text-muted);
492
+ }
493
+
494
+ .pricing-desc {
495
+ color: var(--text-secondary);
496
+ font-size: 0.9rem;
497
+ margin-bottom: 28px;
498
+ min-height: 44px;
499
+ }
500
+
501
+ .pricing-features {
502
+ list-style: none;
503
+ flex: 1;
504
+ margin-bottom: 32px;
505
+ }
506
+
507
+ .pricing-features li {
508
+ padding: 8px 0;
509
+ font-size: 0.9rem;
510
+ color: var(--text-secondary);
511
+ display: flex;
512
+ align-items: center;
513
+ gap: 10px;
514
+ }
515
+
516
+ .pricing-features li::before {
517
+ content: '✓';
518
+ color: var(--accent-green);
519
+ font-weight: 700;
520
+ font-size: 0.85rem;
521
+ }
522
+
523
+ .pricing-features li.disabled {
524
+ color: var(--text-muted);
525
+ text-decoration: line-through;
526
+ }
527
+
528
+ .pricing-features li.disabled::before {
529
+ content: '✗';
530
+ color: var(--text-muted);
531
+ }
532
+
533
+ /* ─── Code Block ─────────────────────────────────────────────────────── */
534
+ .code-block {
535
+ background: var(--bg-surface);
536
+ border: 1px solid var(--border-color);
537
+ border-radius: var(--radius-lg);
538
+ overflow: hidden;
539
+ }
540
+
541
+ .code-header {
542
+ display: flex;
543
+ align-items: center;
544
+ justify-content: space-between;
545
+ padding: 12px 20px;
546
+ background: var(--bg-card);
547
+ border-bottom: 1px solid var(--border-color);
548
+ }
549
+
550
+ .code-dots {
551
+ display: flex;
552
+ gap: 6px;
553
+ }
554
+
555
+ .code-dots span {
556
+ width: 10px;
557
+ height: 10px;
558
+ border-radius: 50%;
559
+ }
560
+
561
+ .code-dots span:nth-child(1) { background: #ef4444; }
562
+ .code-dots span:nth-child(2) { background: #f59e0b; }
563
+ .code-dots span:nth-child(3) { background: #10b981; }
564
+
565
+ .code-lang {
566
+ font-size: 0.75rem;
567
+ color: var(--text-muted);
568
+ font-family: var(--font-mono);
569
+ }
570
+
571
+ .code-body {
572
+ padding: 20px 24px;
573
+ overflow-x: auto;
574
+ }
575
+
576
+ .code-body pre {
577
+ font-family: var(--font-mono);
578
+ font-size: 0.85rem;
579
+ line-height: 1.8;
580
+ color: var(--text-secondary);
581
+ }
582
+
583
+ .code-body .kw { color: var(--accent-purple); }
584
+ .code-body .fn { color: var(--accent-blue); }
585
+ .code-body .str { color: var(--accent-green); }
586
+ .code-body .cm { color: var(--text-muted); font-style: italic; }
587
+ .code-body .num { color: var(--accent-orange); }
588
+ .code-body .bool { color: var(--accent-orange); }
589
+ .code-body .prop { color: var(--accent-cyan); }
590
+
591
+ /* ─── Footer ─────────────────────────────────────────────────────────── */
592
+ .footer {
593
+ padding: 64px 0 32px;
594
+ border-top: 1px solid var(--border-color);
595
+ background: var(--bg-surface);
596
+ }
597
+
598
+ .footer-grid {
599
+ display: grid;
600
+ grid-template-columns: 2fr 1fr 1fr 1fr;
601
+ gap: 48px;
602
+ margin-bottom: 48px;
603
+ }
604
+
605
+ @media (max-width: 768px) {
606
+ .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; }
607
+ }
608
+
609
+ .footer-brand p {
610
+ color: var(--text-secondary);
611
+ font-size: 0.9rem;
612
+ margin-top: 12px;
613
+ max-width: 300px;
614
+ line-height: 1.6;
615
+ }
616
+
617
+ .footer-col h4 {
618
+ color: var(--text-primary);
619
+ font-size: 0.85rem;
620
+ text-transform: uppercase;
621
+ letter-spacing: 0.06em;
622
+ margin-bottom: 16px;
623
+ }
624
+
625
+ .footer-col ul { list-style: none; }
626
+ .footer-col li { margin-bottom: 10px; }
627
+ .footer-col a { color: var(--text-muted); font-size: 0.9rem; }
628
+ .footer-col a:hover { color: var(--text-primary); }
629
+
630
+ .footer-bottom {
631
+ display: flex;
632
+ justify-content: space-between;
633
+ align-items: center;
634
+ padding-top: 28px;
635
+ border-top: 1px solid var(--border-color);
636
+ color: var(--text-muted);
637
+ font-size: 0.85rem;
638
+ }
639
+
640
+ /* ─── Forms ──────────────────────────────────────────────────────────── */
641
+ .form-group {
642
+ margin-bottom: 20px;
643
+ }
644
+
645
+ .form-group label {
646
+ display: block;
647
+ font-size: 0.875rem;
648
+ font-weight: 600;
649
+ color: var(--text-secondary);
650
+ margin-bottom: 6px;
651
+ }
652
+
653
+ .form-input {
654
+ width: 100%;
655
+ padding: 12px 16px;
656
+ background: var(--bg-input);
657
+ border: 1px solid var(--border-color);
658
+ border-radius: var(--radius-md);
659
+ color: var(--text-primary);
660
+ font-family: var(--font-sans);
661
+ font-size: 0.925rem;
662
+ transition: border-color var(--transition-fast);
663
+ outline: none;
664
+ }
665
+
666
+ .form-input:focus {
667
+ border-color: var(--accent-blue);
668
+ box-shadow: 0 0 0 3px rgba(59,130,246,0.15);
669
+ }
670
+
671
+ .form-input::placeholder { color: var(--text-muted); }
672
+
673
+ select.form-input {
674
+ appearance: none;
675
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%2394a3b8' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 6l3.5 4 3.5-4H4.5z'/%3E%3C/svg%3E");
676
+ background-repeat: no-repeat;
677
+ background-position: right 12px center;
678
+ padding-right: 36px;
679
+ }
680
+
681
+ textarea.form-input {
682
+ resize: vertical;
683
+ min-height: 100px;
684
+ }
685
+
686
+ /* ─── Auth Pages ─────────────────────────────────────────────────────── */
687
+ .auth-page {
688
+ min-height: 100vh;
689
+ display: flex;
690
+ align-items: center;
691
+ justify-content: center;
692
+ background: var(--gradient-hero);
693
+ padding: 24px;
694
+ }
695
+
696
+ .auth-card {
697
+ width: 100%;
698
+ max-width: 440px;
699
+ background: var(--bg-card);
700
+ border: 1px solid var(--border-color);
701
+ border-radius: var(--radius-xl);
702
+ padding: 48px 40px;
703
+ box-shadow: var(--shadow-lg);
704
+ }
705
+
706
+ .auth-card h1 {
707
+ font-size: 1.75rem;
708
+ margin-bottom: 8px;
709
+ }
710
+
711
+ .auth-card .subtitle {
712
+ color: var(--text-secondary);
713
+ margin-bottom: 32px;
714
+ }
715
+
716
+ .auth-card .btn { width: 100%; margin-top: 8px; }
717
+
718
+ .auth-footer {
719
+ text-align: center;
720
+ margin-top: 24px;
721
+ color: var(--text-muted);
722
+ font-size: 0.9rem;
723
+ }
724
+
725
+ .alert {
726
+ padding: 12px 16px;
727
+ border-radius: var(--radius-md);
728
+ font-size: 0.9rem;
729
+ margin-bottom: 20px;
730
+ display: none;
731
+ }
732
+
733
+ .alert-error {
734
+ background: rgba(239,68,68,0.1);
735
+ border: 1px solid rgba(239,68,68,0.3);
736
+ color: var(--accent-red);
737
+ }
738
+
739
+ .alert-success {
740
+ background: rgba(16,185,129,0.1);
741
+ border: 1px solid rgba(16,185,129,0.3);
742
+ color: var(--accent-green);
743
+ }
744
+
745
+ /* ─── Dashboard ──────────────────────────────────────────────────────── */
746
+ .dashboard {
747
+ display: flex;
748
+ min-height: 100vh;
749
+ }
750
+
751
+ .sidebar {
752
+ width: 260px;
753
+ background: var(--bg-secondary);
754
+ border-right: 1px solid var(--border-color);
755
+ padding: 24px 0;
756
+ display: flex;
757
+ flex-direction: column;
758
+ position: fixed;
759
+ top: 0;
760
+ left: 0;
761
+ bottom: 0;
762
+ z-index: 50;
763
+ }
764
+
765
+ .sidebar-brand {
766
+ padding: 0 24px 24px;
767
+ border-bottom: 1px solid var(--border-color);
768
+ margin-bottom: 16px;
769
+ }
770
+
771
+ .sidebar-nav {
772
+ flex: 1;
773
+ padding: 0 12px;
774
+ }
775
+
776
+ .sidebar-nav a {
777
+ display: flex;
778
+ align-items: center;
779
+ gap: 12px;
780
+ padding: 10px 16px;
781
+ border-radius: var(--radius-md);
782
+ color: var(--text-secondary);
783
+ font-size: 0.9rem;
784
+ font-weight: 500;
785
+ transition: all var(--transition-fast);
786
+ margin-bottom: 2px;
787
+ }
788
+
789
+ .sidebar-nav a:hover,
790
+ .sidebar-nav a.active {
791
+ background: rgba(59,130,246,0.1);
792
+ color: var(--text-primary);
793
+ }
794
+
795
+ .sidebar-nav a.active { color: var(--accent-blue); }
796
+
797
+ .sidebar-footer {
798
+ padding: 16px 24px;
799
+ border-top: 1px solid var(--border-color);
800
+ }
801
+
802
+ .main-content {
803
+ flex: 1;
804
+ margin-left: 260px;
805
+ padding: 32px 40px;
806
+ }
807
+
808
+ .page-header {
809
+ display: flex;
810
+ align-items: center;
811
+ justify-content: space-between;
812
+ margin-bottom: 32px;
813
+ }
814
+
815
+ .page-header h1 {
816
+ font-size: 1.75rem;
817
+ }
818
+
819
+ .stats-grid {
820
+ display: grid;
821
+ grid-template-columns: repeat(4, 1fr);
822
+ gap: 20px;
823
+ margin-bottom: 32px;
824
+ }
825
+
826
+ @media (max-width: 1200px) {
827
+ .stats-grid { grid-template-columns: repeat(2, 1fr); }
828
+ }
829
+
830
+ .stat-card {
831
+ background: var(--bg-card);
832
+ border: 1px solid var(--border-color);
833
+ border-radius: var(--radius-lg);
834
+ padding: 24px;
835
+ }
836
+
837
+ .stat-card .label {
838
+ font-size: 0.8rem;
839
+ color: var(--text-muted);
840
+ text-transform: uppercase;
841
+ letter-spacing: 0.04em;
842
+ margin-bottom: 8px;
843
+ }
844
+
845
+ .stat-card .value {
846
+ font-size: 2rem;
847
+ font-weight: 800;
848
+ letter-spacing: -0.03em;
849
+ }
850
+
851
+ .stat-card .change {
852
+ font-size: 0.8rem;
853
+ margin-top: 4px;
854
+ }
855
+
856
+ .stat-card .change.up { color: var(--accent-green); }
857
+ .stat-card .change.down { color: var(--accent-red); }
858
+
859
+ /* ─── Table ──────────────────────────────────────────────────────────── */
860
+ .table-wrapper {
861
+ background: var(--bg-card);
862
+ border: 1px solid var(--border-color);
863
+ border-radius: var(--radius-lg);
864
+ overflow: hidden;
865
+ }
866
+
867
+ .table-header {
868
+ display: flex;
869
+ justify-content: space-between;
870
+ align-items: center;
871
+ padding: 20px 24px;
872
+ border-bottom: 1px solid var(--border-color);
873
+ }
874
+
875
+ table {
876
+ width: 100%;
877
+ border-collapse: collapse;
878
+ }
879
+
880
+ th, td {
881
+ padding: 14px 24px;
882
+ text-align: left;
883
+ font-size: 0.9rem;
884
+ }
885
+
886
+ th {
887
+ background: var(--bg-surface);
888
+ color: var(--text-muted);
889
+ font-weight: 600;
890
+ font-size: 0.8rem;
891
+ text-transform: uppercase;
892
+ letter-spacing: 0.04em;
893
+ }
894
+
895
+ td { border-bottom: 1px solid var(--border-color); color: var(--text-secondary); }
896
+ tr:last-child td { border-bottom: none; }
897
+ tr:hover td { background: rgba(59,130,246,0.03); }
898
+
899
+ /* ─── Badge ──────────────────────────────────────────────────────────── */
900
+ .badge {
901
+ display: inline-flex;
902
+ align-items: center;
903
+ padding: 3px 10px;
904
+ border-radius: var(--radius-full);
905
+ font-size: 0.75rem;
906
+ font-weight: 600;
907
+ }
908
+
909
+ .badge-free { background: rgba(100,116,139,0.15); color: var(--text-muted); }
910
+ .badge-starter { background: rgba(59,130,246,0.15); color: var(--accent-blue); }
911
+ .badge-pro { background: rgba(139,92,246,0.15); color: var(--accent-purple); }
912
+ .badge-enterprise { background: rgba(245,158,11,0.15); color: var(--accent-orange); }
913
+ .badge-active { background: rgba(16,185,129,0.15); color: var(--accent-green); }
914
+ .badge-inactive { background: rgba(239,68,68,0.15); color: var(--accent-red); }
915
+
916
+ /* ─── Modal ──────────────────────────────────────────────────────────── */
917
+ .modal-overlay {
918
+ position: fixed;
919
+ inset: 0;
920
+ background: rgba(0,0,0,0.6);
921
+ backdrop-filter: blur(4px);
922
+ display: flex;
923
+ align-items: center;
924
+ justify-content: center;
925
+ z-index: 200;
926
+ padding: 24px;
927
+ opacity: 0;
928
+ visibility: hidden;
929
+ transition: all var(--transition-normal);
930
+ }
931
+
932
+ .modal-overlay.active {
933
+ opacity: 1;
934
+ visibility: visible;
935
+ }
936
+
937
+ .modal {
938
+ background: var(--bg-card);
939
+ border: 1px solid var(--border-color);
940
+ border-radius: var(--radius-xl);
941
+ width: 100%;
942
+ max-width: 560px;
943
+ max-height: 90vh;
944
+ overflow-y: auto;
945
+ transform: translateY(20px);
946
+ transition: transform var(--transition-normal);
947
+ }
948
+
949
+ .modal-overlay.active .modal {
950
+ transform: translateY(0);
951
+ }
952
+
953
+ .modal-header {
954
+ display: flex;
955
+ align-items: center;
956
+ justify-content: space-between;
957
+ padding: 24px 28px;
958
+ border-bottom: 1px solid var(--border-color);
959
+ }
960
+
961
+ .modal-header h2 { font-size: 1.2rem; }
962
+
963
+ .modal-close {
964
+ background: none;
965
+ border: none;
966
+ color: var(--text-muted);
967
+ font-size: 1.4rem;
968
+ cursor: pointer;
969
+ padding: 4px;
970
+ line-height: 1;
971
+ }
972
+
973
+ .modal-close:hover { color: var(--text-primary); }
974
+
975
+ .modal-body { padding: 28px; }
976
+ .modal-footer {
977
+ padding: 20px 28px;
978
+ border-top: 1px solid var(--border-color);
979
+ display: flex;
980
+ justify-content: flex-end;
981
+ gap: 12px;
982
+ }
983
+
984
+ /* ─── Tabs ───────────────────────────────────────────────────────────── */
985
+ .tabs {
986
+ display: flex;
987
+ border-bottom: 1px solid var(--border-color);
988
+ margin-bottom: 28px;
989
+ }
990
+
991
+ .tab {
992
+ padding: 12px 20px;
993
+ font-size: 0.9rem;
994
+ font-weight: 500;
995
+ color: var(--text-muted);
996
+ background: none;
997
+ border: none;
998
+ border-bottom: 2px solid transparent;
999
+ cursor: pointer;
1000
+ transition: all var(--transition-fast);
1001
+ font-family: var(--font-sans);
1002
+ }
1003
+
1004
+ .tab:hover { color: var(--text-secondary); }
1005
+ .tab.active {
1006
+ color: var(--accent-blue);
1007
+ border-bottom-color: var(--accent-blue);
1008
+ }
1009
+
1010
+ .tab-content { display: none; }
1011
+ .tab-content.active { display: block; }
1012
+
1013
+ /* ─── Toggle ─────────────────────────────────────────────────────────── */
1014
+ .toggle-wrap {
1015
+ display: flex;
1016
+ align-items: center;
1017
+ justify-content: space-between;
1018
+ padding: 12px 0;
1019
+ border-bottom: 1px solid var(--border-color);
1020
+ }
1021
+
1022
+ .toggle-label {
1023
+ font-size: 0.9rem;
1024
+ color: var(--text-secondary);
1025
+ }
1026
+
1027
+ .toggle-label small { display: block; color: var(--text-muted); font-size: 0.8rem; margin-top: 2px; }
1028
+
1029
+ .toggle {
1030
+ position: relative;
1031
+ width: 44px;
1032
+ height: 24px;
1033
+ flex-shrink: 0;
1034
+ }
1035
+
1036
+ .toggle input {
1037
+ opacity: 0;
1038
+ width: 0;
1039
+ height: 0;
1040
+ position: absolute;
1041
+ }
1042
+
1043
+ .toggle-slider {
1044
+ position: absolute;
1045
+ inset: 0;
1046
+ background: var(--border-color);
1047
+ border-radius: var(--radius-full);
1048
+ cursor: pointer;
1049
+ transition: background var(--transition-fast);
1050
+ }
1051
+
1052
+ .toggle-slider::before {
1053
+ content: '';
1054
+ position: absolute;
1055
+ top: 3px;
1056
+ left: 3px;
1057
+ width: 18px;
1058
+ height: 18px;
1059
+ background: white;
1060
+ border-radius: 50%;
1061
+ transition: transform var(--transition-fast);
1062
+ }
1063
+
1064
+ .toggle input:checked + .toggle-slider {
1065
+ background: var(--accent-blue);
1066
+ }
1067
+
1068
+ .toggle input:checked + .toggle-slider::before {
1069
+ transform: translateX(20px);
1070
+ }
1071
+
1072
+ /* ─── Snippet Box ────────────────────────────────────────────────────── */
1073
+ .snippet-box {
1074
+ background: var(--bg-surface);
1075
+ border: 1px solid var(--border-color);
1076
+ border-radius: var(--radius-md);
1077
+ padding: 16px;
1078
+ position: relative;
1079
+ }
1080
+
1081
+ .snippet-box pre {
1082
+ font-family: var(--font-mono);
1083
+ font-size: 0.82rem;
1084
+ line-height: 1.7;
1085
+ color: var(--text-secondary);
1086
+ white-space: pre-wrap;
1087
+ word-break: break-all;
1088
+ }
1089
+
1090
+ .copy-btn {
1091
+ position: absolute;
1092
+ top: 10px;
1093
+ right: 10px;
1094
+ background: var(--bg-card);
1095
+ border: 1px solid var(--border-color);
1096
+ border-radius: var(--radius-sm);
1097
+ color: var(--text-muted);
1098
+ padding: 6px 12px;
1099
+ font-size: 0.75rem;
1100
+ cursor: pointer;
1101
+ font-family: var(--font-sans);
1102
+ transition: all var(--transition-fast);
1103
+ }
1104
+
1105
+ .copy-btn:hover {
1106
+ color: var(--text-primary);
1107
+ border-color: var(--border-hover);
1108
+ }
1109
+
1110
+ /* ─── Docs ───────────────────────────────────────────────────────────── */
1111
+ .docs-layout {
1112
+ display: flex;
1113
+ gap: 40px;
1114
+ padding-top: 100px;
1115
+ }
1116
+
1117
+ .docs-sidebar {
1118
+ width: 240px;
1119
+ flex-shrink: 0;
1120
+ position: sticky;
1121
+ top: 100px;
1122
+ max-height: calc(100vh - 120px);
1123
+ overflow-y: auto;
1124
+ }
1125
+
1126
+ .docs-sidebar ul { list-style: none; }
1127
+ .docs-sidebar li { margin-bottom: 4px; }
1128
+ .docs-sidebar a {
1129
+ display: block;
1130
+ padding: 8px 14px;
1131
+ font-size: 0.875rem;
1132
+ color: var(--text-muted);
1133
+ border-radius: var(--radius-sm);
1134
+ border-left: 2px solid transparent;
1135
+ transition: all var(--transition-fast);
1136
+ }
1137
+ .docs-sidebar a:hover { color: var(--text-secondary); background: rgba(59,130,246,0.05); }
1138
+ .docs-sidebar a.active { color: var(--accent-blue); border-left-color: var(--accent-blue); background: rgba(59,130,246,0.08); }
1139
+
1140
+ .docs-content {
1141
+ flex: 1;
1142
+ min-width: 0;
1143
+ padding-bottom: 80px;
1144
+ }
1145
+
1146
+ .docs-content h2 {
1147
+ font-size: 1.6rem;
1148
+ margin-top: 48px;
1149
+ margin-bottom: 16px;
1150
+ padding-bottom: 12px;
1151
+ border-bottom: 1px solid var(--border-color);
1152
+ }
1153
+
1154
+ .docs-content h2:first-child { margin-top: 0; }
1155
+
1156
+ .docs-content h3 {
1157
+ font-size: 1.2rem;
1158
+ margin-top: 32px;
1159
+ margin-bottom: 12px;
1160
+ }
1161
+
1162
+ .docs-content p {
1163
+ color: var(--text-secondary);
1164
+ margin-bottom: 16px;
1165
+ line-height: 1.7;
1166
+ }
1167
+
1168
+ .docs-content ul, .docs-content ol {
1169
+ color: var(--text-secondary);
1170
+ margin-bottom: 16px;
1171
+ padding-left: 24px;
1172
+ }
1173
+
1174
+ .docs-content li { margin-bottom: 6px; line-height: 1.6; }
1175
+
1176
+ .docs-content code {
1177
+ font-family: var(--font-mono);
1178
+ font-size: 0.85em;
1179
+ background: var(--bg-surface);
1180
+ padding: 2px 7px;
1181
+ border-radius: var(--radius-sm);
1182
+ border: 1px solid var(--border-color);
1183
+ color: var(--accent-cyan);
1184
+ }
1185
+
1186
+ .docs-content pre code {
1187
+ display: block;
1188
+ padding: 20px 24px;
1189
+ border-radius: var(--radius-md);
1190
+ overflow-x: auto;
1191
+ line-height: 1.7;
1192
+ border: none;
1193
+ }
1194
+
1195
+ @media (max-width: 768px) {
1196
+ .docs-sidebar { display: none; }
1197
+ }
1198
+
1199
+ /* ─── Utilities ──────────────────────────────────────────────────────── */
1200
+ .text-center { text-align: center; }
1201
+ .text-left { text-align: left; }
1202
+ .text-muted { color: var(--text-muted); }
1203
+ .mt-4 { margin-top: 16px; }
1204
+ .mt-8 { margin-top: 32px; }
1205
+ .mb-4 { margin-bottom: 16px; }
1206
+ .mb-8 { margin-bottom: 32px; }
1207
+ .flex { display: flex; }
1208
+ .items-center { align-items: center; }
1209
+ .justify-between { justify-content: space-between; }
1210
+ .gap-2 { gap: 8px; }
1211
+ .gap-4 { gap: 16px; }
1212
+ .hidden { display: none !important; }
1213
+ .mono { font-family: var(--font-mono); }
1214
+ .truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
1215
+
1216
+ /* ─── Animations ─────────────────────────────────────────────────────── */
1217
+ @keyframes fadeIn {
1218
+ from { opacity: 0; transform: translateY(12px); }
1219
+ to { opacity: 1; transform: translateY(0); }
1220
+ }
1221
+
1222
+ .fade-in {
1223
+ animation: fadeIn 0.5s ease-out forwards;
1224
+ }
1225
+
1226
+ .fade-in-delay-1 { animation-delay: 0.1s; opacity: 0; }
1227
+ .fade-in-delay-2 { animation-delay: 0.2s; opacity: 0; }
1228
+ .fade-in-delay-3 { animation-delay: 0.3s; opacity: 0; }
1229
+ .fade-in-delay-4 { animation-delay: 0.4s; opacity: 0; }
1230
+
1231
+ /* ─── Scrollbar ──────────────────────────────────────────────────────── */
1232
+ ::-webkit-scrollbar { width: 8px; height: 8px; }
1233
+ ::-webkit-scrollbar-track { background: var(--bg-primary); }
1234
+ ::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 4px; }
1235
+ ::-webkit-scrollbar-thumb:hover { background: var(--border-hover); }