@geekity/cms 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/README.md +22 -5
  2. package/admin/components/fields.njk +55 -12
  3. package/admin/layouts/base.njk +5 -1
  4. package/admin/layouts/settings-page.njk +7 -2
  5. package/admin/layouts/shell.njk +1 -1
  6. package/admin/pages/account/forgot.njk +1 -1
  7. package/admin/pages/account/login.njk +1 -1
  8. package/admin/pages/account/reset.njk +4 -2
  9. package/admin/pages/account/setup.njk +1 -1
  10. package/admin/pages/dashboard/home.njk +1 -0
  11. package/admin/pages/documents/list.njk +1 -0
  12. package/admin/pages/documents/taxonomy.njk +1 -0
  13. package/admin/pages/federation/followers.njk +3 -0
  14. package/admin/pages/federation/settings.njk +5 -0
  15. package/admin/pages/media/library.njk +39 -0
  16. package/admin/pages/navigation/menus.njk +6 -1
  17. package/admin/pages/settings/discussion.njk +7 -0
  18. package/admin/pages/settings/email.njk +10 -0
  19. package/admin/pages/settings/general.njk +7 -0
  20. package/admin/pages/settings/permalinks.njk +6 -0
  21. package/admin/pages/settings/reading.njk +7 -0
  22. package/admin/pages/tools/content-index.njk +1 -0
  23. package/admin/pages/tools/personal-data.njk +5 -0
  24. package/admin/pages/users/edit.njk +7 -5
  25. package/admin/pages/users/list.njk +1 -0
  26. package/admin/pages/users/new.njk +5 -1
  27. package/admin/static/admin-bar.css +16 -0
  28. package/admin/static/admin.css +103 -3
  29. package/dist/admin/documents.d.ts.map +1 -1
  30. package/dist/admin/documents.js +18 -0
  31. package/dist/admin/documents.js.map +1 -1
  32. package/dist/admin/media.d.ts +13 -2
  33. package/dist/admin/media.d.ts.map +1 -1
  34. package/dist/admin/media.js +58 -3
  35. package/dist/admin/media.js.map +1 -1
  36. package/dist/admin/store.d.ts +1 -1
  37. package/dist/admin/store.d.ts.map +1 -1
  38. package/dist/admin/store.js +1 -1
  39. package/dist/admin/store.js.map +1 -1
  40. package/dist/admin/uploads.d.ts +5 -2
  41. package/dist/admin/uploads.d.ts.map +1 -1
  42. package/dist/admin/uploads.js +6 -2
  43. package/dist/admin/uploads.js.map +1 -1
  44. package/dist/config.d.ts +10 -0
  45. package/dist/config.d.ts.map +1 -1
  46. package/dist/config.js +1 -0
  47. package/dist/config.js.map +1 -1
  48. package/dist/federation/article.d.ts.map +1 -1
  49. package/dist/federation/article.js +37 -1
  50. package/dist/federation/article.js.map +1 -1
  51. package/dist/images/alt-text.d.ts +51 -0
  52. package/dist/images/alt-text.d.ts.map +1 -0
  53. package/dist/images/alt-text.js +113 -0
  54. package/dist/images/alt-text.js.map +1 -0
  55. package/dist/images/markup.d.ts +11 -0
  56. package/dist/images/markup.d.ts.map +1 -1
  57. package/dist/images/markup.js +12 -0
  58. package/dist/images/markup.js.map +1 -1
  59. package/dist/web/render.d.ts.map +1 -1
  60. package/dist/web/render.js +27 -12
  61. package/dist/web/render.js.map +1 -1
  62. package/package.json +14 -9
  63. package/themes/default/README.md +230 -106
  64. package/themes/default/layouts/404.njk +2 -0
  65. package/themes/default/layouts/500.njk +2 -0
  66. package/themes/default/layouts/503.njk +2 -0
  67. package/themes/default/layouts/author.njk +3 -1
  68. package/themes/default/layouts/base.njk +1 -1
  69. package/themes/default/layouts/category.njk +4 -2
  70. package/themes/default/layouts/front-page.njk +1 -1
  71. package/themes/default/layouts/page.njk +4 -2
  72. package/themes/default/layouts/post.njk +41 -23
  73. package/themes/default/layouts/search.njk +2 -5
  74. package/themes/default/layouts/tag.njk +7 -1
  75. package/themes/default/partials/comment-form.njk +41 -14
  76. package/themes/default/partials/contact-form.njk +35 -14
  77. package/themes/default/partials/conversation.njk +11 -4
  78. package/themes/default/partials/kicker.njk +34 -0
  79. package/themes/default/partials/post-list.njk +40 -46
  80. package/themes/default/partials/reply-context.njk +12 -5
  81. package/themes/default/src/style.css +1095 -0
  82. package/themes/default/static/style.css +2079 -1083
  83. package/themes/default/theme.json +1 -1
@@ -1,1293 +1,2289 @@
1
- /*
2
- * The default theme's only stylesheet. Plain CSS, no build step, no
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.
17
- */
18
-
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. */
22
- color-scheme: light dark;
23
-
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);
33
-
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;
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties {
3
+ @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
4
+ *, :before, :after, ::backdrop {
5
+ --tw-outline-style: solid;
6
+ --tw-leading: initial;
7
+ --tw-font-weight: initial;
8
+ --tw-tracking: initial;
9
+ --tw-border-style: solid;
10
+ --tw-space-y-reverse: 0;
11
+ --tw-shadow: 0 0 #0000;
12
+ --tw-shadow-color: initial;
13
+ --tw-shadow-alpha: 100%;
14
+ --tw-inset-shadow: 0 0 #0000;
15
+ --tw-inset-shadow-color: initial;
16
+ --tw-inset-shadow-alpha: 100%;
17
+ --tw-ring-color: initial;
18
+ --tw-ring-shadow: 0 0 #0000;
19
+ --tw-inset-ring-color: initial;
20
+ --tw-inset-ring-shadow: 0 0 #0000;
21
+ --tw-ring-inset: initial;
22
+ --tw-ring-offset-width: 0px;
23
+ --tw-ring-offset-color: #fff;
24
+ --tw-ring-offset-shadow: 0 0 #0000;
25
+ --tw-scale-x: 1;
26
+ --tw-scale-y: 1;
27
+ --tw-scale-z: 1;
28
+ }
29
+ }
119
30
  }
120
31
 
121
- @media (prefers-color-scheme: dark) {
122
- :root {
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);
32
+ @layer theme {
33
+ :root, :host {
34
+ --spacing: .25rem;
35
+ --container-2xl: 42rem;
36
+ --text-xs: .75rem;
37
+ --text-xs--line-height: calc(1 / .75);
38
+ --text-sm: .875rem;
39
+ --text-sm--line-height: calc(1.25 / .875);
40
+ --text-base: 1rem;
41
+ --text-base--line-height: calc(1.5 / 1);
42
+ --text-lg: 1.125rem;
43
+ --text-lg--line-height: calc(1.75 / 1.125);
44
+ --text-xl: 1.25rem;
45
+ --text-xl--line-height: calc(1.75 / 1.25);
46
+ --text-2xl: 1.5rem;
47
+ --text-2xl--line-height: calc(2 / 1.5);
48
+ --text-3xl: 1.875rem;
49
+ --text-3xl--line-height: calc(2.25 / 1.875);
50
+ --text-4xl: 2.25rem;
51
+ --text-4xl--line-height: calc(2.5 / 2.25);
52
+ --text-5xl: 3rem;
53
+ --text-5xl--line-height: 1;
54
+ --font-weight-normal: 400;
55
+ --font-weight-medium: 500;
56
+ --font-weight-semibold: 600;
57
+ --font-weight-bold: 700;
58
+ --tracking-tight: -.025em;
59
+ --tracking-normal: 0em;
60
+ --leading-tight: 1.25;
61
+ --leading-snug: 1.375;
62
+ --leading-relaxed: 1.625;
63
+ --radius-xs: .125rem;
64
+ --radius-sm: .25rem;
65
+ --radius-md: .375rem;
66
+ --default-transition-duration: .15s;
67
+ --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);
68
+ --default-font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
69
+ --default-mono-font-family: ui-monospace, "SF Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace;
149
70
  }
150
71
  }
151
72
 
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. */
73
+ @layer base {
74
+ *, :after, :before, ::backdrop {
75
+ box-sizing: border-box;
76
+ border: 0 solid;
77
+ margin: 0;
78
+ padding: 0;
79
+ }
154
80
 
155
- *,
156
- *::before,
157
- *::after {
158
- box-sizing: border-box;
159
- }
81
+ ::file-selector-button {
82
+ box-sizing: border-box;
83
+ border: 0 solid;
84
+ margin: 0;
85
+ padding: 0;
86
+ }
160
87
 
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
- }
88
+ html, :host {
89
+ -webkit-text-size-adjust: 100%;
90
+ tab-size: 4;
91
+ line-height: 1.5;
92
+ font-family: var(--default-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
93
+ font-feature-settings: var(--default-font-feature-settings, normal);
94
+ font-variation-settings: var(--default-font-variation-settings, normal);
95
+ -webkit-tap-highlight-color: transparent;
96
+ }
175
97
 
176
- /* HTML elements */
98
+ hr {
99
+ height: 0;
100
+ color: inherit;
101
+ border-top-width: 1px;
102
+ }
177
103
 
178
- html {
179
- font-size: var(--fontSize-root);
180
- line-height: var(--lineHeight-relaxed);
181
- -webkit-text-size-adjust: 100%;
182
- -webkit-font-smoothing: antialiased;
183
- -moz-osx-font-smoothing: grayscale;
184
- }
104
+ abbr:where([title]) {
105
+ -webkit-text-decoration: underline dotted;
106
+ text-decoration: underline dotted;
107
+ }
185
108
 
186
- body {
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;
192
- }
109
+ h1, h2, h3, h4, h5, h6 {
110
+ font-size: inherit;
111
+ font-weight: inherit;
112
+ }
193
113
 
194
- footer {
195
- padding: var(--spacing-6) var(--spacing-0);
196
- font-family: var(--fontFamily-sans);
197
- }
114
+ a {
115
+ color: inherit;
116
+ -webkit-text-decoration: inherit;
117
+ -webkit-text-decoration: inherit;
118
+ -webkit-text-decoration: inherit;
119
+ text-decoration: inherit;
120
+ }
198
121
 
199
- nav,
200
- .bio {
201
- font-family: var(--fontFamily-sans);
202
- }
122
+ b, strong {
123
+ font-weight: bolder;
124
+ }
203
125
 
204
- hr {
205
- height: 1px;
206
- border: 0;
207
- background: var(--color-primary);
208
- }
126
+ code, kbd, samp, pre {
127
+ font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
128
+ font-feature-settings: var(--default-mono-font-feature-settings, normal);
129
+ font-variation-settings: var(--default-mono-font-variation-settings, normal);
130
+ font-size: 1em;
131
+ }
209
132
 
210
- img {
211
- max-width: 100%;
212
- height: auto;
213
- }
133
+ small {
134
+ font-size: 80%;
135
+ }
214
136
 
215
- figure {
216
- margin: var(--spacing-0) var(--spacing-0) var(--spacing-4) var(--spacing-0);
217
- }
137
+ sub, sup {
138
+ vertical-align: baseline;
139
+ font-size: 75%;
140
+ line-height: 0;
141
+ position: relative;
142
+ }
218
143
 
219
- figcaption {
220
- font-size: var(--fontSize-0);
221
- text-align: center;
222
- }
144
+ sub {
145
+ bottom: -.25em;
146
+ }
223
147
 
224
- time {
225
- white-space: nowrap;
226
- }
148
+ sup {
149
+ top: -.5em;
150
+ }
227
151
 
228
- small,
229
- .small {
230
- font-size: var(--fontSize-0);
231
- }
152
+ table {
153
+ text-indent: 0;
154
+ border-color: inherit;
155
+ border-collapse: collapse;
156
+ }
232
157
 
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
- }
158
+ :-moz-focusring:where(:not(iframe)) {
159
+ outline: auto;
160
+ }
249
161
 
250
- h1 {
251
- font-size: var(--fontSize-6);
252
- font-weight: var(--fontWeight-black);
253
- }
162
+ progress {
163
+ vertical-align: baseline;
164
+ }
254
165
 
255
- h2 {
256
- font-size: var(--fontSize-5);
257
- }
166
+ summary {
167
+ display: list-item;
168
+ }
258
169
 
259
- h3 {
260
- font-size: var(--fontSize-3);
261
- }
170
+ ol, ul, menu {
171
+ list-style: none;
172
+ }
262
173
 
263
- h4,
264
- h5,
265
- h6 {
266
- font-size: var(--fontSize-1);
267
- }
174
+ img, svg, video, canvas, audio, iframe, embed, object {
175
+ vertical-align: middle;
176
+ display: block;
177
+ }
268
178
 
269
- h2 > a,
270
- h3 > a,
271
- h4 > a,
272
- h5 > a,
273
- h6 > a {
274
- color: inherit;
275
- text-decoration: none;
276
- }
179
+ img, video {
180
+ max-width: 100%;
181
+ height: auto;
182
+ }
277
183
 
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. */
184
+ button, input, select, optgroup, textarea {
185
+ font: inherit;
186
+ font-feature-settings: inherit;
187
+ font-variation-settings: inherit;
188
+ letter-spacing: inherit;
189
+ color: inherit;
190
+ opacity: 1;
191
+ background-color: #0000;
192
+ border-radius: 0;
193
+ }
282
194
 
283
- a,
284
- a:visited {
285
- color: var(--color-primary);
286
- }
195
+ ::file-selector-button {
196
+ font: inherit;
197
+ font-feature-settings: inherit;
198
+ font-variation-settings: inherit;
199
+ letter-spacing: inherit;
200
+ color: inherit;
201
+ opacity: 1;
202
+ background-color: #0000;
203
+ border-radius: 0;
204
+ }
287
205
 
288
- a:hover,
289
- a:focus {
290
- background-color: var(--color-primary);
291
- color: var(--color-body);
292
- text-decoration: none;
293
- }
206
+ :where(select:is([multiple], [size])) optgroup {
207
+ font-weight: bolder;
208
+ }
294
209
 
