jekyll-theme-zer0 1.28.0 → 1.29.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 (83) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +430 -13
  3. data/_data/backlog.yml +356 -2
  4. data/_data/consumers.yml +109 -4
  5. data/_data/features.yml +157 -0
  6. data/_data/i18n/fr.yml +12 -7
  7. data/_data/i18n/manifest.yml +39 -12
  8. data/_data/ingredient_densities.yml +122 -0
  9. data/_data/navigation/main.yml +16 -0
  10. data/_data/recipe_courses.yml +64 -0
  11. data/_data/theme-manifest.yml +68 -40
  12. data/_data/ui-text.yml +8 -0
  13. data/_includes/README.md +15 -1
  14. data/_includes/components/background-customizer.html +2 -2
  15. data/_includes/components/cookie-consent.html +4 -4
  16. data/_includes/components/info-section.html +8 -3
  17. data/_includes/components/language-toggle.html +168 -21
  18. data/_includes/components/page-views-init.html +55 -0
  19. data/_includes/components/page-views.html +33 -0
  20. data/_includes/components/recipe-card.html +67 -0
  21. data/_includes/components/recipe-duration.html +50 -0
  22. data/_includes/components/recipe-grams.html +58 -0
  23. data/_includes/components/recipe-index.html +96 -0
  24. data/_includes/components/recipe-ingredients.html +90 -0
  25. data/_includes/components/recipe-meta.html +96 -0
  26. data/_includes/components/recipe-nutrition.html +57 -0
  27. data/_includes/components/recipe-qty.html +73 -0
  28. data/_includes/components/recipe-ratio.html +151 -0
  29. data/_includes/components/recipe-scaler.html +73 -0
  30. data/_includes/components/recipe-steps.html +86 -0
  31. data/_includes/components/recipe-temp.html +45 -0
  32. data/_includes/components/search-modal.html +2 -2
  33. data/_includes/components/shortcuts-modal.html +3 -0
  34. data/_includes/components/theme-info.html +8 -1
  35. data/_includes/content/jsonld-software.html +22 -3
  36. data/_includes/core/footer.html +18 -16
  37. data/_includes/core/head.html +12 -0
  38. data/_includes/core/header.html +7 -4
  39. data/_includes/navigation/section-sidebar.html +93 -11
  40. data/_includes/navigation/sidebar-left.html +2 -1
  41. data/_includes/navigation/sidebar-right.html +2 -1
  42. data/_includes/setup/wizard.html +173 -86
  43. data/_includes/stats/stats-metrics.html +2 -2
  44. data/_layouts/README.md +2 -0
  45. data/_layouts/admin.html +2 -2
  46. data/_layouts/article.html +5 -0
  47. data/_layouts/cookbook.html +88 -0
  48. data/_layouts/default.html +4 -4
  49. data/_layouts/recipe.html +274 -0
  50. data/_layouts/root.html +22 -3
  51. data/_layouts/section.html +39 -10
  52. data/_sass/components/_callout.scss +1 -1
  53. data/_sass/components/_footer.scss +37 -1
  54. data/_sass/components/_page-views.scss +36 -0
  55. data/_sass/components/_recipe.scss +506 -0
  56. data/_sass/components/_setup-wizard.scss +235 -0
  57. data/_sass/components/_ui-enhancements.scss +6 -6
  58. data/_sass/core/_navbar.scss +250 -15
  59. data/_sass/layouts/_landing.scss +2 -2
  60. data/_sass/tokens/_color.scss +6 -0
  61. data/_sass/tokens/_index.scss +2 -0
  62. data/_sass/tokens/_radius.scss +21 -0
  63. data/_sass/tokens/_typography.scss +4 -0
  64. data/_sass/utilities/_focus.scss +14 -0
  65. data/assets/css/main.scss +3 -0
  66. data/assets/js/modules/navigation/navbar.js +55 -0
  67. data/assets/js/page-views.js +372 -0
  68. data/assets/js/recipe-scaler.js +501 -0
  69. data/assets/js/search-modal.js +10 -0
  70. data/assets/js/setup-wizard.js +322 -20
  71. data/scripts/README.md +29 -0
  72. data/scripts/bin/audit-consumer +39 -7
  73. data/scripts/bin/giscus-discussions +213 -14
  74. data/scripts/bin/manifest +35 -12
  75. data/scripts/ci/agent_review_result.py +164 -0
  76. data/scripts/ci/test_agent_review_result.py +172 -0
  77. data/scripts/design-system-check.rb +170 -0
  78. data/scripts/lib/audit.sh +42 -2
  79. data/scripts/lint-liquid-raw.rb +137 -0
  80. data/scripts/test/lib/run_tests.sh +2 -1
  81. data/scripts/test/lib/test_agent_review_result.sh +27 -0
  82. data/scripts/translate.rb +71 -15
  83. metadata +31 -2
@@ -3,8 +3,8 @@
3
3
  # Regenerated automatically during each release (scripts/bin/release).
4
4
  # Consumers use this file via scripts/bin/audit-consumer to detect drift.
5
5
 
6
- version: "1.28.0"
7
- generated_at: "2026-08-09T22:41:08Z"
6
+ version: "1.29.0"
7
+ generated_at: "2026-09-01T21:54:58Z"
8
8
 
9
9
  # Directories owned by this theme. A consumer file in any of these paths
10
10
  # that is not declared in the consumer's .theme-overrides.yml is flagged
@@ -23,12 +23,15 @@ theme_data_paths:
23
23
  - _data/navigation
24
24
  - _data/ui-text.yml
25
25
 
26
- # Plugin files that consumers using remote_theme MUST vendor locally.
27
- # GitHub Pages does not load plugins from a remote_theme source.
26
+ # Plugin files a consumer MUST vendor locally. Empty by design: GitHub Pages
27
+ # builds in safe mode and loads no local plugins at all, so nothing the theme
28
+ # ships is mandatory for a stock remote_theme consumer.
28
29
  required_plugin_paths:
29
- - _plugins/obsidian_links.rb
30
- # Optional plugins consumers can vendor for enhanced functionality.
30
+ []
31
+ # Optional plugins consumers can vendor for enhanced functionality. These run
32
+ # only on self-built (vanilla Jekyll) sites, never on default GitHub Pages.
31
33
  optional_plugin_paths:
34
+ - _plugins/obsidian_links.rb
32
35
  - _plugins/admin_page_urls.rb
33
36
  - _plugins/content_statistics_generator.rb
34
37
  - _plugins/theme_version.rb
@@ -56,24 +59,26 @@ config_schema:
56
59
  # Per-file SHA-256 checksums for every file in themable_paths.
57
60
  file_checksums:
58
61
  _layouts/404.html: "00fc8864c9042e4a6a5b2b1b7889ffeaa27cb70ae5a1f88dacfc1df8ae8731ba"
59
- _layouts/admin.html: "e837d469d19290eed286925a6dcaf1ff78d7891bb239b14693710aa7072ea47a"
60
- _layouts/article.html: "21276edf592a7a4d58034ae755e0359b97176e16cf38712882b75c071e5301aa"
62
+ _layouts/admin.html: "a2654266ca154c61f343f5cf0a919e3c4e37517df97690e979776f96bd05e385"
63
+ _layouts/article.html: "91dbd5151886b9e5ea5edd9cd304d186fe00e6a5eaff5580588466a76112dc02"
61
64
  _layouts/author.html: "1bfff350b4c5fd53c63018a2a22015e398342cc456ff0075e9fcbc78d44d701c"
62
65
  _layouts/authors.html: "a71f21347f091f9dee3d6a3fe23ee2497608ce2c3aea460a563f1e1c0c4ca681"
63
66
  _layouts/book-abc.html: "4db8ba66ad8e29ad3e3f4ef5c6458a68ad442cb017854d5e20630bccb89e0895"
64
67
  _layouts/book-story.html: "8322452b691d22f1afc8f9540b37bb06736e9500ed0bf905cc6d825577ab3199"
65
68
  _layouts/book.html: "a289086003afd5646d4d7ae5833fe649898409d4c914981f6ddec45e6ca7364e"
66
69
  _layouts/collection.html: "65971e63500ce180418236fa9a37328bb4db704434bffd8fbcdfcce5aa548260"
67
- _layouts/default.html: "b6650cc50005af6bb08efcd803da1b892da51c3fe08db4d48065d40bf9ebf328"
70
+ _layouts/cookbook.html: "39c478e3437014df3e14db6d27388a3fb8484f689d0acd32470dda6ec690e517"
71
+ _layouts/default.html: "5cceebf207cf2be351f07b4a7764d18a89825b57bdd8d05a1af8cdd3a19f2bd9"
68
72
  _layouts/home.html: "a701a158fad1fa8bd8adcf51dd36fd6bc0d045662842743c7c3cde2e838d29a9"
69
73
  _layouts/index.html: "a1d426a155fd4c29520a5ede0cb2c83f283c0f34b491db104b1036ce55af3b20"
70
74
  _layouts/landing.html: "d69e071a9fe2fedfdd3762dfed8325596802db5d3fbec8a0ab9c78b6e4933377"
71
75
  _layouts/news.html: "1d6e7febae8db34bd57c40c51a698f51f688c66dc691bdcf1be24f8535cc3cf9"
72
76
  _layouts/note.html: "586167196285084935563ae2b427fa54c6a3f79da3dd6ebfaf0ee0b977cf834c"
73
77
  _layouts/notebook.html: "f83e7caa17b30c7a53ac3827baf6db13d7e3520814faf94f1084070d3138aff9"
74
- _layouts/root.html: "3200778688f3d12be75382f55c20d67fccb560b6314218b0e1b0caa1504b08cb"
78
+ _layouts/recipe.html: "679e86fefe9ebfbf3dec7ef9def72b3bebfa81bebe0c38025e64f93bbc0f2d9b"
79
+ _layouts/root.html: "f8cb459257588d9a8a5fb49ac2c62e2675c682c90029f31afb7295bcc0d978f6"
75
80
  _layouts/search.html: "b0b981d3233cab6f1ffec90c81a1340d251bd95a58bf2363d85bab5efe20ed95"
76
- _layouts/section.html: "9918bbef0a3055797a8d5c221246d4dfcc46a60d1b175094ea908cd6ec4ff8c6"
81
+ _layouts/section.html: "9fcde90c93a44a30c0cd61111e698b2af5b5b455fe18448492e08e1213983e9b"
77
82
  _layouts/setup.html: "9559bdc40dabee07fc80571b8d09803977f904b0ce89da9d02cd2d2026b5557e"
78
83
  _layouts/sitemap-collection.html: "2e4b57c87e1fb946c1e661baeff8f36ee8cb8c5419f408ab082858133a176aa0"
79
84
  _layouts/stats.html: "f1f3c2449f37178913c1ab49ac9e7c400914cd503df9aeffd266a661c37b4d06"
@@ -92,7 +97,7 @@ file_checksums:
92
97
  _includes/components/author-bio.html: "33acc281da83729583bdc3d09c9a19dff4ecb95003b0afd8e5b8fc734778be8b"
93
98
  _includes/components/author-card.html: "4af7ff1b401eac9279819b6c8e1ad92d868045f3eb997145af7c8e283d711add"
94
99
  _includes/components/author-eeat.html: "7e14a1c18575ee4a18781e2533bef01e6f473ed23b062aab820eb91a947e36c1"
95
- _includes/components/background-customizer.html: "8927a8753780c769b800d8d710f26546a658106288319adb41599201a2af3d37"
100
+ _includes/components/background-customizer.html: "4270087ea56145bf6e03cc2249c5d1bf7880213159529201497ec771037f0be4"
96
101
  _includes/components/background-settings.html: "c9a55c9c3c67096ecd9dbbde48b5b893cd57ea1d2dedae9b79a7ebdd568cf7ff"
97
102
  _includes/components/book-card.html: "6b746548a9aa14de9e575ffc4e8ae874db4bb94e8e8064716d4953f26d1a4fef"
98
103
  _includes/components/book-nav.html: "9a6a85bbca4b16a7f50e50b4ec74d35b955f2095c4b56e714842041d17e92247"
@@ -105,7 +110,7 @@ file_checksums:
105
110
  _includes/components/component-showcase.html: "94a40283c822b3e06394a580b5c6a2dc3e51c3c4b9fa9447d1822d6ca5850efb"
106
111
  _includes/components/config-editor.html: "1c665a7a0464d56342f2bb3e62380917294700cf927368f926d0f405eb37989b"
107
112
  _includes/components/config-viewer.html: "cda236f25c2779bbeefec0c3899f53c51df9277787cf3d6a00d332592e706795"
108
- _includes/components/cookie-consent.html: "a5367898a035199023d84ca8f9ce7c0e6d0b57b46b59cd16f843eaf02fdc142b"
113
+ _includes/components/cookie-consent.html: "4cc72f191b88114ca3d4cb6eef6529c53fc25f057b9fbf5b23b692fc0d9ea586"
109
114
  _includes/components/cta-button.html: "5fcd983c25d3d6fcf2528bbd63708bbe80e30e53da108b1bea47f1ce5ea7f29d"
110
115
  _includes/components/data-card.html: "c46604f61bffab476bb943f4a631320077cb47b6a58a12e14aea7bc5118f80ac"
