jekyll-theme-zer0 0.21.2 → 0.22.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 (109) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +54 -0
  3. data/README.md +86 -46
  4. data/_data/authors.yml +12 -3
  5. data/_data/features.yml +1 -1
  6. data/_data/glossary.yml +101 -0
  7. data/_data/navigation/docs.yml +12 -0
  8. data/_data/navigation/home.yml +2 -2
  9. data/_data/navigation/main.yml +2 -8
  10. data/_data/prompts.yml +184 -0
  11. data/_includes/components/author-eeat.html +133 -0
  12. data/_includes/components/cookie-consent.html +9 -9
  13. data/_includes/components/dev-shortcuts.html +36 -27
  14. data/_includes/components/env-detect.html +14 -0
  15. data/_includes/components/env-switcher.html +38 -16
  16. data/_includes/components/halfmoon.html +31 -20
  17. data/_includes/components/info-section.html +4 -3
  18. data/_includes/components/js-cdn.html +8 -15
  19. data/_includes/components/mermaid.html +13 -9
  20. data/_includes/components/powered-by.html +5 -3
  21. data/_includes/content/intro.html +64 -4
  22. data/_includes/content/jsonld-faq.html +47 -0
  23. data/_includes/content/jsonld-software.html +121 -0
  24. data/_includes/content/sitemap.html +2 -2
  25. data/_includes/core/branding.html +9 -7
  26. data/_includes/core/footer.html +12 -9
  27. data/_includes/core/head.html +17 -14
  28. data/_includes/core/header.html +33 -21
  29. data/_includes/navigation/navbar.html +130 -124
  30. data/_includes/navigation/sidebar-left.html +3 -3
  31. data/_includes/navigation/sidebar-right.html +4 -8
  32. data/_includes/search-data.json +1 -2
  33. data/_layouts/landing.html +8 -3
  34. data/_layouts/root.html +4 -4
  35. data/_layouts/sitemap-collection.html +20 -10
  36. data/_sass/core/_docs-layout.scss +756 -0
  37. data/_sass/core/_navbar.scss +522 -69
  38. data/_sass/core/_offcanvas-panels.scss +48 -0
  39. data/_sass/core/_syntax.scss +1 -51
  40. data/_sass/core/_theme.scss +2 -249
  41. data/_sass/core/_variables.scss +1 -54
  42. data/_sass/core/code-copy.scss +6 -6
  43. data/_sass/custom.scss +119 -133
  44. data/_sass/theme/_color-modes.scss +3 -0
  45. data/_sass/theme/_css-variables.scss +29 -0
  46. data/_sass/theme/_wizard-mode.scss +31 -0
  47. data/assets/css/custom.css +5 -120
  48. data/assets/css/main.scss +6 -2
  49. data/assets/css/stats.css +3 -0
  50. data/assets/css/theme-npm-entry.scss +6 -0
  51. data/assets/css/vendor/.gitkeep +0 -0
  52. data/assets/images/authors/bamr87.png +0 -0
  53. data/assets/js/auto-hide-nav.js +71 -20
  54. data/assets/js/color-modes.js +8 -2
  55. data/assets/js/halfmoon.js +8 -2
  56. data/assets/js/myScript.js +4 -12
  57. data/assets/js/navigation.js +174 -19
  58. data/assets/js/search-modal.js +50 -7
  59. data/assets/vendor/bootstrap/css/bootstrap.min.css +5 -0
  60. data/assets/vendor/bootstrap/js/bootstrap.bundle.min.js +6 -0
  61. data/assets/vendor/bootstrap-icons/font/bootstrap-icons.css +2018 -0
  62. data/assets/vendor/bootstrap-icons/font/fonts/bootstrap-icons.woff +0 -0
  63. data/assets/vendor/bootstrap-icons/font/fonts/bootstrap-icons.woff2 +0 -0
  64. data/assets/vendor/font-awesome/css/all.min.css +9 -0
  65. data/assets/vendor/font-awesome/webfonts/fa-brands-400.ttf +0 -0
  66. data/assets/vendor/font-awesome/webfonts/fa-brands-400.woff2 +0 -0
  67. data/assets/vendor/font-awesome/webfonts/fa-regular-400.ttf +0 -0
  68. data/assets/vendor/font-awesome/webfonts/fa-regular-400.woff2 +0 -0
  69. data/assets/vendor/font-awesome/webfonts/fa-solid-900.ttf +0 -0
  70. data/assets/vendor/font-awesome/webfonts/fa-solid-900.woff2 +0 -0
  71. data/assets/vendor/font-awesome/webfonts/fa-v4compatibility.ttf +0 -0
  72. data/assets/vendor/font-awesome/webfonts/fa-v4compatibility.woff2 +0 -0
  73. data/assets/vendor/github-calendar/github-calendar-responsive.css +231 -0
  74. data/assets/vendor/github-calendar/github-calendar.min.js +240 -0
  75. data/assets/vendor/jquery/jquery-3.7.1.min.js +2 -0
  76. data/assets/vendor/mathjax/es5/adaptors/liteDOM.js +1 -0
  77. data/assets/vendor/mathjax/es5/core.js +1 -0
  78. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff +0 -0
  79. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff +0 -0
  80. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff +0 -0
  81. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff +0 -0
  82. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff +0 -0
  83. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff +0 -0
  84. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff +0 -0
  85. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
  86. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff +0 -0
  87. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
  88. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff +0 -0
  89. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff +0 -0
  90. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff +0 -0
  91. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff +0 -0
  92. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff +0 -0
  93. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff +0 -0
  94. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
  95. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
  96. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff +0 -0
  97. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff +0 -0
  98. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff +0 -0
  99. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff +0 -0
  100. data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
  101. data/assets/vendor/mathjax/es5/startup.js +1 -0
  102. data/assets/vendor/mathjax/es5/tex-mml-chtml.js +1 -0
  103. data/assets/vendor/mermaid/mermaid.min.js +2029 -0
  104. data/scripts/bin/build +12 -2
  105. data/scripts/lib/version.sh +41 -0
  106. data/scripts/test/integration/mermaid +1 -1
  107. data/scripts/vendor-install.sh +196 -0
  108. metadata +62 -3
  109. data/_sass/core/_docs.scss +0 -3219