295
- a:focus-visible {
296
- outline: 2px solid var(--color-primary);
297
- outline-offset: 2px;
298
- background-color: transparent;
299
- color: var(--color-primary);
300
- }
210
+ :where(select:is([multiple], [size])) optgroup option {
211
+ padding-inline-start: 20px;
212
+ }
301
213
 
302
- /* The two links that are the page saying where it is rather than somewhere to
303
- go: the site title at the root and the small link home everywhere else. Both
304
- read as plain text, in the heading font the rules below give them.
305
-
306
- Named rather than reached for through the element they sit in (TASK-111). A
307
- bare `header a` also caught the site menu, which is navigation somebody is
308
- meant to use, and every link inside a post's own `<header>`. The `:visited`
309
- halves are here because `a:visited` outweighs a bare class, and the hover
310
- and focus halves because `a:focus-visible` outweighs one too: without them
311
- these two would take the outline rather than the flourish. */
312
-
313
- .main-heading a,
314
- .main-heading a:visited,
315
- .header-link-home,
316
- .header-link-home:visited {
317
- color: var(--color-text);
318
- text-decoration: none;
319
- }
214
+ ::file-selector-button {
215
+ margin-inline-end: 4px;
216
+ }
320
217
 
321
- .main-heading a:hover,
322
- .main-heading a:focus,
323
- .header-link-home:hover,
324
- .header-link-home:focus {
325
- background-color: var(--color-primary);
326
- color: var(--color-body);
327
- text-decoration: none;
328
- }
218
+ ::placeholder {
219
+ opacity: 1;
220
+ }
329
221
 
330
- /* Prose */
222
+ @supports (not ((-webkit-appearance: -apple-pay-button))) or (contain-intrinsic-size: 1px) {
223
+ ::placeholder {
224
+ color: currentColor;
225
+ }
331
226
 
332
- p {
333
- margin: var(--spacing-0) var(--spacing-0) var(--spacing-4) var(--spacing-0);
334
- padding: var(--spacing-0);
335
- line-height: var(--lineHeight-relaxed);
336
- }
227
+ @supports (color: color-mix(in lab, red, red)) {
228
+ ::placeholder {
229
+ color: color-mix(in oklab, currentcolor 50%, transparent);
230
+ }
231
+ }
232
+ }
233
+
234
+ textarea {
235
+ resize: vertical;
236
+ }
237
+
238
+ ::-webkit-search-decoration {
239
+ -webkit-appearance: none;
240
+ }
241
+
242
+ ::-webkit-date-and-time-value {
243
+ min-height: 1lh;
244
+ text-align: inherit;
245
+ }
246
+
247
+ ::-webkit-datetime-edit {
248
+ display: inline-flex;
249
+ }
250
+
251
+ ::-webkit-datetime-edit-fields-wrapper {
252
+ padding: 0;
253
+ }
254
+
255
+ ::-webkit-datetime-edit {
256
+ padding-block: 0;
257
+ }
258
+
259
+ ::-webkit-datetime-edit-year-field {
260
+ padding-block: 0;
261
+ }
262
+
263
+ ::-webkit-datetime-edit-month-field {
264
+ padding-block: 0;
265
+ }
266
+
267
+ ::-webkit-datetime-edit-day-field {
268
+ padding-block: 0;
269
+ }
270
+
271
+ ::-webkit-datetime-edit-hour-field {
272
+ padding-block: 0;
273
+ }
274
+
275
+ ::-webkit-datetime-edit-minute-field {
276
+ padding-block: 0;
277
+ }
278
+
279
+ ::-webkit-datetime-edit-second-field {
280
+ padding-block: 0;
281
+ }
282
+
283
+ ::-webkit-datetime-edit-millisecond-field {
284
+ padding-block: 0;
285
+ }
286
+
287
+ ::-webkit-datetime-edit-meridiem-field {
288
+ padding-block: 0;
289
+ }
290
+
291
+ ::-webkit-calendar-picker-indicator {
292
+ line-height: 1;
293
+ }
294
+
295
+ :-moz-ui-invalid {
296
+ box-shadow: none;
297
+ }
298
+
299
+ button, input:where([type="button"], [type="reset"], [type="submit"]) {
300
+ appearance: button;
301
+ }
302
+
303
+ ::file-selector-button {
304
+ appearance: button;
305
+ }
306
+
307
+ ::-webkit-inner-spin-button {
308
+ height: auto;
309
+ }
337
310
 
338
- ul,
339
- ol {
340
- margin-top: var(--spacing-0);
341
- margin-right: var(--spacing-0);
342
- margin-bottom: var(--spacing-8);
343
- margin-left: var(--spacing-4);
344
- padding: var(--spacing-0);
345
- list-style-position: inside;
346
- list-style-image: none;
311
+ ::-webkit-outer-spin-button {
312
+ height: auto;
313
+ }
314
+
315
+ [hidden]:where(:not([hidden="until-found"])) {
316
+ display: none !important;
317
+ }
318
+
319
+ html {
320
+ -webkit-text-size-adjust: 100%;
321
+ -moz-text-size-adjust: 100%;
322
+ text-size-adjust: 100%;
323
+ scrollbar-gutter: stable;
324
+ font-size: 18px;
325
+ }
326
+
327
+ body {
328
+ background-color: var(--color-body);
329
+ --tw-leading: var(--leading-relaxed);
330
+ font-family: Iowan Old Style, Palatino Linotype, Palatino, Book Antiqua, Georgia, serif;
331
+ line-height: var(--leading-relaxed);
332
+ color: var(--color-text);
333
+ -webkit-font-smoothing: antialiased;
334
+ -moz-osx-font-smoothing: grayscale;
335
+ }
336
+
337
+ h1, h2, h3, h4, h5, h6 {
338
+ --tw-font-weight: var(--font-weight-bold);
339
+ font-weight: var(--font-weight-bold);
340
+ --tw-tracking: var(--tracking-tight);
341
+ letter-spacing: var(--tracking-tight);
342
+ text-wrap: balance;
343
+ }
344
+
345
+ p, li, dd, blockquote, figcaption {
346
+ text-wrap: pretty;
347
+ }
348
+
349
+ a {
350
+ color: var(--color-primary);
351
+ text-decoration-line: underline;
352
+ -webkit-text-decoration-color: var(--color-primary);
353
+ -webkit-text-decoration-color: var(--color-primary);
354
+ text-decoration-color: var(--color-primary);
355
+ }
356
+
357
+ @supports (color: color-mix(in lab, red, red)) {
358
+ a {
359
+ -webkit-text-decoration-color: color-mix(in oklab, var(--color-primary) 40%, transparent);
360
+ -webkit-text-decoration-color: color-mix(in oklab, var(--color-primary) 40%, transparent);
361
+ text-decoration-color: color-mix(in oklab, var(--color-primary) 40%, transparent);
362
+ }
363
+ }
364
+
365
+ a {
366
+ text-underline-offset: 3px;
367
+ }
368
+
369
+ @media (prefers-reduced-motion: no-preference) {
370
+ a {
371
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
372
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
373
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
374
+ }
375
+ }
376
+
377
+ a:hover {
378
+ -webkit-text-decoration-color: var(--color-primary);
379
+ -webkit-text-decoration-color: var(--color-primary);
380
+ text-decoration-color: var(--color-primary);
381
+ }
382
+
383
+ :focus-visible {
384
+ border-radius: var(--radius-xs);
385
+ outline-style: var(--tw-outline-style);
386
+ outline-offset: 2px;
387
+ outline-width: 2px;
388
+ outline-color: var(--color-secondary);
389
+ }
390
+
391
+ hr {
392
+ margin-block: calc(var(--spacing) * 10);
393
+ border-style: var(--tw-border-style);
394
+ border-width: 0;
395
+ border-top-style: var(--tw-border-style);
396
+ border-top-width: 1px;
397
+ border-color: var(--color-rule);
398
+ }
399
+
400
+ ::selection {
401
+ background-color: var(--color-primary);
402
+ }
403
+
404
+ @supports (color: color-mix(in lab, red, red)) {
405
+ ::selection {
406
+ background-color: color-mix(in oklab, var(--color-primary) 20%, transparent);
407
+ }
408
+ }
409
+
410
+ code, kbd, samp, pre {
411
+ font-family: ui-monospace, SF Mono, Menlo, Consolas, DejaVu Sans Mono, monospace;
412
+ }
413
+
414
+ strong, b {
415
+ --tw-font-weight: var(--font-weight-bold);
416
+ font-weight: var(--font-weight-bold);
417
+ }
347
418
  }
348
419
 