111
116
  _includes/components/dev-shortcuts.html: "a55f5e476654e9d4de5f87478cc2f8deb6ed988bfcb918df360dfd9e1bfa45b6"
@@ -114,32 +119,46 @@ file_checksums:
114
119
  _includes/components/env-switcher.html: "5533426321368720c064fa4613057dc0f88f1cf630ef905913f229b4c4a97fe8"
115
120
  _includes/components/feature-card.html: "6693e9db814f05e0df1da9b052f57ab5d5dc8d96c03b6d9c1185c24992dba469"
116
121
  _includes/components/halfmoon.html: "8cacbcfefb85dc1cc6adffc0f25aaf077a9c52a6e7d969eacd4cc98aaef3e0f3"
117
- _includes/components/info-section.html: "04365d86db2a32d1b6280541abdfb6338e541cbb5fa13cd6d635a9784a370fa8"
122
+ _includes/components/info-section.html: "63290133b601b6f240f009c18c970306e28e29c07cd57c8e02a384569becfb3b"
118
123
  _includes/components/js-cdn.html: "e76d55615d1c88810c743cde673982daa5ed2aeaf24e8d0193e3a17914a42bec"
119
- _includes/components/language-toggle.html: "1460741c9f3253a64625d246b65c797e7651eb822e59885255cfd0650405b927"
124
+ _includes/components/language-toggle.html: "67b42b65dd120e4d0f4581003568e369bcbf42dc251ee7db2b6188593c151f33"
120
125
  _includes/components/mermaid.html: "c95ddd0da6e839487d12d0b7ea823e6c689a73e3ddf908b556c4dc34401fc935"
121
126
  _includes/components/nanobar.html: "458f04ee7b5ee7b3766bcd3ca9b20680f8523a27bd7ec20bf1fd4fc037fd04ef"
122
127
  _includes/components/nav-editor.html: "8eb74b46990378a361a458b515b5c582c8e4493af8311d23cca3905f2d5665bc"
123
128
  _includes/components/nav-export.html: "744e26d974d7e4c6069298b244bd538c581c78414cdd95446576d352ded45513"
124
129
  _includes/components/nav-overview.html: "9aca2af20d754f8e80dbe10f8bc90713dbe4106f61d3a31cd1add73bc7d23807"
125
130
  _includes/components/page-feedback.html: "22444a5fb65dfbd1536f5b3aa1da5169a3cb6e3bad1b6eec7aa3e59f0988b186"
131
+ _includes/components/page-views-init.html: "a4199b3c57c1d5b9c0952f6aded51526d364c6f5a4eb7652e9f25d86e0cbbecc"
132
+ _includes/components/page-views.html: "b5654482c7ecffc95f9d0afad1b707a402e0e82f8ee474d39c108894175b7d9b"
126
133
  _includes/components/post-card.html: "24575b48da4b5d17b5b62c3715e02ed69601f020c515950bb3fe6fdb82287d74"
127
134
  _includes/components/post-type-badge.html: "9519d042ce31a6ad599e41d8fee07cdebdf62a3392b4dba72b94f9d9137aebd5"
128
135
  _includes/components/powered-by.html: "eb9b4d86ba677ca3ceab920f912e91304e60ab3b5f9e0c07e19403f3ae440989"
129
136
  _includes/components/preview-image.html: "42084f470e56b0857023e3505f1e954a8dfb128c76f049963ffbb681943b919d"
130
137
  _includes/components/quick-index.html: "4c2a42475f7d2404c401534dac8da63cd7746a96a85b02edb771a4bbf28254a7"
131
- _includes/components/search-modal.html: "ca79f6559e9542a8bed3ccccaf341f3bcda604eb88b6570ef29dae993fb4a694"
138
+ _includes/components/recipe-card.html: "c5600da464577d76baa377bf23c56fd13bca08c5455d22018301e9b9d07318cb"
139
+ _includes/components/recipe-duration.html: "623709e34d29df7dbdc8226e1fa6f5c079048e1c8fe1c7d7e94a51ee5b5fb730"
140
+ _includes/components/recipe-grams.html: "f551531f8c60da581e8a4c2cdea7470ad898f1966559b489fce7d6090dbc2139"
141
+ _includes/components/recipe-index.html: "45ce2e38b84d83059986b2dc826c59f13226d2c7550c3de824ee75959b1308d4"
142
+ _includes/components/recipe-ingredients.html: "ed6e468a5731e2646ac332fcce32aa70ea2cca4900a06227a731429019826ade"
143
+ _includes/components/recipe-meta.html: "d91a46f8057b9a3604af6020ba1277d8aaa28be594b466f2766f59e50d92411b"
144
+ _includes/components/recipe-nutrition.html: "59f41ce40c5cf1960e941b836682357e41c2dc7953e1b0ac0e908693bbf22d1b"
145
+ _includes/components/recipe-qty.html: "d9a381ac1f3e329aa5501c11e749e07a9c9eb9f030b186ef59fd76aa07eb16d1"
146
+ _includes/components/recipe-ratio.html: "f27dbc954bfbb2187e159f3eabf5a0233f8e8873070769d7b80d3cc1ca347ccb"
147
+ _includes/components/recipe-scaler.html: "ec10a3d47505c2549ca367b8c05a701e6513832c1f88a4dbcd9c6773b65fe478"
148
+ _includes/components/recipe-steps.html: "6af94900ad22da42f59356a369df7464f2e9bf60a444a52b95e17ce77b49e890"
149
+ _includes/components/recipe-temp.html: "88366b16dff3fa1c7136f13ffa9ceb35c17feacf82e5f524cc116386f2436e9f"
150
+ _includes/components/search-modal.html: "dbfb983e2cd05110c32fb1c5901636aa1815ea43371f0db39feb37ca7a12eb27"
132
151
  _includes/components/searchbar.html: "43d1ad146c74391e72bede455918661df2da401af9111a17359f8c1093229a0c"
133
152
  _includes/components/section.html: "36e8124186614fa7727c6f1b6973227eb01a76cf0d71fd45855227d6d972b73e"
134
153
  _includes/components/setup-banner-inner.html: "c677fe294899147eb6076900e07db84317bd908858dcef99c448feaab98d622b"
135
154
  _includes/components/setup-banner.html: "b6b5ecb784a1ee4cf269e513e9df7eedc34ebe9199d07647992a45ffb875eb44"
136
155
  _includes/components/setup-check.html: "41f7cd13bb4b4f5bca6dd716c6d08f6e34f201fcd4e82ce2887d3d0fd84947be"
