@knowcode/doc-builder 1.9.19 → 1.9.21

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 (87) hide show
  1. package/cli.js +15 -1
  2. package/doc-builder.config.js +4 -2
  3. package/doc-builder.config.js.backup.1754384764054 +124 -0
  4. package/doc-builder.config.js.backup.1754567425847 +124 -0
  5. package/html/README.html +12 -4
  6. package/html/about-doc-builder.html +12 -4
  7. package/html/documentation-index.html +12 -4
  8. package/html/guides/authentication-default-change.html +12 -4
  9. package/html/guides/authentication-guide.html +12 -4
  10. package/html/guides/claude-workflow-guide.html +12 -4
  11. package/html/guides/configuration-guide.html +12 -4
  12. package/html/guides/documentation-standards.html +12 -4
  13. package/html/guides/html-embedding-guide.html +12 -4
  14. package/html/guides/image-modal-guide.html +12 -4
  15. package/html/guides/phosphor-icons-guide.html +12 -4
  16. package/html/guides/private-directory-authentication-troubleshooting.html +12 -4
  17. package/html/guides/private-directory-authentication.html +12 -4
  18. package/html/guides/public-site-deployment.html +12 -4
  19. package/html/guides/search-engine-verification-guide.html +12 -4
  20. package/html/guides/seo-guide.html +12 -4
  21. package/html/guides/seo-optimization-guide.html +12 -4
  22. package/html/guides/supabase-authentication-complete-guide.html +12 -4
  23. package/html/guides/troubleshooting-guide.html +12 -4
  24. package/html/guides/windows-setup-guide.html +12 -4
  25. package/html/image-modal-test.html +12 -4
  26. package/html/index.html +12 -4
  27. package/html/private/cache-control-anti-pattern.html +12 -4
  28. package/html/private/launch/README.html +12 -4
  29. package/html/private/launch/auth-cleanup-summary.html +12 -4
  30. package/html/private/launch/bubble-plugin-specification.html +12 -4
  31. package/html/private/launch/go-to-market-strategy.html +12 -4
  32. package/html/private/launch/launch-announcements.html +12 -4
  33. package/html/private/launch/vercel-deployment-auth-setup.html +12 -4
  34. package/html/private/next-steps-walkthrough.html +12 -4
  35. package/html/private/supabase-auth-implementation-completed.html +12 -4
  36. package/html/private/supabase-auth-implementation-plan.html +12 -4
  37. package/html/private/supabase-auth-integration-plan.html +12 -4
  38. package/html/private/supabase-auth-setup-guide.html +12 -4
  39. package/html/private/test-private-doc.html +12 -4
  40. package/html/private/user-management-tooling.html +12 -4
  41. package/html/prompts/beautiful-documentation-design.html +12 -4
  42. package/html/prompts/markdown-document-standards.html +12 -4
  43. package/html/prompts/project-rename-strategy-sasha-publish.html +12 -4
  44. package/html/sitemap.xml +74 -56
  45. package/html/test-questions/how-does-it-work%3F.html +290 -0
  46. package/html/test-questions/step-1%3A%20getting-started.html +285 -0
  47. package/html/test-questions/what-is-the-purpose.html +289 -0
  48. package/html/vercel-cli-setup-guide.html +12 -4
  49. package/html/vercel-first-time-setup-guide.html +12 -4
  50. package/html-static/404.html +115 -0
  51. package/html-static/README.html +456 -0
  52. package/html-static/about-doc-builder.html +425 -0
  53. package/html-static/css/notion-style.css +2426 -0
  54. package/html-static/documentation-index.html +405 -0
  55. package/html-static/guides/authentication-default-change.html +304 -0
  56. package/html-static/guides/authentication-guide.html +443 -0
  57. package/html-static/guides/claude-workflow-guide.html +1008 -0
  58. package/html-static/guides/configuration-guide.html +406 -0
  59. package/html-static/guides/documentation-standards.html +628 -0
  60. package/html-static/guides/html-embedding-guide.html +395 -0
  61. package/html-static/guides/image-modal-guide.html +449 -0
  62. package/html-static/guides/phosphor-icons-guide.html +518 -0
  63. package/html-static/guides/private-directory-authentication-troubleshooting.html +489 -0
  64. package/html-static/guides/private-directory-authentication.html +475 -0
  65. package/html-static/guides/public-site-deployment.html +365 -0
  66. package/html-static/guides/search-engine-verification-guide.html +476 -0
  67. package/html-static/guides/seo-guide.html +595 -0
  68. package/html-static/guides/seo-optimization-guide.html +821 -0
  69. package/html-static/guides/supabase-authentication-complete-guide.html +800 -0
  70. package/html-static/guides/troubleshooting-guide.html +567 -0
  71. package/html-static/guides/windows-setup-guide.html +793 -0
  72. package/html-static/image-modal-test.html +252 -0
  73. package/html-static/index.html +456 -0
  74. package/html-static/js/main.js +1692 -0
  75. package/html-static/prompts/beautiful-documentation-design.html +718 -0
  76. package/html-static/prompts/markdown-document-standards.html +356 -0
  77. package/html-static/prompts/project-rename-strategy-sasha-publish.html +464 -0
  78. package/html-static/robots.txt +5 -0
  79. package/html-static/sitemap.xml +189 -0
  80. package/html-static/test-questions/how-does-it-work%3F.html +228 -0
  81. package/html-static/test-questions/step-1%3A%20getting-started.html +223 -0
  82. package/html-static/test-questions/what-is-the-purpose.html +227 -0
  83. package/html-static/vercel-cli-setup-guide.html +429 -0
  84. package/html-static/vercel-first-time-setup-guide.html +388 -0
  85. package/lib/config.js +9 -2
  86. package/lib/core-builder.js +167 -6
  87. package/package.json +1 -1