349
- ul li,
350
- ol li {
351
- margin-bottom: var(--spacing-0);
352
- padding-left: var(--spacing-0);
353
- }
420
+ @layer components {
421
+ .screen-reader-text {
422
+ clip-path: inset(50%);
423
+ white-space: nowrap;
424
+ border: 0;
425
+ width: 1px;
426
+ height: 1px;
427
+ margin: -1px;
428
+ padding: 0;
429
+ position: absolute;
430
+ overflow: hidden;
431
+ }
432
+
433
+ .screen-reader-text:focus {
434
+ z-index: 50;
435
+ background-color: var(--color-base-3);
436
+ width: auto;
437
+ height: auto;
438
+ padding: calc(var(--spacing) * 4);
439
+ --tw-font-weight: var(--font-weight-bold);
440
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
441
+ font-weight: var(--font-weight-bold);
442
+ color: var(--color-text);
443
+ clip-path: none;
444
+ margin: 0;
445
+ text-decoration-line: none;
446
+ display: block;
447
+ inset-block-start: .5rem;
448
+ inset-inline-start: .5rem;
449
+ }
450
+
451
+ .global-wrapper {
452
+ max-width: var(--container-2xl);
453
+ padding-inline: calc(var(--spacing) * 5);
454
+ padding-top: calc(var(--spacing) * 8);
455
+ padding-bottom: calc(var(--spacing) * 16);
456
+ margin-inline: auto;
457
+ }
458
+
459
+ @media (min-width: 40rem) {
460
+ .global-wrapper {
461
+ padding-inline: calc(var(--spacing) * 6);
462
+ }
463
+ }
464
+
465
+ .global-header {
466
+ margin-bottom: calc(var(--spacing) * 12);
467
+ }
468
+
469
+ .global-wrapper:not([data-is-root-path="true"]) .global-header {
470
+ align-items: baseline;
471
+ column-gap: calc(var(--spacing) * 6);
472
+ row-gap: calc(var(--spacing) * 2);
473
+ flex-wrap: wrap;
474
+ display: flex;
475
+ }
476
+
477
+ .global-wrapper[data-is-root-path="true"] .global-header {
478
+ margin-bottom: calc(var(--spacing) * 14);
479
+ }
480
+
481
+ .main-heading {
482
+ font-size: var(--text-4xl);
483
+ line-height: var(--tw-leading, var(--text-4xl--line-height));
484
+ --tw-leading: 1;
485
+ line-height: 1;
486
+ }
487
+
488
+ @media (min-width: 40rem) {
489
+ .main-heading {
490
+ font-size: var(--text-5xl);
491
+ line-height: var(--tw-leading, var(--text-5xl--line-height));
492
+ }
493
+ }
494
+
495
+ .main-heading a, .header-link-home {
496
+ color: var(--color-text);
497
+ text-decoration-line: none;
498
+ }
499
+
500
+ @media (hover: hover) {
501
+ :is(.main-heading a, .header-link-home):hover {
502
+ color: var(--color-primary);
503
+ text-underline-offset: 6px;
504
+ text-decoration-line: underline;
505
+ text-decoration-thickness: 2px;
506
+ }
507
+ }
508
+
509
+ :is(.main-heading a, .header-link-home):focus-visible {
510
+ text-decoration-line: underline;
511
+ text-decoration-thickness: 2px;
512
+ }
513
+
514
+ .header-link-home {
515
+ min-block-size: 24px;
516
+ min-inline-size: 24px;
517
+ font-size: var(--text-lg);
518
+ line-height: var(--tw-leading, var(--text-lg--line-height));
519
+ --tw-font-weight: var(--font-weight-bold);
520
+ font-weight: var(--font-weight-bold);
521
+ align-items: center;
522
+ display: inline-flex;
523
+ }
524
+
525
+ .site-tagline {
526
+ margin-top: calc(var(--spacing) * 3);
527
+ font-size: var(--text-lg);
528
+ line-height: var(--tw-leading, var(--text-lg--line-height));
529
+ color: var(--color-muted);
530
+ font-style: italic;
531
+ }
532
+
533
+ .hlist {
534
+ flex-wrap: wrap;
535
+ padding: 0;
536
+ list-style-type: none;
537
+ display: flex;
538
+ }
539
+
540
+ .site-nav ul {
541
+ column-gap: calc(var(--spacing) * 5);
542
+ row-gap: var(--spacing);
543
+ --tw-tracking: .12em;
544
+ letter-spacing: .12em;
545
+ text-transform: uppercase;
546
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
547
+ font-size: .78rem;
548
+ }
549
+
550
+ .site-nav a {
551
+ align-items: center;
552
+ min-block-size: 24px;
553
+ min-inline-size: 24px;
554
+ text-decoration-line: underline;
555
+ text-decoration-color: currentColor;
556
+ display: inline-flex;
557
+ }
558
+
559
+ @supports (color: color-mix(in lab, red, red)) {
560
+ .site-nav a {
561
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
562
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
563
+ text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
564
+ }
565
+ }
566
+
567
+ .site-nav a {
568
+ text-underline-offset: 4px;
569
+ text-decoration-thickness: 1px;
570
+ }
571
+
572
+ @media (hover: hover) {
573
+ .site-nav a:hover {
574
+ color: var(--color-primary);
575
+ -webkit-text-decoration-color: var(--color-primary);
576
+ -webkit-text-decoration-color: var(--color-primary);
577
+ text-decoration-color: var(--color-primary);
578
+ text-decoration-thickness: 2px;
579
+ }
580
+ }
581
+
582
+ .site-nav a:focus-visible {
583
+ text-decoration-thickness: 2px;
584
+ }
585
+
586
+ .site-nav a {
587
+ color: var(--color-muted);
588
+ }
589
+
590
+ .site-nav a[aria-current="page"] {
591
+ --tw-font-weight: var(--font-weight-semibold);
592
+ font-weight: var(--font-weight-semibold);
593
+ color: var(--color-text);
594
+ }
595
+
596
+ .global-wrapper[data-is-root-path="true"] .global-header .site-nav {
597
+ margin-top: calc(var(--spacing) * 6);
598
+ border-top-style: var(--tw-border-style);
599
+ border-top-width: 1px;
600
+ border-color: var(--color-rule);
601
+ padding-top: calc(var(--spacing) * 4);
602
+ }
603
+
604
+ .global-wrapper > footer {
605
+ margin-top: calc(var(--spacing) * 20);
606
+ justify-content: space-between;
607
+ align-items: center;
608
+ gap: calc(var(--spacing) * 4);
609
+ border-top-style: var(--tw-border-style);
610
+ border-top-width: 1px;
611
+ border-color: var(--color-rule);
612
+ padding-top: calc(var(--spacing) * 6);
613
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
614
+ font-size: var(--text-sm);
615
+ line-height: var(--tw-leading, var(--text-sm--line-height));
616
+ color: var(--color-muted);
617
+ flex-wrap: wrap;
618
+ display: flex;
619
+ }
620
+
621
+ .global-wrapper > footer .site-nav ul {
622
+ column-gap: calc(var(--spacing) * 4);
623
+ font-size: var(--text-sm);
624
+ line-height: var(--tw-leading, var(--text-sm--line-height));
625
+ --tw-tracking: var(--tracking-normal);
626
+ letter-spacing: var(--tracking-normal);
627
+ text-transform: none;
628
+ }
629
+
630
+ .kicker {
631
+ margin-bottom: calc(var(--spacing) * 2);
632
+ align-items: center;
633
+ column-gap: calc(var(--spacing) * 2);
634
+ --tw-tracking: .14em;
635
+ letter-spacing: .14em;
636
+ color: var(--color-muted);
637
+ text-transform: uppercase;
638
+ flex-wrap: wrap;
639
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
640
+ font-size: .72rem;
641
+ display: flex;
642
+ }
643
+
644
+ .kicker a {
645
+ align-items: center;
646
+ min-block-size: 24px;
647
+ min-inline-size: 24px;
648
+ text-decoration-line: underline;
649
+ text-decoration-color: currentColor;
650
+ display: inline-flex;
651
+ }
652
+
653
+ @supports (color: color-mix(in lab, red, red)) {
654
+ .kicker a {
655
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
656
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
657
+ text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
658
+ }
659
+ }
660
+
661
+ .kicker a {
662
+ text-underline-offset: 4px;
663
+ text-decoration-thickness: 1px;
664
+ }
665
+
666
+ @media (hover: hover) {
667
+ .kicker a:hover {
668
+ color: var(--color-primary);
669
+ -webkit-text-decoration-color: var(--color-primary);
670
+ -webkit-text-decoration-color: var(--color-primary);
671
+ text-decoration-color: var(--color-primary);
672
+ text-decoration-thickness: 2px;
673
+ }
674
+ }
675
+
676
+ .kicker a:focus-visible {
677
+ text-decoration-thickness: 2px;
678
+ }
679
+
680
+ .kicker a {
681
+ color: var(--color-muted);
682
+ }
683
+
684
+ .kicker-kind {
685
+ --tw-font-weight: var(--font-weight-semibold);
686
+ font-weight: var(--font-weight-semibold);
687
+ color: var(--color-primary);
688
+ }
689
+
690
+ .page-title {
691
+ margin-top: var(--spacing);
692
+ margin-bottom: calc(var(--spacing) * 8);
693
+ font-size: var(--text-4xl);
694
+ line-height: var(--tw-leading, var(--text-4xl--line-height));
695
+ --tw-leading: 1.08;
696
+ line-height: 1.08;
697
+ }
698
+
699
+ @media (min-width: 40rem) {
700
+ .page-title {
701
+ font-size: 2.75rem;
702
+ }
703
+ }
704
+
705
+ .section-title {
706
+ margin-top: calc(var(--spacing) * 14);
707
+ margin-bottom: calc(var(--spacing) * 6);
708
+ --tw-font-weight: var(--font-weight-semibold);
709
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
710
+ font-size: .72rem;
711
+ font-weight: var(--font-weight-semibold);
712
+ --tw-tracking: .14em;
713
+ letter-spacing: .14em;
714
+ color: var(--color-muted);
715
+ text-transform: uppercase;
716
+ }
717
+
718
+ .empty {
719
+ color: var(--color-muted);
720
+ font-style: italic;
721
+ }
722
+
723
+ .e-content > * + *, .page-body > * + * {
724
+ margin-top: calc(var(--spacing) * 5);
725
+ }
726
+
727
+ :is(.e-content, .page-body) :is(h2, h3, h4, h5, h6) {
728
+ margin-bottom: calc(var(--spacing) * 3);
729
+ }
730
+
731
+ :is(.e-content, .page-body) h2 {
732
+ margin-top: calc(var(--spacing) * 10);
733
+ font-size: var(--text-2xl);
734
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
735
+ }
736
+
737
+ :is(.e-content, .page-body) h3 {
738
+ margin-top: calc(var(--spacing) * 8);
739
+ font-size: var(--text-xl);
740
+ line-height: var(--tw-leading, var(--text-xl--line-height));
741
+ }
742
+
743
+ :is(.e-content, .page-body) :is(h4, h5, h6) {
744
+ margin-top: calc(var(--spacing) * 6);
745
+ font-size: var(--text-lg);
746
+ line-height: var(--tw-leading, var(--text-lg--line-height));
747
+ }
748
+
749
+ :is(.e-content, .page-body) ul {
750
+ padding-inline-start: calc(var(--spacing) * 6);
751
+ list-style-type: disc;
752
+ }
753
+
754
+ :is(.e-content, .page-body) ol {
755
+ padding-inline-start: calc(var(--spacing) * 6);
756
+ list-style-type: decimal;
757
+ }
758
+
759
+ :is(.e-content, .page-body) li + li, :is(.e-content, .page-body) li > :is(ul, ol), :is(.e-content, .page-body) li > p + p {
760
+ margin-top: calc(var(--spacing) * 2);
761
+ }
762
+
763
+ :is(.e-content, .page-body) blockquote {
764
+ margin-block: calc(var(--spacing) * 8);
765
+ border-inline-start-style: var(--tw-border-style);
766
+ border-inline-start-width: 2px;
767
+ border-color: var(--color-primary);
768
+ font-size: var(--text-xl);
769
+ line-height: var(--tw-leading, var(--text-xl--line-height));
770
+ --tw-leading: var(--leading-snug);
771
+ line-height: var(--leading-snug);
772
+ color: var(--color-muted);
773
+ padding-inline-start: calc(var(--spacing) * 5);
774
+ font-style: italic;
775
+ }
776
+
777
+ :is(.e-content, .page-body) blockquote > * + * {
778
+ margin-top: calc(var(--spacing) * 3);
779
+ }
780
+
781
+ :is(.e-content, .page-body) img, :is(.e-content, .page-body) video {
782
+ border-radius: var(--radius-md);
783
+ max-width: 100%;
784
+ height: auto;
785
+ }
786
+
787
+ :is(.e-content, .page-body) figcaption {
788
+ margin-top: calc(var(--spacing) * 2);
789
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
790
+ font-size: var(--text-sm);
791
+ line-height: var(--tw-leading, var(--text-sm--line-height));
792
+ color: var(--color-muted);
793
+ }
794
+
795
+ :is(.e-content, .page-body) hr {
796
+ margin-block: calc(var(--spacing) * 10);
797
+ }
798
+
799
+ :is(.e-content, .page-body) table {
800
+ border-collapse: collapse;
801
+ width: 100%;
802
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
803
+ font-size: var(--text-sm);
804
+ line-height: var(--tw-leading, var(--text-sm--line-height));
805
+ }
806
+
807
+ :is(.e-content, .page-body) :is(th, td) {
808
+ border-bottom-style: var(--tw-border-style);
809
+ border-bottom-width: 1px;
810
+ border-color: var(--color-rule);
811
+ padding-inline: calc(var(--spacing) * 2);
812
+ padding-block: calc(var(--spacing) * 1.5);
813
+ text-align: start;
814
+ vertical-align: top;
815
+ }
816
+
817
+ :is(.e-content, .page-body) th {
818
+ border-color: var(--color-edge);
819
+ --tw-font-weight: var(--font-weight-semibold);
820
+ font-weight: var(--font-weight-semibold);
821
+ }
822
+
823
+ :is(.e-content, .page-body) dt {
824
+ --tw-font-weight: var(--font-weight-bold);
825
+ font-weight: var(--font-weight-bold);
826
+ }
827
+
828
+ :is(.e-content, .page-body) dd {
829
+ padding-inline-start: calc(var(--spacing) * 6);
830
+ }
831
+
832
+ :is(.e-content, .page-body) details summary {
833
+ cursor: pointer;
834
+ }
835
+
836
+ :is(.e-content, .page-body) kbd {
837
+ border-radius: var(--radius-sm);
838
+ border-style: var(--tw-border-style);
839
+ border-width: 1px;
840
+ border-color: var(--color-edge);
841
+ padding-inline: var(--spacing);
842
+ font-size: .85em;
843
+ }
844
+
845
+ code {
846
+ border-radius: var(--radius-sm);
847
+ background-color: var(--color-code-background);
848
+ padding-inline: calc(var(--spacing) * 1.5);
849
+ padding-block: calc(var(--spacing) * .5);
850
+ color: var(--color-code-text);
851
+ overflow-wrap: break-word;
852
+ font-size: .85em;
853
+ }
854
+
855
+ pre {
856
+ border-radius: var(--radius-md);
857
+ border-style: var(--tw-border-style);
858
+ border-width: 1px;
859
+ border-color: var(--color-edge);
860
+ background-color: var(--color-code-background);
861
+ padding: calc(var(--spacing) * 4);
862
+ --tw-leading: var(--leading-relaxed);
863
+ font-size: .85rem;
864
+ line-height: var(--leading-relaxed);
865
+ color: var(--color-code-text);
866
+ overflow-x: auto;
867
+ }
868
+
869
+ pre code {
870
+ font-size: inherit;
871
+ overflow-wrap: normal;
872
+ background-color: #0000;
873
+ border-radius: 0;
874
+ padding: 0;
875
+ }
876
+
877
+ .footnotes {
878
+ margin-top: calc(var(--spacing) * 10);
879
+ border-top-style: var(--tw-border-style);
880
+ border-top-width: 1px;
881
+ border-color: var(--color-rule);
882
+ padding-top: calc(var(--spacing) * 6);
883
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
884
+ font-size: var(--text-sm);
885
+ line-height: var(--tw-leading, var(--text-sm--line-height));
886
+ }
887
+
888
+ .footnotes-sep {
889
+ display: none;
890
+ }
891
+
892
+ .footnote-item > p {
893
+ margin-top: 0;
894
+ }
895
+
896
+ .hljs-comment {
897
+ color: var(--color-code-comment);
898
+ }
899
+
900
+ .hljs-tag {
901
+ color: var(--color-code-tag);
902
+ }
903
+
904
+ .hljs-subst, .hljs-punctuation, .hljs-operator {
905
+ color: var(--color-code-text);
906
+ }
907
+
908
+ .hljs-bullet, .hljs-variable, .hljs-template-variable, .hljs-selector-tag, .hljs-name {
909
+ color: var(--color-code-name);
910
+ }
911
+
912
+ .hljs-symbol, .hljs-number, .hljs-link, .hljs-attr, .hljs-variable.constant_, .hljs-literal {
913
+ color: var(--color-code-literal);
914
+ }
915
+
916
+ .hljs-title, .hljs-class .hljs-title, .hljs-title.class_ {
917
+ color: var(--color-code-class);
918
+ }
919
+
920
+ .hljs-strong {
921
+ color: var(--color-code-class);
922
+ font-weight: 700;
923
+ }
924
+
925
+ .hljs-code, .hljs-string, .hljs-title.class_.inherited__ {
926
+ color: var(--color-code-string);
927
+ }
928
+
929
+ .hljs-built_in, .hljs-doctag, .hljs-quote, .hljs-regexp, .hljs-keyword.hljs-atrule {
930
+ color: var(--color-code-support);
931
+ }
932
+
933
+ .hljs-attribute, .hljs-function .hljs-title, .hljs-section, .hljs-title.function_ {
934
+ color: var(--color-code-function);
935
+ }
936
+
937
+ .hljs-keyword, .hljs-template-tag, .hljs-type {
938
+ color: var(--color-code-keyword);
939
+ }
940
+
941
+ .hljs-emphasis {
942
+ color: var(--color-code-keyword);
943
+ font-style: italic;
944
+ }
945
+
946
+ .hljs-meta, .hljs-meta .hljs-keyword, .hljs-meta .hljs-string {
947
+ color: var(--color-code-meta);
948
+ }
949
+
950
+ .hljs-addition, .hljs-deletion {
951
+ color: var(--color-code-text);
952
+ margin-inline: -1rem;
953
+ padding-inline: 1rem;
954
+ text-decoration: none;
955
+ display: block;
956
+ }
957
+
958
+ .hljs-addition {
959
+ background-color: var(--color-code-added-background);
960
+ }
961
+
962
+ .hljs-deletion {
963
+ background-color: var(--color-code-removed-background);
964
+ }
965
+
966
+ .feed {
967
+ margin-top: calc(var(--spacing) * 2);
968
+ }
969
+
970
+ .feed-separator {
971
+ margin-block: calc(var(--spacing) * 9);
972
+ }
973
+
974
+ .feed-title {
975
+ margin-top: var(--spacing);
976
+ margin-bottom: calc(var(--spacing) * 3);
977
+ font-size: var(--text-3xl);
978
+ line-height: var(--tw-leading, var(--text-3xl--line-height));
979
+ --tw-leading: var(--leading-tight);
980
+ line-height: var(--leading-tight);
981
+ }
982
+
983
+ .feed-title a {
984
+ color: var(--color-text);
985
+ text-decoration-line: none;
986
+ }
987
+
988
+ @media (hover: hover) {
989
+ .feed-title a:hover {
990
+ color: var(--color-primary);
991
+ text-underline-offset: 6px;
992
+ text-decoration-line: underline;
993
+ text-decoration-thickness: 2px;
994
+ }
995
+ }
996
+
997
+ .feed-title a:focus-visible {
998
+ text-decoration-line: underline;
999
+ text-decoration-thickness: 2px;
1000
+ }
1001
+
1002
+ .feed-excerpt.p-summary {
1003
+ font-size: 1.05rem;
1004
+ }
1005
+
1006
+ .feed-item > .e-content {
1007
+ --tw-leading: 1.6;
1008
+ font-size: 1.12rem;
1009
+ line-height: 1.6;
1010
+ }
1011
+
1012
+ .feed-more, .front-links {
1013
+ margin-top: calc(var(--spacing) * 3);
1014
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1015
+ font-size: var(--text-sm);
1016
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1017
+ }
1018
+
1019
+ .feed-more a, .front-links a {
1020
+ align-items: center;
1021
+ gap: var(--spacing);
1022
+ min-block-size: 24px;
1023
+ min-inline-size: 24px;
1024
+ display: inline-flex;
1025
+ }
1026
+
1027
+ @media (hover: hover) {
1028
+ :is(.feed-more a, .front-links a):hover {
1029
+ text-decoration-thickness: 2px;
1030
+ }
1031
+ }
1032
+
1033
+ .front-links {
1034
+ margin-top: calc(var(--spacing) * 10);
1035
+ column-gap: calc(var(--spacing) * 6);
1036
+ flex-wrap: wrap;
1037
+ display: flex;
1038
+ }
1039
+
1040
+ .cite {
1041
+ margin-block: calc(var(--spacing) * 3);
1042
+ border-inline-start-style: var(--tw-border-style);
1043
+ border-inline-start-width: 2px;
1044
+ border-color: var(--color-primary);
1045
+ padding-inline-start: calc(var(--spacing) * 4);
1046
+ }
1047
+
1048
+ .cite-line {
1049
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1050
+ font-size: var(--text-sm);
1051
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1052
+ color: var(--color-muted);
1053
+ }
1054
+
1055
+ .cite-line a {
1056
+ --tw-font-weight: var(--font-weight-medium);
1057
+ min-block-size: 24px;
1058
+ min-inline-size: 24px;
1059
+ font-weight: var(--font-weight-medium);
1060
+ align-items: center;
1061
+ text-decoration-line: underline;
1062
+ text-decoration-color: currentColor;
1063
+ display: inline-flex;
1064
+ }
1065
+
1066
+ @supports (color: color-mix(in lab, red, red)) {
1067
+ .cite-line a {
1068
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1069
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1070
+ text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1071
+ }
1072
+ }
1073
+
1074
+ .cite-line a {
1075
+ text-underline-offset: 4px;
1076
+ text-decoration-thickness: 1px;
1077
+ }
1078
+
1079
+ @media (hover: hover) {
1080
+ .cite-line a:hover {
1081
+ color: var(--color-primary);
1082
+ -webkit-text-decoration-color: var(--color-primary);
1083
+ -webkit-text-decoration-color: var(--color-primary);
1084
+ text-decoration-color: var(--color-primary);
1085
+ text-decoration-thickness: 2px;
1086
+ }
1087
+ }
1088
+
1089
+ .cite-line a:focus-visible {
1090
+ text-decoration-thickness: 2px;
1091
+ }
1092
+
1093
+ .cite-line a {
1094
+ color: var(--color-text);
1095
+ }
1096
+
1097
+ .cite-quote {
1098
+ margin-top: var(--spacing);
1099
+ --tw-leading: var(--leading-snug);
1100
+ font-size: .98rem;
1101
+ line-height: var(--leading-snug);
1102
+ color: var(--color-muted);
1103
+ font-style: italic;
1104
+ }
1105
+
1106
+ .post-header {
1107
+ margin-bottom: calc(var(--spacing) * 8);
1108
+ }
1109
+
1110
+ .post-header h1 {
1111
+ margin-top: var(--spacing);
1112
+ font-size: var(--text-4xl);
1113
+ line-height: var(--tw-leading, var(--text-4xl--line-height));
1114
+ --tw-leading: 1.08;
1115
+ line-height: 1.08;
1116
+ }
1117
+
1118
+ @media (min-width: 40rem) {
1119
+ .post-header h1 {
1120
+ font-size: 2.75rem;
1121
+ }
1122
+ }
1123
+
1124
+ .post-deck {
1125
+ margin-top: calc(var(--spacing) * 4);
1126
+ font-size: var(--text-xl);
1127
+ line-height: var(--tw-leading, var(--text-xl--line-height));
1128
+ --tw-leading: var(--leading-snug);
1129
+ line-height: var(--leading-snug);
1130
+ color: var(--color-muted);
1131
+ font-style: italic;
1132
+ }
1133
+
1134
+ .blog-post > .e-content {
1135
+ --tw-leading: 1.65;
1136
+ font-size: 1.08rem;
1137
+ line-height: 1.65;
1138
+ }
1139
+
1140
+ .blog-post > .screen-reader-text ~ .e-content {
1141
+ --tw-leading: 1.55;
1142
+ font-size: 1.3rem;
1143
+ line-height: 1.55;
1144
+ }
1145
+
1146
+ .entry-meta, .page-meta {
1147
+ margin-top: calc(var(--spacing) * 8);
1148
+ align-items: center;
1149
+ column-gap: calc(var(--spacing) * 2);
1150
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1151
+ font-size: var(--text-sm);
1152
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1153
+ color: var(--color-muted);
1154
+ flex-wrap: wrap;
1155
+ display: flex;
1156
+ }
1157
+
1158
+ .page-meta:empty {
1159
+ display: none;
1160
+ }
1161
+
1162
+ .entry-meta a, .page-meta a {
1163
+ align-items: center;
1164
+ min-block-size: 24px;
1165
+ min-inline-size: 24px;
1166
+ text-decoration-line: underline;
1167
+ text-decoration-color: currentColor;
1168
+ display: inline-flex;
1169
+ }
1170
+
1171
+ @supports (color: color-mix(in lab, red, red)) {
1172
+ .entry-meta a, .page-meta a {
1173
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1174
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1175
+ text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1176
+ }
1177
+ }
1178
+
1179
+ .entry-meta a, .page-meta a {
1180
+ text-underline-offset: 4px;
1181
+ text-decoration-thickness: 1px;
1182
+ }
1183
+
1184
+ @media (hover: hover) {
1185
+ :is(.entry-meta a, .page-meta a):hover {
1186
+ color: var(--color-primary);
1187
+ -webkit-text-decoration-color: var(--color-primary);
1188
+ -webkit-text-decoration-color: var(--color-primary);
1189
+ text-decoration-color: var(--color-primary);
1190
+ text-decoration-thickness: 2px;
1191
+ }
1192
+ }
1193
+
1194
+ :is(.entry-meta a, .page-meta a):focus-visible {
1195
+ text-decoration-thickness: 2px;
1196
+ }
1197
+
1198
+ .entry-meta a, .page-meta a {
1199
+ color: var(--color-muted);
1200
+ }
1201
+
1202
+ .post-categories {
1203
+ margin-top: calc(var(--spacing) * 2);
1204
+ column-gap: calc(var(--spacing) * 3);
1205
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1206
+ font-size: var(--text-sm);
1207
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1208
+ flex-wrap: wrap;
1209
+ display: flex;
1210
+ }
1211
+
1212
+ .post-categories a {
1213
+ align-items: center;
1214
+ min-block-size: 24px;
1215
+ min-inline-size: 24px;
1216
+ text-decoration-line: underline;
1217
+ text-decoration-color: currentColor;
1218
+ display: inline-flex;
1219
+ }
1220
+
1221
+ @supports (color: color-mix(in lab, red, red)) {
1222
+ .post-categories a {
1223
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1224
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1225
+ text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1226
+ }
1227
+ }
1228
+
1229
+ .post-categories a {
1230
+ text-underline-offset: 4px;
1231
+ text-decoration-thickness: 1px;
1232
+ }
1233
+
1234
+ @media (hover: hover) {
1235
+ .post-categories a:hover {
1236
+ color: var(--color-primary);
1237
+ -webkit-text-decoration-color: var(--color-primary);
1238
+ -webkit-text-decoration-color: var(--color-primary);
1239
+ text-decoration-color: var(--color-primary);
1240
+ text-decoration-thickness: 2px;
1241
+ }
1242
+ }
1243
+
1244
+ .post-categories a:focus-visible {
1245
+ text-decoration-thickness: 2px;
1246
+ }
1247
+
1248
+ .post-categories a {
1249
+ color: var(--color-secondary);
1250
+ }
1251
+
1252
+ .post-categories a[rel="tag"]:before {
1253
+ content: "#";
1254
+ }
1255
+
1256
+ .blog-post > hr {
1257
+ margin-top: calc(var(--spacing) * 10);
1258
+ margin-bottom: calc(var(--spacing) * 8);
1259
+ }
1260
+
1261
+ .blog-post-nav {
1262
+ margin-block: calc(var(--spacing) * 12);
1263
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1264
+ font-size: var(--text-sm);
1265
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1266
+ }
1267
+
1268
+ .blog-post-nav ul {
1269
+ gap: calc(var(--spacing) * 4);
1270
+ padding: 0;
1271
+ list-style-type: none;
1272
+ display: grid;
1273
+ }
1274
+
1275
+ @media (min-width: 40rem) {
1276
+ .blog-post-nav ul {
1277
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1278
+ }
1279
+
1280
+ .blog-post-nav li:has( > a[rel="next"]) {
1281
+ grid-column-start: 2;
1282
+ }
1283
+ }
1284
+
1285
+ .blog-post-nav a {
1286
+ border-radius: var(--radius-md);
1287
+ border-style: var(--tw-border-style);
1288
+ border-width: 1px;
1289
+ border-color: var(--color-edge);
1290
+ min-block-size: 24px;
1291
+ min-inline-size: 24px;
1292
+ width: 100%;
1293
+ height: 100%;
1294
+ padding: calc(var(--spacing) * 4);
1295
+ color: var(--color-text);
1296
+ flex-direction: column;
1297
+ align-items: flex-start;
1298
+ text-decoration-line: none;
1299
+ display: inline-flex;
1300
+ }
354
1301
 
355
- li > p {
356
- display: inline;
357
- }
1302
+ @media (hover: hover) {
1303
+ .blog-post-nav a:hover {
1304
+ border-style: var(--tw-border-style);
1305
+ border-width: 2px;
1306
+ border-color: var(--color-primary);
1307
+ color: var(--color-primary);
1308
+ padding: calc(1rem - 1px);
1309
+ }
1310
+ }
358
1311
 
359
- li *:last-child {
360
- margin-bottom: var(--spacing-0);
361
- }
1312
+ @media (min-width: 40rem) {
1313
+ .blog-post-nav a[rel="next"] {
1314
+ text-align: end;
1315
+ align-items: flex-end;
1316
+ }
1317
+ }
362
1318
 
363
- details {
364
- margin-left: var(--spacing-4);
365
- }
1319
+ .blog-post-nav-label {
1320
+ margin-bottom: var(--spacing);
1321
+ --tw-tracking: .14em;
1322
+ letter-spacing: .14em;
1323
+ color: var(--color-muted);
1324
+ text-transform: uppercase;
1325
+ font-size: .7rem;
1326
+ display: block;
1327
+ }
366
1328
 
367
- details summary {
368
- cursor: pointer;
369
- }
1329
+ .bio {
1330
+ align-items: flex-start;
1331
+ gap: calc(var(--spacing) * 4);
1332
+ display: flex;
1333
+ }
370
1334
 
371
- .list-none {
372
- list-style-type: none;
373
- }
1335
+ .bio-avatar {
1336
+ flex-shrink: 0;
1337
+ }
374
1338
 
375
- .hlist {
376
- display: flex;
377
- flex-wrap: wrap;
378
- margin: 0;
379
- }
1339
+ .bio-avatar img {
1340
+ width: calc(var(--spacing) * 14);
1341
+ height: calc(var(--spacing) * 14);
1342
+ object-fit: cover;
1343
+ border-radius: 3.40282e38px;
1344
+ }
380
1345
 
381
- .hlist li {
382
- margin: 0;
383
- padding: 0 0.5em 0 0;
384
- list-style-type: none;
385
- }
1346
+ .bio .p-name {
1347
+ --tw-font-weight: var(--font-weight-bold);
1348
+ font-weight: var(--font-weight-bold);
1349
+ color: var(--color-text);
1350
+ }
386
1351
 
387
- blockquote {
388
- margin: var(--spacing-8) var(--spacing-8) var(--spacing-8) var(--spacing-0);
389
- padding: var(--spacing-0) var(--spacing-0) var(--spacing-0) var(--spacing-6);
390
- border-left: var(--spacing-1) solid var(--color-secondary);
391
- color: var(--color-secondary);
392
- font-size: var(--fontSize-2);
393
- font-style: italic;
394
- }
1352
+ .bio-note {
1353
+ margin-top: var(--spacing);
1354
+ color: var(--color-muted);
1355
+ font-size: .95rem;
1356
+ }
395
1357
 
396
- blockquote > :last-child {
397
- margin-bottom: var(--spacing-0);
398
- }
1358
+ .bio-links {
1359
+ margin-top: var(--spacing);
1360
+ column-gap: calc(var(--spacing) * 4);
1361
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1362
+ font-size: var(--text-sm);
1363
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1364
+ }
399
1365
 
400
- blockquote > ul,
401
- blockquote > ol {
402
- list-style-position: inside;
403
- }
1366
+ .bio-links a {
1367
+ align-items: center;
1368
+ min-block-size: 24px;
1369
+ min-inline-size: 24px;
1370
+ display: inline-flex;
1371
+ }
404
1372
 
405
- table {
406
- width: 100%;
407
- margin-bottom: var(--spacing-8);
408
- border-collapse: collapse;
409
- border-spacing: 0.25rem;
410
- }
1373
+ .global-wrapper[data-is-root-path="true"] .bio {
1374
+ margin-top: calc(var(--spacing) * 2);
1375
+ }
411
1376
 
412
- table thead tr th {
413
- border-bottom: 1px solid var(--color-primary);
414
- }
1377
+ .archive-header .page-title {
1378
+ margin-bottom: calc(var(--spacing) * 4);
1379
+ }
415
1380
 
416
- pre,
417
- code,
418
- kbd,
419
- samp {
420
- font-family: var(--fontFamily-mono);
421
- }
1381
+ .archive-header {
1382
+ margin-bottom: calc(var(--spacing) * 10);
1383
+ }
422
1384
 
423
- code {
424
- padding: 0.1em 0.3em;
425
- border-radius: 4px;
426
- background-color: var(--color-code-background);
427
- color: var(--color-code-text);
428
- font-size: 0.9em;
429
- /* A file path or an identifier is one long word, and a narrow screen would
430
- otherwise carry it off the side of the page. A block of code scrolls
431
- instead — see `pre` below. */
432
- overflow-wrap: break-word;
433
- }
1385
+ .category-description {
1386
+ font-size: var(--text-lg);
1387
+ line-height: var(--tw-leading, var(--text-lg--line-height));
1388
+ color: var(--color-muted);
1389
+ font-style: italic;
1390
+ }
434
1391
 
435
- pre {
436
- overflow-x: auto;
437
- margin-bottom: var(--spacing-8);
438
- padding: var(--spacing-3) var(--spacing-4);
439
- border-radius: 6px;
440
- background-color: var(--color-code-background);
441
- color: var(--color-code-text);
442
- font-size: var(--fontSize-0);
443
- line-height: var(--lineHeight-normal);
444
- }
1392
+ .author-header + .bio {
1393
+ margin-bottom: calc(var(--spacing) * 12);
1394
+ }
445
1395
 
446
- pre code {
447
- padding: 0;
448
- border-radius: 0;
449
- background: none;
450
- font-size: inherit;
451
- }
1396
+ .archive h2 {
1397
+ margin-top: calc(var(--spacing) * 10);
1398
+ margin-bottom: calc(var(--spacing) * 3);
1399
+ font-size: var(--text-2xl);
1400
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
1401
+ }
452
1402
 
453
- /* Syntax highlighting (TASK-86).
454
- *
455
- * The CMS renders a fenced block as `pre > code.language-x` and highlights
456
- * nothing; `static/highlight.js` marks the tokens up on the client, and these
457
- * are its colours. The scopes and the slots they map to are highlight.js's own
458
- * base16 Tomorrow theme, so a token it invents later lands somewhere sensible
459
- * rather than nowhere.
460
- *
461
- * Every colour is a custom property, so a site that wants another palette
462
- * redefines a dozen tokens instead of writing a syntax theme. Delimiters,
463
- * operators and substitutions are deliberately the block's own ink: they are
464
- * most of the characters on screen and a colour there is noise.
465
- */
466
-
467
- .hljs-comment {
468
- color: var(--color-code-comment);
469
- }
1403
+ .archive ol {
1404
+ list-style-type: none;
1405
+ }
470
1406
 
471
- .hljs-tag {
472
- color: var(--color-code-tag);
473
- }
1407
+ :where(.archive ol > :not(:last-child)) {
1408
+ --tw-space-y-reverse: 0;
1409
+ margin-block-start: calc(var(--spacing) * var(--tw-space-y-reverse));
1410
+ margin-block-end: calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)));
1411
+ }
474
1412
 