data/_sass/custom.scss CHANGED
@@ -10,6 +10,7 @@
10
10
 
11
11
  // Import navbar styles (extracted from navbar.html)
12
12
  @import "core/navbar";
13
+ @import "core/offcanvas-panels";
13
14
 
14
15
  html, body {
15
16
  max-width: 100%;
@@ -113,7 +114,7 @@ html, body {
113
114
  }
114
115
 
115
116
 
116
- // Sidebar classes consolidated in _sass/core/_docs.scss for consistency
117
+ // Sidebar / docs layout: _sass/core/_docs-layout.scss
117
118
 
118
119
  // ==============================================================================
119
120
  // SIDEBAR & TOC ENHANCEMENTS
@@ -134,12 +135,24 @@ html, body {
134
135
 
135
136
  // Mobile FAB positioning (TOC button above back-to-top)
136
137
  .bd-toc-fab {
137
- // On mobile, ensure proper spacing above back-to-top button
138
+ right: 20px;
139
+ z-index: 1030;
140
+
138
141
  @media (max-width: 991.98px) {
139
142
  bottom: 90px !important; // 20px (back-to-top) + 56px (button height) + 14px (spacing)
140
143
  }
141
144
  }
142
145
 
146
+ .bd-toc-fab .bd-toc-toggle {
147
+ width: 56px;
148
+ height: 56px;
149
+ }
150
+
151
+ // Cookie banner: above fixed navbar (1030), below offcanvas (1045) so drawers cover it
152
+ .cookie-consent-banner {
153
+ z-index: 1036;
154
+ }
155
+
143
156
  // Active TOC link highlighting
144
157
  .bd-toc nav a.active {
145
158
  font-weight: 600;
@@ -180,7 +193,7 @@ html {
180
193
  z-index: 1020; /* Below TOC button (1030) but above other content */
181
194
  border: none; /* Remove borders */
182
195
  outline: none; /* Remove outline */
183
- background-color: $primary; /* Set a background color */
196
+ background-color: var(--bs-primary); /* Match Bootstrap theme primary */
184
197
  color: inherit; /* Text color */
185
198
  opacity: 25%;
186
199
  cursor: pointer; /* Add a mouse pointer on hover */
@@ -220,6 +233,21 @@ img {
220
233
  height: auto;
221
234
  }
222
235
 
236
+ // Navbar logo: global img { max-width: 100% } shrinks it inside tight flex/grid cells on small viewports
237
+ // (Use a.navbar-brand only — div.navbar-brand.site-title should still shrink/truncate.)
238
+ #navbar a.navbar-brand {
239
+ flex-shrink: 0;
240
+ }
241
+ #navbar .navbar-brand img {
242
+ width: 30px;
243
+ height: 30px;
244
+ min-width: 30px;
245
+ min-height: 30px;
246
+ max-width: none;
247
+ object-fit: contain;
248
+ flex-shrink: 0;
249
+ }
250
+
223
251
  // ============================================
224
252
  // NAVBAR - Fixed positioning with auto-hide
225
253
  // ============================================
@@ -234,6 +262,12 @@ img {
234
262
  background-color: var(--bs-body-bg);
235
263
  }
236
264
 
265
+ // Keep the outer Bootstrap navbar shell on one row (nanobar + nav); avoids rare wrap on wide pages
266
+ #navbar > .navbar.navbar-expand-lg {
267
+ flex-wrap: nowrap !important;
268
+ align-items: center;
269
+ }
270
+
237
271
  #navbar .navbar-main {
238
272
  align-items: center;
239
273
  }
