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