@mgks/docmd 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/.github/workflows/deploy-docmd.yml +2 -2
  2. package/README.md +2 -4
  3. package/assets/css/welcome.css +62 -358
  4. package/assets/images/preview-dark-1.webp +0 -0
  5. package/assets/images/preview-dark-2.webp +0 -0
  6. package/assets/images/preview-dark-3.webp +0 -0
  7. package/assets/images/preview-light-1.webp +0 -0
  8. package/assets/images/preview-light-2.webp +0 -0
  9. package/assets/images/preview-light-3.webp +0 -0
  10. package/config.js +35 -4
  11. package/docs/cli-commands.md +1 -2
  12. package/docs/configuration.md +104 -23
  13. package/docs/content/containers/buttons.md +88 -0
  14. package/docs/content/containers/callouts.md +154 -0
  15. package/docs/content/containers/cards.md +93 -0
  16. package/docs/content/containers/index.md +35 -0
  17. package/docs/content/containers/nested-containers.md +329 -0
  18. package/docs/content/containers/steps.md +175 -0
  19. package/docs/content/containers/tabs.md +228 -0
  20. package/docs/content/frontmatter.md +4 -4
  21. package/docs/content/index.md +5 -4
  22. package/docs/content/markdown-syntax.md +4 -4
  23. package/docs/content/no-style-example.md +1 -1
  24. package/docs/contributing.md +7 -0
  25. package/docs/deployment.md +22 -31
  26. package/docs/getting-started/basic-usage.md +3 -2
  27. package/docs/getting-started/index.md +3 -3
  28. package/docs/getting-started/installation.md +1 -1
  29. package/docs/index.md +14 -20
  30. package/docs/plugins/seo.md +2 -0
  31. package/docs/plugins/sitemap.md +1 -1
  32. package/docs/theming/assets-management.md +1 -1
  33. package/docs/theming/available-themes.md +45 -52
  34. package/docs/theming/light-dark-mode.md +12 -3
  35. package/package.json +9 -3
  36. package/src/assets/css/docmd-main.css +935 -573
  37. package/src/assets/css/docmd-theme-retro.css +812 -0
  38. package/src/assets/css/docmd-theme-ruby.css +619 -0
  39. package/src/assets/css/docmd-theme-sky.css +606 -605
  40. package/src/assets/js/docmd-image-lightbox.js +1 -3
  41. package/src/assets/js/docmd-main.js +97 -0
  42. package/src/commands/build.js +1 -1
  43. package/src/commands/dev.js +5 -2
  44. package/src/commands/init.js +21 -1
  45. package/src/core/file-processor.js +626 -363
  46. package/src/core/html-generator.js +20 -30
  47. package/src/plugins/seo.js +4 -0
  48. package/src/templates/layout.ejs +34 -8
  49. package/assets/images/preview-dark-1.png +0 -0
  50. package/assets/images/preview-dark-2.png +0 -0
  51. package/assets/images/preview-dark-3.png +0 -0
  52. package/assets/images/preview-light-1.png +0 -0
  53. package/assets/images/preview-light-2.png +0 -0
  54. package/assets/images/preview-light-3.png +0 -0
  55. package/docs/content/custom-containers.md +0 -129
  56. package/src/assets/js/docmd-theme-toggle.js +0 -59
@@ -1,598 +1,777 @@
1
- /* src/assets/css/docmd-main.css */
2
1
  :root {
3
- --font-family-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
4
- --font-family-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
5
-
6
- /* Light Theme (default) */
7
- --bg-color: #ffffff;
8
- --text-color: #333333;
9
- --sidebar-bg: #f4f7f9;
10
- --sidebar-text: #2c3e50;
11
- --sidebar-link-active-bg: #e0e7ec;
12
- --sidebar-link-active-parent-bg: #e9eff3; /* New variable for parent items */
13
- --link-color: #007bff;
14
- --border-color: #e0e0e0;
15
- --code-bg: #f8f8f8;
16
- --code-text: #333;
17
- --header-bg: #ffffff; /* Added for header */
18
- --header-border: #e0e0e0; /* Added for header border */
19
-
20
- /* Image styling variables */
21
- --image-border-color: #e0e0e0;
22
- --image-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
23
- --image-caption-bg: #f8f8f8;
24
- --image-caption-text: #666;
25
- --lightbox-bg: rgba(0, 0, 0, 0.9);
26
- --lightbox-text: #fff;
27
- }
28
-
29
- body[data-theme="dark"] {
30
- --bg-color: #1a1a1a;
31
- --text-color: #e0e0e0;
32
- --sidebar-bg: #2c2c2c;
33
- --sidebar-text: #bdc3c7;
34
- --sidebar-link-active-bg: #3a3a3a;
35
- --sidebar-link-active-parent-bg: #343434; /* New variable for parent items in dark mode */
36
- --link-color: #58a6ff;
37
- --border-color: #444444;
38
- --code-bg: #282c34; /* Common dark code bg */
39
- --code-text: #abb2bf;
40
- --header-bg: #1a1a1a; /* Added for header */
41
- --header-border: #444444; /* Added for header border */
42
-
43
- /* Image styling variables for dark mode */
44
- --image-border-color: #444444;
45
- --image-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
46
- --image-caption-bg: #2c2c2c;
47
- --image-caption-text: #bdc3c7;
48
- --lightbox-bg: rgba(0, 0, 0, 0.95);
49
- --lightbox-text: #fff;
50
- }
51
-
52
- body {
53
- font-family: var(--font-family-sans);
54
- background-color: var(--bg-color);
55
- color: var(--text-color);
56
- margin: 0;
57
- display: flex;
58
- min-height: 100vh;
59
- line-height: 1.6;
60
- }
61
-
62
- .sidebar {
63
- width: 260px;
64
- background-color: var(--sidebar-bg);
65
- color: var(--sidebar-text);
66
- padding: 20px;
67
- border-right: 1px solid var(--border-color);
68
- height: 100vh; /* Full height */
69
- position: fixed; /* Fixed position */
70
- top: 0;
71
- left: 0;
72
- overflow-y: auto; /* Scrollable if content overflows */
73
- box-sizing: border-box;
74
- }
75
-
76
- .sidebar h1 {
77
- font-size: 1.5em;
78
- margin-top: 0;
79
- margin-bottom: 20px;
80
- padding-bottom: 10px;
81
- border-bottom: 1px solid var(--border-color);
82
- }
83
-
84
- .sidebar nav ul {
85
- list-style: none;
86
- padding: 0;
87
- margin: 0;
88
- }
89
-
90
- .sidebar nav li a {
91
- display: block;
92
- padding: 8px 10px;
93
- text-decoration: none;
94
- color: var(--sidebar-text);
95
- border-radius: 4px;
96
- transition: background-color 0.2s ease;
97
- }
98
-
99
- .sidebar nav li a:hover,
100
- .sidebar nav li a.active {
101
- background-color: var(--sidebar-link-active-bg);
102
- }
2
+ --font-family-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
3
+ --font-family-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
4
+ --bg-color: #ffffff;
5
+ --text-color: #333333;
6
+ --sidebar-bg: #f4f7f9;
7
+ --sidebar-text: #2c3e50;
8
+ --sidebar-link-active-bg: #e0e7ec;
9
+ --sidebar-link-active-parent-bg: #e9eff3;
10
+ --link-color: #007bff;
11
+ --border-color: #e0e0e0;
12
+ --code-bg: #f8f8f8;
13
+ --code-text: #333;
14
+ --header-bg: #ffffff;
15
+ --header-border: #e0e0e0;
16
+ --image-border-color: #e0e0e0;
17
+ --image-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
18
+ --image-caption-bg: #f8f8f8;
19
+ --image-caption-text: #666;
20
+ --lightbox-bg: rgba(0, 0, 0, 0.9);
21
+ --lightbox-text: #fff;
22
+ }
103
23
 