@@ -249,6 +283,83 @@ img {
249
283
  gap: 0.25rem;
250
284
  }
251
285
 
286
+ // Desktop (lg+): 3-column grid — [brand/title | main nav | utilities] so nav cannot paint over Search/Settings
287
+ @media (min-width: 992px) {
288
+ #navbar .navbar-main {
289
+ display: grid !important;
290
+ grid-template-columns: auto minmax(0, 1fr) auto;
291
+ align-items: center;
292
+ column-gap: 0.5rem;
293
+ row-gap: 0.25rem;
294
+ flex-wrap: unset !important;
295
+ }
296
+
297
+ #navbar .navbar-main-start {
298
+ grid-column: 1;
299
+ min-width: 0;
300
+ max-width: 100%;
301
+ }
302
+
303
+ #navbar #bdNavbar {
304
+ grid-column: 2;
305
+ width: 100%;
306
+ max-width: 100%;
307
+ min-width: 0;
308
+ }
309
+
310
+ #navbar .navbar-utility-controls {
311
+ grid-column: 3;
312
+ justify-self: end;
313
+ flex-shrink: 1;
314
+ min-width: 0;
315
+ max-width: 100%;
316
+ display: inline-flex;
317
+ flex-wrap: nowrap;
318
+ align-items: center;
319
+ gap: 0.25rem;
320
+ padding-left: 0.25rem;
321
+ }
322
+
323
+ #navbar .navbar-utility-controls .nav-search-button,
324
+ #navbar .navbar-utility-controls .nav-settings-button {
325
+ flex: 0 1 auto;
326
+ min-width: 0;
327
+ padding-left: 0.5rem;
328
+ padding-right: 0.5rem;
329
+ }
330
+
331
+ // Brand + title column yields when the bar is crowded
332
+ #navbar .navbar-brand-group,
333
+ #navbar .site-title,
334
+ #navbar .site-subtitle {
335
+ flex-shrink: 1;
336
+ min-width: 0;
337
+ }
338
+
339
+ #navbar .site-title .site-title-text {
340
+ max-width: min(14rem, 20vw);
341
+ overflow: hidden;
342
+ text-overflow: ellipsis;
343
+ white-space: nowrap;
344
+ vertical-align: bottom;
345
+ }
346
+
347
+ @media (min-width: 1200px) {
348
+ #navbar .site-title .site-title-text {
349
+ max-width: min(20rem, 28vw);
350
+ }
351
+ }
352
+
353
+ #navbar .site-subtitle .site-subtitle-text {
354
+ max-width: min(10rem, 14vw);
355
+ overflow: hidden;
356
+ text-overflow: ellipsis;
357
+ white-space: nowrap;
358
+ display: inline-block;
359
+ vertical-align: bottom;
360
+ }
361
+ }
362
+
252
363
  // Hidden state - slides up out of view
