@mgks/docmd 0.1.4 → 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 (43) hide show
  1. package/README.md +2 -4
  2. package/assets/css/welcome.css +62 -374
  3. package/assets/images/preview-dark-1.webp +0 -0
  4. package/assets/images/preview-dark-2.webp +0 -0
  5. package/assets/images/preview-dark-3.webp +0 -0
  6. package/assets/images/preview-light-1.webp +0 -0
  7. package/assets/images/preview-light-2.webp +0 -0
  8. package/assets/images/preview-light-3.webp +0 -0
  9. package/config.js +31 -2
  10. package/docs/configuration.md +72 -3
  11. package/docs/content/containers/buttons.md +88 -0
  12. package/docs/content/containers/callouts.md +154 -0
  13. package/docs/content/containers/cards.md +93 -0
  14. package/docs/content/containers/index.md +35 -0
  15. package/docs/content/containers/nested-containers.md +329 -0
  16. package/docs/content/containers/steps.md +175 -0
  17. package/docs/content/containers/tabs.md +228 -0
  18. package/docs/content/frontmatter.md +2 -2
  19. package/docs/index.md +6 -9
  20. package/docs/plugins/seo.md +2 -0
  21. package/docs/theming/available-themes.md +17 -2
  22. package/docs/theming/light-dark-mode.md +12 -3
  23. package/package.json +9 -3
  24. package/src/assets/css/docmd-main.css +934 -573
  25. package/src/assets/css/docmd-theme-retro.css +812 -0
  26. package/src/assets/css/docmd-theme-ruby.css +26 -13
  27. package/src/assets/css/docmd-theme-sky.css +606 -605
  28. package/src/assets/js/docmd-image-lightbox.js +1 -3
  29. package/src/assets/js/docmd-main.js +97 -0
  30. package/src/commands/build.js +1 -1
  31. package/src/commands/init.js +19 -1
  32. package/src/core/file-processor.js +626 -363
  33. package/src/core/html-generator.js +20 -30
  34. package/src/plugins/seo.js +4 -0
  35. package/src/templates/layout.ejs +33 -7
  36. package/assets/images/preview-dark-1.png +0 -0
  37. package/assets/images/preview-dark-2.png +0 -0
  38. package/assets/images/preview-dark-3.png +0 -0
  39. package/assets/images/preview-light-1.png +0 -0
  40. package/assets/images/preview-light-2.png +0 -0
  41. package/assets/images/preview-light-3.png +0 -0
  42. package/docs/content/custom-containers.md +0 -129
  43. package/src/assets/js/docmd-theme-toggle.js +0 -59
@@ -1,599 +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
- overflow: hidden;
146
- }
78
+ .sidebar nav ul {
79
+ list-style: none;
80
+ padding: 0px;
81
+ margin: 0px;
82
+ }
147
83
 
148
- .page-header {
149
- padding: 15px 30px;
150
- border-bottom: 1px solid var(--header-border);
151
- background-color: var(--header-bg);
152
- /* position: sticky;
153
- top: 0;
154
- z-index: 10; Removed sticky header for now for simplicity */
155
- }
156
-
157
- .page-header h1 {
158
- margin: 0;
159
- font-size: 1.8em;
160
- }
161
-
162
-
163
- .content-area {
164
- padding: 2.5rem 2rem;
165
- max-width: 1200px;
166
- margin: 0 auto;
167
- width: 100%;
168
- box-sizing: border-box;
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;
91
+ }
169
92
 
93
+ .sidebar nav li a:hover, .sidebar nav li a.active {
94
+ background-color: var(--sidebar-link-active-bg);
170
95
  }