104
- /* Additional active highlight for the active page itself */
105
- .sidebar nav li a.active {
106
- font-weight: 600;
107
- color: var(--link-color);
108
- }
24
+ body[data-theme="dark"] {
25
+ --bg-color: #1a1a1a;
26
+ --text-color: #e0e0e0;
27
+ --sidebar-bg: #2c2c2c;
28
+ --sidebar-text: #bdc3c7;
29
+ --sidebar-link-active-bg: #3a3a3a;
30
+ --sidebar-link-active-parent-bg: #343434;
31
+ --link-color: #58a6ff;
32
+ --border-color: #444444;
33
+ --code-bg: #282c34;
34
+ --code-text: #abb2bf;
35
+ --header-bg: #1a1a1a;
36
+ --header-border: #444444;
37
+ --image-border-color: #444444;
38
+ --image-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
39
+ --image-caption-bg: #2c2c2c;
40
+ --image-caption-text: #bdc3c7;
41
+ --lightbox-bg: rgba(0, 0, 0, 0.95);
42
+ --lightbox-text: #fff;
43
+ }
109
44
 
110
- /* Specific style for parent items with active children */
111
- .sidebar nav li.active-parent > a {
112
- background-color: var(--sidebar-link-active-parent-bg);
113
- font-weight: 500;
114
- position: relative; /* For the indicator */
115
- }
45
+ body {
46
+ font-family: var(--font-family-sans);
47
+ background-color: var(--bg-color);
48
+ color: var(--text-color);
49
+ margin: 0px;
50
+ display: flex;
51
+ min-height: 100vh;
52
+ line-height: 1.6;
53
+ }
116
54
 
117
- /* Add a subtle indicator for active parents */
118
- .sidebar nav li.active-parent > a::before {
119
- content: "";
120
- position: absolute;
121
- left: 0;
122
- top: 0;
123
- bottom: 0;
124
- width: 3px;
125
- background-color: var(--link-color);
126
- opacity: 0.5;
127
- }
55
+ .sidebar {
56
+ width: 260px;
57
+ background-color: var(--sidebar-bg);
58
+ color: var(--sidebar-text);
59
+ padding: 20px;
60
+ border-right: 1px solid var(--border-color);
61
+ height: 100vh;
62
+ position: fixed;
63
+ top: 0px;
64
+ left: 0px;
65
+ overflow-y: auto;
66
+ box-sizing: border-box;
67
+ flex-shrink: 0;
68
+ }
128
69
 
129
- /* Make the indicator more prominent when it's the actual active page */
130
- .sidebar nav li.active-parent > a.active::before {
131
- opacity: 1;
132
- }
70
+ .sidebar h1 {
71
+ font-size: 1.5em;
72
+ margin-top: 0px;
73
+ margin-bottom: 20px;
74
+ padding-bottom: 10px;
75
+ border-bottom: 1px solid var(--border-color);
76
+ }
133
77
 
