@fjell/core 4.4.13 → 4.4.16

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.
Files changed (73) hide show
  1. package/dist/AItemService.d.ts +1 -1
  2. package/dist/index.d.ts +5 -5
  3. package/dist/index.js +7911 -0
  4. package/dist/index.js.map +7 -0
  5. package/dist/item/IFactory.d.ts +2 -2
  6. package/dist/item/IQFactory.d.ts +1 -1
  7. package/dist/item/IQUtils.d.ts +3 -3
  8. package/dist/item/IUtils.d.ts +2 -2
  9. package/dist/item/ItemQuery.d.ts +1 -1
  10. package/dist/key/KUtils.d.ts +1 -1
  11. package/dist/logger.d.ts +1 -1
  12. package/package.json +15 -13
  13. package/dist/cjs/AItemService.js +0 -42
  14. package/dist/cjs/AItemService.js.map +0 -1
  15. package/dist/cjs/dictionary.js +0 -71
  16. package/dist/cjs/dictionary.js.map +0 -1
  17. package/dist/cjs/index.js +0 -62
  18. package/dist/cjs/index.js.map +0 -1
  19. package/dist/cjs/item/IFactory.js +0 -93
  20. package/dist/cjs/item/IFactory.js.map +0 -1
  21. package/dist/cjs/item/IQFactory.js +0 -154
  22. package/dist/cjs/item/IQFactory.js.map +0 -1
  23. package/dist/cjs/item/IQUtils.js +0 -335
  24. package/dist/cjs/item/IQUtils.js.map +0 -1
  25. package/dist/cjs/item/IUtils.js +0 -76
  26. package/dist/cjs/item/IUtils.js.map +0 -1
  27. package/dist/cjs/item/ItemQuery.js +0 -10
  28. package/dist/cjs/item/ItemQuery.js.map +0 -1
  29. package/dist/cjs/key/KUtils.js +0 -397
  30. package/dist/cjs/key/KUtils.js.map +0 -1
  31. package/dist/cjs/logger.js +0 -10
  32. package/dist/cjs/logger.js.map +0 -1
  33. package/dist/esm/AItemService.js +0 -38
  34. package/dist/esm/AItemService.js.map +0 -1
  35. package/dist/esm/dictionary.js +0 -67
  36. package/dist/esm/dictionary.js.map +0 -1
  37. package/dist/esm/index.js +0 -9
  38. package/dist/esm/index.js.map +0 -1
  39. package/dist/esm/item/IFactory.js +0 -89
  40. package/dist/esm/item/IFactory.js.map +0 -1
  41. package/dist/esm/item/IQFactory.js +0 -150
  42. package/dist/esm/item/IQFactory.js.map +0 -1
  43. package/dist/esm/item/IQUtils.js +0 -305
  44. package/dist/esm/item/IQUtils.js.map +0 -1
  45. package/dist/esm/item/IUtils.js +0 -69
  46. package/dist/esm/item/IUtils.js.map +0 -1
  47. package/dist/esm/item/ItemQuery.js +0 -6
  48. package/dist/esm/item/ItemQuery.js.map +0 -1
  49. package/dist/esm/key/KUtils.js +0 -365
  50. package/dist/esm/key/KUtils.js.map +0 -1
  51. package/dist/esm/logger.js +0 -6
  52. package/dist/esm/logger.js.map +0 -1
  53. package/dist/index.cjs +0 -1131
  54. package/dist/index.cjs.map +0 -1
  55. package/docs/README.md +0 -53
  56. package/docs/index.html +0 -18
  57. package/docs/package.json +0 -35
  58. package/docs/public/README.md +0 -227
  59. package/docs/public/api.md +0 -230
  60. package/docs/public/basic-usage.ts +0 -293
  61. package/docs/public/examples-README.md +0 -147
  62. package/docs/public/fjell-icon.svg +0 -1
  63. package/docs/public/package.json +0 -56
  64. package/docs/public/pano.png +0 -0
  65. package/docs/src/App.css +0 -1178
  66. package/docs/src/App.tsx +0 -683
  67. package/docs/src/index.css +0 -38
  68. package/docs/src/main.tsx +0 -10
  69. package/docs/tsconfig.node.json +0 -14
  70. package/docs/vitest.config.ts +0 -14
  71. package/examples/README.md +0 -147
  72. package/examples/basic-usage.ts +0 -293
  73. package/vitest.config.ts +0 -37