171
-
172
-
173
- /* Code blocks */
174
- pre {
175
- background-color: var(--code-bg);
176
- color: var(--code-text);
177
- padding: 1em;
178
- border-radius: 4px;
179
- overflow-x: auto;
180
- font-family: var(--font-family-mono);
181
- }
182
-
183
- code {
184
- font-family: var(--font-family-mono);
185
- background-color: var(--code-bg);
186
- padding: 0.2em 0.4em;
187
- border-radius: 3px;
188
- font-size: 0.9em;
189
- }
190
-
191
- pre code {
192
- background-color: transparent;
193
- padding: 0;
194
- font-size: inherit;
195
- }
196
96
 
197
- .sidebar-header {
198
- padding-bottom: 10px;
199
- margin-bottom: 10px;
200
- border-bottom: 1px solid var(--border-color);
201
- text-align: center; /* Or left, depending on design */
202
- }
203
- .sidebar-header h1 { /* If no logo */
204
- font-size: 1.5em;
205
- margin-top: 0;
206
- margin-bottom: 0; /* Handled by sidebar-header */
207
- }
208
- .logo-link img {
209
- max-height: 40px; /* Default max height, can be overridden by inline style from config */
210
- width: auto;
211
- display: block;
212
- margin: 0 auto; /* Center if text-align: center on parent */
213
- }
214
- .logo-link img.logo-light { display: block; } /* Show light logo by default */
215
- .logo-link img.logo-dark { display: none; } /* Hide dark logo by default */
216
-
217
- /* In dark mode, show dark logo and hide light logo */
218
- body[data-theme="dark"] .logo-link img.logo-light { display: none; }
219
- body[data-theme="dark"] .logo-link img.logo-dark { display: block; }
220
-
221
- /* Navigation Icons (Lucide SVGs will have these classes) */
222
- .sidebar-nav .lucide-icon { /* General class for all lucide icons in nav */
223
- width: 1em; /* Default, can be overridden by specific icon classes if needed */
224
- height: 1em;
225
- margin-right: 0.5em;
226
- vertical-align: -0.15em; /* Fine-tune alignment */
227
- stroke-width: 2; /* Default Lucide stroke width */
228
- }
229
- .sidebar-nav .nav-external-icon {
230
- width: 1em;
231
- height: 1.5em;
232
- float: right;
233
- margin-left: 0.3em;
234
- opacity: 0.7;
235
-
236
- }
237
-
238
- /* Theme Toggle Button */
239
- .theme-toggle-button {
240
- background: transparent;
241
- border: 1px solid var(--border-color);
242
- color: var(--sidebar-text); /* Not directly used as icon has its own color */
243
- padding: 8px;
244
- border-radius: 4px;
245
- cursor: pointer;
246
- margin-top: 20px;
247
- display: flex;
248
- align-items: center;
249
- justify-content: center;
250
- width: 100%;
251
- }
252
- .theme-toggle-button:hover {
253
- background-color: var(--sidebar-link-active-bg);
254
- }
255
- .theme-toggle-button .lucide-icon { /* Styles for sun/moon icons in button */
256
- width: 1.2em;
257
- height: 1.2em;
258
- }
259
- .theme-toggle-button .icon-moon { display: none; } /* icon-moon is class from renderIcon */
260
- .theme-toggle-button .icon-sun { display: block; }
261
- body[data-theme="dark"] .theme-toggle-button .icon-moon { display: block; }
262
- body[data-theme="dark"] .theme-toggle-button .icon-sun { display: none; }
263
-
264
-
265
- /* Custom Containers */
266
- .docmd-container {
267
- padding: 1rem 1.5rem; /* More horizontal padding */
268
- margin-bottom: 1.5rem;
269
- border-radius: 6px;
270
- border: 1px solid var(--border-color);
271
- background-color: var(--code-bg); /* Default background, can be overridden */
272
- }
273
- .docmd-container > :first-child { margin-top: 0; }
274
- .docmd-container > :last-child { margin-bottom: 0; }
97
+ .sidebar nav li a.active {
98
+ font-weight: 600;
99
+ color: var(--link-color);
100
+ }
275
101
 
