@knowcode/doc-builder 1.9.30 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/lib/core-builder.js +164 -174
  2. package/lib/emoji-mapper.js +27 -12
  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/doc-builder.config.js.backup.1755034809236 +0 -126
  36. package/grant-access.sql +0 -15
  37. package/html/11.png +0 -0
  38. package/html/404.html +0 -115
  39. package/html/README.html +0 -522
  40. package/html/Screenshot 2025-08-12 at 21.35.07.png +0 -0
  41. package/html/about-doc-builder.html +0 -491
  42. package/html/auth.js +0 -157
  43. package/html/claude-workflow-guide.html +0 -525
  44. package/html/css/notion-style.css +0 -2502
  45. package/html/documentation-index.html +0 -471
  46. package/html/guides/authentication-default-change.html +0 -370
  47. package/html/guides/authentication-guide.html +0 -509
  48. package/html/guides/cache-control-anti-pattern.html +0 -361
  49. package/html/guides/claude-workflow-guide.html +0 -1074
  50. package/html/guides/configuration-guide.html +0 -472
  51. package/html/guides/document-standards.html +0 -518
  52. package/html/guides/documentation-standards.html +0 -694
  53. package/html/guides/html-embedding-guide.html +0 -461
  54. package/html/guides/image-modal-guide.html +0 -515
  55. package/html/guides/next-steps-walkthrough.html +0 -638
  56. package/html/guides/phosphor-icons-guide.html +0 -584
  57. package/html/guides/private-directory-authentication-troubleshooting.html +0 -555
  58. package/html/guides/private-directory-authentication.html +0 -541
  59. package/html/guides/public-site-deployment.html +0 -431
  60. package/html/guides/search-engine-verification-guide.html +0 -542
  61. package/html/guides/seo-guide.html +0 -661
  62. package/html/guides/seo-optimization-guide.html +0 -887
  63. package/html/guides/supabase-auth-implementation-plan.html +0 -543
  64. package/html/guides/supabase-auth-integration-plan.html +0 -671
  65. package/html/guides/supabase-auth-setup-guide.html +0 -498
  66. package/html/guides/supabase-authentication-complete-guide.html +0 -866
  67. package/html/guides/troubleshooting-guide.html +0 -633
  68. package/html/guides/vercel-deployment-auth-setup.html +0 -337
  69. package/html/guides/windows-setup-guide.html +0 -859
  70. package/html/image-modal-test.html +0 -318
  71. package/html/index.html +0 -522
  72. package/html/js/auth.js +0 -157
  73. package/html/js/main.js +0 -1754
  74. package/html/launch/README.html +0 -297
  75. package/html/launch/bubble-plugin-specification.html +0 -933
  76. package/html/launch/go-to-market-strategy.html +0 -663
  77. package/html/launch/launch-announcements.html +0 -593
  78. package/html/login.html +0 -102
  79. package/html/logout.html +0 -18
  80. package/html/private/cache-control-anti-pattern.html +0 -429
  81. package/html/private/launch/README.html +0 -371
  82. package/html/private/launch/auth-cleanup-summary.html +0 -361
  83. package/html/private/launch/bubble-plugin-specification.html +0 -1007
  84. package/html/private/launch/go-to-market-strategy.html +0 -737
  85. package/html/private/launch/launch-announcements.html +0 -667
  86. package/html/private/launch/vercel-deployment-auth-setup.html +0 -417
  87. package/html/private/next-steps-walkthrough.html +0 -679
  88. package/html/private/supabase-auth-implementation-completed.html +0 -454
  89. package/html/private/supabase-auth-implementation-plan.html +0 -594
  90. package/html/private/supabase-auth-integration-plan.html +0 -704
  91. package/html/private/supabase-auth-setup-guide.html +0 -555
  92. package/html/private/test-private-doc.html +0 -302
  93. package/html/private/user-management-tooling.html +0 -601
  94. package/html/prompts/Screenshot 2025-08-02 at 08.49.55.png +0 -0
  95. package/html/prompts/beautiful-documentation-design.html +0 -784
  96. package/html/prompts/markdown-document-standards.html +0 -422
  97. package/html/prompts/project-rename-strategy-sasha-publish.html +0 -530
  98. package/html/robots.txt +0 -9
  99. package/html/sitemap.xml +0 -357
  100. package/html/test-questions/how-does-it-work%3F.html +0 -294
  101. package/html/test-questions/step-1%3A%20getting-started.html +0 -289
  102. package/html/test-questions/what-is-the-purpose.html +0 -293
  103. package/html/test-status.html +0 -281
  104. package/html/vercel-cli-setup-guide.html +0 -495
  105. package/html/vercel-first-time-setup-guide.html +0 -454
  106. package/html/vercel.json +0 -29
  107. package/html-static/11.png +0 -0
  108. package/html-static/404.html +0 -115
  109. package/html-static/README.html +0 -609
  110. package/html-static/Screenshot 2025-08-12 at 21.35.07.png +0 -0
  111. package/html-static/about-doc-builder.html +0 -578
  112. package/html-static/css/notion-style.css +0 -2502
  113. package/html-static/documentation-index.html +0 -558
  114. package/html-static/guides/authentication-default-change.html +0 -457
  115. package/html-static/guides/authentication-guide.html +0 -596
  116. package/html-static/guides/claude-workflow-guide.html +0 -1161
  117. package/html-static/guides/configuration-guide.html +0 -559
  118. package/html-static/guides/documentation-standards.html +0 -781
  119. package/html-static/guides/html-embedding-guide.html +0 -548
  120. package/html-static/guides/image-modal-guide.html +0 -602
  121. package/html-static/guides/phosphor-icons-guide.html +0 -671
  122. package/html-static/guides/private-directory-authentication-troubleshooting.html +0 -642
  123. package/html-static/guides/private-directory-authentication.html +0 -628
  124. package/html-static/guides/public-site-deployment.html +0 -518
  125. package/html-static/guides/search-engine-verification-guide.html +0 -629
  126. package/html-static/guides/seo-guide.html +0 -748
  127. package/html-static/guides/seo-optimization-guide.html +0 -974
  128. package/html-static/guides/supabase-authentication-complete-guide.html +0 -953
  129. package/html-static/guides/troubleshooting-guide.html +0 -720
  130. package/html-static/guides/windows-setup-guide.html +0 -946
  131. package/html-static/image-modal-test.html +0 -405
  132. package/html-static/index.html +0 -609
  133. package/html-static/js/main.js +0 -1754
  134. package/html-static/prompts/Screenshot 2025-08-02 at 08.49.55.png +0 -0
  135. package/html-static/prompts/beautiful-documentation-design.html +0 -871
  136. package/html-static/prompts/markdown-document-standards.html +0 -509
  137. package/html-static/prompts/project-rename-strategy-sasha-publish.html +0 -617
  138. package/html-static/robots.txt +0 -5
  139. package/html-static/sitemap.xml +0 -195
  140. package/html-static/test-questions/how-does-it-work%3F.html +0 -381
  141. package/html-static/test-questions/step-1%3A%20getting-started.html +0 -376
  142. package/html-static/test-questions/what-is-the-purpose.html +0 -380
  143. package/html-static/vercel-cli-setup-guide.html +0 -582
  144. package/html-static/vercel-first-time-setup-guide.html +0 -541
  145. package/manage-users.sql +0 -191
  146. package/migrate-to-domain-auth.sql +0 -47
  147. package/package/CACHE-BUSTING-GUIDE.md +0 -82
  148. package/package/CHANGELOG.md +0 -902
  149. package/package/README.md +0 -248
  150. package/package/assets/css/notion-style.css +0 -2211
  151. package/package/assets/js/auth.js +0 -67
  152. package/package/assets/js/main.js +0 -1565
  153. package/package/cli.js +0 -764
  154. package/package/index.js +0 -38
  155. package/package/knowcode-doc-builder-1.3.15.tgz +0 -0
  156. package/package/lib/builder.js +0 -32
  157. package/package/lib/config.js +0 -278
  158. package/package/lib/core-builder.js +0 -957
  159. package/package/lib/deploy.js +0 -497
  160. package/package/lib/dev-server.js +0 -96
  161. package/package/package.json +0 -34
  162. package/package/scripts/npx-runner.js +0 -27
  163. package/package/scripts/setup.js +0 -56
  164. package/package/test-cache-bust.sh +0 -43
  165. package/public-config.js +0 -22
  166. package/public-html/404.html +0 -115
  167. package/public-html/README.html +0 -149
  168. package/public-html/css/notion-style.css +0 -2036
  169. package/public-html/index.html +0 -149
  170. package/public-html/js/auth.js +0 -67
  171. package/public-html/js/main.js +0 -1485
  172. package/quick-test-commands.md +0 -40
  173. package/recordings/Screenshot 2025-07-24 at 18.22.01.png +0 -0
  174. package/recordings/mh-ls-22jul.txt +0 -2305
  175. package/screenshot.png +0 -0
  176. package/scripts/Screenshot 2025-07-23 at 15.39.41.png +0 -0
  177. package/setup-database-v2.sql +0 -53
  178. package/setup-database.sql +0 -41
  179. package/test-auth-config.js +0 -17
  180. package/test-cache-bust.sh +0 -43
  181. package/test-docs/README.md +0 -39
  182. package/test-html/404.html +0 -115
  183. package/test-html/README.html +0 -172
  184. package/test-html/auth.js +0 -97
  185. package/test-html/css/notion-style.css +0 -2036
  186. package/test-html/index.html +0 -172
  187. package/test-html/js/auth.js +0 -97
  188. package/test-html/js/main.js +0 -1485
  189. package/test-html/login.html +0 -102
  190. package/test-html/logout.html +0 -18
  191. package/update-domain.sql +0 -9
  192. package/user-access-view.sql +0 -49
  193. package/user-management/README.md +0 -301
  194. package/user-management/add-users.sh +0 -776
  195. package/user-management/create-user.js +0 -65
  196. package/user-management/users.txt +0 -15
  197. package/view-all-users.sql +0 -40
  198. 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
- }