@knowcode/doc-builder 1.7.4 → 1.7.6

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 (71) hide show
  1. package/.claude/settings.local.json +6 -1
  2. package/CHANGELOG.md +50 -0
  3. package/README.md +47 -7
  4. package/RELEASE-NOTES-1.7.5.md +64 -0
  5. package/add-user-clive.sql +35 -0
  6. package/add-user-lindsay-fixed.sql +85 -0
  7. package/add-user-lindsay.sql +68 -0
  8. package/add-user-pmorgan.sql +35 -0
  9. package/add-user-robbie.sql +35 -0
  10. package/add-wru-users.sql +105 -0
  11. package/cli.js +223 -8
  12. package/grant-access.sql +15 -0
  13. package/html/README.html +14 -4
  14. package/html/auth.js +97 -0
  15. package/html/documentation-index.html +14 -4
  16. package/html/guides/authentication-default-change.html +302 -0
  17. package/html/guides/authentication-guide.html +32 -14
  18. package/html/guides/cache-control-anti-pattern.html +361 -0
  19. package/html/guides/claude-workflow-guide.html +14 -4
  20. package/html/guides/documentation-standards.html +14 -4
  21. package/html/guides/next-steps-walkthrough.html +638 -0
  22. package/html/guides/phosphor-icons-guide.html +14 -4
  23. package/html/guides/public-site-deployment.html +363 -0
  24. package/html/guides/search-engine-verification-guide.html +14 -4
  25. package/html/guides/seo-guide.html +14 -4
  26. package/html/guides/seo-optimization-guide.html +14 -4
  27. package/html/guides/supabase-auth-implementation-plan.html +543 -0
  28. package/html/guides/supabase-auth-integration-plan.html +671 -0
  29. package/html/guides/supabase-auth-setup-guide.html +498 -0
  30. package/html/guides/troubleshooting-guide.html +14 -4
  31. package/html/guides/vercel-deployment-auth-setup.html +337 -0
  32. package/html/guides/windows-setup-guide.html +14 -4
  33. package/html/index.html +14 -4
  34. package/html/launch/README.html +14 -4
  35. package/html/launch/bubble-plugin-specification.html +14 -4
  36. package/html/launch/go-to-market-strategy.html +14 -4
  37. package/html/launch/launch-announcements.html +14 -4
  38. package/html/login.html +102 -0
  39. package/html/logout.html +18 -0
  40. package/html/sitemap.xml +69 -21
  41. package/html/vercel-cli-setup-guide.html +14 -4
  42. package/html/vercel-first-time-setup-guide.html +14 -4
  43. package/lib/config.js +33 -29
  44. package/lib/core-builder.js +142 -88
  45. package/lib/supabase-auth.js +295 -0
  46. package/manage-users.sql +191 -0
  47. package/package.json +2 -1
  48. package/public-config.js +22 -0
  49. package/public-html/404.html +115 -0
  50. package/public-html/README.html +149 -0
  51. package/public-html/css/notion-style.css +2036 -0
  52. package/public-html/index.html +149 -0
  53. package/public-html/js/main.js +1485 -0
  54. package/quick-test-commands.md +40 -0
  55. package/recordings/Screenshot 2025-07-24 at 18.22.01.png +0 -0
  56. package/setup-database.sql +41 -0
  57. package/test-auth-config.js +17 -0
  58. package/test-docs/README.md +39 -0
  59. package/test-html/404.html +115 -0
  60. package/test-html/README.html +172 -0
  61. package/test-html/auth.js +97 -0
  62. package/test-html/css/notion-style.css +2036 -0
  63. package/test-html/index.html +172 -0
  64. package/test-html/js/auth.js +97 -0
  65. package/test-html/js/main.js +1485 -0
  66. package/test-html/login.html +102 -0
  67. package/test-html/logout.html +18 -0
  68. package/update-domain.sql +9 -0
  69. package/view-all-users.sql +40 -0
  70. package/wru-auth-config.js +17 -0
  71. /package/{assets → public-html}/js/auth.js +0 -0