137
- _includes/components/shortcuts-modal.html: "fe8cba2d70d3d2eff020832c78aa5e8d70c9764c25d708df9c1072b0bbbc2254"
156
+ _includes/components/shortcuts-modal.html: "0156dbafc0670c9d3b7ced7b9fbb42fb6c8947e0fc3b6efeb065242bd2a36084"
138
157
  _includes/components/svg-background.html: "261fe1b1551cee1aaf81a449abc5f271320a90530a43e7f01a1b8601c9c819e0"
139
158
  _includes/components/svg.html: "79d4ffbd9fd721f019fe0758c2cef54912599a19ec4ee794ccd7ec46e26c7e4d"
140
159
  _includes/components/theme-controls-bar.html: "53fe86978d1c9a13853fca0502c356b559640f67e11334fe27b180a6fd31d425"
141
160
  _includes/components/theme-customizer.html: "aa614ea01b81c949324b68c0360943c568f4991137b2dfffe4a33066a584c882"
142
- _includes/components/theme-info.html: "03a9e03178b62b17c16bf6b057a13871368b9dabca4e6aed48fcb10ed0c0a581"
161
+ _includes/components/theme-info.html: "48b8f003fdd705927e06ac444184bf07e21c8be33b7a58603d06edf2e72bc84a"
143
162
  _includes/components/theme-preview-gallery.html: "51353bcaa604ad50181c82dc11cd2c136a9c47b9735a52e0a462647acb8c2d64"
144
163
  _includes/components/translation-notice.html: "01e5d23801d454641b49f1a1efe83cc09089decdb61da14045f158f1b097e819"
145
164
  _includes/components/zer0-env-var.html: "d11f3a578319f48f763b0e8639230e71b9a6e9301453c73c9907814f086fc03e"
@@ -147,7 +166,7 @@ file_checksums:
147
166
  _includes/content/giscus.html: "8f9d3e8a681ee5de687d1d6335f98993c8d3f5d5e1d33ed0b4cc891c8ae51188"
148
167
  _includes/content/intro.html: "71c789c687e306c6088ccc69c4206abd54f2e171af921025967c344e905cd30b"
149
168
  _includes/content/jsonld-faq.html: "4f8c931bdb127a3c8a3b526d4109399aca9b52eb49118236aa5a2eab5103b099"
150
- _includes/content/jsonld-software.html: "6806a9338ddbf45f8448b8ac5e45f90443a96c12ef0c9c7b96ed5ea5f85eb5fd"
169
+ _includes/content/jsonld-software.html: "672d7fb267018143bc4e773202d2afc9501fc19c7607a1c7758e4f99f0b075e3"
151
170
  _includes/content/seo.html: "7e99a746b0be9309051c736c4d22cae708d7ec120daf71fd9a7843195ef651f2"
152
171
  _includes/content/sitemap.html: "5fba76f1438c7299f7d1f3a69fa4a4b8cb0824b0cb7edda9ce2bfac40b65ae45"
153
172
  _includes/content/toc.html: "30997de1adfe5bfc8b570a048aa3957277fe1e8c79c7758c152199f61c16862e"
@@ -157,9 +176,9 @@ file_checksums:
157
176
  _includes/core/console-capture.html: "63c53e38e2107742bff5d41bf52d10da04bb0ff5a928cb755e55d9d13959cc87"
158
177
  _includes/core/favicon.html: "fd848118fc7d0db9aa707cf58025ee1fcc47fa068adfe8d9976f25a1add55c4a"
159
178
  _includes/core/footer-fabs.html: "19e1b7e7ac0ef1783587a30e64851a2293b3a8c91fdf7a4dacfbbec30d65d976"
160
- _includes/core/footer.html: "db5c09adaac53caef401e4707e4bca07321a5a1d183d3f56ab00dcf4ee848679"
161
- _includes/core/head.html: "434b11c449b577990e332f0eed605a13c34092db69283f9db1073b72e1ffac8c"
162
- _includes/core/header.html: "15966aab446b66aaa4748ff5668f61414bf4083b93bdc3664c2559d4f387787b"
179
+ _includes/core/footer.html: "facd3053028db2590b334498224d9fdfd4088420fce8f2c2b3fb907634917f19"
180
+ _includes/core/head.html: "9f7388aafac5099b5db959f522feda06875d9b4a1349ffd5cb54b520232f3beb"
181
+ _includes/core/header.html: "eb492648243831ea0084c48a14755f26b8b7ccbb181018b32297d95cf755bbb9"
163
182
  _includes/core/hreflang.html: "876c44ae392aace73680fb042b8cf7d2d1c2b3143dc755c4dd4c2eb5091356d1"
164
183
  _includes/core/i18n.html: "e856ab288f48a5f5f71941a8f47f7dde538deb64d513b57bdd7f4c1b1b2cd6b0"
165
184
  _includes/core/tokens-inline.html: "a406ea837bbb14437c674c9c73fc1c458863e66fdb3f44309aa2feeab9dfb83a"
@@ -178,44 +197,47 @@ file_checksums:
178
197
  _includes/navigation/nav_list.html: "3450b282840fb5a82e0ab01d636e3b38e0bdbcc4233cca3e2f2a80fc7c71e3c5"
179
198
  _includes/navigation/navbar-mobile-quicklinks.html: "a2c23bbc41f8b27eae1a869893f1e7ecf881f12e34164ab7f8dc4a178011a45e"
180
199
  _includes/navigation/navbar.html: "4dc35176959d6691a34419055eae761a987ae83463e7d695fbde636c7cc011dc"
181
- _includes/navigation/section-sidebar.html: "f07d923851ac46de51f54fa630a3ae04c828808809af3d9bc4b0372a19fb2006"
200
+ _includes/navigation/section-sidebar.html: "71f4b47a28d143f6133afb31a6d7cab2363830674565d36da8cedd3e8d3744ca"
182
201
  _includes/navigation/sidebar-categories.html: "42217519bc109e030b8f6e2578783efbc13838176e0eeba7cc1450641eb2f641"
183
202
  _includes/navigation/sidebar-config.html: "ceaa630dc996632db21a19959e357e8ce9462214d50815985e2fa0fd08c62317"
184
203
  _includes/navigation/sidebar-folders.html: "d6c84e0c62293790efdfb82db4765b113ad332938dba3167d52def12a3d9c0e2"
185
- _includes/navigation/sidebar-left.html: "f0cc880dd2e9618e445c518bd7b017a52b14716fa2f7ce94b0d179b9d2aab85d"
204
+ _includes/navigation/sidebar-left.html: "31b979b0c88941aefb5cdd9c0270fbec3f6defab96730258b26dd926fd7d9336"
186
205
  _includes/navigation/sidebar-nav.html: "82219b4dab2877b92e9b408d6977a71c992171ab4858058108cc330ab7f709d6"
187
206
  _includes/navigation/sidebar-pagetree.html: "f99ff90cf55a745c5b0a1e7fa7d2987e2eb010dd32721c9eac02792638f4b5ab"