475
- .hljs-subst,
476
- .hljs-punctuation,
477
- .hljs-operator {
478
- color: var(--color-code-text);
479
- }
1413
+ .archive ol {
1414
+ padding: 0;
1415
+ }
480
1416
 
481
- .hljs-bullet,
482
- .hljs-variable,
483
- .hljs-template-variable,
484
- .hljs-selector-tag,
485
- .hljs-name {
486
- color: var(--color-code-name);
487
- }
1417
+ .archive a {
1418
+ align-items: center;
1419
+ min-block-size: 24px;
1420
+ min-inline-size: 24px;
1421
+ display: inline-flex;
1422
+ }
488
1423
 
489
- .hljs-symbol,
490
- .hljs-number,
491
- .hljs-link,
492
- .hljs-attr,
493
- .hljs-variable.constant_,
494
- .hljs-literal {
495
- color: var(--color-code-literal);
496
- }
1424
+ .pagination {
1425
+ margin-top: calc(var(--spacing) * 12);
1426
+ gap: calc(var(--spacing) * 4);
1427
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1428
+ font-size: var(--text-sm);
1429
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1430
+ flex-wrap: wrap;
1431
+ display: flex;
1432
+ }
497
1433
 
498
- .hljs-title,
499
- .hljs-class .hljs-title,
500
- .hljs-title.class_ {
501
- color: var(--color-code-class);
502
- }
1434
+ .pagination a {
1435
+ align-items: center;
1436
+ gap: var(--spacing);
1437
+ min-block-size: 24px;
1438
+ min-inline-size: 24px;
1439
+ text-decoration-line: underline;
1440
+ text-decoration-color: currentColor;
1441
+ display: inline-flex;
1442
+ }
503
1443
 