@@ -0,0 +1,2036 @@
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: 40px;
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
+ margin-left: calc(-1 * var(--space-8));
162
+ margin-right: calc(-1 * var(--space-8));
163
+ padding: 0 var(--space-8);
164
+ }
165
+
166
+ h2 {
167
+ font-size: var(--text-2xl);
168
+ margin-top: var(--space-10);
169
+ margin-bottom: var(--space-5);
170
+ }
171
+
172
+ h3 {
173
+ font-size: var(--text-xl);
174
+ margin-top: var(--space-8);
175
+ margin-bottom: var(--space-4);
176
+ }
177
+
178
+ h4 {
179
+ font-size: var(--text-lg);
180
+ margin-top: var(--space-6);
181
+ }
182
+
183
+ p {
184
+ margin: 0 0 var(--space-4);
185
+ color: var(--color-text-primary);
186
+ }
187
+
188
+ a {
189
+ color: var(--color-text-link);
190
+ text-decoration: none;
191
+ transition: color var(--duration-fast) var(--easing-out);
192
+ }
193
+
194
+ a:hover {
195
+ color: var(--color-text-link-hover);
196
+ text-decoration: underline;
197
+ }
198
+
199
+ code {
200
+ font-family: var(--font-mono);
201
+ font-size: 0.875em;
202
+ background-color: var(--color-bg-tertiary);
203
+ padding: var(--space-0-5) var(--space-1);
204
+ border-radius: var(--radius-sm);
205
+ }
206
+
207
+ pre {
208
+ background-color: var(--color-bg-secondary);
209
+ border: 1px solid var(--color-border-default);
210
+ border-radius: var(--radius-md);
211
+ padding: var(--space-4);
212
+ overflow-x: auto;
213
+ margin: 0 0 var(--space-4);
214
+ }
215
+
216
+ pre code {
217
+ background: none;
218
+ padding: 0;
219
+ font-size: var(--text-sm);
220
+ }
221
+
222
+ /* Layout Components */
223
+ .header {
224
+ position: fixed;
225
+ top: 0;
226
+ left: 0;
227
+ right: 0;
228
+ height: var(--header-height);
229
+ background: var(--color-bg-default);
230
+ border-bottom: 1px solid var(--color-border-default);
231
+ z-index: 1000;
232
+ box-shadow: var(--shadow-xs);
233
+ }
234
+
235
+ .header-content {
236
+ display: flex;
237
+ align-items: center;
238
+ justify-content: space-between;
239
+ height: 100%;
240
+ padding: 0 var(--space-6);
241
+ max-width: 1400px;
242
+ margin: 0 auto;
243
+ }
244
+
245
+ .logo {
246
+ font-size: var(--text-lg);
247
+ font-weight: var(--font-semibold);
248
+ color: var(--color-text-primary);
249
+ text-decoration: none;
250
+ display: flex;
251
+ align-items: center;
252
+ gap: var(--space-2);
253
+ }
254
+
255
+ .logo:hover {
256
+ color: var(--color-text-primary);
257
+ text-decoration: none;
258
+ }
259
+
260
+ .header-actions {
261
+ display: flex;
262
+ align-items: center;
263
+ gap: var(--space-4);
264
+ }
265
+
266
+ .deployment-info {
267
+ display: flex;
268
+ align-items: center;
269
+ }
270
+
271
+ .deployment-date {
272
+ font-size: var(--text-xs);
273
+ color: var(--color-text-tertiary);
274
+ opacity: 0.5;
275
+ font-weight: var(--font-regular);
276
+ white-space: nowrap;
277
+ user-select: none;
278
+ transition: opacity var(--duration-fast);
279
+ }
280
+
281
+ .deployment-date:hover {
282
+ opacity: 0.8;
283
+ }
284
+
285
+ /* Hide deployment info on mobile to save space */
286
+ @media (max-width: 768px) {
287
+ .deployment-info {
288
+ display: none;
289
+ }
290
+ }
291
+
292
+ .logout-btn {
293
+ background: none;
294
+ border: none;
295
+ font-size: var(--text-lg);
296
+ cursor: pointer;
297
+ color: var(--color-text-primary);
298
+ padding: var(--space-2);
299
+ border-radius: var(--radius-md);
300
+ transition: all var(--duration-fast);
301
+ text-decoration: none;
302
+ display: flex;
303
+ align-items: center;
304
+ justify-content: center;
305
+ opacity: 0.7;
306
+ }
307
+
308
+ .logout-btn:hover {
309
+ background: var(--color-bg-tertiary);
310
+ opacity: 1;
311
+ color: var(--color-accent-red);
312
+ transform: translateY(-1px);
313
+ }
314
+
315
+ /* Sidebar */
316
+ .sidebar {
317
+ position: relative;
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: width var(--duration-normal), transform 0.3s ease, margin-left 0.3s ease;
323
+ min-width: 200px;
324
+ max-width: 500px;
325
+ user-select: none;
326
+ display: flex;
327
+ flex-direction: column;
328
+ z-index: 100;
329
+ flex-shrink: 0;
330
+ height: 100%;
331
+ }
332
+
333
+ /* Desktop sidebar closed state */
334
+ @media (min-width: 769px) {
335
+ .sidebar.closed {
336
+ transform: translateX(-100%);
337
+ margin-left: calc(var(--sidebar-width) * -1);
338
+ }
339
+ }
340
+
341
+ /* Banner adjustment no longer needed with relative positioning */
342
+
343
+
344
+ .sidebar-home-link {
345
+ display: inline-flex;
346
+ align-items: center;
347
+ gap: var(--space-2);
348
+ padding: var(--space-2) var(--space-3);
349
+ color: var(--color-text-secondary);
350
+ text-decoration: none;
351
+ border-radius: var(--radius-base);
352
+ font-size: 0.875rem;
353
+ font-weight: 500;
354
+ transition: all 0.2s;
355
+ }
356
+
357
+ .sidebar-home-link:hover {
358
+ background: var(--color-bg-secondary);
359
+ color: var(--color-text-primary);
360
+ }
361
+
362
+ .sidebar-home-link i {
363
+ font-size: 1rem;
364
+ }
365
+
366
+ .filter-box {
367
+ position: relative;
368
+ }
369
+
370
+ .filter-input {
371
+ width: 100%;
372
+ padding: var(--space-2) var(--space-3);
373
+ padding-left: var(--space-8);
374
+ font-size: var(--text-sm);
375
+ border: 1px solid var(--color-border-default);
376
+ border-radius: var(--radius-md);
377
+ background: var(--color-bg-default);
378
+ transition: all var(--duration-fast) var(--easing-out);
379
+ outline: none;
380
+ }
381
+
382
+ .filter-input:hover {
383
+ border-color: var(--color-border-hover);
384
+ }
385
+
386
+ .filter-input:focus {
387
+ border-color: var(--color-border-focus);
388
+ box-shadow: 0 0 0 3px rgba(35, 131, 226, 0.15);
389
+ }
390
+
391
+ .filter-icon {
392
+ position: absolute;
393
+ left: var(--space-3);
394
+ top: 50%;
395
+ transform: translateY(-50%);
396
+ color: var(--color-text-tertiary);
397
+ font-size: var(--text-sm);
398
+ }
399
+
400
+ /* Preview Banner */
401
+ .preview-banner {
402
+ background: var(--color-accent-yellow-bg);
403
+ border-bottom: 1px solid var(--color-accent-yellow);
404
+ color: var(--color-text-primary);
405
+ padding: var(--space-2) 0;
406
+ position: fixed;
407
+ top: var(--header-height);
408
+ left: 0;
409
+ right: 0;
410
+ z-index: 1000;
411
+ transition: transform var(--duration-normal);
412
+ }
413
+
414
+ .preview-banner.hidden {
415
+ transform: translateY(-100%);
416
+ }
417
+
418
+ .banner-content {
419
+ display: flex;
420
+ align-items: center;
421
+ justify-content: center;
422
+ gap: var(--space-2);
423
+ max-width: 1400px;
424
+ margin: 0 auto;
425
+ padding: 0 var(--space-4);
426
+ }
427
+
428
+ .banner-icon {
429
+ color: var(--color-accent-yellow);
430
+ font-size: var(--text-sm);
431
+ }
432
+
433
+ .banner-text {
434
+ font-size: var(--text-sm);
435
+ font-weight: var(--font-medium);
436
+ }
437
+
438
+ .banner-dismiss {
439
+ background: none;
440
+ border: none;
441
+ color: var(--color-text-secondary);
442
+ cursor: pointer;
443
+ padding: var(--space-1);
444
+ margin-left: auto;
445
+ border-radius: var(--radius-sm);
446
+ transition: all var(--duration-fast);
447
+ }
448
+
449
+ .banner-dismiss:hover {
450
+ background: var(--color-bg-hover);
451
+ color: var(--color-text-primary);
452
+ }
453
+
454
+ /* Breadcrumbs - definition moved to line 888 to avoid duplication */
455
+
456
+ .breadcrumb-item {
457
+ display: inline-flex;
458
+ align-items: center;
459
+ gap: var(--space-1);
460
+ color: var(--color-text-secondary);
461
+ text-decoration: none;
462
+ font-size: var(--text-sm);
463
+ padding: var(--space-1) var(--space-2);
464
+ border-radius: var(--radius-sm);
465
+ transition: all var(--duration-fast);
466
+ }
467
+
468
+ .breadcrumb-item:hover {
469
+ background: var(--color-bg-hover);
470
+ color: var(--color-text-primary);
471
+ }
472
+
473
+ .breadcrumb-item.current {
474
+ color: var(--color-text-primary);
475
+ font-weight: var(--font-medium);
476
+ }
477
+
478
+ .breadcrumb-separator {
479
+ color: var(--color-text-tertiary);
480
+ font-size: var(--text-xs);
481
+ margin: 0 var(--space-1);
482
+ }
483
+
484
+ /* Main Wrapper */
485
+ .main-wrapper {
486
+ display: flex;
487
+ height: calc(100vh - var(--header-height) - var(--breadcrumb-height));
488
+ margin-top: calc(var(--header-height) + var(--breadcrumb-height));
489
+ overflow: hidden;
490
+ }
491
+
492
+ .main-wrapper.banner-visible {
493
+ height: calc(100vh - var(--header-height) - var(--breadcrumb-height) - 3.5rem);
494
+ margin-top: calc(var(--header-height) + var(--breadcrumb-height) + 3.5rem);
495
+ }
496
+
497
+ .sidebar-header {
498
+ padding: var(--space-3);
499
+ border-bottom: 1px solid var(--color-border-default);
500
+ margin-bottom: 0;
501
+ }
502
+
503
+
504
+ /* Navigation */
505
+ .navigation {
506
+ flex: 1;
507
+ padding: var(--space-2);
508
+ overflow-y: auto;
509
+ overflow-x: visible;
510
+
511
+ /* Scrollbar styling */
512
+ scrollbar-width: thin;
513
+ scrollbar-color: var(--color-border-default) transparent;
514
+ }
515
+
516
+ .resize-handle {
517
+ width: 4px;
518
+ background: transparent;
519
+ cursor: col-resize;
520
+ position: absolute;
521
+ top: 0;
522
+ right: 0;
523
+ bottom: 0;
524
+ transition: background var(--duration-fast);
525
+ }
526
+
527
+ .resize-handle:hover {
528
+ background: var(--color-border-focus);
529
+ }
530
+
531
+ .navigation::-webkit-scrollbar {
532
+ width: 6px;
533
+ }
534
+
535
+ .navigation::-webkit-scrollbar-track {
536
+ background: transparent;
537
+ }
538
+
539
+ .navigation::-webkit-scrollbar-thumb {
540
+ background: var(--color-border-default);
541
+ border-radius: 3px;
542
+ }
543
+
544
+ .navigation::-webkit-scrollbar-thumb:hover {
545
+ background: var(--color-text-tertiary);
546
+ }
547
+
548
+ .nav-section {
549
+ margin-bottom: var(--space-0-5);
550
+ }
551
+
552
+ .nav-section[data-level="0"] {
553
+ margin-left: 0;
554
+ }
555
+
556
+ .nav-section[data-level="1"] {
557
+ margin-left: var(--space-4);
558
+ margin-bottom: var(--space-0-5);
559
+ }
560
+
561
+ .nav-section[data-level="2"] {
562
+ margin-left: var(--space-8);
563
+ margin-bottom: var(--space-0-5);
564
+ }
565
+
566
+ .nav-title {
567
+ display: flex;
568
+ align-items: center;
569
+ padding: var(--space-1-5) var(--space-3);
570
+ font-size: var(--text-sm);
571
+ font-weight: var(--font-medium);
572
+ color: var(--color-text-secondary);
573
+ cursor: pointer;
574
+ border-radius: var(--radius-md);
575
+ transition: all var(--duration-fast) var(--easing-out);
576
+ user-select: none;
577
+ }
578
+
579
+ /* Indent nav titles based on their level */
580
+ .nav-section[data-level="1"] .nav-title {
581
+ padding-left: calc(var(--space-3) + var(--space-4));
582
+ }
583
+
584
+ .nav-section[data-level="2"] .nav-title {
585
+ padding-left: calc(var(--space-3) + var(--space-8));
586
+ }
587
+
588
+ .nav-title:hover {
589
+ background: var(--color-bg-hover);
590
+ color: var(--color-text-primary);
591
+ }
592
+
593
+ .nav-title i {
594
+ margin-right: var(--space-2);
595
+ font-size: var(--text-sm);
596
+ }
597
+
598
+ .collapse-icon {
599
+ margin-right: var(--space-1) !important;
600
+ transition: transform var(--duration-fast) var(--easing-out);
601
+ }
602
+
603
+ .nav-title.expanded .collapse-icon {
604
+ transform: rotate(90deg);
605
+ }
606
+
607
+ .nav-content {
608
+ overflow: hidden;
609
+ transition: all var(--duration-normal) var(--easing-out);
610
+ }
611
+
612
+ .nav-content.collapsed {
613
+ max-height: 0;
614
+ opacity: 0;
615
+ }
616
+
617
+ .nav-item {
618
+ display: flex;
619
+ align-items: center;
620
+ padding: var(--space-1-5) var(--space-3);
621
+ font-size: var(--text-sm);
622
+ color: var(--color-text-primary);
623
+ text-decoration: none;
624
+ border-radius: var(--radius-md);
625
+ transition: all var(--duration-fast) var(--easing-out);
626
+ margin-bottom: 0;
627
+ gap: var(--space-2);
628
+ }
629
+
630
+ /* Indent nav items based on their parent section level */
631
+ .nav-section[data-level="0"] .nav-item {
632
+ padding-left: calc(var(--space-3) + var(--space-6));
633
+ }
634
+
635
+ .nav-section[data-level="1"] .nav-item {
636
+ padding-left: calc(var(--space-3) + var(--space-10));
637
+ }
638
+
639
+ .nav-section[data-level="2"] .nav-item {
640
+ padding-left: calc(var(--space-3) + var(--space-12));
641
+ }
642
+
643
+ .nav-item:hover {
644
+ background: var(--color-bg-hover);
645
+ color: var(--color-text-primary);
646
+ text-decoration: none;
647
+ }
648
+
649
+ .nav-item.active {
650
+ background: var(--color-bg-hover);
651
+ color: var(--color-text-primary);
652
+ font-weight: var(--font-medium);
653
+ }
654
+
655
+ .nav-item i {
656
+ margin-right: var(--space-2);
657
+ font-size: var(--text-sm);
658
+ color: var(--color-text-tertiary);
659
+ }
660
+
661
+ /* Main Content */
662
+ .content {
663
+ flex: 1;
664
+ padding: 40px var(--space-8);
665
+ overflow-y: auto;
666
+ background: var(--color-bg-default);
667
+ }
668
+
669
+ .content-inner {
670
+ max-width: 65rem;
671
+ margin: 0 auto;
672
+ }
673
+
674
+ /* Tables */
675
+ table {
676
+ width: 100%;
677
+ border-collapse: collapse;
678
+ margin: var(--space-4) 0;
679
+ font-size: var(--text-sm);
680
+ background: var(--color-bg-default);
681
+ border: 1px solid var(--color-border-default);
682
+ border-radius: var(--radius-lg);
683
+ overflow: hidden;
684
+ }
685
+
686
+ th {
687
+ text-align: left;
688
+ font-weight: var(--font-semibold);
689
+ padding: var(--space-3) var(--space-4);
690
+ background: var(--color-bg-secondary);
691
+ border-bottom: 1px solid var(--color-border-default);
692
+ color: var(--color-text-primary);
693
+ vertical-align: top !important;
694
+ }
695
+
696
+ td {
697
+ padding: var(--space-3) var(--space-4);
698
+ border-bottom: 1px solid var(--color-border-default);
699
+ color: var(--color-text-primary);
700
+ vertical-align: top !important;
701
+ }
702
+
703
+ /* Ensure all table cell content is top-aligned */
704
+ table th,
705
+ table td {
706
+ vertical-align: top !important;
707
+ }
708
+
709
+ /* Ensure nested elements in table cells don't affect alignment */
710
+ table td > *,
711
+ table th > * {
712
+ vertical-align: top;
713
+ }
714
+
715
+ /* Remove top margin from first element in table cells */
716
+ td > *:first-child,
717
+ th > *:first-child {
718
+ margin-top: 0 !important;
719
+ }
720
+
721
+ /* Remove bottom margin from last element in table cells */
722
+ td > *:last-child,
723
+ th > *:last-child {
724
+ margin-bottom: 0 !important;
725
+ }
726
+
727
+ /* Specifically target common block elements that might be first in cells */
728
+ td > h1:first-child,
729
+ td > h2:first-child,
730
+ td > h3:first-child,
731
+ td > h4:first-child,
732
+ td > h5:first-child,
733
+ td > h6:first-child,
734
+ td > p:first-child,
735
+ td > ul:first-child,
736
+ td > ol:first-child,
737
+ td > blockquote:first-child,
738
+ td > pre:first-child,
739
+ th > h1:first-child,
740
+ th > h2:first-child,
741
+ th > h3:first-child,
742
+ th > h4:first-child,
743
+ th > h5:first-child,
744
+ th > h6:first-child,
745
+ th > p:first-child,
746
+ th > ul:first-child,
747
+ th > ol:first-child,
748
+ th > blockquote:first-child,
749
+ th > pre:first-child {
750
+ margin-top: 0 !important;
751
+ padding-top: 0 !important;
752
+ }
753
+
754
+ tr:last-child td {
755
+ border-bottom: none;
756
+ }
757
+
758
+ tr:hover {
759
+ background: var(--color-bg-hover);
760
+ }
761
+
762
+ /* Buttons */
763
+ .btn {
764
+ display: inline-flex;
765
+ align-items: center;
766
+ justify-content: center;
767
+ gap: var(--space-2);
768
+ padding: var(--space-2) var(--space-4);
769
+ font-size: var(--text-sm);
770
+ font-weight: var(--font-medium);
771
+ line-height: var(--leading-tight);
772
+ border-radius: var(--radius-md);
773
+ border: 1px solid transparent;
774
+ cursor: pointer;
775
+ transition: all var(--duration-normal) var(--easing-out);
776
+ outline: none;
777
+ text-decoration: none;
778
+ }
779
+
780
+ .btn-primary {
781
+ background: var(--color-primary);
782
+ color: var(--color-text-inverse);
783
+ border-color: var(--color-primary);
784
+ }
785
+
786
+ .btn-primary:hover {
787
+ background: var(--color-primary-hover);
788
+ border-color: var(--color-primary-hover);
789
+ }
790
+
791
+ .btn-secondary {
792
+ background: var(--color-bg-default);
793
+ color: var(--color-text-primary);
794
+ border-color: var(--color-border-default);
795
+ }
796
+
797
+ .btn-secondary:hover {
798
+ background: var(--color-bg-secondary);
799
+ border-color: var(--color-border-hover);
800
+ }
801
+
802
+ .btn-ghost {
803
+ background: transparent;
804
+ color: var(--color-text-primary);
805
+ border-color: transparent;
806
+ }
807
+
808
+ .btn-ghost:hover {
809
+ background: var(--color-bg-secondary);
810
+ }
811
+
812
+ /* Cards */
813
+ .card {
814
+ background: var(--color-bg-card);
815
+ border: 1px solid var(--color-border-default);
816
+ border-radius: var(--radius-lg);
817
+ padding: var(--space-6);
818
+ margin-bottom: var(--space-4);
819
+ box-shadow: var(--shadow-sm);
820
+ transition: all var(--duration-normal) var(--easing-out);
821
+ }
822
+
823
+ .card:hover {
824
+ box-shadow: var(--shadow-md);
825
+ transform: translateY(-2px);
826
+ }
827
+
828
+ /* Badges */
829
+ .badge {
830
+ display: inline-flex;
831
+ align-items: center;
832
+ padding: var(--space-0-5) var(--space-2);
833
+ font-size: var(--text-xs);
834
+ font-weight: var(--font-medium);
835
+ line-height: var(--leading-normal);
836
+ border-radius: var(--radius-sm);
837
+ background: var(--color-border-default);
838
+ color: var(--color-text-primary);
839
+ }
840
+
841
+ .badge-primary {
842
+ background: var(--color-primary);
843
+ color: var(--color-text-inverse);
844
+ }
845
+
846
+ .badge-success {
847
+ background: var(--color-accent-green-bg);
848
+ color: var(--color-accent-green);
849
+ }
850
+
851
+ .badge-warning {
852
+ background: var(--color-accent-yellow-bg);
853
+ color: var(--color-accent-yellow);
854
+ }
855
+
856
+ .badge-danger {
857
+ background: var(--color-accent-red-bg);
858
+ color: var(--color-accent-red);
859
+ }
860
+
861
+ /* Theme Toggle */
862
+ .theme-toggle {
863
+ padding: var(--space-2);
864
+ background: transparent;
865
+ border: none;
866
+ cursor: pointer;
867
+ color: var(--color-text-secondary);
868
+ font-size: var(--text-lg);
869
+ transition: color var(--duration-fast) var(--easing-out);
870
+ }
871
+
872
+ .theme-toggle:hover {
873
+ color: var(--color-text-primary);
874
+ }
875
+
876
+ /* Dark Theme */
877
+ [data-theme="dark"] {
878
+ --color-bg-default: #191919;
879
+ --color-bg-secondary: #202020;
880
+ --color-bg-tertiary: #2A2A2A;
881
+ --color-bg-hover: #2A2A2A;
882
+ --color-bg-card: #202020;
883
+
884
+ --color-text-primary: #E6E6E6;
885
+ --color-text-secondary: #ABABAB;
886
+ --color-text-tertiary: #787774;
887
+
888
+ --color-border-default: #373737;
889
+ --color-border-hover: #474747;
890
+ --color-divider: #2A2A2A;
891
+
892
+ --color-shadow: rgba(0, 0, 0, 0.3);
893
+ }
894
+
895
+ /* Dark theme Mermaid styles */
896
+ [data-theme="dark"] .mermaid-container {
897
+ background: var(--color-bg-default);
898
+ border-color: var(--color-border-default);
899
+ }
900
+
901
+ [data-theme="dark"] .mermaid-title {
902
+ background: var(--color-bg-secondary);
903
+ border-color: var(--color-border-default);
904
+ color: var(--color-text-primary);
905
+ }
906
+
907
+ [data-theme="dark"] .mermaid-toolbar {
908
+ background: var(--color-bg-secondary);
909
+ border-color: var(--color-border-default);
910
+ }
911
+
912
+ [data-theme="dark"] .mermaid-btn {
913
+ background: var(--color-bg-default);
914
+ border-color: var(--color-border-default);
915
+ color: var(--color-text-secondary);
916
+ }
917
+
918
+ [data-theme="dark"] .mermaid-btn:hover {
919
+ background: var(--color-accent-blue);
920
+ color: var(--color-text-inverse);
921
+ border-color: var(--color-accent-blue);
922
+ }
923
+
924
+ [data-theme="dark"] .mermaid-fullscreen-wrapper {
925
+ background: var(--color-bg-default);
926
+ color: var(--color-text-primary);
927
+ }
928
+
929
+ /* Breadcrumbs */
930
+ .breadcrumbs {
931
+ display: flex;
932
+ align-items: center;
933
+ padding: 0.5rem var(--space-6);
934
+ background: var(--color-bg-secondary);
935
+ border-bottom: 1px solid var(--color-border-default);
936
+ font-size: var(--text-sm);
937
+ color: var(--color-text-secondary);
938
+ position: fixed;
939
+ top: var(--header-height);
940
+ left: 0;
941
+ right: 0;
942
+ height: var(--breadcrumb-height);
943
+ z-index: 900;
944
+ transition: top var(--duration-normal), background-color var(--duration-normal);
945
+ gap: var(--space-2);
946
+ }
947
+
948
+ .breadcrumbs.banner-visible {
949
+ top: calc(var(--header-height) + 3.5rem);
950
+ }
951
+
952
+ .breadcrumbs:not(.banner-visible) {
953
+ top: var(--header-height);
954
+ }
955
+
956
+ .breadcrumb-item {
957
+ display: flex;
958
+ align-items: center;
959
+ gap: var(--space-1-5);
960
+ color: var(--color-text-tertiary);
961
+ text-decoration: none;
962
+ padding: var(--space-1) var(--space-2);
963
+ border-radius: var(--radius-sm);
964
+ transition: all var(--duration-fast);
965
+ white-space: nowrap;
966
+ }
967
+
968
+ .breadcrumb-item:hover:not(.current) {
969
+ background: var(--color-bg-hover);
970
+ color: var(--color-text-secondary);
971
+ }
972
+
973
+ .breadcrumb-item.current {
974
+ color: var(--color-text-primary);
975
+ font-weight: var(--font-medium);
976
+ cursor: default;
977
+ }
978
+
979
+ .breadcrumb-separator {
980
+ margin: 0 var(--space-1);
981
+ color: var(--color-text-tertiary);
982
+ font-size: var(--text-xs);
983
+ opacity: 0.6;
984
+ }
985
+
986
+ .breadcrumb-item i {
987
+ font-size: var(--text-xs);
988
+ opacity: 0.8;
989
+ }
990
+
991
+ .breadcrumb-item.current i {
992
+ opacity: 1;
993
+ }
994
+
995
+ /* Banner visibility handled in main breadcrumbs definition */
996
+
997
+ /* Menu Toggle (Mobile) */
998
+ .menu-toggle {
999
+ display: none;
1000
+ background: none;
1001
+ border: none;
1002
+ font-size: 1.5rem;
1003
+ cursor: pointer;
1004
+ color: var(--color-text-primary);
1005
+ padding: var(--space-2);
1006
+ border-radius: var(--radius-small);
1007
+ transition: all var(--duration-fast) var(--easing-out);
1008
+ }
1009
+
1010
+ .menu-toggle:hover {
1011
+ background: var(--color-bg-secondary);
1012
+ color: var(--color-text-primary);
1013
+ }
1014
+
1015
+ /* Show menu toggle on desktop when menu starts closed or is closed */
1016
+ @media (min-width: 769px) {
1017
+ body.menu-starts-closed .menu-toggle {
1018
+ display: block;
1019
+ }
1020
+ }
1021
+
1022
+ /* Responsive Design */
1023
+ /* Keep sidebar visible on tablets, hide only on mobile */
1024
+
1025
+ @media (max-width: 768px) {
1026
+ .header-content {
1027
+ padding: 0 var(--space-4);
1028
+ }
1029
+
1030
+ /* Hide sidebar on mobile */
1031
+ .sidebar {
1032
+ position: fixed;
1033
+ top: calc(var(--header-height) + var(--breadcrumb-height));
1034
+ left: 0;
1035
+ height: calc(100vh - var(--header-height) - var(--breadcrumb-height));
1036
+ z-index: 1002; /* Above header and floating button */
1037
+ transform: translateX(-100%);
1038
+ transition: transform var(--duration-normal) var(--easing-out);
1039
+ box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15); /* Add shadow for depth */
1040
+ }
1041
+
1042
+ .sidebar.open {
1043
+ transform: translateX(0);
1044
+ }
1045
+
1046
+ /* Mobile menu overlay */
1047
+ .sidebar-overlay {
1048
+ display: none;
1049
+ position: fixed;
1050
+ top: 0;
1051
+ left: 0;
1052
+ right: 0;
1053
+ bottom: 0;
1054
+ background: rgba(0, 0, 0, 0.5);
1055
+ z-index: 1001; /* Below sidebar but above content */
1056
+ opacity: 0;
1057
+ transition: opacity var(--duration-normal);
1058
+ }
1059
+
1060
+ .sidebar-overlay.active {
1061
+ display: block;
1062
+ opacity: 1;
1063
+ }
1064
+
1065
+ .main-wrapper {
1066
+ margin-left: 0;
1067
+ margin-top: var(--header-height); /* Only account for fixed header on mobile */
1068
+ }
1069
+
1070
+ .content {
1071
+ margin-left: 0;
1072
+ padding: var(--space-3) var(--space-4); /* Reduced top/bottom padding on mobile */
1073
+ }
1074
+
1075
+ .menu-toggle {
1076
+ display: block;
1077
+ }
1078
+ }
1079
+
1080
+ /* Mermaid Diagrams */
1081
+ .mermaid {
1082
+ background: var(--color-bg-secondary);
1083
+ padding: var(--space-4);
1084
+ border-radius: var(--radius-lg);
1085
+ overflow-x: auto;
1086
+ margin: var(--space-2) 0;
1087
+ }
1088
+
1089
+ /* Mermaid Full Screen Viewer */
1090
+ .mermaid-container {
1091
+ position: relative;
1092
+ margin: var(--space-3) 0;
1093
+ border: 1px solid var(--color-border-default);
1094
+ border-radius: var(--radius-lg);
1095
+ overflow: hidden;
1096
+ background: var(--color-bg-default);
1097
+ }
1098
+
1099
+ .mermaid-title {
1100
+ padding: var(--space-3) var(--space-4);
1101
+ background: var(--color-bg-secondary);
1102
+ border-bottom: 1px solid var(--color-border-default);
1103
+ font-size: var(--text-base);
1104
+ font-weight: var(--font-semibold);
1105
+ color: var(--color-text-primary);
1106
+ }
1107
+
1108
+ .mermaid-toolbar {
1109
+ display: flex;
1110
+ justify-content: space-between;
1111
+ align-items: center;
1112
+ padding: var(--space-3) var(--space-4);
1113
+ background: var(--color-bg-secondary);
1114
+ border-bottom: 1px solid var(--color-border-default);
1115
+ font-size: var(--text-sm);
1116
+ color: var(--color-text-secondary);
1117
+ }
1118
+
1119
+ .mermaid-actions {
1120
+ display: flex;
1121
+ gap: var(--space-2);
1122
+ }
1123
+
1124
+ .mermaid-btn {
1125
+ display: flex;
1126
+ align-items: center;
1127
+ gap: var(--space-1-5);
1128
+ padding: var(--space-1-5) var(--space-3);
1129
+ border: 1px solid var(--color-border-default);
1130
+ border-radius: var(--radius-md);
1131
+ background: var(--color-bg-default);
1132
+ color: var(--color-text-secondary);
1133
+ text-decoration: none;
1134
+ font-size: var(--text-sm);
1135
+ cursor: pointer;
1136
+ transition: all var(--duration-fast);
1137
+ white-space: nowrap;
1138
+ }
1139
+
1140
+ .mermaid-btn:hover {
1141
+ background: var(--color-accent-blue);
1142
+ color: var(--color-text-inverse);
1143
+ border-color: var(--color-accent-blue);
1144
+ transform: translateY(-1px);
1145
+ box-shadow: var(--shadow-sm);
1146
+ }
1147
+
1148
+ .mermaid-btn i {
1149
+ font-size: var(--text-xs);
1150
+ flex-shrink: 0;
1151
+ }
1152
+
1153
+ .mermaid-wrapper {
1154
+ padding: var(--space-3);
1155
+ overflow: auto;
1156
+ max-height: 600px;
1157
+ }
1158
+
1159
+ /* Full Screen Modal */
1160
+ .mermaid-fullscreen {
1161
+ position: fixed;
1162
+ top: 0;
1163
+ left: 0;
1164
+ width: 100vw;
1165
+ height: 100vh;
1166
+ background: rgba(0, 0, 0, 0.95);
1167
+ display: none;
1168
+ z-index: 10000;
1169
+ backdrop-filter: blur(4px);
1170
+ }
1171
+
1172
+ .mermaid-fullscreen.active {
1173
+ display: flex;
1174
+ flex-direction: column;
1175
+ }
1176
+
1177
+ .mermaid-fullscreen-toolbar {
1178
+ display: flex;
1179
+ justify-content: space-between;
1180
+ align-items: center;
1181
+ padding: var(--space-4) var(--space-8);
1182
+ background: rgba(255, 255, 255, 0.1);
1183
+ backdrop-filter: blur(8px);
1184
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
1185
+ }
1186
+
1187
+ .mermaid-fullscreen-title {
1188
+ color: white;
1189
+ font-size: var(--text-lg);
1190
+ font-weight: var(--font-semibold);
1191
+ }
1192
+
1193
+ .mermaid-fullscreen-controls {
1194
+ display: flex;
1195
+ gap: var(--space-4);
1196
+ align-items: center;
1197
+ }
1198
+
1199
+ .mermaid-zoom-controls {
1200
+ display: flex;
1201
+ gap: var(--space-2);
1202
+ align-items: center;
1203
+ }
1204
+
1205
+ .mermaid-zoom-btn {
1206
+ padding: var(--space-2);
1207
+ border: 1px solid rgba(255, 255, 255, 0.3);
1208
+ border-radius: var(--radius-md);
1209
+ background: rgba(255, 255, 255, 0.1);
1210
+ color: white;
1211
+ cursor: pointer;
1212
+ transition: all var(--duration-fast);
1213
+ display: flex;
1214
+ align-items: center;
1215
+ justify-content: center;
1216
+ width: var(--space-10);
1217
+ height: var(--space-10);
1218
+ }
1219
+
1220
+ .mermaid-zoom-btn:hover {
1221
+ background: rgba(255, 255, 255, 0.2);
1222
+ border-color: rgba(255, 255, 255, 0.5);
1223
+ }
1224
+
1225
+ .mermaid-zoom-level {
1226
+ color: white;
1227
+ font-size: var(--text-sm);
1228
+ min-width: 3rem;
1229
+ text-align: center;
1230
+ font-weight: var(--font-medium);
1231
+ }
1232
+
1233
+ .mermaid-close-btn {
1234
+ padding: var(--space-2) var(--space-4);
1235
+ border: 1px solid rgba(255, 255, 255, 0.3);
1236
+ border-radius: var(--radius-md);
1237
+ background: rgba(255, 255, 255, 0.1);
1238
+ color: white;
1239
+ cursor: pointer;
1240
+ transition: all var(--duration-fast);
1241
+ display: flex;
1242
+ align-items: center;
1243
+ gap: var(--space-2);
1244
+ font-size: var(--text-sm);
1245
+ }
1246
+
1247
+ .mermaid-close-btn:hover {
1248
+ background: rgba(255, 255, 255, 0.2);
1249
+ }
1250
+
1251
+ .mermaid-fullscreen-content {
1252
+ flex: 1;
1253
+ display: flex;
1254
+ align-items: center;
1255
+ justify-content: center;
1256
+ padding: var(--space-8);
1257
+ overflow: hidden;
1258
+ }
1259
+
1260
+ .mermaid-fullscreen-wrapper {
1261
+ background: white;
1262
+ border-radius: var(--radius-lg);
1263
+ padding: var(--space-8);
1264
+ width: calc(100vw - var(--space-8));
1265
+ height: calc(100vh - 6rem);
1266
+ overflow: auto;
1267
+ box-shadow: var(--shadow-xl);
1268
+ transform-origin: center center;
1269
+ transition: transform var(--duration-normal);
1270
+ display: flex;
1271
+ align-items: center;
1272
+ justify-content: center;
1273
+ }
1274
+
1275
+ .mermaid-fullscreen-diagram {
1276
+ display: flex;
1277
+ justify-content: center;
1278
+ align-items: center;
1279
+ width: 100%;
1280
+ height: 100%;
1281
+ min-height: 400px;
1282
+ position: relative;
1283
+ }
1284
+
1285
+ .mermaid-fullscreen-diagram .mermaid {
1286
+ width: 100% !important;
1287
+ height: 100% !important;
1288
+ display: flex !important;
1289
+ justify-content: center !important;
1290
+ align-items: center !important;
1291
+ background: transparent !important;
1292
+ border: none !important;
1293
+ margin: 0 !important;
1294
+ padding: 0 !important;
1295
+ }
1296
+
1297
+ .mermaid-fullscreen-diagram svg {
1298
+ max-width: 100% !important;
1299
+ max-height: 100% !important;
1300
+ width: auto !important;
1301
+ height: auto !important;
1302
+ display: block !important;
1303
+ margin: 0 auto !important;
1304
+ }
1305
+
1306
+ /* Zoom functionality */
1307
+ .mermaid-fullscreen-wrapper.zoomed {
1308
+ overflow: visible;
1309
+ }
1310
+
1311
+ /* Animation for opening fullscreen */
1312
+ @keyframes mermaidFadeIn {
1313
+ from {
1314
+ opacity: 0;
1315
+ transform: scale(0.95);
1316
+ }
1317
+ to {
1318
+ opacity: 1;
1319
+ transform: scale(1);
1320
+ }
1321
+ }
1322
+
1323
+ .mermaid-fullscreen.active .mermaid-fullscreen-wrapper {
1324
+ animation: mermaidFadeIn var(--duration-normal) ease-out;
1325
+ }
1326
+
1327
+ /* Responsive design for Mermaid */
1328
+ @media (max-width: 768px) {
1329
+ .mermaid-toolbar {
1330
+ flex-direction: column;
1331
+ gap: var(--space-2);
1332
+ align-items: flex-start;
1333
+ padding: var(--space-3);
1334
+ }
1335
+
1336
+ .mermaid-actions {
1337
+ width: 100%;
1338
+ justify-content: flex-end;
1339
+ flex-wrap: wrap;
1340
+ }
1341
+
1342
+ .mermaid-btn {
1343
+ font-size: var(--text-xs);
1344
+ padding: var(--space-1) var(--space-2);
1345
+ }
1346
+
1347
+ .mermaid-fullscreen-toolbar {
1348
+ padding: var(--space-3);
1349
+ flex-direction: column;
1350
+ gap: var(--space-2);
1351
+ }
1352
+
1353
+ .mermaid-fullscreen-controls {
1354
+ flex-direction: column;
1355
+ gap: var(--space-2);
1356
+ }
1357
+
1358
+ .mermaid-fullscreen-content {
1359
+ padding: var(--space-4);
1360
+ }
1361
+
1362
+ .mermaid-fullscreen-wrapper {
1363
+ width: calc(100vw - var(--space-4));
1364
+ height: calc(100vh - 8rem);
1365
+ padding: var(--space-4);
1366
+ }
1367
+ }
1368
+
1369
+ /* Preview Banner */
1370
+ .preview-banner {
1371
+ position: fixed;
1372
+ top: var(--header-height);
1373
+ left: 0;
1374
+ right: 0;
1375
+ background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
1376
+ color: white;
1377
+ z-index: 1000;
1378
+ box-shadow: var(--shadow-md);
1379
+ transition: transform var(--duration-normal), opacity var(--duration-normal);
1380
+ /* Default to hidden state to prevent flash */
1381
+ transform: translateY(-100%);
1382
+ opacity: 0;
1383
+ pointer-events: none;
1384
+ }
1385
+
1386
+ .preview-banner.visible {
1387
+ transform: translateY(0);
1388
+ opacity: 1;
1389
+ pointer-events: auto;
1390
+ }
1391
+
1392
+ .preview-banner.hidden {
1393
+ transform: translateY(-100%);
1394
+ opacity: 0;
1395
+ pointer-events: none;
1396
+ }
1397
+
1398
+ .banner-content {
1399
+ display: flex;
1400
+ align-items: center;
1401
+ justify-content: center;
1402
+ gap: var(--space-3);
1403
+ max-width: 1400px;
1404
+ margin: 0 auto;
1405
+ }
1406
+
1407
+ .banner-dismiss {
1408
+ padding: var(--space-1) var(--space-2);
1409
+ background: transparent;
1410
+ border: none;
1411
+ cursor: pointer;
1412
+ color: var(--color-accent-yellow);
1413
+ font-size: var(--text-base);
1414
+ transition: opacity var(--duration-fast) var(--easing-out);
1415
+ }
1416
+
1417
+ .banner-dismiss:hover {
1418
+ opacity: 0.7;
1419
+ }
1420
+
1421
+ /* Animations */
1422
+ @keyframes fadeIn {
1423
+ from {
1424
+ opacity: 0;
1425
+ transform: translateY(-10px);
1426
+ }
1427
+ to {
1428
+ opacity: 1;
1429
+ transform: translateY(0);
1430
+ }
1431
+ }
1432
+
1433
+ .fade-in {
1434
+ animation: fadeIn var(--duration-normal) var(--easing-out);
1435
+ }
1436
+
1437
+ /* Utility Classes */
1438
+ .text-center { text-align: center; }
1439
+ .text-right { text-align: right; }
1440
+ .text-muted { color: var(--color-text-secondary); }
1441
+ .text-small { font-size: var(--text-sm); }
1442
+ .text-large { font-size: var(--text-lg); }
1443
+ .font-mono { font-family: var(--font-mono); }
1444
+ .mt-0 { margin-top: 0; }
1445
+ .mb-0 { margin-bottom: 0; }
1446
+ .mt-4 { margin-top: var(--space-4); }
1447
+ .mb-4 { margin-bottom: var(--space-4); }
1448
+ .mt-8 { margin-top: var(--space-8); }
1449
+ .mb-8 { margin-bottom: var(--space-8); }
1450
+
1451
+ /* Table of Contents */
1452
+ .toc-container {
1453
+ background: var(--color-bg-secondary);
1454
+ border-radius: var(--radius-lg);
1455
+ padding: var(--space-6);
1456
+ margin: var(--space-6) 0;
1457
+ border: 1px solid var(--color-border-default);
1458
+ }
1459
+
1460
+ .toc-container h2 {
1461
+ font-size: var(--text-lg);
1462
+ font-weight: var(--font-semibold);
1463
+ color: var(--color-text-primary);
1464
+ margin-bottom: var(--space-4);
1465
+ padding-bottom: var(--space-2);
1466
+ border-bottom: 2px solid var(--color-divider);
1467
+ }
1468
+
1469
+ .toc-list {
1470
+ list-style: none;
1471
+ padding: 0;
1472
+ margin: 0;
1473
+ }
1474
+
1475
+ .toc-list ol,
1476
+ .toc-list ul {
1477
+ list-style: none;
1478
+ padding: 0;
1479
+ margin: 0;
1480
+ }
1481
+
1482
+ .toc-list li {
1483
+ position: relative;
1484
+ margin-bottom: 0;
1485
+ line-height: 1.4;
1486
+ }
1487
+
1488
+ .toc-list > li {
1489
+ margin-bottom: 0;
1490
+ }
1491
+
1492
+ .toc-list li::before {
1493
+ content: '';
1494
+ position: absolute;
1495
+ left: 0;
1496
+ top: 0.75em;
1497
+ width: 6px;
1498
+ height: 6px;
1499
+ background: var(--color-text-tertiary);
1500
+ border-radius: 50%;
1501
+ opacity: 0.5;
1502
+ }
1503
+
1504
+ .toc-list a {
1505
+ display: block;
1506
+ padding: 2px var(--space-2);
1507
+ padding-left: var(--space-4);
1508
+ color: var(--color-text-secondary);
1509
+ font-size: var(--text-sm);
1510
+ transition: all var(--duration-fast);
1511
+ border-radius: var(--radius-md);
1512
+ text-decoration: none;
1513
+ position: relative;
1514
+ }
1515
+
1516
+ .toc-list a:hover {
1517
+ color: var(--color-accent-blue);
1518
+ background: rgba(0, 115, 230, 0.05);
1519
+ transform: translateX(1px);
1520
+ }
1521
+
1522
+ /* Nested TOC items */
1523
+ .toc-list .toc-h2 {
1524
+ font-weight: var(--font-medium);
1525
+ }
1526
+
1527
+ .toc-list .toc-h3 {
1528
+ padding-left: calc(var(--space-4) + var(--space-6));
1529
+ font-size: var(--text-sm);
1530
+ color: var(--color-text-tertiary);
1531
+ }
1532
+
1533
+ .toc-list .toc-h3::before {
1534
+ left: var(--space-6);
1535
+ width: 4px;
1536
+ height: 4px;
1537
+ }
1538
+
1539
+ .toc-list .toc-h4 {
1540
+ padding-left: calc(var(--space-4) + var(--space-10));
1541
+ font-size: var(--text-xs);
1542
+ color: var(--color-text-tertiary);
1543
+ font-style: italic;
1544
+ }
1545
+
1546
+ .toc-list .toc-h4::before {
1547
+ left: var(--space-10);
1548
+ width: 3px;
1549
+ height: 3px;
1550
+ }
1551
+
1552
+ /* Active TOC item */
1553
+ .toc-list a.active {
1554
+ color: var(--color-accent-blue);
1555
+ background: var(--color-accent-blue-bg);
1556
+ font-weight: var(--font-medium);
1557
+ }
1558
+
1559
+ /* Number styling for ordered lists */
1560
+ .toc-list > ol {
1561
+ counter-reset: toc-counter;
1562
+ }
1563
+
1564
+ .toc-list ol > li {
1565
+ counter-increment: toc-counter;
1566
+ }
1567
+
1568
+ .toc-list ol > li::before {
1569
+ content: counter(toc-counter);
1570
+ position: absolute;
1571
+ left: 0;
1572
+ top: var(--space-1);
1573
+ width: 1.5rem;
1574
+ height: 1.5rem;
1575
+ background: var(--color-accent-blue);
1576
+ color: var(--color-text-inverse);
1577
+ border-radius: var(--radius-md);
1578
+ font-size: var(--text-xs);
1579
+ font-weight: var(--font-semibold);
1580
+ display: flex;
1581
+ align-items: center;
1582
+ justify-content: center;
1583
+ opacity: 1;
1584
+ }
1585
+
1586
+ .toc-list ol > li > a {
1587
+ padding-left: calc(var(--space-4) + var(--space-5));
1588
+ }
1589
+
1590
+ /* Dark mode adjustments */
1591
+ [data-theme="dark"] .toc-container {
1592
+ background: var(--color-bg-secondary);
1593
+ border-color: var(--color-border-default);
1594
+ }
1595
+
1596
+ [data-theme="dark"] .toc-container h2 {
1597
+ border-bottom-color: var(--color-divider);
1598
+ }
1599
+
1600
+ [data-theme="dark"] .toc-list a:hover {
1601
+ background: var(--color-bg-hover);
1602
+ }
1603
+
1604
+ /* Tooltip Styles */
1605
+ [data-tooltip] {
1606
+ position: relative;
1607
+ }
1608
+
1609
+ /* Tooltip content */
1610
+ [data-tooltip]::after {
1611
+ content: attr(data-tooltip);
1612
+ position: fixed; /* Use fixed positioning to escape overflow containers */
1613
+ left: var(--tooltip-left, 0);
1614
+ top: var(--tooltip-top, 0);
1615
+ transform: translateY(-50%);
1616
+ background: #333;
1617
+ color: white;
1618
+ padding: 8px 12px;
1619
+ border-radius: 4px;
1620
+ font-size: 14px;
1621
+ line-height: 1.4;
1622
+ white-space: normal;
1623
+ max-width: 300px;
1624
+ z-index: 999999;
1625
+ pointer-events: none;
1626
+ opacity: 0;
1627
+ visibility: hidden;
1628
+ transition: opacity 0.3s, visibility 0.3s;
1629
+ }
1630
+
1631
+ [data-tooltip]:hover::after {
1632
+ opacity: 1;
1633
+ visibility: visible;
1634
+ }
1635
+
1636
+ /* Ensure nav items have proper stacking context */
1637
+ .nav-item[data-tooltip],
1638
+ .nav-title[data-tooltip] {
1639
+ position: relative !important;
1640
+ z-index: 1;
1641
+ }
1642
+
1643
+ .nav-item[data-tooltip]:hover,
1644
+ .nav-title[data-tooltip]:hover {
1645
+ z-index: 100000; /* Very high z-index to ensure tooltip appears above everything */
1646
+ }
1647
+
1648
+ /* Tooltip for nav titles (folders) */
1649
+ .nav-title[data-tooltip]::after {
1650
+ max-width: 350px;
1651
+ font-weight: var(--font-regular);
1652
+ }
1653
+
1654
+ /* Ensure nav sections don't clip tooltips */
1655
+ .nav-section {
1656
+ position: relative;
1657
+ overflow: visible !important;
1658
+ }
1659
+
1660
+ /* Remove forced overflow as we're using fixed positioning */
1661
+
1662
+ /* Dark mode tooltip styles */
1663
+ [data-theme="dark"] [data-tooltip]::after {
1664
+ background: var(--color-bg-secondary);
1665
+ color: var(--color-text-primary);
1666
+ border-color: var(--color-border-default);
1667
+ box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.5);
1668
+ }
1669
+
1670
+ [data-theme="dark"] [data-tooltip]::before {
1671
+ border-right-color: var(--color-bg-secondary);
1672
+ }
1673
+
1674
+ /* Remove custom positioning variables - tooltips always go right */
1675
+
1676
+ /* Floating Menu Button */
1677
+ .floating-menu-toggle {
1678
+ position: fixed;
1679
+ bottom: var(--space-6);
1680
+ right: var(--space-6);
1681
+ width: 56px;
1682
+ height: 56px;
1683
+ border-radius: 50%;
1684
+ background: var(--color-accent-blue);
1685
+ color: white;
1686
+ border: none;
1687
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 2px 4px rgba(0, 0, 0, 0.1);
1688
+ display: flex;
1689
+ align-items: center;
1690
+ justify-content: center;
1691
+ font-size: 1.25rem;
1692
+ cursor: pointer;
1693
+ z-index: 1001; /* Above sidebar */
1694
+ opacity: 0;
1695
+ transform: scale(0.8) translateY(20px);
1696
+ transition: all var(--duration-normal) var(--easing-out);
1697
+ -webkit-tap-highlight-color: transparent;
1698
+ }
1699
+
1700
+ .floating-menu-toggle.visible {
1701
+ opacity: 1;
1702
+ transform: scale(1) translateY(0);
1703
+ }
1704
+
1705
+ .floating-menu-toggle:hover {
1706
+ transform: scale(1.1) translateY(0);
1707
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2), 0 3px 6px rgba(0, 0, 0, 0.15);
1708
+ }
1709
+
1710
+ .floating-menu-toggle:active {
1711
+ transform: scale(0.95) translateY(0);
1712
+ }
1713
+
1714
+ .floating-menu-toggle i {
1715
+ transition: transform var(--duration-fast) var(--easing-out);
1716
+ }
1717
+
1718
+ .floating-menu-toggle:hover i {
1719
+ transform: rotate(90deg);
1720
+ }
1721
+
1722
+ /* Dark mode styles for floating button */
1723
+ .dark-mode .floating-menu-toggle {
1724
+ background: var(--color-accent-blue);
1725
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
1726
+ }
1727
+
1728
+ .dark-mode .floating-menu-toggle:hover {
1729
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
1730
+ }
1731
+
1732
+ /* Mobile adjustments */
1733
+ @media (max-width: 768px) {
1734
+ /* Disable tooltips on mobile to prevent overlap issues */
1735
+ [data-tooltip]::before,
1736
+ [data-tooltip]::after {
1737
+ display: none;
1738
+ }
1739
+
1740
+ .main-wrapper {
1741
+ flex-direction: column;
1742
+ height: auto;
1743
+ min-height: calc(100vh - var(--header-height) - var(--breadcrumb-height));
1744
+ margin-top: calc(var(--header-height) + var(--breadcrumb-height)); /* Account for both fixed elements */
1745
+ }
1746
+
1747
+ /* Sidebar positioning handled in earlier media query */
1748
+
1749
+ .content {
1750
+ padding: var(--space-3) var(--space-4); /* Consistent reduced padding on mobile */
1751
+ }
1752
+
1753
+ .content-inner {
1754
+ max-width: none;
1755
+ }
1756
+
1757
+ h1 {
1758
+ margin-left: calc(-1 * var(--space-4));
1759
+ margin-right: calc(-1 * var(--space-4));
1760
+ padding: 0 var(--space-4);
1761
+ }
1762
+
1763
+ /* Keep preview banner fixed on mobile */
1764
+
1765
+ /* Keep breadcrumbs fixed on mobile to prevent double spacing */
1766
+ }
1767
+
1768
+ /* Navigation Sections */
1769
+ .nav-section {
1770
+ margin-bottom: var(--space-1);
1771
+ }
1772
+
1773
+ .nav-title {
1774
+ display: flex;
1775
+ align-items: center;
1776
+ gap: var(--space-2);
1777
+ padding: var(--space-2);
1778
+ color: var(--color-text-primary);
1779
+ text-decoration: none;
1780
+ font-size: var(--text-sm);
1781
+ font-weight: var(--font-medium);
1782
+ border-radius: var(--radius-md);
1783
+ transition: all var(--duration-fast);
1784
+ cursor: pointer;
1785
+ }
1786
+
1787
+ .nav-title:hover {
1788
+ background: var(--color-bg-hover);
1789
+ }
1790
+
1791
+ .nav-title.collapsible {
1792
+ position: relative;
1793
+ }
1794
+
1795
+ .nav-title .collapse-icon {
1796
+ transition: transform var(--duration-fast);
1797
+ color: var(--color-text-tertiary);
1798
+ font-size: var(--text-xs);
1799
+ }
1800
+
1801
+ .nav-title.expanded .collapse-icon {
1802
+ transform: rotate(90deg);
1803
+ }
1804
+
1805
+ .nav-content {
1806
+ padding-left: var(--space-4);
1807
+ overflow: hidden;
1808
+ transition: max-height var(--duration-normal), opacity var(--duration-normal);
1809
+ }
1810
+
1811
+ .nav-content.collapsed {
1812
+ max-height: 0;
1813
+ opacity: 0;
1814
+ pointer-events: none;
1815
+ }
1816
+
1817
+ .nav-content:not(.collapsed) {
1818
+ max-height: 1000px;
1819
+ opacity: 1;
1820
+ }
1821
+
1822
+ /* Navigation Items */
1823
+ .nav-item {
1824
+ display: flex;
1825
+ align-items: center;
1826
+ gap: var(--space-2);
1827
+ padding: var(--space-1-5) var(--space-2);
1828
+ color: var(--color-text-secondary);
1829
+ text-decoration: none;
1830
+ font-size: var(--text-sm);
1831
+ border-radius: var(--radius-md);
1832
+ transition: all var(--duration-fast);
1833
+ margin-bottom: var(--space-0-5);
1834
+ }
1835
+
1836
+ .nav-item:hover {
1837
+ background: var(--color-bg-hover);
1838
+ color: var(--color-text-primary);
1839
+ }
1840
+
1841
+ .nav-item.active {
1842
+ background: var(--color-accent-blue-bg);
1843
+ color: var(--color-accent-blue);
1844
+ font-weight: var(--font-medium);
1845
+ }
1846
+
1847
+ .nav-item i {
1848
+ color: var(--color-text-tertiary);
1849
+ font-size: var(--text-xs);
1850
+ width: 12px;
1851
+ text-align: center;
1852
+ }
1853
+
1854
+ .nav-item.active i {
1855
+ color: var(--color-accent-blue);
1856
+ }
1857
+
1858
+ /* Authentication Pages */
1859
+ .auth-container {
1860
+ display: flex;
1861
+ align-items: center;
1862
+ justify-content: center;
1863
+ min-height: 100vh;
1864
+ background: var(--color-bg-primary);
1865
+ padding: var(--space-4);
1866
+ }
1867
+
1868
+ .auth-box {
1869
+ background: var(--color-bg-secondary);
1870
+ border: 1px solid var(--color-border-default);
1871
+ border-radius: var(--radius-lg);
1872
+ padding: var(--space-8);
1873
+ width: 100%;
1874
+ max-width: 400px;
1875
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
1876
+ }
1877
+
1878
+ .auth-box h1 {
1879
+ margin: 0 0 var(--space-6) 0;
1880
+ font-size: var(--text-2xl);
1881
+ font-weight: var(--font-semibold);
1882
+ color: var(--color-text-primary);
1883
+ text-align: center;
1884
+ }
1885
+
1886
+ .auth-box p {
1887
+ color: var(--color-text-secondary);
1888
+ text-align: center;
1889
+ margin-bottom: var(--space-4);
1890
+ }
1891
+
1892
+ .form-group {
1893
+ margin-bottom: var(--space-4);
1894
+ }
1895
+
1896
+ .form-group label {
1897
+ display: block;
1898
+ margin-bottom: var(--space-2);
1899
+ font-size: var(--text-sm);
1900
+ font-weight: var(--font-medium);
1901
+ color: var(--color-text-secondary);
1902
+ }
1903
+
1904
+ .form-group input {
1905
+ width: 100%;
1906
+ padding: var(--space-2) var(--space-3);
1907
+ border: 1px solid var(--color-border-default);
1908
+ border-radius: var(--radius-md);
1909
+ font-size: var(--text-base);
1910
+ background: var(--color-bg-primary);
1911
+ color: var(--color-text-primary);
1912
+ transition: all var(--duration-fast);
1913
+ }
1914
+
1915
+ .form-group input:focus {
1916
+ outline: none;
1917
+ border-color: var(--color-accent-blue);
1918
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1919
+ }
1920
+
1921
+ .auth-button {
1922
+ width: 100%;
1923
+ padding: var(--space-2-5) var(--space-4);
1924
+ background: var(--color-accent-blue);
1925
+ color: white;
1926
+ border: none;
1927
+ border-radius: var(--radius-md);
1928
+ font-size: var(--text-base);
1929
+ font-weight: var(--font-medium);
1930
+ cursor: pointer;
1931
+ transition: all var(--duration-fast);
1932
+ text-align: center;
1933
+ text-decoration: none;
1934
+ display: inline-block;
1935
+ }
1936
+
1937
+ .auth-button:hover {
1938
+ background: #2563eb;
1939
+ transform: translateY(-1px);
1940
+ box-shadow: 0 4px 12px rgba(59, 130, 246, 0.25);
1941
+ }
1942
+
1943
+ .auth-button:active {
1944
+ transform: translateY(0);
1945
+ }
1946
+
1947
+ .error-message {
1948
+ margin-top: var(--space-4);
1949
+ padding: var(--space-3);
1950
+ background: #fef2f2;
1951
+ border: 1px solid #fee2e2;
1952
+ border-radius: var(--radius-md);
1953
+ color: #dc2626;
1954
+ font-size: var(--text-sm);
1955
+ text-align: center;
1956
+ display: none;
1957
+ }
1958
+
1959
+ .error-message:not(:empty) {
1960
+ display: block;
1961
+ }
1962
+
1963
+ /* Dark mode auth styles */
1964
+ .dark .auth-box {
1965
+ background: var(--color-bg-secondary);
1966
+ border-color: var(--color-border-default);
1967
+ }
1968
+
1969
+ .dark .form-group input {
1970
+ background: var(--color-bg-primary);
1971
+ border-color: var(--color-border-default);
1972
+ }
1973
+
1974
+ .dark .error-message {
1975
+ background: #451a1a;
1976
+ border-color: #7f1d1d;
1977
+ color: #fca5a5;
1978
+ }
1979
+
1980
+ /* Phosphor Icons Alignment */
1981
+ .ph {
1982
+ display: inline-block;
1983
+ vertical-align: middle;
1984
+ line-height: 1;
1985
+ position: relative;
1986
+ top: -0.05em; /* Slight upward adjustment for better baseline alignment */
1987
+ }
1988
+
1989
+ /* Ensure icons in headings are properly aligned */
1990
+ h1 .ph, h2 .ph, h3 .ph, h4 .ph, h5 .ph, h6 .ph {
1991
+ font-size: 0.85em; /* Slightly smaller in headings */
1992
+ line-height: 1;
1993
+ top: -0.05em;
1994
+ }
1995
+
1996
+ /* Icons in lists need special handling */
1997
+ li .ph {
1998
+ margin-right: 0.3em;
1999
+ font-size: 1.1em;
2000
+ line-height: 1;
2001
+ vertical-align: middle;
2002
+ top: -0.05em;
2003
+ }
2004
+
2005
+ /* Icons in tables */
2006
+ td .ph, th .ph {
2007
+ line-height: 1;
2008
+ vertical-align: middle;
2009
+ top: -0.05em;
2010
+ }
2011
+
2012
+ /* Icons in navigation */
2013
+ .nav-item .ph,
2014
+ .nav-title .ph {
2015
+ vertical-align: middle;
2016
+ line-height: 1;
2017
+ top: 0; /* Navigation items are flex, so no adjustment needed */
2018
+ }
2019
+
2020
+ /* Icon size adjustments for better visual balance */
2021
+ .content p .ph {
2022
+ font-size: 1.1em; /* Slightly larger than text for visual balance */
2023
+ }
2024
+
2025
+ /* Special handling for inline code with icons */
2026
+ code .ph {
2027
+ font-size: 0.9em;
2028
+ vertical-align: middle;
2029
+ line-height: 1;
2030
+ top: 0;
2031
+ }
2032
+
2033
+ /* Additional fine-tuning for specific contexts */
2034
+ .content-inner .ph {
2035
+ /* Remove the transform as we're now using consistent vertical-align: middle */
2036
+ }