134
- .sidebar nav ul ul { /* Nested lists */
135
- padding-left: 20px;
136
- margin-top: 5px;
137
- }
138
-
139
-
140
- .main-content-wrapper {
141
- margin-left: 260px; /* Same as sidebar width */
142
- flex-grow: 1;
143
- display: flex;
144
- flex-direction: column;
145
- }
146
-
147
- .page-header {
148
- padding: 15px 30px;
149
- border-bottom: 1px solid var(--header-border);
150
- background-color: var(--header-bg);
151
- /* position: sticky;
152
- top: 0;
153
- z-index: 10; Removed sticky header for now for simplicity */
154
- }
155
-
156
- .page-header h1 {
157
- margin: 0;
158
- font-size: 1.8em;
159
- }
160
-
161
-
162
- .content-area {
163
- padding: 2.5rem 2rem;
164
- max-width: 1200px;
165
- margin: 0 auto;
166
- width: 100%;
167
- box-sizing: border-box;
78
+ .sidebar nav ul {
79
+ list-style: none;
80
+ padding: 0px;
81
+ margin: 0px;
82
+ }
168
83
 
84
+ .sidebar nav li a {
85
+ display: block;
86
+ padding: 8px 10px;
87
+ text-decoration: none;
88
+ color: var(--sidebar-text);
89
+ border-radius: 4px;
90
+ transition: background-color 0.2s;
169
91
  }
170
-
171
-
172
- /* Code blocks */
173
- pre {
174
- background-color: var(--code-bg);
175
- color: var(--code-text);
176
- padding: 1em;
177
- border-radius: 4px;
178
- overflow-x: auto;
179
- font-family: var(--font-family-mono);
180
- }
181
-
182
- code {
183
- font-family: var(--font-family-mono);
184
- background-color: var(--code-bg);
185
- padding: 0.2em 0.4em;
186
- border-radius: 3px;
187
- font-size: 0.9em;
188
- }
189
-
190
- pre code {
191
- background-color: transparent;
192
- padding: 0;
193
- font-size: inherit;
194
- }
195
92
 
196
- .sidebar-header {
197
- padding-bottom: 10px;
198
- margin-bottom: 10px;
199
- border-bottom: 1px solid var(--border-color);
200
- text-align: center; /* Or left, depending on design */
201
- }
202
- .sidebar-header h1 { /* If no logo */
203
- font-size: 1.5em;
204
- margin-top: 0;
205
- margin-bottom: 0; /* Handled by sidebar-header */
206
- }
207
- .logo-link img {
208
- max-height: 40px; /* Default max height, can be overridden by inline style from config */
209
- width: auto;
210
- display: block;
211
- margin: 0 auto; /* Center if text-align: center on parent */
212
- }
213
- .logo-link img.logo-light { display: block; } /* Show light logo by default */
214
- .logo-link img.logo-dark { display: none; } /* Hide dark logo by default */
215
-
216
- /* In dark mode, show dark logo and hide light logo */
217
- body[data-theme="dark"] .logo-link img.logo-light { display: none; }
218
- body[data-theme="dark"] .logo-link img.logo-dark { display: block; }
219
-
220
- /* Navigation Icons (Lucide SVGs will have these classes) */
221
- .sidebar-nav .lucide-icon { /* General class for all lucide icons in nav */
222
- width: 1em; /* Default, can be overridden by specific icon classes if needed */
223
- height: 1em;
224
- margin-right: 0.5em;
225
- vertical-align: -0.15em; /* Fine-tune alignment */
226
- stroke-width: 2; /* Default Lucide stroke width */
227
- }
228
- .sidebar-nav .nav-external-icon {
229
- width: 1em;
230
- height: 1.5em;
231
- float: right;
232
- margin-left: 0.3em;
233
- opacity: 0.7;
234
-
235
- }
236
-
237
- /* Theme Toggle Button */
238
- .theme-toggle-button {
239
- background: transparent;
240
- border: 1px solid var(--border-color);
241
- color: var(--sidebar-text); /* Not directly used as icon has its own color */
242
- padding: 8px;
243
- border-radius: 4px;
244
- cursor: pointer;
245
- margin-top: 20px;
246
- display: flex;
247
- align-items: center;
248
- justify-content: center;
249
- width: 100%;
250
- }
251
- .theme-toggle-button:hover {
252
- background-color: var(--sidebar-link-active-bg);
253
- }
254
- .theme-toggle-button .lucide-icon { /* Styles for sun/moon icons in button */
255
- width: 1.2em;
256
- height: 1.2em;
257
- }
258
- .theme-toggle-button .icon-moon { display: none; } /* icon-moon is class from renderIcon */
259
- .theme-toggle-button .icon-sun { display: block; }
260
- body[data-theme="dark"] .theme-toggle-button .icon-moon { display: block; }
261
- body[data-theme="dark"] .theme-toggle-button .icon-sun { display: none; }
262
-
263
-
264
- /* Custom Containers */
265
- .docmd-container {
266
- padding: 1rem 1.5rem; /* More horizontal padding */
267
- margin-bottom: 1.5rem;
268
- border-radius: 6px;
269
- border: 1px solid var(--border-color);
270
- background-color: var(--code-bg); /* Default background, can be overridden */
271
- }
272
- .docmd-container > :first-child { margin-top: 0; }
273
- .docmd-container > :last-child { margin-bottom: 0; }
93
+ .sidebar nav li a:hover, .sidebar nav li a.active {
94
+ background-color: var(--sidebar-link-active-bg);
95
+ }
274
96
 
275
- /* Callouts */
276
- .callout {
277
- border-left-width: 5px;
278
- background-color: transparent; /* Override default docmd-container bg */
279
- }
280
- .callout-title {
281
- font-weight: bold;
282
- margin-bottom: 0.5em;
283
- }
284
- .callout-info { border-left-color: #3498db; background-color: rgba(52, 152, 219, 0.07); }
285
- .callout-warning { border-left-color: #f39c12; background-color: rgba(243, 156, 18, 0.07); }
286
- .callout-tip { border-left-color: #2ecc71; background-color: rgba(46, 204, 113, 0.07); }
287
- .callout-success { border-left-color: #2ecc71; background-color: rgba(46, 204, 113, 0.07); }
288
- .callout-danger { border-left-color: #e74c3c; background-color: rgba(231, 76, 60, 0.07); }
289
- .callout .callout-content > :first-child { margin-top: 0; }
290
- .callout .callout-content > :last-child { margin-bottom: 0; }
291
-
292
- .card .card-title {
293
- font-weight: bold;
294
- font-size: 1.1em;
295
- margin: -1rem -1.5rem 1rem -1.5rem; /* Extend to edges of padding */
296
- padding: 0.75rem 1.5rem;
297
- border-bottom: 1px solid var(--border-color);
298
- }
299
- .card .card-content > :first-child { margin-top: 0; }
300
- .card .card-content > :last-child { margin-bottom: 0; }
301
-
302
- /* Steps (using CSS counters for H4 headings within .steps) */
303
- .steps {
304
- /* counter-reset is set inline on the div by markdown-it-container render function */
305
- background-color: transparent; /* Often steps don't need a strong background */
306
- border: none; /* Or a very light border */
307
- padding-left: 0; padding-right: 0; /* Remove default container padding if steps are full-width */
308
- }
309
- .steps h4 { /* Assuming users use H4 for step titles */
310
- counter-increment: step-counter;
311
- position: relative;
312
- padding-left: 3em; /* Space for number */
313
- margin-bottom: 0.5em;
314
- margin-top: 1.5em; /* Space between steps */
315
- font-size: 1.2em; /* Make step titles prominent */
316
- }
317
- .steps h4:first-child {
318
- margin-top: 0.5em; /* Less top margin for the very first step */
319
- }
320
- .steps h4::before {
321
- content: counter(step-counter);
322
- position: absolute;
323
- left: 0;
324
- top: 50%;
325
- transform: translateY(-50%);
326
- display: flex;
327
- align-items: center;
328
- justify-content: center;
329
- width: 2em; /* Larger circle */
330
- height: 2em;
331
- border-radius: 50%;
332
- background-color: var(--link-color);
333
- color: white;
334
- font-size: 0.9em; /* Number font size relative to H4 */
335
- font-weight: bold;
336
- line-height: 2em; /* Ensure number is centered in circle */
337
- }
338
- .steps h4 + * { /* Content immediately after step title */
339
- margin-left: 3em; /* Align with title text */
340
- margin-top: 0.5em;
341
- padding-bottom: 1em; /* Space before next step title or end of container */
342
- }
343
- .steps > :last-child { margin-bottom: 0; }
344
-
345
-
346
- /* Footer */
347
- .page-footer {
348
- text-align: center;
349
- padding: 20px 30px;
350
- margin-top: auto; /* Pushes footer to bottom if content is short */
351
- border-top: 1px solid var(--border-color);
352
- font-size: 0.9em;
353
- color: var(--text-color);
354
- background-color: var(--sidebar-bg); /* Or a distinct footer background */
355
- }
356
- .page-footer a {
357
- color: var(--link-color);
358
- text-decoration: none;
359
- }
360
- .page-footer a:hover {
361
- text-decoration: underline;
362
- }
97
+ .sidebar nav li a.active {
98
+ font-weight: 600;
99
+ color: var(--link-color);
100
+ }
101
+
102
+ .sidebar nav li.active-parent > a {
103
+ background-color: var(--sidebar-link-active-parent-bg);
104
+ font-weight: 500;
105
+ position: relative;
106
+ }
107
+
108
+ .sidebar nav li.active-parent > a::before {
109
+ content: "";
110
+ position: absolute;
111
+ left: 0px;
112
+ top: 0px;
113
+ bottom: 0px;
114
+ width: 3px;
115
+ background-color: var(--link-color);
116
+ opacity: 0.5;
117
+ }
118
+
119
+ .sidebar nav li.active-parent > a.active::before {
120
+ opacity: 1;
121
+ }
122
+
123
+ .sidebar nav ul ul {
124
+ padding-left: 20px;
125
+ margin-top: 5px;
126
+ }
363
127
 
364
- /* Focus Visible */
365
- :focus-visible {
128
+ .sidebar-toggle-button {
129
+ background: none;
130
+ border: 1px solid transparent;
131
+ color: var(--text-color);
132
+ cursor: pointer;
133
+ padding: 0px;
134
+ margin: .5em 0 0;
135
+ display: none;
136
+ border-radius: 4px;
137
+ }
138
+
139
+ .sidebar-toggle-button:hover {
140
+ background-color: var(--sidebar-bg);
141
+ border-color: var(--border-color);
142
+ }
143
+
144
+ .sidebar-toggle-button .lucide-icon {
145
+ width: 2em;
146
+ height: 2em;
147
+ }
148
+
149
+ body.sidebar-collapsible .sidebar-toggle-button {
150
+ display: block;
151
+ }
152
+
153
+ body.sidebar-collapsed .sidebar {
154
+ transform: translateX(-100%);
155
+ visibility: hidden;
156
+ }
157
+
158
+ body.sidebar-collapsed .main-content-wrapper {
159
+ margin-left: 0px;
160
+ }
161
+
162
+ .sidebar, .main-content-wrapper {
163
+ transition: transform 0.3s, margin-left 0.3s, visibility 0.3s;
164
+ }
165
+
166
+ .main-content-wrapper {
167
+ margin-left: 260px;
168
+ flex-grow: 1;
169
+ display: flex;
170
+ flex-direction: column;
171
+ overflow: hidden;
172
+ }
173
+
174
+ .page-header {
175
+ padding: 15px 30px;
176
+ border-bottom: 1px solid var(--header-border);
177
+ background-color: var(--header-bg);
178
+ display: flex;
179
+ align-items: center;
180
+ justify-content: space-between;
181
+ min-height: 2.5em;
182
+ }
183
+
184
+ .header-left {
185
+ display: flex;
186
+ align-items: center;
187
+ gap: 15px;
188
+ }
189
+
190
+ .header-right {
191
+ display: flex;
192
+ align-items: center;
193
+ }
194
+
195
+ .page-header h1 {
196
+ margin: 0px;
197
+ font-size: 1.8em;
198
+ }
199
+
200
+ .theme-toggle-header {
201
+ padding: 8px;
202
+ background: var(--content-bg);
203
+ border: 1px solid var(--border-color);
204
+ border-radius: 6px;
205
+ cursor: pointer;
206
+ transition: 0.2s;
207
+ }
208
+
209
+ .theme-toggle-header:hover {
210
+ background: var(--sidebar-bg);
211
+ border-color: var(--accent-color);
212
+ }
213
+
214
+ .content-area {
215
+ padding: 2.5rem 2rem;
216
+ max-width: 1200px;
217
+ margin: 0px auto;
218
+ width: 100%;
219
+ box-sizing: border-box;
220
+ }
221
+
222
+ pre {
223
+ background-color: var(--code-bg);
224
+ color: var(--code-text);
225
+ padding: 1em;
226
+ border-radius: 4px;
227
+ overflow-x: auto;
228
+ font-family: var(--font-family-mono);
229
+ }
230
+
231
+ code {
232
+ font-family: var(--font-family-mono);
233
+ background-color: var(--code-bg);
234
+ padding: 0.2em 0.4em;
235
+ border-radius: 3px;
236
+ font-size: 0.9em;
237
+ }
238
+
239
+ pre code {
240
+ background-color: transparent;
241
+ padding: 0px;
242
+ font-size: inherit;
243
+ }
244
+
245
+ .sidebar-header {
246
+ padding-bottom: 10px;
247
+ margin-bottom: 10px;
248
+ border-bottom: 1px solid var(--border-color);
249
+ text-align: center;
250
+ height: 2.5em;
251
+ }
252
+
253
+ .sidebar-header h1 {
254
+ font-size: 1.5em;
255
+ margin-top: 0px;
256
+ margin-bottom: 0px;
257
+ }
258
+
259
+ .logo-link img {
260
+ max-height: 40px;
261
+ width: auto;
262
+ display: block;
263
+ margin: 0px auto;
264
+ }
265
+
266
+ .logo-link img.logo-light {
267
+ display: block;
268
+ }
269
+
270
+ .logo-link img.logo-dark {
271
+ display: none;
272
+ }
273
+
274
+ body[data-theme="dark"] .logo-link img.logo-light {
275
+ display: none;
276
+ }
277
+
278
+ body[data-theme="dark"] .logo-link img.logo-dark {
279
+ display: block;
280
+ }
281
+
282
+ .sidebar-nav .lucide-icon {
283
+ width: 1em;
284
+ height: 1em;
285
+ margin-right: 0.5em;
286
+ vertical-align: -0.15em;
287
+ stroke-width: 2;
288
+ }
289
+
290
+ .sidebar-nav .nav-external-icon {
291
+ width: 1em;
292
+ height: 1.5em;
293
+ float: right;
294
+ margin-left: 0.3em;
295
+ opacity: 0.7;
296
+ }
297
+
298
+ .theme-toggle-button {
299
+ background: none;
300
+ border: 1px solid var(--border-color);
301
+ color: var(--sidebar-text);
302
+ padding: 8px;
303
+ border-radius: 4px;
304
+ cursor: pointer;
305
+ margin-top: 0.5em;
306
+ display: flex;
307
+ align-items: center;
308
+ justify-content: center;
309
+ width: 100%;
310
+ }
311
+
312
+ .theme-toggle-button:hover {
313
+ background-color: var(--sidebar-link-active-bg);
314
+ }
315
+
316
+ .theme-toggle-button .lucide-icon {
317
+ width: 1.2em;
318
+ height: 1.2em;
319
+ }
320
+
321
+ .theme-toggle-button .icon-moon {
322
+ display: none;
323
+ }
324
+
325
+ .theme-toggle-button .icon-sun {
326
+ display: block;
327
+ }
328
+
329
+ body[data-theme="dark"] .theme-toggle-button .icon-moon {
330
+ display: block;
331
+ }
332
+
333
+ body[data-theme="dark"] .theme-toggle-button .icon-sun {
334
+ display: none;
335
+ }
336
+
337
+ .docmd-container {
338
+ padding: 1rem 1.5rem;
339
+ margin-bottom: 1.5rem;
340
+ border-radius: 6px;
341
+ border: 1px solid var(--border-color);
342
+ background-color: var(--code-bg);
343
+ }
344
+
345
+ .docmd-container > :first-child {
346
+ margin-top: 0px;
347
+ }
348
+
349
+ .docmd-container > :last-child {
350
+ margin-bottom: 0px;
351
+ }
352
+
353
+ .callout {
354
+ border-left-width: 5px;
355
+ background-color: transparent;
356
+ }
357
+
358
+ .callout-title {
359
+ font-weight: bold;
360
+ margin-bottom: 0.5em;
361
+ }
362
+
363
+ .callout-info {
364
+ border-left-color: rgb(52, 152, 219);
365
+ background-color: rgba(52, 152, 219, 0.07);
366
+ }
367
+
368
+ .callout-warning {
369
+ border-left-color: rgb(243, 156, 18);
370
+ background-color: rgba(243, 156, 18, 0.07);
371
+ }
372
+
373
+ .callout-tip {
374
+ border-left-color: rgb(46, 204, 113);
375
+ background-color: rgba(46, 204, 113, 0.07);
376
+ }
377
+
378
+ .callout-success {
379
+ border-left-color: rgb(46, 204, 113);
380
+ background-color: rgba(46, 204, 113, 0.07);
381
+ }
382
+
383
+ .callout-danger {
384
+ border-left-color: rgb(231, 76, 60);
385
+ background-color: rgba(231, 76, 60, 0.07);
386
+ }
387
+
388
+ .callout .callout-content > :first-child {
389
+ margin-top: 0px;
390
+ }
391
+
392
+ .callout .callout-content > :last-child {
393
+ margin-bottom: 0px;
394
+ }
395
+
396
+ .card .card-title {
397
+ font-weight: bold;
398
+ font-size: 1.1em;
399
+ margin: -1rem -1.5rem 1rem;
400
+ padding: 0.75rem 1.5rem;
401
+ border-bottom: 1px solid var(--border-color);
402
+ }
403
+
404
+ .card .card-content > :first-child {
405
+ margin-top: 0px;
406
+ }
407
+
408
+ .card .card-content > :last-child {
409
+ margin-bottom: 0px;
410
+ }
411
+
412
+ .docmd-container.steps {
413
+ position: relative;
414
+ padding-left: 3rem;
415
+ border: medium;
416
+ background: none;
417
+ box-shadow: none;
418
+ }
419
+
420
+ .docmd-container.steps::before {
421
+ content: "";
422
+ position: absolute;
423
+ top: 1rem;
424
+ bottom: 1rem;
425
+ left: 2.5rem;
426
+ width: 2px;
427
+ background-color: var(--border-color);
428
+ }
429
+
430
+ .step {
431
+ position: relative;
432
+ padding-bottom: 1.5rem;
433
+ }
434
+
435
+ .step:last-child {
436
+ padding-bottom: 0px;
437
+ }
438
+
439
+ .step::before {
440
+ content: attr(data-step);
441
+ position: absolute;
442
+ left: -3rem;
443
+ top: 0.1rem;
444
+ width: 2.5rem;
445
+ height: 2.5rem;
446
+ background-color: var(--bg-color);
447
+ border: 2px solid var(--border-color);
448
+ border-radius: 50%;
449
+ display: flex;
450
+ align-items: center;
451
+ justify-content: center;
452
+ font-size: 1rem;
453
+ font-weight: 600;
454
+ color: var(--link-color);
455
+ z-index: 1;
456
+ }
457
+
458
+ .step-title {
459
+ font-size: 1.25rem;
460
+ font-weight: 600;
461
+ margin-top: 0px;
462
+ margin-bottom: 0.5rem;
463
+ }
464
+
465
+ .step-content > :first-child {
466
+ margin-top: 0px;
467
+ }
468
+
469
+ .step-content > :last-child {
470
+ margin-bottom: 0px;
471
+ }
472
+
473
+ .docmd-container.steps-reset {
474
+ counter-reset: step-counter 0;
475
+ }
476
+
477
+ .docmd-container.steps-reset ol.steps-list {
478
+ counter-reset: list-counter 0;
479
+ list-style: none;
480
+ }
481
+
482
+ .docmd-container.steps-reset ol.steps-list > li.step-item {
483
+ counter-increment: list-counter 1;
484
+ position: relative;
485
+ padding-left: 0px;
486
+ margin-bottom: 2.5rem;
487
+ }
488
+
489
+ .docmd-container.steps-reset ol.steps-list > li.step-item::before {
490
+ content: counter(list-counter) ".";
491
+ font-weight: bold;
492
+ margin-right: 0.5em;
493
+ font-size: 2rem;
494
+ color: var(--accent-color, #007acc);
495
+ }
496
+
497
+ .docmd-container.steps-reset .docmd-container.steps-reset ol.steps-list {
498
+ counter-reset: list-counter 0;
499
+ }
500
+
501
+ .docmd-container.steps-reset .docmd-container.steps-reset ol.steps-list > li.step-item {
502
+ counter-increment: list-counter 1;
503
+ }
504
+
505
+ .docmd-container.steps-reset .docmd-container.steps-reset ol.steps-list > li.step-item::before {
506
+ content: counter(list-counter) ".";
507
+ font-weight: bold;
508
+ margin-right: 0.5em;
509
+ color: var(--accent-color, #007acc);
510
+ }
511
+
512
+ .docmd-container.steps-reset ol.steps-list[start] {
513
+ counter-reset: list-counter 0;
514
+ }
515
+
516
+ .docmd-container.steps-reset ol.steps-list[start] > li.step-item {
517
+ counter-increment: list-counter 1;
518
+ }
519
+
520
+ .docmd-container.steps-reset ol.steps-list[start] > li.step-item::before {
521
+ content: counter(list-counter) ".";
522
+ font-weight: bold;
523
+ margin-right: 0.5em;
524
+ color: var(--accent-color, #007acc);
525
+ }
526
+
527
+ .docmd-container.steps-reset ol:not(.steps-list) > li::before, .docmd-container.steps-reset ul > li::before, .docmd-container.steps-reset ol:not(.steps-list)::before, .docmd-container.steps-reset ul::before {
528
+ width: 0.75rem;
529
+ height: 0.75rem;
530
+ left: -1.5rem;
531
+ top: 0.5rem;
532
+ content: "" !important;
533
+ }
534
+
535
+ .page-footer {
536
+ text-align: center;
537
+ padding: 20px 30px;
538
+ margin-top: auto;
539
+ border-top: 1px solid var(--border-color);
540
+ font-size: 0.9em;
541
+ color: var(--text-color);
542
+ background-color: var(--sidebar-bg);
543
+ }
544
+
545
+ .page-footer a {
546
+ color: var(--link-color);
547
+ text-decoration: none;
548
+ }
549
+
550
+ .page-footer a:hover {
551
+ text-decoration: underline;
552
+ }
553
+
554
+ :focus-visible {
366
555
  outline: 2px solid var(--link-color);
367
556
  outline-offset: 2px;
368
- /* box-shadow: 0 0 0 4px var(--bg-color), 0 0 0 6px var(--link-color); Optional halo */
369
- }
370
- :focus:not(:focus-visible) {
371
- outline: none;
372
- }
373
- .sidebar nav li a:focus-visible {
374
- background-color: var(--sidebar-link-active-bg);
375
- outline: 2px solid var(--link-color);
376
- outline-offset: -2px;
377
- }
378
- .theme-toggle-button:focus-visible {
379
- border-color: var(--link-color);
380
- box-shadow: 0 0 0 2px var(--link-color);
381
- }
557
+ }
558
+
559
+ :focus:not(:focus-visible) {
560
+ outline: currentcolor;
561
+ }
562
+
563
+ .sidebar nav li a:focus-visible {
564
+ background-color: var(--sidebar-link-active-bg);
565
+ outline: 2px solid var(--link-color);
566
+ outline-offset: -2px;
567
+ }
382
568
 
383
- /* Responsive */
384
- @media (max-width: 768px) {
385
- body {
569
+ .theme-toggle-button:focus-visible {
570
+ border-color: var(--link-color);
571
+ box-shadow: 0 0 0 2px var(--link-color);
572
+ }
573
+
574
+ @media (max-width: 768px) {
575
+ body {
386
576
  flex-direction: column;
387
- }
388
- .sidebar {
577
+ }
578
+
579
+ .sidebar {
389
580
  width: 100%;
390
581
  height: auto;
391
- position: static; /* Static on mobile */
392
- border-right: none;
582
+ position: static;
583
+ border-right-width: medium;
584
+ border-right-style: none;
585
+ border-right-color: currentcolor;
393
586
  border-bottom: 1px solid var(--border-color);
394
- }
395
- .main-content-wrapper {
396
- margin-left: 0;
397
- }
398
- .content-area {
399
- padding: 15px;
400
- }
401
587
  }
402
588
 
403
- /* Page Navigation at Bottom */
404
- .page-navigation {
405
- display: flex;
406
- justify-content: space-between;
407
- margin-top: 3rem;
408
- padding-top: 1.5rem;
409
- border-top: 1px solid var(--border-color);
589
+ .sidebar-toggle-button {
590
+ display: block;
410
591
  }
411
592
 
412
- .prev-page,
413
- .next-page {
414
- display: flex;
415
- align-items: center;
416
- text-decoration: none;
417
- color: var(--link-color);
418
- padding: 0.75rem;
419
- border-radius: 6px;
420
- transition: background-color 0.2s ease;
421
- width: 48%;
422
- max-width: 48%;
593
+ .main-content-wrapper {
594
+ margin-left: 0px;
423
595
  }
424
596
 
425
- .prev-page:hover,
426
- .next-page:hover {
427
- background-color: rgba(0, 0, 0, 0.05);
428
- text-decoration: none;
597
+ .content-area {
598
+ padding: 15px;
429
599
  }
600
+ }
430
601
 
431
- body[data-theme="dark"] .prev-page:hover,
432
- body[data-theme="dark"] .next-page:hover {
433
- background-color: rgba(255, 255, 255, 0.05);
434
- }
602
+ .page-navigation {
603
+ display: flex;
604
+ justify-content: space-between;
605
+ margin-top: 3rem;
606
+ padding-top: 1.5rem;
607
+ border-top: 1px solid var(--border-color);
608
+ }
435
609
 
436
- .prev-page {
437
- justify-content: flex-start;
438
- }
610
+ .prev-page, .next-page {
611
+ display: flex;
612
+ align-items: center;
613
+ text-decoration: none;
614
+ color: var(--link-color);
615
+ padding: 0.75rem;
616
+ border-radius: 6px;
617
+ transition: background-color 0.2s;
618
+ width: 48%;
619
+ max-width: 48%;
620
+ }
439
621
 
440
- .next-page {
441
- justify-content: flex-end;
442
- text-align: right;
443
- }
622
+ .prev-page:hover, .next-page:hover {
623
+ background-color: rgba(0, 0, 0, 0.05);
624
+ text-decoration: none;
625
+ }
444
626
 
445
- .prev-page-placeholder,
446
- .next-page-placeholder {
447
- width: 48%;
448
- }
627
+ body[data-theme="dark"] .prev-page:hover, body[data-theme="dark"] .next-page:hover {
628
+ background-color: rgba(255, 255, 255, 0.05);
629
+ }
449
630
 
450
- .prev-page span,
451
- .next-page span {
452
- display: flex;
453
- flex-direction: column;
454
- }
631
+ .prev-page {
632
+ justify-content: flex-start;
633
+ }
455
634
 
456
- .prev-page small,
457
- .next-page small {
458
- font-size: 0.8rem;
459
- opacity: 0.8;
460
- margin-bottom: 0.25rem;
461
- }
635
+ .next-page {
636
+ justify-content: flex-end;
637
+ text-align: right;
638
+ }
462
639
 
463
- .prev-page strong,
464
- .next-page strong {
465
- font-weight: 500;
466
- }
640
+ .prev-page-placeholder, .next-page-placeholder {
641
+ width: 48%;
642
+ }
467
643
 
468
- .page-nav-icon {
469
- width: 1.2rem;
470
- height: 1.2rem;
471
- }
644
+ .prev-page span, .next-page span {
645
+ display: flex;
646
+ flex-direction: column;
647
+ }
472
648
 
473
- .prev-page .page-nav-icon {
474
- margin-right: 0.75rem;
475
- }
649
+ .prev-page small, .next-page small {
650
+ font-size: 0.8rem;
651
+ opacity: 0.8;
652
+ margin-bottom: 0.25rem;
653
+ }
476
654
 
477
- .next-page .page-nav-icon {
478
- margin-left: 0.75rem;
479
- }
655
+ .prev-page strong, .next-page strong {
656
+ font-weight: 500;
657
+ }
480
658
 
481
- /* Footer with Branding */
482
- .page-footer {
483
- text-align: center;
484
- padding: 20px 30px;
485
- margin-top: auto; /* Pushes footer to bottom if content is short */
486
- border-top: 1px solid var(--border-color);
487
- font-size: 0.9em;
488
- color: var(--text-color);
489
- background-color: var(--sidebar-bg); /* Or a distinct footer background */
490
- }
659
+ .page-nav-icon {
660
+ width: 1.2rem;
661
+ height: 1.2rem;
662
+ }
491
663
 
492
- .footer-content {
493
- display: flex;
494
- justify-content: space-between;
495
- align-items: center;
496
- margin: 0 auto;
497
- width: 100%;
664
+ .prev-page .page-nav-icon {
665
+ margin-right: 0.75rem;
666
+ }
498
667
 
668
+ .next-page .page-nav-icon {
669
+ margin-left: 0.75rem;
499
670
  }
500
671
 
501
- .user-footer {
502
- text-align: left;
503
- }
672
+ .page-footer {
673
+ text-align: center;
674
+ padding: 20px 30px;
675
+ margin-top: auto;
676
+ border-top: 1px solid var(--border-color);
677
+ font-size: 0.9em;
678
+ color: var(--text-color);
679
+ background-color: var(--sidebar-bg);
680
+ }
681
+
682
+ .footer-content {
683
+ display: flex;
684
+ justify-content: space-between;
685
+ align-items: center;
686
+ margin: 0px auto;
687
+ width: 100%;
688
+ }
689
+
690
+ .user-footer {
691
+ text-align: left;
692
+ }
504
693
 
505
- .branding-footer {
506
- text-align: right;
507
- opacity: 0.9;
508
- font-weight: 500;
694
+ .branding-footer {
695
+ text-align: right;
696
+ opacity: 0.9;
697
+ font-weight: 500;
509
698
  }
699
+
510
700
  .branding-footer svg {
511
701
  color: rgb(251, 58, 58);
512
- }
702
+ }
513
703
 
514
- .page-footer a {
515
- color: var(--link-color);
516
- text-decoration: none;
517
- }
704
+ .page-footer a {
705
+ color: var(--link-color);
706
+ text-decoration: none;
707
+ }
518
708
 
519
- .page-footer a:hover {
520
- text-decoration: underline;
521
- }
709
+ .page-footer a:hover {
710
+ text-decoration: underline;
711
+ }
522
712
 
523
- /* Mobile responsiveness for footer and navigation */
524
- @media (max-width: 768px) {
525
- .footer-content {
713
+ @media (max-width: 768px) {
714
+ .footer-content {
526
715
  flex-direction: column;
527
716
  gap: 1rem;
528
- }
529
-
530
- .user-footer,
531
- .branding-footer {
717
+ }
718
+
719
+ .user-footer, .branding-footer {
532
720
  text-align: center;
533
- }
534
-
535
- .page-navigation {
721
+ }
722
+
723
+ .page-navigation {
536
724
  flex-direction: column;
537
725
  gap: 1rem;
538
- }
539
-
540
- .prev-page,
541
- .next-page,
542
- .prev-page-placeholder,
543
- .next-page-placeholder {
544
- width: 100%;
545
- max-width: 100%;
546
- }
547
726
  }
548
727
 
549
- /* Content layout with TOC */
550
- .content-layout {
551
- display: flex;
552
- gap: 2rem;
553
- width: 100%;
728
+ .prev-page, .next-page, .prev-page-placeholder, .next-page-placeholder {
729
+ width: 100%;
730
+ max-width: 100%;
554
731
  }
732
+ }
555
733
 
556
- .main-content {
557
- flex: 1;
558
- -webkit-min-logical-width: 0;
734
+ .content-layout {
735
+ display: flex;
736
+ gap: 2rem;
737
+ width: 100%;
738
+ }
559
739
 
740
+ .main-content {
741
+ flex: 1 1 0%;
742
+ min-inline-size: 0px;
560
743
  }
561
744
 
562
- /* Hide TOC on mobile */
563
- @media (max-width: 1024px) {
564
- .content-layout {
745
+ @media (max-width: 1024px) {
746
+ .content-layout {
565
747
  flex-direction: column;
566
- }
567
-
568
- /* Show TOC before content on mobile */
569
- .content-layout {
748
+ }
749
+
750
+ .content-layout {
570
751
  display: flex;
571
752
  flex-direction: column-reverse;
572
- }
573
753
  }
754
+ }
574
755
 
575
- /* TOC Styles - Simplified Hyperlink Style */
576
756
  .toc-container {
577
- margin: 0;
578
- padding: 0;
579
- border: none;
757
+ margin: 0px;
758
+ padding: 0px;
759
+ border: medium;
580
760
  background-color: transparent;
581
761
  }
582
762
 
583
763
  .toc-title {
584
- margin-top: 0;
585
- margin-bottom: 0.5rem;
586
- font-size: 1rem;
587
- font-weight: bold;
588
- color: var(--text-muted);
589
-
764
+ margin-top: 0px;
765
+ margin-bottom: 0.5rem;
766
+ font-size: 1rem;
767
+ font-weight: bold;
768
+ color: var(--text-muted);
590
769
  }
591
770
 
592
771
  .toc-list {
593
772
  list-style: none;
594
- padding-left: 0;
595
- margin: 0;
773
+ padding-left: 0px;
774
+ margin: 0px;
596
775
  }
597
776
 
598
777
  .toc-item {
@@ -601,22 +780,20 @@
601
780
  }
602
781
 
603
782
  .toc-link {
604
- text-decoration: none;
605
- color: var(--link-color);
606
- display: inline-block;
607
- padding: 0.1rem 0;
608
- font-size: 0.9rem;
609
- font-weight: 500;
610
-
783
+ text-decoration: none;
784
+ color: var(--link-color);
785
+ display: inline-block;
786
+ padding: 0.1rem 0px;
787
+ font-size: 0.9rem;
788
+ font-weight: 500;
611
789
  }
612
790
 
613
791
  .toc-link:hover {
614
792
  text-decoration: underline;
615
793
  }
616
794
 
617
- /* Indentation for different heading levels */
618
795
  .toc-level-2 {
619
- margin-left: 0;
796
+ margin-left: 0px;
620
797
  }
621
798
 
622
799
  .toc-level-3 {
@@ -629,35 +806,30 @@
629
806
  font-size: 0.8rem;
630
807
  }
631
808
 
632
- /* TOC sidebar should only display on active pages */
633
809
  .toc-sidebar {
634
- width: 180px;
635
- position: sticky;
636
- top: 2rem;
637
- max-height: calc(100vh - 4rem);
638
- overflow-y: auto;
639
- align-self: flex-start;
640
-
810
+ width: 180px;
811
+ position: sticky;
812
+ top: 2rem;
813
+ max-height: calc(-4rem + 100vh);
814
+ overflow-y: auto;
815
+ align-self: flex-start;
641
816
  }
642
817
 
643
- /* Hide TOC on mobile */
644
818
  @media (max-width: 1024px) {
645
819
  .toc-sidebar {
646
- width: 100%;
647
- position: static;
648
- margin-bottom: 1rem;
820
+ width: 100%;
821
+ position: static;
822
+ margin-bottom: 1rem;
649
823
  }
650
824
  }
651
825
 
652
- /* Basic image styling */
653
826
  img {
654
827
  max-width: 100%;
655
828
  height: auto;
656
829
  display: block;
657
- margin: 1.5rem 0;
830
+ margin: 1.5rem 0px;
658
831
  }
659
832
 
660
- /* Image alignment classes */
661
833
  img.align-left {
662
834
  float: left;
663
835
  margin-right: 1.5rem;
@@ -675,7 +847,6 @@ img.align-right {
675
847
  margin-bottom: 1rem;
676
848
  }
677
849
 
678
- /* Image size classes */
679
850
  img.size-small {
680
851
  max-width: 300px;
681
852
  }
@@ -688,7 +859,6 @@ img.size-large {
688
859
  max-width: 800px;
689
860
  }
690
861
 
691
- /* Image borders and shadows */
692
862
  img.with-border {
693
863
  border: 1px solid var(--image-border-color);
694
864
  padding: 4px;
@@ -698,9 +868,8 @@ img.with-shadow {
698
868
  box-shadow: var(--image-shadow);
699
869
  }
700
870
 
701
- /* Figure and caption styling */
702
871
  .docmd-container figure {
703
- margin: 2rem 0;
872
+ margin: 2rem 0px;
704
873
  }
705
874
 
706
875
  .docmd-container figure img {
@@ -713,34 +882,127 @@ img.with-shadow {
713
882
  text-align: center;
714
883
  padding: 0.5rem;
715
884
  background-color: var(--image-caption-bg);
716
- border-radius: 0 0 4px 4px;
885
+ border-radius: 0px 0px 4px 4px;
717
886
  }
718
887
 
719
- /* Image gallery */
720
888
  .docmd-container .image-gallery {
721
889
  display: grid;
722
890
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
723
891
  gap: 1rem;
724
- margin: 2rem 0;
892
+ margin: 2rem 0px;
725
893
  }
726
894
 
727
895
  .docmd-container .image-gallery figure {
728
- margin: 0;
896
+ margin: 0px;
729
897
  }
730
898
 
731
- /* Clear floats after aligned images */
732
899
  .docmd-container .clear-float::after {
733
900
  content: "";
734
901
  display: table;
735
902
  clear: both;
736
903
  }
737
904
 
738
- /* Lightbox styling */
905
+ .docmd-tabs {
906
+ margin: 1.5rem 0px;
907
+ border: 1px solid var(--border-color);
908
+ border-radius: 6px;
909
+ overflow: hidden;
910
+ box-shadow: rgba(0, 0, 0, 0.05) 0px 1px 3px;
911
+ }
912
+
913
+ .docmd-tabs-nav {
914
+ display: flex;
915
+ background-color: var(--sidebar-bg);
916
+ border-bottom: 1px solid var(--border-color);
917
+ overflow: auto hidden;
918
+ }
919
+
920
+ .docmd-tabs-nav-item {
921
+ padding: 0.75rem 1.25rem;
922
+ cursor: pointer;
923
+ border-bottom-width: 3px;
924
+ border-bottom-style: solid;
925
+ border-bottom-color: transparent;
926
+ margin-bottom: -1px;
927
+ font-weight: 500;
928
+ color: var(--sidebar-text);
929
+ white-space: nowrap;
930
+ }
931
+
932
+ .docmd-tabs-nav-item:hover {
933
+ background-color: var(--sidebar-link-active-bg);
934
+ }
935
+
936
+ .docmd-tabs-nav-item.active {
937
+ color: var(--link-color);
938
+ border-bottom-color: var(--link-color);
939
+ background-color: var(--bg-color);
940
+ }
941
+
942
+ .docmd-tabs-content {
943
+ padding: 1.5rem;
944
+ }
945
+
946
+ .docmd-tab-pane {
947
+ display: none;
948
+ }
949
+
950
+ .docmd-tab-pane.active {
951
+ display: block;
952
+ }
953
+
954
+ .tabs-container {
955
+ margin: 1rem 0px;
956
+ border: 1px solid rgb(225, 229, 233);
957
+ border-radius: 0.375rem;
958
+ }
959
+
960
+ .tab-navigation {
961
+ display: flex;
962
+ background-color: rgb(248, 249, 250);
963
+ border-bottom-width: 1px;
964
+ border-bottom-style: solid;
965
+ border-bottom-color: rgb(225, 229, 233);
966
+ border-radius: 0.375rem 0.375rem 0px 0px;
967
+ }
968
+
969
+ .tab-button {
970
+ padding: 0.75rem 1rem;
971
+ border-width: medium medium 2px;
972
+ border-style: none none solid;
973
+ border-color: currentcolor currentcolor transparent;
974
+ border-image: none;
975
+ background: none;
976
+ cursor: pointer;
977
+ transition: 0.2s;
978
+ }
979
+
980
+ .tab-button:hover {
981
+ background-color: rgb(233, 236, 239);
982
+ }
983
+
984
+ .tab-button.active {
985
+ border-bottom-color: rgb(0, 123, 255);
986
+ background-color: white;
987
+ }
988
+
989
+ .tab-content {
990
+ padding: 1rem;
991
+ }
992
+
993
+ .tab-panel {
994
+ display: none;
995
+ }
996
+
997
+ .tab-panel.active {
998
+ display: block;
999
+ }
1000
+
739
1001
  .docmd-lightbox {
740
1002
  display: none;
741
1003
  position: fixed;
742
- top: 0;
743
- left: 0;
1004
+ top: 0px;
1005
+ left: 0px;
744
1006
  width: 100%;
745
1007
  height: 100%;
746
1008
  background-color: var(--lightbox-bg);
@@ -761,8 +1023,8 @@ img.with-shadow {
761
1023
  max-width: 100%;
762
1024
  max-height: 80vh;
763
1025
  object-fit: contain;
764
- margin: 0 auto;
765
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);
1026
+ margin: 0px auto;
1027
+ box-shadow: rgba(0, 0, 0, 0.3) 0px 0px 20px;
766
1028
  }
767
1029
 
768
1030
  .docmd-lightbox-caption {
@@ -783,25 +1045,125 @@ img.with-shadow {
783
1045
  }
784
1046
 
785
1047
  .docmd-lightbox-close:hover {
786
- color: #ddd;
1048
+ color: rgb(221, 221, 221);
787
1049
  }
788
1050
 
789
- /* Cursor for lightbox images */
790
- img.lightbox,
791
- .docmd-container .image-gallery img {
1051
+ img.lightbox, .docmd-container .image-gallery img {
792
1052
  cursor: zoom-in;
793
1053
  }
794
1054
 
795
- /* Responsive image handling */
796
1055
  @media (max-width: 768px) {
797
- img.align-left,
798
- img.align-right {
799
- float: none;
800
- margin-left: auto;
801
- margin-right: auto;
1056
+ img.align-left, img.align-right {
1057
+ float: none;
1058
+ margin-left: auto;
1059
+ margin-right: auto;
802
1060
  }
803
-
1061
+
804
1062
  .docmd-container .image-gallery {
805
- grid-template-columns: 1fr;
1063
+ grid-template-columns: 1fr;
1064
+ }
1065
+ }
1066
+
1067
+ .docmd-button {
1068
+ display: inline-block;
1069
+ padding: 0.6rem 1.2rem;
1070
+ margin: 0.5rem;
1071
+ border-radius: 6px;
1072
+ background-color: var(--link-color);
1073
+ color: rgb(255, 255, 255);
1074
+ text-decoration: none;
1075
+ font-weight: 500;
1076
+ transition: background-color 0.2s, transform 0.2s;
1077
+ border: medium;
1078
+ cursor: pointer;
1079
+ }
1080
+
1081
+ .docmd-button:hover {
1082
+ text-decoration: none;
1083
+ filter: brightness(90%);
1084
+ transform: translateY(-1px);
1085
+ }
1086
+
1087
+ /* Sponsor Ribbon */
1088
+ .sponsor-ribbon {
1089
+ position: fixed;
1090
+ bottom: 60px;
1091
+ right: 10px;
1092
+ z-index: 1000;
1093
+ transform: rotate(0deg);
1094
+ transform-origin: center;
1095
+
1096
+ }
1097
+
1098
+ .sponsor-link {
1099
+ display: flex;
1100
+ align-items: center;
1101
+ gap: 0.5rem;
1102
+ background: linear-gradient(135deg, #ff6b6b, #ee5a24);
1103
+ color: white;
1104
+ text-decoration: none;
1105
+ padding: 0.75rem 1.5rem;
1106
+ border-radius: 5px;
1107
+ box-shadow: 0 4px 12px rgba(255, 107, 107, 0.3);
1108
+ font-weight: 600;
1109
+ font-size: 0.875rem;
1110
+ transition: all 0.3s ease;
1111
+ white-space: nowrap;
1112
+
1113
+ }
1114
+
1115
+ .sponsor-link:hover {
1116
+ transform: scale(1.02);
1117
+ box-shadow: 0 6px 20px rgba(255, 107, 107, 0.4);
1118
+ color: white;
1119
+ text-decoration: none;
1120
+
1121
+ }
1122
+
1123
+ .sponsor-icon {
1124
+ width: 1rem;
1125
+ height: 1rem;
1126
+ animation: heartbeat 2s ease-in-out infinite;
1127
+ }
1128
+
1129
+ .sponsor-text {
1130
+ font-family: inherit;
1131
+ }
1132
+
1133
+ @keyframes heartbeat {
1134
+ 0%, 100% {
1135
+ transform: scale(1);
1136
+ }
1137
+ 50% {
1138
+ transform: scale(1.1);
1139
+ }
1140
+ }
1141
+
1142
+ /* Responsive adjustments */
1143
+ @media (max-width: 768px) {
1144
+ .sponsor-ribbon {
1145
+ bottom: 10px;
1146
+ right: 10px;
1147
+ transform: rotate(45deg) scale(0.8);
1148
+ }
1149
+
1150
+ .sponsor-link {
1151
+ padding: 0.5rem 1rem;
1152
+ font-size: 0.75rem;
1153
+ }
1154
+
1155
+ .sponsor-icon {
1156
+ width: 0.875rem;
1157
+ height: 0.875rem;
806
1158
  }
807
- }
1159
+ }
1160
+
1161
+ /* Dark mode adjustments */
1162
+ body[data-theme="dark"] .sponsor-link {
1163
+ background: linear-gradient(135deg, #ff6b6b, #c44569);
1164
+ box-shadow: 0 4px 12px rgba(255, 107, 107, 0.2);
1165
+ }
1166
+
1167
+ body[data-theme="dark"] .sponsor-link:hover {
1168
+ box-shadow: 0 6px 20px rgba(255, 107, 107, 0.3);
1169
+ }