504
- .hljs-strong {
505
- color: var(--color-code-class);
506
- font-weight: var(--fontWeight-bold);
507
- }
1444
+ @supports (color: color-mix(in lab, red, red)) {
1445
+ .pagination a {
1446
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1447
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1448
+ text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1449
+ }
1450
+ }
508
1451
 
509
- .hljs-code,
510
- .hljs-string,
511
- .hljs-title.class_.inherited__ {
512
- color: var(--color-code-string);
513
- }
1452
+ .pagination a {
1453
+ text-underline-offset: 4px;
1454
+ text-decoration-thickness: 1px;
1455
+ }
514
1456
 
515
- .hljs-built_in,
516
- .hljs-doctag,
517
- .hljs-quote,
518
- .hljs-regexp,
519
- .hljs-keyword.hljs-atrule {
520
- color: var(--color-code-support);
521
- }
1457
+ @media (hover: hover) {
1458
+ .pagination a:hover {
1459
+ color: var(--color-primary);
1460
+ -webkit-text-decoration-color: var(--color-primary);
1461
+ -webkit-text-decoration-color: var(--color-primary);
1462
+ text-decoration-color: var(--color-primary);
1463
+ text-decoration-thickness: 2px;
1464
+ }
1465
+ }
522
1466
 
523
- .hljs-attribute,
524
- .hljs-function .hljs-title,
525
- .hljs-section,
526
- .hljs-title.function_ {
527
- color: var(--color-code-function);
528
- }
1467
+ .pagination a:focus-visible {
1468
+ text-decoration-thickness: 2px;
1469
+ }
529
1470
 
530
- .hljs-keyword,
531
- .hljs-template-tag,
532
- .hljs-type {
533
- color: var(--color-code-keyword);
534
- }
1471
+ .pagination-next {
1472
+ margin-inline-start: auto;
1473
+ }
535
1474
 
536
- .hljs-emphasis {
537
- color: var(--color-code-keyword);
538
- font-style: italic;
539
- }
1475
+ .search-form {
1476
+ margin-bottom: calc(var(--spacing) * 8);
1477
+ gap: calc(var(--spacing) * 2);
1478
+ display: flex;
1479
+ }
540
1480
 
541
- .hljs-meta,
542
- .hljs-meta .hljs-keyword,
543
- .hljs-meta .hljs-string {
544
- color: var(--color-code-meta);
545
- }
1481
+ .search-form label {
1482
+ flex: 1;
1483
+ }
546
1484
 
547
- /* A diff reads by the line, not by the token, which is what prism-diff.css did
548
- * on the site this design comes from: the whole line takes a tint out to the
549
- * edges of the block — the negative margin cancels the `pre` padding and the
550
- * padding puts it back — and keeps the block's own ink, which is the pair the
551
- * contrast test checks. The `+` and the `-` stay in the text, so the meaning
552
- * does not rest on the colour alone.
553
- */
554
-
555
- .hljs-addition,
556
- .hljs-deletion {
557
- display: block;
558
- margin-right: calc(-1 * var(--spacing-4));
559
- margin-left: calc(-1 * var(--spacing-4));
560
- padding-right: var(--spacing-4);
561
- padding-left: var(--spacing-4);
562
- color: var(--color-code-text);
563
- text-decoration: none;
564
- }
1485
+ .search-summary {
1486
+ margin-bottom: calc(var(--spacing) * 8);
1487
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1488
+ font-size: var(--text-sm);
1489
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1490
+ color: var(--color-muted);
1491
+ }
565
1492
 
566
- .hljs-addition {
567
- background-color: var(--color-code-added-background);
568
- }
1493
+ .search-result + .search-result {
1494
+ margin-top: calc(var(--spacing) * 9);
1495
+ border-top-style: var(--tw-border-style);
1496
+ border-top-width: 1px;
1497
+ border-color: var(--color-rule);
1498
+ padding-top: calc(var(--spacing) * 9);
1499
+ }
569
1500
 
570
- .hljs-deletion {
571
- background-color: var(--color-code-removed-background);
572
- }
1501
+ .search-result .feed-title {
1502
+ font-size: var(--text-2xl);
1503
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
1504
+ }
573
1505
 
574
- /* Screen reader text. The skip link is this until it is focused, and then it
575
- is a box at the top left of the page. */
576
-
577
- .screen-reader-text {
578
- position: absolute;
579
- width: 1px;
580
- height: 1px;
581
- margin: -1px;
582
- padding: 0;
583
- overflow: hidden;
584
- border: 0;
585
- clip-path: inset(50%);
586
- word-wrap: normal !important;
587
- }
1506
+ .search-snippet mark {
1507
+ border-radius: var(--radius-xs);
1508
+ background-color: var(--color-primary);
1509
+ }
588
1510
 
589
- .screen-reader-text:focus {
590
- display: block;
591
- width: auto;
592
- height: auto;
593
- top: var(--spacing-2);
594
- left: var(--spacing-2);
595
- padding: var(--spacing-4);
596
- clip-path: none;
597
- background-color: var(--color-base-3);
598
- color: var(--color-text);
599
- font-size: var(--fontSize-1);
600
- font-weight: var(--fontWeight-bold);
601
- line-height: normal;
602
- text-decoration: none;
603
- z-index: 100000;
604
- }
1511
+ @supports (color: color-mix(in lab, red, red)) {
1512
+ .search-snippet mark {
1513
+ background-color: color-mix(in oklab, var(--color-primary) 20%, transparent);
1514
+ }
1515
+ }
605
1516
 
606
- /* The page shell */
1517
+ .search-snippet mark {
1518
+ padding-inline: calc(var(--spacing) * .5);
1519
+ color: var(--color-text);
1520
+ }
607
1521
 
608
- .global-wrapper {
609
- max-width: var(--maxWidth-wrapper);
610
- margin: var(--spacing-0) auto;
611
- padding: var(--spacing-10) var(--spacing-5);
612
- }
1522
+ :is(.not-found, .server-error, .maintenance) > p {
1523
+ font-size: 1.08rem;
1524
+ }
613
1525
 
614
- .global-wrapper[data-is-root-path='true'] .bio {
615
- margin-bottom: var(--spacing-20);
616
- }
1526
+ .reactions-section {
1527
+ margin-top: calc(var(--spacing) * 14);
1528
+ margin-bottom: calc(var(--spacing) * 10);
1529
+ column-gap: calc(var(--spacing) * 10);
1530
+ row-gap: calc(var(--spacing) * 4);
1531
+ flex-wrap: wrap;
1532
+ display: flex;
1533
+ }
617
1534
 
618
- .global-header {
619
- margin-bottom: var(--spacing-12);
620
- }
1535
+ .reaction-group {
1536
+ min-width: 0;
1537
+ }
621
1538
 
622
- .main-heading {
623
- margin: 0;
624
- font-size: var(--fontSize-7);
625
- }
1539
+ .reaction-title {
1540
+ margin-bottom: calc(var(--spacing) * 2);
1541
+ --tw-font-weight: var(--font-weight-normal);
1542
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1543
+ font-size: .72rem;
1544
+ font-weight: var(--font-weight-normal);
1545
+ --tw-tracking: .14em;
1546
+ letter-spacing: .14em;
1547
+ color: var(--color-muted);
1548
+ text-transform: uppercase;
1549
+ }
626
1550
 
627
- .header-link-home {
628
- font-family: var(--font-heading);
629
- font-size: var(--fontSize-2);
630
- font-weight: var(--fontWeight-bold);
631
- text-decoration: none;
632
- }
1551
+ .reaction-count {
1552
+ --tw-font-weight: var(--font-weight-semibold);
1553
+ font-weight: var(--font-weight-semibold);
1554
+ color: var(--color-text);
1555
+ margin-inline-start: var(--spacing);
1556
+ }
633
1557
 
634
- /* The site menu, which the header carries on every page (TASK-105). At the
635
- root the header is the site title with the tagline under it, and the menu
636
- is a line of its own under that.
1558
+ .facepile {
1559
+ flex-wrap: wrap;
1560
+ align-items: center;
1561
+ display: flex;
1562
+ }
637
1563
 
638
- No size of its own (TASK-111): a menu is navigation somebody is meant to
639
- use rather than a footnote, so it reads at the page's size, like the footer
640
- menu, which never had one. */
641
- .global-header .site-nav {
642
- margin-top: var(--spacing-2);
643
- }
1564
+ .facepile > a, .facepile > span {
1565
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
1566
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1567
+ --tw-ring-color: var(--color-body);
1568
+ border-radius: 3.40282e38px;
1569
+ margin-inline-start: calc(var(--spacing) * -2);
1570
+ position: relative;
1571
+ }
644
1572
 
645
- /* Everywhere else the header is the small link home, and the menu sits beside
646
- it on the same line — the two wrap onto a second line together rather than
647
- the menu dropping under the link on a narrow screen. */
648
- .global-wrapper:not([data-is-root-path='true']) .global-header {
649
- display: flex;
650
- flex-wrap: wrap;
651
- align-items: baseline;
652
- column-gap: var(--spacing-5);
653
- row-gap: var(--spacing-1);
654
- }
1573
+ :is(.facepile > a, .facepile > span):first-child {
1574
+ margin-inline-start: 0;
1575
+ }
655
1576
 
656
- .global-wrapper:not([data-is-root-path='true']) .global-header .site-nav {
657
- margin-top: var(--spacing-0);
658
- }
1577
+ @media (hover: hover) {
1578
+ :is(.facepile > a, .facepile > span):hover {
1579
+ z-index: 10;
1580
+ }
1581
+ }
659
1582
 