188
- _includes/navigation/sidebar-right.html: "bb45a7d0ca8f2e3b20a9d3fe73b21b8c97143bc24316ce67a79c2ea7a7d53ad9"
207
+ _includes/navigation/sidebar-right.html: "cc284b9ec0533b2fbb76fc7dc5fd461f8aa708ce16d63d9f60c2ac52403e8388"
189
208
  _includes/navigation/toc-fab.html: "be18ae16f8edf50aaaa84aada225aa7baf1057788de2ec9c0c39d6268030603b"
190
209
  _includes/navigation/unified-drawer.html: "199ff796377d540bdb58155b73d5c32fb0c225af71d4a72e56bddd7cfa777c5b"
191
210
  _includes/obsidian/full-graph.html: "1ec7fa4813518664c581f124deae5931f9d7691d5599c841cafa38bcff3565cf"
192
211
  _includes/search-data.json: "1824d7a8ed778cdab23c502098cfce7dc687c18cede989294dbc989bfb15187e"
193
- _includes/setup/wizard.html: "12ae6e65401422b3bfa20659f3779a1c82de273f9e1adb5bcb62f521c4f908c7"
212
+ _includes/setup/wizard.html: "ba6cf0d490895270e1b2a08fc564e91ed3e2a4c51baa9ac79ff9a6f1f8d703ec"
194
213
  _includes/stats/stats-categories.html: "444a6f241a95b750310eaf076b9da4e03a1d637c72f6ed2a5dcc83791ca2def6"
195
214
  _includes/stats/stats-header.html: "9f5f6b83443ad9c649e2004cd998e4729f57f3ca726ee88d0c4ae10b9a2d6319"
196
- _includes/stats/stats-metrics.html: "4f594994a6177cd545f6531159be746390a3a62f065d03401d65260104711989"
215
+ _includes/stats/stats-metrics.html: "57d269f098e58302c8212c01c7b1c37548f05d44035ae8ca9b2ed2c1ce14a472"
197
216
  _includes/stats/stats-no-data.html: "70a885302b3dc9edd0d8c3e3964491ca3928c57b4de747c633474157331f43d4"
198
217
  _includes/stats/stats-overview.html: "e6fb14d691ec18b4f244c0b62ff3fde18edf75fa4a7a02eb67552cf463f3a45c"
199
218
  _includes/stats/stats-tags.html: "0fe65ccd862f395b069b413ea0dc6a82007da679ecee9c84a8048476e55b694a"
200
219
  _sass/components/_author.scss: "2b037d13e159073755cb07e9a5eda2d70dbdcf7420b2e52951d4c0538a617938"
201
220
  _sass/components/_back-to-top.scss: "d1b8a948cd4e2c4772b12c77e2a812d63df400f54a16301053e223410d47cc7e"
202
221
  _sass/components/_book.scss: "dd822c0d0cf84bb919d5b889a19cd75af4dc3603bd142e2b01c953c6b8e159f0"
203
- _sass/components/_callout.scss: "8a1781d637f64000aa78c0e9a4c0af03cc185a0fb9a6d5274efc119312281a87"
222
+ _sass/components/_callout.scss: "a17bf67c19c90ad791255c39c69c9796406c9feba40fa0ef62eeabcc1a5d8778"
204
223
  _sass/components/_content-tables.scss: "463fe822b6c885a3d4ee7ed94dca54c81001a2f346c61f1495f1334b89af12bc"
205
224
  _sass/components/_cookie-banner.scss: "8871eb995ac6389cda7f8fde5536899a551ffaa72ae67dff2c892ec7e2e056c2"
206
- _sass/components/_footer.scss: "dc30bb1fe4f7d5f38a662fae29b0f69593e62c16f4b54db927638e89b8844aaf"
225
+ _sass/components/_footer.scss: "aeda30d678adf29cfb9a052fe0faba2cdaf00f289fe3017cab309b5cfb74fb99"
207
226
  _sass/components/_notes-index.scss: "7abb34307cba043e3100a0c4311b9eb279b7dfdd42ea3a44631d7b6eda47b9fe"
208
227
  _sass/components/_notes.scss: "7d6b8be561e342acfa03c2d22def876fd330049e8fc18423e1e8b463f6f5ea99"
209
228
  _sass/components/_page-feedback.scss: "0f6d0fdaba9de0034b81857fdfdf09d6493f24f2f5e2a8fbc1d37c81628d9f28"
229
+ _sass/components/_page-views.scss: "39ece6c0555369b96d4d8c51d1f01a178415e93fb4d9624562eb0e930c27bc44"
210
230
  _sass/components/_post-navigation.scss: "4d0a6d4a177d382297be352d0105658c30beac78ed4aef098b4ebdd835f8ae72"
231
+ _sass/components/_recipe.scss: "f2d698fed00e0f789914ff3ba681d11ec82e0b28cd852ba1779a30a2cf0b7408"
211
232
  _sass/components/_search-modal.scss: "3460f554bfcb411bdd3476b9678661b896b9441368fbcf717ff375a0f6116043"
233
+ _sass/components/_setup-wizard.scss: "58c411116624df527592a3e1070fca28b825a1dd54a266eb463577357d23a877"
212
234
  _sass/components/_skeleton.scss: "581407adc0e987d06d1a2a34cae36643cb94e7ab678b14d0d587e048e3e142bf"
213
235
  _sass/components/_theme-preview.scss: "eefdc6853e7fd3ff4ba9354e002261d13b608c021f5ce01c20f7cd10d553f6f4"
214
- _sass/components/_ui-enhancements.scss: "68d7bd8accee03b8d34f856f94619726d33af70f4cb080ffed90c939d54ad126"
236
+ _sass/components/_ui-enhancements.scss: "d6ad4941702434301c90285f587a59b206a669d302b59f278dfd0eff0a822386"
215
237
  _sass/core/_docs-code-examples.scss: "422d704a7009a07115beede2fb4f925131859075b40d5aa10d0d73ca0ebca371"
216
238
  _sass/core/_docs-layout.scss: "adb29a60417ec2d13dd93501e6072d93ec021281de9711ed44fa76f4587def6f"
217
239
  _sass/core/_nav-tree.scss: "b696b2c5fd91dd5180010c59b38e5242c3b7a7258e889fc3c1ca16c2a53310c2"
218
- _sass/core/_navbar.scss: "96b9b0d91e3dc76ceb6200d21339a4d6184c0861310d94e81e9abf47076649e1"
240
+ _sass/core/_navbar.scss: "7f3cdfafbac57a7ed40904e2244608852acae4fc384d0b33d61d72d30a5af9a6"
219
241
  _sass/core/_obsidian.scss: "557582682f3b37f6cbb3bac36ef2a90390d71604ef172262b5742d0c1aeba55b"
