@janga/norna 0.7.9 → 0.7.11

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 (287) hide show
  1. package/README.md +4 -2
  2. package/bin/norna-cli.mjs +3 -0
  3. package/docs/README.md +16 -12
  4. package/docs/commands.md +6 -0
  5. package/docs/configuration.md +10 -54
  6. package/docs/content.md +20 -21
  7. package/docs/design/norna-diagram-design.md +2 -0
  8. package/docs/design/site-examples-structure.md +35 -24
  9. package/docs/engine-development.md +13 -7
  10. package/docs/getting-started.md +56 -19
  11. package/docs/routes.md +8 -6
  12. package/docs/site-structure.md +11 -6
  13. package/docs/sitewide-content.md +74 -0
  14. package/docs/theme.md +125 -140
  15. package/docs/typography.md +72 -45
  16. package/examples/README.md +41 -0
  17. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/site.schema.json +59 -0
  18. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/sitewide.schema.json +138 -0
  19. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/theme.schema.json +755 -0
  20. package/examples/complete-sites/dog-shelter-multi-page/.astro/content-modules.mjs +1 -0
  21. package/examples/{typography-presets → complete-sites/dog-shelter-multi-page}/.astro/content.d.ts +8 -0
  22. package/examples/complete-sites/dog-shelter-multi-page/.astro/data-store.json +1 -0
  23. package/examples/{typography-presets → complete-sites/dog-shelter-multi-page}/.astro/dev-local.json +2 -2
  24. package/examples/{typography-presets → complete-sites/dog-shelter-multi-page}/.astro/dev.json +2 -2
  25. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.log +53 -0
  26. package/examples/complete-sites/dog-shelter-multi-page/.astro/settings.json +5 -0
  27. package/examples/complete-sites/dog-shelter-multi-page/README.md +9 -0
  28. package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/_metadata.json +13 -7
  29. package/examples/complete-sites/dog-shelter-multi-page/site/.norna/generated-images.json +18 -0
  30. package/examples/complete-sites/dog-shelter-multi-page/site/config.mjs +30 -0
  31. package/examples/complete-sites/dog-shelter-multi-page/site/content.md +12 -0
  32. package/examples/complete-sites/dog-shelter-multi-page/site/public/favicon.svg +10 -0
  33. package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rex.svg +19 -0
  34. package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rover.svg +19 -0
  35. package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/route-content.md +30 -0
  36. package/examples/complete-sites/dog-shelter-multi-page/site/routes/020-adopt/route-content.md +12 -0
  37. package/examples/complete-sites/dog-shelter-multi-page/site/sitewide-content.md +6 -0
  38. package/examples/complete-sites/dog-shelter-multi-page/site/theme.md +25 -0
  39. package/examples/complete-sites/dog-shelter-single-page/README.md +9 -0
  40. package/examples/complete-sites/dog-shelter-single-page/site/.norna/generated-images.json +18 -0
  41. package/examples/complete-sites/dog-shelter-single-page/site/config.mjs +30 -0
  42. package/examples/complete-sites/dog-shelter-single-page/site/content.md +38 -0
  43. package/examples/complete-sites/dog-shelter-single-page/site/images/what-we-do/dog-house.svg +25 -0
  44. package/examples/complete-sites/dog-shelter-single-page/site/images/you-can-help/heart.svg +13 -0
  45. package/examples/complete-sites/dog-shelter-single-page/site/public/favicon.svg +10 -0
  46. package/examples/complete-sites/dog-shelter-single-page/site/public/robots.txt +2 -0
  47. package/examples/complete-sites/dog-shelter-single-page/site/sitewide-content.md +6 -0
  48. package/examples/complete-sites/dog-shelter-single-page/site/theme.md +25 -0
  49. package/examples/feature-demos/media-and-surfaces/.astro/collections/site.schema.json +59 -0
  50. package/examples/feature-demos/media-and-surfaces/.astro/collections/sitewide.schema.json +138 -0
  51. package/examples/feature-demos/media-and-surfaces/.astro/collections/theme.schema.json +755 -0
  52. package/examples/feature-demos/media-and-surfaces/.astro/content-modules.mjs +1 -0
  53. package/examples/feature-demos/media-and-surfaces/.astro/content.d.ts +183 -0
  54. package/examples/feature-demos/media-and-surfaces/.astro/data-store.json +1 -0
  55. package/examples/feature-demos/media-and-surfaces/.astro/dev.log +11 -0
  56. package/examples/feature-demos/media-and-surfaces/.astro/settings.json +5 -0
  57. package/examples/feature-demos/media-and-surfaces/.astro/types.d.ts +2 -0
  58. package/examples/feature-demos/media-and-surfaces/README.md +15 -0
  59. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/_metadata.json +74 -0
  60. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro-B3JHJyiv.js +434 -0
  61. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
  62. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
  63. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
  64. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
  65. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
  66. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
  67. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
  68. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
  69. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
  70. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/audit-C3SVr7dT.js +1534 -0
  71. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/audit-C3SVr7dT.js.map +1 -0
  72. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/highlight-BLtvqtzO.js +48 -0
  73. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
  74. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/icons-C92i61-2.js +42 -0
  75. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
  76. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/settings-v5GgKks_.js +190 -0
  77. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/settings-v5GgKks_.js.map +1 -0
  78. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/toolbar-BFvJVp26.js +458 -0
  79. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +1 -0
  80. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/ui-library-Cd35oAvo.js +1016 -0
  81. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +1 -0
  82. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/window-vo3A6TMn.js +32 -0
  83. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
  84. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/xray-DwhzGckb.js +111 -0
  85. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/xray-DwhzGckb.js.map +1 -0
  86. package/examples/feature-demos/media-and-surfaces/site/.norna/generated-images.json +66 -0
  87. package/examples/feature-demos/media-and-surfaces/site/config.mjs +30 -0
  88. package/examples/feature-demos/media-and-surfaces/site/content.md +64 -0
  89. package/examples/feature-demos/media-and-surfaces/site/public/robots.txt +2 -0
  90. package/examples/feature-demos/media-and-surfaces/site/routes/010-media/images/cards/card-carousel.svg +11 -0
  91. package/examples/feature-demos/media-and-surfaces/site/routes/010-media/images/cards/card-stack.svg +9 -0
  92. package/examples/feature-demos/media-and-surfaces/site/routes/010-media/images/cards/card-surfaces.svg +8 -0
  93. package/examples/feature-demos/media-and-surfaces/site/routes/010-media/images/carousel/carousel-one.svg +8 -0
  94. package/examples/feature-demos/media-and-surfaces/site/routes/010-media/images/carousel/carousel-three.svg +13 -0
  95. package/examples/feature-demos/media-and-surfaces/site/routes/010-media/images/carousel/carousel-two.svg +8 -0
  96. package/examples/feature-demos/media-and-surfaces/site/routes/010-media/images/stack/stack-one.svg +8 -0
  97. package/examples/feature-demos/media-and-surfaces/site/routes/010-media/images/stack/stack-two.svg +9 -0
  98. package/examples/feature-demos/media-and-surfaces/site/routes/010-media/route-content.md +85 -0
  99. package/examples/feature-demos/media-and-surfaces/site/routes/010-media/theme.md +3 -0
  100. package/examples/feature-demos/media-and-surfaces/site/routes/020-surfaces/route-content.md +44 -0
  101. package/examples/feature-demos/media-and-surfaces/site/routes/020-surfaces/theme.md +8 -0
  102. package/examples/feature-demos/media-and-surfaces/site/sitewide-content.md +6 -0
  103. package/examples/feature-demos/media-and-surfaces/site/theme.md +3 -0
  104. package/examples/{typography-presets/.astro/collections/theme.schema.json → feature-demos/theme-presets/.astro/collections/routeTheme.schema.json} +143 -65
  105. package/examples/feature-demos/theme-presets/.astro/collections/site.schema.json +59 -0
  106. package/examples/feature-demos/theme-presets/.astro/collections/sitewide.schema.json +138 -0
  107. package/examples/feature-demos/theme-presets/.astro/collections/theme.schema.json +755 -0
  108. package/examples/feature-demos/theme-presets/.astro/content-assets.mjs +4 -0
  109. package/examples/feature-demos/theme-presets/.astro/content-modules.mjs +1 -0
  110. package/examples/feature-demos/theme-presets/.astro/content.d.ts +183 -0
  111. package/examples/feature-demos/theme-presets/.astro/data-store.json +1 -0
  112. package/examples/feature-demos/theme-presets/.astro/dev-local.json +8 -0
  113. package/examples/feature-demos/theme-presets/.astro/dev.json +15 -0
  114. package/examples/feature-demos/theme-presets/.astro/dev.log +127 -0
  115. package/examples/feature-demos/theme-presets/.astro/types.d.ts +2 -0
  116. package/examples/feature-demos/theme-presets/README.md +14 -0
  117. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/embla-carousel.js +1389 -0
  118. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/embla-carousel.js.map +1 -0
  119. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/package.json +3 -0
  120. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
  121. package/examples/feature-demos/theme-presets/site/.norna/generated-images.json +290 -0
  122. package/examples/{typography-presets → feature-demos/theme-presets}/site/config.mjs +4 -16
  123. package/examples/feature-demos/theme-presets/site/content.md +17 -0
  124. package/examples/feature-demos/theme-presets/site/routes/010-portfolio/route-content.md +34 -0
  125. package/examples/feature-demos/theme-presets/site/routes/010-portfolio/theme.md +3 -0
  126. package/examples/feature-demos/theme-presets/site/routes/020-documentation/route-content.md +33 -0
  127. package/examples/feature-demos/theme-presets/site/routes/020-documentation/theme.md +3 -0
  128. package/examples/feature-demos/theme-presets/site/routes/030-project/route-content.md +34 -0
  129. package/examples/feature-demos/theme-presets/site/routes/030-project/theme.md +3 -0
  130. package/examples/feature-demos/theme-presets/site/routes/040-statement/route-content.md +34 -0
  131. package/examples/feature-demos/theme-presets/site/routes/040-statement/theme.md +3 -0
  132. package/examples/feature-demos/theme-presets/site/sitewide-content.md +14 -0
  133. package/examples/feature-demos/theme-presets/site/theme.md +3 -0
  134. package/fixtures/basic/site/config.mjs +0 -13
  135. package/fixtures/basic/site/sitewide-content.md +12 -0
  136. package/fixtures/basic/site/theme.md +2 -2
  137. package/fixtures/content-model-v2/site/content.md +2 -5
  138. package/fixtures/content-model-v2/site/theme.md +1 -3
  139. package/package.json +9 -4
  140. package/scripts/build-pages.mjs +71 -0
  141. package/scripts/check-config.mjs +23 -1
  142. package/scripts/export-theme-preset.mjs +31 -0
  143. package/scripts/init-site.mjs +1 -0
  144. package/scripts/lib/example-sites.mjs +34 -0
  145. package/scripts/lib/frontmatter-yaml.mjs +28 -0
  146. package/scripts/lib/logo-assets.mjs +35 -0
  147. package/scripts/lib/norna-markdown-blocks.mjs +166 -0
  148. package/scripts/lib/presentation.mjs +106 -47
  149. package/scripts/lib/project-config.mjs +68 -105
  150. package/scripts/lib/site-content.mjs +26 -118
  151. package/scripts/lib/site-paths.mjs +2 -0
  152. package/scripts/lib/sitewide-config.mjs +34 -0
  153. package/scripts/lib/theme-config.mjs +75 -8
  154. package/scripts/lib/theme-presets.mjs +209 -0
  155. package/scripts/lib/typography.mjs +20 -26
  156. package/scripts/show-typography.mjs +43 -149
  157. package/scripts/sync-content-sections.mjs +19 -17
  158. package/scripts/test-content-check.mjs +59 -27
  159. package/scripts/test-content-model-v2.mjs +154 -0
  160. package/scripts/test-engine-commands.mjs +4 -1
  161. package/scripts/test-examples.mjs +15 -0
  162. package/scripts/test-navigation.mjs +73 -45
  163. package/scripts/test-package-check.mjs +66 -24
  164. package/scripts/test-temporary-visibility.mjs +19 -2
  165. package/scripts/test-theme-presets.mjs +151 -0
  166. package/src/components/CardList.astro +5 -2
  167. package/src/components/GalleryGrid.astro +37 -16
  168. package/src/components/SiteBanners.astro +100 -0
  169. package/src/components/SiteNavigation.astro +48 -31
  170. package/src/components/SitePage.astro +55 -13
  171. package/src/components/SiteSection.astro +193 -35
  172. package/src/content.config.ts +80 -48
  173. package/src/layouts/BaseLayout.astro +64 -14
  174. package/src/lib/routeThemes.ts +61 -0
  175. package/src/lib/sectionContent.ts +235 -51
  176. package/src/lib/sitePublicAssets.ts +1 -0
  177. package/src/styles/global.css +284 -93
  178. package/starters/basic/.github/workflows/deploy.yml +1 -1
  179. package/starters/basic/README.md +7 -6
  180. package/starters/basic/package.json +1 -0
  181. package/starters/basic/site/config.mjs +0 -13
  182. package/starters/basic/site/content.md +1 -1
  183. package/starters/basic/site/sitewide-content.md +14 -0
  184. package/starters/basic/site/theme.md +13 -24
  185. package/starters/project/.github/workflows/deploy.yml +1 -1
  186. package/starters/project/README.md +10 -8
  187. package/starters/project/package.json +1 -0
  188. package/starters/project/site/config.mjs +0 -13
  189. package/starters/project/site/sitewide-content.md +14 -0
  190. package/starters/project/site/theme.md +3 -11
  191. package/examples/dog-gallery/site/.norna/generated-images.json +0 -226
  192. package/examples/dog-gallery/site/config.mjs +0 -67
  193. package/examples/dog-gallery/site/content.md +0 -128
  194. package/examples/dog-gallery/site/images/black-dogs/black-puppy-meadow.png +0 -0
  195. package/examples/dog-gallery/site/images/black-dogs/photo-of-a-black-dog.jpg +0 -0
  196. package/examples/dog-gallery/site/images/brown-dogs/brown-dog.jpg +0 -0
  197. package/examples/dog-gallery/site/images/brown-dogs/dog-accompanies-master.jpg +0 -0
  198. package/examples/dog-gallery/site/images/golden-dogs/golden-retriever.jpg +0 -0
  199. package/examples/dog-gallery/site/images/golden-dogs/toller-puppy.jpg +0 -0
  200. package/examples/dog-gallery/site/images/white-dogs/white-cute-dog.jpg +0 -0
  201. package/examples/dog-gallery/site/images/white-dogs/white-puppy-garden.png +0 -0
  202. package/examples/dog-gallery/site/public/favicon.svg +0 -7
  203. package/examples/dog-gallery/site/routes/010-dog-care/route-content.md +0 -38
  204. package/examples/dog-gallery/site/theme.md +0 -112
  205. package/examples/typography-presets/.astro/collections/site.schema.json +0 -776
  206. package/examples/typography-presets/.astro/data-store.json +0 -1
  207. package/examples/typography-presets/.astro/dev.log +0 -24
  208. package/examples/typography-presets/site/.norna/generated-images.json +0 -290
  209. package/examples/typography-presets/site/content.md +0 -134
  210. package/examples/typography-presets/site/theme.md +0 -43
  211. /package/examples/{typography-presets/.astro/content-modules.mjs → complete-sites/dog-shelter-multi-page/.astro/content-assets.mjs} +0 -0
  212. /package/examples/{typography-presets → complete-sites/dog-shelter-multi-page}/.astro/types.d.ts +0 -0
  213. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/astro-D_GIpJIE.js +0 -0
  214. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -0
  215. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/astro_n_aria-query.js +0 -0
  216. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -0
  217. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/astro_n_axobject-query.js +0 -0
  218. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -0
  219. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/astro_n_html-escaper.js +0 -0
  220. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -0
  221. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -0
  222. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -0
  223. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/audit-DM9Hkl5B.js +0 -0
  224. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -0
  225. /package/examples/{typography-presets → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/embla-carousel.js +0 -0
  226. /package/examples/{typography-presets → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/embla-carousel.js.map +0 -0
  227. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/highlight-DnZ1ULOL.js +0 -0
  228. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -0
  229. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/icons-RyebKi45.js +0 -0
  230. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -0
  231. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/package.json +0 -0
  232. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -0
  233. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/settings-DaU-gNnK.js +0 -0
  234. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -0
  235. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/toolbar-63PA619H.js +0 -0
  236. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -0
  237. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/ui-library--bkcNSYz.js +0 -0
  238. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -0
  239. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/window-jPkpKVcy.js +0 -0
  240. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -0
  241. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/xray-BXCHpEJP.js +0 -0
  242. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -0
  243. /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/site/public/robots.txt +0 -0
  244. /package/examples/{typography-presets → feature-demos/media-and-surfaces}/.astro/content-assets.mjs +0 -0
  245. /package/examples/{typography-presets → feature-demos/media-and-surfaces}/node_modules/.vite/deps/package.json +0 -0
  246. /package/examples/{typography-presets → feature-demos/media-and-surfaces}/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -0
  247. /package/examples/{typography-presets → feature-demos/theme-presets}/.astro/settings.json +0 -0
  248. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/_metadata.json +0 -0
  249. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/astro-D_GIpJIE.js +0 -0
  250. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -0
  251. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/astro_n_aria-query.js +0 -0
  252. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -0
  253. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/astro_n_axobject-query.js +0 -0
  254. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -0
  255. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/astro_n_html-escaper.js +0 -0
  256. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -0
  257. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -0
  258. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -0
  259. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/audit-DM9Hkl5B.js +0 -0
  260. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -0
  261. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/highlight-DnZ1ULOL.js +0 -0
  262. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -0
  263. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/icons-RyebKi45.js +0 -0
  264. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -0
  265. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/settings-DaU-gNnK.js +0 -0
  266. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -0
  267. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/toolbar-63PA619H.js +0 -0
  268. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -0
  269. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/ui-library--bkcNSYz.js +0 -0
  270. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -0
  271. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/window-jPkpKVcy.js +0 -0
  272. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -0
  273. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/xray-BXCHpEJP.js +0 -0
  274. /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -0
  275. /package/examples/{typography-presets → feature-demos/theme-presets}/site/public/robots.txt +0 -0
  276. /package/examples/{typography-presets/site/images/quiet-gallery → feature-demos/theme-presets/site/routes/010-portfolio/images/portfolio}/puppy-portrait.jpg +0 -0
  277. /package/examples/{typography-presets/site/images/quiet-gallery → feature-demos/theme-presets/site/routes/010-portfolio/images/portfolio}/shepherd-portrait.jpg +0 -0
  278. /package/examples/{typography-presets/site/images/quiet-gallery → feature-demos/theme-presets/site/routes/010-portfolio/images/portfolio}/white-puppy.jpg +0 -0
  279. /package/examples/{typography-presets/site/images/compact-gallery → feature-demos/theme-presets/site/routes/020-documentation/images/documentation}/black-schnauzer.jpg +0 -0
  280. /package/examples/{typography-presets/site/images/compact-gallery → feature-demos/theme-presets/site/routes/020-documentation/images/documentation}/retriever-portrait.jpg +0 -0
  281. /package/examples/{typography-presets/site/images/compact-gallery → feature-demos/theme-presets/site/routes/020-documentation/images/documentation}/schnauzer-portrait.jpg +0 -0
  282. /package/examples/{typography-presets/site/images/text-forward → feature-demos/theme-presets/site/routes/030-project/images/project}/boxer-portrait.jpg +0 -0
  283. /package/examples/{typography-presets/site/images/text-forward → feature-demos/theme-presets/site/routes/030-project/images/project}/grass-puppy.jpg +0 -0
  284. /package/examples/{typography-presets/site/images/text-forward → feature-demos/theme-presets/site/routes/030-project/images/project}/grey-street-dog.jpg +0 -0
  285. /package/examples/{typography-presets/site → feature-demos/theme-presets/site/routes/040-statement}/images/statement/black-pedigree.jpg +0 -0
  286. /package/examples/{typography-presets/site → feature-demos/theme-presets/site/routes/040-statement}/images/statement/sheepdog-grass.jpg +0 -0
  287. /package/examples/{typography-presets/site → feature-demos/theme-presets/site/routes/040-statement}/images/statement/sheepdog-wide.jpg +0 -0
@@ -31,9 +31,12 @@
31
31
  --space-nav-to-first-section-desktop: clamp(1.875rem, 3vw, 2.75rem);
32
32
  --space-nav-to-first-section-mobile: 1.375rem;
33
33
  --space-nav-to-first-section: var(--space-nav-to-first-section-desktop);
34
- --space-section-body-to-gallery-desktop: clamp(1.25rem, 2.5vw, 2rem);
35
- --space-section-body-to-gallery-mobile: 1.25rem;
36
- --space-section-body-to-gallery: var(--space-section-body-to-gallery-desktop);
34
+ --space-content-block-gap-desktop: 1.5em;
35
+ --space-content-block-gap-mobile: 1.25em;
36
+ --space-content-block-gap: var(--space-content-block-gap-desktop);
37
+ --space-heading-to-block-desktop: 0.75em;
38
+ --space-heading-to-block-mobile: 0.7em;
39
+ --space-heading-to-block: var(--space-heading-to-block-desktop);
37
40
  --space-gallery-item-desktop: clamp(1.5rem, 3.5vw, 2.75rem);
38
41
  --space-gallery-item-mobile: 2.75rem;
39
42
  --space-gallery-item: var(--space-gallery-item-desktop);
@@ -48,7 +51,7 @@
48
51
  --content-gutter-mobile: 1rem;
49
52
  --content-gutter: var(--content-gutter-desktop);
50
53
  --site-top-anchor-offset: 4.5rem;
51
- color-scheme: dark;
54
+ color-scheme: var(--color-scheme, dark);
52
55
  scroll-behavior: smooth;
53
56
  scroll-padding-top: var(--site-top-anchor-offset);
54
57
  }
@@ -130,12 +133,14 @@ a {
130
133
  .site-nav a,
131
134
  .mobile-nav-menu summary,
132
135
  .mobile-nav-panel a,
133
- .page-nav a {
136
+ .site-nav-submenu a {
134
137
  color: currentColor;
135
138
  text-decoration: none;
136
139
  }
137
140
 
138
141
  .site-brand {
142
+ display: flex;
143
+ align-items: center;
139
144
  flex: 0 0 auto;
140
145
  font-size: 0.82rem;
141
146
  font-weight: 700;
@@ -144,21 +149,31 @@ a {
144
149
  text-transform: uppercase;
145
150
  }
146
151
 
152
+ .site-brand-logo {
153
+ display: block;
154
+ width: auto;
155
+ height: var(--site-brand-logo-height, 2.6rem);
156
+ max-width: min(30vw, 18rem);
157
+ }
158
+
147
159
  .site-nav ul,
148
- .mobile-nav-panel ul,
149
- .page-nav ul {
160
+ .mobile-nav-panel ul {
150
161
  margin: 0;
151
162
  padding: 0;
152
163
  list-style: none;
153
164
  }
154
165
 
155
- .site-nav ul {
166
+ .site-nav > ul {
156
167
  display: flex;
157
168
  flex-wrap: wrap;
158
169
  justify-content: flex-end;
159
170
  gap: 0.35rem clamp(0.9rem, 2.6vw, 2rem);
160
171
  }
161
172
 
173
+ .site-nav-item {
174
+ position: relative;
175
+ }
176
+
162
177
  .site-nav a,
163
178
  .mobile-nav-panel a {
164
179
  display: block;
@@ -183,71 +198,66 @@ a {
183
198
  text-underline-offset: 0.35em;
184
199
  }
185
200
 
186
- .mobile-nav-menu {
187
- display: none;
201
+ .site-nav-submenu {
202
+ position: absolute;
203
+ top: 100%;
204
+ left: 50%;
205
+ z-index: 10;
206
+ width: max-content;
207
+ min-width: 12rem;
208
+ padding-top: 0.7rem;
209
+ opacity: 0;
210
+ visibility: hidden;
211
+ pointer-events: none;
212
+ transform: translate(-50%, -0.35rem);
213
+ transition: opacity 0.16s ease, transform 0.16s ease, visibility 0.16s ease;
188
214
  }
189
215
 
190
- .page-nav {
191
- border-top: 1px solid color-mix(in srgb, currentColor 14%, transparent);
216
+ .site-nav-submenu > nav {
217
+ border: 1px solid color-mix(in srgb, currentColor 30%, transparent);
218
+ padding: 0.8rem 1rem;
219
+ background: var(--site-top-background-color, var(--color-nav-background));
220
+ box-shadow: 0 1rem 2.5rem rgb(0 0 0 / 0.22);
192
221
  }
193
222
 
194
- .page-nav ul {
195
- display: flex;
196
- flex-wrap: wrap;
197
- justify-content: center;
198
- gap: 0 clamp(1.4rem, 4vw, 3.25rem);
223
+ .site-nav-submenu ul {
224
+ display: grid;
225
+ gap: 0.65rem;
199
226
  }
200
227
 
201
- .page-nav li {
202
- position: relative;
228
+ .site-nav-submenu a {
229
+ font-size: 0.76rem;
230
+ letter-spacing: 0.03em;
231
+ line-height: 1.3;
232
+ opacity: 0.78;
233
+ text-transform: none;
234
+ white-space: nowrap;
203
235
  }
204
236
 
205
- .page-nav li + li::before {
206
- position: absolute;
207
- top: 50%;
208
- left: calc(clamp(1.4rem, 4vw, 3.25rem) / -2 - 0.1rem);
209
- transform: translateY(-50%);
210
- color: currentColor;
211
- content: "/";
212
- font-size: 0.75rem;
213
- opacity: 0.28;
237
+ .site-nav-submenu a:hover,
238
+ .site-nav-submenu a:focus-visible {
239
+ opacity: 1;
240
+ text-decoration: underline;
241
+ text-underline-offset: 0.25em;
214
242
  }
215
243
 
216
- .page-nav a {
217
- display: block;
218
- position: relative;
219
- padding: 1.05rem 0 0.95rem;
220
- font-size: 0.76rem;
221
- font-weight: 500;
222
- letter-spacing: 0.12em;
223
- line-height: 1;
224
- opacity: 0.76;
225
- text-decoration: none;
226
- text-transform: uppercase;
244
+ .site-nav-item:hover .site-nav-submenu,
245
+ .site-nav-item:focus-within .site-nav-submenu {
246
+ opacity: 1;
247
+ visibility: visible;
248
+ pointer-events: auto;
249
+ transform: translate(-50%, 0);
227
250
  }
228
251
 
229
- .page-nav a::after {
230
- position: absolute;
231
- right: 0;
232
- bottom: 0.62rem;
233
- left: 0;
234
- height: 1px;
235
- transform: scaleX(0);
236
- background: currentColor;
237
- content: "";
238
- opacity: 0;
239
- transition: opacity 0.18s ease, transform 0.18s ease;
252
+ .mobile-nav-menu {
253
+ display: none;
240
254
  }
241
255
 
242
- .page-nav a:hover,
243
- .page-nav a[aria-current='true'],
244
256
  .mobile-page-nav a[aria-current='true'] {
245
257
  opacity: 1;
246
- }
247
-
248
- .page-nav a[aria-current='true']::after {
249
- transform: scaleX(1);
250
- opacity: 0.75;
258
+ text-decoration: underline;
259
+ text-decoration-thickness: 1px;
260
+ text-underline-offset: 0.35em;
251
261
  }
252
262
 
253
263
  @media (hover: hover) and (pointer: fine) {
@@ -264,6 +274,79 @@ a {
264
274
  padding: 0;
265
275
  }
266
276
 
277
+ .site-banners {
278
+ position: relative;
279
+ z-index: 2;
280
+ display: grid;
281
+ gap: 0.75rem;
282
+ width: min(calc(100% - (var(--content-gutter) * 2)), var(--page-width));
283
+ margin: 0 auto;
284
+ padding: 1rem 0 0;
285
+ }
286
+
287
+ .site-banner {
288
+ display: flex;
289
+ align-items: flex-start;
290
+ width: 100%;
291
+ min-width: 0;
292
+ gap: 1rem;
293
+ border: 1px solid color-mix(in srgb, #ffd84d 42%, var(--color-border));
294
+ border-inline-start: 0.35rem solid #ffd84d;
295
+ padding: 0.8rem 0.9rem;
296
+ background: color-mix(in srgb, #ffd84d 12%, var(--color-surface));
297
+ color: var(--color-text);
298
+ }
299
+
300
+ .site-banner[hidden] {
301
+ display: none;
302
+ }
303
+
304
+ .site-banner-copy {
305
+ display: flex;
306
+ align-items: baseline;
307
+ gap: 0.65rem;
308
+ min-width: 0;
309
+ flex: 1 1 auto;
310
+ }
311
+
312
+ .site-banner-title,
313
+ .site-banner-text {
314
+ margin: 0;
315
+ }
316
+
317
+ .site-banner-title {
318
+ flex: 0 0 auto;
319
+ white-space: nowrap;
320
+ font-weight: 700;
321
+ }
322
+
323
+ .site-banner-text {
324
+ min-width: 0;
325
+ overflow: hidden;
326
+ text-overflow: ellipsis;
327
+ white-space: nowrap;
328
+ margin-top: 0.2rem;
329
+ color: color-mix(in srgb, currentColor 86%, transparent);
330
+ }
331
+
332
+ .site-banner-dismiss {
333
+ flex: 0 0 auto;
334
+ width: 2rem;
335
+ height: 2rem;
336
+ border: 1px solid color-mix(in srgb, currentColor 35%, transparent);
337
+ padding: 0;
338
+ background: transparent;
339
+ color: currentColor;
340
+ cursor: pointer;
341
+ font-size: 1.25rem;
342
+ line-height: 1;
343
+ }
344
+
345
+ .site-banner-dismiss:hover,
346
+ .site-banner-dismiss:focus-visible {
347
+ background: color-mix(in srgb, currentColor 12%, transparent);
348
+ }
349
+
267
350
  .site-footer {
268
351
  position: relative;
269
352
  isolation: isolate;
@@ -332,6 +415,10 @@ a {
332
415
  text-align: var(--section-heading-align-desktop, center);
333
416
  }
334
417
 
418
+ .site-section-first-block-is-visual .section-header {
419
+ padding-bottom: var(--space-heading-to-block);
420
+ }
421
+
335
422
  .section-header h1,
336
423
  .section-header h2,
337
424
  p,
@@ -344,7 +431,7 @@ ul {
344
431
  margin-bottom: 0;
345
432
  color: inherit;
346
433
  font-size: var(--section-heading-font-size-desktop, clamp(1.35rem, 1.1rem + 0.9vw, 2rem));
347
- font-weight: 400;
434
+ font-weight: var(--section-heading-font-weight, 400);
348
435
  letter-spacing: 0;
349
436
  line-height: var(--section-heading-line-height, 1.04);
350
437
  text-transform: uppercase;
@@ -359,12 +446,96 @@ ul {
359
446
  font-size: clamp(0.96rem, 0.94rem + 0.08vw, 1rem);
360
447
  }
361
448
 
449
+ .section-reading-layout {
450
+ display: grid;
451
+ --section-reading-body-width: var(--section-body-width-desktop, var(--text-width));
452
+ --section-reading-inline-start: max(0px, calc((100% - var(--section-reading-body-width)) / 2));
453
+ grid-template-columns: minmax(0, var(--section-reading-body-width)) minmax(0, 13rem);
454
+ column-gap: 1.5rem;
455
+ row-gap: var(--section-body-paragraph-spacing, 1em);
456
+ width: min(
457
+ calc(100% - var(--section-reading-inline-start)),
458
+ calc(var(--section-reading-body-width) + 13rem + 1.5rem)
459
+ );
460
+ margin: 0 0 0 var(--section-reading-inline-start);
461
+ align-items: start;
462
+ }
463
+
464
+ .section-reading-layout .section-markdown {
465
+ grid-column: 1;
466
+ width: 100%;
467
+ margin: 0;
468
+ }
469
+
470
+ .section-note {
471
+ grid-column: 2;
472
+ display: grid;
473
+ grid-template-columns: auto minmax(0, 1fr);
474
+ column-gap: 0.25rem;
475
+ align-self: start;
476
+ margin: 0;
477
+ margin-top: var(--section-note-offset, 0px);
478
+ border-inline-start: 2px solid color-mix(in srgb, currentColor 35%, transparent);
479
+ padding: 0 0 0 0.35rem;
480
+ color: color-mix(in srgb, currentColor 76%, transparent);
481
+ font-size: 0.88em;
482
+ line-height: 1.45;
483
+ scroll-margin-top: calc(var(--site-top-anchor-offset) + 1rem);
484
+ }
485
+
486
+ .section-note-number {
487
+ display: block;
488
+ margin: 0;
489
+ color: inherit;
490
+ font-size: 0.82em;
491
+ font-weight: 700;
492
+ line-height: 1;
493
+ text-decoration: none;
494
+ }
495
+
496
+ .section-note-ref {
497
+ display: inline-block;
498
+ margin-left: 0.03em;
499
+ font-size: 0.72em;
500
+ line-height: 0;
501
+ white-space: nowrap;
502
+ vertical-align: super;
503
+ }
504
+
505
+ .section-note-ref a {
506
+ color: inherit;
507
+ text-decoration: underline;
508
+ text-decoration-thickness: 0.08em;
509
+ text-underline-offset: 0.15em;
510
+ }
511
+
512
+ .section-note.is-referenced,
513
+ .section-note:target {
514
+ border-inline-start-color: currentColor;
515
+ background: color-mix(in srgb, currentColor 6%, transparent);
516
+ }
517
+
518
+ .section-note-ref a.is-referenced,
519
+ .section-note-ref a:hover,
520
+ .section-note-ref a:focus-visible {
521
+ text-decoration-thickness: 0.16em;
522
+ }
523
+
524
+ .section-note-content > :first-child {
525
+ margin-top: 0;
526
+ }
527
+
528
+ .section-note-content > :last-child {
529
+ margin-bottom: 0;
530
+ }
531
+
362
532
  .section-markdown {
363
533
  width: min(100%, var(--section-body-width-desktop, var(--text-width)));
364
- margin: 0 auto var(--space-section-body-to-gallery);
534
+ max-width: 72ch;
535
+ margin: 0 auto;
365
536
  font-size: var(--section-body-font-size-desktop, clamp(0.96rem, 0.94rem + 0.08vw, 1rem));
366
- line-height: var(--section-body-line-height, 1.78);
367
- text-align: var(--section-body-align-desktop, center);
537
+ line-height: var(--section-body-line-height, 1.6);
538
+ text-align: var(--section-body-align-desktop, left);
368
539
  }
369
540
 
370
541
  .section-markdown p {
@@ -396,14 +567,6 @@ ul {
396
567
  font: inherit;
397
568
  }
398
569
 
399
- .inline-style {
400
- color: var(--inline-style-color);
401
- }
402
-
403
- .section-body-text-only .section-markdown {
404
- margin-bottom: 0;
405
- }
406
-
407
570
  .section-markdown > :last-child,
408
571
  .gallery-meta :last-child {
409
572
  margin-bottom: 0;
@@ -426,6 +589,7 @@ ul {
426
589
  padding-top: 0.55em;
427
590
  font-family: var(--font-sans);
428
591
  font-size: var(--section-markdown-h3-font-size-desktop, 0.82rem);
592
+ font-weight: var(--section-markdown-h3-font-weight, 700);
429
593
  letter-spacing: 0;
430
594
  line-height: var(--section-markdown-h3-line-height, 1.35);
431
595
  text-align: var(--section-markdown-h3-align-desktop, left);
@@ -439,7 +603,7 @@ ul {
439
603
  var(--section-markdown-h4-spacing-after, 0.4em);
440
604
  color: inherit;
441
605
  font-size: var(--section-markdown-h4-font-size-desktop, clamp(0.96rem, 0.94rem + 0.08vw, 1rem));
442
- font-weight: 400;
606
+ font-weight: var(--section-markdown-h4-font-weight, 400);
443
607
  letter-spacing: 0;
444
608
  line-height: var(--section-markdown-h4-line-height, 1.5);
445
609
  text-align: var(--section-markdown-h4-align-desktop, left);
@@ -463,7 +627,7 @@ ul {
463
627
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
464
628
  gap: var(--card-list-gap, clamp(0.9rem, 2vw, 1.25rem));
465
629
  width: min(100%, var(--card-list-width, var(--gallery-layout-width)));
466
- margin: 0 auto var(--space-section-body-to-gallery);
630
+ margin: 0 auto;
467
631
  text-align: left;
468
632
  --card-list-width: var(--gallery-layout-width);
469
633
  --card-list-gap: clamp(0.9rem, 2vw, 1.25rem);
@@ -476,6 +640,36 @@ ul {
476
640
  --card-list-text-scale: 1;
477
641
  }
478
642
 
643
+ .section-body > .section-reading-layout:not(:last-child),
644
+ .section-body > .section-markdown:not(:last-child),
645
+ .section-body > .card-list:not(:last-child),
646
+ .section-body > .gallery:not(:last-child) {
647
+ margin-bottom: var(--space-content-block-gap);
648
+ }
649
+
650
+ @media (max-width: 1100px) {
651
+ .section-reading-layout {
652
+ display: block;
653
+ width: 100%;
654
+ margin: 0;
655
+ }
656
+
657
+ .section-reading-layout .section-markdown,
658
+ .section-reading-layout .section-note {
659
+ width: min(100%, var(--section-reading-body-width, var(--section-body-width-desktop, var(--text-width))));
660
+ margin-right: auto;
661
+ margin-left: auto;
662
+ }
663
+
664
+ .section-reading-layout .section-note {
665
+ margin-top: var(--section-body-paragraph-spacing, 0.85em);
666
+ }
667
+
668
+ .section-reading-layout .section-markdown + .section-markdown {
669
+ margin-top: var(--section-body-paragraph-spacing, 1em);
670
+ }
671
+ }
672
+
479
673
  .card-list-width-text {
480
674
  --card-list-width: var(--text-width);
481
675
  }
@@ -642,7 +836,7 @@ ul {
642
836
 
643
837
  .gallery-item {
644
838
  display: grid;
645
- gap: 0.7rem;
839
+ gap: 0.55rem;
646
840
  align-content: start;
647
841
  margin: 0;
648
842
  }
@@ -806,7 +1000,7 @@ ul {
806
1000
  }
807
1001
 
808
1002
  .gallery-carousel-captions {
809
- width: min(100%, var(--gallery-layout-width));
1003
+ width: min(100%, var(--gallery-layout-width), 72ch);
810
1004
  margin: 0 auto;
811
1005
  }
812
1006
 
@@ -830,7 +1024,7 @@ ul {
830
1024
  }
831
1025
 
832
1026
  .gallery-meta {
833
- width: min(100%, var(--gallery-layout-width));
1027
+ width: min(100%, var(--gallery-layout-width), 72ch);
834
1028
  margin: var(--section-caption-spacing-before, 0.5em) auto 0;
835
1029
  font-size: var(--section-caption-font-size-desktop, 0.95rem);
836
1030
  text-align: var(--section-caption-align-desktop, center);
@@ -853,7 +1047,8 @@ ul {
853
1047
  @media (max-width: 700px) {
854
1048
  :root {
855
1049
  --space-nav-to-first-section: var(--space-nav-to-first-section-mobile);
856
- --space-section-body-to-gallery: var(--space-section-body-to-gallery-mobile);
1050
+ --space-content-block-gap: var(--space-content-block-gap-mobile);
1051
+ --space-heading-to-block: var(--space-heading-to-block-mobile);
857
1052
  --space-gallery-item: var(--space-gallery-item-mobile);
858
1053
  --space-section-to-section: var(--space-section-to-section-mobile);
859
1054
  --space-final-section-bottom: var(--space-final-section-bottom-mobile);
@@ -874,26 +1069,13 @@ ul {
874
1069
  overflow-wrap: anywhere;
875
1070
  }
876
1071
 
877
- .site-nav,
878
- .site-top-has-site-nav .page-nav {
879
- display: none;
880
- }
881
-
882
- .page-nav ul {
883
- justify-content: center;
884
- gap: 0 1.55rem;
885
- padding: 0 1rem;
886
- text-align: center;
1072
+ .site-brand-logo {
1073
+ height: min(var(--site-brand-logo-height, 2.6rem), 2.15rem);
1074
+ max-width: min(48vw, 13rem);
887
1075
  }
888
1076
 
889
- .page-nav li + li::before {
890
- left: -0.95rem;
891
- }
892
-
893
- .page-nav a {
894
- padding: 0.95rem 0 0.85rem;
895
- font-size: 0.72rem;
896
- white-space: nowrap;
1077
+ .site-nav {
1078
+ display: none;
897
1079
  }
898
1080
 
899
1081
  .mobile-nav-menu {
@@ -980,6 +1162,11 @@ ul {
980
1162
  width: min(calc(100% - (var(--content-gutter) * 2)), var(--page-width));
981
1163
  }
982
1164
 
1165
+ .site-banners {
1166
+ width: min(calc(100% - 2rem), var(--page-width));
1167
+ padding-top: 0.75rem;
1168
+ }
1169
+
983
1170
  .site-footer {
984
1171
  width: min(calc(100% - 2rem), 34rem);
985
1172
  }
@@ -1006,6 +1193,10 @@ ul {
1006
1193
  text-align: var(--section-heading-align-mobile, var(--section-heading-align-desktop, center));
1007
1194
  }
1008
1195
 
1196
+ .section-reading-layout {
1197
+ --section-reading-body-width: var(--section-body-width-mobile, var(--section-body-width-desktop, var(--text-width)));
1198
+ }
1199
+
1009
1200
  .section-markdown {
1010
1201
  width: min(100%, var(--section-body-width-mobile, var(--section-body-width-desktop, var(--text-width))));
1011
1202
  font-size: var(
@@ -42,7 +42,7 @@ jobs:
42
42
  - name: Install dependencies
43
43
  run: npm ci
44
44
 
45
- - name: Build
45
+ - name: Check and build
46
46
  run: npm run build
47
47
 
48
48
  - name: Configure Pages
@@ -15,9 +15,10 @@ If the standard local port is blocked, start with:
15
15
  npm run dev -- --kill
16
16
  ```
17
17
 
18
- Edit site-wide visual defaults in `site/theme.md`, homepage content and section
19
- overrides in `site/content.md`, technical settings such as URL and locale
20
- labels in `site/config.mjs`, source images under `site/images/<section-id>/`,
18
+ Edit shared brand, logo, banners and footer in `site/sitewide-content.md`,
19
+ site-wide visual defaults in `site/theme.md`, homepage content and section
20
+ metadata in `site/content.md`, and technical settings such as URL and locale
21
+ labels in `site/config.mjs`. Keep source images under `site/images/<section-id>/`
21
22
  and static public files under `site/public/`. The image folder name should
22
23
  match the section id in Markdown, for example `## Work {#work}` uses
23
24
  `site/images/work/`.
@@ -35,9 +36,9 @@ site: {
35
36
  In GitHub repository settings, configure Pages to build from GitHub Actions.
36
37
 
37
38
  Page width, side gutters, layout density, typography rhythm, image width, image
38
- height limits, font, colors, and site-wide typography are configured in
39
- `site/theme.md`. Page and section presentation overrides live in
40
- `site/content.md`.
39
+ height limits, font, palettes, section surfaces, and site-wide typography are
40
+ configured in `site/theme.md`. A route may replace that visual theme with its
41
+ own `theme.md`.
41
42
 
42
43
  Commit `package-lock.json` after the first install so GitHub Actions can use
43
44
  `npm ci`.
@@ -14,6 +14,7 @@
14
14
  "norna:config:check": "norna config:check",
15
15
  "norna:content:check": "norna content:check",
16
16
  "norna:sync": "norna content:sync",
17
+ "norna:theme:export": "norna theme:export",
17
18
  "norna:typography:presets": "norna typography presets",
18
19
  "norna:typography:show": "norna typography show",
19
20
  "norna:public": "norna site:public",
@@ -19,19 +19,6 @@ export default {
19
19
  gallery: 'Images',
20
20
  },
21
21
  },
22
- footer: {
23
- copyrightMessage: '(c) Example Owner.',
24
- buildInfo: {
25
- enabled: true,
26
- text: 'Built',
27
- dateTimeFormat: {
28
- locale: 'en-GB',
29
- timeZone: 'UTC',
30
- dateStyle: 'short',
31
- timeStyle: 'short',
32
- },
33
- },
34
- },
35
22
  github: {
36
23
  repo: 'owner/example-site',
37
24
  branch: 'main',
@@ -6,7 +6,7 @@ description: Minimal norna starter site.
6
6
  ## Intro {#intro}
7
7
  This is a minimal starter site for norna. Since this site doesn't have any
8
8
  routes defined, the navigation menu will be a sticky bar with anchor links for
9
- ease of use on phones etc. [Highlighted inline text]{.highlight} when a short
9
+ ease of use on phones etc. **Highlighted inline text** when a short
10
10
  phrase needs emphasis
11
11
  ## Work {#work}
12
12
  Add Norna managed media blocks in Markdown where the media should appear. Put
@@ -0,0 +1,14 @@
1
+ ---
2
+ navigation:
3
+ brand: Example Site
4
+ footer:
5
+ copyrightMessage: (c) Example Owner.
6
+ buildInfo:
7
+ enabled: true
8
+ text: Built
9
+ dateTimeFormat:
10
+ locale: en-GB
11
+ timeZone: UTC
12
+ dateStyle: short
13
+ timeStyle: short
14
+ ---