@geekity/cms 0.3.0 → 0.5.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 +2217 -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/{layouts/document-editor.njk → pages/documents/editor.njk} +75 -59
- 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/federation/settings.njk +77 -0
- package/admin/pages/media/library.njk +160 -0
- package/admin/pages/messages/all.njk +110 -0
- package/admin/pages/navigation/menus.njk +129 -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/general.njk +29 -0
- package/admin/pages/settings/permalinks.njk +50 -0
- package/admin/pages/settings/reading.njk +64 -0
- package/admin/pages/tools/content-index.njk +89 -0
- package/admin/pages/users/edit.njk +239 -0
- package/admin/pages/users/list.njk +51 -0
- package/admin/pages/users/new.njk +41 -0
- package/admin/static/admin.css +558 -3
- package/admin/static/copy.js +52 -0
- package/admin/static/editor.js +16 -16
- package/admin/static/slug.js +61 -0
- package/dist/access-log.d.ts +44 -0
- package/dist/access-log.d.ts.map +1 -0
- package/dist/access-log.js +71 -0
- package/dist/access-log.js.map +1 -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 +117 -10
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +328 -41
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/federation.d.ts +161 -50
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +235 -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 +143 -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/navigation.d.ts +155 -0
- package/dist/admin/navigation.d.ts.map +1 -0
- package/dist/admin/navigation.js +292 -0
- package/dist/admin/navigation.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 +164 -105
- package/dist/admin/routes.js.map +1 -1
- package/dist/admin/session.d.ts +17 -3
- package/dist/admin/session.d.ts.map +1 -1
- package/dist/admin/session.js +19 -5
- package/dist/admin/session.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 +48 -0
- package/dist/admin/settings-federation.d.ts.map +1 -0
- package/dist/admin/settings-federation.js +123 -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 +119 -0
- package/dist/admin/settings-page.d.ts.map +1 -0
- package/dist/admin/settings-page.js +132 -0
- package/dist/admin/settings-page.js.map +1 -0
- package/dist/admin/settings-pages.d.ts +30 -0
- package/dist/admin/settings-pages.d.ts.map +1 -0
- package/dist/admin/settings-pages.js +43 -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 +34 -0
- package/dist/admin/settings-reading.d.ts.map +1 -0
- package/dist/admin/settings-reading.js +49 -0
- package/dist/admin/settings-reading.js.map +1 -0
- package/dist/admin/settings.d.ts +339 -96
- package/dist/admin/settings.d.ts.map +1 -1
- package/dist/admin/settings.js +600 -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 +46 -14
- package/dist/admin/templates.d.ts.map +1 -1
- package/dist/admin/templates.js +46 -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/tools.d.ts +111 -0
- package/dist/admin/tools.d.ts.map +1 -0
- package/dist/admin/tools.js +182 -0
- package/dist/admin/tools.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 +429 -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 +123 -0
- package/dist/comments/form.d.ts.map +1 -0
- package/dist/comments/form.js +79 -0
- package/dist/comments/form.js.map +1 -0
- package/dist/comments/index.d.ts +16 -0
- package/dist/comments/index.d.ts.map +1 -0
- package/dist/comments/index.js +10 -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 +60 -0
- package/dist/comments/routes.d.ts.map +1 -0
- package/dist/comments/routes.js +212 -0
- package/dist/comments/routes.js.map +1 -0
- package/dist/comments/submission.d.ts +297 -0
- package/dist/comments/submission.d.ts.map +1 -0
- package/dist/comments/submission.js +280 -0
- package/dist/comments/submission.js.map +1 -0
- package/dist/comments/viewer.d.ts +21 -0
- package/dist/comments/viewer.d.ts.map +1 -0
- package/dist/comments/viewer.js +45 -0
- package/dist/comments/viewer.js.map +1 -0
- package/dist/config.d.ts +225 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +121 -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 +220 -7
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +392 -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 +70 -5
- 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 +46 -10
- package/dist/federation/mount.d.ts.map +1 -1
- package/dist/federation/mount.js +300 -28
- 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 +344 -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 +195 -0
- package/dist/web/navigation.d.ts.map +1 -0
- package/dist/web/navigation.js +300 -0
- package/dist/web/navigation.js.map +1 -0
- package/dist/web/negotiate.d.ts +31 -0
- package/dist/web/negotiate.d.ts.map +1 -1
- package/dist/web/negotiate.js +31 -11
- 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 +203 -9
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +341 -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 +854 -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 +226 -0
- package/dist/web/themes.d.ts.map +1 -0
- package/dist/web/themes.js +314 -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 +8 -0
- package/templates/site/content/pages/about.md +7 -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 +1216 -50
- package/themes/default/layouts/404.njk +2 -3
- package/themes/default/layouts/author.njk +36 -0
- package/themes/default/layouts/base.njk +161 -31
- package/themes/default/layouts/category.njk +27 -0
- package/themes/default/layouts/front-page.njk +56 -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 +71 -0
- package/themes/default/partials/comment-form.njk +137 -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/menu.njk +32 -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 +22 -0
- package/themes/default/partials/tags.njk +26 -5
- package/themes/default/static/highlight.js +4 -0
- package/themes/default/static/style.css +1142 -194
- package/themes/default/theme.json +9 -0
- 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,789 @@
|
|
|
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);
|
|
77
208
|
}
|
|
78
209
|
|
|
79
|
-
|
|
210
|
+
img {
|
|
211
|
+
max-width: 100%;
|
|
212
|
+
height: auto;
|
|
213
|
+
}
|
|
80
214
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
.site-main {
|
|
84
|
-
max-width: var(--measure);
|
|
85
|
-
margin-inline: auto;
|
|
215
|
+
figure {
|
|
216
|
+
margin: var(--spacing-0) var(--spacing-0) var(--spacing-4) var(--spacing-0);
|
|
86
217
|
}
|
|
87
218
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
219
|
+
figcaption {
|
|
220
|
+
font-size: var(--fontSize-0);
|
|
221
|
+
text-align: center;
|
|
91
222
|
}
|
|
92
223
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
font-size: 1.35rem;
|
|
96
|
-
font-weight: 700;
|
|
97
|
-
letter-spacing: -0.01em;
|
|
224
|
+
time {
|
|
225
|
+
white-space: nowrap;
|
|
98
226
|
}
|
|
99
227
|
|
|
100
|
-
|
|
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);
|
|
267
|
+
}
|
|
268
|
+
|
|
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;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/* Prose */
|
|
316
|
+
|
|
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);
|
|
321
|
+
}
|
|
322
|
+
|
|
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;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
ul li,
|
|
335
|
+
ol li {
|
|
336
|
+
margin-bottom: var(--spacing-0);
|
|
337
|
+
padding-left: var(--spacing-0);
|
|
123
338
|
}
|
|
124
339
|
|
|
125
|
-
|
|
340
|
+
li > p {
|
|
341
|
+
display: inline;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
li *:last-child {
|
|
345
|
+
margin-bottom: var(--spacing-0);
|
|
346
|
+
}
|
|
126
347
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
margin: 0 0 0.35rem;
|
|
130
|
-
font-size: 1.9rem;
|
|
131
|
-
line-height: 1.2;
|
|
132
|
-
letter-spacing: -0.02em;
|
|
348
|
+
details {
|
|
349
|
+
margin-left: var(--spacing-4);
|
|
133
350
|
}
|
|
134
351
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
color: var(--ink-muted);
|
|
138
|
-
font-size: 0.9rem;
|
|
352
|
+
details summary {
|
|
353
|
+
cursor: pointer;
|
|
139
354
|
}
|
|
140
355
|
|
|
141
|
-
|
|
356
|
+
.list-none {
|
|
357
|
+
list-style-type: none;
|
|
358
|
+
}
|
|
142
359
|
|
|
143
|
-
.
|
|
360
|
+
.hlist {
|
|
361
|
+
display: flex;
|
|
362
|
+
flex-wrap: wrap;
|
|
144
363
|
margin: 0;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.hlist li {
|
|
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;
|
|
436
|
+
}
|
|
437
|
+
|
|
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);
|
|
147
454
|
}
|
|
148
455
|
|
|
149
|
-
.
|
|
150
|
-
|
|
151
|
-
padding-top: 2.25rem;
|
|
152
|
-
border-top: 1px solid var(--rule);
|
|
456
|
+
.hljs-tag {
|
|
457
|
+
color: var(--color-code-tag);
|
|
153
458
|
}
|
|
154
459
|
|
|
155
|
-
.
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
460
|
+
.hljs-subst,
|
|
461
|
+
.hljs-punctuation,
|
|
462
|
+
.hljs-operator {
|
|
463
|
+
color: var(--color-code-text);
|
|
159
464
|
}
|
|
160
465
|
|
|
161
|
-
.
|
|
162
|
-
|
|
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;
|
|
169
572
|
}
|
|
170
573
|
|
|
171
|
-
.
|
|
172
|
-
|
|
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);
|
|
173
597
|
}
|
|
174
598
|
|
|
175
|
-
.
|
|
176
|
-
margin:
|
|
599
|
+
.global-wrapper[data-is-root-path='true'] .bio {
|
|
600
|
+
margin-bottom: var(--spacing-20);
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
.global-header {
|
|
604
|
+
margin-bottom: var(--spacing-12);
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
.main-heading {
|
|
608
|
+
margin: 0;
|
|
609
|
+
font-size: var(--fontSize-7);
|
|
177
610
|
}
|
|
178
611
|
|
|
179
|
-
.
|
|
180
|
-
|
|
181
|
-
|
|
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;
|
|
182
617
|
}
|
|
183
618
|
|
|
184
|
-
/*
|
|
619
|
+
/* The site menu, which the header carries on every page (TASK-105). At the
|
|
620
|
+
root the header is the site title with the tagline under it, and the menu
|
|
621
|
+
is a line of its own under that. */
|
|
622
|
+
.global-header .site-nav {
|
|
623
|
+
margin-top: var(--spacing-2);
|
|
624
|
+
font-size: var(--fontSize-0);
|
|
625
|
+
}
|
|
185
626
|
|
|
186
|
-
|
|
627
|
+
/* Everywhere else the header is the small link home, and the menu sits beside
|
|
628
|
+
it on the same line — the two wrap onto a second line together rather than
|
|
629
|
+
the menu dropping under the link on a narrow screen. */
|
|
630
|
+
.global-wrapper:not([data-is-root-path='true']) .global-header {
|
|
187
631
|
display: flex;
|
|
188
632
|
flex-wrap: wrap;
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
633
|
+
align-items: baseline;
|
|
634
|
+
column-gap: var(--spacing-5);
|
|
635
|
+
row-gap: var(--spacing-1);
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
.global-wrapper:not([data-is-root-path='true']) .global-header .site-nav {
|
|
639
|
+
margin-top: var(--spacing-0);
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
/* An entry: a post or a page (TASK-83). The source design's own rules — the
|
|
643
|
+
title tight against the words under it, a subtitle in the heading font —
|
|
644
|
+
plus the small line the `e-content` ends on, which carries the permalink,
|
|
645
|
+
the published date and, when it is a different day, the updated one. */
|
|
646
|
+
|
|
647
|
+
.blog-post header h1 {
|
|
648
|
+
margin: var(--spacing-0) var(--spacing-0) var(--spacing-4) var(--spacing-0);
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
.blog-post header p {
|
|
652
|
+
font-family: var(--font-heading);
|
|
653
|
+
font-size: var(--fontSize-2);
|
|
193
654
|
}
|
|
194
655
|
|
|
195
|
-
.
|
|
656
|
+
.entry-meta,
|
|
657
|
+
.page-meta {
|
|
658
|
+
margin-top: var(--spacing-8);
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
/* A page usually carries no date, and then this line has nothing in it. The
|
|
662
|
+
layout prints it anyway, so a site has one hook wherever it is; here is
|
|
663
|
+
where it disappears. */
|
|
664
|
+
.entry-meta:empty,
|
|
665
|
+
.page-meta:empty {
|
|
666
|
+
display: none;
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
/* The bio, which the entry footer prints and an author archive heads with
|
|
670
|
+
(TASK-83). */
|
|
671
|
+
|
|
672
|
+
.bio {
|
|
673
|
+
display: flex;
|
|
674
|
+
align-items: center;
|
|
675
|
+
margin-bottom: var(--spacing-16);
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
.bio p {
|
|
679
|
+
margin-bottom: var(--spacing-0);
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
/* The name reads as the heading of the card; the source theme printed a
|
|
683
|
+
<strong> around it, which is styling in the markup. */
|
|
684
|
+
.bio .p-name {
|
|
685
|
+
font-weight: var(--fontWeight-bold);
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
.bio-note {
|
|
689
|
+
margin-top: var(--spacing-2);
|
|
690
|
+
font-style: italic;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
/* The links the person calls their own, under the credit: a horizontal list,
|
|
694
|
+
small, in the heading font. The site menu used to share this rule; it is in
|
|
695
|
+
the header now (TASK-105) and the bio carries nobody but the person. */
|
|
696
|
+
.bio-links {
|
|
697
|
+
margin-top: var(--spacing-2);
|
|
698
|
+
font-size: var(--fontSize-0);
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
.bio-avatar {
|
|
196
702
|
display: inline-block;
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
font-size: 0.8rem;
|
|
203
|
-
text-decoration: none;
|
|
703
|
+
min-width: 55px;
|
|
704
|
+
margin-right: var(--spacing-4);
|
|
705
|
+
margin-bottom: var(--spacing-0);
|
|
706
|
+
border: 3px solid var(--color-base-3);
|
|
707
|
+
border-radius: 50%;
|
|
204
708
|
}
|
|
205
709
|
|
|
206
|
-
.
|
|
207
|
-
|
|
208
|
-
|
|
710
|
+
.bio-avatar img {
|
|
711
|
+
display: block;
|
|
712
|
+
width: 50px;
|
|
713
|
+
height: 50px;
|
|
714
|
+
border-radius: 50%;
|
|
209
715
|
}
|
|
210
716
|
|
|
211
|
-
|
|
717
|
+
.circle {
|
|
718
|
+
border-radius: 50%;
|
|
719
|
+
}
|
|
212
720
|
|
|
213
|
-
.
|
|
721
|
+
/* A listing: the feed of entries, and what heads one (TASK-82). The source
|
|
722
|
+
design's own rules, on the tokens above. The feed itself takes no styling —
|
|
723
|
+
it is a stack of articles at the measure — and what makes it read as a list
|
|
724
|
+
is the rule between two of them and the small meta line under each. */
|
|
725
|
+
|
|
726
|
+
.feed-title {
|
|
727
|
+
margin: var(--spacing-0) var(--spacing-0) var(--spacing-4) var(--spacing-0);
|
|
728
|
+
padding: var(--spacing-0);
|
|
729
|
+
font-size: var(--fontSize-3);
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
.feed-separator {
|
|
733
|
+
margin: var(--spacing-2) var(--spacing-0) var(--spacing-4) var(--spacing-0);
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
.feed-meta {
|
|
214
737
|
display: flex;
|
|
215
|
-
|
|
738
|
+
flex-wrap: wrap;
|
|
739
|
+
gap: var(--spacing-2);
|
|
216
740
|
align-items: baseline;
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
741
|
+
font-size: 70%;
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
.feed-meta p {
|
|
745
|
+
margin: var(--spacing-0);
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
.post-categories {
|
|
749
|
+
margin-top: var(--spacing-2);
|
|
750
|
+
margin-bottom: var(--spacing-0);
|
|
751
|
+
font-size: 70%;
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
.post-categories a {
|
|
755
|
+
display: inline-block;
|
|
756
|
+
margin-right: var(--spacing-2);
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
/* The categories are already small; inside the meta line they would be small
|
|
760
|
+
twice over, so there they are the size of the line they sit on. */
|
|
761
|
+
.feed-meta .post-categories {
|
|
762
|
+
font-size: 100%;
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
.category-header {
|
|
766
|
+
margin-bottom: var(--spacing-8);
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
.category-description {
|
|
770
|
+
margin-top: var(--spacing-2);
|
|
771
|
+
font-style: italic;
|
|
222
772
|
}
|
|
223
773
|
|
|
224
|
-
|
|
225
|
-
|
|
774
|
+
/* Pagination: two arrows under a listing, the previous one at the left edge
|
|
775
|
+
and the next at the right however few there are. */
|
|
776
|
+
|
|
777
|
+
.pagination {
|
|
778
|
+
display: flex;
|
|
779
|
+
gap: var(--spacing-4);
|
|
780
|
+
align-items: baseline;
|
|
781
|
+
justify-content: space-between;
|
|
782
|
+
margin-top: var(--spacing-12);
|
|
783
|
+
padding-top: var(--spacing-5);
|
|
784
|
+
border-top: 1px solid var(--color-base);
|
|
785
|
+
font-family: var(--font-heading);
|
|
786
|
+
font-size: var(--fontSize-0);
|
|
226
787
|
}
|
|
227
788
|
|
|
228
789
|
.pagination-previous {
|
|
@@ -233,95 +794,482 @@ a:visited {
|
|
|
233
794
|
margin-inline-start: auto;
|
|
234
795
|
}
|
|
235
796
|
|
|
236
|
-
/*
|
|
797
|
+
/* Where a post links its neighbours, which the entry layout prints (TASK-83). */
|
|
237
798
|
|
|
238
|
-
.post-
|
|
239
|
-
|
|
240
|
-
|
|
799
|
+
.blog-post-nav {
|
|
800
|
+
font-family: var(--font-heading);
|
|
801
|
+
font-size: var(--fontSize-0);
|
|
241
802
|
}
|
|
242
803
|
|
|
243
|
-
.post-
|
|
244
|
-
|
|
245
|
-
|
|
804
|
+
.blog-post-nav ul {
|
|
805
|
+
display: flex;
|
|
806
|
+
flex-wrap: wrap;
|
|
807
|
+
justify-content: space-between;
|
|
808
|
+
margin: var(--spacing-0);
|
|
809
|
+
padding: 0;
|
|
810
|
+
list-style: none;
|
|
246
811
|
}
|
|
247
812
|
|
|
248
|
-
.
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
813
|
+
/* Titles: what heads a listing, a 404 and an author archive. The source theme
|
|
814
|
+
prints none of these — it has no archive heading at all — so they are the
|
|
815
|
+
theme's own, sized off the same scale. An entry's own title is
|
|
816
|
+
`.blog-post header h1` above. */
|
|
817
|
+
|
|
818
|
+
.page-title {
|
|
819
|
+
margin: 0 0 var(--spacing-2);
|
|
820
|
+
font-size: var(--fontSize-6);
|
|
253
821
|
}
|
|
254
822
|
|
|
255
|
-
.
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
font-size: 1.1rem;
|
|
823
|
+
.empty {
|
|
824
|
+
font-family: var(--font-heading);
|
|
825
|
+
font-size: var(--fontSize-0);
|
|
259
826
|
}
|
|
260
827
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
828
|
+
/* The search box (TASK-22): a field and a button on one line, at the top of
|
|
829
|
+
the search page and nowhere else (TASK-105). The field is drawn the way the
|
|
830
|
+
comment form's are, so the site has one look for a place to type. */
|
|
831
|
+
|
|
832
|
+
.search-form {
|
|
833
|
+
display: flex;
|
|
834
|
+
gap: var(--spacing-2);
|
|
835
|
+
margin: 0 0 var(--spacing-4);
|
|
836
|
+
font-family: var(--font-heading);
|
|
265
837
|
}
|
|
266
838
|
|
|
267
|
-
.
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
padding-inline-start: 1rem;
|
|
271
|
-
border-inline-start: 3px solid var(--rule);
|
|
272
|
-
color: var(--ink-muted);
|
|
839
|
+
.search-form label {
|
|
840
|
+
flex: 1;
|
|
841
|
+
min-width: 0;
|
|
273
842
|
}
|
|
274
843
|
|
|
275
|
-
.
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
font-
|
|
282
|
-
|
|
844
|
+
.search-form input[type='search'] {
|
|
845
|
+
width: 100%;
|
|
846
|
+
padding: var(--spacing-2);
|
|
847
|
+
border: 1px solid var(--color-base);
|
|
848
|
+
background-color: var(--color-base-3);
|
|
849
|
+
color: var(--color-text);
|
|
850
|
+
font-family: var(--font-body);
|
|
851
|
+
font-size: var(--fontSize-1);
|
|
283
852
|
}
|
|
284
853
|
|
|
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;
|
|
854
|
+
.search-form input[type='search']:focus-visible {
|
|
855
|
+
outline: 2px solid var(--color-primary);
|
|
856
|
+
outline-offset: -1px;
|
|
857
|
+
border-color: var(--color-primary);
|
|
292
858
|
}
|
|
293
859
|
|
|
294
|
-
.
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
background:
|
|
298
|
-
|
|
860
|
+
.search-form button {
|
|
861
|
+
padding: var(--spacing-2) var(--spacing-4);
|
|
862
|
+
border: none;
|
|
863
|
+
background-color: var(--color-primary);
|
|
864
|
+
color: var(--color-body);
|
|
865
|
+
font-family: var(--font-heading);
|
|
866
|
+
font-size: var(--fontSize-1);
|
|
867
|
+
cursor: pointer;
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
.search-form button:hover,
|
|
871
|
+
.search-form button:focus-visible {
|
|
872
|
+
opacity: 0.85;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
.search-summary {
|
|
876
|
+
font-family: var(--font-heading);
|
|
877
|
+
font-size: var(--fontSize-0);
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
.search-result {
|
|
881
|
+
margin: 0 0 var(--spacing-8);
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
.search-result .feed-title {
|
|
885
|
+
margin-bottom: var(--spacing-2);
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
/* A matched word is marked by weight and an underline in the primary colour
|
|
889
|
+
rather than by a highlighter background, so it adds no colour pair the
|
|
890
|
+
contrast test would have to prove in both schemes. */
|
|
891
|
+
|
|
892
|
+
.search-snippet mark {
|
|
893
|
+
background-color: transparent;
|
|
894
|
+
color: inherit;
|
|
895
|
+
font-weight: var(--fontWeight-bold);
|
|
896
|
+
text-decoration: underline var(--color-primary);
|
|
897
|
+
text-underline-offset: 0.15em;
|
|
299
898
|
}
|
|
300
899
|
|
|
301
|
-
|
|
302
|
-
|
|
900
|
+
/* An author archive (TASK-67): the person above their posts. The same URL is
|
|
901
|
+
their ActivityPub actor, so this is the page a follower sees when they click
|
|
902
|
+
through from somewhere else on the fediverse. The person themselves is the
|
|
903
|
+
bio above; this is only what is left, the heading over it. */
|
|
904
|
+
|
|
905
|
+
.author-header {
|
|
906
|
+
margin-bottom: var(--spacing-4);
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
/* The front page (TASK-85): the site's own words, then Recent Posts, then
|
|
910
|
+
where to go next. Almost nothing is needed — the words are `.e-content`
|
|
911
|
+
below, the posts are the feed above, and the heading over them is an
|
|
912
|
+
ordinary `h2` — so this is only the line of links, which follows a feed
|
|
913
|
+
rather than a paragraph and needs the air a paragraph would already have. */
|
|
914
|
+
|
|
915
|
+
.front-links {
|
|
916
|
+
margin-top: var(--spacing-8);
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
/* An archive page: every post there has ever been, under a heading per month.
|
|
920
|
+
The source design's essays page is plain headings over `ol.list-none` and
|
|
921
|
+
nothing else, so the prose rules draw it; what is here only closes the gap
|
|
922
|
+
between a month and its own posts, which at the prose spacing reads as two
|
|
923
|
+
things rather than as one. */
|
|
924
|
+
|
|
925
|
+
.archive h2 {
|
|
926
|
+
margin-bottom: var(--spacing-2);
|
|
927
|
+
}
|
|
928
|
+
|
|
929
|
+
/* Body copy: whatever a document's words render into, which is the entry's
|
|
930
|
+
`section.e-content` and the `div.page-body.e-content` a posts page prints
|
|
931
|
+
its own words in. */
|
|
932
|
+
|
|
933
|
+
.e-content {
|
|
934
|
+
overflow-wrap: break-word;
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
.e-content > :first-child {
|
|
938
|
+
margin-top: 0;
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
.e-content table {
|
|
303
942
|
display: block;
|
|
304
943
|
overflow-x: auto;
|
|
305
|
-
border-collapse: collapse;
|
|
306
944
|
}
|
|
307
945
|
|
|
308
|
-
.
|
|
309
|
-
.
|
|
310
|
-
|
|
311
|
-
.page-body td {
|
|
312
|
-
padding: 0.4rem 0.75rem;
|
|
313
|
-
border: 1px solid var(--rule);
|
|
946
|
+
.e-content th,
|
|
947
|
+
.e-content td {
|
|
948
|
+
padding: var(--spacing-1) var(--spacing-3);
|
|
314
949
|
text-align: start;
|
|
315
950
|
}
|
|
316
951
|
|
|
317
952
|
.footnotes {
|
|
318
|
-
margin-top:
|
|
319
|
-
padding-top:
|
|
320
|
-
border-top: 1px solid var(--
|
|
321
|
-
|
|
322
|
-
|
|
953
|
+
margin-top: var(--spacing-10);
|
|
954
|
+
padding-top: var(--spacing-4);
|
|
955
|
+
border-top: 1px solid var(--color-base);
|
|
956
|
+
font-size: var(--fontSize-0);
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
.footnote-item p {
|
|
960
|
+
display: inline;
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
/* Reactions: the likes, the boosts and the pages that mentioned a post,
|
|
964
|
+
grouped by kind as facepiles of small round avatars (TASK-84). */
|
|
965
|
+
|
|
966
|
+
.reactions-section {
|
|
967
|
+
margin-top: var(--spacing-12);
|
|
968
|
+
}
|
|
969
|
+
|
|
970
|
+
.reaction-group {
|
|
971
|
+
display: flex;
|
|
972
|
+
align-items: center;
|
|
973
|
+
gap: var(--spacing-3);
|
|
974
|
+
margin-bottom: var(--spacing-3);
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
.reaction-title {
|
|
978
|
+
margin: 0;
|
|
979
|
+
font-family: var(--font-heading);
|
|
980
|
+
font-size: var(--fontSize-1);
|
|
981
|
+
white-space: nowrap;
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
.facepile {
|
|
985
|
+
display: flex;
|
|
986
|
+
flex-wrap: wrap;
|
|
987
|
+
gap: var(--spacing-1);
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
.facepile a,
|
|
991
|
+
.facepile span {
|
|
992
|
+
display: inline-block;
|
|
993
|
+
line-height: 0;
|
|
994
|
+
text-decoration: none;
|
|
995
|
+
}
|
|
996
|
+
|
|
997
|
+
/* A face is a picture of somebody: the block of colour a link takes on hover
|
|
998
|
+
everywhere else would sit behind it as a frame, so it is taken back off. */
|
|
999
|
+
|
|
1000
|
+
.facepile a:hover,
|
|
1001
|
+
.facepile a:focus {
|
|
1002
|
+
background-color: transparent;
|
|
1003
|
+
color: var(--color-primary);
|
|
1004
|
+
text-decoration: underline;
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
.facepile img {
|
|
1008
|
+
display: block;
|
|
1009
|
+
border-radius: 50%;
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
/* A reaction with no avatar has nothing to recognise anybody by, so the emoji
|
|
1013
|
+
badge of its kind stands in and the name is printed beside it — which needs
|
|
1014
|
+
the line box the faces above do without. */
|
|
1015
|
+
|
|
1016
|
+
.facepile a:has(.reaction-name),
|
|
1017
|
+
.facepile span:has(.reaction-name) {
|
|
1018
|
+
display: inline-flex;
|
|
1019
|
+
align-items: center;
|
|
1020
|
+
gap: var(--spacing-1);
|
|
1021
|
+
font-family: var(--font-heading);
|
|
1022
|
+
font-size: var(--fontSize-0);
|
|
1023
|
+
line-height: normal;
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
.reaction-icon {
|
|
1027
|
+
display: inline-block;
|
|
1028
|
+
width: 2rem;
|
|
1029
|
+
height: 2rem;
|
|
1030
|
+
border-radius: 50%;
|
|
1031
|
+
background-color: var(--color-base);
|
|
1032
|
+
line-height: 2rem;
|
|
1033
|
+
text-align: center;
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
/* The thread under a post: the replies from every door, each one an h-entry
|
|
1037
|
+
with its author, its time and its words, and answers nested inside it. */
|
|
1038
|
+
|
|
1039
|
+
.comments-area {
|
|
1040
|
+
margin-top: var(--spacing-12);
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
.comments-title {
|
|
1044
|
+
margin: 0 0 var(--spacing-8);
|
|
1045
|
+
font-size: var(--fontSize-4);
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
.comment-list,
|
|
1049
|
+
.comment-list .children {
|
|
1050
|
+
margin: 0;
|
|
1051
|
+
padding: 0;
|
|
1052
|
+
list-style: none;
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
.comment-list .children {
|
|
1056
|
+
margin-left: var(--spacing-8);
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
.comment-body {
|
|
1060
|
+
padding: var(--spacing-4) 0;
|
|
1061
|
+
border-bottom: 1px solid var(--color-base);
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
.comment-author {
|
|
1065
|
+
display: flex;
|
|
1066
|
+
align-items: center;
|
|
1067
|
+
gap: var(--spacing-2);
|
|
1068
|
+
font-family: var(--font-heading);
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
.comment-author .avatar {
|
|
1072
|
+
border-radius: 50%;
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
.comment-metadata {
|
|
1076
|
+
margin-bottom: var(--spacing-2);
|
|
1077
|
+
font-family: var(--font-heading);
|
|
1078
|
+
font-size: var(--fontSize-0);
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
/* The permalink is the whole date line, so it is the ink of the page rather
|
|
1082
|
+
than a link's colour until somebody points at it. */
|
|
1083
|
+
|
|
1084
|
+
.comment-metadata a {
|
|
1085
|
+
color: var(--color-text);
|
|
1086
|
+
text-decoration: none;
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
.comment-metadata a:hover,
|
|
1090
|
+
.comment-metadata a:focus {
|
|
1091
|
+
background-color: transparent;
|
|
1092
|
+
color: var(--color-primary);
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
.comment-content {
|
|
1096
|
+
margin-top: var(--spacing-2);
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
.comment-content > :last-child {
|
|
1100
|
+
margin-bottom: 0;
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
.reply {
|
|
1104
|
+
margin-top: var(--spacing-2);
|
|
1105
|
+
font-family: var(--font-heading);
|
|
1106
|
+
font-size: var(--fontSize-0);
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
.no-comments {
|
|
1110
|
+
font-family: var(--font-heading);
|
|
1111
|
+
font-style: italic;
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
/* The comment form under an open post, and the contact form on a page that
|
|
1115
|
+
asked for one. One set of rules rather than two: they are the same kind of
|
|
1116
|
+
form, the contact form wears `comment-respond` to say so, and a site
|
|
1117
|
+
restyling one cannot leave the other behind. */
|
|
1118
|
+
|
|
1119
|
+
.comment-respond {
|
|
1120
|
+
margin-top: var(--spacing-8);
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1123
|
+
.comment-respond .comment-reply-title,
|
|
1124
|
+
.comment-respond .contact-form-title {
|
|
1125
|
+
margin: 0 0 var(--spacing-4);
|
|
1126
|
+
font-size: var(--fontSize-4);
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
.comment-respond label {
|
|
1130
|
+
display: block;
|
|
1131
|
+
margin-bottom: var(--spacing-1);
|
|
1132
|
+
font-family: var(--font-heading);
|
|
1133
|
+
font-size: var(--fontSize-0);
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
.comment-field,
|
|
1137
|
+
.contact-field,
|
|
1138
|
+
.comment-check {
|
|
1139
|
+
margin: 0 0 var(--spacing-4);
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
/* The one label that belongs beside its field rather than over it. */
|
|
1143
|
+
|
|
1144
|
+
.comment-check label {
|
|
1145
|
+
display: inline;
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
.comment-respond input[type='text'],
|
|
1149
|
+
.comment-respond input[type='email'],
|
|
1150
|
+
.comment-respond input[type='url'],
|
|
1151
|
+
.comment-respond textarea {
|
|
1152
|
+
width: 100%;
|
|
1153
|
+
padding: var(--spacing-2);
|
|
1154
|
+
border: 1px solid var(--color-base);
|
|
1155
|
+
background-color: var(--color-base-3);
|
|
1156
|
+
color: var(--color-text);
|
|
1157
|
+
font-family: var(--font-body);
|
|
1158
|
+
font-size: var(--fontSize-1);
|
|
323
1159
|
}
|
|
324
1160
|
|
|
325
|
-
.
|
|
326
|
-
|
|
1161
|
+
.comment-respond input[type='text']:focus-visible,
|
|
1162
|
+
.comment-respond input[type='email']:focus-visible,
|
|
1163
|
+
.comment-respond input[type='url']:focus-visible,
|
|
1164
|
+
.comment-respond textarea:focus-visible {
|
|
1165
|
+
outline: 2px solid var(--color-primary);
|
|
1166
|
+
outline-offset: -1px;
|
|
1167
|
+
border-color: var(--color-primary);
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
.comment-respond textarea {
|
|
1171
|
+
min-height: 8rem;
|
|
1172
|
+
resize: vertical;
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
.comment-respond .form-submit button,
|
|
1176
|
+
.comment-respond .form-submit input[type='submit'] {
|
|
1177
|
+
padding: var(--spacing-2) var(--spacing-6);
|
|
1178
|
+
border: none;
|
|
1179
|
+
background-color: var(--color-primary);
|
|
1180
|
+
color: var(--color-body);
|
|
1181
|
+
font-family: var(--font-heading);
|
|
1182
|
+
font-size: var(--fontSize-1);
|
|
1183
|
+
cursor: pointer;
|
|
1184
|
+
}
|
|
1185
|
+
|
|
1186
|
+
.comment-respond .form-submit button:hover,
|
|
1187
|
+
.comment-respond .form-submit button:focus-visible,
|
|
1188
|
+
.comment-respond .form-submit input[type='submit']:hover,
|
|
1189
|
+
.comment-respond .form-submit input[type='submit']:focus-visible {
|
|
1190
|
+
opacity: 0.85;
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
/* What a form says back: the thank-you after a submission, the message about
|
|
1194
|
+
one that was refused, and what a reader is answering. */
|
|
1195
|
+
|
|
1196
|
+
.comment-notice,
|
|
1197
|
+
.comment-error,
|
|
1198
|
+
.contact-notice,
|
|
1199
|
+
.contact-error {
|
|
1200
|
+
margin: 0 0 var(--spacing-4);
|
|
1201
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
1202
|
+
border-inline-start: var(--spacing-1) solid var(--color-secondary);
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1205
|
+
.comment-error,
|
|
1206
|
+
.contact-error {
|
|
1207
|
+
border-inline-start-color: var(--color-error);
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1210
|
+
.comment-replying-to,
|
|
1211
|
+
.comment-signed-in {
|
|
1212
|
+
margin: 0 0 var(--spacing-4);
|
|
1213
|
+
font-family: var(--font-heading);
|
|
1214
|
+
font-size: var(--fontSize-0);
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
.comment-optional,
|
|
1218
|
+
.contact-optional {
|
|
1219
|
+
font-size: var(--fontSize-0);
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1222
|
+
.comment-hint,
|
|
1223
|
+
.contact-hint,
|
|
1224
|
+
.comment-field-error,
|
|
1225
|
+
.contact-field-error {
|
|
1226
|
+
display: block;
|
|
1227
|
+
margin-top: var(--spacing-1);
|
|
1228
|
+
font-size: var(--fontSize-0);
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1231
|
+
.comment-field-error,
|
|
1232
|
+
.contact-field-error {
|
|
1233
|
+
color: var(--color-error);
|
|
1234
|
+
}
|
|
1235
|
+
|
|
1236
|
+
/*
|
|
1237
|
+
The honeypot. Taken out of the flow rather than `display: none`, because some
|
|
1238
|
+
form fillers skip fields a browser would not paint at all and this one is
|
|
1239
|
+
meant to be filled in.
|
|
1240
|
+
*/
|
|
1241
|
+
.comment-trap,
|
|
1242
|
+
.contact-trap {
|
|
1243
|
+
position: absolute;
|
|
1244
|
+
left: -10000px;
|
|
1245
|
+
width: 1px;
|
|
1246
|
+
height: 1px;
|
|
1247
|
+
overflow: hidden;
|
|
1248
|
+
}
|
|
1249
|
+
|
|
1250
|
+
/* Media queries */
|
|
1251
|
+
|
|
1252
|
+
@media (max-width: 42rem) {
|
|
1253
|
+
.bio {
|
|
1254
|
+
flex-direction: column;
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
.bio-avatar {
|
|
1258
|
+
margin-right: var(--spacing-0);
|
|
1259
|
+
margin-bottom: var(--spacing-4);
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1262
|
+
blockquote {
|
|
1263
|
+
margin-left: var(--spacing-0);
|
|
1264
|
+
padding: var(--spacing-0) var(--spacing-0) var(--spacing-0) var(--spacing-4);
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
ul,
|
|
1268
|
+
ol {
|
|
1269
|
+
list-style-position: inside;
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
.comment-list .children {
|
|
1273
|
+
margin-left: var(--spacing-4);
|
|
1274
|
+
}
|
|
327
1275
|
}
|