@@ -0,0 +1,2426 @@
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
+ .auth-btn {
294
+ background: none;
295
+ border: none;
296
+ font-size: var(--text-lg);
297
+ cursor: pointer;
298
+ color: var(--color-text-primary);
299
+ padding: var(--space-2);
300
+ border-radius: var(--radius-md);
301
+ transition: all var(--duration-fast);
302
+ text-decoration: none;
303
+ display: flex;
304
+ align-items: center;
305
+ justify-content: center;
306
+ opacity: 0.7;
307
+ }
308
+
309
+ .logout-btn:hover {
310
+ background: var(--color-bg-tertiary);
311
+ opacity: 1;
312
+ color: var(--color-accent-red);
313
+ transform: translateY(-1px);
314
+ }
315
+
316
+ .auth-btn:hover {
317
+ background: var(--color-bg-tertiary);
318
+ opacity: 1;
319
+ color: var(--color-text-primary);
320
+ transform: translateY(-1px);
321
+ }
322
+
323
+ /* Sidebar */
324
+ .sidebar {
325
+ position: relative;
326
+ width: var(--sidebar-width);
327
+ background: var(--color-bg-secondary);
328
+ border-right: 1px solid var(--color-border-default);
329
+ overflow: hidden;
330
+ transition: width var(--duration-normal), transform 0.3s ease, margin-left 0.3s ease;
331
+ min-width: 200px;
332
+ max-width: 500px;
333
+ user-select: none;
334
+ display: flex;
335
+ flex-direction: column;
336
+ z-index: 100;
337
+ flex-shrink: 0;
338
+ height: 100%;
339
+ }
340
+
341
+ /* Desktop sidebar closed state */
342
+ @media (min-width: 769px) {
343
+ .sidebar.closed {
344
+ transform: translateX(-100%);
345
+ margin-left: calc(var(--sidebar-width) * -1);
346
+ }
347
+ }
348
+
349
+ /* Banner adjustment no longer needed with relative positioning */
350
+
351
+
352
+ .sidebar-home-link {
353
+ display: inline-flex;
354
+ align-items: center;
355
+ gap: var(--space-2);
356
+ padding: var(--space-2) var(--space-3);
357
+ color: var(--color-text-secondary);
358
+ text-decoration: none;
359
+ border-radius: var(--radius-base);
360
+ font-size: 0.875rem;
361
+ font-weight: 500;
362
+ transition: all 0.2s;
363
+ }
364
+
365
+ .sidebar-home-link:hover {
366
+ background: var(--color-bg-secondary);
367
+ color: var(--color-text-primary);
368
+ }
369
+
370
+ .sidebar-home-link i {
371
+ font-size: 1rem;
372
+ }
373
+
374
+ .filter-box {
375
+ position: relative;
376
+ }
377
+
378
+ .filter-input {
379
+ width: 100%;
380
+ padding: var(--space-2) var(--space-3);
381
+ padding-left: var(--space-8);
382
+ font-size: var(--text-sm);
383
+ border: 1px solid var(--color-border-default);
384
+ border-radius: var(--radius-md);
385
+ background: var(--color-bg-default);
386
+ transition: all var(--duration-fast) var(--easing-out);
387
+ outline: none;
388
+ }
389
+
390
+ .filter-input:hover {
391
+ border-color: var(--color-border-hover);
392
+ }
393
+
394
+ .filter-input:focus {
395
+ border-color: var(--color-border-focus);
396
+ box-shadow: 0 0 0 3px rgba(35, 131, 226, 0.15);
397
+ }
398
+
399
+ .filter-icon {
400
+ position: absolute;
401
+ left: var(--space-3);
402
+ top: 50%;
403
+ transform: translateY(-50%);
404
+ color: var(--color-text-tertiary);
405
+ font-size: var(--text-sm);
406
+ }
407
+
408
+ /* Preview Banner */
409
+ .preview-banner {
410
+ background: var(--color-accent-yellow-bg);
411
+ border-bottom: 1px solid var(--color-accent-yellow);
412
+ color: var(--color-text-primary);
413
+ padding: var(--space-2) 0;
414
+ position: fixed;
415
+ top: var(--header-height);
416
+ left: 0;
417
+ right: 0;
418
+ z-index: 1000;
419
+ transition: transform var(--duration-normal);
420
+ }
421
+
422
+ .preview-banner.hidden {
423
+ transform: translateY(-100%);
424
+ }
425
+
426
+ .banner-content {
427
+ display: flex;
428
+ align-items: center;
429
+ justify-content: center;
430
+ gap: var(--space-2);
431
+ max-width: 1400px;
432
+ margin: 0 auto;
433
+ padding: 0 var(--space-4);
434
+ }
435
+
436
+ .banner-icon {
437
+ color: var(--color-accent-yellow);
438
+ font-size: var(--text-sm);
439
+ }
440
+
441
+ .banner-text {
442
+ font-size: var(--text-sm);
443
+ font-weight: var(--font-medium);
444
+ }
445
+
446
+ .banner-dismiss {
447
+ background: none;
448
+ border: none;
449
+ color: var(--color-text-secondary);
450
+ cursor: pointer;
451
+ padding: var(--space-1);
452
+ margin-left: auto;
453
+ border-radius: var(--radius-sm);
454
+ transition: all var(--duration-fast);
455
+ }
456
+
457
+ .banner-dismiss:hover {
458
+ background: var(--color-bg-hover);
459
+ color: var(--color-text-primary);
460
+ }
461
+
462
+ /* Banner types */
463
+ .banner-warning {
464
+ background: var(--color-accent-yellow-bg);
465
+ border-bottom: 1px solid var(--color-accent-yellow);
466
+ }
467
+
468
+ .banner-warning .banner-icon {
469
+ color: var(--color-accent-yellow);
470
+ }
471
+
472
+ .banner-info {
473
+ background: var(--color-accent-blue-bg);
474
+ border-bottom: 1px solid var(--color-accent-blue);
475
+ }
476
+
477
+ .banner-info .banner-icon {
478
+ color: var(--color-accent-blue);
479
+ }
480
+
481
+ .banner-success {
482
+ background: var(--color-accent-green-bg);
483
+ border-bottom: 1px solid var(--color-accent-green);
484
+ }
485
+
486
+ .banner-success .banner-icon {
487
+ color: var(--color-accent-green);
488
+ }
489
+
490
+ .banner-error {
491
+ background: var(--color-accent-red-bg);
492
+ border-bottom: 1px solid var(--color-accent-red);
493
+ }
494
+
495
+ .banner-error .banner-icon {
496
+ color: var(--color-accent-red);
497
+ }
498
+
499
+ /* Breadcrumbs - definition moved to line 888 to avoid duplication */
500
+
501
+ .breadcrumb-item {
502
+ display: inline-flex;
503
+ align-items: center;
504
+ gap: var(--space-1);
505
+ color: var(--color-text-secondary);
506
+ text-decoration: none;
507
+ font-size: var(--text-sm);
508
+ padding: var(--space-1) var(--space-2);
509
+ border-radius: var(--radius-sm);
510
+ transition: all var(--duration-fast);
511
+ }
512
+
513
+ .breadcrumb-item:hover {
514
+ background: var(--color-bg-hover);
515
+ color: var(--color-text-primary);
516
+ }
517
+
518
+ .breadcrumb-item.current {
519
+ color: var(--color-text-primary);
520
+ font-weight: var(--font-medium);
521
+ }
522
+
523
+ .breadcrumb-separator {
524
+ color: var(--color-text-tertiary);
525
+ font-size: var(--text-xs);
526
+ margin: 0 var(--space-1);
527
+ }
528
+
529
+ /* Main Wrapper */
530
+ .main-wrapper {
531
+ display: flex;
532
+ height: calc(100vh - var(--header-height) - var(--breadcrumb-height));
533
+ margin-top: calc(var(--header-height) + var(--breadcrumb-height));
534
+ overflow: hidden;
535
+ }
536
+
537
+ .main-wrapper.banner-visible {
538
+ height: calc(100vh - var(--header-height) - var(--breadcrumb-height) - 3.5rem);
539
+ margin-top: calc(var(--header-height) + var(--breadcrumb-height) + 3.5rem);
540
+ }
541
+
542
+ .sidebar-header {
543
+ padding: var(--space-3);
544
+ border-bottom: 1px solid var(--color-border-default);
545
+ margin-bottom: 0;
546
+ }
547
+
548
+
549
+ /* Navigation */
550
+ .navigation {
551
+ flex: 1;
552
+ padding: var(--space-2);
553
+ overflow-y: auto;
554
+ overflow-x: visible;
555
+
556
+ /* Scrollbar styling */
557
+ scrollbar-width: thin;
558
+ scrollbar-color: var(--color-border-default) transparent;
559
+ }
560
+
561
+ .resize-handle {
562
+ width: 4px;
563
+ background: transparent;
564
+ cursor: col-resize;
565
+ position: absolute;
566
+ top: 0;
567
+ right: 0;
568
+ bottom: 0;
569
+ transition: background var(--duration-fast);
570
+ }
571
+
572
+ .resize-handle:hover {
573
+ background: var(--color-border-focus);
574
+ }
575
+
576
+ .navigation::-webkit-scrollbar {
577
+ width: 6px;
578
+ }
579
+
580
+ .navigation::-webkit-scrollbar-track {
581
+ background: transparent;
582
+ }
583
+
584
+ .navigation::-webkit-scrollbar-thumb {
585
+ background: var(--color-border-default);
586
+ border-radius: 3px;
587
+ }
588
+
589
+ .navigation::-webkit-scrollbar-thumb:hover {
590
+ background: var(--color-text-tertiary);
591
+ }
592
+
593
+ .nav-section {
594
+ margin-bottom: var(--space-0-5);
595
+ }
596
+
597
+ .nav-section[data-level="0"] {
598
+ margin-left: 0;
599
+ }
600
+
601
+ .nav-section[data-level="1"] {
602
+ margin-left: var(--space-4);
603
+ margin-bottom: var(--space-0-5);
604
+ }
605
+
606
+ .nav-section[data-level="2"] {
607
+ margin-left: var(--space-8);
608
+ margin-bottom: var(--space-0-5);
609
+ }
610
+
611
+ .nav-title {
612
+ display: flex;
613
+ align-items: center;
614
+ padding: var(--space-1-5) var(--space-3);
615
+ font-size: var(--text-sm);
616
+ font-weight: var(--font-medium);
617
+ color: var(--color-text-secondary);
618
+ cursor: pointer;
619
+ border-radius: var(--radius-md);
620
+ transition: all var(--duration-fast) var(--easing-out);
621
+ user-select: none;
622
+ }
623
+
624
+ /* Indent nav titles based on their level */
625
+ .nav-section[data-level="1"] .nav-title {
626
+ padding-left: calc(var(--space-3) + var(--space-4));
627
+ }
628
+
629
+ .nav-section[data-level="2"] .nav-title {
630
+ padding-left: calc(var(--space-3) + var(--space-8));
631
+ }
632
+
633
+ .nav-title:hover {
634
+ background: var(--color-bg-hover);
635
+ color: var(--color-text-primary);
636
+ }
637
+
638
+ .nav-title i {
639
+ margin-right: var(--space-2);
640
+ font-size: var(--text-sm);
641
+ }
642
+
643
+ .collapse-icon {
644
+ margin-right: var(--space-1) !important;
645
+ transition: transform var(--duration-fast) var(--easing-out);
646
+ }
647
+
648
+ .nav-title.expanded .collapse-icon {
649
+ transform: rotate(90deg);
650
+ }
651
+
652
+ .nav-content {
653
+ overflow: hidden;
654
+ transition: all var(--duration-normal) var(--easing-out);
655
+ }
656
+
657
+ .nav-content.collapsed {
658
+ max-height: 0;
659
+ opacity: 0;
660
+ }
661
+
662
+ .nav-item {
663
+ display: flex;
664
+ align-items: center;
665
+ padding: var(--space-1-5) var(--space-3);
666
+ font-size: var(--text-sm);
667
+ color: var(--color-text-primary);
668
+ text-decoration: none;
669
+ border-radius: var(--radius-md);
670
+ transition: all var(--duration-fast) var(--easing-out);
671
+ margin-bottom: 0;
672
+ gap: var(--space-2);
673
+ }
674
+
675
+ /* Indent nav items based on their parent section level */
676
+ .nav-section[data-level="0"] .nav-item {
677
+ padding-left: calc(var(--space-3) + var(--space-6));
678
+ }
679
+
680
+ .nav-section[data-level="1"] .nav-item {
681
+ padding-left: calc(var(--space-3) + var(--space-10));
682
+ }
683
+
684
+ .nav-section[data-level="2"] .nav-item {
685
+ padding-left: calc(var(--space-3) + var(--space-12));
686
+ }
687
+
688
+ .nav-item:hover {
689
+ background: var(--color-bg-hover);
690
+ color: var(--color-text-primary);
691
+ text-decoration: none;
692
+ }
693
+
694
+ .nav-item.active {
695
+ background: var(--color-bg-hover);
696
+ color: var(--color-text-primary);
697
+ font-weight: var(--font-medium);
698
+ }
699
+
700
+ .nav-item i {
701
+ margin-right: var(--space-2);
702
+ font-size: var(--text-sm);
703
+ color: var(--color-text-tertiary);
704
+ }
705
+
706
+ /* Main Content */
707
+ .content {
708
+ flex: 1;
709
+ padding: 40px var(--space-8);
710
+ overflow-y: auto;
711
+ background: var(--color-bg-default);
712
+ }
713
+
714
+ .content-inner {
715
+ max-width: 65rem;
716
+ margin: 0 auto;
717
+ }
718
+
719
+ /* Tables */
720
+ table {
721
+ width: 100%;
722
+ border-collapse: collapse;
723
+ margin: var(--space-4) 0;
724
+ font-size: var(--text-sm);
725
+ background: var(--color-bg-default);
726
+ border: 1px solid var(--color-border-default);
727
+ border-radius: var(--radius-lg);
728
+ overflow: hidden;
729
+ }
730
+
731
+ th {
732
+ text-align: left;
733
+ font-weight: var(--font-semibold);
734
+ padding: var(--space-3) var(--space-4);
735
+ background: var(--color-bg-secondary);
736
+ border-bottom: 1px solid var(--color-border-default);
737
+ color: var(--color-text-primary);
738
+ vertical-align: top !important;
739
+ }
740
+
741
+ td {
742
+ padding: var(--space-3) var(--space-4);
743
+ border-bottom: 1px solid var(--color-border-default);
744
+ color: var(--color-text-primary);
745
+ vertical-align: top !important;
746
+ }
747
+
748
+ /* Ensure all table cell content is top-aligned */
749
+ table th,
750
+ table td {
751
+ vertical-align: top !important;
752
+ }
753
+
754
+ /* Ensure nested elements in table cells don't affect alignment */
755
+ table td > *,
756
+ table th > * {
757
+ vertical-align: top;
758
+ }
759
+
760
+ /* Remove top margin from first element in table cells */
761
+ td > *:first-child,
762
+ th > *:first-child {
763
+ margin-top: 0 !important;
764
+ }
765
+
766
+ /* Remove bottom margin from last element in table cells */
767
+ td > *:last-child,
768
+ th > *:last-child {
769
+ margin-bottom: 0 !important;
770
+ }
771
+
772
+ /* Specifically target common block elements that might be first in cells */
773
+ td > h1:first-child,
774
+ td > h2:first-child,
775
+ td > h3:first-child,
776
+ td > h4:first-child,
777
+ td > h5:first-child,
778
+ td > h6:first-child,
779
+ td > p:first-child,
780
+ td > ul:first-child,
781
+ td > ol:first-child,
782
+ td > blockquote:first-child,
783
+ td > pre:first-child,
784
+ th > h1:first-child,
785
+ th > h2:first-child,
786
+ th > h3:first-child,
787
+ th > h4:first-child,
788
+ th > h5:first-child,
789
+ th > h6:first-child,
790
+ th > p:first-child,
791
+ th > ul:first-child,
792
+ th > ol:first-child,
793
+ th > blockquote:first-child,
794
+ th > pre:first-child {
795
+ margin-top: 0 !important;
796
+ padding-top: 0 !important;
797
+ }
798
+
799
+ tr:last-child td {
800
+ border-bottom: none;
801
+ }
802
+
803
+ tr:hover {
804
+ background: var(--color-bg-hover);
805
+ }
806
+
807
+ /* Buttons */
808
+ .btn {
809
+ display: inline-flex;
810
+ align-items: center;
811
+ justify-content: center;
812
+ gap: var(--space-2);
813
+ padding: var(--space-2) var(--space-4);
814
+ font-size: var(--text-sm);
815
+ font-weight: var(--font-medium);
816
+ line-height: var(--leading-tight);
817
+ border-radius: var(--radius-md);
818
+ border: 1px solid transparent;
819
+ cursor: pointer;
820
+ transition: all var(--duration-normal) var(--easing-out);
821
+ outline: none;
822
+ text-decoration: none;
823
+ }
824
+
825
+ .btn-primary {
826
+ background: var(--color-primary);
827
+ color: var(--color-text-inverse);
828
+ border-color: var(--color-primary);
829
+ }
830
+
831
+ .btn-primary:hover {
832
+ background: var(--color-primary-hover);
833
+ border-color: var(--color-primary-hover);
834
+ }
835
+
836
+ .btn-secondary {
837
+ background: var(--color-bg-default);
838
+ color: var(--color-text-primary);
839
+ border-color: var(--color-border-default);
840
+ }
841
+
842
+ .btn-secondary:hover {
843
+ background: var(--color-bg-secondary);
844
+ border-color: var(--color-border-hover);
845
+ }
846
+
847
+ .btn-ghost {
848
+ background: transparent;
849
+ color: var(--color-text-primary);
850
+ border-color: transparent;
851
+ }
852
+
853
+ .btn-ghost:hover {
854
+ background: var(--color-bg-secondary);
855
+ }
856
+
857
+ /* Cards */
858
+ .card {
859
+ background: var(--color-bg-card);
860
+ border: 1px solid var(--color-border-default);
861
+ border-radius: var(--radius-lg);
862
+ padding: var(--space-6);
863
+ margin-bottom: var(--space-4);
864
+ box-shadow: var(--shadow-sm);
865
+ transition: all var(--duration-normal) var(--easing-out);
866
+ }
867
+
868
+ .card:hover {
869
+ box-shadow: var(--shadow-md);
870
+ transform: translateY(-2px);
871
+ }
872
+
873
+ /* Badges */
874
+ .badge {
875
+ display: inline-flex;
876
+ align-items: center;
877
+ padding: var(--space-0-5) var(--space-2);
878
+ font-size: var(--text-xs);
879
+ font-weight: var(--font-medium);
880
+ line-height: var(--leading-normal);
881
+ border-radius: var(--radius-sm);
882
+ background: var(--color-border-default);
883
+ color: var(--color-text-primary);
884
+ }
885
+
886
+ .badge-primary {
887
+ background: var(--color-primary);
888
+ color: var(--color-text-inverse);
889
+ }
890
+
891
+ .badge-success {
892
+ background: var(--color-accent-green-bg);
893
+ color: var(--color-accent-green);
894
+ }
895
+
896
+ .badge-warning {
897
+ background: var(--color-accent-yellow-bg);
898
+ color: var(--color-accent-yellow);
899
+ }
900
+
901
+ .badge-danger {
902
+ background: var(--color-accent-red-bg);
903
+ color: var(--color-accent-red);
904
+ }
905
+
906
+ /* Theme Toggle */
907
+ .theme-toggle {
908
+ padding: var(--space-2);
909
+ background: transparent;
910
+ border: none;
911
+ cursor: pointer;
912
+ color: var(--color-text-secondary);
913
+ font-size: var(--text-lg);
914
+ transition: color var(--duration-fast) var(--easing-out);
915
+ }
916
+
917
+ .theme-toggle:hover {
918
+ color: var(--color-text-primary);
919
+ }
920
+
921
+ /* Dark Theme */
922
+ [data-theme="dark"] {
923
+ --color-bg-default: #191919;
924
+ --color-bg-secondary: #202020;
925
+ --color-bg-tertiary: #2A2A2A;
926
+ --color-bg-hover: #2A2A2A;
927
+ --color-bg-card: #202020;
928
+
929
+ --color-text-primary: #E6E6E6;
930
+ --color-text-secondary: #ABABAB;
931
+ --color-text-tertiary: #787774;
932
+
933
+ --color-border-default: #373737;
934
+ --color-border-hover: #474747;
935
+ --color-divider: #2A2A2A;
936
+
937
+ --color-shadow: rgba(0, 0, 0, 0.3);
938
+ }
939
+
940
+ /* Dark theme Mermaid styles */
941
+ [data-theme="dark"] .mermaid-container {
942
+ background: var(--color-bg-default);
943
+ border-color: var(--color-border-default);
944
+ }
945
+
946
+ [data-theme="dark"] .mermaid-title {
947
+ background: var(--color-bg-secondary);
948
+ border-color: var(--color-border-default);
949
+ color: var(--color-text-primary);
950
+ }
951
+
952
+ [data-theme="dark"] .mermaid-toolbar {
953
+ background: var(--color-bg-secondary);
954
+ border-color: var(--color-border-default);
955
+ }
956
+
957
+ [data-theme="dark"] .mermaid-btn {
958
+ background: var(--color-bg-default);
959
+ border-color: var(--color-border-default);
960
+ color: var(--color-text-secondary);
961
+ }
962
+
963
+ [data-theme="dark"] .mermaid-btn:hover {
964
+ background: var(--color-accent-blue);
965
+ color: var(--color-text-inverse);
966
+ border-color: var(--color-accent-blue);
967
+ }
968
+
969
+ [data-theme="dark"] .mermaid-fullscreen-wrapper {
970
+ background: var(--color-bg-default);
971
+ color: var(--color-text-primary);
972
+ }
973
+
974
+ /* Breadcrumbs */
975
+ .breadcrumbs {
976
+ display: flex;
977
+ align-items: center;
978
+ padding: 0.5rem var(--space-6);
979
+ background: var(--color-bg-secondary);
980
+ border-bottom: 1px solid var(--color-border-default);
981
+ font-size: var(--text-sm);
982
+ color: var(--color-text-secondary);
983
+ position: fixed;
984
+ top: var(--header-height);
985
+ left: 0;
986
+ right: 0;
987
+ height: var(--breadcrumb-height);
988
+ z-index: 900;
989
+ transition: top var(--duration-normal), background-color var(--duration-normal);
990
+ gap: var(--space-2);
991
+ }
992
+
993
+ .breadcrumbs.banner-visible {
994
+ top: calc(var(--header-height) + 3.5rem);
995
+ }
996
+
997
+ .breadcrumbs:not(.banner-visible) {
998
+ top: var(--header-height);
999
+ }
1000
+
1001
+ .breadcrumb-item {
1002
+ display: flex;
1003
+ align-items: center;
1004
+ gap: var(--space-1-5);
1005
+ color: var(--color-text-tertiary);
1006
+ text-decoration: none;
1007
+ padding: var(--space-1) var(--space-2);
1008
+ border-radius: var(--radius-sm);
1009
+ transition: all var(--duration-fast);
1010
+ white-space: nowrap;
1011
+ }
1012
+
1013
+ .breadcrumb-item:hover:not(.current) {
1014
+ background: var(--color-bg-hover);
1015
+ color: var(--color-text-secondary);
1016
+ }
1017
+
1018
+ .breadcrumb-item.current {
1019
+ color: var(--color-text-primary);
1020
+ font-weight: var(--font-medium);
1021
+ cursor: default;
1022
+ }
1023
+
1024
+ .breadcrumb-separator {
1025
+ margin: 0 var(--space-1);
1026
+ color: var(--color-text-tertiary);
1027
+ font-size: var(--text-xs);
1028
+ opacity: 0.6;
1029
+ }
1030
+
1031
+ .breadcrumb-item i {
1032
+ font-size: var(--text-xs);
1033
+ opacity: 0.8;
1034
+ }
1035
+
1036
+ .breadcrumb-item.current i {
1037
+ opacity: 1;
1038
+ }
1039
+
1040
+ /* Banner visibility handled in main breadcrumbs definition */
1041
+
1042
+ /* Menu Toggle (Mobile) */
1043
+ .menu-toggle {
1044
+ display: none;
1045
+ background: none;
1046
+ border: none;
1047
+ font-size: 1.5rem;
1048
+ cursor: pointer;
1049
+ color: var(--color-text-primary);
1050
+ padding: var(--space-2);
1051
+ border-radius: var(--radius-small);
1052
+ transition: all var(--duration-fast) var(--easing-out);
1053
+ }
1054
+
1055
+ .menu-toggle:hover {
1056
+ background: var(--color-bg-secondary);
1057
+ color: var(--color-text-primary);
1058
+ }
1059
+
1060
+ /* Show menu toggle on desktop when menu starts closed or is closed */
1061
+ @media (min-width: 769px) {
1062
+ body.menu-starts-closed .menu-toggle {
1063
+ display: block;
1064
+ }
1065
+ }
1066
+
1067
+ /* Responsive Design */
1068
+ /* Keep sidebar visible on tablets, hide only on mobile */
1069
+
1070
+ @media (max-width: 768px) {
1071
+ .header-content {
1072
+ padding: 0 var(--space-4);
1073
+ }
1074
+
1075
+ /* Hide sidebar on mobile */
1076
+ .sidebar {
1077
+ position: fixed;
1078
+ top: calc(var(--header-height) + var(--breadcrumb-height));
1079
+ left: 0;
1080
+ height: calc(100vh - var(--header-height) - var(--breadcrumb-height));
1081
+ z-index: 1002; /* Above header and floating button */
1082
+ transform: translateX(-100%);
1083
+ transition: transform var(--duration-normal) var(--easing-out);
1084
+ box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15); /* Add shadow for depth */
1085
+ }
1086
+
1087
+ .sidebar.open {
1088
+ transform: translateX(0);
1089
+ }
1090
+
1091
+ /* Mobile menu overlay */
1092
+ .sidebar-overlay {
1093
+ display: none;
1094
+ position: fixed;
1095
+ top: 0;
1096
+ left: 0;
1097
+ right: 0;
1098
+ bottom: 0;
1099
+ background: rgba(0, 0, 0, 0.5);
1100
+ z-index: 1001; /* Below sidebar but above content */
1101
+ opacity: 0;
1102
+ transition: opacity var(--duration-normal);
1103
+ }
1104
+
1105
+ .sidebar-overlay.active {
1106
+ display: block;
1107
+ opacity: 1;
1108
+ }
1109
+
1110
+ .main-wrapper {
1111
+ margin-left: 0;
1112
+ margin-top: var(--header-height); /* Only account for fixed header on mobile */
1113
+ }
1114
+
1115
+ .content {
1116
+ margin-left: 0;
1117
+ padding: var(--space-3) var(--space-4); /* Reduced top/bottom padding on mobile */
1118
+ }
1119
+
1120
+ .menu-toggle {
1121
+ display: block;
1122
+ }
1123
+ }
1124
+
1125
+ /* Mermaid Diagrams */
1126
+ .mermaid {
1127
+ background: var(--color-bg-secondary);
1128
+ padding: var(--space-4);
1129
+ border-radius: var(--radius-lg);
1130
+ overflow-x: auto;
1131
+ margin: var(--space-2) 0;
1132
+ transition: all var(--duration-normal);
1133
+ }
1134
+
1135
+ /* Enhanced Mermaid SVG Styling */
1136
+ .mermaid svg {
1137
+ max-width: 100%;
1138
+ height: auto;
1139
+ }
1140
+
1141
+ /* Enhanced Mermaid Styling - only applied when mermaidEnhanced is enabled */
1142
+ [data-mermaid-enhanced="true"] .mermaid svg .node rect,
1143
+ [data-mermaid-enhanced="true"] .mermaid svg .node polygon,
1144
+ [data-mermaid-enhanced="true"] .mermaid svg .node circle,
1145
+ [data-mermaid-enhanced="true"] .mermaid svg .node ellipse {
1146
+ filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1)) !important;
1147
+ transition: all 0.2s ease !important;
1148
+ }
1149
+
1150
+ /* Enhanced rectangle shapes with rounded corners */
1151
+ [data-mermaid-enhanced="true"] .mermaid svg .node rect {
1152
+ rx: 8px !important;
1153
+ ry: 8px !important;
1154
+ }
1155
+
1156
+ /* Enhanced flowchart nodes */
1157
+ [data-mermaid-enhanced="true"] .mermaid svg .flowchart-node {
1158
+ filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.08)) !important;
1159
+ }
1160
+
1161
+ /* Smoother connection lines */
1162
+ [data-mermaid-enhanced="true"] .mermaid svg .flowchart-link {
1163
+ stroke-width: 2px !important;
1164
+ fill: none !important;
1165
+ }
1166
+
1167
+ /* Enhanced text styling */
1168
+ [data-mermaid-enhanced="true"] .mermaid svg .node text,
1169
+ [data-mermaid-enhanced="true"] .mermaid svg .edgeLabel text {
1170
+ font-family: var(--font-sans) !important;
1171
+ font-size: var(--text-base) !important;
1172
+ font-weight: var(--font-medium) !important;
1173
+ }
1174
+
1175
+ /* Hover effects for interactive elements */
1176
+ [data-mermaid-enhanced="true"] .mermaid svg .node:hover rect,
1177
+ [data-mermaid-enhanced="true"] .mermaid svg .node:hover polygon,
1178
+ [data-mermaid-enhanced="true"] .mermaid svg .node:hover circle,
1179
+ [data-mermaid-enhanced="true"] .mermaid svg .node:hover ellipse {
1180
+ filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.15)) !important;
1181
+ transform: translateY(-1px) !important;
1182
+ }
1183
+
1184
+ /* Enhanced cluster/subgraph styling */
1185
+ [data-mermaid-enhanced="true"] .mermaid svg .cluster rect {
1186
+ rx: 12px !important;
1187
+ ry: 12px !important;
1188
+ stroke-dasharray: none !important;
1189
+ opacity: 0.8 !important;
1190
+ }
1191
+
1192
+ /* Decision diamond improvements */
1193
+ [data-mermaid-enhanced="true"] .mermaid svg .flowchart-node polygon {
1194
+ filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.1)) !important;
1195
+ }
1196
+
1197
+ /* Process node styling */
1198
+ [data-mermaid-enhanced="true"] .mermaid svg .flowchart-node rect {
1199
+ stroke-width: 1.5px !important;
1200
+ }
1201
+
1202
+ /* Edge label background */
1203
+ [data-mermaid-enhanced="true"] .mermaid svg .edgeLabel .label {
1204
+ background: var(--color-bg-card) !important;
1205
+ border-radius: var(--radius-sm) !important;
1206
+ padding: var(--space-1) var(--space-2) !important;
1207
+ border: 1px solid var(--color-border-default) !important;
1208
+ }
1209
+
1210
+ /* Mermaid Full Screen Viewer */
1211
+ .mermaid-container {
1212
+ position: relative;
1213
+ margin: var(--space-6) 0;
1214
+ border: none;
1215
+ border-radius: 0;
1216
+ background: transparent;
1217
+ overflow: visible;
1218
+ }
1219
+
1220
+ .mermaid-title {
1221
+ padding: var(--space-3) var(--space-4);
1222
+ background: var(--color-bg-secondary);
1223
+ border-bottom: 1px solid var(--color-border-default);
1224
+ font-size: var(--text-base);
1225
+ font-weight: var(--font-semibold);
1226
+ color: var(--color-text-primary);
1227
+ }
1228
+
1229
+ .mermaid-toolbar {
1230
+ opacity: 0;
1231
+ transition: opacity 0.2s ease;
1232
+ position: absolute;
1233
+ top: var(--space-2);
1234
+ right: var(--space-2);
1235
+ background: rgba(255, 255, 255, 0.95);
1236
+ backdrop-filter: blur(4px);
1237
+ border-radius: var(--radius-md);
1238
+ border: 1px solid var(--color-border-muted);
1239
+ padding: var(--space-1);
1240
+ z-index: 10;
1241
+ box-shadow: var(--shadow-sm);
1242
+ }
1243
+
1244
+ .mermaid-container:hover .mermaid-toolbar {
1245
+ opacity: 1;
1246
+ }
1247
+
1248
+ /* Subtle hover effects for diagram containers */
1249
+ .mermaid-container:hover {
1250
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
1251
+ }
1252
+
1253
+ .mermaid-actions {
1254
+ display: flex;
1255
+ gap: var(--space-2);
1256
+ }
1257
+
1258
+ .mermaid-btn {
1259
+ width: 32px;
1260
+ height: 32px;
1261
+ padding: 0;
1262
+ border: none;
1263
+ border-radius: var(--radius-sm);
1264
+ background: transparent;
1265
+ color: var(--color-text-muted);
1266
+ cursor: pointer;
1267
+ transition: all var(--duration-fast);
1268
+ display: flex;
1269
+ align-items: center;
1270
+ justify-content: center;
1271
+ }
1272
+
1273
+ .mermaid-btn:hover {
1274
+ background: var(--color-accent-blue);
1275
+ color: white;
1276
+ transform: scale(1.05);
1277
+ }
1278
+
1279
+ .mermaid-btn i {
1280
+ font-size: 14px;
1281
+ }
1282
+
1283
+ .mermaid-wrapper {
1284
+ padding: var(--space-3);
1285
+ overflow: auto;
1286
+ max-height: 600px;
1287
+ }
1288
+
1289
+ /* Full Screen Modal */
1290
+ .mermaid-fullscreen {
1291
+ position: fixed;
1292
+ top: 0;
1293
+ left: 0;
1294
+ width: 100vw;
1295
+ height: 100vh;
1296
+ background: rgba(0, 0, 0, 0.95);
1297
+ display: none;
1298
+ z-index: 10000;
1299
+ backdrop-filter: blur(4px);
1300
+ }
1301
+
1302
+ .mermaid-fullscreen.active {
1303
+ display: flex;
1304
+ flex-direction: column;
1305
+ }
1306
+
1307
+ .mermaid-fullscreen-toolbar {
1308
+ display: flex;
1309
+ justify-content: space-between;
1310
+ align-items: center;
1311
+ padding: var(--space-4) var(--space-8);
1312
+ background: rgba(255, 255, 255, 0.1);
1313
+ backdrop-filter: blur(8px);
1314
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
1315
+ }
1316
+
1317
+ .mermaid-fullscreen-title {
1318
+ color: white;
1319
+ font-size: var(--text-lg);
1320
+ font-weight: var(--font-semibold);
1321
+ }
1322
+
1323
+ .mermaid-fullscreen-controls {
1324
+ display: flex;
1325
+ gap: var(--space-4);
1326
+ align-items: center;
1327
+ }
1328
+
1329
+ .mermaid-zoom-controls {
1330
+ display: flex;
1331
+ gap: var(--space-2);
1332
+ align-items: center;
1333
+ }
1334
+
1335
+ .mermaid-zoom-btn {
1336
+ padding: var(--space-2);
1337
+ border: 1px solid rgba(255, 255, 255, 0.3);
1338
+ border-radius: var(--radius-md);
1339
+ background: rgba(255, 255, 255, 0.1);
1340
+ color: white;
1341
+ cursor: pointer;
1342
+ transition: all var(--duration-fast);
1343
+ display: flex;
1344
+ align-items: center;
1345
+ justify-content: center;
1346
+ width: var(--space-10);
1347
+ height: var(--space-10);
1348
+ }
1349
+
1350
+ .mermaid-zoom-btn:hover {
1351
+ background: rgba(255, 255, 255, 0.2);
1352
+ border-color: rgba(255, 255, 255, 0.5);
1353
+ }
1354
+
1355
+ .mermaid-zoom-level {
1356
+ color: white;
1357
+ font-size: var(--text-sm);
1358
+ min-width: 3rem;
1359
+ text-align: center;
1360
+ font-weight: var(--font-medium);
1361
+ }
1362
+
1363
+ .mermaid-close-btn {
1364
+ padding: var(--space-2) var(--space-4);
1365
+ border: 1px solid rgba(255, 255, 255, 0.3);
1366
+ border-radius: var(--radius-md);
1367
+ background: rgba(255, 255, 255, 0.1);
1368
+ color: white;
1369
+ cursor: pointer;
1370
+ transition: all var(--duration-fast);
1371
+ display: flex;
1372
+ align-items: center;
1373
+ gap: var(--space-2);
1374
+ font-size: var(--text-sm);
1375
+ }
1376
+
1377
+ .mermaid-close-btn:hover {
1378
+ background: rgba(255, 255, 255, 0.2);
1379
+ }
1380
+
1381
+ .mermaid-fullscreen-content {
1382
+ flex: 1;
1383
+ display: flex;
1384
+ align-items: center;
1385
+ justify-content: center;
1386
+ padding: var(--space-8);
1387
+ overflow: hidden;
1388
+ }
1389
+
1390
+ .mermaid-fullscreen-wrapper {
1391
+ background: white;
1392
+ border-radius: var(--radius-lg);
1393
+ padding: var(--space-8);
1394
+ width: calc(100vw - var(--space-8));
1395
+ height: calc(100vh - 6rem);
1396
+ overflow: auto;
1397
+ box-shadow: var(--shadow-xl);
1398
+ transform-origin: center center;
1399
+ transition: transform var(--duration-normal);
1400
+ display: flex;
1401
+ align-items: center;
1402
+ justify-content: center;
1403
+ }
1404
+
1405
+ .mermaid-fullscreen-diagram {
1406
+ display: flex;
1407
+ justify-content: center;
1408
+ align-items: center;
1409
+ width: 100%;
1410
+ height: 100%;
1411
+ min-height: 400px;
1412
+ position: relative;
1413
+ }
1414
+
1415
+ .mermaid-fullscreen-diagram .mermaid {
1416
+ width: 100% !important;
1417
+ height: 100% !important;
1418
+ display: flex !important;
1419
+ justify-content: center !important;
1420
+ align-items: center !important;
1421
+ background: transparent !important;
1422
+ border: none !important;
1423
+ margin: 0 !important;
1424
+ padding: 0 !important;
1425
+ }
1426
+
1427
+ .mermaid-fullscreen-diagram svg {
1428
+ max-width: 100% !important;
1429
+ max-height: 100% !important;
1430
+ width: auto !important;
1431
+ height: auto !important;
1432
+ display: block !important;
1433
+ margin: 0 auto !important;
1434
+ }
1435
+
1436
+ /* Zoom functionality */
1437
+ .mermaid-fullscreen-wrapper.zoomed {
1438
+ overflow: visible;
1439
+ }
1440
+
1441
+ /* Animation for opening fullscreen */
1442
+ @keyframes mermaidFadeIn {
1443
+ from {
1444
+ opacity: 0;
1445
+ transform: scale(0.95);
1446
+ }
1447
+ to {
1448
+ opacity: 1;
1449
+ transform: scale(1);
1450
+ }
1451
+ }
1452
+
1453
+ .mermaid-fullscreen.active .mermaid-fullscreen-wrapper {
1454
+ animation: mermaidFadeIn var(--duration-normal) ease-out;
1455
+ }
1456
+
1457
+ /* Responsive design for Mermaid */
1458
+ @media (max-width: 768px) {
1459
+ .mermaid-toolbar {
1460
+ flex-direction: column;
1461
+ gap: var(--space-2);
1462
+ align-items: flex-start;
1463
+ padding: var(--space-3);
1464
+ }
1465
+
1466
+ .mermaid-actions {
1467
+ width: 100%;
1468
+ justify-content: flex-end;
1469
+ flex-wrap: wrap;
1470
+ }
1471
+
1472
+ .mermaid-btn {
1473
+ font-size: var(--text-xs);
1474
+ padding: var(--space-1) var(--space-2);
1475
+ }
1476
+
1477
+ .mermaid-fullscreen-toolbar {
1478
+ padding: var(--space-3);
1479
+ flex-direction: column;
1480
+ gap: var(--space-2);
1481
+ }
1482
+
1483
+ .mermaid-fullscreen-controls {
1484
+ flex-direction: column;
1485
+ gap: var(--space-2);
1486
+ }
1487
+
1488
+ .mermaid-fullscreen-content {
1489
+ padding: var(--space-4);
1490
+ }
1491
+
1492
+ .mermaid-fullscreen-wrapper {
1493
+ width: calc(100vw - var(--space-4));
1494
+ height: calc(100vh - 8rem);
1495
+ padding: var(--space-4);
1496
+ }
1497
+ }
1498
+
1499
+ /* Preview Banner */
1500
+ .preview-banner {
1501
+ position: fixed;
1502
+ top: var(--header-height);
1503
+ left: 0;
1504
+ right: 0;
1505
+ background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
1506
+ color: white;
1507
+ z-index: 1000;
1508
+ box-shadow: var(--shadow-md);
1509
+ transition: transform var(--duration-normal), opacity var(--duration-normal);
1510
+ /* Default to hidden state to prevent flash */
1511
+ transform: translateY(-100%);
1512
+ opacity: 0;
1513
+ pointer-events: none;
1514
+ }
1515
+
1516
+ .preview-banner.visible {
1517
+ transform: translateY(0);
1518
+ opacity: 1;
1519
+ pointer-events: auto;
1520
+ }
1521
+
1522
+ .preview-banner.hidden {
1523
+ transform: translateY(-100%);
1524
+ opacity: 0;
1525
+ pointer-events: none;
1526
+ }
1527
+
1528
+ .banner-content {
1529
+ display: flex;
1530
+ align-items: center;
1531
+ justify-content: center;
1532
+ gap: var(--space-3);
1533
+ max-width: 1400px;
1534
+ margin: 0 auto;
1535
+ }
1536
+
1537
+ .banner-dismiss {
1538
+ padding: var(--space-1) var(--space-2);
1539
+ background: transparent;
1540
+ border: none;
1541
+ cursor: pointer;
1542
+ color: var(--color-accent-yellow);
1543
+ font-size: var(--text-base);
1544
+ transition: opacity var(--duration-fast) var(--easing-out);
1545
+ }
1546
+
1547
+ .banner-dismiss:hover {
1548
+ opacity: 0.7;
1549
+ }
1550
+
1551
+ /* Animations */
1552
+ @keyframes fadeIn {
1553
+ from {
1554
+ opacity: 0;
1555
+ transform: translateY(-10px);
1556
+ }
1557
+ to {
1558
+ opacity: 1;
1559
+ transform: translateY(0);
1560
+ }
1561
+ }
1562
+
1563
+ .fade-in {
1564
+ animation: fadeIn var(--duration-normal) var(--easing-out);
1565
+ }
1566
+
1567
+ /* Utility Classes */
1568
+ .text-center { text-align: center; }
1569
+ .text-right { text-align: right; }
1570
+ .text-muted { color: var(--color-text-secondary); }
1571
+ .text-small { font-size: var(--text-sm); }
1572
+ .text-large { font-size: var(--text-lg); }
1573
+ .font-mono { font-family: var(--font-mono); }
1574
+ .mt-0 { margin-top: 0; }
1575
+ .mb-0 { margin-bottom: 0; }
1576
+ .mt-4 { margin-top: var(--space-4); }
1577
+ .mb-4 { margin-bottom: var(--space-4); }
1578
+ .mt-8 { margin-top: var(--space-8); }
1579
+ .mb-8 { margin-bottom: var(--space-8); }
1580
+
1581
+ /* Table of Contents */
1582
+ .toc-container {
1583
+ background: var(--color-bg-secondary);
1584
+ border-radius: var(--radius-lg);
1585
+ padding: var(--space-6);
1586
+ margin: var(--space-6) 0;
1587
+ border: 1px solid var(--color-border-default);
1588
+ }
1589
+
1590
+ .toc-container h2 {
1591
+ font-size: var(--text-lg);
1592
+ font-weight: var(--font-semibold);
1593
+ color: var(--color-text-primary);
1594
+ margin-bottom: var(--space-4);
1595
+ padding-bottom: var(--space-2);
1596
+ border-bottom: 2px solid var(--color-divider);
1597
+ }
1598
+
1599
+ .toc-list {
1600
+ list-style: none;
1601
+ padding: 0;
1602
+ margin: 0;
1603
+ }
1604
+
1605
+ .toc-list ol,
1606
+ .toc-list ul {
1607
+ list-style: none;
1608
+ padding: 0;
1609
+ margin: 0;
1610
+ }
1611
+
1612
+ .toc-list li {
1613
+ position: relative;
1614
+ margin-bottom: 0;
1615
+ line-height: 1.4;
1616
+ }
1617
+
1618
+ .toc-list > li {
1619
+ margin-bottom: 0;
1620
+ }
1621
+
1622
+ .toc-list li::before {
1623
+ content: '';
1624
+ position: absolute;
1625
+ left: 0;
1626
+ top: 0.75em;
1627
+ width: 6px;
1628
+ height: 6px;
1629
+ background: var(--color-text-tertiary);
1630
+ border-radius: 50%;
1631
+ opacity: 0.5;
1632
+ }
1633
+
1634
+ .toc-list a {
1635
+ display: block;
1636
+ padding: 2px var(--space-2);
1637
+ padding-left: var(--space-4);
1638
+ color: var(--color-text-secondary);
1639
+ font-size: var(--text-sm);
1640
+ transition: all var(--duration-fast);
1641
+ border-radius: var(--radius-md);
1642
+ text-decoration: none;
1643
+ position: relative;
1644
+ }
1645
+
1646
+ .toc-list a:hover {
1647
+ color: var(--color-accent-blue);
1648
+ background: rgba(0, 115, 230, 0.05);
1649
+ transform: translateX(1px);
1650
+ }
1651
+
1652
+ /* Nested TOC items */
1653
+ .toc-list .toc-h2 {
1654
+ font-weight: var(--font-medium);
1655
+ }
1656
+
1657
+ .toc-list .toc-h3 {
1658
+ padding-left: calc(var(--space-4) + var(--space-6));
1659
+ font-size: var(--text-sm);
1660
+ color: var(--color-text-tertiary);
1661
+ }
1662
+
1663
+ .toc-list .toc-h3::before {
1664
+ left: var(--space-6);
1665
+ width: 4px;
1666
+ height: 4px;
1667
+ }
1668
+
1669
+ .toc-list .toc-h4 {
1670
+ padding-left: calc(var(--space-4) + var(--space-10));
1671
+ font-size: var(--text-xs);
1672
+ color: var(--color-text-tertiary);
1673
+ font-style: italic;
1674
+ }
1675
+
1676
+ .toc-list .toc-h4::before {
1677
+ left: var(--space-10);
1678
+ width: 3px;
1679
+ height: 3px;
1680
+ }
1681
+
1682
+ /* Active TOC item */
1683
+ .toc-list a.active {
1684
+ color: var(--color-accent-blue);
1685
+ background: var(--color-accent-blue-bg);
1686
+ font-weight: var(--font-medium);
1687
+ }
1688
+
1689
+ /* Number styling for ordered lists */
1690
+ .toc-list > ol {
1691
+ counter-reset: toc-counter;
1692
+ }
1693
+
1694
+ .toc-list ol > li {
1695
+ counter-increment: toc-counter;
1696
+ }
1697
+
1698
+ .toc-list ol > li::before {
1699
+ content: counter(toc-counter);
1700
+ position: absolute;
1701
+ left: 0;
1702
+ top: var(--space-1);
1703
+ width: 1.5rem;
1704
+ height: 1.5rem;
1705
+ background: var(--color-accent-blue);
1706
+ color: var(--color-text-inverse);
1707
+ border-radius: var(--radius-md);
1708
+ font-size: var(--text-xs);
1709
+ font-weight: var(--font-semibold);
1710
+ display: flex;
1711
+ align-items: center;
1712
+ justify-content: center;
1713
+ opacity: 1;
1714
+ }
1715
+
1716
+ .toc-list ol > li > a {
1717
+ padding-left: calc(var(--space-4) + var(--space-5));
1718
+ }
1719
+
1720
+ /* Dark mode adjustments */
1721
+ [data-theme="dark"] .toc-container {
1722
+ background: var(--color-bg-secondary);
1723
+ border-color: var(--color-border-default);
1724
+ }
1725
+
1726
+ [data-theme="dark"] .toc-container h2 {
1727
+ border-bottom-color: var(--color-divider);
1728
+ }
1729
+
1730
+ [data-theme="dark"] .toc-list a:hover {
1731
+ background: var(--color-bg-hover);
1732
+ }
1733
+
1734
+ /* Tooltip Styles */
1735
+ [data-tooltip] {
1736
+ position: relative;
1737
+ }
1738
+
1739
+ /* Tooltip content */
1740
+ [data-tooltip]::after {
1741
+ content: attr(data-tooltip);
1742
+ position: fixed; /* Use fixed positioning to escape overflow containers */
1743
+ left: var(--tooltip-left, 0);
1744
+ top: var(--tooltip-top, 0);
1745
+ transform: translateY(-50%);
1746
+ background: #333;
1747
+ color: white;
1748
+ padding: 8px 12px;
1749
+ border-radius: 4px;
1750
+ font-size: 14px;
1751
+ line-height: 1.4;
1752
+ white-space: normal;
1753
+ max-width: 300px;
1754
+ z-index: 999999;
1755
+ pointer-events: none;
1756
+ opacity: 0;
1757
+ visibility: hidden;
1758
+ transition: opacity 0.3s, visibility 0.3s;
1759
+ }
1760
+
1761
+ [data-tooltip]:hover::after {
1762
+ opacity: 1;
1763
+ visibility: visible;
1764
+ }
1765
+
1766
+ /* Ensure nav items have proper stacking context */
1767
+ .nav-item[data-tooltip],
1768
+ .nav-title[data-tooltip] {
1769
+ position: relative !important;
1770
+ z-index: 1;
1771
+ }
1772
+
1773
+ .nav-item[data-tooltip]:hover,
1774
+ .nav-title[data-tooltip]:hover {
1775
+ z-index: 100000; /* Very high z-index to ensure tooltip appears above everything */
1776
+ }
1777
+
1778
+ /* Tooltip for nav titles (folders) */
1779
+ .nav-title[data-tooltip]::after {
1780
+ max-width: 350px;
1781
+ font-weight: var(--font-regular);
1782
+ }
1783
+
1784
+ /* Ensure nav sections don't clip tooltips */
1785
+ .nav-section {
1786
+ position: relative;
1787
+ overflow: visible !important;
1788
+ }
1789
+
1790
+ /* Remove forced overflow as we're using fixed positioning */
1791
+
1792
+ /* Dark mode tooltip styles */
1793
+ [data-theme="dark"] [data-tooltip]::after {
1794
+ background: var(--color-bg-secondary);
1795
+ color: var(--color-text-primary);
1796
+ border-color: var(--color-border-default);
1797
+ box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.5);
1798
+ }
1799
+
1800
+ [data-theme="dark"] [data-tooltip]::before {
1801
+ border-right-color: var(--color-bg-secondary);
1802
+ }
1803
+
1804
+ /* Remove custom positioning variables - tooltips always go right */
1805
+
1806
+ /* Floating Menu Button */
1807
+ .floating-menu-toggle {
1808
+ position: fixed;
1809
+ bottom: var(--space-6);
1810
+ right: var(--space-6);
1811
+ width: 56px;
1812
+ height: 56px;
1813
+ border-radius: 50%;
1814
+ background: var(--color-accent-blue);
1815
+ color: white;
1816
+ border: none;
1817
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 2px 4px rgba(0, 0, 0, 0.1);
1818
+ display: flex;
1819
+ align-items: center;
1820
+ justify-content: center;
1821
+ font-size: 1.25rem;
1822
+ cursor: pointer;
1823
+ z-index: 1001; /* Above sidebar */
1824
+ opacity: 0;
1825
+ transform: scale(0.8) translateY(20px);
1826
+ transition: all var(--duration-normal) var(--easing-out);
1827
+ -webkit-tap-highlight-color: transparent;
1828
+ }
1829
+
1830
+ .floating-menu-toggle.visible {
1831
+ opacity: 1;
1832
+ transform: scale(1) translateY(0);
1833
+ }
1834
+
1835
+ .floating-menu-toggle:hover {
1836
+ transform: scale(1.1) translateY(0);
1837
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2), 0 3px 6px rgba(0, 0, 0, 0.15);
1838
+ }
1839
+
1840
+ .floating-menu-toggle:active {
1841
+ transform: scale(0.95) translateY(0);
1842
+ }
1843
+
1844
+ .floating-menu-toggle i {
1845
+ transition: transform var(--duration-fast) var(--easing-out);
1846
+ }
1847
+
1848
+ .floating-menu-toggle:hover i {
1849
+ transform: rotate(90deg);
1850
+ }
1851
+
1852
+ /* Dark mode styles for floating button */
1853
+ .dark-mode .floating-menu-toggle {
1854
+ background: var(--color-accent-blue);
1855
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
1856
+ }
1857
+
1858
+ .dark-mode .floating-menu-toggle:hover {
1859
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
1860
+ }
1861
+
1862
+ /* Mobile adjustments */
1863
+ @media (max-width: 768px) {
1864
+ /* Disable tooltips on mobile to prevent overlap issues */
1865
+ [data-tooltip]::before,
1866
+ [data-tooltip]::after {
1867
+ display: none;
1868
+ }
1869
+
1870
+ .main-wrapper {
1871
+ flex-direction: column;
1872
+ height: auto;
1873
+ min-height: calc(100vh - var(--header-height) - var(--breadcrumb-height));
1874
+ margin-top: calc(var(--header-height) + var(--breadcrumb-height)); /* Account for both fixed elements */
1875
+ }
1876
+
1877
+ /* Sidebar positioning handled in earlier media query */
1878
+
1879
+ .content {
1880
+ padding: var(--space-3) var(--space-4); /* Consistent reduced padding on mobile */
1881
+ }
1882
+
1883
+ .content-inner {
1884
+ max-width: none;
1885
+ }
1886
+
1887
+ h1 {
1888
+ margin-left: calc(-1 * var(--space-4));
1889
+ margin-right: calc(-1 * var(--space-4));
1890
+ padding: 0 var(--space-4);
1891
+ }
1892
+
1893
+ /* Keep preview banner fixed on mobile */
1894
+
1895
+ /* Keep breadcrumbs fixed on mobile to prevent double spacing */
1896
+ }
1897
+
1898
+ /* Navigation Sections */
1899
+ .nav-section {
1900
+ margin-bottom: var(--space-1);
1901
+ }
1902
+
1903
+ .nav-title {
1904
+ display: flex;
1905
+ align-items: center;
1906
+ gap: var(--space-2);
1907
+ padding: var(--space-2);
1908
+ color: var(--color-text-primary);
1909
+ text-decoration: none;
1910
+ font-size: var(--text-sm);
1911
+ font-weight: var(--font-medium);
1912
+ border-radius: var(--radius-md);
1913
+ transition: all var(--duration-fast);
1914
+ cursor: pointer;
1915
+ }
1916
+
1917
+ .nav-title:hover {
1918
+ background: var(--color-bg-hover);
1919
+ }
1920
+
1921
+ .nav-title.collapsible {
1922
+ position: relative;
1923
+ }
1924
+
1925
+ .nav-title .collapse-icon {
1926
+ transition: transform var(--duration-fast);
1927
+ color: var(--color-text-tertiary);
1928
+ font-size: var(--text-xs);
1929
+ }
1930
+
1931
+ .nav-title.expanded .collapse-icon {
1932
+ transform: rotate(90deg);
1933
+ }
1934
+
1935
+ .nav-content {
1936
+ padding-left: var(--space-4);
1937
+ overflow: hidden;
1938
+ transition: max-height var(--duration-normal), opacity var(--duration-normal);
1939
+ }
1940
+
1941
+ .nav-content.collapsed {
1942
+ max-height: 0;
1943
+ opacity: 0;
1944
+ pointer-events: none;
1945
+ }
1946
+
1947
+ .nav-content:not(.collapsed) {
1948
+ max-height: 1000px;
1949
+ opacity: 1;
1950
+ }
1951
+
1952
+ /* Navigation Items */
1953
+ .nav-item {
1954
+ display: flex;
1955
+ align-items: center;
1956
+ gap: var(--space-2);
1957
+ padding: var(--space-1-5) var(--space-2);
1958
+ color: var(--color-text-secondary);
1959
+ text-decoration: none;
1960
+ font-size: var(--text-sm);
1961
+ border-radius: var(--radius-md);
1962
+ transition: all var(--duration-fast);
1963
+ margin-bottom: var(--space-0-5);
1964
+ }
1965
+
1966
+ .nav-item:hover {
1967
+ background: var(--color-bg-hover);
1968
+ color: var(--color-text-primary);
1969
+ }
1970
+
1971
+ .nav-item.active {
1972
+ background: var(--color-accent-blue-bg);
1973
+ color: var(--color-accent-blue);
1974
+ font-weight: var(--font-medium);
1975
+ }
1976
+
1977
+ .nav-item i {
1978
+ color: var(--color-text-tertiary);
1979
+ font-size: var(--text-xs);
1980
+ width: 12px;
1981
+ text-align: center;
1982
+ }
1983
+
1984
+ .nav-item.active i {
1985
+ color: var(--color-accent-blue);
1986
+ }
1987
+
1988
+ /* Authentication Pages */
1989
+ .auth-container {
1990
+ display: flex;
1991
+ align-items: center;
1992
+ justify-content: center;
1993
+ min-height: 100vh;
1994
+ background: var(--color-bg-primary);
1995
+ padding: var(--space-4);
1996
+ }
1997
+
1998
+ .auth-box {
1999
+ background: var(--color-bg-secondary);
2000
+ border: 1px solid var(--color-border-default);
2001
+ border-radius: var(--radius-lg);
2002
+ padding: var(--space-8);
2003
+ width: 100%;
2004
+ max-width: 400px;
2005
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
2006
+ }
2007
+
2008
+ .auth-box h1 {
2009
+ margin: 0 0 var(--space-6) 0;
2010
+ font-size: var(--text-2xl);
2011
+ font-weight: var(--font-semibold);
2012
+ color: var(--color-text-primary);
2013
+ text-align: center;
2014
+ }
2015
+
2016
+ .auth-box p {
2017
+ color: var(--color-text-secondary);
2018
+ text-align: center;
2019
+ margin-bottom: var(--space-4);
2020
+ }
2021
+
2022
+ .form-group {
2023
+ margin-bottom: var(--space-4);
2024
+ }
2025
+
2026
+ .form-group label {
2027
+ display: block;
2028
+ margin-bottom: var(--space-2);
2029
+ font-size: var(--text-sm);
2030
+ font-weight: var(--font-medium);
2031
+ color: var(--color-text-secondary);
2032
+ }
2033
+
2034
+ .form-group input {
2035
+ width: 100%;
2036
+ padding: var(--space-2) var(--space-3);
2037
+ border: 1px solid var(--color-border-default);
2038
+ border-radius: var(--radius-md);
2039
+ font-size: var(--text-base);
2040
+ background: var(--color-bg-primary);
2041
+ color: var(--color-text-primary);
2042
+ transition: all var(--duration-fast);
2043
+ }
2044
+
2045
+ .form-group input:focus {
2046
+ outline: none;
2047
+ border-color: var(--color-accent-blue);
2048
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
2049
+ }
2050
+
2051
+ .auth-button {
2052
+ width: 100%;
2053
+ padding: var(--space-2-5) var(--space-4);
2054
+ background: var(--color-accent-blue);
2055
+ color: white;
2056
+ border: none;
2057
+ border-radius: var(--radius-md);
2058
+ font-size: var(--text-base);
2059
+ font-weight: var(--font-medium);
2060
+ cursor: pointer;
2061
+ transition: all var(--duration-fast);
2062
+ text-align: center;
2063
+ text-decoration: none;
2064
+ display: inline-block;
2065
+ }
2066
+
2067
+ .auth-button:hover {
2068
+ background: #2563eb;
2069
+ transform: translateY(-1px);
2070
+ box-shadow: 0 4px 12px rgba(59, 130, 246, 0.25);
2071
+ }
2072
+
2073
+ .auth-button:active {
2074
+ transform: translateY(0);
2075
+ }
2076
+
2077
+ .error-message {
2078
+ margin-top: var(--space-4);
2079
+ padding: var(--space-3);
2080
+ background: #fef2f2;
2081
+ border: 1px solid #fee2e2;
2082
+ border-radius: var(--radius-md);
2083
+ color: #dc2626;
2084
+ font-size: var(--text-sm);
2085
+ text-align: center;
2086
+ display: none;
2087
+ }
2088
+
2089
+ .error-message:not(:empty) {
2090
+ display: block;
2091
+ }
2092
+
2093
+ /* Dark mode auth styles */
2094
+ .dark .auth-box {
2095
+ background: var(--color-bg-secondary);
2096
+ border-color: var(--color-border-default);
2097
+ }
2098
+
2099
+ .dark .form-group input {
2100
+ background: var(--color-bg-primary);
2101
+ border-color: var(--color-border-default);
2102
+ }
2103
+
2104
+ .dark .error-message {
2105
+ background: #451a1a;
2106
+ border-color: #7f1d1d;
2107
+ color: #fca5a5;
2108
+ }
2109
+
2110
+ /* Phosphor Icons Alignment */
2111
+ .ph {
2112
+ display: inline-block;
2113
+ vertical-align: middle;
2114
+ line-height: 1;
2115
+ position: relative;
2116
+ top: -0.05em; /* Slight upward adjustment for better baseline alignment */
2117
+ }
2118
+
2119
+ /* Ensure icons in headings are properly aligned */
2120
+ h1 .ph, h2 .ph, h3 .ph, h4 .ph, h5 .ph, h6 .ph {
2121
+ font-size: 0.85em; /* Slightly smaller in headings */
2122
+ line-height: 1;
2123
+ top: -0.05em;
2124
+ }
2125
+
2126
+ /* Icons in lists need special handling */
2127
+ li .ph {
2128
+ margin-right: 0.3em;
2129
+ font-size: 1.1em;
2130
+ line-height: 1;
2131
+ vertical-align: middle;
2132
+ top: -0.05em;
2133
+ }
2134
+
2135
+ /* Icons in tables */
2136
+ td .ph, th .ph {
2137
+ line-height: 1;
2138
+ vertical-align: middle;
2139
+ top: -0.05em;
2140
+ }
2141
+
2142
+ /* Icons in navigation */
2143
+ .nav-item .ph,
2144
+ .nav-title .ph {
2145
+ vertical-align: middle;
2146
+ line-height: 1;
2147
+ top: 0; /* Navigation items are flex, so no adjustment needed */
2148
+ }
2149
+
2150
+ /* Icon size adjustments for better visual balance */
2151
+ .content p .ph {
2152
+ font-size: 1.1em; /* Slightly larger than text for visual balance */
2153
+ }
2154
+
2155
+ /* Special handling for inline code with icons */
2156
+ code .ph {
2157
+ font-size: 0.9em;
2158
+ vertical-align: middle;
2159
+ line-height: 1;
2160
+ top: 0;
2161
+ }
2162
+
2163
+ /* Additional fine-tuning for specific contexts */
2164
+ .content-inner .ph {
2165
+ /* Remove the transform as we're now using consistent vertical-align: middle */
2166
+ }
2167
+
2168
+ /* ============================================================================
2169
+ Private Navigation Visibility
2170
+ ============================================================================ */
2171
+
2172
+ /* Hide private navigation sections by default */
2173
+ .private-nav {
2174
+ display: none;
2175
+ }
2176
+
2177
+ /* Show private navigation when user has private access */
2178
+ body.has-private-access .private-nav {
2179
+ display: block;
2180
+ }
2181
+
2182
+ /* Smooth transition for authentication state changes */
2183
+ .nav-section {
2184
+ transition: opacity 0.2s ease-in-out;
2185
+ }
2186
+
2187
+ /* Optional: Add a lock icon to private sections */
2188
+ .private-nav .nav-title::after {
2189
+ content: ' 🔒';
2190
+ font-size: 0.8em;
2191
+ }
2192
+
2193
+ /* ============================================================================
2194
+ Image Modal System
2195
+ ============================================================================ */
2196
+
2197
+ /* Style all content images to be clickable */
2198
+ .content img {
2199
+ cursor: pointer;
2200
+ transition: all var(--duration-normal) var(--easing-out);
2201
+ border-radius: var(--radius-md);
2202
+ max-width: 100%;
2203
+ height: auto;
2204
+ margin: var(--space-8) 0; /* Add generous vertical spacing */
2205
+ }
2206
+
2207
+ .content img:hover {
2208
+ opacity: 0.9;
2209
+ transform: scale(1.02);
2210
+ box-shadow: var(--shadow-lg);
2211
+ }
2212
+
2213
+ /* Images within paragraphs - center them with extra spacing */
2214
+ .content p img {
2215
+ margin: var(--space-6) auto; /* 24px top/bottom, auto left/right for centering */
2216
+ display: block; /* Ensure block-level behavior for centering */
2217
+ }
2218
+
2219
+ /* Extra spacing between consecutive images */
2220
+ .content img + img {
2221
+ margin-top: var(--space-12); /* 48px between consecutive images */
2222
+ }
2223
+
2224
+ /* Figure elements for better image presentation */
2225
+ .content figure {
2226
+ margin: var(--space-10) 0; /* 40px top/bottom for figures */
2227
+ text-align: center; /* Center figures by default */
2228
+ }
2229
+
2230
+ .content figure img {
2231
+ margin: 0; /* Reset margin for images within figures */
2232
+ }
2233
+
2234
+ .content figcaption {
2235
+ margin-top: var(--space-3); /* 12px spacing above captions */
2236
+ font-size: var(--text-sm); /* Smaller text for captions */
2237
+ color: var(--text-muted); /* Muted color for captions */
2238
+ font-style: italic; /* Italic style for captions */
2239
+ }
2240
+
2241
+ /* Modal overlay - hidden by default */
2242
+ .image-modal {
2243
+ display: none;
2244
+ position: fixed;
2245
+ top: 0;
2246
+ left: 0;
2247
+ width: 100%;
2248
+ height: 100%;
2249
+ background: rgba(0, 0, 0, 0.9);
2250
+ z-index: 10000;
2251
+ cursor: pointer;
2252
+ opacity: 0;
2253
+ transition: opacity var(--duration-normal) var(--easing-out);
2254
+ }
2255
+
2256
+ /* Show modal when active */
2257
+ .image-modal.active {
2258
+ display: flex;
2259
+ align-items: center;
2260
+ justify-content: center;
2261
+ opacity: 1;
2262
+ }
2263
+
2264
+ /* Modal content container */
2265
+ .image-modal-content {
2266
+ position: relative;
2267
+ max-width: 95%;
2268
+ max-height: 95%;
2269
+ margin: auto;
2270
+ cursor: default;
2271
+ }
2272
+
2273
+ /* Modal image */
2274
+ .image-modal-img {
2275
+ width: auto;
2276
+ height: auto;
2277
+ max-width: 100%;
2278
+ max-height: 100vh;
2279
+ border-radius: var(--radius-lg);
2280
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
2281
+ cursor: default;
2282
+ }
2283
+
2284
+ /* Close button */
2285
+ .image-modal-close {
2286
+ position: absolute;
2287
+ top: -50px;
2288
+ right: 0;
2289
+ background: rgba(255, 255, 255, 0.1);
2290
+ border: 2px solid rgba(255, 255, 255, 0.3);
2291
+ color: white;
2292
+ width: 40px;
2293
+ height: 40px;
2294
+ border-radius: 50%;
2295
+ cursor: pointer;
2296
+ display: flex;
2297
+ align-items: center;
2298
+ justify-content: center;
2299
+ font-size: 20px;
2300
+ font-weight: bold;
2301
+ transition: all var(--duration-fast) var(--easing-out);
2302
+ backdrop-filter: blur(10px);
2303
+ }
2304
+
2305
+ .image-modal-close:hover {
2306
+ background: rgba(255, 255, 255, 0.2);
2307
+ border-color: rgba(255, 255, 255, 0.5);
2308
+ transform: scale(1.1);
2309
+ }
2310
+
2311
+ /* Image caption in modal */
2312
+ .image-modal-caption {
2313
+ position: absolute;
2314
+ bottom: -50px;
2315
+ left: 0;
2316
+ right: 0;
2317
+ background: rgba(0, 0, 0, 0.7);
2318
+ color: white;
2319
+ padding: var(--space-3) var(--space-4);
2320
+ border-radius: var(--radius-md);
2321
+ font-size: var(--text-sm);
2322
+ text-align: center;
2323
+ backdrop-filter: blur(10px);
2324
+ }
2325
+
2326
+ /* Dark theme adjustments */
2327
+ [data-theme="dark"] .image-modal {
2328
+ background: rgba(0, 0, 0, 0.95);
2329
+ }
2330
+
2331
+ [data-theme="dark"] .image-modal-close {
2332
+ background: rgba(255, 255, 255, 0.15);
2333
+ border-color: rgba(255, 255, 255, 0.4);
2334
+ }
2335
+
2336
+ [data-theme="dark"] .image-modal-close:hover {
2337
+ background: rgba(255, 255, 255, 0.25);
2338
+ border-color: rgba(255, 255, 255, 0.6);
2339
+ }
2340
+
2341
+ /* Mobile responsive adjustments */
2342
+ @media (max-width: 768px) {
2343
+ .image-modal-content {
2344
+ max-width: 98%;
2345
+ max-height: 98%;
2346
+ }
2347
+
2348
+ .image-modal-close {
2349
+ top: -40px;
2350
+ width: 35px;
2351
+ height: 35px;
2352
+ font-size: 18px;
2353
+ }
2354
+
2355
+ .image-modal-caption {
2356
+ bottom: -40px;
2357
+ font-size: var(--text-xs);
2358
+ padding: var(--space-2) var(--space-3);
2359
+ }
2360
+ }
2361
+
2362
+ /* Print styles - hide breadcrumbs and other UI elements for clean PDF output */
2363
+ @media print {
2364
+ /* Hide breadcrumbs completely when printing */
2365
+ .breadcrumbs {
2366
+ display: none !important;
2367
+ }
2368
+
2369
+ /* Hide navigation and header elements for clean printing */
2370
+ .navigation,
2371
+ .menu-toggle,
2372
+ .theme-toggle,
2373
+ .auth-btn,
2374
+ .header {
2375
+ display: none !important;
2376
+ }
2377
+
2378
+ /* Adjust main content area for printing without breadcrumbs */
2379
+ .main-content {
2380
+ margin-top: 0 !important;
2381
+ min-height: auto !important;
2382
+ padding-top: var(--space-4);
2383
+ }
2384
+
2385
+ /* Ensure content takes full width for printing */
2386
+ .content-area {
2387
+ max-width: none !important;
2388
+ padding: 0;
2389
+ margin: 0;
2390
+ }
2391
+
2392
+ /* Optimize text for printing */
2393
+ body {
2394
+ background: white !important;
2395
+ color: black !important;
2396
+ font-size: 12pt;
2397
+ line-height: 1.4;
2398
+ }
2399
+
2400
+ /* Hide interactive elements */
2401
+ .image-modal,
2402
+ .tooltip,
2403
+ button:not(.copy-btn) {
2404
+ display: none !important;
2405
+ }
2406
+
2407
+ /* Ensure code blocks print well */
2408
+ pre, code {
2409
+ background: #f5f5f5 !important;
2410
+ border: 1px solid #ddd !important;
2411
+ page-break-inside: avoid;
2412
+ }
2413
+
2414
+ /* Page break optimization */
2415
+ h1, h2, h3, h4, h5, h6 {
2416
+ page-break-after: avoid;
2417
+ color: black !important;
2418
+ }
2419
+
2420
+ /* Avoid breaking images */
2421
+ img {
2422
+ page-break-inside: avoid;
2423
+ max-width: 100% !important;
2424
+ height: auto !important;
2425
+ }
2426
+ }