220
242
  _sass/core/_offcanvas-panels.scss: "f4c9e1046923ce036108424c7a9eeae92a54a4e95b31274283b6abf170fc846c"
221
243
  _sass/core/_sidebar-categories.scss: "7d75034b075f78dc3c604ccd190e25f98989a8162339ad9e837df82d57870eec"
@@ -227,7 +249,7 @@ file_checksums:
227
249
  _sass/core/code-copy.scss: "4ce91892327c6d5e8574e8f3f230f9886194dd5e712a7ec5816e8afed09f8ba5"
228
250
  _sass/custom.scss: "32ad90b7934dbfd9a865e0fab37acdf48ffd496c3b9af220e38e47d413ce6395"
229
251
  _sass/layouts/_global-chrome.scss: "d181cc70973d5623f4c92e9543e05d3217efe40321a63e765604a17df09debc5"
230
- _sass/layouts/_landing.scss: "f22fdb73a631b6200722974e3d228b5d525f1e967fd2777d13cbf7b33643e7b9"
252
+ _sass/layouts/_landing.scss: "0364dd6673b36fe9c9500cc9b71162114312c35a4289af8f9c2a6f7cfcfc9cc3"
231
253
  _sass/layouts/_navbar-extras.scss: "fce077d514c162d50c2dbeedafe0a452f521c5dc4cb5d9a032b9b9f947bc47bd"
232
254
  _sass/layouts/_section.scss: "34c6b7cb677c5e09504ad8ee8bfd8b77579e9b39654cc498bfd090885d349c7a"
233
255
  _sass/notebooks.scss: "7e0d3568b8a56d84adcccdc6ad193c9b9507024c4c1660501556c94f614aec6a"
@@ -238,18 +260,19 @@ file_checksums:
238
260
  _sass/theme/_skins.scss: "4b206347ceee672e0fa60137be6fbc7f33f04c3afd6ed283e4440281ea3accfe"
239
261
  _sass/theme/_wizard-mode.scss: "f5feb0385422e8c9f7aea55d26aa5760e87ce8a8d3df210916b7a30e04d32e6b"
240
262
  _sass/tokens/_breakpoints.scss: "7b4641eff577ab964ef8f6d754eadcf6022b55509b27b33eab79caff79f45944"
241
- _sass/tokens/_color.scss: "bdf84096795163fdca5aea16f6c77bfa3db7c0ab152d06e5780ff01ad2b347b4"
242
- _sass/tokens/_index.scss: "1fd620de3cd5bfc9ad30a1f495d18e8c6e8a6c36ac8dade24f4f2fa936aafe29"
263
+ _sass/tokens/_color.scss: "fcbb810626661c00dd21566440b46f5901b519c2ab478272ac111d6eafdb1d17"
264
+ _sass/tokens/_index.scss: "fd70c91511d294bd52822b5fb7f8ee2cdcb2039015c3c35d6354c82cefe1784a"
243
265
  _sass/tokens/_layers.scss: "74484e4e0ade79b562cdc19d59ecbcf88564b1d13a5c0054814fdd599ea1ae03"
244
266
  _sass/tokens/_motion.scss: "b7263d6cee480d30f4da24645a1f31164b7fb8b3b136339ddaf13310b0deda4d"
267
+ _sass/tokens/_radius.scss: "8fa2596d792ac059bb24cffdbd36a8ab0faf0abbca80e79751b30ca4af47ce46"
245
268
  _sass/tokens/_shadow.scss: "c15a3610aba4c3f92154ec0fde33201ee69284557d74a74681c019453de584d9"
246
269
  _sass/tokens/_spacing.scss: "c73d9b53f9fb194670a01f9a276471994b174ef7d62df52094aafcc173f64515"
247
- _sass/tokens/_typography.scss: "841e5dc6b1565ea44530e1b3d6723d4e5bf247a0a039d3fd006072c9bb230da3"
248
- _sass/utilities/_focus.scss: "79f2cbb4991c1d61a5a89eee5918ab38ab30c1349bdf5486e1ae65ba6625ad24"
270
+ _sass/tokens/_typography.scss: "c732da33555126f22230df5f2012d00bcfb7fe22c4a3cd9b39822495d83954e5"
271
+ _sass/utilities/_focus.scss: "863979686d0ba6c42097ef468669e72d8632a3285afc1c3de16905fd5f0d8210"
249
272
  _sass/utilities/_layout.scss: "3f12b385c2b14c603e7a4e055bee862c9635c2c16f40bca0d709851a0dc03efb"
250
273
  _sass/utilities/_motion.scss: "21441bdb990d961acbe2101ee361fc6b7338ffd815a1c0f0a84bf516d74440fe"
251
274
  assets/css/custom.css: "5b74a5e7282f09e17bb8105c144bcfd779efd29b4438f4eeb52ce7126a09d55f"
252
- assets/css/main.scss: "94d34a62f91bc55c7355185334fc195f11466a4e65f9a67433c8de88f490729a"
275
+ assets/css/main.scss: "4d5eb711ac20d2557f4c812256c37ec71ca051f5f77ac15dbc6d058458dd469e"
253
276
  assets/css/stats.css: "3ac66f83fd3322a2fe98dbd5bc2d3ddc9a72071040699070478b90b12ac201c0"
254
277
  assets/css/theme-npm-entry.scss: "efb7b2ba4f419ad37d7a0b9cc93452d5ae9edc554e5bd03b9f2efb447c767079"
255
278
  assets/css/vendor/.gitkeep: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
@@ -268,7 +291,7 @@ file_checksums:
268
291
  assets/js/modules/navigation/gestures.js: "9fded02fe6d3ce429793e5b10e9a59317c5d9bccf81076d88718ae2eb07716ae"
269
292
  assets/js/modules/navigation/index.js: "a0d9f81341266f5007d2a6530233f56363f262fe9c29aad3ed6cb3b72bd0c469"
270
293
  assets/js/modules/navigation/keyboard.js: "25fb5659e7717c8d3425ea3c6a79fe3d6893677a78976c1fdd6c773cd3a26887"
271
- assets/js/modules/navigation/navbar.js: "9d879baaf37b39a66018ce5137aad99121e1cf29c0275de5df468c23cb0af92f"
294
+ assets/js/modules/navigation/navbar.js: "f80320d273526a8352b963f5a6c18c3da99368aaac3cc653e59fc52db2b40bb8"
272
295
  assets/js/modules/navigation/scroll-spy.js: "711baeee00c03f16fa419ebd68b5014a5278c3d491aeadc190f1ed04a8c800d9"
