@fjell/client-api 4.4.9 → 4.4.11

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