276
- /* Callouts */
277
- .callout {
278
- border-left-width: 5px;
279
- background-color: transparent; /* Override default docmd-container bg */
280
- }
281
- .callout-title {
282
- font-weight: bold;
283
- margin-bottom: 0.5em;
284
- }
285
- .callout-info { border-left-color: #3498db; background-color: rgba(52, 152, 219, 0.07); }
286
- .callout-warning { border-left-color: #f39c12; background-color: rgba(243, 156, 18, 0.07); }
287
- .callout-tip { border-left-color: #2ecc71; background-color: rgba(46, 204, 113, 0.07); }
288
- .callout-success { border-left-color: #2ecc71; background-color: rgba(46, 204, 113, 0.07); }
289
- .callout-danger { border-left-color: #e74c3c; background-color: rgba(231, 76, 60, 0.07); }
290
- .callout .callout-content > :first-child { margin-top: 0; }
291
- .callout .callout-content > :last-child { margin-bottom: 0; }
292
-
293
- .card .card-title {
294
- font-weight: bold;
295
- font-size: 1.1em;
296
- margin: -1rem -1.5rem 1rem -1.5rem; /* Extend to edges of padding */
297
- padding: 0.75rem 1.5rem;
298
- border-bottom: 1px solid var(--border-color);
299
- }
300
- .card .card-content > :first-child { margin-top: 0; }
301
- .card .card-content > :last-child { margin-bottom: 0; }
302
-
303
- /* Steps (using CSS counters for H4 headings within .steps) */
304
- .steps {
305
- /* counter-reset is set inline on the div by markdown-it-container render function */
306
- background-color: transparent; /* Often steps don't need a strong background */
307
- border: none; /* Or a very light border */
308
- padding-left: 0; padding-right: 0; /* Remove default container padding if steps are full-width */
309
- }
310
- .steps h4 { /* Assuming users use H4 for step titles */
311
- counter-increment: step-counter;
312
- position: relative;
313
- padding-left: 3em; /* Space for number */
314
- margin-bottom: 0.5em;
315
- margin-top: 1.5em; /* Space between steps */
316
- font-size: 1.2em; /* Make step titles prominent */
317
- }
318
- .steps h4:first-child {
319
- margin-top: 0.5em; /* Less top margin for the very first step */
320
- }
321
- .steps h4::before {
322
- content: counter(step-counter);
323
- position: absolute;
324
- left: 0;
325
- top: 50%;
326
- transform: translateY(-50%);
327
- display: flex;
328
- align-items: center;
329
- justify-content: center;
330
- width: 2em; /* Larger circle */
331
- height: 2em;
332
- border-radius: 50%;
333
- background-color: var(--link-color);
334
- color: white;
335
- font-size: 0.9em; /* Number font size relative to H4 */
336
- font-weight: bold;
337
- line-height: 2em; /* Ensure number is centered in circle */
338
- }
339
- .steps h4 + * { /* Content immediately after step title */
340
- margin-left: 3em; /* Align with title text */
341
- margin-top: 0.5em;
342
- padding-bottom: 1em; /* Space before next step title or end of container */
343
- }
344
- .steps > :last-child { margin-bottom: 0; }
345
-
346
-
347
- /* Footer */
348
- .page-footer {
349
- text-align: center;
350
- padding: 20px 30px;
351
- margin-top: auto; /* Pushes footer to bottom if content is short */
352
- border-top: 1px solid var(--border-color);
353
- font-size: 0.9em;
354
- color: var(--text-color);
355
- background-color: var(--sidebar-bg); /* Or a distinct footer background */
356
- }
357
- .page-footer a {
358
- color: var(--link-color);
359
- text-decoration: none;
360
- }
361
- .page-footer a:hover {
362
- text-decoration: underline;
363
- }
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
+ }
127
+
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
+ }
364
382
 
365
- /* Focus Visible */
366
- :focus-visible {
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 {
367
555
  outline: 2px solid var(--link-color);
368
556
  outline-offset: 2px;
369
- /* box-shadow: 0 0 0 4px var(--bg-color), 0 0 0 6px var(--link-color); Optional halo */
370
- }
371
- :focus:not(:focus-visible) {
372
- outline: none;
373
- }
374
- .sidebar nav li a:focus-visible {
375
- background-color: var(--sidebar-link-active-bg);
376
- outline: 2px solid var(--link-color);
377
- outline-offset: -2px;
378
- }
379
- .theme-toggle-button:focus-visible {
380
- border-color: var(--link-color);
381
- box-shadow: 0 0 0 2px var(--link-color);
382
- }
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
+ }
568
+
569
+ .theme-toggle-button:focus-visible {
570
+ border-color: var(--link-color);
571
+ box-shadow: 0 0 0 2px var(--link-color);
572
+ }
383
573
 
384
- /* Responsive */
385
- @media (max-width: 768px) {
386
- body {
574
+ @media (max-width: 768px) {
575
+ body {
387
576
  flex-direction: column;
388
- }
389
- .sidebar {
577
+ }
578
+
579
+ .sidebar {
390
580
  width: 100%;
391
581
  height: auto;
392
- position: static; /* Static on mobile */
393
- border-right: none;
582
+ position: static;
583
+ border-right-width: medium;
584
+ border-right-style: none;
585
+ border-right-color: currentcolor;
394
586
  border-bottom: 1px solid var(--border-color);
395
- }
396
- .main-content-wrapper {
397
- margin-left: 0;
398
- }
399
- .content-area {
400
- padding: 15px;
401
- }
402
587
  }
403
588
 
404
- /* Page Navigation at Bottom */
405
- .page-navigation {
406
- display: flex;
407
- justify-content: space-between;
408
- margin-top: 3rem;
409
- padding-top: 1.5rem;
410
- border-top: 1px solid var(--border-color);
589
+ .sidebar-toggle-button {
590
+ display: block;
411
591
  }
412
592
 
413
- .prev-page,
414
- .next-page {
415
- display: flex;
416
- align-items: center;
417
- text-decoration: none;
418
- color: var(--link-color);
419
- padding: 0.75rem;
420
- border-radius: 6px;
421
- transition: background-color 0.2s ease;
422
- width: 48%;
423
- max-width: 48%;
593
+ .main-content-wrapper {
594
+ margin-left: 0px;
424
595
  }
425
596
 
426
- .prev-page:hover,
427
- .next-page:hover {
428
- background-color: rgba(0, 0, 0, 0.05);
429
- text-decoration: none;
597
+ .content-area {
598
+ padding: 15px;
430
599
  }
600
+ }
431
601
 
432
- body[data-theme="dark"] .prev-page:hover,
433
- body[data-theme="dark"] .next-page:hover {
434
- background-color: rgba(255, 255, 255, 0.05);
435
- }
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
+ }
436
609
 
437
- .prev-page {
438
- justify-content: flex-start;
439
- }
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
+ }
440
621
 
441
- .next-page {
442
- justify-content: flex-end;
443
- text-align: right;
444
- }
622
+ .prev-page:hover, .next-page:hover {
623
+ background-color: rgba(0, 0, 0, 0.05);
624
+ text-decoration: none;
625
+ }
445
626
 
446
- .prev-page-placeholder,
447
- .next-page-placeholder {
448
- width: 48%;
449
- }
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
+ }
450
630
 
451
- .prev-page span,
452
- .next-page span {
453
- display: flex;
454
- flex-direction: column;
455
- }
631
+ .prev-page {
632
+ justify-content: flex-start;
633
+ }
456
634
 
457
- .prev-page small,
458
- .next-page small {
459
- font-size: 0.8rem;
460
- opacity: 0.8;
461
- margin-bottom: 0.25rem;
462
- }
635
+ .next-page {
636
+ justify-content: flex-end;
637
+ text-align: right;
638
+ }
463
639
 
464
- .prev-page strong,
465
- .next-page strong {
466
- font-weight: 500;
467
- }
640
+ .prev-page-placeholder, .next-page-placeholder {
641
+ width: 48%;
642
+ }
468
643
 
469
- .page-nav-icon {
470
- width: 1.2rem;
471
- height: 1.2rem;
472
- }
644
+ .prev-page span, .next-page span {
645
+ display: flex;
646
+ flex-direction: column;
647
+ }
473
648
 
474
- .prev-page .page-nav-icon {
475
- margin-right: 0.75rem;
476
- }
649
+ .prev-page small, .next-page small {
650
+ font-size: 0.8rem;
651
+ opacity: 0.8;
652
+ margin-bottom: 0.25rem;
653
+ }
477
654
 
478
- .next-page .page-nav-icon {
479
- margin-left: 0.75rem;
480
- }
655
+ .prev-page strong, .next-page strong {
656
+ font-weight: 500;
657
+ }
481
658
 
482
- /* Footer with Branding */
483
- .page-footer {
484
- text-align: center;
485
- padding: 20px 30px;
486
- margin-top: auto; /* Pushes footer to bottom if content is short */
487
- border-top: 1px solid var(--border-color);
488
- font-size: 0.9em;
489
- color: var(--text-color);
490
- background-color: var(--sidebar-bg); /* Or a distinct footer background */
491
- }
659
+ .page-nav-icon {
660
+ width: 1.2rem;
661
+ height: 1.2rem;
662
+ }
492
663
 
493
- .footer-content {
494
- display: flex;
495
- justify-content: space-between;
496
- align-items: center;
497
- margin: 0 auto;
498
- width: 100%;
664
+ .prev-page .page-nav-icon {
665
+ margin-right: 0.75rem;
666
+ }
499
667
 
668
+ .next-page .page-nav-icon {
669
+ margin-left: 0.75rem;
500
670
  }
501
671
 
502
- .user-footer {
503
- text-align: left;
504
- }
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
+ }
505
693
 
506
- .branding-footer {
507
- text-align: right;
508
- opacity: 0.9;
509
- font-weight: 500;
694
+ .branding-footer {
695
+ text-align: right;
696
+ opacity: 0.9;
697
+ font-weight: 500;
510
698
  }
699
+
511
700
  .branding-footer svg {
512
701
  color: rgb(251, 58, 58);
513
- }
702
+ }
514
703
 
515
- .page-footer a {
516
- color: var(--link-color);
517
- text-decoration: none;
518
- }
704
+ .page-footer a {
705
+ color: var(--link-color);
706
+ text-decoration: none;
707
+ }
519
708
 
520
- .page-footer a:hover {
521
- text-decoration: underline;
522
- }
709
+ .page-footer a:hover {
710
+ text-decoration: underline;
711
+ }
523
712
 
524
- /* Mobile responsiveness for footer and navigation */
525
- @media (max-width: 768px) {
526
- .footer-content {
713
+ @media (max-width: 768px) {
714
+ .footer-content {
527
715
  flex-direction: column;
528
716
  gap: 1rem;
529
- }
530
-
531
- .user-footer,
532
- .branding-footer {
717
+ }
718
+
719
+ .user-footer, .branding-footer {
533
720
  text-align: center;
534
- }
535
-
536
- .page-navigation {
721
+ }
722
+
723
+ .page-navigation {
537
724
  flex-direction: column;
538
725
  gap: 1rem;
539
- }
540
-
541
- .prev-page,
542
- .next-page,
543
- .prev-page-placeholder,
544
- .next-page-placeholder {
545
- width: 100%;
546
- max-width: 100%;
547
- }
548
726
  }
549
727
 
550
- /* Content layout with TOC */
551
- .content-layout {
552
- display: flex;
553
- gap: 2rem;
554
- width: 100%;
728
+ .prev-page, .next-page, .prev-page-placeholder, .next-page-placeholder {
729
+ width: 100%;
730
+ max-width: 100%;
555
731
  }
732
+ }
556
733
 
557
- .main-content {
558
- flex: 1;
559
- -webkit-min-logical-width: 0;
734
+ .content-layout {
735
+ display: flex;
736
+ gap: 2rem;
737
+ width: 100%;
738
+ }
560
739
 
740
+ .main-content {
741
+ flex: 1 1 0%;
742
+ min-inline-size: 0px;
561
743
  }
562
744
 
563
- /* Hide TOC on mobile */
564
- @media (max-width: 1024px) {
565
- .content-layout {
745
+ @media (max-width: 1024px) {
746
+ .content-layout {
566
747
  flex-direction: column;
567
- }
568
-
569
- /* Show TOC before content on mobile */
570
- .content-layout {
748
+ }
749
+
750
+ .content-layout {
571
751
  display: flex;
572
752
  flex-direction: column-reverse;
573
- }
574
753
  }
754
+ }
575
755
 
576
- /* TOC Styles - Simplified Hyperlink Style */
577
756
  .toc-container {
578
- margin: 0;
579
- padding: 0;
580
- border: none;
757
+ margin: 0px;
758
+ padding: 0px;
759
+ border: medium;
581
760
  background-color: transparent;
582
761
  }
583
762
 
584
763
  .toc-title {
585
- margin-top: 0;
586
- margin-bottom: 0.5rem;
587
- font-size: 1rem;
588
- font-weight: bold;
589
- color: var(--text-muted);
590
-
764
+ margin-top: 0px;
765
+ margin-bottom: 0.5rem;
766
+ font-size: 1rem;
767
+ font-weight: bold;
768
+ color: var(--text-muted);
591
769
  }
592
770
 
593
771
  .toc-list {
594
772
  list-style: none;
595
- padding-left: 0;
596
- margin: 0;
773
+ padding-left: 0px;
774
+ margin: 0px;
597
775
  }
598
776
 
599
777
  .toc-item {
@@ -602,22 +780,20 @@
602
780
  }
603
781
 
604
782
  .toc-link {
605
- text-decoration: none;
606
- color: var(--link-color);
607
- display: inline-block;
608
- padding: 0.1rem 0;
609
- font-size: 0.9rem;
610
- font-weight: 500;
611
-
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;
612
789
  }
613
790
 
614
791
  .toc-link:hover {
615
792
  text-decoration: underline;
616
793
  }
617
794
 
618
- /* Indentation for different heading levels */
619
795
  .toc-level-2 {
620
- margin-left: 0;
796
+ margin-left: 0px;
621
797
  }
622
798
 
623
799
  .toc-level-3 {
@@ -630,35 +806,30 @@
630
806
  font-size: 0.8rem;
631
807
  }
632
808
 
633
- /* TOC sidebar should only display on active pages */
634
809
  .toc-sidebar {
635
- width: 180px;
636
- position: sticky;
637
- top: 2rem;
638
- max-height: calc(100vh - 4rem);
639
- overflow-y: auto;
640
- align-self: flex-start;
641
-
810
+ width: 180px;
811
+ position: sticky;
812
+ top: 2rem;
813
+ max-height: calc(-4rem + 100vh);
814
+ overflow-y: auto;
815
+ align-self: flex-start;
642
816
  }
643
817
 
644
- /* Hide TOC on mobile */
645
818
  @media (max-width: 1024px) {
646
819
  .toc-sidebar {
647
- width: 100%;
648
- position: static;
649
- margin-bottom: 1rem;
820
+ width: 100%;
821
+ position: static;
822
+ margin-bottom: 1rem;
650
823
  }
651
824
  }
652
825
 
653
- /* Basic image styling */
654
826
  img {
655
827
  max-width: 100%;
656
828
  height: auto;
657
829
  display: block;
658
- margin: 1.5rem 0;
830
+ margin: 1.5rem 0px;
659
831
  }
660
832
 
661
- /* Image alignment classes */
662
833
  img.align-left {
663
834
  float: left;
664
835
  margin-right: 1.5rem;
@@ -676,7 +847,6 @@ img.align-right {
676
847
  margin-bottom: 1rem;
677
848
  }
678
849
 
679
- /* Image size classes */
680
850
  img.size-small {
681
851
  max-width: 300px;
682
852
  }
@@ -689,7 +859,6 @@ img.size-large {
689
859
  max-width: 800px;
690
860
  }
691
861
 
692
- /* Image borders and shadows */
693
862
  img.with-border {
694
863
  border: 1px solid var(--image-border-color);
695
864
  padding: 4px;
@@ -699,9 +868,8 @@ img.with-shadow {
699
868
  box-shadow: var(--image-shadow);
700
869
  }
701
870
 
702
- /* Figure and caption styling */
703
871
  .docmd-container figure {
704
- margin: 2rem 0;
872
+ margin: 2rem 0px;
705
873
  }
706
874
 
707
875
  .docmd-container figure img {
@@ -714,34 +882,127 @@ img.with-shadow {
714
882
  text-align: center;
715
883
  padding: 0.5rem;
716
884
  background-color: var(--image-caption-bg);
717
- border-radius: 0 0 4px 4px;
885
+ border-radius: 0px 0px 4px 4px;
718
886
  }
719
887
 
720
- /* Image gallery */
721
888
  .docmd-container .image-gallery {
722
889
  display: grid;
723
890
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
724
891
  gap: 1rem;
725
- margin: 2rem 0;
892
+ margin: 2rem 0px;
726
893
  }
727
894
 
728
895
  .docmd-container .image-gallery figure {
729
- margin: 0;
896
+ margin: 0px;
730
897
  }
731
898
 
732
- /* Clear floats after aligned images */
733
899
  .docmd-container .clear-float::after {
734
900
  content: "";
735
901
  display: table;
736
902
  clear: both;
737
903
  }
738
904
 
739
- /* 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
+
740
1001
  .docmd-lightbox {
741
1002
  display: none;
742
1003
  position: fixed;
743
- top: 0;
744
- left: 0;
1004
+ top: 0px;
1005
+ left: 0px;
745
1006
  width: 100%;
746
1007
  height: 100%;
747
1008
  background-color: var(--lightbox-bg);
@@ -762,8 +1023,8 @@ img.with-shadow {
762
1023
  max-width: 100%;
763
1024
  max-height: 80vh;
764
1025
  object-fit: contain;
765
- margin: 0 auto;
766
- 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;
767
1028
  }
768
1029
 
769
1030
  .docmd-lightbox-caption {
@@ -784,25 +1045,125 @@ img.with-shadow {
784
1045
  }
785
1046
 
786
1047
  .docmd-lightbox-close:hover {
787
- color: #ddd;
1048
+ color: rgb(221, 221, 221);
788
1049
  }
789
1050
 
790
- /* Cursor for lightbox images */
791
- img.lightbox,
792
- .docmd-container .image-gallery img {
1051
+ img.lightbox, .docmd-container .image-gallery img {
793
1052
  cursor: zoom-in;
794
1053
  }
795
1054
 
796
- /* Responsive image handling */
797
1055
  @media (max-width: 768px) {
798
- img.align-left,
799
- img.align-right {
800
- float: none;
801
- margin-left: auto;
802
- margin-right: auto;
1056
+ img.align-left, img.align-right {
1057
+ float: none;
1058
+ margin-left: auto;
1059
+ margin-right: auto;
803
1060
  }
804
-
1061
+
805
1062
  .docmd-container .image-gallery {
806
- grid-template-columns: 1fr;
1063
+ grid-template-columns: 1fr;
807
1064
  }
808
- }
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;
1158
+ }
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
+ }