273
296
  assets/js/modules/navigation/sidebar-state.js: "d9f1a8e7bee3e3ab00e9658e2f0c9ab51f0f15ecb68129b1650120983e5c6d62"
274
297
  assets/js/modules/navigation/sidebar-visibility.js: "e7e4396181013bd2c3324e04b4eeb48f3d5ba743bb7a8e7db9505bed0003fb22"
@@ -284,12 +307,14 @@ file_checksums:
284
307
  assets/js/obsidian-local-graph.js: "2a1bc1397c7488416d726fec79f44f049ba1d066f15488f00ec46d585f6cea28"
285
308
  assets/js/obsidian-wiki-links.js: "6af3e8b8a464a59c4123ba8b81c3b93d036b9444bc83b23d522e83c295c756ff"
286
309
  assets/js/page-feedback.js: "022d9208d139d9bc57675f148a77e6c60a09a6c270272645beab2d29482a3e14"
310
+ assets/js/page-views.js: "27961f139f2b6656251ec3a1745beade1f96d2f36718f78cc533beb520919cb6"
287
311
  assets/js/palette-generator.js: "e8056a72ccbe5107112011fedc78d41335a2c4a6143c2d01fa2f21321817d9e2"
288
312
  assets/js/particles-source.js: "372df50c0e7df97ecbb467efa1a2d4643af67d8b56461538b1eb431a8979d720"
289
313
  assets/js/particles.js: "48234a606a6dbbe9420112aebaf78a78f935bb85e5d258f2904f64c57a54d0ae"
290
314
  assets/js/posts-pagination.js: "ed4b98bd1c958766ce604175bbef0681f7bc70d6b9bb306907f2ac676baf36f8"
291
- assets/js/search-modal.js: "2474fef6cfa3cb30391d33eaa9e457f216e847f8952d1c0392504f662ea9324b"
292
- assets/js/setup-wizard.js: "c0a34e4c60caf9a8d8ae8c550a97c208622c96194bf4a25b67911942601bede1"
315
+ assets/js/recipe-scaler.js: "b05aa0cd0fafeadbf4454c4cacf1463f994e263a1f4a79a1d177f35a560a1e6e"
316
+ assets/js/search-modal.js: "a179888162974435c4fa30300be575a1725cb8b27abdf345973a2bbb62558a50"
317
+ assets/js/setup-wizard.js: "a54088ea7fcf7e5236638edbff215089ca59fa60e3a19128fb4fe7dd46b99581"
293
318
  assets/js/share-actions.js: "810a326d8aa33633854364d91caddfff1c769eaa7d437a746f96a752c2e2fdae"
294
319
  assets/js/side-bar-folders.js: "133606c23a03b9370308811e0a39187f4dd43b487628f8d875ac631afa28598a"
295
320
  assets/js/skin-editor.js: "71823df456c5dde7be9c3a7a48fba0ba2657384398dadedc92edd763be486c85"
@@ -310,6 +335,9 @@ file_checksums:
310
335
  assets/images/docs/features/cookie-consent.png: "b509cae6d14c631e9b7a410b490f4a945c8db340d384a692a8ec1d12f1299ba5"
311
336
  assets/images/docs/features/docs-layout.png: "d74979af52dc72a7a37cdedad9701f1ef96f534a9eea9db196eca7cd4f62db90"
312
337
  assets/images/docs/features/dynamic-navigation.png: "aef879977d78b5db2126bd824ecbe076b22e538acdcb1e906fd3272d144ce257"
338
+ assets/images/docs/features/giscus/configurator-repo-check.png: "1b07b7cf5d7fe1bfce9b99e1f0eaf2cc05034c2ba4a45fdef16f9f287210121c"
339
+ assets/images/docs/features/giscus/widget-error-not-installed.png: "792eb71f21ec842e0469b596f14d051c4ebe3cde15365de22d24a4d855c61c2e"
340
+ assets/images/docs/features/giscus/widget-working.png: "09b6a4b27347da9353dbc29cb1886d9381c004d0477b11048b455207016b8563"
313
341
  assets/images/docs/features/jupyter-notebooks.png: "6d0c4a361c502319d7a3450a7354f06e04540c0ab733e97ab15c2050d252ecc9"
314
342
  assets/images/docs/features/keyboard-navigation.png: "e12ce9bc1bd52b9d7ceb84a8d1559040dd580e701db2dc55bd2b3c4f137b1c43"
315
343
  assets/images/docs/features/mathjax-math.png: "06154c40de2cd83a15703f82e9ef7ff905e123887ba5f62c52cfe8abc7c63369"
data/_data/ui-text.yml CHANGED
@@ -94,6 +94,7 @@ en: &DEFAULT_EN
94
94
  home_label : "Home"
95
95
  main_nav_label : "Main Navigation"
96
96
  search_button_label : "Search"
97
+ search_button_title : "Search — press / or Ctrl+K"
97
98
  settings_button_label : "Settings"
98
99
  toc_title : "Table of Contents"
99
100
  # Article intro / metadata chrome (ZER0-078)
@@ -109,6 +110,13 @@ en: &DEFAULT_EN
109
110
  lang_toggle_label : "Language"
110
111
  lang_toggle_aria : "Change language"
111
112
  lang_not_available : "Not yet translated"
113
+ # T-038/#406 — the language menu's compact vocabulary. core/i18n.html REPLACES
114
+ # `ui` wholesale on a translated page, so these are absent from
115
+ # _data/i18n/<lang>.yml until scripts/translate.rb regenerates it; the include
116
+ # carries a literal `| default:` for each.
117
+ lang_machine_translated : "auto"
118
+ lang_machine_translated_title : "Machine-generated translation"
119
+ lang_untranslated_note : "Marked languages are not yet translated — those links open the original."
112
120
  machine_translation_notice : "This page was translated automatically from the English original."
113
121
  machine_translation_view_source : "View the original"
114
122
 
data/_includes/README.md CHANGED
@@ -43,7 +43,7 @@ Analytics and tracking integrations:
43
43
  Reusable UI components and widgets:
44
44
 
45
45
  - `searchbar.html` - Deprecated search stub (superseded by `search-modal.html`)
46
- - `language-toggle.html` - Navbar dropdown switching between the English original and its machine-generated translations
46
+ - `language-toggle.html` - Switches between the English original and its machine-generated translations. Two variants: `panel` (shipped, inside the Settings offcanvas) and the default navbar dropdown (icon-only trigger, ≤220px menu, every row a live link)
47
47
  - `translation-notice.html` - Disclosure banner on machine-translated pages linking back to the English original
48
48
  - `powered-by.html` - "Powered by" credits display
49
49
  - `quick-index.html` - Quick page index
@@ -56,6 +56,8 @@ Reusable UI components and widgets:
56
56
  - `js-cdn.html` - CDN JavaScript libraries
