@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,2211 +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
- /* Breadcrumbs - definition moved to line 888 to avoid duplication */
463
-
464
- .breadcrumb-item {
465
- display: inline-flex;
466
- align-items: center;
467
- gap: var(--space-1);
468
- color: var(--color-text-secondary);
469
- text-decoration: none;
470
- font-size: var(--text-sm);
471
- padding: var(--space-1) var(--space-2);
472
- border-radius: var(--radius-sm);
473
- transition: all var(--duration-fast);
474
- }
475
-
476
- .breadcrumb-item:hover {
477
- background: var(--color-bg-hover);
478
- color: var(--color-text-primary);
479
- }
480
-
481
- .breadcrumb-item.current {
482
- color: var(--color-text-primary);
483
- font-weight: var(--font-medium);
484
- }
485
-
486
- .breadcrumb-separator {
487
- color: var(--color-text-tertiary);
488
- font-size: var(--text-xs);
489
- margin: 0 var(--space-1);
490
- }
491
-
492
- /* Main Wrapper */
493
- .main-wrapper {
494
- display: flex;
495
- height: calc(100vh - var(--header-height) - var(--breadcrumb-height));
496
- margin-top: calc(var(--header-height) + var(--breadcrumb-height));
497
- overflow: hidden;
498
- }
499
-
500
- .main-wrapper.banner-visible {
501
- height: calc(100vh - var(--header-height) - var(--breadcrumb-height) - 3.5rem);
502
- margin-top: calc(var(--header-height) + var(--breadcrumb-height) + 3.5rem);
503
- }
504
-
505
- .sidebar-header {
506
- padding: var(--space-3);
507
- border-bottom: 1px solid var(--color-border-default);
508
- margin-bottom: 0;
509
- }
510
-
511
-
512
- /* Navigation */
513
- .navigation {
514
- flex: 1;
515
- padding: var(--space-2);
516
- overflow-y: auto;
517
- overflow-x: visible;
518
-
519
- /* Scrollbar styling */
520
- scrollbar-width: thin;
521
- scrollbar-color: var(--color-border-default) transparent;
522
- }
523
-
524
- .resize-handle {
525
- width: 4px;
526
- background: transparent;
527
- cursor: col-resize;
528
- position: absolute;
529
- top: 0;
530
- right: 0;
531
- bottom: 0;
532
- transition: background var(--duration-fast);
533
- }
534
-
535
- .resize-handle:hover {
536
- background: var(--color-border-focus);
537
- }
538
-
539
- .navigation::-webkit-scrollbar {
540
- width: 6px;
541
- }
542
-
543
- .navigation::-webkit-scrollbar-track {
544
- background: transparent;
545
- }
546
-
547
- .navigation::-webkit-scrollbar-thumb {
548
- background: var(--color-border-default);
549
- border-radius: 3px;
550
- }
551
-
552
- .navigation::-webkit-scrollbar-thumb:hover {
553
- background: var(--color-text-tertiary);
554
- }
555
-
556
- .nav-section {
557
- margin-bottom: var(--space-0-5);
558
- }
559
-
560
- .nav-section[data-level="0"] {
561
- margin-left: 0;
562
- }
563
-
564
- .nav-section[data-level="1"] {
565
- margin-left: var(--space-4);
566
- margin-bottom: var(--space-0-5);
567
- }
568
-
569
- .nav-section[data-level="2"] {
570
- margin-left: var(--space-8);
571
- margin-bottom: var(--space-0-5);
572
- }
573
-
574
- .nav-title {
575
- display: flex;
576
- align-items: center;
577
- padding: var(--space-1-5) var(--space-3);
578
- font-size: var(--text-sm);
579
- font-weight: var(--font-medium);
580
- color: var(--color-text-secondary);
581
- cursor: pointer;
582
- border-radius: var(--radius-md);
583
- transition: all var(--duration-fast) var(--easing-out);
584
- user-select: none;
585
- }
586
-
587
- /* Indent nav titles based on their level */
588
- .nav-section[data-level="1"] .nav-title {
589
- padding-left: calc(var(--space-3) + var(--space-4));
590
- }
591
-
592
- .nav-section[data-level="2"] .nav-title {
593
- padding-left: calc(var(--space-3) + var(--space-8));
594
- }
595
-
596
- .nav-title:hover {
597
- background: var(--color-bg-hover);
598
- color: var(--color-text-primary);
599
- }
600
-
601
- .nav-title i {
602
- margin-right: var(--space-2);
603
- font-size: var(--text-sm);
604
- }
605
-
606
- .collapse-icon {
607
- margin-right: var(--space-1) !important;
608
- transition: transform var(--duration-fast) var(--easing-out);
609
- }
610
-
611
- .nav-title.expanded .collapse-icon {
612
- transform: rotate(90deg);
613
- }
614
-
615
- .nav-content {
616
- overflow: hidden;
617
- transition: all var(--duration-normal) var(--easing-out);
618
- }
619
-
620
- .nav-content.collapsed {
621
- max-height: 0;
622
- opacity: 0;
623
- }
624
-
625
- .nav-item {
626
- display: flex;
627
- align-items: center;
628
- padding: var(--space-1-5) var(--space-3);
629
- font-size: var(--text-sm);
630
- color: var(--color-text-primary);
631
- text-decoration: none;
632
- border-radius: var(--radius-md);
633
- transition: all var(--duration-fast) var(--easing-out);
634
- margin-bottom: 0;
635
- gap: var(--space-2);
636
- }
637
-
638
- /* Indent nav items based on their parent section level */
639
- .nav-section[data-level="0"] .nav-item {
640
- padding-left: calc(var(--space-3) + var(--space-6));
641
- }
642
-
643
- .nav-section[data-level="1"] .nav-item {
644
- padding-left: calc(var(--space-3) + var(--space-10));
645
- }
646
-
647
- .nav-section[data-level="2"] .nav-item {
648
- padding-left: calc(var(--space-3) + var(--space-12));
649
- }
650
-
651
- .nav-item:hover {
652
- background: var(--color-bg-hover);
653
- color: var(--color-text-primary);
654
- text-decoration: none;
655
- }
656
-
657
- .nav-item.active {
658
- background: var(--color-bg-hover);
659
- color: var(--color-text-primary);
660
- font-weight: var(--font-medium);
661
- }
662
-
663
- .nav-item i {
664
- margin-right: var(--space-2);
665
- font-size: var(--text-sm);
666
- color: var(--color-text-tertiary);
667
- }
668
-
669
- /* Main Content */
670
- .content {
671
- flex: 1;
672
- padding: 40px var(--space-8);
673
- overflow-y: auto;
674
- background: var(--color-bg-default);
675
- }
676
-
677
- .content-inner {
678
- max-width: 65rem;
679
- margin: 0 auto;
680
- }
681
-
682
- /* Tables */
683
- table {
684
- width: 100%;
685
- border-collapse: collapse;
686
- margin: var(--space-4) 0;
687
- font-size: var(--text-sm);
688
- background: var(--color-bg-default);
689
- border: 1px solid var(--color-border-default);
690
- border-radius: var(--radius-lg);
691
- overflow: hidden;
692
- }
693
-
694
- th {
695
- text-align: left;
696
- font-weight: var(--font-semibold);
697
- padding: var(--space-3) var(--space-4);
698
- background: var(--color-bg-secondary);
699
- border-bottom: 1px solid var(--color-border-default);
700
- color: var(--color-text-primary);
701
- vertical-align: top !important;
702
- }
703
-
704
- td {
705
- padding: var(--space-3) var(--space-4);
706
- border-bottom: 1px solid var(--color-border-default);
707
- color: var(--color-text-primary);
708
- vertical-align: top !important;
709
- }
710
-
711
- /* Ensure all table cell content is top-aligned */
712
- table th,
713
- table td {
714
- vertical-align: top !important;
715
- }
716
-
717
- /* Ensure nested elements in table cells don't affect alignment */
718
- table td > *,
719
- table th > * {
720
- vertical-align: top;
721
- }
722
-
723
- /* Remove top margin from first element in table cells */
724
- td > *:first-child,
725
- th > *:first-child {
726
- margin-top: 0 !important;
727
- }
728
-
729
- /* Remove bottom margin from last element in table cells */
730
- td > *:last-child,
731
- th > *:last-child {
732
- margin-bottom: 0 !important;
733
- }
734
-
735
- /* Specifically target common block elements that might be first in cells */
736
- td > h1:first-child,
737
- td > h2:first-child,
738
- td > h3:first-child,
739
- td > h4:first-child,
740
- td > h5:first-child,
741
- td > h6:first-child,
742
- td > p:first-child,
743
- td > ul:first-child,
744
- td > ol:first-child,
745
- td > blockquote:first-child,
746
- td > pre:first-child,
747
- th > h1:first-child,
748
- th > h2:first-child,
749
- th > h3:first-child,
750
- th > h4:first-child,
751
- th > h5:first-child,
752
- th > h6:first-child,
753
- th > p:first-child,
754
- th > ul:first-child,
755
- th > ol:first-child,
756
- th > blockquote:first-child,
757
- th > pre:first-child {
758
- margin-top: 0 !important;
759
- padding-top: 0 !important;
760
- }
761
-
762
- tr:last-child td {
763
- border-bottom: none;
764
- }
765
-
766
- tr:hover {
767
- background: var(--color-bg-hover);
768
- }
769
-
770
- /* Buttons */
771
- .btn {
772
- display: inline-flex;
773
- align-items: center;
774
- justify-content: center;
775
- gap: var(--space-2);
776
- padding: var(--space-2) var(--space-4);
777
- font-size: var(--text-sm);
778
- font-weight: var(--font-medium);
779
- line-height: var(--leading-tight);
780
- border-radius: var(--radius-md);
781
- border: 1px solid transparent;
782
- cursor: pointer;
783
- transition: all var(--duration-normal) var(--easing-out);
784
- outline: none;
785
- text-decoration: none;
786
- }
787
-
788
- .btn-primary {
789
- background: var(--color-primary);
790
- color: var(--color-text-inverse);
791
- border-color: var(--color-primary);
792
- }
793
-
794
- .btn-primary:hover {
795
- background: var(--color-primary-hover);
796
- border-color: var(--color-primary-hover);
797
- }
798
-
799
- .btn-secondary {
800
- background: var(--color-bg-default);
801
- color: var(--color-text-primary);
802
- border-color: var(--color-border-default);
803
- }
804
-
805
- .btn-secondary:hover {
806
- background: var(--color-bg-secondary);
807
- border-color: var(--color-border-hover);
808
- }
809
-
810
- .btn-ghost {
811
- background: transparent;
812
- color: var(--color-text-primary);
813
- border-color: transparent;
814
- }
815
-
816
- .btn-ghost:hover {
817
- background: var(--color-bg-secondary);
818
- }
819
-
820
- /* Cards */
821
- .card {
822
- background: var(--color-bg-card);
823
- border: 1px solid var(--color-border-default);
824
- border-radius: var(--radius-lg);
825
- padding: var(--space-6);
826
- margin-bottom: var(--space-4);
827
- box-shadow: var(--shadow-sm);
828
- transition: all var(--duration-normal) var(--easing-out);
829
- }
830
-
831
- .card:hover {
832
- box-shadow: var(--shadow-md);
833
- transform: translateY(-2px);
834
- }
835
-
836
- /* Badges */
837
- .badge {
838
- display: inline-flex;
839
- align-items: center;
840
- padding: var(--space-0-5) var(--space-2);
841
- font-size: var(--text-xs);
842
- font-weight: var(--font-medium);
843
- line-height: var(--leading-normal);
844
- border-radius: var(--radius-sm);
845
- background: var(--color-border-default);
846
- color: var(--color-text-primary);
847
- }
848
-
849
- .badge-primary {
850
- background: var(--color-primary);
851
- color: var(--color-text-inverse);
852
- }
853
-
854
- .badge-success {
855
- background: var(--color-accent-green-bg);
856
- color: var(--color-accent-green);
857
- }
858
-
859
- .badge-warning {
860
- background: var(--color-accent-yellow-bg);
861
- color: var(--color-accent-yellow);
862
- }
863
-
864
- .badge-danger {
865
- background: var(--color-accent-red-bg);
866
- color: var(--color-accent-red);
867
- }
868
-
869
- /* Theme Toggle */
870
- .theme-toggle {
871
- padding: var(--space-2);
872
- background: transparent;
873
- border: none;
874
- cursor: pointer;
875
- color: var(--color-text-secondary);
876
- font-size: var(--text-lg);
877
- transition: color var(--duration-fast) var(--easing-out);
878
- }
879
-
880
- .theme-toggle:hover {
881
- color: var(--color-text-primary);
882
- }
883
-
884
- /* Dark Theme */
885
- [data-theme="dark"] {
886
- --color-bg-default: #191919;
887
- --color-bg-secondary: #202020;
888
- --color-bg-tertiary: #2A2A2A;
889
- --color-bg-hover: #2A2A2A;
890
- --color-bg-card: #202020;
891
-
892
- --color-text-primary: #E6E6E6;
893
- --color-text-secondary: #ABABAB;
894
- --color-text-tertiary: #787774;
895
-
896
- --color-border-default: #373737;
897
- --color-border-hover: #474747;
898
- --color-divider: #2A2A2A;
899
-
900
- --color-shadow: rgba(0, 0, 0, 0.3);
901
- }
902
-
903
- /* Dark theme Mermaid styles */
904
- [data-theme="dark"] .mermaid-container {
905
- background: var(--color-bg-default);
906
- border-color: var(--color-border-default);
907
- }
908
-
909
- [data-theme="dark"] .mermaid-title {
910
- background: var(--color-bg-secondary);
911
- border-color: var(--color-border-default);
912
- color: var(--color-text-primary);
913
- }
914
-
915
- [data-theme="dark"] .mermaid-toolbar {
916
- background: var(--color-bg-secondary);
917
- border-color: var(--color-border-default);
918
- }
919
-
920
- [data-theme="dark"] .mermaid-btn {
921
- background: var(--color-bg-default);
922
- border-color: var(--color-border-default);
923
- color: var(--color-text-secondary);
924
- }
925
-
926
- [data-theme="dark"] .mermaid-btn:hover {
927
- background: var(--color-accent-blue);
928
- color: var(--color-text-inverse);
929
- border-color: var(--color-accent-blue);
930
- }
931
-
932
- [data-theme="dark"] .mermaid-fullscreen-wrapper {
933
- background: var(--color-bg-default);
934
- color: var(--color-text-primary);
935
- }
936
-
937
- /* Breadcrumbs */
938
- .breadcrumbs {
939
- display: flex;
940
- align-items: center;
941
- padding: 0.5rem var(--space-6);
942
- background: var(--color-bg-secondary);
943
- border-bottom: 1px solid var(--color-border-default);
944
- font-size: var(--text-sm);
945
- color: var(--color-text-secondary);
946
- position: fixed;
947
- top: var(--header-height);
948
- left: 0;
949
- right: 0;
950
- height: var(--breadcrumb-height);
951
- z-index: 900;
952
- transition: top var(--duration-normal), background-color var(--duration-normal);
953
- gap: var(--space-2);
954
- }
955
-
956
- .breadcrumbs.banner-visible {
957
- top: calc(var(--header-height) + 3.5rem);
958
- }
959
-
960
- .breadcrumbs:not(.banner-visible) {
961
- top: var(--header-height);
962
- }
963
-
964
- .breadcrumb-item {
965
- display: flex;
966
- align-items: center;
967
- gap: var(--space-1-5);
968
- color: var(--color-text-tertiary);
969
- text-decoration: none;
970
- padding: var(--space-1) var(--space-2);
971
- border-radius: var(--radius-sm);
972
- transition: all var(--duration-fast);
973
- white-space: nowrap;
974
- }
975
-
976
- .breadcrumb-item:hover:not(.current) {
977
- background: var(--color-bg-hover);
978
- color: var(--color-text-secondary);
979
- }
980
-
981
- .breadcrumb-item.current {
982
- color: var(--color-text-primary);
983
- font-weight: var(--font-medium);
984
- cursor: default;
985
- }
986
-
987
- .breadcrumb-separator {
988
- margin: 0 var(--space-1);
989
- color: var(--color-text-tertiary);
990
- font-size: var(--text-xs);
991
- opacity: 0.6;
992
- }
993
-
994
- .breadcrumb-item i {
995
- font-size: var(--text-xs);
996
- opacity: 0.8;
997
- }
998
-
999
- .breadcrumb-item.current i {
1000
- opacity: 1;
1001
- }
1002
-
1003
- /* Banner visibility handled in main breadcrumbs definition */
1004
-
1005
- /* Menu Toggle (Mobile) */
1006
- .menu-toggle {
1007
- display: none;
1008
- background: none;
1009
- border: none;
1010
- font-size: 1.5rem;
1011
- cursor: pointer;
1012
- color: var(--color-text-primary);
1013
- padding: var(--space-2);
1014
- border-radius: var(--radius-small);
1015
- transition: all var(--duration-fast) var(--easing-out);
1016
- }
1017
-
1018
- .menu-toggle:hover {
1019
- background: var(--color-bg-secondary);
1020
- color: var(--color-text-primary);
1021
- }
1022
-
1023
- /* Show menu toggle on desktop when menu starts closed or is closed */
1024
- @media (min-width: 769px) {
1025
- body.menu-starts-closed .menu-toggle {
1026
- display: block;
1027
- }
1028
- }
1029
-
1030
- /* Responsive Design */
1031
- /* Keep sidebar visible on tablets, hide only on mobile */
1032
-
1033
- @media (max-width: 768px) {
1034
- .header-content {
1035
- padding: 0 var(--space-4);
1036
- }
1037
-
1038
- /* Hide sidebar on mobile */
1039
- .sidebar {
1040
- position: fixed;
1041
- top: calc(var(--header-height) + var(--breadcrumb-height));
1042
- left: 0;
1043
- height: calc(100vh - var(--header-height) - var(--breadcrumb-height));
1044
- z-index: 1002; /* Above header and floating button */
1045
- transform: translateX(-100%);
1046
- transition: transform var(--duration-normal) var(--easing-out);
1047
- box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15); /* Add shadow for depth */
1048
- }
1049
-
1050
- .sidebar.open {
1051
- transform: translateX(0);
1052
- }
1053
-
1054
- /* Mobile menu overlay */
1055
- .sidebar-overlay {
1056
- display: none;
1057
- position: fixed;
1058
- top: 0;
1059
- left: 0;
1060
- right: 0;
1061
- bottom: 0;
1062
- background: rgba(0, 0, 0, 0.5);
1063
- z-index: 1001; /* Below sidebar but above content */
1064
- opacity: 0;
1065
- transition: opacity var(--duration-normal);
1066
- }
1067
-
1068
- .sidebar-overlay.active {
1069
- display: block;
1070
- opacity: 1;
1071
- }
1072
-
1073
- .main-wrapper {
1074
- margin-left: 0;
1075
- margin-top: var(--header-height); /* Only account for fixed header on mobile */
1076
- }
1077
-
1078
- .content {
1079
- margin-left: 0;
1080
- padding: var(--space-3) var(--space-4); /* Reduced top/bottom padding on mobile */
1081
- }
1082
-
1083
- .menu-toggle {
1084
- display: block;
1085
- }
1086
- }
1087
-
1088
- /* Mermaid Diagrams */
1089
- .mermaid {
1090
- background: var(--color-bg-secondary);
1091
- padding: var(--space-4);
1092
- border-radius: var(--radius-lg);
1093
- overflow-x: auto;
1094
- margin: var(--space-2) 0;
1095
- }
1096
-
1097
- /* Mermaid Full Screen Viewer */
1098
- .mermaid-container {
1099
- position: relative;
1100
- margin: var(--space-3) 0;
1101
- border: 1px solid var(--color-border-default);
1102
- border-radius: var(--radius-lg);
1103
- overflow: hidden;
1104
- background: var(--color-bg-default);
1105
- }
1106
-
1107
- .mermaid-title {
1108
- padding: var(--space-3) var(--space-4);
1109
- background: var(--color-bg-secondary);
1110
- border-bottom: 1px solid var(--color-border-default);
1111
- font-size: var(--text-base);
1112
- font-weight: var(--font-semibold);
1113
- color: var(--color-text-primary);
1114
- }
1115
-
1116
- .mermaid-toolbar {
1117
- display: flex;
1118
- justify-content: space-between;
1119
- align-items: center;
1120
- padding: var(--space-3) var(--space-4);
1121
- background: var(--color-bg-secondary);
1122
- border-bottom: 1px solid var(--color-border-default);
1123
- font-size: var(--text-sm);
1124
- color: var(--color-text-secondary);
1125
- }
1126
-
1127
- .mermaid-actions {
1128
- display: flex;
1129
- gap: var(--space-2);
1130
- }
1131
-
1132
- .mermaid-btn {
1133
- display: flex;
1134
- align-items: center;
1135
- gap: var(--space-1-5);
1136
- padding: var(--space-1-5) var(--space-3);
1137
- border: 1px solid var(--color-border-default);
1138
- border-radius: var(--radius-md);
1139
- background: var(--color-bg-default);
1140
- color: var(--color-text-secondary);
1141
- text-decoration: none;
1142
- font-size: var(--text-sm);
1143
- cursor: pointer;
1144
- transition: all var(--duration-fast);
1145
- white-space: nowrap;
1146
- }
1147
-
1148
- .mermaid-btn:hover {
1149
- background: var(--color-accent-blue);
1150
- color: var(--color-text-inverse);
1151
- border-color: var(--color-accent-blue);
1152
- transform: translateY(-1px);
1153
- box-shadow: var(--shadow-sm);
1154
- }
1155
-
1156
- .mermaid-btn i {
1157
- font-size: var(--text-xs);
1158
- flex-shrink: 0;
1159
- }
1160
-
1161
- .mermaid-wrapper {
1162
- padding: var(--space-3);
1163
- overflow: auto;
1164
- max-height: 600px;
1165
- }
1166
-
1167
- /* Full Screen Modal */
1168
- .mermaid-fullscreen {
1169
- position: fixed;
1170
- top: 0;
1171
- left: 0;
1172
- width: 100vw;
1173
- height: 100vh;
1174
- background: rgba(0, 0, 0, 0.95);
1175
- display: none;
1176
- z-index: 10000;
1177
- backdrop-filter: blur(4px);
1178
- }
1179
-
1180
- .mermaid-fullscreen.active {
1181
- display: flex;
1182
- flex-direction: column;
1183
- }
1184
-
1185
- .mermaid-fullscreen-toolbar {
1186
- display: flex;
1187
- justify-content: space-between;
1188
- align-items: center;
1189
- padding: var(--space-4) var(--space-8);
1190
- background: rgba(255, 255, 255, 0.1);
1191
- backdrop-filter: blur(8px);
1192
- border-bottom: 1px solid rgba(255, 255, 255, 0.1);
1193
- }
1194
-
1195
- .mermaid-fullscreen-title {
1196
- color: white;
1197
- font-size: var(--text-lg);
1198
- font-weight: var(--font-semibold);
1199
- }
1200
-
1201
- .mermaid-fullscreen-controls {
1202
- display: flex;
1203
- gap: var(--space-4);
1204
- align-items: center;
1205
- }
1206
-
1207
- .mermaid-zoom-controls {
1208
- display: flex;
1209
- gap: var(--space-2);
1210
- align-items: center;
1211
- }
1212
-
1213
- .mermaid-zoom-btn {
1214
- padding: var(--space-2);
1215
- border: 1px solid rgba(255, 255, 255, 0.3);
1216
- border-radius: var(--radius-md);
1217
- background: rgba(255, 255, 255, 0.1);
1218
- color: white;
1219
- cursor: pointer;
1220
- transition: all var(--duration-fast);
1221
- display: flex;
1222
- align-items: center;
1223
- justify-content: center;
1224
- width: var(--space-10);
1225
- height: var(--space-10);
1226
- }
1227
-
1228
- .mermaid-zoom-btn:hover {
1229
- background: rgba(255, 255, 255, 0.2);
1230
- border-color: rgba(255, 255, 255, 0.5);
1231
- }
1232
-
1233
- .mermaid-zoom-level {
1234
- color: white;
1235
- font-size: var(--text-sm);
1236
- min-width: 3rem;
1237
- text-align: center;
1238
- font-weight: var(--font-medium);
1239
- }
1240
-
1241
- .mermaid-close-btn {
1242
- padding: var(--space-2) var(--space-4);
1243
- border: 1px solid rgba(255, 255, 255, 0.3);
1244
- border-radius: var(--radius-md);
1245
- background: rgba(255, 255, 255, 0.1);
1246
- color: white;
1247
- cursor: pointer;
1248
- transition: all var(--duration-fast);
1249
- display: flex;
1250
- align-items: center;
1251
- gap: var(--space-2);
1252
- font-size: var(--text-sm);
1253
- }
1254
-
1255
- .mermaid-close-btn:hover {
1256
- background: rgba(255, 255, 255, 0.2);
1257
- }
1258
-
1259
- .mermaid-fullscreen-content {
1260
- flex: 1;
1261
- display: flex;
1262
- align-items: center;
1263
- justify-content: center;
1264
- padding: var(--space-8);
1265
- overflow: hidden;
1266
- }
1267
-
1268
- .mermaid-fullscreen-wrapper {
1269
- background: white;
1270
- border-radius: var(--radius-lg);
1271
- padding: var(--space-8);
1272
- width: calc(100vw - var(--space-8));
1273
- height: calc(100vh - 6rem);
1274
- overflow: auto;
1275
- box-shadow: var(--shadow-xl);
1276
- transform-origin: center center;
1277
- transition: transform var(--duration-normal);
1278
- display: flex;
1279
- align-items: center;
1280
- justify-content: center;
1281
- }
1282
-
1283
- .mermaid-fullscreen-diagram {
1284
- display: flex;
1285
- justify-content: center;
1286
- align-items: center;
1287
- width: 100%;
1288
- height: 100%;
1289
- min-height: 400px;
1290
- position: relative;
1291
- }
1292
-
1293
- .mermaid-fullscreen-diagram .mermaid {
1294
- width: 100% !important;
1295
- height: 100% !important;
1296
- display: flex !important;
1297
- justify-content: center !important;
1298
- align-items: center !important;
1299
- background: transparent !important;
1300
- border: none !important;
1301
- margin: 0 !important;
1302
- padding: 0 !important;
1303
- }
1304
-
1305
- .mermaid-fullscreen-diagram svg {
1306
- max-width: 100% !important;
1307
- max-height: 100% !important;
1308
- width: auto !important;
1309
- height: auto !important;
1310
- display: block !important;
1311
- margin: 0 auto !important;
1312
- }
1313
-
1314
- /* Zoom functionality */
1315
- .mermaid-fullscreen-wrapper.zoomed {
1316
- overflow: visible;
1317
- }
1318
-
1319
- /* Animation for opening fullscreen */
1320
- @keyframes mermaidFadeIn {
1321
- from {
1322
- opacity: 0;
1323
- transform: scale(0.95);
1324
- }
1325
- to {
1326
- opacity: 1;
1327
- transform: scale(1);
1328
- }
1329
- }
1330
-
1331
- .mermaid-fullscreen.active .mermaid-fullscreen-wrapper {
1332
- animation: mermaidFadeIn var(--duration-normal) ease-out;
1333
- }
1334
-
1335
- /* Responsive design for Mermaid */
1336
- @media (max-width: 768px) {
1337
- .mermaid-toolbar {
1338
- flex-direction: column;
1339
- gap: var(--space-2);
1340
- align-items: flex-start;
1341
- padding: var(--space-3);
1342
- }
1343
-
1344
- .mermaid-actions {
1345
- width: 100%;
1346
- justify-content: flex-end;
1347
- flex-wrap: wrap;
1348
- }
1349
-
1350
- .mermaid-btn {
1351
- font-size: var(--text-xs);
1352
- padding: var(--space-1) var(--space-2);
1353
- }
1354
-
1355
- .mermaid-fullscreen-toolbar {
1356
- padding: var(--space-3);
1357
- flex-direction: column;
1358
- gap: var(--space-2);
1359
- }
1360
-
1361
- .mermaid-fullscreen-controls {
1362
- flex-direction: column;
1363
- gap: var(--space-2);
1364
- }
1365
-
1366
- .mermaid-fullscreen-content {
1367
- padding: var(--space-4);
1368
- }
1369
-
1370
- .mermaid-fullscreen-wrapper {
1371
- width: calc(100vw - var(--space-4));
1372
- height: calc(100vh - 8rem);
1373
- padding: var(--space-4);
1374
- }
1375
- }
1376
-
1377
- /* Preview Banner */
1378
- .preview-banner {
1379
- position: fixed;
1380
- top: var(--header-height);
1381
- left: 0;
1382
- right: 0;
1383
- background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
1384
- color: white;
1385
- z-index: 1000;
1386
- box-shadow: var(--shadow-md);
1387
- transition: transform var(--duration-normal), opacity var(--duration-normal);
1388
- /* Default to hidden state to prevent flash */
1389
- transform: translateY(-100%);
1390
- opacity: 0;
1391
- pointer-events: none;
1392
- }
1393
-
1394
- .preview-banner.visible {
1395
- transform: translateY(0);
1396
- opacity: 1;
1397
- pointer-events: auto;
1398
- }
1399
-
1400
- .preview-banner.hidden {
1401
- transform: translateY(-100%);
1402
- opacity: 0;
1403
- pointer-events: none;
1404
- }
1405
-
1406
- .banner-content {
1407
- display: flex;
1408
- align-items: center;
1409
- justify-content: center;
1410
- gap: var(--space-3);
1411
- max-width: 1400px;
1412
- margin: 0 auto;
1413
- }
1414
-
1415
- .banner-dismiss {
1416
- padding: var(--space-1) var(--space-2);
1417
- background: transparent;
1418
- border: none;
1419
- cursor: pointer;
1420
- color: var(--color-accent-yellow);
1421
- font-size: var(--text-base);
1422
- transition: opacity var(--duration-fast) var(--easing-out);
1423
- }
1424
-
1425
- .banner-dismiss:hover {
1426
- opacity: 0.7;
1427
- }
1428
-
1429
- /* Animations */
1430
- @keyframes fadeIn {
1431
- from {
1432
- opacity: 0;
1433
- transform: translateY(-10px);
1434
- }
1435
- to {
1436
- opacity: 1;
1437
- transform: translateY(0);
1438
- }
1439
- }
1440
-
1441
- .fade-in {
1442
- animation: fadeIn var(--duration-normal) var(--easing-out);
1443
- }
1444
-
1445
- /* Utility Classes */
1446
- .text-center { text-align: center; }
1447
- .text-right { text-align: right; }
1448
- .text-muted { color: var(--color-text-secondary); }
1449
- .text-small { font-size: var(--text-sm); }
1450
- .text-large { font-size: var(--text-lg); }
1451
- .font-mono { font-family: var(--font-mono); }
1452
- .mt-0 { margin-top: 0; }
1453
- .mb-0 { margin-bottom: 0; }
1454
- .mt-4 { margin-top: var(--space-4); }
1455
- .mb-4 { margin-bottom: var(--space-4); }
1456
- .mt-8 { margin-top: var(--space-8); }
1457
- .mb-8 { margin-bottom: var(--space-8); }
1458
-
1459
- /* Table of Contents */
1460
- .toc-container {
1461
- background: var(--color-bg-secondary);
1462
- border-radius: var(--radius-lg);
1463
- padding: var(--space-6);
1464
- margin: var(--space-6) 0;
1465
- border: 1px solid var(--color-border-default);
1466
- }
1467
-
1468
- .toc-container h2 {
1469
- font-size: var(--text-lg);
1470
- font-weight: var(--font-semibold);
1471
- color: var(--color-text-primary);
1472
- margin-bottom: var(--space-4);
1473
- padding-bottom: var(--space-2);
1474
- border-bottom: 2px solid var(--color-divider);
1475
- }
1476
-
1477
- .toc-list {
1478
- list-style: none;
1479
- padding: 0;
1480
- margin: 0;
1481
- }
1482
-
1483
- .toc-list ol,
1484
- .toc-list ul {
1485
- list-style: none;
1486
- padding: 0;
1487
- margin: 0;
1488
- }
1489
-
1490
- .toc-list li {
1491
- position: relative;
1492
- margin-bottom: 0;
1493
- line-height: 1.4;
1494
- }
1495
-
1496
- .toc-list > li {
1497
- margin-bottom: 0;
1498
- }
1499
-
1500
- .toc-list li::before {
1501
- content: '';
1502
- position: absolute;
1503
- left: 0;
1504
- top: 0.75em;
1505
- width: 6px;
1506
- height: 6px;
1507
- background: var(--color-text-tertiary);
1508
- border-radius: 50%;
1509
- opacity: 0.5;
1510
- }
1511
-
1512
- .toc-list a {
1513
- display: block;
1514
- padding: 2px var(--space-2);
1515
- padding-left: var(--space-4);
1516
- color: var(--color-text-secondary);
1517
- font-size: var(--text-sm);
1518
- transition: all var(--duration-fast);
1519
- border-radius: var(--radius-md);
1520
- text-decoration: none;
1521
- position: relative;
1522
- }
1523
-
1524
- .toc-list a:hover {
1525
- color: var(--color-accent-blue);
1526
- background: rgba(0, 115, 230, 0.05);
1527
- transform: translateX(1px);
1528
- }
1529
-
1530
- /* Nested TOC items */
1531
- .toc-list .toc-h2 {
1532
- font-weight: var(--font-medium);
1533
- }
1534
-
1535
- .toc-list .toc-h3 {
1536
- padding-left: calc(var(--space-4) + var(--space-6));
1537
- font-size: var(--text-sm);
1538
- color: var(--color-text-tertiary);
1539
- }
1540
-
1541
- .toc-list .toc-h3::before {
1542
- left: var(--space-6);
1543
- width: 4px;
1544
- height: 4px;
1545
- }
1546
-
1547
- .toc-list .toc-h4 {
1548
- padding-left: calc(var(--space-4) + var(--space-10));
1549
- font-size: var(--text-xs);
1550
- color: var(--color-text-tertiary);
1551
- font-style: italic;
1552
- }
1553
-
1554
- .toc-list .toc-h4::before {
1555
- left: var(--space-10);
1556
- width: 3px;
1557
- height: 3px;
1558
- }
1559
-
1560
- /* Active TOC item */
1561
- .toc-list a.active {
1562
- color: var(--color-accent-blue);
1563
- background: var(--color-accent-blue-bg);
1564
- font-weight: var(--font-medium);
1565
- }
1566
-
1567
- /* Number styling for ordered lists */
1568
- .toc-list > ol {
1569
- counter-reset: toc-counter;
1570
- }
1571
-
1572
- .toc-list ol > li {
1573
- counter-increment: toc-counter;
1574
- }
1575
-
1576
- .toc-list ol > li::before {
1577
- content: counter(toc-counter);
1578
- position: absolute;
1579
- left: 0;
1580
- top: var(--space-1);
1581
- width: 1.5rem;
1582
- height: 1.5rem;
1583
- background: var(--color-accent-blue);
1584
- color: var(--color-text-inverse);
1585
- border-radius: var(--radius-md);
1586
- font-size: var(--text-xs);
1587
- font-weight: var(--font-semibold);
1588
- display: flex;
1589
- align-items: center;
1590
- justify-content: center;
1591
- opacity: 1;
1592
- }
1593
-
1594
- .toc-list ol > li > a {
1595
- padding-left: calc(var(--space-4) + var(--space-5));
1596
- }
1597
-
1598
- /* Dark mode adjustments */
1599
- [data-theme="dark"] .toc-container {
1600
- background: var(--color-bg-secondary);
1601
- border-color: var(--color-border-default);
1602
- }
1603
-
1604
- [data-theme="dark"] .toc-container h2 {
1605
- border-bottom-color: var(--color-divider);
1606
- }
1607
-
1608
- [data-theme="dark"] .toc-list a:hover {
1609
- background: var(--color-bg-hover);
1610
- }
1611
-
1612
- /* Tooltip Styles */
1613
- [data-tooltip] {
1614
- position: relative;
1615
- }
1616
-
1617
- /* Tooltip content */
1618
- [data-tooltip]::after {
1619
- content: attr(data-tooltip);
1620
- position: fixed; /* Use fixed positioning to escape overflow containers */
1621
- left: var(--tooltip-left, 0);
1622
- top: var(--tooltip-top, 0);
1623
- transform: translateY(-50%);
1624
- background: #333;
1625
- color: white;
1626
- padding: 8px 12px;
1627
- border-radius: 4px;
1628
- font-size: 14px;
1629
- line-height: 1.4;
1630
- white-space: normal;
1631
- max-width: 300px;
1632
- z-index: 999999;
1633
- pointer-events: none;
1634
- opacity: 0;
1635
- visibility: hidden;
1636
- transition: opacity 0.3s, visibility 0.3s;
1637
- }
1638
-
1639
- [data-tooltip]:hover::after {
1640
- opacity: 1;
1641
- visibility: visible;
1642
- }
1643
-
1644
- /* Ensure nav items have proper stacking context */
1645
- .nav-item[data-tooltip],
1646
- .nav-title[data-tooltip] {
1647
- position: relative !important;
1648
- z-index: 1;
1649
- }
1650
-
1651
- .nav-item[data-tooltip]:hover,
1652
- .nav-title[data-tooltip]:hover {
1653
- z-index: 100000; /* Very high z-index to ensure tooltip appears above everything */
1654
- }
1655
-
1656
- /* Tooltip for nav titles (folders) */
1657
- .nav-title[data-tooltip]::after {
1658
- max-width: 350px;
1659
- font-weight: var(--font-regular);
1660
- }
1661
-
1662
- /* Ensure nav sections don't clip tooltips */
1663
- .nav-section {
1664
- position: relative;
1665
- overflow: visible !important;
1666
- }
1667
-
1668
- /* Remove forced overflow as we're using fixed positioning */
1669
-
1670
- /* Dark mode tooltip styles */
1671
- [data-theme="dark"] [data-tooltip]::after {
1672
- background: var(--color-bg-secondary);
1673
- color: var(--color-text-primary);
1674
- border-color: var(--color-border-default);
1675
- box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.5);
1676
- }
1677
-
1678
- [data-theme="dark"] [data-tooltip]::before {
1679
- border-right-color: var(--color-bg-secondary);
1680
- }
1681
-
1682
- /* Remove custom positioning variables - tooltips always go right */
1683
-
1684
- /* Floating Menu Button */
1685
- .floating-menu-toggle {
1686
- position: fixed;
1687
- bottom: var(--space-6);
1688
- right: var(--space-6);
1689
- width: 56px;
1690
- height: 56px;
1691
- border-radius: 50%;
1692
- background: var(--color-accent-blue);
1693
- color: white;
1694
- border: none;
1695
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 2px 4px rgba(0, 0, 0, 0.1);
1696
- display: flex;
1697
- align-items: center;
1698
- justify-content: center;
1699
- font-size: 1.25rem;
1700
- cursor: pointer;
1701
- z-index: 1001; /* Above sidebar */
1702
- opacity: 0;
1703
- transform: scale(0.8) translateY(20px);
1704
- transition: all var(--duration-normal) var(--easing-out);
1705
- -webkit-tap-highlight-color: transparent;
1706
- }
1707
-
1708
- .floating-menu-toggle.visible {
1709
- opacity: 1;
1710
- transform: scale(1) translateY(0);
1711
- }
1712
-
1713
- .floating-menu-toggle:hover {
1714
- transform: scale(1.1) translateY(0);
1715
- box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2), 0 3px 6px rgba(0, 0, 0, 0.15);
1716
- }
1717
-
1718
- .floating-menu-toggle:active {
1719
- transform: scale(0.95) translateY(0);
1720
- }
1721
-
1722
- .floating-menu-toggle i {
1723
- transition: transform var(--duration-fast) var(--easing-out);
1724
- }
1725
-
1726
- .floating-menu-toggle:hover i {
1727
- transform: rotate(90deg);
1728
- }
1729
-
1730
- /* Dark mode styles for floating button */
1731
- .dark-mode .floating-menu-toggle {
1732
- background: var(--color-accent-blue);
1733
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
1734
- }
1735
-
1736
- .dark-mode .floating-menu-toggle:hover {
1737
- box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
1738
- }
1739
-
1740
- /* Mobile adjustments */
1741
- @media (max-width: 768px) {
1742
- /* Disable tooltips on mobile to prevent overlap issues */
1743
- [data-tooltip]::before,
1744
- [data-tooltip]::after {
1745
- display: none;
1746
- }
1747
-
1748
- .main-wrapper {
1749
- flex-direction: column;
1750
- height: auto;
1751
- min-height: calc(100vh - var(--header-height) - var(--breadcrumb-height));
1752
- margin-top: calc(var(--header-height) + var(--breadcrumb-height)); /* Account for both fixed elements */
1753
- }
1754
-
1755
- /* Sidebar positioning handled in earlier media query */
1756
-
1757
- .content {
1758
- padding: var(--space-3) var(--space-4); /* Consistent reduced padding on mobile */
1759
- }
1760
-
1761
- .content-inner {
1762
- max-width: none;
1763
- }
1764
-
1765
- h1 {
1766
- margin-left: calc(-1 * var(--space-4));
1767
- margin-right: calc(-1 * var(--space-4));
1768
- padding: 0 var(--space-4);
1769
- }
1770
-
1771
- /* Keep preview banner fixed on mobile */
1772
-
1773
- /* Keep breadcrumbs fixed on mobile to prevent double spacing */
1774
- }
1775
-
1776
- /* Navigation Sections */
1777
- .nav-section {
1778
- margin-bottom: var(--space-1);
1779
- }
1780
-
1781
- .nav-title {
1782
- display: flex;
1783
- align-items: center;
1784
- gap: var(--space-2);
1785
- padding: var(--space-2);
1786
- color: var(--color-text-primary);
1787
- text-decoration: none;
1788
- font-size: var(--text-sm);
1789
- font-weight: var(--font-medium);
1790
- border-radius: var(--radius-md);
1791
- transition: all var(--duration-fast);
1792
- cursor: pointer;
1793
- }
1794
-
1795
- .nav-title:hover {
1796
- background: var(--color-bg-hover);
1797
- }
1798
-
1799
- .nav-title.collapsible {
1800
- position: relative;
1801
- }
1802
-
1803
- .nav-title .collapse-icon {
1804
- transition: transform var(--duration-fast);
1805
- color: var(--color-text-tertiary);
1806
- font-size: var(--text-xs);
1807
- }
1808
-
1809
- .nav-title.expanded .collapse-icon {
1810
- transform: rotate(90deg);
1811
- }
1812
-
1813
- .nav-content {
1814
- padding-left: var(--space-4);
1815
- overflow: hidden;
1816
- transition: max-height var(--duration-normal), opacity var(--duration-normal);
1817
- }
1818
-
1819
- .nav-content.collapsed {
1820
- max-height: 0;
1821
- opacity: 0;
1822
- pointer-events: none;
1823
- }
1824
-
1825
- .nav-content:not(.collapsed) {
1826
- max-height: 1000px;
1827
- opacity: 1;
1828
- }
1829
-
1830
- /* Navigation Items */
1831
- .nav-item {
1832
- display: flex;
1833
- align-items: center;
1834
- gap: var(--space-2);
1835
- padding: var(--space-1-5) var(--space-2);
1836
- color: var(--color-text-secondary);
1837
- text-decoration: none;
1838
- font-size: var(--text-sm);
1839
- border-radius: var(--radius-md);
1840
- transition: all var(--duration-fast);
1841
- margin-bottom: var(--space-0-5);
1842
- }
1843
-
1844
- .nav-item:hover {
1845
- background: var(--color-bg-hover);
1846
- color: var(--color-text-primary);
1847
- }
1848
-
1849
- .nav-item.active {
1850
- background: var(--color-accent-blue-bg);
1851
- color: var(--color-accent-blue);
1852
- font-weight: var(--font-medium);
1853
- }
1854
-
1855
- .nav-item i {
1856
- color: var(--color-text-tertiary);
1857
- font-size: var(--text-xs);
1858
- width: 12px;
1859
- text-align: center;
1860
- }
1861
-
1862
- .nav-item.active i {
1863
- color: var(--color-accent-blue);
1864
- }
1865
-
1866
- /* Authentication Pages */
1867
- .auth-container {
1868
- display: flex;
1869
- align-items: center;
1870
- justify-content: center;
1871
- min-height: 100vh;
1872
- background: var(--color-bg-primary);
1873
- padding: var(--space-4);
1874
- }
1875
-
1876
- .auth-box {
1877
- background: var(--color-bg-secondary);
1878
- border: 1px solid var(--color-border-default);
1879
- border-radius: var(--radius-lg);
1880
- padding: var(--space-8);
1881
- width: 100%;
1882
- max-width: 400px;
1883
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
1884
- }
1885
-
1886
- .auth-box h1 {
1887
- margin: 0 0 var(--space-6) 0;
1888
- font-size: var(--text-2xl);
1889
- font-weight: var(--font-semibold);
1890
- color: var(--color-text-primary);
1891
- text-align: center;
1892
- }
1893
-
1894
- .auth-box p {
1895
- color: var(--color-text-secondary);
1896
- text-align: center;
1897
- margin-bottom: var(--space-4);
1898
- }
1899
-
1900
- .form-group {
1901
- margin-bottom: var(--space-4);
1902
- }
1903
-
1904
- .form-group label {
1905
- display: block;
1906
- margin-bottom: var(--space-2);
1907
- font-size: var(--text-sm);
1908
- font-weight: var(--font-medium);
1909
- color: var(--color-text-secondary);
1910
- }
1911
-
1912
- .form-group input {
1913
- width: 100%;
1914
- padding: var(--space-2) var(--space-3);
1915
- border: 1px solid var(--color-border-default);
1916
- border-radius: var(--radius-md);
1917
- font-size: var(--text-base);
1918
- background: var(--color-bg-primary);
1919
- color: var(--color-text-primary);
1920
- transition: all var(--duration-fast);
1921
- }
1922
-
1923
- .form-group input:focus {
1924
- outline: none;
1925
- border-color: var(--color-accent-blue);
1926
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1927
- }
1928
-
1929
- .auth-button {
1930
- width: 100%;
1931
- padding: var(--space-2-5) var(--space-4);
1932
- background: var(--color-accent-blue);
1933
- color: white;
1934
- border: none;
1935
- border-radius: var(--radius-md);
1936
- font-size: var(--text-base);
1937
- font-weight: var(--font-medium);
1938
- cursor: pointer;
1939
- transition: all var(--duration-fast);
1940
- text-align: center;
1941
- text-decoration: none;
1942
- display: inline-block;
1943
- }
1944
-
1945
- .auth-button:hover {
1946
- background: #2563eb;
1947
- transform: translateY(-1px);
1948
- box-shadow: 0 4px 12px rgba(59, 130, 246, 0.25);
1949
- }
1950
-
1951
- .auth-button:active {
1952
- transform: translateY(0);
1953
- }
1954
-
1955
- .error-message {
1956
- margin-top: var(--space-4);
1957
- padding: var(--space-3);
1958
- background: #fef2f2;
1959
- border: 1px solid #fee2e2;
1960
- border-radius: var(--radius-md);
1961
- color: #dc2626;
1962
- font-size: var(--text-sm);
1963
- text-align: center;
1964
- display: none;
1965
- }
1966
-
1967
- .error-message:not(:empty) {
1968
- display: block;
1969
- }
1970
-
1971
- /* Dark mode auth styles */
1972
- .dark .auth-box {
1973
- background: var(--color-bg-secondary);
1974
- border-color: var(--color-border-default);
1975
- }
1976
-
1977
- .dark .form-group input {
1978
- background: var(--color-bg-primary);
1979
- border-color: var(--color-border-default);
1980
- }
1981
-
1982
- .dark .error-message {
1983
- background: #451a1a;
1984
- border-color: #7f1d1d;
1985
- color: #fca5a5;
1986
- }
1987
-
1988
- /* Phosphor Icons Alignment */
1989
- .ph {
1990
- display: inline-block;
1991
- vertical-align: middle;
1992
- line-height: 1;
1993
- position: relative;
1994
- top: -0.05em; /* Slight upward adjustment for better baseline alignment */
1995
- }
1996
-
1997
- /* Ensure icons in headings are properly aligned */
1998
- h1 .ph, h2 .ph, h3 .ph, h4 .ph, h5 .ph, h6 .ph {
1999
- font-size: 0.85em; /* Slightly smaller in headings */
2000
- line-height: 1;
2001
- top: -0.05em;
2002
- }
2003
-
2004
- /* Icons in lists need special handling */
2005
- li .ph {
2006
- margin-right: 0.3em;
2007
- font-size: 1.1em;
2008
- line-height: 1;
2009
- vertical-align: middle;
2010
- top: -0.05em;
2011
- }
2012
-
2013
- /* Icons in tables */
2014
- td .ph, th .ph {
2015
- line-height: 1;
2016
- vertical-align: middle;
2017
- top: -0.05em;
2018
- }
2019
-
2020
- /* Icons in navigation */
2021
- .nav-item .ph,
2022
- .nav-title .ph {
2023
- vertical-align: middle;
2024
- line-height: 1;
2025
- top: 0; /* Navigation items are flex, so no adjustment needed */
2026
- }
2027
-
2028
- /* Icon size adjustments for better visual balance */
2029
- .content p .ph {
2030
- font-size: 1.1em; /* Slightly larger than text for visual balance */
2031
- }
2032
-
2033
- /* Special handling for inline code with icons */
2034
- code .ph {
2035
- font-size: 0.9em;
2036
- vertical-align: middle;
2037
- line-height: 1;
2038
- top: 0;
2039
- }
2040
-
2041
- /* Additional fine-tuning for specific contexts */
2042
- .content-inner .ph {
2043
- /* Remove the transform as we're now using consistent vertical-align: middle */
2044
- }
2045
-
2046
- /* ============================================================================
2047
- Private Navigation Visibility
2048
- ============================================================================ */
2049
-
2050
- /* Hide private navigation sections by default */
2051
- .private-nav {
2052
- display: none;
2053
- }
2054
-
2055
- /* Show private navigation when user is authenticated */
2056
- body.authenticated .private-nav {
2057
- display: block;
2058
- }
2059
-
2060
- /* Smooth transition for authentication state changes */
2061
- .nav-section {
2062
- transition: opacity 0.2s ease-in-out;
2063
- }
2064
-
2065
- /* Optional: Add a lock icon to private sections */
2066
- .private-nav .nav-title::after {
2067
- content: ' 🔒';
2068
- font-size: 0.8em;
2069
- }
2070
-
2071
- /* ============================================================================
2072
- Image Modal System
2073
- ============================================================================ */
2074
-
2075
- /* Style all content images to be clickable */
2076
- .content img {
2077
- cursor: pointer;
2078
- transition: all var(--duration-normal) var(--easing-out);
2079
- border-radius: var(--radius-md);
2080
- max-width: 100%;
2081
- height: auto;
2082
- }
2083
-
2084
- .content img:hover {
2085
- opacity: 0.9;
2086
- transform: scale(1.02);
2087
- box-shadow: var(--shadow-lg);
2088
- }
2089
-
2090
- /* Modal overlay - hidden by default */
2091
- .image-modal {
2092
- display: none;
2093
- position: fixed;
2094
- top: 0;
2095
- left: 0;
2096
- width: 100%;
2097
- height: 100%;
2098
- background: rgba(0, 0, 0, 0.9);
2099
- z-index: 10000;
2100
- cursor: pointer;
2101
- opacity: 0;
2102
- transition: opacity var(--duration-normal) var(--easing-out);
2103
- }
2104
-
2105
- /* Show modal when active */
2106
- .image-modal.active {
2107
- display: flex;
2108
- align-items: center;
2109
- justify-content: center;
2110
- opacity: 1;
2111
- }
2112
-
2113
- /* Modal content container */
2114
- .image-modal-content {
2115
- position: relative;
2116
- max-width: 95%;
2117
- max-height: 95%;
2118
- margin: auto;
2119
- cursor: default;
2120
- }
2121
-
2122
- /* Modal image */
2123
- .image-modal-img {
2124
- width: auto;
2125
- height: auto;
2126
- max-width: 100%;
2127
- max-height: 100vh;
2128
- border-radius: var(--radius-lg);
2129
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
2130
- cursor: default;
2131
- }
2132
-
2133
- /* Close button */
2134
- .image-modal-close {
2135
- position: absolute;
2136
- top: -50px;
2137
- right: 0;
2138
- background: rgba(255, 255, 255, 0.1);
2139
- border: 2px solid rgba(255, 255, 255, 0.3);
2140
- color: white;
2141
- width: 40px;
2142
- height: 40px;
2143
- border-radius: 50%;
2144
- cursor: pointer;
2145
- display: flex;
2146
- align-items: center;
2147
- justify-content: center;
2148
- font-size: 20px;
2149
- font-weight: bold;
2150
- transition: all var(--duration-fast) var(--easing-out);
2151
- backdrop-filter: blur(10px);
2152
- }
2153
-
2154
- .image-modal-close:hover {
2155
- background: rgba(255, 255, 255, 0.2);
2156
- border-color: rgba(255, 255, 255, 0.5);
2157
- transform: scale(1.1);
2158
- }
2159
-
2160
- /* Image caption in modal */
2161
- .image-modal-caption {
2162
- position: absolute;
2163
- bottom: -50px;
2164
- left: 0;
2165
- right: 0;
2166
- background: rgba(0, 0, 0, 0.7);
2167
- color: white;
2168
- padding: var(--space-3) var(--space-4);
2169
- border-radius: var(--radius-md);
2170
- font-size: var(--text-sm);
2171
- text-align: center;
2172
- backdrop-filter: blur(10px);
2173
- }
2174
-
2175
- /* Dark theme adjustments */
2176
- [data-theme="dark"] .image-modal {
2177
- background: rgba(0, 0, 0, 0.95);
2178
- }
2179
-
2180
- [data-theme="dark"] .image-modal-close {
2181
- background: rgba(255, 255, 255, 0.15);
2182
- border-color: rgba(255, 255, 255, 0.4);
2183
- }
2184
-
2185
- [data-theme="dark"] .image-modal-close:hover {
2186
- background: rgba(255, 255, 255, 0.25);
2187
- border-color: rgba(255, 255, 255, 0.6);
2188
- }
2189
-
2190
- /* Mobile responsive adjustments */
2191
- @media (max-width: 768px) {
2192
- .image-modal-content {
2193
- max-width: 98%;
2194
- max-height: 98%;
2195
- }
2196
-
2197
- .image-modal-close {
2198
- top: -40px;
2199
- width: 35px;
2200
- height: 35px;
2201
- font-size: 18px;
2202
- }
2203
-
2204
- .image-modal-caption {
2205
- bottom: -40px;
2206
- font-size: var(--text-xs);
2207
- padding: var(--space-2) var(--space-3);
2208
- }
2209
- }
2210
- opacity: 0.6;
2211
- }