@geekity/cms 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2091 -214
- package/admin/components/fields.njk +165 -0
- package/admin/layouts/base.njk +1 -1
- package/admin/layouts/settings-page.njk +26 -0
- package/admin/layouts/shell.njk +17 -3
- package/admin/pages/account/forgot.njk +47 -0
- package/admin/pages/account/login.njk +26 -0
- package/admin/pages/account/reset.njk +38 -0
- package/admin/pages/account/setup.njk +28 -0
- package/admin/pages/appearance/themes.njk +69 -0
- package/admin/pages/comments/all.njk +133 -0
- package/admin/{layouts/dashboard.njk → pages/dashboard/home.njk} +8 -15
- package/admin/{layouts/document-conflict.njk → pages/documents/conflict.njk} +1 -0
- package/admin/pages/documents/editor.njk +196 -0
- package/admin/{layouts/document-list.njk → pages/documents/list.njk} +19 -2
- package/admin/pages/documents/taxonomy.njk +95 -0
- package/admin/pages/federation/followers.njk +238 -0
- package/admin/pages/media/library.njk +160 -0
- package/admin/pages/messages/all.njk +110 -0
- package/admin/{layouts → pages}/placeholder.njk +5 -1
- package/admin/pages/settings/discussion.njk +99 -0
- package/admin/pages/settings/email.njk +203 -0
- package/admin/pages/settings/federation.njk +75 -0
- package/admin/pages/settings/general.njk +29 -0
- package/admin/pages/settings/permalinks.njk +50 -0
- package/admin/pages/settings/reading.njk +72 -0
- package/admin/pages/users/edit.njk +239 -0
- package/admin/pages/users/list.njk +48 -0
- package/admin/pages/users/new.njk +41 -0
- package/admin/static/admin.css +498 -3
- package/admin/static/copy.js +52 -0
- package/admin/static/editor.js +16 -16
- package/admin/static/slug.js +61 -0
- package/dist/admin/accounts.d.ts +413 -0
- package/dist/admin/accounts.d.ts.map +1 -0
- package/dist/admin/accounts.js +680 -0
- package/dist/admin/accounts.js.map +1 -0
- package/dist/admin/appearance.d.ts +80 -0
- package/dist/admin/appearance.d.ts.map +1 -0
- package/dist/admin/appearance.js +136 -0
- package/dist/admin/appearance.js.map +1 -0
- package/dist/admin/comments.d.ts +90 -0
- package/dist/admin/comments.d.ts.map +1 -0
- package/dist/admin/comments.js +244 -0
- package/dist/admin/comments.js.map +1 -0
- package/dist/admin/credentials.d.ts +26 -2
- package/dist/admin/credentials.d.ts.map +1 -1
- package/dist/admin/credentials.js +35 -2
- package/dist/admin/credentials.js.map +1 -1
- package/dist/admin/documents.d.ts +127 -10
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +360 -41
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/federation.d.ts +151 -50
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +225 -93
- package/dist/admin/federation.js.map +1 -1
- package/dist/admin/formatting.d.ts +20 -0
- package/dist/admin/formatting.d.ts.map +1 -0
- package/dist/admin/formatting.js +72 -0
- package/dist/admin/formatting.js.map +1 -0
- package/dist/admin/headers.d.ts +65 -0
- package/dist/admin/headers.d.ts.map +1 -0
- package/dist/admin/headers.js +104 -0
- package/dist/admin/headers.js.map +1 -0
- package/dist/admin/index.d.ts +38 -12
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +25 -7
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/media.d.ts +168 -0
- package/dist/admin/media.d.ts.map +1 -0
- package/dist/admin/media.js +295 -0
- package/dist/admin/media.js.map +1 -0
- package/dist/admin/menu.d.ts +79 -0
- package/dist/admin/menu.d.ts.map +1 -0
- package/dist/admin/menu.js +126 -0
- package/dist/admin/menu.js.map +1 -0
- package/dist/admin/messages.d.ts +80 -0
- package/dist/admin/messages.d.ts.map +1 -0
- package/dist/admin/messages.js +152 -0
- package/dist/admin/messages.js.map +1 -0
- package/dist/admin/preview.d.ts.map +1 -1
- package/dist/admin/preview.js +31 -7
- package/dist/admin/preview.js.map +1 -1
- package/dist/admin/recovery.d.ts +92 -0
- package/dist/admin/recovery.d.ts.map +1 -0
- package/dist/admin/recovery.js +229 -0
- package/dist/admin/recovery.js.map +1 -0
- package/dist/admin/routes.d.ts +0 -20
- package/dist/admin/routes.d.ts.map +1 -1
- package/dist/admin/routes.js +155 -105
- package/dist/admin/routes.js.map +1 -1
- package/dist/admin/settings-discussion.d.ts +37 -0
- package/dist/admin/settings-discussion.d.ts.map +1 -0
- package/dist/admin/settings-discussion.js +117 -0
- package/dist/admin/settings-discussion.js.map +1 -0
- package/dist/admin/settings-email.d.ts +54 -0
- package/dist/admin/settings-email.d.ts.map +1 -0
- package/dist/admin/settings-email.js +189 -0
- package/dist/admin/settings-email.js.map +1 -0
- package/dist/admin/settings-federation.d.ts +39 -0
- package/dist/admin/settings-federation.d.ts.map +1 -0
- package/dist/admin/settings-federation.js +103 -0
- package/dist/admin/settings-federation.js.map +1 -0
- package/dist/admin/settings-general.d.ts +12 -0
- package/dist/admin/settings-general.d.ts.map +1 -0
- package/dist/admin/settings-general.js +48 -0
- package/dist/admin/settings-general.js.map +1 -0
- package/dist/admin/settings-page.d.ts +102 -0
- package/dist/admin/settings-page.d.ts.map +1 -0
- package/dist/admin/settings-page.js +126 -0
- package/dist/admin/settings-page.js.map +1 -0
- package/dist/admin/settings-pages.d.ts +19 -0
- package/dist/admin/settings-pages.d.ts.map +1 -0
- package/dist/admin/settings-pages.js +33 -0
- package/dist/admin/settings-pages.js.map +1 -0
- package/dist/admin/settings-permalinks.d.ts +16 -0
- package/dist/admin/settings-permalinks.d.ts.map +1 -0
- package/dist/admin/settings-permalinks.js +32 -0
- package/dist/admin/settings-permalinks.js.map +1 -0
- package/dist/admin/settings-reading.d.ts +33 -0
- package/dist/admin/settings-reading.d.ts.map +1 -0
- package/dist/admin/settings-reading.js +48 -0
- package/dist/admin/settings-reading.js.map +1 -0
- package/dist/admin/settings.d.ts +325 -96
- package/dist/admin/settings.d.ts.map +1 -1
- package/dist/admin/settings.js +650 -308
- package/dist/admin/settings.js.map +1 -1
- package/dist/admin/store.d.ts +606 -152
- package/dist/admin/store.d.ts.map +1 -1
- package/dist/admin/store.js +863 -268
- package/dist/admin/store.js.map +1 -1
- package/dist/admin/taxonomy.d.ts +114 -0
- package/dist/admin/taxonomy.d.ts.map +1 -0
- package/dist/admin/taxonomy.js +289 -0
- package/dist/admin/taxonomy.js.map +1 -0
- package/dist/admin/templates.d.ts +44 -14
- package/dist/admin/templates.d.ts.map +1 -1
- package/dist/admin/templates.js +44 -14
- package/dist/admin/templates.js.map +1 -1
- package/dist/admin/throttle.d.ts +84 -0
- package/dist/admin/throttle.d.ts.map +1 -0
- package/dist/admin/throttle.js +143 -0
- package/dist/admin/throttle.js.map +1 -0
- package/dist/admin/uploads.d.ts +28 -2
- package/dist/admin/uploads.d.ts.map +1 -1
- package/dist/admin/uploads.js +43 -4
- package/dist/admin/uploads.js.map +1 -1
- package/dist/admin/users.d.ts +100 -13
- package/dist/admin/users.d.ts.map +1 -1
- package/dist/admin/users.js +412 -39
- package/dist/admin/users.js.map +1 -1
- package/dist/cache.d.ts +141 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +207 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts +14 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +424 -21
- package/dist/cli.js.map +1 -1
- package/dist/comments/akismet.d.ts +130 -0
- package/dist/comments/akismet.d.ts.map +1 -0
- package/dist/comments/akismet.js +274 -0
- package/dist/comments/akismet.js.map +1 -0
- package/dist/comments/conversation.d.ts +29 -0
- package/dist/comments/conversation.d.ts.map +1 -0
- package/dist/comments/conversation.js +60 -0
- package/dist/comments/conversation.js.map +1 -0
- package/dist/comments/form.d.ts +75 -0
- package/dist/comments/form.d.ts.map +1 -0
- package/dist/comments/form.js +64 -0
- package/dist/comments/form.js.map +1 -0
- package/dist/comments/index.d.ts +15 -0
- package/dist/comments/index.d.ts.map +1 -0
- package/dist/comments/index.js +9 -0
- package/dist/comments/index.js.map +1 -0
- package/dist/comments/markdown.d.ts +8 -0
- package/dist/comments/markdown.d.ts.map +1 -0
- package/dist/comments/markdown.js +85 -0
- package/dist/comments/markdown.js.map +1 -0
- package/dist/comments/moderate.d.ts +71 -0
- package/dist/comments/moderate.d.ts.map +1 -0
- package/dist/comments/moderate.js +88 -0
- package/dist/comments/moderate.js.map +1 -0
- package/dist/comments/policy.d.ts +57 -0
- package/dist/comments/policy.d.ts.map +1 -0
- package/dist/comments/policy.js +80 -0
- package/dist/comments/policy.js.map +1 -0
- package/dist/comments/records.d.ts +266 -0
- package/dist/comments/records.d.ts.map +1 -0
- package/dist/comments/records.js +487 -0
- package/dist/comments/records.js.map +1 -0
- package/dist/comments/routes.d.ts +58 -0
- package/dist/comments/routes.d.ts.map +1 -0
- package/dist/comments/routes.js +177 -0
- package/dist/comments/routes.js.map +1 -0
- package/dist/comments/submission.d.ts +263 -0
- package/dist/comments/submission.d.ts.map +1 -0
- package/dist/comments/submission.js +241 -0
- package/dist/comments/submission.js.map +1 -0
- package/dist/config.d.ts +190 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +118 -6
- package/dist/config.js.map +1 -1
- package/dist/contact/delivery.d.ts +60 -0
- package/dist/contact/delivery.d.ts.map +1 -0
- package/dist/contact/delivery.js +87 -0
- package/dist/contact/delivery.js.map +1 -0
- package/dist/contact/form.d.ts +130 -0
- package/dist/contact/form.d.ts.map +1 -0
- package/dist/contact/form.js +163 -0
- package/dist/contact/form.js.map +1 -0
- package/dist/contact/index.d.ts +17 -0
- package/dist/contact/index.d.ts.map +1 -0
- package/dist/contact/index.js +13 -0
- package/dist/contact/index.js.map +1 -0
- package/dist/contact/records.d.ts +124 -0
- package/dist/contact/records.d.ts.map +1 -0
- package/dist/contact/records.js +218 -0
- package/dist/contact/records.js.map +1 -0
- package/dist/contact/routes.d.ts +17 -0
- package/dist/contact/routes.d.ts.map +1 -0
- package/dist/contact/routes.js +127 -0
- package/dist/contact/routes.js.map +1 -0
- package/dist/contact/submission.d.ts +103 -0
- package/dist/contact/submission.d.ts.map +1 -0
- package/dist/contact/submission.js +166 -0
- package/dist/contact/submission.js.map +1 -0
- package/dist/content/document.d.ts +7 -2
- package/dist/content/document.d.ts.map +1 -1
- package/dist/content/document.js +1 -0
- package/dist/content/document.js.map +1 -1
- package/dist/content/index.d.ts +7 -2
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +4 -1
- package/dist/content/index.js.map +1 -1
- package/dist/content/markdown.d.ts.map +1 -1
- package/dist/content/markdown.js +24 -2
- package/dist/content/markdown.js.map +1 -1
- package/dist/content/parser.d.ts.map +1 -1
- package/dist/content/parser.js +11 -4
- package/dist/content/parser.js.map +1 -1
- package/dist/content/save.d.ts +5 -0
- package/dist/content/save.d.ts.map +1 -1
- package/dist/content/save.js +44 -1
- package/dist/content/save.js.map +1 -1
- package/dist/content/schedule.d.ts +125 -0
- package/dist/content/schedule.d.ts.map +1 -0
- package/dist/content/schedule.js +207 -0
- package/dist/content/schedule.js.map +1 -0
- package/dist/content/search.d.ts +64 -0
- package/dist/content/search.d.ts.map +1 -0
- package/dist/content/search.js +136 -0
- package/dist/content/search.js.map +1 -0
- package/dist/content/store.d.ts +202 -7
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +374 -67
- package/dist/content/store.js.map +1 -1
- package/dist/content/sync.d.ts +7 -1
- package/dist/content/sync.d.ts.map +1 -1
- package/dist/content/sync.js +18 -10
- package/dist/content/sync.js.map +1 -1
- package/dist/content/time.d.ts +56 -0
- package/dist/content/time.d.ts.map +1 -0
- package/dist/content/time.js +141 -0
- package/dist/content/time.js.map +1 -0
- package/dist/content/writer.d.ts.map +1 -1
- package/dist/content/writer.js +3 -0
- package/dist/content/writer.js.map +1 -1
- package/dist/env.d.ts +58 -4
- package/dist/env.d.ts.map +1 -1
- package/dist/federation/actor.d.ts +95 -41
- package/dist/federation/actor.d.ts.map +1 -1
- package/dist/federation/actor.js +180 -53
- package/dist/federation/actor.js.map +1 -1
- package/dist/federation/article.d.ts +44 -17
- package/dist/federation/article.d.ts.map +1 -1
- package/dist/federation/article.js +98 -46
- package/dist/federation/article.js.map +1 -1
- package/dist/federation/delivery.d.ts +63 -15
- package/dist/federation/delivery.d.ts.map +1 -1
- package/dist/federation/delivery.js +154 -80
- package/dist/federation/delivery.js.map +1 -1
- package/dist/federation/federation.d.ts +22 -17
- package/dist/federation/federation.d.ts.map +1 -1
- package/dist/federation/federation.js +98 -77
- package/dist/federation/federation.js.map +1 -1
- package/dist/federation/followers.d.ts +3 -2
- package/dist/federation/followers.d.ts.map +1 -1
- package/dist/federation/followers.js +6 -5
- package/dist/federation/followers.js.map +1 -1
- package/dist/federation/import-wordpress.d.ts +128 -0
- package/dist/federation/import-wordpress.d.ts.map +1 -0
- package/dist/federation/import-wordpress.js +426 -0
- package/dist/federation/import-wordpress.js.map +1 -0
- package/dist/federation/inbox.d.ts +36 -13
- package/dist/federation/inbox.d.ts.map +1 -1
- package/dist/federation/inbox.js +120 -49
- package/dist/federation/inbox.js.map +1 -1
- package/dist/federation/index.d.ts +22 -10
- package/dist/federation/index.d.ts.map +1 -1
- package/dist/federation/index.js +13 -8
- package/dist/federation/index.js.map +1 -1
- package/dist/federation/keys.d.ts +98 -20
- package/dist/federation/keys.d.ts.map +1 -1
- package/dist/federation/keys.js +269 -39
- package/dist/federation/keys.js.map +1 -1
- package/dist/federation/mount.d.ts +42 -10
- package/dist/federation/mount.d.ts.map +1 -1
- package/dist/federation/mount.js +266 -26
- package/dist/federation/mount.js.map +1 -1
- package/dist/federation/paths.d.ts +23 -35
- package/dist/federation/paths.d.ts.map +1 -1
- package/dist/federation/paths.js +26 -39
- package/dist/federation/paths.js.map +1 -1
- package/dist/federation/records.d.ts +223 -0
- package/dist/federation/records.d.ts.map +1 -0
- package/dist/federation/records.js +506 -0
- package/dist/federation/records.js.map +1 -0
- package/dist/federation/relays.d.ts +114 -0
- package/dist/federation/relays.d.ts.map +1 -0
- package/dist/federation/relays.js +290 -0
- package/dist/federation/relays.js.map +1 -0
- package/dist/federation/replies.d.ts +80 -0
- package/dist/federation/replies.d.ts.map +1 -0
- package/dist/federation/replies.js +166 -0
- package/dist/federation/replies.js.map +1 -0
- package/dist/federation/wordpress.d.ts +131 -0
- package/dist/federation/wordpress.d.ts.map +1 -0
- package/dist/federation/wordpress.js +341 -0
- package/dist/federation/wordpress.js.map +1 -0
- package/dist/files/atomic.d.ts +103 -0
- package/dist/files/atomic.d.ts.map +1 -0
- package/dist/files/atomic.js +150 -0
- package/dist/files/atomic.js.map +1 -0
- package/dist/files/index.d.ts +3 -0
- package/dist/files/index.d.ts.map +1 -0
- package/dist/files/index.js +2 -0
- package/dist/files/index.js.map +1 -0
- package/dist/forms/protection.d.ts +85 -0
- package/dist/forms/protection.d.ts.map +1 -0
- package/dist/forms/protection.js +116 -0
- package/dist/forms/protection.js.map +1 -0
- package/dist/images/icons.d.ts +59 -0
- package/dist/images/icons.d.ts.map +1 -0
- package/dist/images/icons.js +131 -0
- package/dist/images/icons.js.map +1 -0
- package/dist/images/index.d.ts +7 -0
- package/dist/images/index.d.ts.map +1 -0
- package/dist/images/index.js +4 -0
- package/dist/images/index.js.map +1 -0
- package/dist/images/markup.d.ts +47 -0
- package/dist/images/markup.d.ts.map +1 -0
- package/dist/images/markup.js +175 -0
- package/dist/images/markup.js.map +1 -0
- package/dist/images/paths.d.ts +34 -0
- package/dist/images/paths.d.ts.map +1 -0
- package/dist/images/paths.js +41 -0
- package/dist/images/paths.js.map +1 -0
- package/dist/images/variants.d.ts +104 -0
- package/dist/images/variants.d.ts.map +1 -0
- package/dist/images/variants.js +320 -0
- package/dist/images/variants.js.map +1 -0
- package/dist/index.d.ts +123 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +327 -25
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +18 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +34 -3
- package/dist/init.js.map +1 -1
- package/dist/mail/brevo.d.ts +35 -0
- package/dist/mail/brevo.d.ts.map +1 -0
- package/dist/mail/brevo.js +85 -0
- package/dist/mail/brevo.js.map +1 -0
- package/dist/mail/credentials.d.ts +62 -0
- package/dist/mail/credentials.d.ts.map +1 -0
- package/dist/mail/credentials.js +86 -0
- package/dist/mail/credentials.js.map +1 -0
- package/dist/mail/index.d.ts +15 -0
- package/dist/mail/index.d.ts.map +1 -0
- package/dist/mail/index.js +8 -0
- package/dist/mail/index.js.map +1 -0
- package/dist/mail/memory.d.ts +35 -0
- package/dist/mail/memory.d.ts.map +1 -0
- package/dist/mail/memory.js +29 -0
- package/dist/mail/memory.js.map +1 -0
- package/dist/mail/provider.d.ts +80 -0
- package/dist/mail/provider.d.ts.map +1 -0
- package/dist/mail/provider.js +23 -0
- package/dist/mail/provider.js.map +1 -0
- package/dist/mail/service.d.ts +156 -0
- package/dist/mail/service.d.ts.map +1 -0
- package/dist/mail/service.js +265 -0
- package/dist/mail/service.js.map +1 -0
- package/dist/mail/smtp.d.ts +39 -0
- package/dist/mail/smtp.d.ts.map +1 -0
- package/dist/mail/smtp.js +58 -0
- package/dist/mail/smtp.js.map +1 -0
- package/dist/mail/templates.d.ts +91 -0
- package/dist/mail/templates.d.ts.map +1 -0
- package/dist/mail/templates.js +69 -0
- package/dist/mail/templates.js.map +1 -0
- package/dist/notifications/comments.d.ts +66 -0
- package/dist/notifications/comments.d.ts.map +1 -0
- package/dist/notifications/comments.js +151 -0
- package/dist/notifications/comments.js.map +1 -0
- package/dist/notifications/digest.d.ts +135 -0
- package/dist/notifications/digest.d.ts.map +1 -0
- package/dist/notifications/digest.js +287 -0
- package/dist/notifications/digest.js.map +1 -0
- package/dist/notifications/index.d.ts +13 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +8 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/links.d.ts +60 -0
- package/dist/notifications/links.d.ts.map +1 -0
- package/dist/notifications/links.js +63 -0
- package/dist/notifications/links.js.map +1 -0
- package/dist/notifications/optouts.d.ts +48 -0
- package/dist/notifications/optouts.d.ts.map +1 -0
- package/dist/notifications/optouts.js +93 -0
- package/dist/notifications/optouts.js.map +1 -0
- package/dist/notifications/preferences.d.ts +158 -0
- package/dist/notifications/preferences.d.ts.map +1 -0
- package/dist/notifications/preferences.js +195 -0
- package/dist/notifications/preferences.js.map +1 -0
- package/dist/notifications/routes.d.ts +28 -0
- package/dist/notifications/routes.d.ts.map +1 -0
- package/dist/notifications/routes.js +184 -0
- package/dist/notifications/routes.js.map +1 -0
- package/dist/notifications/tokens.d.ts +60 -0
- package/dist/notifications/tokens.d.ts.map +1 -0
- package/dist/notifications/tokens.js +125 -0
- package/dist/notifications/tokens.js.map +1 -0
- package/dist/notify.d.ts +84 -0
- package/dist/notify.d.ts.map +1 -0
- package/dist/notify.js +149 -0
- package/dist/notify.js.map +1 -0
- package/dist/web/archive.d.ts +49 -0
- package/dist/web/archive.d.ts.map +1 -0
- package/dist/web/archive.js +59 -0
- package/dist/web/archive.js.map +1 -0
- package/dist/web/assets.d.ts +6 -5
- package/dist/web/assets.d.ts.map +1 -1
- package/dist/web/assets.js +5 -7
- package/dist/web/assets.js.map +1 -1
- package/dist/web/authors.d.ts +143 -0
- package/dist/web/authors.d.ts.map +1 -0
- package/dist/web/authors.js +178 -0
- package/dist/web/authors.js.map +1 -0
- package/dist/web/comments.d.ts +60 -0
- package/dist/web/comments.d.ts.map +1 -0
- package/dist/web/comments.js +207 -0
- package/dist/web/comments.js.map +1 -0
- package/dist/web/context.d.ts +162 -28
- package/dist/web/context.d.ts.map +1 -1
- package/dist/web/context.js +123 -26
- package/dist/web/context.js.map +1 -1
- package/dist/web/conversation.d.ts +209 -0
- package/dist/web/conversation.d.ts.map +1 -0
- package/dist/web/conversation.js +557 -0
- package/dist/web/conversation.js.map +1 -0
- package/dist/web/documents.d.ts +36 -6
- package/dist/web/documents.d.ts.map +1 -1
- package/dist/web/documents.js +52 -10
- package/dist/web/documents.js.map +1 -1
- package/dist/web/feed-atom.d.ts +22 -0
- package/dist/web/feed-atom.d.ts.map +1 -0
- package/dist/web/feed-atom.js +83 -0
- package/dist/web/feed-atom.js.map +1 -0
- package/dist/web/feed-item.d.ts +145 -0
- package/dist/web/feed-item.d.ts.map +1 -0
- package/dist/web/feed-item.js +120 -0
- package/dist/web/feed-item.js.map +1 -0
- package/dist/web/feed-json.d.ts +79 -0
- package/dist/web/feed-json.d.ts.map +1 -0
- package/dist/web/feed-json.js +53 -0
- package/dist/web/feed-json.js.map +1 -0
- package/dist/web/feed-rss.d.ts +26 -0
- package/dist/web/feed-rss.d.ts.map +1 -0
- package/dist/web/feed-rss.js +203 -0
- package/dist/web/feed-rss.js.map +1 -0
- package/dist/web/feed-source.d.ts +244 -0
- package/dist/web/feed-source.d.ts.map +1 -0
- package/dist/web/feed-source.js +201 -0
- package/dist/web/feed-source.js.map +1 -0
- package/dist/web/feed-xml.d.ts +63 -0
- package/dist/web/feed-xml.d.ts.map +1 -0
- package/dist/web/feed-xml.js +116 -0
- package/dist/web/feed-xml.js.map +1 -0
- package/dist/web/feeds.d.ts +31 -96
- package/dist/web/feeds.d.ts.map +1 -1
- package/dist/web/feeds.js +94 -198
- package/dist/web/feeds.js.map +1 -1
- package/dist/web/health.d.ts +31 -0
- package/dist/web/health.d.ts.map +1 -0
- package/dist/web/health.js +44 -0
- package/dist/web/health.js.map +1 -0
- package/dist/web/index.d.ts +30 -10
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +18 -7
- package/dist/web/index.js.map +1 -1
- package/dist/web/navigation.d.ts +73 -0
- package/dist/web/navigation.d.ts.map +1 -0
- package/dist/web/navigation.js +110 -0
- package/dist/web/navigation.js.map +1 -0
- package/dist/web/negotiate.d.ts +9 -0
- package/dist/web/negotiate.d.ts.map +1 -1
- package/dist/web/negotiate.js +6 -1
- package/dist/web/negotiate.js.map +1 -1
- package/dist/web/recent.d.ts +43 -0
- package/dist/web/recent.d.ts.map +1 -0
- package/dist/web/recent.js +37 -0
- package/dist/web/recent.js.map +1 -0
- package/dist/web/render.d.ts +197 -9
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +334 -17
- package/dist/web/render.js.map +1 -1
- package/dist/web/routes.d.ts +25 -8
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +845 -93
- package/dist/web/routes.js.map +1 -1
- package/dist/web/sanitize.d.ts +19 -0
- package/dist/web/sanitize.d.ts.map +1 -0
- package/dist/web/sanitize.js +272 -0
- package/dist/web/sanitize.js.map +1 -0
- package/dist/web/search.d.ts +79 -0
- package/dist/web/search.d.ts.map +1 -0
- package/dist/web/search.js +94 -0
- package/dist/web/search.js.map +1 -0
- package/dist/web/sitemap.d.ts +120 -0
- package/dist/web/sitemap.d.ts.map +1 -0
- package/dist/web/sitemap.js +199 -0
- package/dist/web/sitemap.js.map +1 -0
- package/dist/web/taxonomy.d.ts +152 -0
- package/dist/web/taxonomy.d.ts.map +1 -0
- package/dist/web/taxonomy.js +237 -0
- package/dist/web/taxonomy.js.map +1 -0
- package/dist/web/templates.d.ts +54 -16
- package/dist/web/templates.d.ts.map +1 -1
- package/dist/web/templates.js +109 -28
- package/dist/web/templates.js.map +1 -1
- package/dist/web/themes.d.ts +205 -0
- package/dist/web/themes.d.ts.map +1 -0
- package/dist/web/themes.js +277 -0
- package/dist/web/themes.js.map +1 -0
- package/dist/webmention/discovery.d.ts +51 -0
- package/dist/webmention/discovery.d.ts.map +1 -0
- package/dist/webmention/discovery.js +176 -0
- package/dist/webmention/discovery.js.map +1 -0
- package/dist/webmention/html.d.ts +71 -0
- package/dist/webmention/html.d.ts.map +1 -0
- package/dist/webmention/html.js +285 -0
- package/dist/webmention/html.js.map +1 -0
- package/dist/webmention/index.d.ts +12 -0
- package/dist/webmention/index.d.ts.map +1 -0
- package/dist/webmention/index.js +8 -0
- package/dist/webmention/index.js.map +1 -0
- package/dist/webmention/links.d.ts +18 -0
- package/dist/webmention/links.d.ts.map +1 -0
- package/dist/webmention/links.js +64 -0
- package/dist/webmention/links.js.map +1 -0
- package/dist/webmention/microformats.d.ts +93 -0
- package/dist/webmention/microformats.d.ts.map +1 -0
- package/dist/webmention/microformats.js +376 -0
- package/dist/webmention/microformats.js.map +1 -0
- package/dist/webmention/receive.d.ts +141 -0
- package/dist/webmention/receive.d.ts.map +1 -0
- package/dist/webmention/receive.js +264 -0
- package/dist/webmention/receive.js.map +1 -0
- package/dist/webmention/routes.d.ts +37 -0
- package/dist/webmention/routes.d.ts.map +1 -0
- package/dist/webmention/routes.js +75 -0
- package/dist/webmention/routes.js.map +1 -0
- package/dist/webmention/service.d.ts +94 -0
- package/dist/webmention/service.d.ts.map +1 -0
- package/dist/webmention/service.js +207 -0
- package/dist/webmention/service.js.map +1 -0
- package/package.json +11 -6
- package/templates/site/content/_data/site.json +1 -0
- package/templates/site/content/posts/2026-01-01-hello-world.md +5 -3
- package/templates/site/geekity.config.ts +11 -1
- package/templates/site/tsconfig.json +1 -1
- package/themes/default/README.md +1096 -50
- package/themes/default/layouts/404.njk +2 -3
- package/themes/default/layouts/author.njk +37 -0
- package/themes/default/layouts/base.njk +172 -31
- package/themes/default/layouts/category.njk +27 -0
- package/themes/default/layouts/front-page.njk +57 -0
- package/themes/default/layouts/home.njk +17 -1
- package/themes/default/layouts/page.njk +57 -5
- package/themes/default/layouts/post.njk +78 -19
- package/themes/default/layouts/search.njk +57 -0
- package/themes/default/layouts/tag.njk +3 -6
- package/themes/default/mail/comment-digest.html.njk +37 -0
- package/themes/default/mail/comment-digest.subject.njk +3 -0
- package/themes/default/mail/comment-digest.txt.njk +40 -0
- package/themes/default/mail/comment-pending.html.njk +27 -0
- package/themes/default/mail/comment-pending.subject.njk +2 -0
- package/themes/default/mail/comment-pending.txt.njk +24 -0
- package/themes/default/mail/comment-reply.html.njk +21 -0
- package/themes/default/mail/comment-reply.subject.njk +2 -0
- package/themes/default/mail/comment-reply.txt.njk +22 -0
- package/themes/default/mail/contact-message.html.njk +24 -0
- package/themes/default/mail/contact-message.subject.njk +5 -0
- package/themes/default/mail/contact-message.txt.njk +20 -0
- package/themes/default/mail/password-changed.html.njk +18 -0
- package/themes/default/mail/password-changed.subject.njk +2 -0
- package/themes/default/mail/password-changed.txt.njk +17 -0
- package/themes/default/mail/password-reset.html.njk +22 -0
- package/themes/default/mail/password-reset.subject.njk +2 -0
- package/themes/default/mail/password-reset.txt.njk +18 -0
- package/themes/default/mail/test.html.njk +14 -0
- package/themes/default/mail/test.subject.njk +2 -0
- package/themes/default/mail/test.txt.njk +12 -0
- package/themes/default/partials/archive.njk +27 -0
- package/themes/default/partials/bio.njk +77 -0
- package/themes/default/partials/comment-form.njk +109 -0
- package/themes/default/partials/contact-form.njk +88 -0
- package/themes/default/partials/conversation.njk +139 -0
- package/themes/default/partials/feeds.njk +26 -0
- package/themes/default/partials/jsonld.njk +120 -0
- package/themes/default/partials/pagination.njk +12 -6
- package/themes/default/partials/post-list.njk +51 -18
- package/themes/default/partials/search-form.njk +17 -0
- package/themes/default/partials/tags.njk +26 -5
- package/themes/default/static/highlight.js +4 -0
- package/themes/default/static/style.css +1119 -194
- package/themes/default/theme.json +5 -0
- package/admin/layouts/document-editor.njk +0 -167
- package/admin/layouts/federation.njk +0 -145
- package/admin/layouts/login.njk +0 -23
- package/admin/layouts/settings.njk +0 -116
- package/admin/layouts/setup.njk +0 -27
- package/admin/layouts/users.njk +0 -91
- /package/admin/{layouts/_flash.njk → components/flash.njk} +0 -0
|
@@ -1,228 +1,767 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* The default theme's only stylesheet. Plain CSS, no build step, no
|
|
3
|
-
* dependencies: a site that wants something else
|
|
4
|
-
* `
|
|
3
|
+
* dependencies: a site that wants something else puts its own
|
|
4
|
+
* `static/style.css` in the theme it wears and this file is never read again.
|
|
5
|
+
*
|
|
6
|
+
* The design is the andrewshell.org one (decision-16): a serif body and sans
|
|
7
|
+
* headings at an 18px root on a 1.2 minor-third scale, warm paper, near-black
|
|
8
|
+
* text, a rust primary and a blue secondary, one column at 42rem, links that
|
|
9
|
+
* invert on hover and a rule in the primary colour.
|
|
10
|
+
*
|
|
11
|
+
* The source is light only. The dark scheme below is the same design on dark
|
|
12
|
+
* paper, with the rust and the blue lifted until every text and background pair
|
|
13
|
+
* meets WCAG 2.2 AA — 4.5:1 for body text, 3:1 for large text, rules and focus
|
|
14
|
+
* outlines — in both schemes. `src/web/theme-colors.test.ts` reads the custom
|
|
15
|
+
* properties out of this file and computes the ratios, so a colour changed here
|
|
16
|
+
* that breaks one fails the build rather than a reader.
|
|
5
17
|
*/
|
|
6
18
|
|
|
7
19
|
:root {
|
|
20
|
+
/* Light and dark are both drawn below, so a browser may paint its own form
|
|
21
|
+
controls, scrollbars and spellcheck marks to match. */
|
|
8
22
|
color-scheme: light dark;
|
|
9
23
|
|
|
10
|
-
--
|
|
11
|
-
--
|
|
24
|
+
--maxWidth-xs: 20rem;
|
|
25
|
+
--maxWidth-sm: 24rem;
|
|
26
|
+
--maxWidth-md: 28rem;
|
|
27
|
+
--maxWidth-lg: 32rem;
|
|
28
|
+
--maxWidth-xl: 36rem;
|
|
29
|
+
--maxWidth-2xl: 42rem;
|
|
30
|
+
--maxWidth-3xl: 48rem;
|
|
31
|
+
--maxWidth-4xl: 56rem;
|
|
32
|
+
--maxWidth-wrapper: var(--maxWidth-2xl);
|
|
12
33
|
|
|
13
|
-
--
|
|
14
|
-
--
|
|
15
|
-
--
|
|
16
|
-
--
|
|
17
|
-
--
|
|
18
|
-
--
|
|
19
|
-
--
|
|
34
|
+
--spacing-0: 0;
|
|
35
|
+
--spacing-1: 0.25rem;
|
|
36
|
+
--spacing-2: 0.5rem;
|
|
37
|
+
--spacing-3: 0.75rem;
|
|
38
|
+
--spacing-4: 1rem;
|
|
39
|
+
--spacing-5: 1.25rem;
|
|
40
|
+
--spacing-6: 1.5rem;
|
|
41
|
+
--spacing-8: 2rem;
|
|
42
|
+
--spacing-10: 2.5rem;
|
|
43
|
+
--spacing-12: 3rem;
|
|
44
|
+
--spacing-16: 4rem;
|
|
45
|
+
--spacing-20: 5rem;
|
|
46
|
+
--spacing-24: 6rem;
|
|
47
|
+
--spacing-32: 8rem;
|
|
48
|
+
|
|
49
|
+
--fontFamily-sans: -apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
50
|
+
--fontFamily-serif: 'Iowan Old Style', 'Palatino Linotype', 'URW Palladio L', P052, serif;
|
|
51
|
+
--fontFamily-mono:
|
|
52
|
+
ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace;
|
|
53
|
+
--font-body: var(--fontFamily-serif);
|
|
54
|
+
--font-heading: var(--fontFamily-sans);
|
|
55
|
+
|
|
56
|
+
--fontWeight-normal: 400;
|
|
57
|
+
--fontWeight-medium: 500;
|
|
58
|
+
--fontWeight-semibold: 600;
|
|
59
|
+
--fontWeight-bold: 700;
|
|
60
|
+
--fontWeight-extrabold: 800;
|
|
61
|
+
--fontWeight-black: 900;
|
|
62
|
+
|
|
63
|
+
--fontSize-root: 18px;
|
|
64
|
+
--lineHeight-none: 1;
|
|
65
|
+
--lineHeight-tight: 1.1;
|
|
66
|
+
--lineHeight-normal: 1.5;
|
|
67
|
+
--lineHeight-relaxed: 1.625;
|
|
68
|
+
|
|
69
|
+
/* 1.200 minor third type scale */
|
|
70
|
+
--fontSize-0: 0.833rem;
|
|
71
|
+
--fontSize-1: 1rem;
|
|
72
|
+
--fontSize-2: 1.15rem;
|
|
73
|
+
--fontSize-3: 1.31rem;
|
|
74
|
+
--fontSize-4: 1.5rem;
|
|
75
|
+
--fontSize-5: 1.72rem;
|
|
76
|
+
--fontSize-6: 1.97rem;
|
|
77
|
+
--fontSize-7: 2.25rem;
|
|
78
|
+
|
|
79
|
+
--content-letter-spacing: -0.01em;
|
|
80
|
+
|
|
81
|
+
/* Colours. `body` is the paper and `text` the ink; `base`, `base-2` and
|
|
82
|
+
`base-3` are the surfaces that sit on the paper, warm, cool and raised.
|
|
83
|
+
`code-background` and `code-text` are a block of code, named rather than
|
|
84
|
+
folded into `base` so a highlighting theme has something to be measured
|
|
85
|
+
against (TASK-86). */
|
|
86
|
+
--color-body: #fdfcfb;
|
|
87
|
+
--color-text: #240b00;
|
|
88
|
+
--color-primary: #b33900;
|
|
89
|
+
--color-secondary: #007ab3;
|
|
90
|
+
--color-base: rgb(245 243 243);
|
|
91
|
+
--color-base-2: rgb(247 248 249);
|
|
92
|
+
--color-base-3: rgb(255 255 255);
|
|
93
|
+
--color-code-background: #f6f3f1;
|
|
94
|
+
--color-code-text: #240b00;
|
|
95
|
+
--color-error: #b3261e;
|
|
96
|
+
|
|
97
|
+
/* Syntax highlighting: the Tomorrow palette, light member (TASK-86). The
|
|
98
|
+
names are what each colour marks up, and the base16 slot they come from is
|
|
99
|
+
in the comment; the highlighter is highlight.js, whose base16 Tomorrow
|
|
100
|
+
theme is the mapping these follow.
|
|
101
|
+
|
|
102
|
+
Five of them are not the stock colour. Tomorrow was drawn for an editor,
|
|
103
|
+
where a faint comment is a feature; on this paper the stock greys, orange,
|
|
104
|
+
yellow, green and teal read at 1.7:1 to 3.5:1, so each was darkened along
|
|
105
|
+
its own hue until it made 4.5:1 and no further. `src/web/theme-colors.test.ts`
|
|
106
|
+
is what keeps that true. */
|
|
107
|
+
--color-code-comment: #6c6d6a; /* base03, stock #8e908c */
|
|
108
|
+
--color-code-tag: #6b6d6b; /* base04, stock #969896 */
|
|
109
|
+
--color-code-name: #c82829; /* base08 */
|
|
110
|
+
--color-code-literal: #a95608; /* base09, stock #f5871f */
|
|
111
|
+
--color-code-class: #846700; /* base0A, stock #eab700 */
|
|
112
|
+
--color-code-string: #5e7500; /* base0B, stock #718c00 */
|
|
113
|
+
--color-code-support: #30767a; /* base0C, stock #3e999f */
|
|
114
|
+
--color-code-function: #4271ae; /* base0D */
|
|
115
|
+
--color-code-keyword: #8959a8; /* base0E */
|
|
116
|
+
--color-code-meta: #945f52; /* base0F, stock #a3685a */
|
|
117
|
+
--color-code-added-background: #dff0d8;
|
|
118
|
+
--color-code-removed-background: #f8dcdc;
|
|
20
119
|
}
|
|
21
120
|
|
|
22
121
|
@media (prefers-color-scheme: dark) {
|
|
23
122
|
:root {
|
|
24
|
-
--
|
|
25
|
-
--
|
|
26
|
-
--
|
|
27
|
-
--
|
|
28
|
-
--
|
|
29
|
-
--
|
|
30
|
-
--
|
|
123
|
+
--color-body: #191110;
|
|
124
|
+
--color-text: #f4ece7;
|
|
125
|
+
--color-primary: #ef7a48;
|
|
126
|
+
--color-secondary: #3ea0d8;
|
|
127
|
+
--color-base: rgb(38 30 28);
|
|
128
|
+
--color-base-2: rgb(34 33 36);
|
|
129
|
+
--color-base-3: rgb(45 36 33);
|
|
130
|
+
--color-code-background: rgb(30 24 22);
|
|
131
|
+
--color-code-text: #f4ece7;
|
|
132
|
+
--color-error: #ff8093;
|
|
133
|
+
|
|
134
|
+
/* The other member of the family, Tomorrow Night — the palette both source
|
|
135
|
+
sites highlighted with, and the one highlight.js ships under that name.
|
|
136
|
+
Only base0F needed lifting off this darker paper. */
|
|
137
|
+
--color-code-comment: #999999; /* base03 */
|
|
138
|
+
--color-code-tag: #b4b7b4; /* base04 */
|
|
139
|
+
--color-code-name: #f2777a; /* base08 */
|
|
140
|
+
--color-code-literal: #f99157; /* base09 */
|
|
141
|
+
--color-code-class: #ffcc66; /* base0A */
|
|
142
|
+
--color-code-string: #99cc99; /* base0B */
|
|
143
|
+
--color-code-support: #66cccc; /* base0C */
|
|
144
|
+
--color-code-function: #6699cc; /* base0D */
|
|
145
|
+
--color-code-keyword: #cc99cc; /* base0E */
|
|
146
|
+
--color-code-meta: #ae786b; /* base0F, stock #a3685a */
|
|
147
|
+
--color-code-added-background: rgb(32 54 34);
|
|
148
|
+
--color-code-removed-background: rgb(64 30 30);
|
|
31
149
|
}
|
|
32
150
|
}
|
|
33
151
|
|
|
152
|
+
/* Reset. The source theme leans on a normalize file; the handful of rules it
|
|
153
|
+
actually depends on are folded in here instead, so the theme is one file. */
|
|
154
|
+
|
|
34
155
|
*,
|
|
35
156
|
*::before,
|
|
36
157
|
*::after {
|
|
37
158
|
box-sizing: border-box;
|
|
38
159
|
}
|
|
39
160
|
|
|
161
|
+
body,
|
|
162
|
+
h1,
|
|
163
|
+
h2,
|
|
164
|
+
h3,
|
|
165
|
+
h4,
|
|
166
|
+
h5,
|
|
167
|
+
h6,
|
|
168
|
+
p,
|
|
169
|
+
figure,
|
|
170
|
+
blockquote,
|
|
171
|
+
dl,
|
|
172
|
+
dd {
|
|
173
|
+
margin: 0;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/* HTML elements */
|
|
177
|
+
|
|
40
178
|
html {
|
|
179
|
+
font-size: var(--fontSize-root);
|
|
180
|
+
line-height: var(--lineHeight-relaxed);
|
|
41
181
|
-webkit-text-size-adjust: 100%;
|
|
182
|
+
-webkit-font-smoothing: antialiased;
|
|
183
|
+
-moz-osx-font-smoothing: grayscale;
|
|
42
184
|
}
|
|
43
185
|
|
|
44
186
|
body {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
1rem/1.6 system-ui,
|
|
51
|
-
-apple-system,
|
|
52
|
-
'Segoe UI',
|
|
53
|
-
Roboto,
|
|
54
|
-
sans-serif;
|
|
55
|
-
text-rendering: optimizeLegibility;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
a {
|
|
59
|
-
color: var(--accent);
|
|
60
|
-
text-decoration-thickness: 1px;
|
|
61
|
-
text-underline-offset: 0.15em;
|
|
187
|
+
background-color: var(--color-body);
|
|
188
|
+
color: var(--color-text);
|
|
189
|
+
font-family: var(--font-body);
|
|
190
|
+
font-size: var(--fontSize-1);
|
|
191
|
+
text-rendering: optimizeSpeed;
|
|
62
192
|
}
|
|
63
193
|
|
|
64
|
-
|
|
65
|
-
|
|
194
|
+
footer {
|
|
195
|
+
padding: var(--spacing-6) var(--spacing-0);
|
|
196
|
+
font-family: var(--fontFamily-sans);
|
|
66
197
|
}
|
|
67
198
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
199
|
+
nav,
|
|
200
|
+
.bio {
|
|
201
|
+
font-family: var(--fontFamily-sans);
|
|
71
202
|
}
|
|
72
203
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
204
|
+
hr {
|
|
205
|
+
height: 1px;
|
|
206
|
+
border: 0;
|
|
207
|
+
background: var(--color-primary);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
img {
|
|
211
|
+
max-width: 100%;
|
|
212
|
+
height: auto;
|
|
77
213
|
}
|
|
78
214
|
|
|
79
|
-
|
|
215
|
+
figure {
|
|
216
|
+
margin: var(--spacing-0) var(--spacing-0) var(--spacing-4) var(--spacing-0);
|
|
217
|
+
}
|
|
80
218
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
max-width: var(--measure);
|
|
85
|
-
margin-inline: auto;
|
|
219
|
+
figcaption {
|
|
220
|
+
font-size: var(--fontSize-0);
|
|
221
|
+
text-align: center;
|
|
86
222
|
}
|
|
87
223
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
border-bottom: 1px solid var(--rule);
|
|
224
|
+
time {
|
|
225
|
+
white-space: nowrap;
|
|
91
226
|
}
|
|
92
227
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
font-size:
|
|
96
|
-
|
|
97
|
-
|
|
228
|
+
small,
|
|
229
|
+
.small {
|
|
230
|
+
font-size: var(--fontSize-0);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/* Headings */
|
|
234
|
+
|
|
235
|
+
h1,
|
|
236
|
+
h2,
|
|
237
|
+
h3,
|
|
238
|
+
h4,
|
|
239
|
+
h5,
|
|
240
|
+
h6 {
|
|
241
|
+
margin-top: var(--spacing-12);
|
|
242
|
+
margin-bottom: var(--spacing-6);
|
|
243
|
+
color: var(--color-text);
|
|
244
|
+
font-family: var(--font-heading);
|
|
245
|
+
font-weight: var(--fontWeight-bold);
|
|
246
|
+
line-height: var(--lineHeight-tight);
|
|
247
|
+
letter-spacing: -0.025em;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
h1 {
|
|
251
|
+
font-size: var(--fontSize-6);
|
|
252
|
+
font-weight: var(--fontWeight-black);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
h2 {
|
|
256
|
+
font-size: var(--fontSize-5);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
h3 {
|
|
260
|
+
font-size: var(--fontSize-3);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
h4,
|
|
264
|
+
h5,
|
|
265
|
+
h6 {
|
|
266
|
+
font-size: var(--fontSize-1);
|
|
98
267
|
}
|
|
99
268
|
|
|
100
|
-
|
|
269
|
+
h2 > a,
|
|
270
|
+
h3 > a,
|
|
271
|
+
h4 > a,
|
|
272
|
+
h5 > a,
|
|
273
|
+
h6 > a {
|
|
101
274
|
color: inherit;
|
|
102
275
|
text-decoration: none;
|
|
103
276
|
}
|
|
104
277
|
|
|
105
|
-
.
|
|
106
|
-
|
|
107
|
-
|
|
278
|
+
/* Links. A link inverts on hover: the primary colour behind it and the paper
|
|
279
|
+
colour on top, which is the source design's one flourish. `:focus-visible`
|
|
280
|
+
draws an outline instead, so a keyboard reader sees where they are without
|
|
281
|
+
the colour swapping under them. */
|
|
282
|
+
|
|
283
|
+
a,
|
|
284
|
+
a:visited {
|
|
285
|
+
color: var(--color-primary);
|
|
108
286
|
}
|
|
109
287
|
|
|
110
|
-
|
|
111
|
-
|
|
288
|
+
a:hover,
|
|
289
|
+
a:focus {
|
|
290
|
+
background-color: var(--color-primary);
|
|
291
|
+
color: var(--color-body);
|
|
292
|
+
text-decoration: none;
|
|
112
293
|
}
|
|
113
294
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
color:
|
|
118
|
-
|
|
295
|
+
a:focus-visible {
|
|
296
|
+
outline: 2px solid var(--color-primary);
|
|
297
|
+
outline-offset: 2px;
|
|
298
|
+
background-color: transparent;
|
|
299
|
+
color: var(--color-primary);
|
|
119
300
|
}
|
|
120
301
|
|
|
121
|
-
|
|
122
|
-
|
|
302
|
+
header a,
|
|
303
|
+
header a:visited {
|
|
304
|
+
color: var(--color-text);
|
|
305
|
+
text-decoration: none;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
header a:hover,
|
|
309
|
+
header a:focus {
|
|
310
|
+
background-color: var(--color-primary);
|
|
311
|
+
color: var(--color-body);
|
|
312
|
+
text-decoration: none;
|
|
123
313
|
}
|
|
124
314
|
|
|
125
|
-
/*
|
|
315
|
+
/* Prose */
|
|
126
316
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
line-height: 1.2;
|
|
132
|
-
letter-spacing: -0.02em;
|
|
317
|
+
p {
|
|
318
|
+
margin: var(--spacing-0) var(--spacing-0) var(--spacing-4) var(--spacing-0);
|
|
319
|
+
padding: var(--spacing-0);
|
|
320
|
+
line-height: var(--lineHeight-relaxed);
|
|
133
321
|
}
|
|
134
322
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
323
|
+
ul,
|
|
324
|
+
ol {
|
|
325
|
+
margin-top: var(--spacing-0);
|
|
326
|
+
margin-right: var(--spacing-0);
|
|
327
|
+
margin-bottom: var(--spacing-8);
|
|
328
|
+
margin-left: var(--spacing-4);
|
|
329
|
+
padding: var(--spacing-0);
|
|
330
|
+
list-style-position: inside;
|
|
331
|
+
list-style-image: none;
|
|
139
332
|
}
|
|
140
333
|
|
|
141
|
-
|
|
334
|
+
ul li,
|
|
335
|
+
ol li {
|
|
336
|
+
margin-bottom: var(--spacing-0);
|
|
337
|
+
padding-left: var(--spacing-0);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
li > p {
|
|
341
|
+
display: inline;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
li *:last-child {
|
|
345
|
+
margin-bottom: var(--spacing-0);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
details {
|
|
349
|
+
margin-left: var(--spacing-4);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
details summary {
|
|
353
|
+
cursor: pointer;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
.list-none {
|
|
357
|
+
list-style-type: none;
|
|
358
|
+
}
|
|
142
359
|
|
|
143
|
-
.
|
|
360
|
+
.hlist {
|
|
361
|
+
display: flex;
|
|
362
|
+
flex-wrap: wrap;
|
|
363
|
+
margin: 0;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.hlist li {
|
|
144
367
|
margin: 0;
|
|
368
|
+
padding: 0 0.5em 0 0;
|
|
369
|
+
list-style-type: none;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
blockquote {
|
|
373
|
+
margin: var(--spacing-8) var(--spacing-8) var(--spacing-8) var(--spacing-0);
|
|
374
|
+
padding: var(--spacing-0) var(--spacing-0) var(--spacing-0) var(--spacing-6);
|
|
375
|
+
border-left: var(--spacing-1) solid var(--color-secondary);
|
|
376
|
+
color: var(--color-secondary);
|
|
377
|
+
font-size: var(--fontSize-2);
|
|
378
|
+
font-style: italic;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
blockquote > :last-child {
|
|
382
|
+
margin-bottom: var(--spacing-0);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
blockquote > ul,
|
|
386
|
+
blockquote > ol {
|
|
387
|
+
list-style-position: inside;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
table {
|
|
391
|
+
width: 100%;
|
|
392
|
+
margin-bottom: var(--spacing-8);
|
|
393
|
+
border-collapse: collapse;
|
|
394
|
+
border-spacing: 0.25rem;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
table thead tr th {
|
|
398
|
+
border-bottom: 1px solid var(--color-primary);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
pre,
|
|
402
|
+
code,
|
|
403
|
+
kbd,
|
|
404
|
+
samp {
|
|
405
|
+
font-family: var(--fontFamily-mono);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
code {
|
|
409
|
+
padding: 0.1em 0.3em;
|
|
410
|
+
border-radius: 4px;
|
|
411
|
+
background-color: var(--color-code-background);
|
|
412
|
+
color: var(--color-code-text);
|
|
413
|
+
font-size: 0.9em;
|
|
414
|
+
/* A file path or an identifier is one long word, and a narrow screen would
|
|
415
|
+
otherwise carry it off the side of the page. A block of code scrolls
|
|
416
|
+
instead — see `pre` below. */
|
|
417
|
+
overflow-wrap: break-word;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
pre {
|
|
421
|
+
overflow-x: auto;
|
|
422
|
+
margin-bottom: var(--spacing-8);
|
|
423
|
+
padding: var(--spacing-3) var(--spacing-4);
|
|
424
|
+
border-radius: 6px;
|
|
425
|
+
background-color: var(--color-code-background);
|
|
426
|
+
color: var(--color-code-text);
|
|
427
|
+
font-size: var(--fontSize-0);
|
|
428
|
+
line-height: var(--lineHeight-normal);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
pre code {
|
|
145
432
|
padding: 0;
|
|
146
|
-
|
|
433
|
+
border-radius: 0;
|
|
434
|
+
background: none;
|
|
435
|
+
font-size: inherit;
|
|
147
436
|
}
|
|
148
437
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
438
|
+
/* Syntax highlighting (TASK-86).
|
|
439
|
+
*
|
|
440
|
+
* The CMS renders a fenced block as `pre > code.language-x` and highlights
|
|
441
|
+
* nothing; `static/highlight.js` marks the tokens up on the client, and these
|
|
442
|
+
* are its colours. The scopes and the slots they map to are highlight.js's own
|
|
443
|
+
* base16 Tomorrow theme, so a token it invents later lands somewhere sensible
|
|
444
|
+
* rather than nowhere.
|
|
445
|
+
*
|
|
446
|
+
* Every colour is a custom property, so a site that wants another palette
|
|
447
|
+
* redefines a dozen tokens instead of writing a syntax theme. Delimiters,
|
|
448
|
+
* operators and substitutions are deliberately the block's own ink: they are
|
|
449
|
+
* most of the characters on screen and a colour there is noise.
|
|
450
|
+
*/
|
|
451
|
+
|
|
452
|
+
.hljs-comment {
|
|
453
|
+
color: var(--color-code-comment);
|
|
153
454
|
}
|
|
154
455
|
|
|
155
|
-
.
|
|
156
|
-
|
|
157
|
-
font-size: 1.3rem;
|
|
158
|
-
line-height: 1.3;
|
|
456
|
+
.hljs-tag {
|
|
457
|
+
color: var(--color-code-tag);
|
|
159
458
|
}
|
|
160
459
|
|
|
161
|
-
.
|
|
162
|
-
|
|
460
|
+
.hljs-subst,
|
|
461
|
+
.hljs-punctuation,
|
|
462
|
+
.hljs-operator {
|
|
463
|
+
color: var(--color-code-text);
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.hljs-bullet,
|
|
467
|
+
.hljs-variable,
|
|
468
|
+
.hljs-template-variable,
|
|
469
|
+
.hljs-selector-tag,
|
|
470
|
+
.hljs-name {
|
|
471
|
+
color: var(--color-code-name);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
.hljs-symbol,
|
|
475
|
+
.hljs-number,
|
|
476
|
+
.hljs-link,
|
|
477
|
+
.hljs-attr,
|
|
478
|
+
.hljs-variable.constant_,
|
|
479
|
+
.hljs-literal {
|
|
480
|
+
color: var(--color-code-literal);
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
.hljs-title,
|
|
484
|
+
.hljs-class .hljs-title,
|
|
485
|
+
.hljs-title.class_ {
|
|
486
|
+
color: var(--color-code-class);
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
.hljs-strong {
|
|
490
|
+
color: var(--color-code-class);
|
|
491
|
+
font-weight: var(--fontWeight-bold);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
.hljs-code,
|
|
495
|
+
.hljs-string,
|
|
496
|
+
.hljs-title.class_.inherited__ {
|
|
497
|
+
color: var(--color-code-string);
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
.hljs-built_in,
|
|
501
|
+
.hljs-doctag,
|
|
502
|
+
.hljs-quote,
|
|
503
|
+
.hljs-regexp,
|
|
504
|
+
.hljs-keyword.hljs-atrule {
|
|
505
|
+
color: var(--color-code-support);
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
.hljs-attribute,
|
|
509
|
+
.hljs-function .hljs-title,
|
|
510
|
+
.hljs-section,
|
|
511
|
+
.hljs-title.function_ {
|
|
512
|
+
color: var(--color-code-function);
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
.hljs-keyword,
|
|
516
|
+
.hljs-template-tag,
|
|
517
|
+
.hljs-type {
|
|
518
|
+
color: var(--color-code-keyword);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
.hljs-emphasis {
|
|
522
|
+
color: var(--color-code-keyword);
|
|
523
|
+
font-style: italic;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
.hljs-meta,
|
|
527
|
+
.hljs-meta .hljs-keyword,
|
|
528
|
+
.hljs-meta .hljs-string {
|
|
529
|
+
color: var(--color-code-meta);
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/* A diff reads by the line, not by the token, which is what prism-diff.css did
|
|
533
|
+
* on the site this design comes from: the whole line takes a tint out to the
|
|
534
|
+
* edges of the block — the negative margin cancels the `pre` padding and the
|
|
535
|
+
* padding puts it back — and keeps the block's own ink, which is the pair the
|
|
536
|
+
* contrast test checks. The `+` and the `-` stay in the text, so the meaning
|
|
537
|
+
* does not rest on the colour alone.
|
|
538
|
+
*/
|
|
539
|
+
|
|
540
|
+
.hljs-addition,
|
|
541
|
+
.hljs-deletion {
|
|
542
|
+
display: block;
|
|
543
|
+
margin-right: calc(-1 * var(--spacing-4));
|
|
544
|
+
margin-left: calc(-1 * var(--spacing-4));
|
|
545
|
+
padding-right: var(--spacing-4);
|
|
546
|
+
padding-left: var(--spacing-4);
|
|
547
|
+
color: var(--color-code-text);
|
|
163
548
|
text-decoration: none;
|
|
164
549
|
}
|
|
165
550
|
|
|
166
|
-
.
|
|
167
|
-
|
|
168
|
-
|
|
551
|
+
.hljs-addition {
|
|
552
|
+
background-color: var(--color-code-added-background);
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
.hljs-deletion {
|
|
556
|
+
background-color: var(--color-code-removed-background);
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
/* Screen reader text. The skip link is this until it is focused, and then it
|
|
560
|
+
is a box at the top left of the page. */
|
|
561
|
+
|
|
562
|
+
.screen-reader-text {
|
|
563
|
+
position: absolute;
|
|
564
|
+
width: 1px;
|
|
565
|
+
height: 1px;
|
|
566
|
+
margin: -1px;
|
|
567
|
+
padding: 0;
|
|
568
|
+
overflow: hidden;
|
|
569
|
+
border: 0;
|
|
570
|
+
clip-path: inset(50%);
|
|
571
|
+
word-wrap: normal !important;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
.screen-reader-text:focus {
|
|
575
|
+
display: block;
|
|
576
|
+
width: auto;
|
|
577
|
+
height: auto;
|
|
578
|
+
top: var(--spacing-2);
|
|
579
|
+
left: var(--spacing-2);
|
|
580
|
+
padding: var(--spacing-4);
|
|
581
|
+
clip-path: none;
|
|
582
|
+
background-color: var(--color-base-3);
|
|
583
|
+
color: var(--color-text);
|
|
584
|
+
font-size: var(--fontSize-1);
|
|
585
|
+
font-weight: var(--fontWeight-bold);
|
|
586
|
+
line-height: normal;
|
|
587
|
+
text-decoration: none;
|
|
588
|
+
z-index: 100000;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
/* The page shell */
|
|
592
|
+
|
|
593
|
+
.global-wrapper {
|
|
594
|
+
max-width: var(--maxWidth-wrapper);
|
|
595
|
+
margin: var(--spacing-0) auto;
|
|
596
|
+
padding: var(--spacing-10) var(--spacing-5);
|
|
169
597
|
}
|
|
170
598
|
|
|
171
|
-
.
|
|
172
|
-
margin-bottom:
|
|
599
|
+
.global-wrapper[data-is-root-path='true'] .bio {
|
|
600
|
+
margin-bottom: var(--spacing-20);
|
|
173
601
|
}
|
|
174
602
|
|
|
175
|
-
.
|
|
176
|
-
margin:
|
|
603
|
+
.global-header {
|
|
604
|
+
margin-bottom: var(--spacing-12);
|
|
177
605
|
}
|
|
178
606
|
|
|
179
|
-
.
|
|
180
|
-
|
|
181
|
-
|
|
607
|
+
.main-heading {
|
|
608
|
+
margin: 0;
|
|
609
|
+
font-size: var(--fontSize-7);
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
.header-link-home {
|
|
613
|
+
font-family: var(--font-heading);
|
|
614
|
+
font-size: var(--fontSize-2);
|
|
615
|
+
font-weight: var(--fontWeight-bold);
|
|
616
|
+
text-decoration: none;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
/* An entry: a post or a page (TASK-83). The source design's own rules — the
|
|
620
|
+
title tight against the words under it, a subtitle in the heading font —
|
|
621
|
+
plus the small line the `e-content` ends on, which carries the permalink,
|
|
622
|
+
the published date and, when it is a different day, the updated one. */
|
|
623
|
+
|
|
624
|
+
.blog-post header h1 {
|
|
625
|
+
margin: var(--spacing-0) var(--spacing-0) var(--spacing-4) var(--spacing-0);
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
.blog-post header p {
|
|
629
|
+
font-family: var(--font-heading);
|
|
630
|
+
font-size: var(--fontSize-2);
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
.entry-meta,
|
|
634
|
+
.page-meta {
|
|
635
|
+
margin-top: var(--spacing-8);
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
/* A page usually carries no date, and then this line has nothing in it. The
|
|
639
|
+
layout prints it anyway, so a site has one hook wherever it is; here is
|
|
640
|
+
where it disappears. */
|
|
641
|
+
.entry-meta:empty,
|
|
642
|
+
.page-meta:empty {
|
|
643
|
+
display: none;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
/* The bio, which the entry footer prints and an author archive heads with
|
|
647
|
+
(TASK-83). */
|
|
648
|
+
|
|
649
|
+
.bio {
|
|
650
|
+
display: flex;
|
|
651
|
+
align-items: center;
|
|
652
|
+
margin-bottom: var(--spacing-16);
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
.bio p {
|
|
656
|
+
margin-bottom: var(--spacing-0);
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
/* The name reads as the heading of the card; the source theme printed a
|
|
660
|
+
<strong> around it, which is styling in the markup. */
|
|
661
|
+
.bio .p-name {
|
|
662
|
+
font-weight: var(--fontWeight-bold);
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
.bio-note {
|
|
666
|
+
margin-top: var(--spacing-2);
|
|
667
|
+
font-style: italic;
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
/* The site menu, and an author archive's `rel="me"` links: both horizontal
|
|
671
|
+
lists under the credit, small, in the heading font like every other piece
|
|
672
|
+
of navigation. */
|
|
673
|
+
.bio .site-nav,
|
|
674
|
+
.bio-links {
|
|
675
|
+
margin-top: var(--spacing-2);
|
|
676
|
+
font-size: var(--fontSize-0);
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
.bio-avatar {
|
|
680
|
+
display: inline-block;
|
|
681
|
+
min-width: 55px;
|
|
682
|
+
margin-right: var(--spacing-4);
|
|
683
|
+
margin-bottom: var(--spacing-0);
|
|
684
|
+
border: 3px solid var(--color-base-3);
|
|
685
|
+
border-radius: 50%;
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
.bio-avatar img {
|
|
689
|
+
display: block;
|
|
690
|
+
width: 50px;
|
|
691
|
+
height: 50px;
|
|
692
|
+
border-radius: 50%;
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
.circle {
|
|
696
|
+
border-radius: 50%;
|
|
182
697
|
}
|
|
183
698
|
|
|
184
|
-
/*
|
|
699
|
+
/* A listing: the feed of entries, and what heads one (TASK-82). The source
|
|
700
|
+
design's own rules, on the tokens above. The feed itself takes no styling —
|
|
701
|
+
it is a stack of articles at the measure — and what makes it read as a list
|
|
702
|
+
is the rule between two of them and the small meta line under each. */
|
|
185
703
|
|
|
186
|
-
.
|
|
704
|
+
.feed-title {
|
|
705
|
+
margin: var(--spacing-0) var(--spacing-0) var(--spacing-4) var(--spacing-0);
|
|
706
|
+
padding: var(--spacing-0);
|
|
707
|
+
font-size: var(--fontSize-3);
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
.feed-separator {
|
|
711
|
+
margin: var(--spacing-2) var(--spacing-0) var(--spacing-4) var(--spacing-0);
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
.feed-meta {
|
|
187
715
|
display: flex;
|
|
188
716
|
flex-wrap: wrap;
|
|
189
|
-
gap:
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
717
|
+
gap: var(--spacing-2);
|
|
718
|
+
align-items: baseline;
|
|
719
|
+
font-size: 70%;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
.feed-meta p {
|
|
723
|
+
margin: var(--spacing-0);
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
.post-categories {
|
|
727
|
+
margin-top: var(--spacing-2);
|
|
728
|
+
margin-bottom: var(--spacing-0);
|
|
729
|
+
font-size: 70%;
|
|
193
730
|
}
|
|
194
731
|
|
|
195
|
-
.
|
|
732
|
+
.post-categories a {
|
|
196
733
|
display: inline-block;
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
734
|
+
margin-right: var(--spacing-2);
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
/* The categories are already small; inside the meta line they would be small
|
|
738
|
+
twice over, so there they are the size of the line they sit on. */
|
|
739
|
+
.feed-meta .post-categories {
|
|
740
|
+
font-size: 100%;
|
|
204
741
|
}
|
|
205
742
|
|
|
206
|
-
.
|
|
207
|
-
|
|
208
|
-
color: var(--ink);
|
|
743
|
+
.category-header {
|
|
744
|
+
margin-bottom: var(--spacing-8);
|
|
209
745
|
}
|
|
210
746
|
|
|
211
|
-
|
|
747
|
+
.category-description {
|
|
748
|
+
margin-top: var(--spacing-2);
|
|
749
|
+
font-style: italic;
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
/* Pagination: two arrows under a listing, the previous one at the left edge
|
|
753
|
+
and the next at the right however few there are. */
|
|
212
754
|
|
|
213
755
|
.pagination {
|
|
214
756
|
display: flex;
|
|
215
|
-
gap:
|
|
757
|
+
gap: var(--spacing-4);
|
|
216
758
|
align-items: baseline;
|
|
217
759
|
justify-content: space-between;
|
|
218
|
-
margin-top:
|
|
219
|
-
padding-top:
|
|
220
|
-
border-top: 1px solid var(--
|
|
221
|
-
font-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
.pagination-position {
|
|
225
|
-
color: var(--ink-muted);
|
|
760
|
+
margin-top: var(--spacing-12);
|
|
761
|
+
padding-top: var(--spacing-5);
|
|
762
|
+
border-top: 1px solid var(--color-base);
|
|
763
|
+
font-family: var(--font-heading);
|
|
764
|
+
font-size: var(--fontSize-0);
|
|
226
765
|
}
|
|
227
766
|
|
|
228
767
|
.pagination-previous {
|
|
@@ -233,95 +772,481 @@ a:visited {
|
|
|
233
772
|
margin-inline-start: auto;
|
|
234
773
|
}
|
|
235
774
|
|
|
236
|
-
/*
|
|
775
|
+
/* Where a post links its neighbours, which the entry layout prints (TASK-83). */
|
|
237
776
|
|
|
238
|
-
.post-
|
|
239
|
-
|
|
240
|
-
|
|
777
|
+
.blog-post-nav {
|
|
778
|
+
font-family: var(--font-heading);
|
|
779
|
+
font-size: var(--fontSize-0);
|
|
241
780
|
}
|
|
242
781
|
|
|
243
|
-
.post-
|
|
244
|
-
|
|
245
|
-
|
|
782
|
+
.blog-post-nav ul {
|
|
783
|
+
display: flex;
|
|
784
|
+
flex-wrap: wrap;
|
|
785
|
+
justify-content: space-between;
|
|
786
|
+
margin: var(--spacing-0);
|
|
787
|
+
padding: 0;
|
|
788
|
+
list-style: none;
|
|
246
789
|
}
|
|
247
790
|
|
|
248
|
-
.
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
791
|
+
/* Titles: what heads a listing, a 404 and an author archive. The source theme
|
|
792
|
+
prints none of these — it has no archive heading at all — so they are the
|
|
793
|
+
theme's own, sized off the same scale. An entry's own title is
|
|
794
|
+
`.blog-post header h1` above. */
|
|
795
|
+
|
|
796
|
+
.page-title {
|
|
797
|
+
margin: 0 0 var(--spacing-2);
|
|
798
|
+
font-size: var(--fontSize-6);
|
|
253
799
|
}
|
|
254
800
|
|
|
255
|
-
.
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
font-size: 1.1rem;
|
|
801
|
+
.empty {
|
|
802
|
+
font-family: var(--font-heading);
|
|
803
|
+
font-size: var(--fontSize-0);
|
|
259
804
|
}
|
|
260
805
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
806
|
+
/* The search box (TASK-22): a field and a button on one line, in the footer
|
|
807
|
+
of every page and at the top of the search page. The field is drawn the way
|
|
808
|
+
the comment form's are, so the site has one look for a place to type. */
|
|
809
|
+
|
|
810
|
+
.search-form {
|
|
811
|
+
display: flex;
|
|
812
|
+
gap: var(--spacing-2);
|
|
813
|
+
margin: 0 0 var(--spacing-4);
|
|
814
|
+
font-family: var(--font-heading);
|
|
265
815
|
}
|
|
266
816
|
|
|
267
|
-
.
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
padding-inline-start: 1rem;
|
|
271
|
-
border-inline-start: 3px solid var(--rule);
|
|
272
|
-
color: var(--ink-muted);
|
|
817
|
+
.search-form label {
|
|
818
|
+
flex: 1;
|
|
819
|
+
min-width: 0;
|
|
273
820
|
}
|
|
274
821
|
|
|
275
|
-
.
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
font-
|
|
282
|
-
|
|
822
|
+
.search-form input[type='search'] {
|
|
823
|
+
width: 100%;
|
|
824
|
+
padding: var(--spacing-2);
|
|
825
|
+
border: 1px solid var(--color-base);
|
|
826
|
+
background-color: var(--color-base-3);
|
|
827
|
+
color: var(--color-text);
|
|
828
|
+
font-family: var(--font-body);
|
|
829
|
+
font-size: var(--fontSize-1);
|
|
283
830
|
}
|
|
284
831
|
|
|
285
|
-
.
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
border-
|
|
289
|
-
background: var(--paper-sunk);
|
|
290
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
291
|
-
font-size: 0.9em;
|
|
832
|
+
.search-form input[type='search']:focus-visible {
|
|
833
|
+
outline: 2px solid var(--color-primary);
|
|
834
|
+
outline-offset: -1px;
|
|
835
|
+
border-color: var(--color-primary);
|
|
292
836
|
}
|
|
293
837
|
|
|
294
|
-
.
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
background:
|
|
298
|
-
|
|
838
|
+
.search-form button {
|
|
839
|
+
padding: var(--spacing-2) var(--spacing-4);
|
|
840
|
+
border: none;
|
|
841
|
+
background-color: var(--color-primary);
|
|
842
|
+
color: var(--color-body);
|
|
843
|
+
font-family: var(--font-heading);
|
|
844
|
+
font-size: var(--fontSize-1);
|
|
845
|
+
cursor: pointer;
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
.search-form button:hover,
|
|
849
|
+
.search-form button:focus-visible {
|
|
850
|
+
opacity: 0.85;
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
.search-summary {
|
|
854
|
+
font-family: var(--font-heading);
|
|
855
|
+
font-size: var(--fontSize-0);
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
.search-result {
|
|
859
|
+
margin: 0 0 var(--spacing-8);
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
.search-result .feed-title {
|
|
863
|
+
margin-bottom: var(--spacing-2);
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
/* A matched word is marked by weight and an underline in the primary colour
|
|
867
|
+
rather than by a highlighter background, so it adds no colour pair the
|
|
868
|
+
contrast test would have to prove in both schemes. */
|
|
869
|
+
|
|
870
|
+
.search-snippet mark {
|
|
871
|
+
background-color: transparent;
|
|
872
|
+
color: inherit;
|
|
873
|
+
font-weight: var(--fontWeight-bold);
|
|
874
|
+
text-decoration: underline var(--color-primary);
|
|
875
|
+
text-underline-offset: 0.15em;
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
/* An author archive (TASK-67): the person above their posts. The same URL is
|
|
879
|
+
their ActivityPub actor, so this is the page a follower sees when they click
|
|
880
|
+
through from somewhere else on the fediverse. The person themselves is the
|
|
881
|
+
bio above; this is only what is left, the heading over it. */
|
|
882
|
+
|
|
883
|
+
.author-header {
|
|
884
|
+
margin-bottom: var(--spacing-4);
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
/* The front page (TASK-85): the site's own words, then Recent Posts, then
|
|
888
|
+
where to go next. Almost nothing is needed — the words are `.e-content`
|
|
889
|
+
below, the posts are the feed above, and the heading over them is an
|
|
890
|
+
ordinary `h2` — so this is only the line of links, which follows a feed
|
|
891
|
+
rather than a paragraph and needs the air a paragraph would already have. */
|
|
892
|
+
|
|
893
|
+
.front-links {
|
|
894
|
+
margin-top: var(--spacing-8);
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
/* An archive page: every post there has ever been, under a heading per month.
|
|
898
|
+
The source design's essays page is plain headings over `ol.list-none` and
|
|
899
|
+
nothing else, so the prose rules draw it; what is here only closes the gap
|
|
900
|
+
between a month and its own posts, which at the prose spacing reads as two
|
|
901
|
+
things rather than as one. */
|
|
902
|
+
|
|
903
|
+
.archive h2 {
|
|
904
|
+
margin-bottom: var(--spacing-2);
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
/* Body copy: whatever a document's words render into, which is the entry's
|
|
908
|
+
`section.e-content` and the `div.page-body.e-content` a posts page prints
|
|
909
|
+
its own words in. */
|
|
910
|
+
|
|
911
|
+
.e-content {
|
|
912
|
+
overflow-wrap: break-word;
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
.e-content > :first-child {
|
|
916
|
+
margin-top: 0;
|
|
299
917
|
}
|
|
300
918
|
|
|
301
|
-
.
|
|
302
|
-
.page-body table {
|
|
919
|
+
.e-content table {
|
|
303
920
|
display: block;
|
|
304
921
|
overflow-x: auto;
|
|
305
|
-
border-collapse: collapse;
|
|
306
922
|
}
|
|
307
923
|
|
|
308
|
-
.
|
|
309
|
-
.
|
|
310
|
-
|
|
311
|
-
.page-body td {
|
|
312
|
-
padding: 0.4rem 0.75rem;
|
|
313
|
-
border: 1px solid var(--rule);
|
|
924
|
+
.e-content th,
|
|
925
|
+
.e-content td {
|
|
926
|
+
padding: var(--spacing-1) var(--spacing-3);
|
|
314
927
|
text-align: start;
|
|
315
928
|
}
|
|
316
929
|
|
|
317
930
|
.footnotes {
|
|
318
|
-
margin-top:
|
|
319
|
-
padding-top:
|
|
320
|
-
border-top: 1px solid var(--
|
|
321
|
-
|
|
322
|
-
|
|
931
|
+
margin-top: var(--spacing-10);
|
|
932
|
+
padding-top: var(--spacing-4);
|
|
933
|
+
border-top: 1px solid var(--color-base);
|
|
934
|
+
font-size: var(--fontSize-0);
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
.footnote-item p {
|
|
938
|
+
display: inline;
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
/* Reactions: the likes, the boosts and the pages that mentioned a post,
|
|
942
|
+
grouped by kind as facepiles of small round avatars (TASK-84). */
|
|
943
|
+
|
|
944
|
+
.reactions-section {
|
|
945
|
+
margin-top: var(--spacing-12);
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
.reaction-group {
|
|
949
|
+
display: flex;
|
|
950
|
+
align-items: center;
|
|
951
|
+
gap: var(--spacing-3);
|
|
952
|
+
margin-bottom: var(--spacing-3);
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
.reaction-title {
|
|
956
|
+
margin: 0;
|
|
957
|
+
font-family: var(--font-heading);
|
|
958
|
+
font-size: var(--fontSize-1);
|
|
959
|
+
white-space: nowrap;
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
.facepile {
|
|
963
|
+
display: flex;
|
|
964
|
+
flex-wrap: wrap;
|
|
965
|
+
gap: var(--spacing-1);
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
.facepile a,
|
|
969
|
+
.facepile span {
|
|
970
|
+
display: inline-block;
|
|
971
|
+
line-height: 0;
|
|
972
|
+
text-decoration: none;
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
/* A face is a picture of somebody: the block of colour a link takes on hover
|
|
976
|
+
everywhere else would sit behind it as a frame, so it is taken back off. */
|
|
977
|
+
|
|
978
|
+
.facepile a:hover,
|
|
979
|
+
.facepile a:focus {
|
|
980
|
+
background-color: transparent;
|
|
981
|
+
color: var(--color-primary);
|
|
982
|
+
text-decoration: underline;
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
.facepile img {
|
|
986
|
+
display: block;
|
|
987
|
+
border-radius: 50%;
|
|
323
988
|
}
|
|
324
989
|
|
|
325
|
-
|
|
326
|
-
|
|
990
|
+
/* A reaction with no avatar has nothing to recognise anybody by, so the emoji
|
|
991
|
+
badge of its kind stands in and the name is printed beside it — which needs
|
|
992
|
+
the line box the faces above do without. */
|
|
993
|
+
|
|
994
|
+
.facepile a:has(.reaction-name),
|
|
995
|
+
.facepile span:has(.reaction-name) {
|
|
996
|
+
display: inline-flex;
|
|
997
|
+
align-items: center;
|
|
998
|
+
gap: var(--spacing-1);
|
|
999
|
+
font-family: var(--font-heading);
|
|
1000
|
+
font-size: var(--fontSize-0);
|
|
1001
|
+
line-height: normal;
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
.reaction-icon {
|
|
1005
|
+
display: inline-block;
|
|
1006
|
+
width: 2rem;
|
|
1007
|
+
height: 2rem;
|
|
1008
|
+
border-radius: 50%;
|
|
1009
|
+
background-color: var(--color-base);
|
|
1010
|
+
line-height: 2rem;
|
|
1011
|
+
text-align: center;
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
/* The thread under a post: the replies from every door, each one an h-entry
|
|
1015
|
+
with its author, its time and its words, and answers nested inside it. */
|
|
1016
|
+
|
|
1017
|
+
.comments-area {
|
|
1018
|
+
margin-top: var(--spacing-12);
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
.comments-title {
|
|
1022
|
+
margin: 0 0 var(--spacing-8);
|
|
1023
|
+
font-size: var(--fontSize-4);
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
.comment-list,
|
|
1027
|
+
.comment-list .children {
|
|
1028
|
+
margin: 0;
|
|
1029
|
+
padding: 0;
|
|
1030
|
+
list-style: none;
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
.comment-list .children {
|
|
1034
|
+
margin-left: var(--spacing-8);
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
.comment-body {
|
|
1038
|
+
padding: var(--spacing-4) 0;
|
|
1039
|
+
border-bottom: 1px solid var(--color-base);
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
.comment-author {
|
|
1043
|
+
display: flex;
|
|
1044
|
+
align-items: center;
|
|
1045
|
+
gap: var(--spacing-2);
|
|
1046
|
+
font-family: var(--font-heading);
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
.comment-author .avatar {
|
|
1050
|
+
border-radius: 50%;
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1053
|
+
.comment-metadata {
|
|
1054
|
+
margin-bottom: var(--spacing-2);
|
|
1055
|
+
font-family: var(--font-heading);
|
|
1056
|
+
font-size: var(--fontSize-0);
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
/* The permalink is the whole date line, so it is the ink of the page rather
|
|
1060
|
+
than a link's colour until somebody points at it. */
|
|
1061
|
+
|
|
1062
|
+
.comment-metadata a {
|
|
1063
|
+
color: var(--color-text);
|
|
1064
|
+
text-decoration: none;
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
.comment-metadata a:hover,
|
|
1068
|
+
.comment-metadata a:focus {
|
|
1069
|
+
background-color: transparent;
|
|
1070
|
+
color: var(--color-primary);
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
.comment-content {
|
|
1074
|
+
margin-top: var(--spacing-2);
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
.comment-content > :last-child {
|
|
1078
|
+
margin-bottom: 0;
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
.reply {
|
|
1082
|
+
margin-top: var(--spacing-2);
|
|
1083
|
+
font-family: var(--font-heading);
|
|
1084
|
+
font-size: var(--fontSize-0);
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
.no-comments {
|
|
1088
|
+
font-family: var(--font-heading);
|
|
1089
|
+
font-style: italic;
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
/* The comment form under an open post, and the contact form on a page that
|
|
1093
|
+
asked for one. One set of rules rather than two: they are the same kind of
|
|
1094
|
+
form, the contact form wears `comment-respond` to say so, and a site
|
|
1095
|
+
restyling one cannot leave the other behind. */
|
|
1096
|
+
|
|
1097
|
+
.comment-respond {
|
|
1098
|
+
margin-top: var(--spacing-8);
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
.comment-respond .comment-reply-title,
|
|
1102
|
+
.comment-respond .contact-form-title {
|
|
1103
|
+
margin: 0 0 var(--spacing-4);
|
|
1104
|
+
font-size: var(--fontSize-4);
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1107
|
+
.comment-respond label {
|
|
1108
|
+
display: block;
|
|
1109
|
+
margin-bottom: var(--spacing-1);
|
|
1110
|
+
font-family: var(--font-heading);
|
|
1111
|
+
font-size: var(--fontSize-0);
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
.comment-field,
|
|
1115
|
+
.contact-field,
|
|
1116
|
+
.comment-check {
|
|
1117
|
+
margin: 0 0 var(--spacing-4);
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
/* The one label that belongs beside its field rather than over it. */
|
|
1121
|
+
|
|
1122
|
+
.comment-check label {
|
|
1123
|
+
display: inline;
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
.comment-respond input[type='text'],
|
|
1127
|
+
.comment-respond input[type='email'],
|
|
1128
|
+
.comment-respond input[type='url'],
|
|
1129
|
+
.comment-respond textarea {
|
|
1130
|
+
width: 100%;
|
|
1131
|
+
padding: var(--spacing-2);
|
|
1132
|
+
border: 1px solid var(--color-base);
|
|
1133
|
+
background-color: var(--color-base-3);
|
|
1134
|
+
color: var(--color-text);
|
|
1135
|
+
font-family: var(--font-body);
|
|
1136
|
+
font-size: var(--fontSize-1);
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
.comment-respond input[type='text']:focus-visible,
|
|
1140
|
+
.comment-respond input[type='email']:focus-visible,
|
|
1141
|
+
.comment-respond input[type='url']:focus-visible,
|
|
1142
|
+
.comment-respond textarea:focus-visible {
|
|
1143
|
+
outline: 2px solid var(--color-primary);
|
|
1144
|
+
outline-offset: -1px;
|
|
1145
|
+
border-color: var(--color-primary);
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
.comment-respond textarea {
|
|
1149
|
+
min-height: 8rem;
|
|
1150
|
+
resize: vertical;
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
.comment-respond .form-submit button,
|
|
1154
|
+
.comment-respond .form-submit input[type='submit'] {
|
|
1155
|
+
padding: var(--spacing-2) var(--spacing-6);
|
|
1156
|
+
border: none;
|
|
1157
|
+
background-color: var(--color-primary);
|
|
1158
|
+
color: var(--color-body);
|
|
1159
|
+
font-family: var(--font-heading);
|
|
1160
|
+
font-size: var(--fontSize-1);
|
|
1161
|
+
cursor: pointer;
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
.comment-respond .form-submit button:hover,
|
|
1165
|
+
.comment-respond .form-submit button:focus-visible,
|
|
1166
|
+
.comment-respond .form-submit input[type='submit']:hover,
|
|
1167
|
+
.comment-respond .form-submit input[type='submit']:focus-visible {
|
|
1168
|
+
opacity: 0.85;
|
|
1169
|
+
}
|
|
1170
|
+
|
|
1171
|
+
/* What a form says back: the thank-you after a submission, the message about
|
|
1172
|
+
one that was refused, and what a reader is answering. */
|
|
1173
|
+
|
|
1174
|
+
.comment-notice,
|
|
1175
|
+
.comment-error,
|
|
1176
|
+
.contact-notice,
|
|
1177
|
+
.contact-error {
|
|
1178
|
+
margin: 0 0 var(--spacing-4);
|
|
1179
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
1180
|
+
border-inline-start: var(--spacing-1) solid var(--color-secondary);
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1183
|
+
.comment-error,
|
|
1184
|
+
.contact-error {
|
|
1185
|
+
border-inline-start-color: var(--color-error);
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
.comment-replying-to {
|
|
1189
|
+
margin: 0 0 var(--spacing-4);
|
|
1190
|
+
font-family: var(--font-heading);
|
|
1191
|
+
font-size: var(--fontSize-0);
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
.comment-optional,
|
|
1195
|
+
.contact-optional {
|
|
1196
|
+
font-size: var(--fontSize-0);
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
.comment-hint,
|
|
1200
|
+
.contact-hint,
|
|
1201
|
+
.comment-field-error,
|
|
1202
|
+
.contact-field-error {
|
|
1203
|
+
display: block;
|
|
1204
|
+
margin-top: var(--spacing-1);
|
|
1205
|
+
font-size: var(--fontSize-0);
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
.comment-field-error,
|
|
1209
|
+
.contact-field-error {
|
|
1210
|
+
color: var(--color-error);
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
/*
|
|
1214
|
+
The honeypot. Taken out of the flow rather than `display: none`, because some
|
|
1215
|
+
form fillers skip fields a browser would not paint at all and this one is
|
|
1216
|
+
meant to be filled in.
|
|
1217
|
+
*/
|
|
1218
|
+
.comment-trap,
|
|
1219
|
+
.contact-trap {
|
|
1220
|
+
position: absolute;
|
|
1221
|
+
left: -10000px;
|
|
1222
|
+
width: 1px;
|
|
1223
|
+
height: 1px;
|
|
1224
|
+
overflow: hidden;
|
|
1225
|
+
}
|
|
1226
|
+
|
|
1227
|
+
/* Media queries */
|
|
1228
|
+
|
|
1229
|
+
@media (max-width: 42rem) {
|
|
1230
|
+
.bio {
|
|
1231
|
+
flex-direction: column;
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
.bio-avatar {
|
|
1235
|
+
margin-right: var(--spacing-0);
|
|
1236
|
+
margin-bottom: var(--spacing-4);
|
|
1237
|
+
}
|
|
1238
|
+
|
|
1239
|
+
blockquote {
|
|
1240
|
+
margin-left: var(--spacing-0);
|
|
1241
|
+
padding: var(--spacing-0) var(--spacing-0) var(--spacing-0) var(--spacing-4);
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1244
|
+
ul,
|
|
1245
|
+
ol {
|
|
1246
|
+
list-style-position: inside;
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
.comment-list .children {
|
|
1250
|
+
margin-left: var(--spacing-4);
|
|
1251
|
+
}
|
|
327
1252
|
}
|