@mgks/docmd 0.1.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.
- package/.gitattributes +2 -0
- package/.github/FUNDING.yml +15 -0
- package/.github/workflows/deploy-docmd.yml +45 -0
- package/.github/workflows/publish.yml +84 -0
- package/LICENSE +21 -0
- package/README.md +83 -0
- package/bin/docmd.js +63 -0
- package/config.js +137 -0
- package/docs/cli-commands.md +87 -0
- package/docs/configuration.md +166 -0
- package/docs/contributing.md +86 -0
- package/docs/deployment.md +129 -0
- package/docs/getting-started/basic-usage.md +88 -0
- package/docs/getting-started/index.md +21 -0
- package/docs/getting-started/installation.md +75 -0
- package/docs/index.md +56 -0
- package/docs/plugins/analytics.md +76 -0
- package/docs/plugins/index.md +71 -0
- package/docs/plugins/seo.md +79 -0
- package/docs/plugins/sitemap.md +88 -0
- package/docs/theming/available-themes.md +85 -0
- package/docs/theming/custom-css-js.md +84 -0
- package/docs/theming/icons.md +93 -0
- package/docs/theming/index.md +19 -0
- package/docs/theming/light-dark-mode.md +107 -0
- package/docs/writing-content/custom-containers.md +129 -0
- package/docs/writing-content/frontmatter.md +76 -0
- package/docs/writing-content/index.md +17 -0
- package/docs/writing-content/markdown-syntax.md +277 -0
- package/package.json +56 -0
- package/src/assets/css/highlight-dark.css +1 -0
- package/src/assets/css/highlight-light.css +1 -0
- package/src/assets/css/main.css +562 -0
- package/src/assets/css/theme-sky.css +499 -0
- package/src/assets/css/toc.css +76 -0
- package/src/assets/favicon.ico +0 -0
- package/src/assets/images/docmd-logo.png +0 -0
- package/src/assets/images/docmd-preview.png +0 -0
- package/src/assets/images/logo-dark.png +0 -0
- package/src/assets/images/logo-light.png +0 -0
- package/src/assets/js/theme-toggle.js +59 -0
- package/src/commands/build.js +300 -0
- package/src/commands/dev.js +182 -0
- package/src/commands/init.js +51 -0
- package/src/core/config-loader.js +28 -0
- package/src/core/file-processor.js +376 -0
- package/src/core/html-generator.js +139 -0
- package/src/core/icon-renderer.js +105 -0
- package/src/plugins/analytics.js +44 -0
- package/src/plugins/seo.js +65 -0
- package/src/plugins/sitemap.js +100 -0
- package/src/templates/layout.ejs +174 -0
- package/src/templates/navigation.ejs +107 -0
- package/src/templates/toc.ejs +34 -0
|
@@ -0,0 +1,562 @@
|
|
|
1
|
+
/* src/assets/css/main.css */
|
|
2
|
+
@import url('./toc.css'); /* Import the TOC styles */
|
|
3
|
+
|
|
4
|
+
:root {
|
|
5
|
+
--font-family-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
6
|
+
--font-family-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
|
7
|
+
|
|
8
|
+
/* Light Theme (default) */
|
|
9
|
+
--bg-color: #ffffff;
|
|
10
|
+
--text-color: #333333;
|
|
11
|
+
--sidebar-bg: #f4f7f9;
|
|
12
|
+
--sidebar-text: #2c3e50;
|
|
13
|
+
--sidebar-link-active-bg: #e0e7ec;
|
|
14
|
+
--sidebar-link-active-parent-bg: #e9eff3; /* New variable for parent items */
|
|
15
|
+
--link-color: #007bff;
|
|
16
|
+
--border-color: #e0e0e0;
|
|
17
|
+
--code-bg: #f8f8f8;
|
|
18
|
+
--code-text: #333;
|
|
19
|
+
--header-bg: #ffffff; /* Added for header */
|
|
20
|
+
--header-border: #e0e0e0; /* Added for header border */
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
body[data-theme="dark"] {
|
|
24
|
+
--bg-color: #1a1a1a;
|
|
25
|
+
--text-color: #e0e0e0;
|
|
26
|
+
--sidebar-bg: #2c2c2c;
|
|
27
|
+
--sidebar-text: #bdc3c7;
|
|
28
|
+
--sidebar-link-active-bg: #3a3a3a;
|
|
29
|
+
--sidebar-link-active-parent-bg: #343434; /* New variable for parent items in dark mode */
|
|
30
|
+
--link-color: #58a6ff;
|
|
31
|
+
--border-color: #444444;
|
|
32
|
+
--code-bg: #282c34; /* Common dark code bg */
|
|
33
|
+
--code-text: #abb2bf;
|
|
34
|
+
--header-bg: #1a1a1a; /* Added for header */
|
|
35
|
+
--header-border: #444444; /* Added for header border */
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
body {
|
|
39
|
+
font-family: var(--font-family-sans);
|
|
40
|
+
background-color: var(--bg-color);
|
|
41
|
+
color: var(--text-color);
|
|
42
|
+
margin: 0;
|
|
43
|
+
display: flex;
|
|
44
|
+
min-height: 100vh;
|
|
45
|
+
line-height: 1.6;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.sidebar {
|
|
49
|
+
width: 260px;
|
|
50
|
+
background-color: var(--sidebar-bg);
|
|
51
|
+
color: var(--sidebar-text);
|
|
52
|
+
padding: 20px;
|
|
53
|
+
border-right: 1px solid var(--border-color);
|
|
54
|
+
height: 100vh; /* Full height */
|
|
55
|
+
position: fixed; /* Fixed position */
|
|
56
|
+
top: 0;
|
|
57
|
+
left: 0;
|
|
58
|
+
overflow-y: auto; /* Scrollable if content overflows */
|
|
59
|
+
box-sizing: border-box;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.sidebar h1 {
|
|
63
|
+
font-size: 1.5em;
|
|
64
|
+
margin-top: 0;
|
|
65
|
+
margin-bottom: 20px;
|
|
66
|
+
padding-bottom: 10px;
|
|
67
|
+
border-bottom: 1px solid var(--border-color);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.sidebar nav ul {
|
|
71
|
+
list-style: none;
|
|
72
|
+
padding: 0;
|
|
73
|
+
margin: 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.sidebar nav li a {
|
|
77
|
+
display: block;
|
|
78
|
+
padding: 8px 10px;
|
|
79
|
+
text-decoration: none;
|
|
80
|
+
color: var(--sidebar-text);
|
|
81
|
+
border-radius: 4px;
|
|
82
|
+
transition: background-color 0.2s ease;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.sidebar nav li a:hover,
|
|
86
|
+
.sidebar nav li a.active {
|
|
87
|
+
background-color: var(--sidebar-link-active-bg);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* Additional active highlight for the active page itself */
|
|
91
|
+
.sidebar nav li a.active {
|
|
92
|
+
font-weight: 600;
|
|
93
|
+
color: var(--link-color);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* Specific style for parent items with active children */
|
|
97
|
+
.sidebar nav li.active-parent > a {
|
|
98
|
+
background-color: var(--sidebar-link-active-parent-bg);
|
|
99
|
+
font-weight: 500;
|
|
100
|
+
position: relative; /* For the indicator */
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* Add a subtle indicator for active parents */
|
|
104
|
+
.sidebar nav li.active-parent > a::before {
|
|
105
|
+
content: "";
|
|
106
|
+
position: absolute;
|
|
107
|
+
left: 0;
|
|
108
|
+
top: 0;
|
|
109
|
+
bottom: 0;
|
|
110
|
+
width: 3px;
|
|
111
|
+
background-color: var(--link-color);
|
|
112
|
+
opacity: 0.5;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* Make the indicator more prominent when it's the actual active page */
|
|
116
|
+
.sidebar nav li.active-parent > a.active::before {
|
|
117
|
+
opacity: 1;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.sidebar nav ul ul { /* Nested lists */
|
|
121
|
+
padding-left: 20px;
|
|
122
|
+
margin-top: 5px;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
.main-content-wrapper {
|
|
127
|
+
margin-left: 260px; /* Same as sidebar width */
|
|
128
|
+
flex-grow: 1;
|
|
129
|
+
display: flex;
|
|
130
|
+
flex-direction: column;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.page-header {
|
|
134
|
+
padding: 15px 30px;
|
|
135
|
+
border-bottom: 1px solid var(--header-border);
|
|
136
|
+
background-color: var(--header-bg);
|
|
137
|
+
/* position: sticky;
|
|
138
|
+
top: 0;
|
|
139
|
+
z-index: 10; Removed sticky header for now for simplicity */
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.page-header h1 {
|
|
143
|
+
margin: 0;
|
|
144
|
+
font-size: 1.8em;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
.content-area {
|
|
149
|
+
padding: 2.5rem 2rem;
|
|
150
|
+
max-width: 1200px;
|
|
151
|
+
margin: 0 auto;
|
|
152
|
+
width: 100%;
|
|
153
|
+
box-sizing: border-box;
|
|
154
|
+
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
/* Code blocks */
|
|
159
|
+
pre {
|
|
160
|
+
background-color: var(--code-bg);
|
|
161
|
+
color: var(--code-text);
|
|
162
|
+
padding: 1em;
|
|
163
|
+
border-radius: 4px;
|
|
164
|
+
overflow-x: auto;
|
|
165
|
+
font-family: var(--font-family-mono);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
code {
|
|
169
|
+
font-family: var(--font-family-mono);
|
|
170
|
+
background-color: var(--code-bg);
|
|
171
|
+
padding: 0.2em 0.4em;
|
|
172
|
+
border-radius: 3px;
|
|
173
|
+
font-size: 0.9em;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
pre code {
|
|
177
|
+
background-color: transparent;
|
|
178
|
+
padding: 0;
|
|
179
|
+
font-size: inherit;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.sidebar-header {
|
|
183
|
+
padding-bottom: 10px;
|
|
184
|
+
margin-bottom: 10px;
|
|
185
|
+
border-bottom: 1px solid var(--border-color);
|
|
186
|
+
text-align: center; /* Or left, depending on design */
|
|
187
|
+
}
|
|
188
|
+
.sidebar-header h1 { /* If no logo */
|
|
189
|
+
font-size: 1.5em;
|
|
190
|
+
margin-top: 0;
|
|
191
|
+
margin-bottom: 0; /* Handled by sidebar-header */
|
|
192
|
+
}
|
|
193
|
+
.logo-link img {
|
|
194
|
+
max-height: 40px; /* Default max height, can be overridden by inline style from config */
|
|
195
|
+
width: auto;
|
|
196
|
+
display: block;
|
|
197
|
+
margin: 0 auto; /* Center if text-align: center on parent */
|
|
198
|
+
}
|
|
199
|
+
.logo-link img.logo-light { display: block; } /* Show light logo by default */
|
|
200
|
+
.logo-link img.logo-dark { display: none; } /* Hide dark logo by default */
|
|
201
|
+
|
|
202
|
+
/* In dark mode, show dark logo and hide light logo */
|
|
203
|
+
body[data-theme="dark"] .logo-link img.logo-light { display: none; }
|
|
204
|
+
body[data-theme="dark"] .logo-link img.logo-dark { display: block; }
|
|
205
|
+
|
|
206
|
+
/* Navigation Icons (Lucide SVGs will have these classes) */
|
|
207
|
+
.sidebar-nav .lucide-icon { /* General class for all lucide icons in nav */
|
|
208
|
+
width: 1em; /* Default, can be overridden by specific icon classes if needed */
|
|
209
|
+
height: 1em;
|
|
210
|
+
margin-right: 0.5em;
|
|
211
|
+
vertical-align: -0.15em; /* Fine-tune alignment */
|
|
212
|
+
stroke-width: 2; /* Default Lucide stroke width */
|
|
213
|
+
}
|
|
214
|
+
.sidebar-nav .nav-external-icon {
|
|
215
|
+
width: 1em;
|
|
216
|
+
height: 1.5em;
|
|
217
|
+
float: right;
|
|
218
|
+
margin-left: 0.3em;
|
|
219
|
+
opacity: 0.7;
|
|
220
|
+
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/* Theme Toggle Button */
|
|
224
|
+
.theme-toggle-button {
|
|
225
|
+
background: transparent;
|
|
226
|
+
border: 1px solid var(--border-color);
|
|
227
|
+
color: var(--sidebar-text); /* Not directly used as icon has its own color */
|
|
228
|
+
padding: 8px;
|
|
229
|
+
border-radius: 4px;
|
|
230
|
+
cursor: pointer;
|
|
231
|
+
margin-top: 20px;
|
|
232
|
+
display: flex;
|
|
233
|
+
align-items: center;
|
|
234
|
+
justify-content: center;
|
|
235
|
+
width: 100%;
|
|
236
|
+
}
|
|
237
|
+
.theme-toggle-button:hover {
|
|
238
|
+
background-color: var(--sidebar-link-active-bg);
|
|
239
|
+
}
|
|
240
|
+
.theme-toggle-button .lucide-icon { /* Styles for sun/moon icons in button */
|
|
241
|
+
width: 1.2em;
|
|
242
|
+
height: 1.2em;
|
|
243
|
+
}
|
|
244
|
+
.theme-toggle-button .icon-moon { display: none; } /* icon-moon is class from renderIcon */
|
|
245
|
+
.theme-toggle-button .icon-sun { display: block; }
|
|
246
|
+
body[data-theme="dark"] .theme-toggle-button .icon-moon { display: block; }
|
|
247
|
+
body[data-theme="dark"] .theme-toggle-button .icon-sun { display: none; }
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
/* Custom Containers */
|
|
251
|
+
.docmd-container {
|
|
252
|
+
padding: 1rem 1.5rem; /* More horizontal padding */
|
|
253
|
+
margin-bottom: 1.5rem;
|
|
254
|
+
border-radius: 6px;
|
|
255
|
+
border: 1px solid var(--border-color);
|
|
256
|
+
background-color: var(--code-bg); /* Default background, can be overridden */
|
|
257
|
+
}
|
|
258
|
+
.docmd-container > :first-child { margin-top: 0; }
|
|
259
|
+
.docmd-container > :last-child { margin-bottom: 0; }
|
|
260
|
+
|
|
261
|
+
/* Callouts */
|
|
262
|
+
.callout {
|
|
263
|
+
border-left-width: 5px;
|
|
264
|
+
background-color: transparent; /* Override default docmd-container bg */
|
|
265
|
+
}
|
|
266
|
+
.callout-title {
|
|
267
|
+
font-weight: bold;
|
|
268
|
+
margin-bottom: 0.5em;
|
|
269
|
+
}
|
|
270
|
+
.callout-info { border-left-color: #3498db; background-color: rgba(52, 152, 219, 0.07); }
|
|
271
|
+
.callout-warning { border-left-color: #f39c12; background-color: rgba(243, 156, 18, 0.07); }
|
|
272
|
+
.callout-tip { border-left-color: #2ecc71; background-color: rgba(46, 204, 113, 0.07); }
|
|
273
|
+
.callout-success { border-left-color: #2ecc71; background-color: rgba(46, 204, 113, 0.07); }
|
|
274
|
+
.callout-danger { border-left-color: #e74c3c; background-color: rgba(231, 76, 60, 0.07); }
|
|
275
|
+
.callout .callout-content > :first-child { margin-top: 0; }
|
|
276
|
+
.callout .callout-content > :last-child { margin-bottom: 0; }
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
/* Cards */
|
|
280
|
+
.card {
|
|
281
|
+
/* background-color: var(--code-bg); /* Already set by .docmd-container */
|
|
282
|
+
}
|
|
283
|
+
.card .card-title {
|
|
284
|
+
font-weight: bold;
|
|
285
|
+
font-size: 1.1em;
|
|
286
|
+
margin: -1rem -1.5rem 1rem -1.5rem; /* Extend to edges of padding */
|
|
287
|
+
padding: 0.75rem 1.5rem;
|
|
288
|
+
border-bottom: 1px solid var(--border-color);
|
|
289
|
+
}
|
|
290
|
+
.card .card-content > :first-child { margin-top: 0; }
|
|
291
|
+
.card .card-content > :last-child { margin-bottom: 0; }
|
|
292
|
+
|
|
293
|
+
/* Steps (using CSS counters for H4 headings within .steps) */
|
|
294
|
+
.steps {
|
|
295
|
+
/* counter-reset is set inline on the div by markdown-it-container render function */
|
|
296
|
+
background-color: transparent; /* Often steps don't need a strong background */
|
|
297
|
+
border: none; /* Or a very light border */
|
|
298
|
+
padding-left: 0; padding-right: 0; /* Remove default container padding if steps are full-width */
|
|
299
|
+
}
|
|
300
|
+
.steps h4 { /* Assuming users use H4 for step titles */
|
|
301
|
+
counter-increment: step-counter;
|
|
302
|
+
position: relative;
|
|
303
|
+
padding-left: 3em; /* Space for number */
|
|
304
|
+
margin-bottom: 0.5em;
|
|
305
|
+
margin-top: 1.5em; /* Space between steps */
|
|
306
|
+
font-size: 1.2em; /* Make step titles prominent */
|
|
307
|
+
}
|
|
308
|
+
.steps h4:first-child {
|
|
309
|
+
margin-top: 0.5em; /* Less top margin for the very first step */
|
|
310
|
+
}
|
|
311
|
+
.steps h4::before {
|
|
312
|
+
content: counter(step-counter);
|
|
313
|
+
position: absolute;
|
|
314
|
+
left: 0;
|
|
315
|
+
top: 50%;
|
|
316
|
+
transform: translateY(-50%);
|
|
317
|
+
display: flex;
|
|
318
|
+
align-items: center;
|
|
319
|
+
justify-content: center;
|
|
320
|
+
width: 2em; /* Larger circle */
|
|
321
|
+
height: 2em;
|
|
322
|
+
border-radius: 50%;
|
|
323
|
+
background-color: var(--link-color);
|
|
324
|
+
color: white;
|
|
325
|
+
font-size: 0.9em; /* Number font size relative to H4 */
|
|
326
|
+
font-weight: bold;
|
|
327
|
+
line-height: 2em; /* Ensure number is centered in circle */
|
|
328
|
+
}
|
|
329
|
+
.steps h4 + * { /* Content immediately after step title */
|
|
330
|
+
margin-left: 3em; /* Align with title text */
|
|
331
|
+
margin-top: 0.5em;
|
|
332
|
+
padding-bottom: 1em; /* Space before next step title or end of container */
|
|
333
|
+
}
|
|
334
|
+
.steps > :last-child { margin-bottom: 0; }
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
/* Footer */
|
|
338
|
+
.page-footer {
|
|
339
|
+
text-align: center;
|
|
340
|
+
padding: 20px 30px;
|
|
341
|
+
margin-top: auto; /* Pushes footer to bottom if content is short */
|
|
342
|
+
border-top: 1px solid var(--border-color);
|
|
343
|
+
font-size: 0.9em;
|
|
344
|
+
color: var(--text-color);
|
|
345
|
+
background-color: var(--sidebar-bg); /* Or a distinct footer background */
|
|
346
|
+
}
|
|
347
|
+
.page-footer a {
|
|
348
|
+
color: var(--link-color);
|
|
349
|
+
text-decoration: none;
|
|
350
|
+
}
|
|
351
|
+
.page-footer a:hover {
|
|
352
|
+
text-decoration: underline;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/* Focus Visible */
|
|
356
|
+
:focus-visible {
|
|
357
|
+
outline: 2px solid var(--link-color);
|
|
358
|
+
outline-offset: 2px;
|
|
359
|
+
/* box-shadow: 0 0 0 4px var(--bg-color), 0 0 0 6px var(--link-color); Optional halo */
|
|
360
|
+
}
|
|
361
|
+
:focus:not(:focus-visible) {
|
|
362
|
+
outline: none;
|
|
363
|
+
}
|
|
364
|
+
.sidebar nav li a:focus-visible {
|
|
365
|
+
background-color: var(--sidebar-link-active-bg);
|
|
366
|
+
outline: 2px solid var(--link-color);
|
|
367
|
+
outline-offset: -2px;
|
|
368
|
+
}
|
|
369
|
+
.theme-toggle-button:focus-visible {
|
|
370
|
+
border-color: var(--link-color);
|
|
371
|
+
box-shadow: 0 0 0 2px var(--link-color);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/* Responsive */
|
|
375
|
+
@media (max-width: 768px) {
|
|
376
|
+
body {
|
|
377
|
+
flex-direction: column;
|
|
378
|
+
}
|
|
379
|
+
.sidebar {
|
|
380
|
+
width: 100%;
|
|
381
|
+
height: auto;
|
|
382
|
+
position: static; /* Static on mobile */
|
|
383
|
+
border-right: none;
|
|
384
|
+
border-bottom: 1px solid var(--border-color);
|
|
385
|
+
}
|
|
386
|
+
.main-content-wrapper {
|
|
387
|
+
margin-left: 0;
|
|
388
|
+
}
|
|
389
|
+
.content-area {
|
|
390
|
+
padding: 15px;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/* Page Navigation at Bottom */
|
|
395
|
+
.page-navigation {
|
|
396
|
+
display: flex;
|
|
397
|
+
justify-content: space-between;
|
|
398
|
+
margin-top: 3rem;
|
|
399
|
+
padding-top: 1.5rem;
|
|
400
|
+
border-top: 1px solid var(--border-color);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
.prev-page,
|
|
404
|
+
.next-page {
|
|
405
|
+
display: flex;
|
|
406
|
+
align-items: center;
|
|
407
|
+
text-decoration: none;
|
|
408
|
+
color: var(--link-color);
|
|
409
|
+
padding: 0.75rem;
|
|
410
|
+
border-radius: 6px;
|
|
411
|
+
transition: background-color 0.2s ease;
|
|
412
|
+
width: 48%;
|
|
413
|
+
max-width: 48%;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
.prev-page:hover,
|
|
417
|
+
.next-page:hover {
|
|
418
|
+
background-color: rgba(0, 0, 0, 0.05);
|
|
419
|
+
text-decoration: none;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
body[data-theme="dark"] .prev-page:hover,
|
|
423
|
+
body[data-theme="dark"] .next-page:hover {
|
|
424
|
+
background-color: rgba(255, 255, 255, 0.05);
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
.prev-page {
|
|
428
|
+
justify-content: flex-start;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
.next-page {
|
|
432
|
+
justify-content: flex-end;
|
|
433
|
+
text-align: right;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
.prev-page-placeholder,
|
|
437
|
+
.next-page-placeholder {
|
|
438
|
+
width: 48%;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
.prev-page span,
|
|
442
|
+
.next-page span {
|
|
443
|
+
display: flex;
|
|
444
|
+
flex-direction: column;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
.prev-page small,
|
|
448
|
+
.next-page small {
|
|
449
|
+
font-size: 0.8rem;
|
|
450
|
+
opacity: 0.8;
|
|
451
|
+
margin-bottom: 0.25rem;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
.prev-page strong,
|
|
455
|
+
.next-page strong {
|
|
456
|
+
font-weight: 500;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
.page-nav-icon {
|
|
460
|
+
width: 1.2rem;
|
|
461
|
+
height: 1.2rem;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
.prev-page .page-nav-icon {
|
|
465
|
+
margin-right: 0.75rem;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
.next-page .page-nav-icon {
|
|
469
|
+
margin-left: 0.75rem;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
/* Footer with Branding */
|
|
473
|
+
.page-footer {
|
|
474
|
+
text-align: center;
|
|
475
|
+
padding: 20px 30px;
|
|
476
|
+
margin-top: auto; /* Pushes footer to bottom if content is short */
|
|
477
|
+
border-top: 1px solid var(--border-color);
|
|
478
|
+
font-size: 0.9em;
|
|
479
|
+
color: var(--text-color);
|
|
480
|
+
background-color: var(--sidebar-bg); /* Or a distinct footer background */
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
.footer-content {
|
|
484
|
+
display: flex;
|
|
485
|
+
justify-content: space-between;
|
|
486
|
+
align-items: center;
|
|
487
|
+
margin: 0 auto;
|
|
488
|
+
width: 100%;
|
|
489
|
+
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
.user-footer {
|
|
493
|
+
text-align: left;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
.branding-footer {
|
|
497
|
+
text-align: right;
|
|
498
|
+
opacity: 0.9;
|
|
499
|
+
font-weight: 500;
|
|
500
|
+
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
.page-footer a {
|
|
504
|
+
color: var(--link-color);
|
|
505
|
+
text-decoration: none;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
.page-footer a:hover {
|
|
509
|
+
text-decoration: underline;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
/* Mobile responsiveness for footer and navigation */
|
|
513
|
+
@media (max-width: 768px) {
|
|
514
|
+
.footer-content {
|
|
515
|
+
flex-direction: column;
|
|
516
|
+
gap: 1rem;
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
.user-footer,
|
|
520
|
+
.branding-footer {
|
|
521
|
+
text-align: center;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
.page-navigation {
|
|
525
|
+
flex-direction: column;
|
|
526
|
+
gap: 1rem;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
.prev-page,
|
|
530
|
+
.next-page,
|
|
531
|
+
.prev-page-placeholder,
|
|
532
|
+
.next-page-placeholder {
|
|
533
|
+
width: 100%;
|
|
534
|
+
max-width: 100%;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
/* Content layout with TOC */
|
|
539
|
+
.content-layout {
|
|
540
|
+
display: flex;
|
|
541
|
+
gap: 2rem;
|
|
542
|
+
width: 100%;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
.main-content {
|
|
546
|
+
flex: 1;
|
|
547
|
+
-webkit-min-logical-width: 0;
|
|
548
|
+
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
/* Hide TOC on mobile */
|
|
552
|
+
@media (max-width: 1024px) {
|
|
553
|
+
.content-layout {
|
|
554
|
+
flex-direction: column;
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
/* Show TOC before content on mobile */
|
|
558
|
+
.content-layout {
|
|
559
|
+
display: flex;
|
|
560
|
+
flex-direction: column-reverse;
|
|
561
|
+
}
|
|
562
|
+
}
|