660
- /* An entry: a post or a page (TASK-83). The source design's own rules — the
661
- title tight against the words under it, a subtitle in the heading font —
662
- plus the small line the `e-content` ends on, which carries the permalink,
663
- the published date and, when it is a different day, the updated one. */
1583
+ @media (prefers-reduced-motion: no-preference) {
1584
+ .facepile > a, .facepile > span {
1585
+ transition-property: transform, translate, scale, rotate;
1586
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1587
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1588
+ }
1589
+
1590
+ @media (hover: hover) {
1591
+ :is(.facepile > a, .facepile > span):hover {
1592
+ --tw-scale-x: 110%;
1593
+ --tw-scale-y: 110%;
1594
+ --tw-scale-z: 110%;
1595
+ scale: var(--tw-scale-x) var(--tw-scale-y);
1596
+ }
1597
+ }
1598
+ }
664
1599
 
665
- .blog-post header h1 {
666
- margin: var(--spacing-0) var(--spacing-0) var(--spacing-4) var(--spacing-0);
667
- }
1600
+ .facepile img {
1601
+ width: calc(var(--spacing) * 8);
1602
+ height: calc(var(--spacing) * 8);
1603
+ border-radius: 3.40282e38px;
1604
+ }
668
1605
 
669
- .blog-post header p {
670
- font-family: var(--font-heading);
671
- font-size: var(--fontSize-2);
672
- }
1606
+ .facepile > :has(.reaction-name) {
1607
+ align-items: center;
1608
+ gap: var(--spacing);
1609
+ background-color: var(--color-base);
1610
+ min-block-size: 24px;
1611
+ min-inline-size: 24px;
1612
+ padding-inline: calc(var(--spacing) * 2);
1613
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1614
+ font-size: var(--text-sm);
1615
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1616
+ color: var(--color-text);
1617
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
1618
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1619
+ margin-inline-start: var(--spacing);
1620
+ text-decoration-line: none;
1621
+ display: inline-flex;
1622
+ }
673
1623
 
674
- .entry-meta,
675
- .page-meta {
676
- margin-top: var(--spacing-8);
677
- }
1624
+ .facepile > :has(.reaction-name):first-child {
1625
+ margin-inline-start: 0;
1626
+ }
678
1627
 
679
- /* A page usually carries no date, and then this line has nothing in it. The
680
- layout prints it anyway, so a site has one hook wherever it is; here is
681
- where it disappears. */
682
- .entry-meta:empty,
683
- .page-meta:empty {
684
- display: none;
685
- }
1628
+ .reaction-icon {
1629
+ font-size: var(--text-xs);
1630
+ line-height: var(--tw-leading, var(--text-xs--line-height));
1631
+ }
686
1632
 
687
- /* The bio, which the entry footer prints and an author archive heads with
688
- (TASK-83). */
1633
+ .comments-area {
1634
+ margin-top: calc(var(--spacing) * 14);
1635
+ }
689
1636
 
690
- .bio {
691
- display: flex;
692
- align-items: center;
693
- margin-bottom: var(--spacing-16);
694
- }
1637
+ .comments-title {
1638
+ margin-bottom: calc(var(--spacing) * 5);
1639
+ font-size: var(--text-xl);
1640
+ line-height: var(--tw-leading, var(--text-xl--line-height));
1641
+ }
695
1642
 
696
- .bio p {
697
- margin-bottom: var(--spacing-0);
698
- }
1643
+ .comment-list {
1644
+ margin: 0;
1645
+ list-style-type: none;
1646
+ }
699
1647
 
700
- /* The name reads as the heading of the card; the source theme printed a
701
- <strong> around it, which is styling in the markup. */
702
- .bio .p-name {
703
- font-weight: var(--fontWeight-bold);
704
- }
1648
+ :where(.comment-list > :not(:last-child)) {
1649
+ --tw-space-y-reverse: 0;
1650
+ margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));
1651
+ margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));
1652
+ }
705
1653
 
706
- .bio-note {
707
- margin-top: var(--spacing-2);
708
- font-style: italic;
709
- }
1654
+ .comment-list {
1655
+ padding: 0;
1656
+ }
710
1657
 
711
- /* The links the person calls their own, under the credit: a horizontal list in
712
- the heading font, at the page's size like every other nav (TASK-111). The
713
- site menu used to share this rule; it is in the header now (TASK-105) and
714
- the bio carries nobody but the person. */
715
- .bio-links {
716
- margin-top: var(--spacing-2);
717
- }
1658
+ .comment-list .children {
1659
+ margin-top: calc(var(--spacing) * 6);
1660
+ list-style-type: none;
1661
+ }
718
1662
 
719
- .bio-avatar {
720
- display: inline-block;
721
- min-width: 55px;
722
- margin-right: var(--spacing-4);
723
- margin-bottom: var(--spacing-0);
724
- border: 3px solid var(--color-base-3);
725
- border-radius: 50%;
726
- }
1663
+ :where(.comment-list .children > :not(:last-child)) {
1664
+ --tw-space-y-reverse: 0;
1665
+ margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));
1666
+ margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
1667
+ }
727
1668
 
728
- .bio-avatar img {
729
- display: block;
730
- width: 50px;
731
- height: 50px;
732
- border-radius: 50%;
733
- }
1669
+ .comment-list .children {
1670
+ border-inline-start-style: var(--tw-border-style);
1671
+ border-inline-start-width: 1px;
1672
+ border-color: var(--color-rule);
1673
+ padding-inline-start: calc(var(--spacing) * 6);
1674
+ }
734
1675
 
735
- .circle {
736
- border-radius: 50%;
737
- }
1676
+ @media (min-width: 40rem) {
1677
+ .comment-list .children {
1678
+ padding-inline-start: calc(var(--spacing) * 12);
1679
+ }
1680
+ }
738
1681
 
739
- /* A listing: the feed of entries, and what heads one (TASK-82). The source
740
- design's own rules, on the tokens above. The feed itself takes no styling —
741
- it is a stack of articles at the measure — and what makes it read as a list
742
- is the rule between two of them and the small meta line under each. */
1682
+ .comment-body {
1683
+ gap: calc(var(--spacing) * 2);
1684
+ flex-direction: column;
1685
+ display: flex;
1686
+ }
743
1687
 
744
- .feed-title {
745
- margin: var(--spacing-0) var(--spacing-0) var(--spacing-4) var(--spacing-0);
746
- padding: var(--spacing-0);
747
- font-size: var(--fontSize-3);
748
- }
1688
+ .comment-meta {
1689
+ align-items: center;
1690
+ column-gap: calc(var(--spacing) * 3);
1691
+ row-gap: var(--spacing);
1692
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1693
+ font-size: var(--text-sm);
1694
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1695
+ flex-wrap: wrap;
1696
+ display: flex;
1697
+ }
749
1698
 
750
- .feed-separator {
751
- margin: var(--spacing-2) var(--spacing-0) var(--spacing-4) var(--spacing-0);
752
- }
1699
+ .comment-author {
1700
+ align-items: center;
1701
+ gap: calc(var(--spacing) * 2);
1702
+ display: flex;
1703
+ }
753
1704
 
754
- .feed-meta {
755
- display: flex;
756
- flex-wrap: wrap;
757
- gap: var(--spacing-2);
758
- align-items: baseline;
759
- font-size: 70%;
760
- }
1705
+ .comment-author .avatar, .comment-avatar-empty {
1706
+ width: calc(var(--spacing) * 8);
1707
+ height: calc(var(--spacing) * 8);
1708
+ border-radius: 3.40282e38px;
1709
+ flex-shrink: 0;
1710
+ }
761
1711
 
762
- .feed-meta p {
763
- margin: var(--spacing-0);
764
- }
1712
+ .comment-avatar-empty {
1713
+ background-color: var(--color-base);
1714
+ --tw-font-weight: var(--font-weight-semibold);
1715
+ font-weight: var(--font-weight-semibold);
1716
+ color: var(--color-muted);
1717
+ justify-content: center;
1718
+ align-items: center;
1719
+ display: inline-flex;
1720
+ }
765
1721
 
766
- .post-categories {
767
- margin-top: var(--spacing-2);
768
- margin-bottom: var(--spacing-0);
769
- font-size: 70%;
770
- }
1722
+ .comment-author a {
1723
+ align-items: center;
1724
+ min-block-size: 24px;
1725
+ min-inline-size: 24px;
1726
+ text-decoration-line: underline;
1727
+ text-decoration-color: currentColor;
1728
+ display: inline-flex;
1729
+ }
771
1730
 
772
- .post-categories a {
773
- display: inline-block;
774
- margin-right: var(--spacing-2);
775
- }
1731
+ @supports (color: color-mix(in lab, red, red)) {
1732
+ .comment-author a {
1733
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1734
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1735
+ text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1736
+ }
1737
+ }
776
1738
 
777
- /* The categories are already small; inside the meta line they would be small
778
- twice over, so there they are the size of the line they sit on. */
779
- .feed-meta .post-categories {
780
- font-size: 100%;
781
- }
1739
+ .comment-author a {
1740
+ text-underline-offset: 4px;
1741
+ text-decoration-thickness: 1px;
1742
+ }
782
1743
 
783
- .category-header {
784
- margin-bottom: var(--spacing-8);
785
- }
1744
+ @media (hover: hover) {
1745
+ .comment-author a:hover {
1746
+ color: var(--color-primary);
1747
+ -webkit-text-decoration-color: var(--color-primary);
1748
+ -webkit-text-decoration-color: var(--color-primary);
1749
+ text-decoration-color: var(--color-primary);
1750
+ text-decoration-thickness: 2px;
1751
+ }
1752
+ }
786
1753
 
787
- .category-description {
788
- margin-top: var(--spacing-2);
789
- font-style: italic;
790
- }
1754
+ .comment-author a:focus-visible {
1755
+ text-decoration-thickness: 2px;
1756
+ }
791
1757
 
792
- /* Pagination: two arrows under a listing, the previous one at the left edge
793
- and the next at the right however few there are. */
794
-
795
- .pagination {
796
- display: flex;
797
- gap: var(--spacing-4);
798
- align-items: baseline;
799
- justify-content: space-between;
800
- margin-top: var(--spacing-12);
801
- padding-top: var(--spacing-5);
802
- border-top: 1px solid var(--color-base);
803
- font-family: var(--font-heading);
804
- font-size: var(--fontSize-0);
805
- }
1758
+ .comment-author a {
1759
+ color: var(--color-text);
1760
+ }
806
1761
 
807
- .pagination-previous {
808
- margin-inline-end: auto;
809
- }
1762
+ .comment-metadata a {
1763
+ align-items: center;
1764
+ min-block-size: 24px;
1765
+ min-inline-size: 24px;
1766
+ text-decoration-line: underline;
1767
+ text-decoration-color: currentColor;
1768
+ display: inline-flex;
1769
+ }
810
1770
 
811
- .pagination-next {
812
- margin-inline-start: auto;
813
- }
1771
+ @supports (color: color-mix(in lab, red, red)) {
1772
+ .comment-metadata a {
1773
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1774
+ -webkit-text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1775
+ text-decoration-color: color-mix(in oklab, currentcolor 50%, transparent);
1776
+ }
1777
+ }
814
1778
 
815
- /* Where a post links its neighbours, which the entry layout prints (TASK-83). */
1779
+ .comment-metadata a {
1780
+ text-underline-offset: 4px;
1781
+ text-decoration-thickness: 1px;
1782
+ }
816
1783
 
817
- .blog-post-nav {
818
- font-family: var(--font-heading);
819
- font-size: var(--fontSize-0);
820
- }
1784
+ @media (hover: hover) {
1785
+ .comment-metadata a:hover {
1786
+ color: var(--color-primary);
1787
+ -webkit-text-decoration-color: var(--color-primary);
1788
+ -webkit-text-decoration-color: var(--color-primary);
1789
+ text-decoration-color: var(--color-primary);
1790
+ text-decoration-thickness: 2px;
1791
+ }
1792
+ }
821
1793
 
822
- .blog-post-nav ul {
823
- display: flex;
824
- flex-wrap: wrap;
825
- justify-content: space-between;
826
- margin: var(--spacing-0);
827
- padding: 0;
828
- list-style: none;
829
- }
1794
+ .comment-metadata a:focus-visible {
1795
+ text-decoration-thickness: 2px;
1796
+ }
830
1797
 
831
- /* Titles: what heads a listing, a 404 and an author archive. The source theme
832
- prints none of these — it has no archive heading at all — so they are the
833
- theme's own, sized off the same scale. An entry's own title is
834
- `.blog-post header h1` above. */
1798
+ .comment-metadata a, .comment-metadata {
1799
+ color: var(--color-muted);
1800
+ }
835
1801
 
836
- .page-title {
837
- margin: 0 0 var(--spacing-2);
838
- font-size: var(--fontSize-6);
839
- }
1802
+ .comment-source {
1803
+ color: var(--color-muted);
1804
+ font-style: italic;
1805
+ }
840
1806
 
841
- .empty {
842
- font-family: var(--font-heading);
843
- font-size: var(--fontSize-0);
844
- }
1807
+ .comment-content {
1808
+ font-size: 1.02rem;
1809
+ }
845
1810
 
846
- /* The search box (TASK-22): a field and a button on one line, at the top of
847
- the search page and nowhere else (TASK-105). The field is drawn the way the
848
- comment form's are, so the site has one look for a place to type. */
1811
+ .reply {
1812
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1813
+ font-size: var(--text-sm);
1814
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1815
+ }
849
1816
 
850
- .search-form {
851
- display: flex;
852
- gap: var(--spacing-2);
853
- margin: 0 0 var(--spacing-4);
854
- font-family: var(--font-heading);
855
- }
1817
+ .reply a {
1818
+ align-items: center;
1819
+ min-block-size: 24px;
1820
+ min-inline-size: 24px;
1821
+ display: inline-flex;
1822
+ }
856
1823
 
857
- .search-form label {
858
- flex: 1;
859
- min-width: 0;
860
- }
1824
+ .no-comments {
1825
+ margin-top: calc(var(--spacing) * 8);
1826
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1827
+ font-size: var(--text-sm);
1828
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1829
+ color: var(--color-muted);
1830
+ font-style: italic;
1831
+ }
861
1832
 