253
364
  // Using higher specificity to override Bootstrap's fixed-top
254
365
  #navbar.navbar-hidden {
@@ -279,18 +390,17 @@ img {
279
390
 
280
391
  #navbar .site-title .nav-link {
281
392
  padding: 0;
393
+ min-height: 2.5rem;
394
+ align-items: center;
282
395
  }
283
396
 
397
+ // Cap width so title doesn’t crowd toggles; full hide only via @container nav-brand-start
284
398
  #navbar .site-title-text {
285
- max-width: 45vw;
399
+ max-width: min(12rem, 38vw);
286
400
  white-space: nowrap;
287
401
  overflow: hidden;
288
402
  text-overflow: ellipsis;
289
- }
290
-
291
- #navbar .navbar-brand img {
292
- width: 28px;
293
- height: 28px;
403
+ vertical-align: middle;
294
404
  }
295
405
 
296
406
  #navbar .navbar-toggler {
@@ -329,130 +439,6 @@ img {
329
439
  border-color: var(--bs-border-color-translucent);
330
440
  }
331
441
 
332
- $enable-cssgrid: true;
333
- $enable-grid-classes: false;
334
-
335
- // #box {
336
- // background:url('data:image/gif;base64,R0lGODlhBgAGAIAAAO7u7t7e3iH5BAAAAAAALAAAAAAGAAYAAAIKhIOXgKGuDIOzAAA7') #eeeff1;
337
- // }
338
-
339
- // body {font-size:12px; background:#ffe;}
340
- // body,
341
- // textarea {text-align:center; font-family:arial;}
342
-
343
- // input {}
344
- // input[type='number'],
345
- // input[type='color'] {width:5em;}
346
- // input[type='number'] {padding:0.25em; text-align:right;}
347
- // select {width:9em; font-size:11px; padding:0.25em 0.2em;}
348
- // option {padding:0.25em 0.2em;}
349
- // textarea {resize:none; padding:2.5em; color:#358; background:#eef2f4; font-size:2em; border:0; width:100%;}
350
-
351
-
352
-
353
- // #set {user-select:none; background:#fff; overflow:hidden;}
354
- // #set table {border-collapse:collapse; padding:2em; font-size:11px; text-transform:uppercase; margin:2em auto;}
355
- // #set th,
356
- // #set td {padding:0.4em 0.5em;}
357
- // #set th {text-align:right; color:#567;}
358
- // #set td {text-align:left;}
359
-
360
-
361
- // /* res beautifier */
362
- // #res {color:#789; padding:2em; text-align:left; font-family:'Lucida Console', Monaco, monospace;}
363
- // #res b {font-weight:normal;}
364
- // #res i {font-style:normal;}
365
- // #res .obj {color:#789;}
366
- // #res .obj b {color:#345; font-weight:bold;}
367
- // #res .key {color:#45a;}
368
- // #res .num {color:#12a;}
369
- // #res .txt {color:#9ab;}
370
- // #res .txt i {color:#384;}
371
- // #res .clr {color:#9ab;}
372
- // #res .clr i {color:#731;}
373
- // #res a {color:#67a;}
374
- // #res a:hover {color:#67e;}
375
-
376
-
377
- // #box {overflow:hidden; position:relative; height:300px; padding:3em;}
378
- // #box svg {display:block; position:absolute; right:50%; bottom:50%; transform:translate( 50%, 50%); cursor:pointer;}
379
- // #box svg {max-width:100%; max-height:100%;}
380
-
381
-
382
- // /* minimized options for small screen */
383
- // .opt {display:block; padding:1em; background:#0ae; color:#fff; text-decoration:none;}
384
- // .opt:hover {background:#0af;}
385
-
386
- // #op2.opt {background:#ea0;}
387
- // #op2.opt:hover {background:#fa0;}
388
-
389
- // #set table,
390
- // #set .legend,
391
- // #set #op2.opt,
392
- // #set.show #op1.opt {display:none;}
393
-
394
- // #set.show table {display:table;}
395
- // #set.show #op2.opt {display:block;}
396
-
397
- // @media (min-width: 620px) {
398
-
399
- // html,
400
- // body,
401
- // #box,
402
- // #set,
403
- // #txt,
404
- // #msg,
405
- // #hnt {display:block; position:absolute; top:0; right:0; left:0; bottom:0;}
406
-
407
- // html,
408
- // body {overflow:hidden;}
409
- // #box {height:auto;}
410
-
411
- // #txt,
412
- // #hnt {height:250px; top:auto; border-top:3px #eee solid;}
413
-
414
- // #set,
415
- // #hnt {width:270px; left:auto;}
416
- // #set table {font-size:10px;}
417
-
418
- // #box,
419
- // #txt {right:270px}
420
-
421
- // #box,
422
- // #set {bottom:250px;}
423
-
424
- // #hnt {overflow:auto;}
425
- // #msg {width:100%; height:100%;}
426
-
427
- // #set {overflow-y:auto;}
428
- // #set .legend {display:block;}
429
- // #set table {display:table;}
430
- // #set .opt {display:none !important;}
431
- // }
432
-
433
- // @media (min-width:900px) {
434
-
435
- // #set,
436
- // #hnt {width:30%}
437
- // #box,
438
- // #txt {right:30%}
439
- // }
440
-
441
- // @media (min-width:1024px) {
442
-
443
- // #set table {font-size:11px;}
444
- // }
445
-
446
- // @media (min-width:1600px) {
447
-
448
- // #set,
449
- // #hnt {width:480px}
450
- // #box,
451
- // #txt {right:480px}
452
- // }
453
-
454
- // .legend {padding:1.5em 0.5em; border-bottom:1px #eee solid;}
455
-
456
442
  .nested-list-group {
457
443
  display: none;
458
444
  }
