@knowcode/doc-builder 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,1462 @@
1
+ /*
2
+ * Notion-Inspired Design System
3
+ * Based on notion-style-guide.json
4
+ */
5
+
6
+ :root {
7
+ /* Colors - Primary */
8
+ --color-primary: #000000;
9
+ --color-primary-hover: #333333;
10
+ --color-primary-pressed: #555555;
11
+
12
+ /* Colors - Secondary */
13
+ --color-secondary: #37352F;
14
+ --color-secondary-hover: #5A5752;
15
+ --color-secondary-pressed: #787774;
16
+
17
+ /* Colors - Backgrounds */
18
+ --color-bg-default: #FFFFFF;
19
+ --color-bg-secondary: #F7F6F3;
20
+ --color-bg-tertiary: #EDEBE9;
21
+ --color-bg-hover: #E9E9E7;
22
+ --color-bg-card: #FFFFFF;
23
+ --color-bg-overlay: rgba(15, 15, 15, 0.6);
24
+
25
+ /* Colors - Text */
26
+ --color-text-primary: #37352F;
27
+ --color-text-secondary: #787774;
28
+ --color-text-tertiary: #9B9A97;
29
+ --color-text-inverse: #FFFFFF;
30
+ --color-text-link: #0073E6;
31
+ --color-text-link-hover: #0058CC;
32
+
33
+ /* Colors - Accent */
34
+ --color-accent-red: #E03E3E;
35
+ --color-accent-red-bg: #FFE2DD;
36
+ --color-accent-blue: #0073E6;
37
+ --color-accent-blue-bg: #D3E5FF;
38
+ --color-accent-green: #0F7B6C;
39
+ --color-accent-green-bg: #D1FAE5;
40
+ --color-accent-yellow: #DFAB01;
41
+ --color-accent-yellow-bg: #FBF3DB;
42
+
43
+ /* Status Colors for JavaScript */
44
+ --success: #10b981;
45
+ --danger: #ef4444;
46
+
47
+ /* Colors - UI */
48
+ --color-border-default: #E3E2E0;
49
+ --color-border-hover: #D3D1CE;
50
+ --color-border-focus: #2383E2;
51
+ --color-divider: #E9E9E7;
52
+ --color-shadow: rgba(15, 15, 15, 0.1);
53
+
54
+ /* Typography */
55
+ --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
56
+ --font-mono: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;
57
+
58
+ /* Font Sizes */
59
+ --text-xs: 11px;
60
+ --text-sm: 14px;
61
+ --text-base: 16px;
62
+ --text-lg: 18px;
63
+ --text-xl: 20px;
64
+ --text-2xl: 24px;
65
+ --text-3xl: 30px;
66
+ --text-4xl: 36px;
67
+ --text-5xl: 48px;
68
+
69
+ /* Font Weights */
70
+ --font-light: 300;
71
+ --font-regular: 400;
72
+ --font-medium: 500;
73
+ --font-semibold: 600;
74
+ --font-bold: 700;
75
+
76
+ /* Line Heights */
77
+ --leading-tight: 1.2;
78
+ --leading-snug: 1.3;
79
+ --leading-normal: 1.5;
80
+ --leading-relaxed: 1.6;
81
+ --leading-loose: 1.8;
82
+
83
+ /* Spacing */
84
+ --space-0: 0;
85
+ --space-px: 1px;
86
+ --space-0-5: 2px;
87
+ --space-1: 4px;
88
+ --space-1-5: 6px;
89
+ --space-2: 8px;
90
+ --space-2-5: 10px;
91
+ --space-3: 12px;
92
+ --space-3-5: 14px;
93
+ --space-4: 16px;
94
+ --space-5: 20px;
95
+ --space-6: 24px;
96
+ --space-8: 32px;
97
+ --space-10: 40px;
98
+ --space-12: 48px;
99
+ --space-16: 64px;
100
+ --space-20: 80px;
101
+
102
+ /* Border Radius */
103
+ --radius-none: 0;
104
+ --radius-sm: 3px;
105
+ --radius-md: 6px;
106
+ --radius-lg: 8px;
107
+ --radius-xl: 12px;
108
+ --radius-2xl: 16px;
109
+ --radius-full: 9999px;
110
+
111
+ /* Shadows */
112
+ --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
113
+ --shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
114
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
115
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
116
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
117
+
118
+ /* Animation */
119
+ --duration-fast: 150ms;
120
+ --duration-normal: 250ms;
121
+ --duration-slow: 350ms;
122
+ --easing-out: cubic-bezier(0, 0, 0.2, 1);
123
+ --easing-in-out: cubic-bezier(0.4, 0, 0.2, 1);
124
+
125
+ /* Layout */
126
+ --container-padding-mobile: 20px;
127
+ --container-padding-desktop: 40px;
128
+ --header-height: 64px;
129
+ --breadcrumb-height: 40px;
130
+ --sidebar-width: 280px;
131
+ }
132
+
133
+ /* Reset & Base Styles */
134
+ * {
135
+ box-sizing: border-box;
136
+ }
137
+
138
+ body {
139
+ margin: 0;
140
+ font-family: var(--font-sans);
141
+ font-size: var(--text-base);
142
+ line-height: var(--leading-normal);
143
+ color: var(--color-text-primary);
144
+ background-color: var(--color-bg-default);
145
+ -webkit-font-smoothing: antialiased;
146
+ -moz-osx-font-smoothing: grayscale;
147
+ }
148
+
149
+ /* Typography */
150
+ h1, h2, h3, h4, h5, h6 {
151
+ margin: 0 0 var(--space-4);
152
+ font-weight: var(--font-semibold);
153
+ line-height: var(--leading-tight);
154
+ color: var(--color-text-primary);
155
+ }
156
+
157
+ h1 {
158
+ font-size: var(--text-4xl);
159
+ font-weight: var(--font-bold);
160
+ margin-bottom: var(--space-6);
161
+ }
162
+
163
+ h2 {
164
+ font-size: var(--text-2xl);
165
+ margin-top: var(--space-10);
166
+ margin-bottom: var(--space-5);
167
+ }
168
+
169
+ h3 {
170
+ font-size: var(--text-xl);
171
+ margin-top: var(--space-8);
172
+ margin-bottom: var(--space-4);
173
+ }
174
+
175
+ h4 {
176
+ font-size: var(--text-lg);
177
+ margin-top: var(--space-6);
178
+ }
179
+
180
+ p {
181
+ margin: 0 0 var(--space-4);
182
+ color: var(--color-text-primary);
183
+ }
184
+
185
+ a {
186
+ color: var(--color-text-link);
187
+ text-decoration: none;
188
+ transition: color var(--duration-fast) var(--easing-out);
189
+ }
190
+
191
+ a:hover {
192
+ color: var(--color-text-link-hover);
193
+ text-decoration: underline;
194
+ }
195
+
196
+ code {
197
+ font-family: var(--font-mono);
198
+ font-size: 0.875em;
199
+ background-color: var(--color-bg-tertiary);
200
+ padding: var(--space-0-5) var(--space-1);
201
+ border-radius: var(--radius-sm);
202
+ }
203
+
204
+ pre {
205
+ background-color: var(--color-bg-secondary);
206
+ border: 1px solid var(--color-border-default);
207
+ border-radius: var(--radius-md);
208
+ padding: var(--space-4);
209
+ overflow-x: auto;
210
+ margin: 0 0 var(--space-4);
211
+ }
212
+
213
+ pre code {
214
+ background: none;
215
+ padding: 0;
216
+ font-size: var(--text-sm);
217
+ }
218
+
219
+ /* Layout Components */
220
+ .header {
221
+ position: fixed;
222
+ top: 0;
223
+ left: 0;
224
+ right: 0;
225
+ height: var(--header-height);
226
+ background: var(--color-bg-default);
227
+ border-bottom: 1px solid var(--color-border-default);
228
+ z-index: 1000;
229
+ box-shadow: var(--shadow-xs);
230
+ }
231
+
232
+ .header-content {
233
+ display: flex;
234
+ align-items: center;
235
+ justify-content: space-between;
236
+ height: 100%;
237
+ padding: 0 var(--space-6);
238
+ max-width: 1400px;
239
+ margin: 0 auto;
240
+ }
241
+
242
+ .logo {
243
+ font-size: var(--text-lg);
244
+ font-weight: var(--font-semibold);
245
+ color: var(--color-text-primary);
246
+ text-decoration: none;
247
+ display: flex;
248
+ align-items: center;
249
+ gap: var(--space-2);
250
+ }
251
+
252
+ .logo:hover {
253
+ color: var(--color-text-primary);
254
+ text-decoration: none;
255
+ }
256
+
257
+ .header-actions {
258
+ display: flex;
259
+ align-items: center;
260
+ gap: var(--space-4);
261
+ }
262
+
263
+ .deployment-info {
264
+ display: flex;
265
+ align-items: center;
266
+ }
267
+
268
+ .deployment-date {
269
+ font-size: var(--text-xs);
270
+ color: var(--color-text-tertiary);
271
+ opacity: 0.5;
272
+ font-weight: var(--font-regular);
273
+ white-space: nowrap;
274
+ user-select: none;
275
+ transition: opacity var(--duration-fast);
276
+ }
277
+
278
+ .deployment-date:hover {
279
+ opacity: 0.8;
280
+ }
281
+
282
+ /* Hide deployment info on mobile to save space */
283
+ @media (max-width: 768px) {
284
+ .deployment-info {
285
+ display: none;
286
+ }
287
+ }
288
+
289
+ .logout-btn {
290
+ background: none;
291
+ border: none;
292
+ font-size: var(--text-lg);
293
+ cursor: pointer;
294
+ color: var(--color-text-primary);
295
+ padding: var(--space-2);
296
+ border-radius: var(--radius-md);
297
+ transition: all var(--duration-fast);
298
+ text-decoration: none;
299
+ display: flex;
300
+ align-items: center;
301
+ justify-content: center;
302
+ opacity: 0.7;
303
+ }
304
+
305
+ .logout-btn:hover {
306
+ background: var(--color-bg-tertiary);
307
+ opacity: 1;
308
+ color: var(--color-accent-red);
309
+ transform: translateY(-1px);
310
+ }
311
+
312
+ /* Sidebar */
313
+ .sidebar {
314
+ position: fixed;
315
+ left: 0;
316
+ top: calc(var(--header-height) + var(--breadcrumb-height));
317
+ bottom: 0;
318
+ width: var(--sidebar-width);
319
+ background: var(--color-bg-secondary);
320
+ border-right: 1px solid var(--color-border-default);
321
+ overflow: hidden;
322
+ transition: transform var(--duration-normal), top var(--duration-normal);
323
+ min-width: 200px;
324
+ max-width: 500px;
325
+ user-select: none;
326
+ display: flex;
327
+ flex-direction: column;
328
+ z-index: 100;
329
+ }
330
+
331
+ /* Adjust sidebar when banner is visible */
332
+ .sidebar.banner-visible {
333
+ top: calc(var(--header-height) + var(--breadcrumb-height) + 3.5rem);
334
+ }
335
+
336
+ .sidebar-header {
337
+ padding: var(--space-4);
338
+ border-bottom: 1px solid var(--color-border-default);
339
+ }
340
+
341
+ .filter-box {
342
+ position: relative;
343
+ }
344
+
345
+ .filter-input {
346
+ width: 100%;
347
+ padding: var(--space-2) var(--space-3);
348
+ padding-left: var(--space-8);
349
+ font-size: var(--text-sm);
350
+ border: 1px solid var(--color-border-default);
351
+ border-radius: var(--radius-md);
352
+ background: var(--color-bg-default);
353
+ transition: all var(--duration-fast) var(--easing-out);
354
+ outline: none;
355
+ }
356
+
357
+ .filter-input:hover {
358
+ border-color: var(--color-border-hover);
359
+ }
360
+
361
+ .filter-input:focus {
362
+ border-color: var(--color-border-focus);
363
+ box-shadow: 0 0 0 3px rgba(35, 131, 226, 0.15);
364
+ }
365
+
366
+ .filter-icon {
367
+ position: absolute;
368
+ left: var(--space-3);
369
+ top: 50%;
370
+ transform: translateY(-50%);
371
+ color: var(--color-text-tertiary);
372
+ font-size: var(--text-sm);
373
+ }
374
+
375
+ /* Navigation */
376
+ .navigation {
377
+ padding: var(--space-2);
378
+ overflow-y: auto;
379
+ overflow-x: visible;
380
+ flex: 1;
381
+ position: relative;
382
+
383
+ /* Scrollbar styling */
384
+ scrollbar-width: thin;
385
+ scrollbar-color: var(--color-border-default) transparent;
386
+ }
387
+
388
+ .navigation::-webkit-scrollbar {
389
+ width: 6px;
390
+ }
391
+
392
+ .navigation::-webkit-scrollbar-track {
393
+ background: transparent;
394
+ }
395
+
396
+ .navigation::-webkit-scrollbar-thumb {
397
+ background: var(--color-border-default);
398
+ border-radius: 3px;
399
+ }
400
+
401
+ .navigation::-webkit-scrollbar-thumb:hover {
402
+ background: var(--color-text-tertiary);
403
+ }
404
+
405
+ .nav-section {
406
+ margin-bottom: var(--space-0-5);
407
+ }
408
+
409
+ .nav-section[data-level="0"] {
410
+ margin-left: 0;
411
+ }
412
+
413
+ .nav-section[data-level="1"] {
414
+ margin-left: var(--space-4);
415
+ margin-bottom: var(--space-0-5);
416
+ }
417
+
418
+ .nav-section[data-level="2"] {
419
+ margin-left: var(--space-8);
420
+ margin-bottom: var(--space-0-5);
421
+ }
422
+
423
+ .nav-title {
424
+ display: flex;
425
+ align-items: center;
426
+ padding: var(--space-1-5) var(--space-3);
427
+ font-size: var(--text-sm);
428
+ font-weight: var(--font-medium);
429
+ color: var(--color-text-secondary);
430
+ cursor: pointer;
431
+ border-radius: var(--radius-md);
432
+ transition: all var(--duration-fast) var(--easing-out);
433
+ user-select: none;
434
+ }
435
+
436
+ /* Indent nav titles based on their level */
437
+ .nav-section[data-level="1"] .nav-title {
438
+ padding-left: calc(var(--space-3) + var(--space-4));
439
+ }
440
+
441
+ .nav-section[data-level="2"] .nav-title {
442
+ padding-left: calc(var(--space-3) + var(--space-8));
443
+ }
444
+
445
+ .nav-title:hover {
446
+ background: var(--color-bg-hover);
447
+ color: var(--color-text-primary);
448
+ }
449
+
450
+ .nav-title i {
451
+ margin-right: var(--space-2);
452
+ font-size: var(--text-sm);
453
+ }
454
+
455
+ .collapse-icon {
456
+ margin-right: var(--space-1) !important;
457
+ transition: transform var(--duration-fast) var(--easing-out);
458
+ }
459
+
460
+ .nav-title.expanded .collapse-icon {
461
+ transform: rotate(90deg);
462
+ }
463
+
464
+ .nav-content {
465
+ overflow: hidden;
466
+ transition: all var(--duration-normal) var(--easing-out);
467
+ }
468
+
469
+ .nav-content.collapsed {
470
+ max-height: 0;
471
+ opacity: 0;
472
+ }
473
+
474
+ .nav-item {
475
+ display: flex;
476
+ align-items: center;
477
+ padding: var(--space-1-5) var(--space-3);
478
+ font-size: var(--text-sm);
479
+ color: var(--color-text-primary);
480
+ text-decoration: none;
481
+ border-radius: var(--radius-md);
482
+ transition: all var(--duration-fast) var(--easing-out);
483
+ margin-bottom: 0;
484
+ gap: var(--space-2);
485
+ }
486
+
487
+ /* Indent nav items based on their parent section level */
488
+ .nav-section[data-level="0"] .nav-item {
489
+ padding-left: calc(var(--space-3) + var(--space-6));
490
+ }
491
+
492
+ .nav-section[data-level="1"] .nav-item {
493
+ padding-left: calc(var(--space-3) + var(--space-10));
494
+ }
495
+
496
+ .nav-section[data-level="2"] .nav-item {
497
+ padding-left: calc(var(--space-3) + var(--space-12));
498
+ }
499
+
500
+ .nav-item:hover {
501
+ background: var(--color-bg-hover);
502
+ color: var(--color-text-primary);
503
+ text-decoration: none;
504
+ }
505
+
506
+ .nav-item.active {
507
+ background: var(--color-bg-hover);
508
+ color: var(--color-text-primary);
509
+ font-weight: var(--font-medium);
510
+ }
511
+
512
+ .nav-item i {
513
+ margin-right: var(--space-2);
514
+ font-size: var(--text-sm);
515
+ color: var(--color-text-tertiary);
516
+ }
517
+
518
+ /* Main Content */
519
+ .main-wrapper {
520
+ display: flex;
521
+ padding-top: calc(var(--header-height) + var(--breadcrumb-height));
522
+ min-height: 100vh;
523
+ transition: padding-top var(--duration-normal);
524
+ }
525
+
526
+ /* Adjust layout when banner is visible */
527
+ .main-wrapper.banner-visible {
528
+ padding-top: calc(var(--header-height) + var(--breadcrumb-height) + 3.5rem);
529
+ }
530
+
531
+ .content {
532
+ flex: 1;
533
+ margin-left: var(--sidebar-width);
534
+ padding: var(--space-10) var(--space-8);
535
+ max-width: calc(65rem + var(--space-8) * 2);
536
+ transition: margin-left var(--duration-normal);
537
+ }
538
+
539
+ .content-inner {
540
+ max-width: 65rem;
541
+ }
542
+
543
+ /* Tables */
544
+ table {
545
+ width: 100%;
546
+ border-collapse: collapse;
547
+ margin: var(--space-4) 0;
548
+ font-size: var(--text-sm);
549
+ background: var(--color-bg-default);
550
+ border: 1px solid var(--color-border-default);
551
+ border-radius: var(--radius-lg);
552
+ overflow: hidden;
553
+ }
554
+
555
+ th {
556
+ text-align: left;
557
+ font-weight: var(--font-semibold);
558
+ padding: var(--space-3) var(--space-4);
559
+ background: var(--color-bg-secondary);
560
+ border-bottom: 1px solid var(--color-border-default);
561
+ color: var(--color-text-primary);
562
+ }
563
+
564
+ td {
565
+ padding: var(--space-3) var(--space-4);
566
+ border-bottom: 1px solid var(--color-border-default);
567
+ color: var(--color-text-primary);
568
+ }
569
+
570
+ tr:last-child td {
571
+ border-bottom: none;
572
+ }
573
+
574
+ tr:hover {
575
+ background: var(--color-bg-hover);
576
+ }
577
+
578
+ /* Buttons */
579
+ .btn {
580
+ display: inline-flex;
581
+ align-items: center;
582
+ justify-content: center;
583
+ gap: var(--space-2);
584
+ padding: var(--space-2) var(--space-4);
585
+ font-size: var(--text-sm);
586
+ font-weight: var(--font-medium);
587
+ line-height: var(--leading-tight);
588
+ border-radius: var(--radius-md);
589
+ border: 1px solid transparent;
590
+ cursor: pointer;
591
+ transition: all var(--duration-normal) var(--easing-out);
592
+ outline: none;
593
+ text-decoration: none;
594
+ }
595
+
596
+ .btn-primary {
597
+ background: var(--color-primary);
598
+ color: var(--color-text-inverse);
599
+ border-color: var(--color-primary);
600
+ }
601
+
602
+ .btn-primary:hover {
603
+ background: var(--color-primary-hover);
604
+ border-color: var(--color-primary-hover);
605
+ }
606
+
607
+ .btn-secondary {
608
+ background: var(--color-bg-default);
609
+ color: var(--color-text-primary);
610
+ border-color: var(--color-border-default);
611
+ }
612
+
613
+ .btn-secondary:hover {
614
+ background: var(--color-bg-secondary);
615
+ border-color: var(--color-border-hover);
616
+ }
617
+
618
+ .btn-ghost {
619
+ background: transparent;
620
+ color: var(--color-text-primary);
621
+ border-color: transparent;
622
+ }
623
+
624
+ .btn-ghost:hover {
625
+ background: var(--color-bg-secondary);
626
+ }
627
+
628
+ /* Cards */
629
+ .card {
630
+ background: var(--color-bg-card);
631
+ border: 1px solid var(--color-border-default);
632
+ border-radius: var(--radius-lg);
633
+ padding: var(--space-6);
634
+ margin-bottom: var(--space-4);
635
+ box-shadow: var(--shadow-sm);
636
+ transition: all var(--duration-normal) var(--easing-out);
637
+ }
638
+
639
+ .card:hover {
640
+ box-shadow: var(--shadow-md);
641
+ transform: translateY(-2px);
642
+ }
643
+
644
+ /* Badges */
645
+ .badge {
646
+ display: inline-flex;
647
+ align-items: center;
648
+ padding: var(--space-0-5) var(--space-2);
649
+ font-size: var(--text-xs);
650
+ font-weight: var(--font-medium);
651
+ line-height: var(--leading-normal);
652
+ border-radius: var(--radius-sm);
653
+ background: var(--color-border-default);
654
+ color: var(--color-text-primary);
655
+ }
656
+
657
+ .badge-primary {
658
+ background: var(--color-primary);
659
+ color: var(--color-text-inverse);
660
+ }
661
+
662
+ .badge-success {
663
+ background: var(--color-accent-green-bg);
664
+ color: var(--color-accent-green);
665
+ }
666
+
667
+ .badge-warning {
668
+ background: var(--color-accent-yellow-bg);
669
+ color: var(--color-accent-yellow);
670
+ }
671
+
672
+ .badge-danger {
673
+ background: var(--color-accent-red-bg);
674
+ color: var(--color-accent-red);
675
+ }
676
+
677
+ /* Theme Toggle */
678
+ .theme-toggle {
679
+ padding: var(--space-2);
680
+ background: transparent;
681
+ border: none;
682
+ cursor: pointer;
683
+ color: var(--color-text-secondary);
684
+ font-size: var(--text-lg);
685
+ transition: color var(--duration-fast) var(--easing-out);
686
+ }
687
+
688
+ .theme-toggle:hover {
689
+ color: var(--color-text-primary);
690
+ }
691
+
692
+ /* Dark Theme */
693
+ [data-theme="dark"] {
694
+ --color-bg-default: #191919;
695
+ --color-bg-secondary: #202020;
696
+ --color-bg-tertiary: #2A2A2A;
697
+ --color-bg-hover: #2A2A2A;
698
+ --color-bg-card: #202020;
699
+
700
+ --color-text-primary: #E6E6E6;
701
+ --color-text-secondary: #ABABAB;
702
+ --color-text-tertiary: #787774;
703
+
704
+ --color-border-default: #373737;
705
+ --color-border-hover: #474747;
706
+ --color-divider: #2A2A2A;
707
+
708
+ --color-shadow: rgba(0, 0, 0, 0.3);
709
+ }
710
+
711
+ /* Dark theme Mermaid styles */
712
+ [data-theme="dark"] .mermaid-container {
713
+ background: var(--color-bg-default);
714
+ border-color: var(--color-border-default);
715
+ }
716
+
717
+ [data-theme="dark"] .mermaid-title {
718
+ background: var(--color-bg-secondary);
719
+ border-color: var(--color-border-default);
720
+ color: var(--color-text-primary);
721
+ }
722
+
723
+ [data-theme="dark"] .mermaid-toolbar {
724
+ background: var(--color-bg-secondary);
725
+ border-color: var(--color-border-default);
726
+ }
727
+
728
+ [data-theme="dark"] .mermaid-btn {
729
+ background: var(--color-bg-default);
730
+ border-color: var(--color-border-default);
731
+ color: var(--color-text-secondary);
732
+ }
733
+
734
+ [data-theme="dark"] .mermaid-btn:hover {
735
+ background: var(--color-accent-blue);
736
+ color: var(--color-text-inverse);
737
+ border-color: var(--color-accent-blue);
738
+ }
739
+
740
+ [data-theme="dark"] .mermaid-fullscreen-wrapper {
741
+ background: var(--color-bg-default);
742
+ color: var(--color-text-primary);
743
+ }
744
+
745
+ /* Breadcrumbs */
746
+ .breadcrumbs {
747
+ display: flex;
748
+ align-items: center;
749
+ padding: 0.5rem var(--space-6);
750
+ background: var(--color-bg-secondary);
751
+ border-bottom: 1px solid var(--color-border-default);
752
+ font-size: var(--text-sm);
753
+ color: var(--color-text-secondary);
754
+ position: fixed;
755
+ top: var(--header-height);
756
+ left: 0;
757
+ right: 0;
758
+ height: var(--breadcrumb-height);
759
+ z-index: 900;
760
+ transition: background-color var(--duration-normal);
761
+ gap: var(--space-2);
762
+ }
763
+
764
+ .breadcrumb-item {
765
+ display: flex;
766
+ align-items: center;
767
+ gap: var(--space-1-5);
768
+ color: var(--color-text-tertiary);
769
+ text-decoration: none;
770
+ padding: var(--space-1) var(--space-2);
771
+ border-radius: var(--radius-sm);
772
+ transition: all var(--duration-fast);
773
+ white-space: nowrap;
774
+ }
775
+
776
+ .breadcrumb-item:hover:not(.current) {
777
+ background: var(--color-bg-hover);
778
+ color: var(--color-text-secondary);
779
+ }
780
+
781
+ .breadcrumb-item.current {
782
+ color: var(--color-text-primary);
783
+ font-weight: var(--font-medium);
784
+ cursor: default;
785
+ }
786
+
787
+ .breadcrumb-separator {
788
+ margin: 0 var(--space-1);
789
+ color: var(--color-text-tertiary);
790
+ font-size: var(--text-xs);
791
+ opacity: 0.6;
792
+ }
793
+
794
+ .breadcrumb-item i {
795
+ font-size: var(--text-xs);
796
+ opacity: 0.8;
797
+ }
798
+
799
+ .breadcrumb-item.current i {
800
+ opacity: 1;
801
+ }
802
+
803
+ /* Adjust breadcrumbs when banner is visible */
804
+ .breadcrumbs.banner-visible {
805
+ top: calc(var(--header-height) + 3.5rem);
806
+ }
807
+
808
+ /* Menu Toggle (Mobile) */
809
+ .menu-toggle {
810
+ display: none;
811
+ background: none;
812
+ border: none;
813
+ font-size: 1.5rem;
814
+ cursor: pointer;
815
+ color: var(--color-text-primary);
816
+ padding: var(--space-2);
817
+ }
818
+
819
+ /* Responsive Design */
820
+ @media (max-width: 1024px) {
821
+ .sidebar {
822
+ transform: translateX(-100%);
823
+ transition: transform var(--duration-normal) var(--easing-out);
824
+ }
825
+
826
+ .sidebar.open {
827
+ transform: translateX(0);
828
+ }
829
+
830
+ .main-wrapper {
831
+ margin-left: 0;
832
+ }
833
+
834
+ .content {
835
+ margin-left: 0;
836
+ padding: var(--space-6) var(--space-4);
837
+ }
838
+
839
+ .menu-toggle {
840
+ display: block;
841
+ }
842
+ }
843
+
844
+ @media (max-width: 768px) {
845
+ .header-content {
846
+ padding: 0 var(--space-4);
847
+ }
848
+
849
+ /* Adjust mobile layout when banner is visible */
850
+ .main-wrapper.banner-visible {
851
+ padding-top: calc(var(--header-height) + var(--breadcrumb-height) + 4rem);
852
+ }
853
+
854
+ .sidebar.banner-visible {
855
+ top: calc(var(--header-height) + var(--breadcrumb-height) + 4rem);
856
+ }
857
+ }
858
+
859
+ /* Mermaid Diagrams */
860
+ .mermaid {
861
+ background: var(--color-bg-secondary);
862
+ padding: var(--space-4);
863
+ border-radius: var(--radius-lg);
864
+ overflow-x: auto;
865
+ margin: var(--space-4) 0;
866
+ }
867
+
868
+ /* Mermaid Full Screen Viewer */
869
+ .mermaid-container {
870
+ position: relative;
871
+ margin: var(--space-6) 0;
872
+ border: 1px solid var(--color-border-default);
873
+ border-radius: var(--radius-lg);
874
+ overflow: hidden;
875
+ background: var(--color-bg-default);
876
+ }
877
+
878
+ .mermaid-title {
879
+ padding: var(--space-3) var(--space-4);
880
+ background: var(--color-bg-secondary);
881
+ border-bottom: 1px solid var(--color-border-default);
882
+ font-size: var(--text-base);
883
+ font-weight: var(--font-semibold);
884
+ color: var(--color-text-primary);
885
+ }
886
+
887
+ .mermaid-toolbar {
888
+ display: flex;
889
+ justify-content: space-between;
890
+ align-items: center;
891
+ padding: var(--space-3) var(--space-4);
892
+ background: var(--color-bg-secondary);
893
+ border-bottom: 1px solid var(--color-border-default);
894
+ font-size: var(--text-sm);
895
+ color: var(--color-text-secondary);
896
+ }
897
+
898
+ .mermaid-actions {
899
+ display: flex;
900
+ gap: var(--space-2);
901
+ }
902
+
903
+ .mermaid-btn {
904
+ display: flex;
905
+ align-items: center;
906
+ gap: var(--space-1-5);
907
+ padding: var(--space-1-5) var(--space-3);
908
+ border: 1px solid var(--color-border-default);
909
+ border-radius: var(--radius-md);
910
+ background: var(--color-bg-default);
911
+ color: var(--color-text-secondary);
912
+ text-decoration: none;
913
+ font-size: var(--text-sm);
914
+ cursor: pointer;
915
+ transition: all var(--duration-fast);
916
+ white-space: nowrap;
917
+ }
918
+
919
+ .mermaid-btn:hover {
920
+ background: var(--color-accent-blue);
921
+ color: var(--color-text-inverse);
922
+ border-color: var(--color-accent-blue);
923
+ transform: translateY(-1px);
924
+ box-shadow: var(--shadow-sm);
925
+ }
926
+
927
+ .mermaid-btn i {
928
+ font-size: var(--text-xs);
929
+ flex-shrink: 0;
930
+ }
931
+
932
+ .mermaid-wrapper {
933
+ padding: var(--space-6);
934
+ overflow: auto;
935
+ max-height: 600px;
936
+ }
937
+
938
+ /* Full Screen Modal */
939
+ .mermaid-fullscreen {
940
+ position: fixed;
941
+ top: 0;
942
+ left: 0;
943
+ width: 100vw;
944
+ height: 100vh;
945
+ background: rgba(0, 0, 0, 0.95);
946
+ display: none;
947
+ z-index: 10000;
948
+ backdrop-filter: blur(4px);
949
+ }
950
+
951
+ .mermaid-fullscreen.active {
952
+ display: flex;
953
+ flex-direction: column;
954
+ }
955
+
956
+ .mermaid-fullscreen-toolbar {
957
+ display: flex;
958
+ justify-content: space-between;
959
+ align-items: center;
960
+ padding: var(--space-4) var(--space-8);
961
+ background: rgba(255, 255, 255, 0.1);
962
+ backdrop-filter: blur(8px);
963
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
964
+ }
965
+
966
+ .mermaid-fullscreen-title {
967
+ color: white;
968
+ font-size: var(--text-lg);
969
+ font-weight: var(--font-semibold);
970
+ }
971
+
972
+ .mermaid-fullscreen-controls {
973
+ display: flex;
974
+ gap: var(--space-4);
975
+ align-items: center;
976
+ }
977
+
978
+ .mermaid-zoom-controls {
979
+ display: flex;
980
+ gap: var(--space-2);
981
+ align-items: center;
982
+ }
983
+
984
+ .mermaid-zoom-btn {
985
+ padding: var(--space-2);
986
+ border: 1px solid rgba(255, 255, 255, 0.3);
987
+ border-radius: var(--radius-md);
988
+ background: rgba(255, 255, 255, 0.1);
989
+ color: white;
990
+ cursor: pointer;
991
+ transition: all var(--duration-fast);
992
+ display: flex;
993
+ align-items: center;
994
+ justify-content: center;
995
+ width: var(--space-10);
996
+ height: var(--space-10);
997
+ }
998
+
999
+ .mermaid-zoom-btn:hover {
1000
+ background: rgba(255, 255, 255, 0.2);
1001
+ border-color: rgba(255, 255, 255, 0.5);
1002
+ }
1003
+
1004
+ .mermaid-zoom-level {
1005
+ color: white;
1006
+ font-size: var(--text-sm);
1007
+ min-width: 3rem;
1008
+ text-align: center;
1009
+ font-weight: var(--font-medium);
1010
+ }
1011
+
1012
+ .mermaid-close-btn {
1013
+ padding: var(--space-2) var(--space-4);
1014
+ border: 1px solid rgba(255, 255, 255, 0.3);
1015
+ border-radius: var(--radius-md);
1016
+ background: rgba(255, 255, 255, 0.1);
1017
+ color: white;
1018
+ cursor: pointer;
1019
+ transition: all var(--duration-fast);
1020
+ display: flex;
1021
+ align-items: center;
1022
+ gap: var(--space-2);
1023
+ font-size: var(--text-sm);
1024
+ }
1025
+
1026
+ .mermaid-close-btn:hover {
1027
+ background: rgba(255, 255, 255, 0.2);
1028
+ }
1029
+
1030
+ .mermaid-fullscreen-content {
1031
+ flex: 1;
1032
+ display: flex;
1033
+ align-items: center;
1034
+ justify-content: center;
1035
+ padding: var(--space-8);
1036
+ overflow: hidden;
1037
+ }
1038
+
1039
+ .mermaid-fullscreen-wrapper {
1040
+ background: white;
1041
+ border-radius: var(--radius-lg);
1042
+ padding: var(--space-8);
1043
+ width: calc(100vw - var(--space-8));
1044
+ height: calc(100vh - 6rem);
1045
+ overflow: auto;
1046
+ box-shadow: var(--shadow-xl);
1047
+ transform-origin: center center;
1048
+ transition: transform var(--duration-normal);
1049
+ display: flex;
1050
+ align-items: center;
1051
+ justify-content: center;
1052
+ }
1053
+
1054
+ .mermaid-fullscreen-diagram {
1055
+ display: flex;
1056
+ justify-content: center;
1057
+ align-items: center;
1058
+ width: 100%;
1059
+ height: 100%;
1060
+ min-height: 400px;
1061
+ position: relative;
1062
+ }
1063
+
1064
+ .mermaid-fullscreen-diagram .mermaid {
1065
+ width: 100% !important;
1066
+ height: 100% !important;
1067
+ display: flex !important;
1068
+ justify-content: center !important;
1069
+ align-items: center !important;
1070
+ background: transparent !important;
1071
+ border: none !important;
1072
+ margin: 0 !important;
1073
+ padding: 0 !important;
1074
+ }
1075
+
1076
+ .mermaid-fullscreen-diagram svg {
1077
+ max-width: 100% !important;
1078
+ max-height: 100% !important;
1079
+ width: auto !important;
1080
+ height: auto !important;
1081
+ display: block !important;
1082
+ margin: 0 auto !important;
1083
+ }
1084
+
1085
+ /* Zoom functionality */
1086
+ .mermaid-fullscreen-wrapper.zoomed {
1087
+ overflow: visible;
1088
+ }
1089
+
1090
+ /* Animation for opening fullscreen */
1091
+ @keyframes mermaidFadeIn {
1092
+ from {
1093
+ opacity: 0;
1094
+ transform: scale(0.95);
1095
+ }
1096
+ to {
1097
+ opacity: 1;
1098
+ transform: scale(1);
1099
+ }
1100
+ }
1101
+
1102
+ .mermaid-fullscreen.active .mermaid-fullscreen-wrapper {
1103
+ animation: mermaidFadeIn var(--duration-normal) ease-out;
1104
+ }
1105
+
1106
+ /* Responsive design for Mermaid */
1107
+ @media (max-width: 768px) {
1108
+ .mermaid-toolbar {
1109
+ flex-direction: column;
1110
+ gap: var(--space-2);
1111
+ align-items: flex-start;
1112
+ padding: var(--space-3);
1113
+ }
1114
+
1115
+ .mermaid-actions {
1116
+ width: 100%;
1117
+ justify-content: flex-end;
1118
+ flex-wrap: wrap;
1119
+ }
1120
+
1121
+ .mermaid-btn {
1122
+ font-size: var(--text-xs);
1123
+ padding: var(--space-1) var(--space-2);
1124
+ }
1125
+
1126
+ .mermaid-fullscreen-toolbar {
1127
+ padding: var(--space-3);
1128
+ flex-direction: column;
1129
+ gap: var(--space-2);
1130
+ }
1131
+
1132
+ .mermaid-fullscreen-controls {
1133
+ flex-direction: column;
1134
+ gap: var(--space-2);
1135
+ }
1136
+
1137
+ .mermaid-fullscreen-content {
1138
+ padding: var(--space-4);
1139
+ }
1140
+
1141
+ .mermaid-fullscreen-wrapper {
1142
+ width: calc(100vw - var(--space-4));
1143
+ height: calc(100vh - 8rem);
1144
+ padding: var(--space-4);
1145
+ }
1146
+ }
1147
+
1148
+ /* Preview Banner */
1149
+ .preview-banner {
1150
+ position: fixed;
1151
+ top: var(--header-height);
1152
+ left: 0;
1153
+ right: 0;
1154
+ background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
1155
+ color: white;
1156
+ z-index: 1000;
1157
+ box-shadow: var(--shadow-md);
1158
+ transition: transform var(--duration-normal), opacity var(--duration-normal);
1159
+ /* Default to hidden state to prevent flash */
1160
+ transform: translateY(-100%);
1161
+ opacity: 0;
1162
+ pointer-events: none;
1163
+ }
1164
+
1165
+ .preview-banner.visible {
1166
+ transform: translateY(0);
1167
+ opacity: 1;
1168
+ pointer-events: auto;
1169
+ }
1170
+
1171
+ .preview-banner.hidden {
1172
+ transform: translateY(-100%);
1173
+ opacity: 0;
1174
+ pointer-events: none;
1175
+ }
1176
+
1177
+ .banner-content {
1178
+ display: flex;
1179
+ align-items: center;
1180
+ justify-content: center;
1181
+ gap: var(--space-3);
1182
+ max-width: 1400px;
1183
+ margin: 0 auto;
1184
+ }
1185
+
1186
+ .banner-dismiss {
1187
+ padding: var(--space-1) var(--space-2);
1188
+ background: transparent;
1189
+ border: none;
1190
+ cursor: pointer;
1191
+ color: var(--color-accent-yellow);
1192
+ font-size: var(--text-base);
1193
+ transition: opacity var(--duration-fast) var(--easing-out);
1194
+ }
1195
+
1196
+ .banner-dismiss:hover {
1197
+ opacity: 0.7;
1198
+ }
1199
+
1200
+ /* Animations */
1201
+ @keyframes fadeIn {
1202
+ from {
1203
+ opacity: 0;
1204
+ transform: translateY(-10px);
1205
+ }
1206
+ to {
1207
+ opacity: 1;
1208
+ transform: translateY(0);
1209
+ }
1210
+ }
1211
+
1212
+ .fade-in {
1213
+ animation: fadeIn var(--duration-normal) var(--easing-out);
1214
+ }
1215
+
1216
+ /* Utility Classes */
1217
+ .text-center { text-align: center; }
1218
+ .text-right { text-align: right; }
1219
+ .text-muted { color: var(--color-text-secondary); }
1220
+ .text-small { font-size: var(--text-sm); }
1221
+ .text-large { font-size: var(--text-lg); }
1222
+ .font-mono { font-family: var(--font-mono); }
1223
+ .mt-0 { margin-top: 0; }
1224
+ .mb-0 { margin-bottom: 0; }
1225
+ .mt-4 { margin-top: var(--space-4); }
1226
+ .mb-4 { margin-bottom: var(--space-4); }
1227
+ .mt-8 { margin-top: var(--space-8); }
1228
+ .mb-8 { margin-bottom: var(--space-8); }
1229
+
1230
+ /* Table of Contents */
1231
+ .toc-container {
1232
+ background: var(--color-bg-secondary);
1233
+ border-radius: var(--radius-lg);
1234
+ padding: var(--space-6);
1235
+ margin: var(--space-6) 0;
1236
+ border: 1px solid var(--color-border-default);
1237
+ }
1238
+
1239
+ .toc-container h2 {
1240
+ font-size: var(--text-lg);
1241
+ font-weight: var(--font-semibold);
1242
+ color: var(--color-text-primary);
1243
+ margin-bottom: var(--space-4);
1244
+ padding-bottom: var(--space-2);
1245
+ border-bottom: 2px solid var(--color-divider);
1246
+ }
1247
+
1248
+ .toc-list {
1249
+ list-style: none;
1250
+ padding: 0;
1251
+ margin: 0;
1252
+ }
1253
+
1254
+ .toc-list ol,
1255
+ .toc-list ul {
1256
+ list-style: none;
1257
+ padding: 0;
1258
+ margin: 0;
1259
+ }
1260
+
1261
+ .toc-list li {
1262
+ position: relative;
1263
+ margin-bottom: 0;
1264
+ line-height: 1.4;
1265
+ }
1266
+
1267
+ .toc-list > li {
1268
+ margin-bottom: 0;
1269
+ }
1270
+
1271
+ .toc-list li::before {
1272
+ content: '';
1273
+ position: absolute;
1274
+ left: 0;
1275
+ top: 0.75em;
1276
+ width: 6px;
1277
+ height: 6px;
1278
+ background: var(--color-text-tertiary);
1279
+ border-radius: 50%;
1280
+ opacity: 0.5;
1281
+ }
1282
+
1283
+ .toc-list a {
1284
+ display: block;
1285
+ padding: 2px var(--space-2);
1286
+ padding-left: var(--space-4);
1287
+ color: var(--color-text-secondary);
1288
+ font-size: var(--text-sm);
1289
+ transition: all var(--duration-fast);
1290
+ border-radius: var(--radius-md);
1291
+ text-decoration: none;
1292
+ position: relative;
1293
+ }
1294
+
1295
+ .toc-list a:hover {
1296
+ color: var(--color-accent-blue);
1297
+ background: rgba(0, 115, 230, 0.05);
1298
+ transform: translateX(1px);
1299
+ }
1300
+
1301
+ /* Nested TOC items */
1302
+ .toc-list .toc-h2 {
1303
+ font-weight: var(--font-medium);
1304
+ }
1305
+
1306
+ .toc-list .toc-h3 {
1307
+ padding-left: calc(var(--space-4) + var(--space-6));
1308
+ font-size: var(--text-sm);
1309
+ color: var(--color-text-tertiary);
1310
+ }
1311
+
1312
+ .toc-list .toc-h3::before {
1313
+ left: var(--space-6);
1314
+ width: 4px;
1315
+ height: 4px;
1316
+ }
1317
+
1318
+ .toc-list .toc-h4 {
1319
+ padding-left: calc(var(--space-4) + var(--space-10));
1320
+ font-size: var(--text-xs);
1321
+ color: var(--color-text-tertiary);
1322
+ font-style: italic;
1323
+ }
1324
+
1325
+ .toc-list .toc-h4::before {
1326
+ left: var(--space-10);
1327
+ width: 3px;
1328
+ height: 3px;
1329
+ }
1330
+
1331
+ /* Active TOC item */
1332
+ .toc-list a.active {
1333
+ color: var(--color-accent-blue);
1334
+ background: var(--color-accent-blue-bg);
1335
+ font-weight: var(--font-medium);
1336
+ }
1337
+
1338
+ /* Number styling for ordered lists */
1339
+ .toc-list > ol {
1340
+ counter-reset: toc-counter;
1341
+ }
1342
+
1343
+ .toc-list ol > li {
1344
+ counter-increment: toc-counter;
1345
+ }
1346
+
1347
+ .toc-list ol > li::before {
1348
+ content: counter(toc-counter);
1349
+ position: absolute;
1350
+ left: 0;
1351
+ top: var(--space-1);
1352
+ width: 1.5rem;
1353
+ height: 1.5rem;
1354
+ background: var(--color-accent-blue);
1355
+ color: var(--color-text-inverse);
1356
+ border-radius: var(--radius-md);
1357
+ font-size: var(--text-xs);
1358
+ font-weight: var(--font-semibold);
1359
+ display: flex;
1360
+ align-items: center;
1361
+ justify-content: center;
1362
+ opacity: 1;
1363
+ }
1364
+
1365
+ .toc-list ol > li > a {
1366
+ padding-left: calc(var(--space-4) + var(--space-5));
1367
+ }
1368
+
1369
+ /* Dark mode adjustments */
1370
+ [data-theme="dark"] .toc-container {
1371
+ background: var(--color-bg-secondary);
1372
+ border-color: var(--color-border-default);
1373
+ }
1374
+
1375
+ [data-theme="dark"] .toc-container h2 {
1376
+ border-bottom-color: var(--color-divider);
1377
+ }
1378
+
1379
+ [data-theme="dark"] .toc-list a:hover {
1380
+ background: var(--color-bg-hover);
1381
+ }
1382
+
1383
+ /* Tooltip Styles */
1384
+ [data-tooltip] {
1385
+ position: relative;
1386
+ }
1387
+
1388
+ /* Tooltip content */
1389
+ [data-tooltip]::after {
1390
+ content: attr(data-tooltip);
1391
+ position: fixed; /* Use fixed positioning to escape overflow containers */
1392
+ left: var(--tooltip-left, 0);
1393
+ top: var(--tooltip-top, 0);
1394
+ transform: translateY(-50%);
1395
+ background: #333;
1396
+ color: white;
1397
+ padding: 8px 12px;
1398
+ border-radius: 4px;
1399
+ font-size: 14px;
1400
+ line-height: 1.4;
1401
+ white-space: normal;
1402
+ max-width: 300px;
1403
+ z-index: 999999;
1404
+ pointer-events: none;
1405
+ opacity: 0;
1406
+ visibility: hidden;
1407
+ transition: opacity 0.3s, visibility 0.3s;
1408
+ }
1409
+
1410
+ [data-tooltip]:hover::after {
1411
+ opacity: 1;
1412
+ visibility: visible;
1413
+ }
1414
+
1415
+ /* Ensure nav items have proper stacking context */
1416
+ .nav-item[data-tooltip],
1417
+ .nav-title[data-tooltip] {
1418
+ position: relative !important;
1419
+ z-index: 1;
1420
+ }
1421
+
1422
+ .nav-item[data-tooltip]:hover,
1423
+ .nav-title[data-tooltip]:hover {
1424
+ z-index: 100000; /* Very high z-index to ensure tooltip appears above everything */
1425
+ }
1426
+
1427
+ /* Tooltip for nav titles (folders) */
1428
+ .nav-title[data-tooltip]::after {
1429
+ max-width: 350px;
1430
+ font-weight: var(--font-regular);
1431
+ }
1432
+
1433
+ /* Ensure nav sections don't clip tooltips */
1434
+ .nav-section {
1435
+ position: relative;
1436
+ overflow: visible !important;
1437
+ }
1438
+
1439
+ /* Remove forced overflow as we're using fixed positioning */
1440
+
1441
+ /* Dark mode tooltip styles */
1442
+ [data-theme="dark"] [data-tooltip]::after {
1443
+ background: var(--color-bg-secondary);
1444
+ color: var(--color-text-primary);
1445
+ border-color: var(--color-border-default);
1446
+ box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.5);
1447
+ }
1448
+
1449
+ [data-theme="dark"] [data-tooltip]::before {
1450
+ border-right-color: var(--color-bg-secondary);
1451
+ }
1452
+
1453
+ /* Remove custom positioning variables - tooltips always go right */
1454
+
1455
+ /* Mobile adjustments */
1456
+ @media (max-width: 768px) {
1457
+ /* Disable tooltips on mobile to prevent overlap issues */
1458
+ [data-tooltip]::before,
1459
+ [data-tooltip]::after {
1460
+ display: none;
1461
+ }
1462
+ }