862
- .search-form input[type='search'] {
863
- width: 100%;
864
- padding: var(--spacing-2);
865
- border: 1px solid var(--color-base);
866
- background-color: var(--color-base-3);
867
- color: var(--color-text);
868
- font-family: var(--font-body);
869
- font-size: var(--fontSize-1);
870
- }
1833
+ .comment-respond {
1834
+ margin-top: calc(var(--spacing) * 12);
1835
+ border-top-style: var(--tw-border-style);
1836
+ border-top-width: 1px;
1837
+ border-color: var(--color-rule);
1838
+ padding-top: calc(var(--spacing) * 10);
1839
+ }
871
1840
 
872
- .search-form input[type='search']:focus-visible {
873
- outline: 2px solid var(--color-primary);
874
- outline-offset: -1px;
875
- border-color: var(--color-primary);
876
- }
1841
+ .comment-reply-title, .contact-form-title {
1842
+ margin-bottom: calc(var(--spacing) * 5);
1843
+ font-size: var(--text-xl);
1844
+ line-height: var(--tw-leading, var(--text-xl--line-height));
1845
+ }
877
1846
 
878
- .search-form button {
879
- padding: var(--spacing-2) var(--spacing-4);
880
- border: none;
881
- background-color: var(--color-primary);
882
- color: var(--color-body);
883
- font-family: var(--font-heading);
884
- font-size: var(--fontSize-1);
885
- cursor: pointer;
886
- }
1847
+ .comment-help {
1848
+ margin-top: calc(var(--spacing) * -3);
1849
+ margin-bottom: calc(var(--spacing) * 5);
1850
+ color: var(--color-muted);
1851
+ font-size: .95rem;
1852
+ }
887
1853
 
888
- .search-form button:hover,
889
- .search-form button:focus-visible {
890
- opacity: 0.85;
891
- }
1854
+ .comment-respond form {
1855
+ gap: calc(var(--spacing) * 4);
1856
+ flex-direction: column;
1857
+ display: flex;
1858
+ }
892
1859
 
893
- .search-summary {
894
- font-family: var(--font-heading);
895
- font-size: var(--fontSize-0);
896
- }
1860
+ .field-row {
1861
+ column-gap: calc(var(--spacing) * 4);
1862
+ row-gap: calc(var(--spacing) * 4);
1863
+ display: grid;
1864
+ }
897
1865
 
898
- .search-result {
899
- margin: 0 0 var(--spacing-8);
900
- }
1866
+ @media (min-width: 40rem) {
1867
+ .field-row {
1868
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1869
+ }
1870
+ }
901
1871
 
902
- .search-result .feed-title {
903
- margin-bottom: var(--spacing-2);
904
- }
1872
+ .comment-respond label {
1873
+ margin-bottom: var(--spacing);
1874
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1875
+ font-size: var(--text-sm);
1876
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1877
+ display: block;
1878
+ }
905
1879
 
906
- /* A matched word is marked by weight and an underline in the primary colour
907
- rather than by a highlighter background, so it adds no colour pair the
908
- contrast test would have to prove in both schemes. */
1880
+ .comment-optional, .contact-optional, .comment-hint, .contact-hint {
1881
+ color: var(--color-muted);
1882
+ }
909
1883
 
910
- .search-snippet mark {
911
- background-color: transparent;
912
- color: inherit;
913
- font-weight: var(--fontWeight-bold);
914
- text-decoration: underline var(--color-primary);
915
- text-underline-offset: 0.15em;
916
- }
1884
+ .comment-hint, .contact-hint, .comment-field-error, .contact-field-error {
1885
+ margin-top: var(--spacing);
1886
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1887
+ font-size: var(--text-sm);
1888
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1889
+ display: block;
1890
+ }
917
1891
 
918
- /* An author archive (TASK-67): the person above their posts. The same URL is
919
- their ActivityPub actor, so this is the page a follower sees when they click
920
- through from somewhere else on the fediverse. The person themselves is the
921
- bio above; this is only what is left, the heading over it. */
1892
+ .comment-field-error, .contact-field-error {
1893
+ color: var(--color-error);
1894
+ }
922
1895
 
923
- .author-header {
924
- margin-bottom: var(--spacing-4);
925
- }
1896
+ :is(.comment-respond, .search-form) :is(input:not([type="checkbox"], [type="hidden"]), textarea) {
1897
+ border-radius: var(--radius-md);
1898
+ border-style: var(--tw-border-style);
1899
+ border-width: 1px;
1900
+ border-color: var(--color-edge);
1901
+ background-color: var(--color-base);
1902
+ width: 100%;
1903
+ padding-inline: calc(var(--spacing) * 3);
1904
+ padding-block: calc(var(--spacing) * 2);
1905
+ font-family: Iowan Old Style, Palatino Linotype, Palatino, Book Antiqua, Georgia, serif;
1906
+ font-size: var(--text-base);
1907
+ line-height: var(--tw-leading, var(--text-base--line-height));
1908
+ color: var(--color-text);
1909
+ display: block;
1910
+ }
926
1911
 
927
- /* The front page (TASK-85): the site's own words, then Recent Posts, then
928
- where to go next. Almost nothing is needed — the words are `.e-content`
929
- below, the posts are the feed above, and the heading over them is an
930
- ordinary `h2` — so this is only the line of links, which follows a feed
931
- rather than a paragraph and needs the air a paragraph would already have. */
1912
+ :is(.comment-respond, .search-form) :is(input, textarea):is(:user-invalid, [aria-invalid="true"]) {
1913
+ border-style: var(--tw-border-style);
1914
+ border-width: 2px;
1915
+ border-color: var(--color-error);
1916
+ padding-block: calc(.5rem - 1px);
1917
+ padding-inline: calc(.75rem - 1px);
1918
+ }
932
1919
 
933
- .front-links {
934
- margin-top: var(--spacing-8);
935
- }
1920
+ .comment-check {
1921
+ align-items: center;
1922
+ gap: calc(var(--spacing) * 2);
1923
+ display: flex;
1924
+ }
936
1925
 
937
- /* An archive page: every post there has ever been, under a heading per month.
938
- The source design's essays page is plain headings over `ol.list-none` and
939
- nothing else, so the prose rules draw it; what is here only closes the gap
940
- between a month and its own posts, which at the prose spacing reads as two
941
- things rather than as one. */
1926
+ .comment-check label {
1927
+ margin-bottom: 0;
1928
+ }
942
1929
 
943
- .archive h2 {
944
- margin-bottom: var(--spacing-2);
945
- }
1930
+ .comment-respond input[type="checkbox"] {
1931
+ block-size: 24px;
1932
+ inline-size: 24px;
1933
+ accent-color: var(--color-primary);
1934
+ margin: 0;
1935
+ }
946
1936
 
947
- /* Body copy: whatever a document's words render into, which is the entry's
948
- `section.e-content` and the `div.page-body.e-content` a posts page prints
949
- its own words in. */
1937
+ .search-form button, .comment-respond .form-submit button, .comment-respond .form-submit input[type="submit"] {
1938
+ cursor: pointer;
1939
+ border-radius: var(--radius-md);
1940
+ background-color: var(--color-primary);
1941
+ padding-inline: calc(var(--spacing) * 5);
1942
+ padding-block: calc(var(--spacing) * 2.5);
1943
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1944
+ font-size: var(--text-sm);
1945
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1946
+ --tw-font-weight: var(--font-weight-semibold);
1947
+ font-weight: var(--font-weight-semibold);
1948
+ color: var(--color-body);
1949
+ }
950
1950
 
951
- .e-content {
952
- overflow-wrap: break-word;
953
- }
1951
+ @media (hover: hover) {
1952
+ :is(.search-form button, .comment-respond .form-submit button, .comment-respond .form-submit input[type="submit"]):hover {
1953
+ background-color: var(--color-text);
1954
+ }
1955
+ }
954
1956
 
955
- .e-content > :first-child {
956
- margin-top: 0;
957
- }
1957
+ .search-form button, .comment-respond .form-submit button, .comment-respond .form-submit input[type="submit"] {
1958
+ min-block-size: 24px;
1959
+ min-inline-size: 24px;
1960
+ }
958
1961
 
959
- .e-content table {
960
- display: block;
961
- overflow-x: auto;
962
- }
1962
+ .comment-signed-in, .comment-replying-to {
1963
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1964
+ font-size: var(--text-sm);
1965
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1966
+ color: var(--color-muted);
1967
+ }
963
1968
 
964
- .e-content th,
965
- .e-content td {
966
- padding: var(--spacing-1) var(--spacing-3);
967
- text-align: start;
968
- }
1969
+ .comment-signed-in a, .comment-replying-to a {
1970
+ color: var(--color-primary);
1971
+ }
969
1972
 
970
- .footnotes {
971
- margin-top: var(--spacing-10);
972
- padding-top: var(--spacing-4);
973
- border-top: 1px solid var(--color-base);
974
- font-size: var(--fontSize-0);
975
- }
1973
+ .comment-notice, .contact-notice {
1974
+ border-radius: var(--radius-md);
1975
+ border-style: var(--tw-border-style);
1976
+ border-width: 1px;
1977
+ border-color: var(--color-edge);
1978
+ background-color: var(--color-base);
1979
+ padding: calc(var(--spacing) * 4);
1980
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1981
+ font-size: var(--text-sm);
1982
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1983
+ color: var(--color-text);
1984
+ }
976
1985
 
977
- .footnote-item p {
978
- display: inline;
979
- }
1986
+ .comment-error, .contact-error {
1987
+ margin-block: calc(var(--spacing) * 6);
1988
+ border-inline-start-style: var(--tw-border-style);
1989
+ border-inline-start-width: 2px;
1990
+ border-color: var(--color-error);
1991
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1992
+ font-size: var(--text-sm);
1993
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1994
+ padding-inline-start: calc(var(--spacing) * 4);
1995
+ }
980
1996
 
981
- /* Reactions: the likes, the boosts and the pages that mentioned a post,
982
- grouped by kind as facepiles of small round avatars (TASK-84). */
1997
+ .comment-error h3, .contact-error h3 {
1998
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
1999
+ font-size: var(--text-base);
2000
+ line-height: var(--tw-leading, var(--text-base--line-height));
2001
+ --tw-font-weight: var(--font-weight-semibold);
2002
+ font-weight: var(--font-weight-semibold);
2003
+ color: var(--color-error);
2004
+ }
983
2005
 
984
- .reactions-section {
985
- margin-top: var(--spacing-12);
986
- }
2006
+ .comment-error ul, .contact-error ul {
2007
+ margin-top: calc(var(--spacing) * 2);
2008
+ padding-inline-start: calc(var(--spacing) * 5);
2009
+ list-style-type: disc;
2010
+ }
987
2011
 
988
- .reaction-group {
989
- display: flex;
990
- align-items: center;
991
- gap: var(--spacing-3);
992
- margin-bottom: var(--spacing-3);
993
- }
2012
+ .comment-error a, .contact-error a {
2013
+ align-items: center;
2014
+ min-block-size: 24px;
2015
+ min-inline-size: 24px;
2016
+ display: inline-flex;
2017
+ }
994
2018
 
995
- .reaction-title {
996
- margin: 0;
997
- font-family: var(--font-heading);
998
- font-size: var(--fontSize-1);
999
- white-space: nowrap;
2019
+ .comment-trap, .contact-trap {
2020
+ width: 1px;
2021
+ height: 1px;
2022
+ position: absolute;
2023
+ inset-inline-start: -10000px;
2024
+ overflow: hidden;
2025
+ }
1000
2026
  }
1001
2027
 