@@ -0,0 +1,3 @@
1
+ // Barrel: wizard Sass/CSS overrides, then shared --bd-* tokens.
2
+ @import "theme/wizard-mode";
3
+ @import "theme/css-variables";
@@ -0,0 +1,29 @@
1
+ // Docs-layout and light/dark accent tokens (--bd-*). Consumed by CDN Bootstrap + _docs-layout.scss.
2
+ // Wizard palette lives in _wizard-mode.scss.
3
+
4
+ :root,
5
+ [data-bs-theme="light"] {
6
+ --bd-purple: #4c0bce;
7
+ --bd-violet: #712cf9;
8
+ --bd-accent: #ffe484;
9
+ --bd-violet-rgb: 112.520718, 44.062154, 249.437846;
10
+ --bd-accent-rgb: 255, 228, 132;
11
+ --bd-pink-rgb: 214, 51, 132;
12
+ --bd-teal-rgb: 32, 201, 151;
13
+ --bd-violet-bg: var(--bd-violet);
14
+ --bd-toc-color: var(--bd-violet);
15
+ --bd-sidebar-link-bg: rgba(var(--bd-violet-rgb), 0.1);
16
+ --bd-callout-link: 10, 88, 202;
17
+ --bd-callout-code-color: #ab296a;
18
+ --bd-pre-bg: var(--bs-tertiary-bg);
19
+ }
20
+
21
+ [data-bs-theme="dark"] {
22
+ --bd-violet: #9461fb;
23
+ --bd-violet-bg: #712cf9;
24
+ --bd-toc-color: var(--bs-emphasis-color);
25
+ --bd-sidebar-link-bg: rgba(84, 33, 187, 0.5);
26
+ --bd-callout-link: 110, 168, 254;
27
+ --bd-callout-code-color: #e685b5;
28
+ --bd-pre-bg: #1b1f22;
29
+ }
@@ -0,0 +1,31 @@
1
+ // Wizard color mode — Sass-backed overrides for [data-bs-theme="wizard"].
2
+ // Depends on gray/white/blue maps from core/_variables.scss (imported before this file).
3
+
4
+ $blue-400: #073781;
5
+ $blue-500: #073781;
6
+ $blue-600: #346182;
7
+ $blue-700: #346182;
8
+
9
+ [data-bs-theme="wizard"] {
10
+ --bs-body-color: var(--bs-white);
11
+ --bs-body-color-rgb: #{to-rgb($white)};
12
+ --bs-body-bg: var(--bs-blue);
13
+ --bs-body-bg-rgb: #{to-rgb($blue)};
14
+ --bs-tertiary-bg: #{$blue-600};
15
+
16
+ .dropdown-menu {
17
+ --bs-dropdown-bg: #{mix($blue-500, $blue-600)};
18
+ --bs-dropdown-link-active-bg: #{$blue-700};
19
+ }
20
+
21
+ .btn-secondary {
22
+ --bs-btn-bg: #{mix($gray-600, $blue-400, 0.5)};
23
+ --bs-btn-border-color: #{rgba($white, 0.25)};
24
+ --bs-btn-hover-bg: #{darken(mix($gray-600, $blue-400, 0.5), 5%)};
25
+ --bs-btn-hover-border-color: #{rgba($white, 0.25)};
26
+ --bs-btn-active-bg: #{darken(mix($gray-600, $blue-400, 0.5), 10%)};
27
+ --bs-btn-active-border-color: #{rgba($white, 0.5)};
28
+ --bs-btn-focus-border-color: #{rgba($white, 0.5)};
29
+ --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(255, 255, 255, 0.2);
30
+ }
31
+ }
@@ -1,120 +1,5 @@
1
- -------------------------------------------------------------------------------------------------------------------
2
- /* Customize theme
3
- /* ------------------------------------------------------------------------------------------------------------------- */
4
-
5
- /* Remove padding so particles fill screen */
6
- .masthead {
7
- padding-top: 0rem;
8
- padding-bottom: 0rem;
9
- }
10
-
11
- /* Add background and shadow to navbar when scrolling */
12
- #mainNav.navbar-shrink {
13
- background-color: white;
14
- box-shadow: 0px 0px 30px rgba(44, 62, 80, 0.5);
15
- }
16
-
17
- /* Set navbar brand color */
18
- #mainNav .navbar-brand {
19
- color: #1abc9c;
20
- }
21
-
22
- /* Underline navbar brand on hover */
23
- #mainNav .navbar-brand:hover {
24
- text-decoration: underline;
25
- }
26
-
27
- /* Set navbar link color */
28
- #mainNav .navbar-nav li.nav-item a.nav-link {
29
- color: #2c3e50;
30
- }
31
-
32
- #mainNav .navbar-nav li.nav-item a.nav-link:active, #mainNav .navbar-nav li.nav-item a.nav-link:focus {
33
- color: #2c3e50;
34
- }
35
-
36
- /* Set navbar link color and underline on hover */
37
- #mainNav .navbar-nav li.nav-item a.nav-link:hover {
38
- color: #1abc9c;
39
- border-bottom: 3px solid;
40
- }
41
-
42
- #mainNav .navbar-nav li.nav-item a.nav-link.active {
43
- color: #1abc9c;
44
- border-bottom: 3px solid;
45
- background: white;
46
- }
47
-
48
- @media (min-width: 992px) {
49
- #mainNav .navbar-nav > li.nav-item > a.nav-link.active:active, #mainNav .navbar-nav > li.nav-item > a.nav-link.active:focus, #mainNav .navbar-nav > li.nav-item > a.nav-link.active:hover {
50
- color: #1abc9c;
51
- border-bottom: 3px solid;
52
- background: white;
53
- }
54
- }
55
-
56
- /* Increase top margin of divider line to align with icon */
57
- .divider-custom-line {
58
- margin-top: 1.75rem;
59
- }
60
-
61
- /* Increase icon size in social buttons */
62
- .btn-social {
63
- font-size: 1.5rem;
64
- }
65
-
66
- /* ------------------------------------------------------------------------------------------------------------------- */
67
- /* Add new components
68
- /* ------------------------------------------------------------------------------------------------------------------- */
69
-
70
- /* Add divider-primary class to set dividers to primary color */
71
- .divider-custom.divider-primary .divider-custom-line {
72
- background-color: #1abc9c;
73
- }
74
-
75
- .divider-custom.divider-primary .divider-custom-icon {
76
- color: #1abc9c !important;
77
- }
78
-
79
- /* Center text landing over previous element */
80
- #textlanding {
81
- position: absolute;
82
- top: 50%;
83
- right: 50%;
84
- transform: translate(50%,-50%);
85
- }
86
-
87
- /* Move arrow near bottom of section */
88
- #arrowlanding {
89
- position: absolute;
90
- top: 95%;
91
- right: 50%;
92
- transform: translate(50%,-50%);
93
- }
94
-
95
- /* Set arrow color */
96
- #arrowlanding a {
97
- color: #2c3e50;
98
- }
99
-
100
- /* Set arrow color on hover */
101
- #arrowlanding a:hover {
102
- color: #1abc9c;
103
- }
104
-
105
- /* Ensure particles span entire section */
106
- #particles-js {
107
- width: 100%;
108
- /* height: 100%; */
109
- /* background-color: white; */
110
- background-image: url('');
111
- background-size: cover;
112
- /* background-position: 50% 50%; */
113
- background-repeat: no-repeat;
114
- }
115
-
116
-
117
- .nanobar .bar {
118
- margin-top: 56px;
119
- background: #1cc927;
120
- }
1
+ /*
2
+ * Legacy asset path — not used by the current theme.
3
+ * Custom styles: _sass/custom.scss (compiled into assets/css/main.css), or optional user-overrides.css.
4
+ * Kept so older builds or cached HTML that still link here do not 404.
5
+ */
data/assets/css/main.scss CHANGED
@@ -5,10 +5,14 @@
5
5
 