57
57
  - `preview-image.html` - Consistent preview image rendering with lazy loading
58
58
  - `post-card.html` - Reusable post card component for listings
59
+ - `page-views.html` - Inline "N views" badge for a page (hidden until a count is known)
60
+ - `page-views-init.html` - Page-view counter bootstrap: injects `site.page_views` config and loads `assets/js/page-views.js` (included once from `core/head.html`)
59
61
  - `data-card.html` - One generic card rendered from a plain data hash (title/url/icon/badge/meta/buttons schema in its header)
60
62
  - `card-grid.html` - Responsive grid of `data-card`s from any data array — hub dashboards, fleet registries, service grids
61
63
  - `bookshelf.html` - Grid of every book in the `books` collection (home-page library)
@@ -63,6 +65,18 @@ Reusable UI components and widgets:
63
65
  - `book-toc.html` - Ordered story/chapter list for one book
64
66
  - `book-nav.html` - Prev/next-story + contents navigation inside a book
65
67
  - `book-plate.html` - Full-width illustration figure with optional caption for story pages
68
+ - `recipe-index.html` - Grid of every recipe in the `recipes` collection, grouped into course sections
69
+ - `recipe-card.html` - One recipe's index card (photo, total time, yield, difficulty)
70
+ - `recipe-meta.html` - Fact bar: prep/cook/rest/total time, yield, difficulty, cuisine, oven
71
+ - `recipe-scaler.html` - Serving-scaling + US/metric unit controls for a recipe page
72
+ - `recipe-ingredients.html` - Grouped ingredient checklist with scalable, convertible amounts
73
+ - `recipe-steps.html` - Numbered method with per-step timings, temperatures, and photos
74
+ - `recipe-ratio.html` - Baker's-percentage table — every ingredient as a share of one reference ingredient
75
+ - `recipe-nutrition.html` - Per-serving nutrition panel (schema.org NutritionInformation)
76
+ - `recipe-qty.html` - One scalable, convertible quantity (the atom the recipe components share)
77
+ - `recipe-temp.html` - A temperature that follows the reader's unit choice
78
+ - `recipe-grams.html` - Value resolver: quantity + unit + density → grams (build-time, for ratios)
79
+ - `recipe-duration.html` - Value resolver: minutes → "1 hr 30 min" or ISO 8601 `PT1H30M`
66
80
 
67
81
  ### `content/`
68
82
 
@@ -33,9 +33,9 @@
33
33
  <!-- Offcanvas panel -->
34
34
  <div class="offcanvas offcanvas-end" tabindex="-1" id="zer0BgCustomizer" aria-labelledby="zer0BgCustomizerLabel">
35
35
  <div class="offcanvas-header">
36
- <h5 class="offcanvas-title" id="zer0BgCustomizerLabel">
36
+ <h2 class="offcanvas-title h5" id="zer0BgCustomizerLabel">
37
37
  <i class="bi bi-palette2 me-2"></i>Background Settings
38
- </h5>
38
+ </h2>
39
39
  <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
40
40
  </div>
41
41
 
@@ -89,10 +89,10 @@ Configuration: Uses site.posthog settings from _config.yml
89
89
  <div class="modal-dialog modal-lg">
90
90
  <div class="modal-content">
91
91
  <div class="modal-header">
92
- <h5 class="modal-title" id="cookieSettingsModalLabel">
92
+ <h2 class="modal-title h5" id="cookieSettingsModalLabel">
93
93
  <i class="bi bi-shield-check me-2"></i>
94
94
  Cookie Preferences
95
- </h5>
95
+ </h2>
96
96
  <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
97
97
  </div>
98
98
  <div class="modal-body">
@@ -160,7 +160,7 @@ Configuration: Uses site.posthog settings from _config.yml
160
160
  <i class="bi bi-info-circle me-2"></i>
161
161
  Your Privacy Rights
162
162
  </h6>
163
- <ul class="small text-dark mb-0 ps-3">
163
+ <ul class="small text-body mb-0 ps-3">
164
164
  <li>You can withdraw consent at any time by updating your cookie preferences</li>
165
165
  <li>Essential cookies cannot be disabled as they are necessary for site functionality</li>
166
166
  <li>Disabling analytics cookies will prevent us from improving your experience</li>
@@ -381,7 +381,7 @@ Configuration: Uses site.posthog settings from _config.yml
381
381
  }
382
382
 
383
383
  .cookie-category {
384
- border: 1px solid #dee2e6;
384
+ border: 1px solid var(--bs-border-color);
385
385
  border-radius: 8px;
386
386
  padding: 1rem;
387
387
  }
@@ -7,13 +7,14 @@
7
7
  File: info-section.html
8
8
  Path: _includes/components/info-section.html
9
9
  Purpose: Unified settings offcanvas panel with three tabs —
10
- Appearance (color mode, skin, backgrounds, primary color),
10
+ Appearance (language, color mode, skin, backgrounds, primary color),
11
11
  Site (environment, theme & build info, admin links) and
12
12
  Developer (page location, metadata, source shortcuts).
13
13
 
14
14
  Dependencies:
15
15
  - Bootstrap 5 Offcanvas, Tabs
16
16
  - _includes/components/env-detect.html (sets is_production/build_env)
17
+ - _includes/components/language-toggle.html (panel variant — Language)
17
18
  - _includes/components/halfmoon.html (color-mode segmented control)
18
19
  - _includes/components/background-settings.html (skin + backgrounds)
19
20
  - _includes/components/env-switcher.html
@@ -44,9 +45,9 @@
44
45
  <!-- Offcanvas Header -->
45
46
  <div class="offcanvas-header border-bottom pb-0 d-block">
46
47
  <div class="d-flex align-items-center justify-content-between mb-2">
47
- <h5 class="offcanvas-title" id="infoSectionLabel">
48
+ <h2 class="offcanvas-title h5" id="infoSectionLabel">
48
49
  <i class="bi bi-gear-wide-connected me-2" aria-hidden="true"></i>Settings
49
- </h5>
50
+ </h2>
50
51
  <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
51
52
  </div>
52
53
 
@@ -82,6 +83,10 @@
82
83
  <!-- Appearance Tab — everything that changes how the site looks -->
83
84
  <div class="tab-pane fade show active" id="appearance-pane" role="tabpanel" aria-labelledby="appearance-tab" tabindex="0">
84
85
 
86
+ <!-- Language — renders its own heading, and nothing at all when
87
+ site.translation is disabled. NOT cached: page-dependent. -->
88
+ {% include components/language-toggle.html variant="panel" %}
89
+
85
90
  <!-- Color Mode -->
86
91
  <div class="mb-4">
87
92
  <h6 class="text-body-secondary small text-uppercase fw-semibold mb-2">