1002
- .facepile {
1003
- display: flex;
1004
- flex-wrap: wrap;
1005
- gap: var(--spacing-1);
1006
- }
2028
+ @layer utilities {
2029
+ .visible {
2030
+ visibility: visible;
2031
+ }
1007
2032
 
1008
- .facepile a,
1009
- .facepile span {
1010
- display: inline-block;
1011
- line-height: 0;
1012
- text-decoration: none;
1013
- }
2033
+ .fixed {
2034
+ position: fixed;
2035
+ }
1014
2036
 
1015
- /* A face is a picture of somebody: the block of colour a link takes on hover
1016
- everywhere else would sit behind it as a frame, so it is taken back off. */
2037
+ .static {
2038
+ position: static;
2039
+ }
1017
2040
 
1018
- .facepile a:hover,
1019
- .facepile a:focus {
1020
- background-color: transparent;
1021
- color: var(--color-primary);
1022
- text-decoration: underline;
1023
- }
2041
+ .target {
2042
+ align-items: center;
2043
+ min-block-size: 24px;
2044
+ min-inline-size: 24px;
2045
+ display: inline-flex;
2046
+ }
1024
2047
 
1025
- .facepile img {
1026
- display: block;
1027
- border-radius: 50%;
1028
- }
2048
+ .block {
2049
+ display: block;
2050
+ }
1029
2051
 
1030
- /* A reaction with no avatar has nothing to recognise anybody by, so the emoji
1031
- badge of its kind stands in and the name is printed beside it — which needs
1032
- the line box the faces above do without. */
1033
-
1034
- .facepile a:has(.reaction-name),
1035
- .facepile span:has(.reaction-name) {
1036
- display: inline-flex;
1037
- align-items: center;
1038
- gap: var(--spacing-1);
1039
- font-family: var(--font-heading);
1040
- font-size: var(--fontSize-0);
1041
- line-height: normal;
1042
- }
2052
+ .contents {
2053
+ display: contents;
2054
+ }
1043
2055
 
1044
- .reaction-icon {
1045
- display: inline-block;
1046
- width: 2rem;
1047
- height: 2rem;
1048
- border-radius: 50%;
1049
- background-color: var(--color-base);
1050
- line-height: 2rem;
1051
- text-align: center;
1052
- }
2056
+ .hidden {
2057
+ display: none;
2058
+ }
1053
2059
 
1054
- /* The thread under a post: the replies from every door, each one an h-entry
1055
- with its author, its time and its words, and answers nested inside it. */
2060
+ .list-none {
2061
+ list-style-type: none;
2062
+ }
1056
2063
 
1057
- .comments-area {
1058
- margin-top: var(--spacing-12);
1059
- }
2064
+ .truncate {
2065
+ text-overflow: ellipsis;
2066
+ white-space: nowrap;
2067
+ overflow: hidden;
2068
+ }
1060
2069
 
1061
- .comments-title {
1062
- margin: 0 0 var(--spacing-8);
1063
- font-size: var(--fontSize-4);
1064
- }
2070
+ .italic {
2071
+ font-style: italic;
2072
+ }
1065
2073
 
1066
- .comment-list,
1067
- .comment-list .children {
1068
- margin: 0;
1069
- padding: 0;
1070
- list-style: none;
2074
+ .outline {
2075
+ outline-style: var(--tw-outline-style);
2076
+ outline-width: 1px;
2077
+ }
1071
2078
  }
1072
2079
 
1073
- .comment-list .children {
1074
- margin-left: var(--spacing-8);
2080
+ :root {
2081
+ color-scheme: light dark;
2082
+ --color-body: #faf7f2;
2083
+ --color-text: #1c1917;
2084
+ --color-muted: #534c46;
2085
+ --color-primary: #8c2f1f;
2086
+ --color-secondary: #2b5580;
2087
+ --color-rule: #e4dccf;
2088
+ --color-edge: #8a867e;
2089
+ --color-base: #f3eee5;
2090
+ --color-base-2: #f5f6f7;
2091
+ --color-base-3: #fff;
2092
+ --color-code-background: #f3eee5;
2093
+ --color-code-text: #1c1917;
2094
+ --color-error: #9c1f18;
2095
+ --color-code-comment: #4e4f4d;
2096
+ --color-code-tag: #4e4f4e;
2097
+ --color-code-name: #991f1f;
2098
+ --color-code-literal: #77420f;
2099
+ --color-code-class: #624c00;
2100
+ --color-code-string: #455500;
2101
+ --color-code-support: #23565a;
2102
+ --color-code-function: #2f507c;
2103
+ --color-code-keyword: #63417a;
2104
+ --color-code-meta: #6d453c;
2105
+ --color-code-added-background: #dcedd3;
2106
+ --color-code-removed-background: #f5d8d6;
1075
2107
  }
1076
2108
 
1077
- .comment-body {
1078
- padding: var(--spacing-4) 0;
1079
- border-bottom: 1px solid var(--color-base);
2109
+ @media (prefers-color-scheme: dark) {
2110
+ :root {
2111
+ --color-body: #171412;
2112
+ --color-text: #ece6de;
2113
+ --color-muted: #b2aaa0;
2114
+ --color-primary: #ee9370;
2115
+ --color-secondary: #86b8e2;
2116
+ --color-rule: #3a332e;
2117
+ --color-edge: #706a67;
2118
+ --color-base: #221d1a;
2119
+ --color-base-2: #222124;
2120
+ --color-base-3: #2d2421;
2121
+ --color-code-background: #221d1a;
2122
+ --color-code-text: #ece6de;
2123
+ --color-error: #ff8f9f;
2124
+ --color-code-comment: #a9a9a9;
2125
+ --color-code-tag: #b4b7b4;
2126
+ --color-code-name: #f48b8d;
2127
+ --color-code-literal: #f99157;
2128
+ --color-code-class: #fc6;
2129
+ --color-code-string: #9c9;
2130
+ --color-code-support: #6cc;
2131
+ --color-code-function: #83add6;
2132
+ --color-code-keyword: #c9c;
2133
+ --color-code-meta: #c6a198;
2134
+ --color-code-added-background: #203622;
2135
+ --color-code-removed-background: #401e1e;
2136
+ }
1080
2137
  }
1081
2138
 
1082
- .comment-author {
1083
- display: flex;
1084
- align-items: center;
1085
- gap: var(--spacing-2);
1086
- font-family: var(--font-heading);
1087
- }
2139
+ @media (forced-colors: active) {
2140
+ .search-form button, .comment-respond .form-submit button, .comment-respond .form-submit input[type="submit"] {
2141
+ border: 1px solid buttontext;
2142
+ }
1088
2143
 
1089
- .comment-author .avatar {
1090
- border-radius: 50%;
1091
- }
2144
+ hr {
2145
+ border-block-start: 1px solid canvastext;
2146
+ }
1092
2147
 
1093
- .comment-metadata {
1094
- margin-bottom: var(--spacing-2);
1095
- font-family: var(--font-heading);
1096
- font-size: var(--fontSize-0);
1097
- }
2148
+ pre, code, .search-snippet mark, .comment-avatar-empty {
2149
+ border: 1px solid canvastext;
2150
+ }
1098
2151
 
1099
- /* The permalink is the whole date line, so it is the ink of the page rather
1100
- than a link's colour until somebody points at it. */
2152
+ pre code {
2153
+ border: 0;
2154
+ }
1101
2155
 
1102
- .comment-metadata a {
1103
- color: var(--color-text);
1104
- text-decoration: none;
2156
+ .facepile > a, .facepile > span {
2157
+ outline: 1px solid canvastext;
2158
+ }
1105
2159
  }
1106
2160
 
1107
- .comment-metadata a:hover,
1108
- .comment-metadata a:focus {
1109
- background-color: transparent;
1110
- color: var(--color-primary);
2161
+ @property --tw-outline-style {
2162
+ syntax: "*";
2163
+ inherits: false;
2164
+ initial-value: solid;
1111
2165
  }
1112
2166
 
1113
- .comment-content {
1114
- margin-top: var(--spacing-2);
2167
+ @property --tw-leading {
2168
+ syntax: "*";
2169
+ inherits: false
1115
2170
  }
1116
2171
 
1117
- .comment-content > :last-child {
1118
- margin-bottom: 0;
2172
+ @property --tw-font-weight {
2173
+ syntax: "*";
2174
+ inherits: false
1119
2175
  }
1120
2176
 
1121
- .reply {
1122
- margin-top: var(--spacing-2);
1123
- font-family: var(--font-heading);
1124
- font-size: var(--fontSize-0);
2177
+ @property --tw-tracking {
2178
+ syntax: "*";
2179
+ inherits: false
1125
2180
  }
1126
2181
 
1127
- .no-comments {
1128
- font-family: var(--font-heading);
1129
- font-style: italic;
2182
+ @property --tw-border-style {
2183
+ syntax: "*";
2184
+ inherits: false;
2185
+ initial-value: solid;
1130
2186
  }
1131
2187
 
1132
- /* The comment form under an open post, and the contact form on a page that
1133
- asked for one. One set of rules rather than two: they are the same kind of
1134
- form, the contact form wears `comment-respond` to say so, and a site
1135
- restyling one cannot leave the other behind. */
1136
-
1137
- .comment-respond {
1138
- margin-top: var(--spacing-8);
2188
+ @property --tw-space-y-reverse {
2189
+ syntax: "*";
2190
+ inherits: false;
2191
+ initial-value: 0;
1139
2192
  }
1140
2193
 
1141
- .comment-respond .comment-reply-title,
1142
- .comment-respond .contact-form-title {
1143
- margin: 0 0 var(--spacing-4);
1144
- font-size: var(--fontSize-4);
2194
+ @property --tw-shadow {
2195
+ syntax: "*";
2196
+ inherits: false;
2197
+ initial-value: 0 0 #0000;
1145
2198
  }
1146
2199
 
1147
- .comment-respond label {
1148
- display: block;
1149
- margin-bottom: var(--spacing-1);
1150
- font-family: var(--font-heading);
1151
- font-size: var(--fontSize-0);
2200
+ @property --tw-shadow-color {
2201
+ syntax: "*";
2202
+ inherits: false
1152
2203
  }
1153
2204
 
1154
- .comment-field,
1155
- .contact-field,
1156
- .comment-check {
1157
- margin: 0 0 var(--spacing-4);
2205
+ @property --tw-shadow-alpha {
2206
+ syntax: "<percentage>";
2207
+ inherits: false;
2208
+ initial-value: 100%;
1158
2209
  }
1159
2210
 
1160
- /* The one label that belongs beside its field rather than over it. */
1161
-
1162
- .comment-check label {
1163
- display: inline;
2211
+ @property --tw-inset-shadow {
2212
+ syntax: "*";
2213
+ inherits: false;
2214
+ initial-value: 0 0 #0000;
1164
2215
  }
1165
2216
 
1166
- .comment-respond input[type='text'],
1167
- .comment-respond input[type='email'],
1168
- .comment-respond input[type='url'],
1169
- .comment-respond textarea {
1170
- width: 100%;
1171
- padding: var(--spacing-2);
1172
- border: 1px solid var(--color-base);
1173
- background-color: var(--color-base-3);
1174
- color: var(--color-text);
1175
- font-family: var(--font-body);
1176
- font-size: var(--fontSize-1);
2217
+ @property --tw-inset-shadow-color {
2218
+ syntax: "*";
2219
+ inherits: false
1177
2220
  }
1178
2221
 
1179
- .comment-respond input[type='text']:focus-visible,
1180
- .comment-respond input[type='email']:focus-visible,
1181
- .comment-respond input[type='url']:focus-visible,
1182
- .comment-respond textarea:focus-visible {
1183
- outline: 2px solid var(--color-primary);
1184
- outline-offset: -1px;
1185
- border-color: var(--color-primary);
2222
+ @property --tw-inset-shadow-alpha {
2223
+ syntax: "<percentage>";
2224
+ inherits: false;
2225
+ initial-value: 100%;
1186
2226
  }
1187
2227
 
1188
- .comment-respond textarea {
1189
- min-height: 8rem;
1190
- resize: vertical;
2228
+ @property --tw-ring-color {
2229
+ syntax: "*";
2230
+ inherits: false
1191
2231
  }
1192
2232
 
1193
- .comment-respond .form-submit button,
1194
- .comment-respond .form-submit input[type='submit'] {
1195
- padding: var(--spacing-2) var(--spacing-6);
1196
- border: none;
1197
- background-color: var(--color-primary);
1198
- color: var(--color-body);
1199
- font-family: var(--font-heading);
1200
- font-size: var(--fontSize-1);
1201
- cursor: pointer;
2233
+ @property --tw-ring-shadow {
2234
+ syntax: "*";
2235
+ inherits: false;
2236
+ initial-value: 0 0 #0000;
1202
2237
  }
1203
2238
 
1204
- .comment-respond .form-submit button:hover,
1205
- .comment-respond .form-submit button:focus-visible,
1206
- .comment-respond .form-submit input[type='submit']:hover,
1207
- .comment-respond .form-submit input[type='submit']:focus-visible {
1208
- opacity: 0.85;
2239
+ @property --tw-inset-ring-color {
2240
+ syntax: "*";
2241
+ inherits: false
1209
2242
  }
1210
2243
 
1211
- /* What a form says back: the thank-you after a submission, the message about
1212
- one that was refused, and what a reader is answering. */
1213
-
1214
- .comment-notice,
1215
- .comment-error,
1216
- .contact-notice,
1217
- .contact-error {
1218
- margin: 0 0 var(--spacing-4);
1219
- padding: var(--spacing-2) var(--spacing-3);
1220
- border-inline-start: var(--spacing-1) solid var(--color-secondary);
2244
+ @property --tw-inset-ring-shadow {
2245
+ syntax: "*";
2246
+ inherits: false;
2247
+ initial-value: 0 0 #0000;
1221
2248
  }
1222
2249
 
1223
- .comment-error,
1224
- .contact-error {
1225
- border-inline-start-color: var(--color-error);
2250
+ @property --tw-ring-inset {
2251
+ syntax: "*";
2252
+ inherits: false
1226
2253
  }
1227
2254
 
1228
- .comment-replying-to,
1229
- .comment-signed-in {
1230
- margin: 0 0 var(--spacing-4);
1231
- font-family: var(--font-heading);
1232
- font-size: var(--fontSize-0);
2255
+ @property --tw-ring-offset-width {
2256
+ syntax: "<length>";
2257
+ inherits: false;
2258
+ initial-value: 0;
1233
2259
  }
1234
2260
 
1235
- .comment-optional,
1236
- .contact-optional {
1237
- font-size: var(--fontSize-0);
2261
+ @property --tw-ring-offset-color {
2262
+ syntax: "*";
2263
+ inherits: false;
2264
+ initial-value: #fff;
1238
2265
  }
1239
2266
 
1240
- .comment-hint,
1241
- .contact-hint,
1242
- .comment-field-error,
1243
- .contact-field-error {
1244
- display: block;
1245
- margin-top: var(--spacing-1);
1246
- font-size: var(--fontSize-0);
2267
+ @property --tw-ring-offset-shadow {
2268
+ syntax: "*";
2269
+ inherits: false;
2270
+ initial-value: 0 0 #0000;
1247
2271
  }
1248
2272
 
1249
- .comment-field-error,
1250
- .contact-field-error {
1251
- color: var(--color-error);
2273
+ @property --tw-scale-x {
2274
+ syntax: "*";
2275
+ inherits: false;
2276
+ initial-value: 1;
1252
2277
  }
1253
2278
 
1254
- /*
1255
- The honeypot. Taken out of the flow rather than `display: none`, because some
1256
- form fillers skip fields a browser would not paint at all and this one is
1257
- meant to be filled in.
1258
- */
1259
- .comment-trap,
1260
- .contact-trap {
1261
- position: absolute;
1262
- left: -10000px;
1263
- width: 1px;
1264
- height: 1px;
1265
- overflow: hidden;
2279
+ @property --tw-scale-y {
2280
+ syntax: "*";
2281
+ inherits: false;
2282
+ initial-value: 1;
1266
2283
  }
1267
2284
 
1268
- /* Media queries */
1269
-
1270
- @media (max-width: 42rem) {
1271
- .bio {
1272
- flex-direction: column;
1273
- }
1274
-
1275
- .bio-avatar {
1276
- margin-right: var(--spacing-0);
1277
- margin-bottom: var(--spacing-4);
1278
- }
1279
-
1280
- blockquote {
1281
- margin-left: var(--spacing-0);
1282
- padding: var(--spacing-0) var(--spacing-0) var(--spacing-0) var(--spacing-4);
1283
- }
1284
-
1285
- ul,
1286
- ol {
1287
- list-style-position: inside;
1288
- }
1289
-
1290
- .comment-list .children {
1291
- margin-left: var(--spacing-4);
1292
- }
2285
+ @property --tw-scale-z {
2286
+ syntax: "*";
2287
+ inherits: false;
2288
+ initial-value: 1;
1293
2289
  }