@knowcode/doc-builder 1.9.29 → 1.9.31

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