6
6
  @charset "utf-8";
7
7
 
8
- // Styling Variables
8
+ // Theme layer on top of bundled Bootstrap CSS (assets/vendor/bootstrap/css/bootstrap.min.css in head.html).
9
+ // Advanced: npm run css:bootstrap can emit a custom Bootstrap build; swap the head <link> — never load two full Bootstraps.
10
+
11
+ // Design tokens + theme (CSS variables / wizard mode)
9
12
  @import "core/variables";
10
- @import "core/docs";
11
13
  @import "core/theme";
14
+ // Bootstrap-docs-style layout (trimmed; was ~3.2k-line vendor snapshot)
15
+ @import "core/docs-layout";
12
16
 
13
17
  // Bootstrap Styles
14
18
  // @import "bootstrap.scss";
data/assets/css/stats.css CHANGED
@@ -4,6 +4,9 @@
4
4
  ===================================================================
5
5
 
6
6
  File: stats.css
7
+ Loaded only when `page.layout == 'stats'` (_includes/core/head.html).
8
+ Kept separate so dashboard CSS is not bundled into every page’s main.css.
9
+
7
10
  Purpose: Custom styles for the statistics dashboard that cannot be
8
11
  achieved with Bootstrap 5 utility classes alone.
9
12
 
@@ -0,0 +1,6 @@
1
+ // Optional npm build: compiles Bootstrap from node_modules (same major as CDN in head.html).
2
+ // Run from repo root: npm install && npm run css:bootstrap
3
+ // Output: assets/css/vendor/bootstrap-from-npm.css
4
+ // To use: point the Bootstrap <link> in _includes/core/head.html at that file instead of jsDelivr.
5
+
6
+ @import "bootstrap/scss/bootstrap";
File without changes
Binary file