package/docs/src/App.css DELETED
@@ -1,1178 +0,0 @@
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('/core/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-core {
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
- overflow-x: hidden;
303
- z-index: 100;
304
- transition: var(--transition-smooth);
305
- transform: translateX(-100%);
306
- }
307
-
308
- .sidebar.sidebar-open {
309
- transform: translateX(0);
310
- }
311
-
312
- .sidebar-content {
313
- padding: 2rem 0;
314
- height: 100%;
315
- }
316
-
317
- .sidebar-header {
318
- padding: 0 2rem 2rem;
319
- border-bottom: 1px solid rgba(226, 232, 240, 0.5);
320
- margin-bottom: 2rem;
321
- }
322
-
323
- .sidebar-title {
324
- margin: 0 0 0.5rem;
325
- font-family: var(--font-display);
326
- font-size: 1.5rem;
327
- font-weight: 600;
328
- color: var(--color-primary);
329
- letter-spacing: -0.02em;
330
- }
331
-
332
- .sidebar-subtitle {
333
- margin: 0;
334
- font-size: 0.875rem;
335
- color: var(--color-text-light);
336
- font-weight: 400;
337
- }
338
-
339
- .nav-menu {
340
- display: flex;
341
- flex-direction: column;
342
- gap: 0.5rem;
343
- padding: 0 1rem;
344
- }
345
-
346
- .nav-item {
347
- display: flex;
348
- flex-direction: column;
349
- padding: 1rem 1rem;
350
- margin: 0;
351
- text-decoration: none;
352
- color: var(--color-text);
353
- background: none;
354
- border: none;
355
- border-radius: 0.75rem;
356
- transition: var(--transition-fast);
357
- cursor: pointer;
358
- text-align: left;
359
- position: relative;
360
- overflow: hidden;
361
- }
362
-
363
- .nav-item::before {
364
- content: '';
365
- position: absolute;
366
- top: 0;
367
- left: 0;
368
- right: 0;
369
- bottom: 0;
370
- background: var(--gradient-primary);
371
- opacity: 0;
372
- transition: var(--transition-fast);
373
- }
374
-
375
- .nav-item:hover::before {
376
- opacity: 0.05;
377
- }
378
-
379
- .nav-item.nav-item-active::before {
380
- opacity: 0.1;
381
- }
382
-
383
- .nav-item-title {
384
- position: relative;
385
- z-index: 1;
386
- font-weight: 600;
387
- font-size: 1rem;
388
- margin-bottom: 0.25rem;
389
- color: var(--color-primary);
390
- }
391
-
392
- .nav-item-subtitle {
393
- position: relative;
394
- z-index: 1;
395
- font-size: 0.8rem;
396
- color: var(--color-text-light);
397
- font-weight: 400;
398
- line-height: 1.4;
399
- }
400
-
401
- .nav-item.nav-item-active .nav-item-title {
402
- color: var(--color-accent);
403
- font-weight: 700;
404
- }
405
-
406
- .nav-item.nav-item-active .nav-item-subtitle {
407
- color: var(--color-accent-light);
408
- }
409
-
410
- /* ===== MAIN CONTENT ===== */
411
- .main {
412
- flex: 1;
413
- margin-left: 0;
414
- transition: var(--transition-smooth);
415
- }
416
-
417
- .main-content {
418
- max-width: var(--content-max-width);
419
- margin: 0 auto;
420
- padding: 3rem 2rem;
421
- }
422
-
423
- .section-header {
424
- margin-bottom: 3rem;
425
- padding-bottom: 2rem;
426
- border-bottom: 1px solid var(--color-border);
427
- }
428
-
429
- .section-title {
430
- margin: 0 0 0.75rem;
431
- font-family: var(--font-display);
432
- font-size: 2.5rem;
433
- font-weight: 700;
434
- color: var(--color-primary);
435
- letter-spacing: -0.03em;
436
- line-height: 1.2;
437
- }
438
-
439
- .section-subtitle {
440
- margin: 0;
441
- font-size: 1.125rem;
442
- color: var(--color-text-light);
443
- font-weight: 400;
444
- line-height: 1.6;
445
- }
446
-
447
- .content {
448
- position: relative;
449
- }
450
-
451
- /* ===== MARKDOWN CONTENT ===== */
452
- .markdown-content {
453
- line-height: 1.8;
454
- color: var(--color-text);
455
- }
456
-
457
- .markdown-content h1 {
458
- font-family: var(--font-display);
459
- font-size: 2.25rem;
460
- font-weight: 700;
461
- margin: 3rem 0 1.5rem;
462
- color: var(--color-primary);
463
- letter-spacing: -0.02em;
464
- line-height: 1.3;
465
- }
466
-
467
- .markdown-content h1:first-child {
468
- margin-top: 0;
469
- }
470
-
471
- .markdown-content h2 {
472
- font-family: var(--font-display);
473
- font-size: 1.75rem;
474
- font-weight: 600;
475
- margin: 2.5rem 0 1rem;
476
- color: var(--color-primary);
477
- letter-spacing: -0.02em;
478
- line-height: 1.4;
479
- }
480
-
481
- .markdown-content h3 {
482
- font-family: var(--font-display);
483
- font-size: 1.375rem;
484
- font-weight: 600;
485
- margin: 2rem 0 0.75rem;
486
- color: var(--color-primary);
487
- letter-spacing: -0.01em;
488
- line-height: 1.4;
489
- }
490
-
491
- .markdown-content h4 {
492
- font-family: var(--font-display);
493
- font-size: 1.125rem;
494
- font-weight: 600;
495
- margin: 1.5rem 0 0.5rem;
496
- color: var(--color-primary);
497
- line-height: 1.5;
498
- }
499
-
500
- .markdown-content p {
501
- margin: 1rem 0;
502
- line-height: 1.8;
503
- }
504
-
505
- .markdown-content ul,
506
- .markdown-content ol {
507
- margin: 1rem 0;
508
- padding-left: 1.5rem;
509
- line-height: 1.7;
510
- }
511
-
512
- .markdown-content li {
513
- margin: 0.5rem 0;
514
- }
515
-
516
- .markdown-content blockquote {
517
- margin: 1.5rem 0;
518
- padding: 1rem 1.5rem;
519
- border-left: 4px solid var(--color-accent);
520
- background: rgba(102, 126, 234, 0.05);
521
- border-radius: 0 0.5rem 0.5rem 0;
522
- font-style: italic;
523
- }
524
-
525
- .markdown-content code {
526
- font-family: 'SF Mono', 'Monaco', 'Cascadia Code', 'Roboto Mono', monospace;
527
- font-size: 0.875em;
528
- background: rgba(102, 126, 234, 0.08);
529
- padding: 0.2em 0.4em;
530
- border-radius: 0.25rem;
531
- color: var(--color-accent);
532
- font-weight: 500;
533
- }
534
-
535
- .markdown-content pre {
536
- margin: 1.5rem 0;
537
- padding: 1.5rem;
538
- background: var(--color-surface);
539
- border: 1px solid var(--color-border);
540
- border-radius: 0.75rem;
541
- overflow-x: auto;
542
- font-size: 0.875rem;
543
- line-height: 1.6;
544
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
545
- }
546
-
547
- .markdown-content pre code {
548
- background: none;
549
- padding: 0;
550
- color: inherit;
551
- font-size: inherit;
552
- }
553
-
554
- .markdown-content table {
555
- width: 100%;
556
- margin: 1.5rem 0;
557
- border-collapse: collapse;
558
- border: 1px solid var(--color-border);
559
- border-radius: 0.5rem;
560
- overflow: hidden;
561
- background: var(--color-surface);
562
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
563
- }
564
-
565
- .markdown-content th,
566
- .markdown-content td {
567
- padding: 0.75rem 1rem;
568
- text-align: left;
569
- border-bottom: 1px solid var(--color-border);
570
- }
571
-
572
- .markdown-content th {
573
- background: rgba(102, 126, 234, 0.05);
574
- font-weight: 600;
575
- color: var(--color-primary);
576
- }
577
-
578
- .markdown-content tr:last-child td {
579
- border-bottom: none;
580
- }
581
-
582
- .markdown-content img {
583
- max-width: 100%;
584
- height: auto;
585
- border-radius: 0.5rem;
586
- margin: 1.5rem 0;
587
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
588
- transition: var(--transition-fast);
589
- }
590
-
591
- .markdown-content img:hover {
592
- transform: scale(1.02);
593
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
594
- }
595
-
596
- .markdown-content a {
597
- color: var(--color-accent);
598
- text-decoration: underline;
599
- text-decoration-thickness: 1px;
600
- text-underline-offset: 0.2em;
601
- transition: var(--transition-fast);
602
- }
603
-
604
- .markdown-content a:hover {
605
- color: var(--color-accent-light);
606
- text-decoration-thickness: 2px;
607
- }
608
-
609
- /* ===== NAVIGATION SUGGESTIONS ===== */
610
- .nav-suggestions {
611
- margin-top: 4rem;
612
- padding-top: 2rem;
613
- border-top: 1px solid var(--color-border);
614
- display: flex;
615
- gap: 1rem;
616
- }
617
-
618
- .nav-suggestion {
619
- display: flex;
620
- flex-direction: column;
621
- padding: 1.5rem;
622
- background: var(--color-surface);
623
- border: 1px solid var(--color-border);
624
- border-radius: 0.75rem;
625
- cursor: pointer;
626
- transition: var(--transition-fast);
627
- text-decoration: none;
628
- color: inherit;
629
- position: relative;
630
- overflow: hidden;
631
- flex: 1;
632
- }
633
-
634
- .nav-suggestion::before {
635
- content: '';
636
- position: absolute;
637
- top: 0;
638
- left: 0;
639
- right: 0;
640
- bottom: 0;
641
- background: var(--gradient-primary);
642
- opacity: 0;
643
- transition: var(--transition-fast);
644
- }
645
-
646
- .nav-suggestion:hover::before {
647
- opacity: 0.05;
648
- }
649
-
650
- .nav-suggestion:hover {
651
- border-color: var(--color-accent);
652
- transform: translateY(-2px);
653
- box-shadow: 0 8px 32px rgba(102, 126, 234, 0.15);
654
- }
655
-
656
- .nav-suggestion-label {
657
- position: relative;
658
- z-index: 1;
659
- font-size: 0.75rem;
660
- color: var(--color-text-light);
661
- font-weight: 500;
662
- text-transform: uppercase;
663
- letter-spacing: 0.05em;
664
- margin-bottom: 0.5rem;
665
- }
666
-
667
- .nav-suggestion-title {
668
- position: relative;
669
- z-index: 1;
670
- font-weight: 600;
671
- font-size: 1rem;
672
- color: var(--color-primary);
673
- line-height: 1.4;
674
- }
675
-
676
- /* ===== FOOTER ===== */
677
- .footer {
678
- margin-top: auto;
679
- background: linear-gradient(180deg, rgba(45, 55, 72, 0.02) 0%, rgba(45, 55, 72, 0.05) 100%);
680
- border-top: 1px solid var(--color-border);
681
- }
682
-
683
- .footer-container {
684
- max-width: 1400px;
685
- margin: 0 auto;
686
- padding: 2rem;
687
- }
688
-
689
- .footer-content {
690
- text-align: center;
691
- }
692
-
693
- .footer-text {
694
- margin: 0 0 0.5rem;
695
- color: var(--color-text-light);
696
- font-size: 0.875rem;
697
- line-height: 1.6;
698
- }
699
-
700
- .footer-license {
701
- margin: 0;
702
- color: var(--color-text-muted);
703
- font-size: 0.8rem;
704
- font-weight: 500;
705
- }
706
-
707
- /* ===== FULLSCREEN MODAL ===== */
708
- .fullscreen-modal {
709
- position: fixed;
710
- top: 0;
711
- left: 0;
712
- right: 0;
713
- bottom: 0;
714
- background: rgba(0, 0, 0, 0.9);
715
- z-index: 2000;
716
- display: flex;
717
- align-items: center;
718
- justify-content: center;
719
- backdrop-filter: blur(10px);
720
- animation: mystery-fade-in 0.3s ease-out;
721
- }
722
-
723
- .fullscreen-content {
724
- position: relative;
725
- max-width: 95vw;
726
- max-height: 95vh;
727
- display: flex;
728
- align-items: center;
729
- justify-content: center;
730
- }
731
-
732
- .fullscreen-image {
733
- max-width: 100%;
734
- max-height: 100%;
735
- object-fit: contain;
736
- border-radius: 0.5rem;
737
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
738
- }
739
-
740
- .close-button {
741
- position: absolute;
742
- top: -3rem;
743
- right: -1rem;
744
- background: rgba(255, 255, 255, 0.1);
745
- border: 1px solid rgba(255, 255, 255, 0.3);
746
- color: rgba(255, 255, 255, 0.9);
747
- border-radius: 50%;
748
- width: 3rem;
749
- height: 3rem;
750
- display: flex;
751
- align-items: center;
752
- justify-content: center;
753
- font-size: 1.5rem;
754
- cursor: pointer;
755
- transition: var(--transition-fast);
756
- backdrop-filter: blur(10px);
757
- }
758
-
759
- .close-button:hover {
760
- background: rgba(255, 255, 255, 0.2);
761
- border-color: rgba(255, 255, 255, 0.5);
762
- transform: scale(1.1);
763
- }
764
-
765
- /* ===== MOBILE OVERLAY ===== */
766
- .mobile-overlay {
767
- position: fixed;
768
- top: 0;
769
- left: 0;
770
- right: 0;
771
- bottom: 0;
772
- background: rgba(0, 0, 0, 0.5);
773
- z-index: 50;
774
- opacity: 0;
775
- visibility: hidden;
776
- transition: var(--transition-fast);
777
- backdrop-filter: blur(5px);
778
- }
779
-
780
- .mobile-overlay.mobile-overlay-visible {
781
- opacity: 1;
782
- visibility: visible;
783
- }
784
-
785
- /* ===== LOADING STATE ===== */
786
- .loading {
787
- display: flex;
788
- flex-direction: column;
789
- align-items: center;
790
- justify-content: center;
791
- min-height: 100vh;
792
- gap: 1.5rem;
793
- color: var(--color-text-light);
794
- font-size: 1.125rem;
795
- animation: mystery-fade-in 0.6s ease-out;
796
- }
797
-
798
- .spinner {
799
- width: 3rem;
800
- height: 3rem;
801
- border: 3px solid rgba(102, 126, 234, 0.1);
802
- border-top: 3px solid var(--color-accent);
803
- border-radius: 50%;
804
- animation: spin 1s linear infinite;
805
- }
806
-
807
- @keyframes spin {
808
- 0% {
809
- transform: rotate(0deg);
810
- }
811
-
812
- 100% {
813
- transform: rotate(360deg);
814
- }
815
- }
816
-
817
- /* ===== RESPONSIVE DESIGN ===== */
818
- @media (min-width: 1024px) {
819
- .sidebar {
820
- transform: translateX(0);
821
- position: fixed;
822
- }
823
-
824
- .main {
825
- margin-left: var(--sidebar-width);
826
- }
827
-
828
- .menu-toggle {
829
- display: none;
830
- }
831
- }
832
-
833
- @media (max-width: 1023px) {
834
- .sidebar {
835
- width: 280px;
836
- }
837
-
838
- .header-container {
839
- padding: 0 1rem;
840
- }
841
-
842
- .brand {
843
- margin-left: 0;
844
- }
845
-
846
- .brand-title {
847
- font-size: 2rem;
848
- }
849
-
850
- .brand-tagline {
851
- font-size: 0.875rem;
852
- }
853
-
854
- .header-actions {
855
- gap: 1rem;
856
- }
857
-
858
- .header-link {
859
- display: none;
860
- }
861
-
862
- .menu-toggle {
863
- display: flex;
864
- }
865
-
866
- .main-content {
867
- padding: 2rem 1rem;
868
- }
869
-
870
- .section-title {
871
- font-size: 2rem;
872
- }
873
-
874
- .markdown-content h1 {
875
- font-size: 1.875rem;
876
- }
877
-
878
- .markdown-content h2 {
879
- font-size: 1.5rem;
880
- }
881
-
882
- .markdown-content h3 {
883
- font-size: 1.25rem;
884
- }
885
-
886
- .nav-suggestions {
887
- flex-direction: column;
888
- }
889
- }
890
-
891
- @media (max-width: 768px) {
892
- :root {
893
- --header-height: 120px;
894
- }
895
-
896
- .header-container {
897
- flex-direction: column;
898
- gap: 1rem;
899
- padding: 1rem;
900
- align-items: center;
901
- text-align: center;
902
- }
903
-
904
- .brand-title {
905
- font-size: 1.75rem;
906
- }
907
-
908
- .brand-tagline {
909
- font-size: 0.8rem;
910
- }
911
-
912
- .header-actions {
913
- justify-content: center;
914
- }
915
-
916
- .version-badge {
917
- font-size: 0.75rem;
918
- padding: 0.4rem 0.8rem;
919
- }
920
-
921
- .menu-toggle {
922
- position: absolute;
923
- top: 1rem;
924
- right: 1rem;
925
- }
926
-
927
- .main-content {
928
- padding: 1.5rem 1rem;
929
- }
930
-
931
- .section-header {
932
- margin-bottom: 2rem;
933
- padding-bottom: 1.5rem;
934
- }
935
-
936
- .section-title {
937
- font-size: 1.75rem;
938
- }
939
-
940
- .section-subtitle {
941
- font-size: 1rem;
942
- }
943
-
944
- .markdown-content pre {
945
- margin: 1rem -1rem;
946
- border-radius: 0;
947
- border-left: none;
948
- border-right: none;
949
- }
950
-
951
- .markdown-content table {
952
- font-size: 0.875rem;
953
- }
954
-
955
- .markdown-content th,
956
- .markdown-content td {
957
- padding: 0.5rem 0.75rem;
958
- }
959
-
960
- .close-button {
961
- top: -2rem;
962
- right: 0;
963
- width: 2.5rem;
964
- height: 2.5rem;
965
- font-size: 1.25rem;
966
- }
967
- }
968
-
969
- @media (max-width: 480px) {
970
- .sidebar {
971
- width: 100vw;
972
- }
973
-
974
- .sidebar-content {
975
- padding: 1.5rem 0;
976
- }
977
-
978
- .sidebar-header {
979
- padding: 0 1.5rem 1.5rem;
980
- margin-bottom: 1.5rem;
981
- }
982
-
983
- .nav-menu {
984
- padding: 0 0.75rem;
985
- }
986
-
987
- .nav-item {
988
- padding: 0.875rem;
989
- }
990
-
991
- .main-content {
992
- padding: 1rem 0.75rem;
993
- }
994
-
995
- .section-title {
996
- font-size: 1.5rem;
997
- }
998
-
999
- .markdown-content h1 {
1000
- font-size: 1.5rem;
1001
- }
1002
-
1003
- .markdown-content h2 {
1004
- font-size: 1.25rem;
1005
- }
1006
-
1007
- .markdown-content h3 {
1008
- font-size: 1.125rem;
1009
- }
1010
-
1011
- .nav-suggestion {
1012
- padding: 1rem;
1013
- }
1014
-
1015
- .footer-container {
1016
- padding: 1.5rem 0.75rem;
1017
- }
1018
- }
1019
-
1020
- /* ===== ACCESSIBILITY ===== */
1021
- @media (prefers-reduced-motion: reduce) {
1022
- * {
1023
- animation-duration: 0.01ms !important;
1024
- animation-iteration-count: 1 !important;
1025
- transition-duration: 0.01ms !important;
1026
- }
1027
-
1028
- .header {
1029
- animation: none;
1030
- }
1031
- }
1032
-
1033
- @media (prefers-color-scheme: dark) {
1034
- /* Dark mode support could be added here */
1035
- }
1036
-
1037
- /* ===== PRINT STYLES ===== */
1038
- @media print {
1039
-
1040
- .header,
1041
- .sidebar,
1042
- .footer,
1043
- .nav-suggestions,
1044
- .mobile-overlay,
1045
- .fullscreen-modal {
1046
- display: none !important;
1047
- }
1048
-
1049
- .main {
1050
- margin-left: 0 !important;
1051
- }
1052
-
1053
- .main-content {
1054
- max-width: none !important;
1055
- padding: 0 !important;
1056
- }
1057
-
1058
- .markdown-content {
1059
- color: #000 !important;
1060
- }
1061
-
1062
- .markdown-content a {
1063
- color: #000 !important;
1064
- text-decoration: underline !important;
1065
- }
1066
-
1067
- .markdown-content pre {
1068
- border: 1px solid #ccc !important;
1069
- background: #f9f9f9 !important;
1070
- }
1071
- }
1072
-
1073
- /* Code Example Modal Styles */
1074
- .code-example-modal {
1075
- position: fixed;
1076
- top: 0;
1077
- left: 0;
1078
- right: 0;
1079
- bottom: 0;
1080
- background: rgba(0, 0, 0, 0.8);
1081
- z-index: 1000;
1082
- display: flex;
1083
- align-items: center;
1084
- justify-content: center;
1085
- padding: 2rem;
1086
- animation: modalFadeIn 0.3s ease-out;
1087
- }
1088
-
1089
- .code-example-content {
1090
- background: var(--color-surface);
1091
- border-radius: 12px;
1092
- max-width: 90vw;
1093
- max-height: 90vh;
1094
- overflow: hidden;
1095
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
1096
- display: flex;
1097
- flex-direction: column;
1098
- }
1099
-
1100
- .code-example-header {
1101
- display: flex;
1102
- justify-content: space-between;
1103
- align-items: center;
1104
- padding: 1.5rem 2rem;
1105
- background: var(--color-background);
1106
- border-bottom: 1px solid var(--color-border);
1107
- }
1108
-
1109
- .code-example-header h3 {
1110
- margin: 0;
1111
- font-size: 1.125rem;
1112
- font-weight: 600;
1113
- color: var(--color-text);
1114
- font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', monospace;
1115
- }
1116
-
1117
- .code-example-header button {
1118
- background: none;
1119
- border: none;
1120
- font-size: 1.5rem;
1121
- color: var(--color-text-light);
1122
- cursor: pointer;
1123
- padding: 0.25rem;
1124
- border-radius: 4px;
1125
- transition: var(--transition-fast);
1126
- }
1127
-
1128
- .code-example-header button:hover {
1129
- background: var(--color-border);
1130
- color: var(--color-text);
1131
- }
1132
-
1133
- .code-example-modal pre {
1134
- margin: 0;
1135
- padding: 2rem;
1136
- overflow: auto;
1137
- max-height: calc(90vh - 120px);
1138
- background: #fafafa;
1139
- font-size: 0.875rem;
1140
- line-height: 1.6;
1141
- }
1142
-
1143
- .code-example-modal pre code {
1144
- background: none;
1145
- padding: 0;
1146
- border-radius: 0;
1147
- font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', monospace;
1148
- }
1149
-
1150
- @keyframes modalFadeIn {
1151
- from {
1152
- opacity: 0;
1153
- transform: scale(0.95);
1154
- }
1155
-
1156
- to {
1157
- opacity: 1;
1158
- transform: scale(1);
1159
- }
1160
- }
1161
-
1162
- /* Code Example Link Styling */
1163
- .code-example-link {
1164
- background: none !important;
1165
- border: none !important;
1166
- color: var(--color-accent) !important;
1167
- text-decoration: underline !important;
1168
- cursor: pointer !important;
1169
- padding: 0 !important;
1170
- font: inherit !important;
1171
- font-weight: 500 !important;
1172
- transition: var(--transition-fast) !important;
1173
- }
1174
-
1175
- .code-example-link:hover {
1176
- color: var(--color-accent-light) !important;
1177
- text-decoration: none !important;
1178
- }