@lullabot/eleventy-decision-records 1.0.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 (66) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -0
  3. package/package.json +94 -0
  4. package/src/YYYYMMDD-decision-template.md +41 -0
  5. package/src/about.md +36 -0
  6. package/src/assets/fonts/OFL.txt +93 -0
  7. package/src/assets/fonts/gabarito-v9-latin-500.woff2 +0 -0
  8. package/src/assets/fonts/gabarito-v9-latin-700.woff2 +0 -0
  9. package/src/assets/fonts/gabarito-v9-latin-regular.woff2 +0 -0
  10. package/src/assets/icons/facebook.svg +1 -0
  11. package/src/assets/icons/github.svg +1 -0
  12. package/src/assets/icons/linkedin.svg +1 -0
  13. package/src/assets/icons/mastodon.svg +1 -0
  14. package/src/assets/icons/x.svg +1 -0
  15. package/src/assets/icons/youtube.svg +1 -0
  16. package/src/assets/images/horizontal.jpg +0 -0
  17. package/src/assets/images/vertical.jpg +0 -0
  18. package/src/assets/js/scrollable.js +49 -0
  19. package/src/assets/js/search.js +189 -0
  20. package/src/assets/js/time-since.js +31 -0
  21. package/src/assets/styles/content.css +149 -0
  22. package/src/assets/styles/fonts.css +33 -0
  23. package/src/assets/styles/footer.css +65 -0
  24. package/src/assets/styles/layout.css +483 -0
  25. package/src/assets/styles/pages.css +348 -0
  26. package/src/assets/styles/recent-decisions.css +104 -0
  27. package/src/assets/styles/reset.css +107 -0
  28. package/src/assets/styles/search-dialog.css +196 -0
  29. package/src/assets/styles/tags.css +16 -0
  30. package/src/assets/styles/tokens.css +181 -0
  31. package/src/assets/styles/typography.css +182 -0
  32. package/src/assets/styles/view-transitions.css +67 -0
  33. package/src/config.js +38 -0
  34. package/src/defaultConfig.json +99 -0
  35. package/src/index.js +227 -0
  36. package/src/index.md +28 -0
  37. package/src/lib/collections/adrs.js +10 -0
  38. package/src/lib/collections/contributors.js +15 -0
  39. package/src/lib/collections/index.js +14 -0
  40. package/src/lib/collections/topics.js +18 -0
  41. package/src/lib/data/index.js +19 -0
  42. package/src/lib/filters/collections.js +63 -0
  43. package/src/lib/filters/dates.js +68 -0
  44. package/src/lib/filters/index.js +26 -0
  45. package/src/lib/filters/strings.js +23 -0
  46. package/src/lib/plugins/bundle.js +23 -0
  47. package/src/lib/plugins/index.js +16 -0
  48. package/src/lib/plugins/markdown.js +10 -0
  49. package/src/lib/plugins/rss.js +24 -0
  50. package/src/lib/plugins/syntax-highlight.js +8 -0
  51. package/src/lib/plugins/toc.js +11 -0
  52. package/src/lib/shortcodes/icons.js +91 -0
  53. package/src/lib/shortcodes/index.js +11 -0
  54. package/src/lib/shortcodes/search.js +32 -0
  55. package/src/templates/assets/favicon.njk +7 -0
  56. package/src/templates/assets/search_index.njk +13 -0
  57. package/src/templates/layouts/adr.njk +59 -0
  58. package/src/templates/layouts/page.njk +136 -0
  59. package/src/templates/pages/contributor.njk +51 -0
  60. package/src/templates/pages/contributors.njk +46 -0
  61. package/src/templates/pages/decisions.njk +41 -0
  62. package/src/templates/pages/practice-areas.njk +48 -0
  63. package/src/templates/pages/topics.njk +50 -0
  64. package/src/templates/partials/footer.njk +12 -0
  65. package/src/templates/partials/recent-decisions.njk +33 -0
  66. package/src/templates/partials/site-nav.njk +61 -0
@@ -0,0 +1,149 @@
1
+ /* ==========================================================================
2
+ Decision Record Content
3
+ Block elements in ADR bodies. Listing pages style their own lists and
4
+ tables; inline elements live in typography.css.
5
+ ========================================================================== */
6
+
7
+ @scope (.adr-content) {
8
+ /* Grid items default to min-width: auto, so a long code line would
9
+ widen the column instead of scrolling inside its block. */
10
+ :scope {
11
+ min-width: 0;
12
+ }
13
+
14
+ img {
15
+ height: auto;
16
+ margin-block: var(--space-4);
17
+ }
18
+
19
+ /* Code blocks */
20
+ pre {
21
+ margin: 0 0 var(--space-4);
22
+ padding: var(--space-4) var(--space-5);
23
+ overflow-x: auto;
24
+ background-color: var(--color-bg-dark);
25
+ color: var(--gray-50);
26
+ border-radius: var(--radius-md);
27
+ font-family: var(--font-family-mono);
28
+ font-size: var(--font-size-base);
29
+ line-height: var(--line-height-base);
30
+ tab-size: 2;
31
+
32
+ & code {
33
+ font-size: inherit;
34
+ }
35
+ }
36
+
37
+ /* Tables */
38
+ .table-scroll {
39
+ margin-bottom: var(--space-4);
40
+ overflow-x: auto;
41
+ }
42
+
43
+ table {
44
+ width: max-content;
45
+ min-width: 100%;
46
+ font-size: var(--font-size-md);
47
+ line-height: var(--line-height-base);
48
+ }
49
+
50
+ caption {
51
+ padding-bottom: var(--space-2);
52
+ text-align: left;
53
+ color: var(--color-text-tertiary);
54
+ font-size: var(--font-size-base);
55
+ }
56
+
57
+ th,
58
+ td {
59
+ padding: var(--space-2) var(--space-3);
60
+ border-bottom: var(--border-width-default) solid var(--color-border-default);
61
+ max-width: 20rem;
62
+ text-align: left;
63
+ vertical-align: top;
64
+ }
65
+
66
+ th {
67
+ font-weight: var(--font-weight-bold);
68
+ }
69
+
70
+ thead th {
71
+ background-color: var(--color-bg-secondary);
72
+ border-bottom-color: var(--gray-200);
73
+ white-space: nowrap;
74
+ }
75
+
76
+ tfoot :is(th, td) {
77
+ border-top: var(--border-width-default) solid var(--gray-200);
78
+ border-bottom: 0;
79
+ }
80
+
81
+ ul {
82
+ list-style: disc;
83
+
84
+ & ul {
85
+ list-style: circle;
86
+
87
+ & ul {
88
+ list-style: square;
89
+ }
90
+ }
91
+ }
92
+
93
+ ol {
94
+ list-style: decimal;
95
+
96
+ & ol {
97
+ list-style: lower-alpha;
98
+ }
99
+ }
100
+
101
+ li > :is(ul, ol) {
102
+ margin-top: var(--space-2);
103
+ margin-bottom: 0;
104
+ }
105
+ }
106
+
107
+ /* Syntax highlighting (Prism tokens), tuned for the dark code block. */
108
+ @scope (pre[class*='language-']) {
109
+ .token:is(.comment, .prolog, .doctype, .cdata) {
110
+ color: var(--gray-200);
111
+ font-style: italic;
112
+ }
113
+
114
+ .token:is(.punctuation, .operator) {
115
+ color: var(--gray-100);
116
+ }
117
+
118
+ .token:is(.property, .tag, .constant, .symbol, .deleted) {
119
+ color: var(--red-500);
120
+ }
121
+
122
+ .token:is(.boolean, .number) {
123
+ color: var(--gold-600);
124
+ }
125
+
126
+ .token:is(.selector, .attr-name, .string, .char, .builtin, .inserted) {
127
+ color: var(--sky-400);
128
+ }
129
+
130
+ .token:is(.atrule, .attr-value, .keyword) {
131
+ color: var(--red-400);
132
+ }
133
+
134
+ .token:is(.function, .class-name) {
135
+ color: var(--gold-400);
136
+ }
137
+
138
+ .token:is(.regex, .important, .variable) {
139
+ color: var(--ocean-400);
140
+ }
141
+
142
+ .token:is(.important, .bold) {
143
+ font-weight: var(--font-weight-bold);
144
+ }
145
+
146
+ .token.italic {
147
+ font-style: italic;
148
+ }
149
+ }
@@ -0,0 +1,33 @@
1
+ /*
2
+ * Gabarito[wght].ttf: Copyright 2023 The Gabarito Project Authors (https://github.com/naipefoundry/gabarito)
3
+ *
4
+ * This Font Software is licensed under the SIL Open Font License, Version 1.1.
5
+ * This license is available with a FAQ at: https://openfontlicense.org
6
+ */
7
+
8
+ /* gabarito-regular - latin */
9
+ @font-face {
10
+ font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
11
+ font-family: 'Gabarito';
12
+ font-style: normal;
13
+ font-weight: 400;
14
+ src: url('../fonts/gabarito-v9-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
15
+ }
16
+
17
+ /* gabarito-500 - latin */
18
+ @font-face {
19
+ font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
20
+ font-family: 'Gabarito';
21
+ font-style: normal;
22
+ font-weight: 500;
23
+ src: url('../fonts/gabarito-v9-latin-500.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
24
+ }
25
+
26
+ /* gabarito-700 - latin */
27
+ @font-face {
28
+ font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
29
+ font-family: 'Gabarito';
30
+ font-style: normal;
31
+ font-weight: 700;
32
+ src: url('../fonts/gabarito-v9-latin-700.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
33
+ }
@@ -0,0 +1,65 @@
1
+ /* ==========================================================================
2
+ Site Footer
3
+ ========================================================================== */
4
+
5
+ .site-footer {
6
+ grid-column: 2 / 3;
7
+ grid-row: 2;
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: center;
11
+ gap: var(--space-4);
12
+ padding: var(--space-3) var(--space-8);
13
+ background-color: var(--color-bg-secondary);
14
+ color: var(--color-text-muted);
15
+ font-size: var(--font-size-base);
16
+ border-top: 1px solid var(--color-border-default);
17
+ }
18
+
19
+ .site-footer p {
20
+ margin: 0;
21
+ }
22
+
23
+ .site-footer .social-links {
24
+ display: flex;
25
+ list-style: none;
26
+ margin: 0;
27
+ padding: 0;
28
+ gap: var(--space-1);
29
+ }
30
+
31
+ .site-footer .social-links li {
32
+ margin-top: 0;
33
+ }
34
+
35
+ .site-footer .social-links a {
36
+ display: flex;
37
+ align-items: center;
38
+ justify-content: center;
39
+ padding: var(--space-2);
40
+ border-radius: var(--radius-lg);
41
+ color: var(--color-text-muted);
42
+ transition:
43
+ color 0.15s ease,
44
+ background-color 0.15s ease;
45
+ }
46
+
47
+ .site-footer .social-links a:hover,
48
+ .site-footer .social-links a:focus-visible {
49
+ color: var(--color-text-primary);
50
+ background-color: var(--color-border-default);
51
+ }
52
+
53
+ .site-footer .social-links svg {
54
+ width: 1.25rem;
55
+ height: 1.25rem;
56
+ }
57
+
58
+ @media screen and (max-width: 48rem) {
59
+ .site-footer {
60
+ grid-column: 1 / -1;
61
+ grid-row: auto;
62
+ flex-wrap: wrap;
63
+ padding: var(--space-3) var(--space-4);
64
+ }
65
+ }
@@ -0,0 +1,483 @@
1
+ /* ==========================================================================
2
+ Site Layout
3
+ ========================================================================== */
4
+
5
+ html,
6
+ body {
7
+ min-height: 100vh;
8
+ }
9
+
10
+ body {
11
+ display: grid;
12
+ grid-template-columns: auto 1fr;
13
+ grid-template-rows: 1fr auto;
14
+ height: 100vh;
15
+ overflow: hidden;
16
+ font-family: var(--font-family-base);
17
+ font-weight: var(--font-weight-regular);
18
+ font-size: 1rem;
19
+ line-height: 1.5;
20
+ color: var(--color-text-primary);
21
+ background-color: var(--color-bg-primary);
22
+ text-rendering: optimizeLegibility;
23
+ }
24
+
25
+ /* ==========================================================================
26
+ Skip Navigation
27
+ ========================================================================== */
28
+
29
+ /* Visually hidden but available to assistive technology */
30
+ .visually-hidden {
31
+ position: absolute;
32
+ width: 1px;
33
+ height: 1px;
34
+ padding: 0;
35
+ margin: -1px;
36
+ overflow: hidden;
37
+ clip-path: inset(50%);
38
+ white-space: nowrap;
39
+ }
40
+
41
+ .skip-link {
42
+ position: fixed;
43
+ top: var(--space-2);
44
+ left: var(--space-2);
45
+ z-index: 100;
46
+ padding: var(--space-2) var(--space-4);
47
+ background-color: var(--color-bg-primary);
48
+ color: var(--color-text-primary);
49
+ text-decoration: none;
50
+ font-weight: var(--font-weight-medium);
51
+ transform: translateY(-100%);
52
+ opacity: 0;
53
+ transition:
54
+ transform 0.15s ease,
55
+ opacity 0.15s ease;
56
+ }
57
+
58
+ .skip-link:focus {
59
+ transform: translateY(0);
60
+ opacity: 1;
61
+ }
62
+
63
+ /* ==========================================================================
64
+ Sidebar Navigation
65
+ ========================================================================== */
66
+
67
+ @scope (.site-nav) {
68
+ :scope {
69
+ display: flex;
70
+ flex-direction: column;
71
+ position: relative;
72
+ background-color: var(--color-bg-dark);
73
+ grid-row: 1 / -1;
74
+ z-index: 10;
75
+ width: 72px;
76
+ overflow: hidden;
77
+ transition: width 0.2s ease;
78
+ }
79
+
80
+ /* Logo bar */
81
+ & > a {
82
+ display: flex;
83
+ align-items: center;
84
+ gap: var(--space-2);
85
+ background-color: var(--color-brand-primary);
86
+ color: var(--gray-0);
87
+ padding: var(--space-4) var(--space-4) var(--space-4) var(--space-5);
88
+ text-decoration: none;
89
+ }
90
+
91
+ & > a svg {
92
+ width: 32px;
93
+ height: 32px;
94
+ display: block;
95
+ flex-shrink: 0;
96
+ }
97
+
98
+ /* Nav menu area */
99
+ .menu {
100
+ display: flex;
101
+ flex-direction: column;
102
+ flex: 1 1 auto;
103
+ padding: var(--space-4) var(--space-3);
104
+ padding-bottom: var(--space-22);
105
+ overflow-y: auto;
106
+ }
107
+
108
+ /* Nav groups */
109
+ ul {
110
+ display: flex;
111
+ flex-direction: column;
112
+ align-items: center;
113
+ gap: var(--space-1);
114
+ padding-block: var(--space-3);
115
+ }
116
+
117
+ ul:first-child {
118
+ padding-top: var(--space-2);
119
+ padding-bottom: var(--space-5);
120
+ border-bottom: 1px solid var(--color-border-dark);
121
+ }
122
+
123
+ ul:last-child {
124
+ padding-top: var(--space-3);
125
+ border-top: 1px solid var(--color-border-dark);
126
+ }
127
+
128
+ /* Individual nav items */
129
+ .menu a,
130
+ .menu button {
131
+ display: flex;
132
+ width: 100%;
133
+ align-items: center;
134
+ gap: var(--space-3);
135
+ padding: var(--space-3);
136
+ border-radius: var(--radius-lg);
137
+ color: var(--gray-300);
138
+ text-decoration: none;
139
+ transition:
140
+ background-color 0.15s ease,
141
+ color 0.15s ease;
142
+ }
143
+
144
+ .menu a:hover,
145
+ .menu button:hover {
146
+ background-color: var(--gray-800);
147
+ color: var(--gray-0);
148
+ }
149
+
150
+ .menu a:focus-visible,
151
+ .menu button:focus-visible {
152
+ background-color: var(--gray-800);
153
+ color: var(--gray-0);
154
+ outline: 2px solid var(--gray-0);
155
+ outline-offset: -2px;
156
+ }
157
+
158
+ .menu a[aria-current='page'] {
159
+ border: 1.25px solid var(--gray-500);
160
+ color: var(--gray-0);
161
+ }
162
+
163
+ .menu a svg,
164
+ .menu button svg {
165
+ width: 20px;
166
+ height: 20px;
167
+ display: block;
168
+ flex-shrink: 0;
169
+ }
170
+
171
+ /* Tooltips (CSS Anchor Positioning — uses implicit anchor from ::after).
172
+ Guarded so browsers without anchor positioning get no tooltip instead of
173
+ one revealed at the wrong spot; aria-labels still cover assistive tech. */
174
+ @supports (left: anchor(right)) and (position-anchor: auto) {
175
+ & > a::after,
176
+ .menu a::after,
177
+ .menu button::after,
178
+ footer button::after {
179
+ content: attr(aria-label);
180
+ position: fixed;
181
+ position-anchor: auto;
182
+ left: anchor(right);
183
+ top: anchor(center);
184
+ translate: 0 -50%;
185
+ margin-left: var(--space-6);
186
+ white-space: nowrap;
187
+ background-color: var(--gray-900);
188
+ color: var(--gray-0);
189
+ font-size: var(--font-size-base);
190
+ font-weight: var(--font-weight-medium);
191
+ line-height: var(--line-height-sm);
192
+ padding: var(--space-1) var(--space-2);
193
+ border-radius: var(--radius-md);
194
+ pointer-events: none;
195
+ opacity: 0;
196
+ transition: opacity 0.15s ease;
197
+ z-index: 20;
198
+ }
199
+
200
+ & > a:hover::after,
201
+ & > a:focus-visible::after,
202
+ .menu a:hover::after,
203
+ .menu a:focus-visible::after,
204
+ .menu button:hover::after,
205
+ .menu button:focus-visible::after,
206
+ footer button:hover::after,
207
+ footer button:focus-visible::after {
208
+ opacity: 1;
209
+ }
210
+ }
211
+
212
+ /* Footer toggle */
213
+ footer {
214
+ position: absolute;
215
+ bottom: 0;
216
+ left: 0;
217
+ right: 0;
218
+ padding: var(--space-3);
219
+ background-color: var(--color-bg-dark);
220
+ border-top: 1px solid var(--color-border-dark);
221
+ }
222
+
223
+ footer button {
224
+ display: flex;
225
+ align-items: center;
226
+ gap: var(--space-3);
227
+ padding: var(--space-3);
228
+ border-radius: var(--radius-lg);
229
+ color: var(--gray-300);
230
+ transition:
231
+ background-color 0.15s ease,
232
+ color 0.15s ease;
233
+ }
234
+
235
+ footer button:hover {
236
+ background-color: var(--gray-800);
237
+ color: var(--gray-0);
238
+ }
239
+
240
+ footer button:focus-visible {
241
+ background-color: var(--gray-800);
242
+ color: var(--gray-0);
243
+ outline: 2px solid var(--gray-0);
244
+ outline-offset: -2px;
245
+ }
246
+
247
+ footer button svg {
248
+ width: 24px;
249
+ height: 24px;
250
+ display: block;
251
+ flex-shrink: 0;
252
+ }
253
+ }
254
+
255
+ /* ==========================================================================
256
+ Sidebar — Desktop Expanded
257
+ ========================================================================== */
258
+
259
+ @scope (.site-nav.expanded) {
260
+ :scope {
261
+ width: 260px;
262
+ }
263
+
264
+ ul {
265
+ align-items: stretch;
266
+ }
267
+
268
+ /* Show ::after as inline labels instead of tooltips */
269
+ & > a::after,
270
+ .menu a::after,
271
+ .menu button::after,
272
+ footer button::after {
273
+ position: static;
274
+ margin-left: 0;
275
+ align-self: auto;
276
+ translate: none;
277
+ background-color: transparent;
278
+ padding: 0;
279
+ border-radius: 0;
280
+ opacity: 1;
281
+ pointer-events: auto;
282
+ color: inherit;
283
+ }
284
+
285
+ & > a::after {
286
+ font-size: var(--font-size-lg);
287
+ font-weight: var(--font-weight-bold);
288
+ }
289
+ }
290
+
291
+ /* ==========================================================================
292
+ Main Content Area
293
+ ========================================================================== */
294
+
295
+ .site-main {
296
+ padding: var(--space-22) var(--space-18);
297
+ overflow-x: clip;
298
+ overflow-y: auto;
299
+ min-height: 0;
300
+ box-shadow: var(--shadow-panel);
301
+ position: relative;
302
+ z-index: 2;
303
+ }
304
+
305
+ /* ==========================================================================
306
+ Recent Decisions Sidebar (right)
307
+ ========================================================================== */
308
+
309
+ .recent-decisions {
310
+ display: none;
311
+ background-color: var(--color-bg-secondary);
312
+ padding: var(--space-16) var(--space-12);
313
+ overflow-x: clip;
314
+ overflow-y: auto;
315
+ min-height: 0;
316
+ border-left: 1px solid var(--color-border-default);
317
+ }
318
+
319
+ @media screen and (min-width: 75rem) {
320
+ body {
321
+ grid-template-columns: auto 1fr 25rem;
322
+ }
323
+
324
+ .recent-decisions {
325
+ display: block;
326
+ grid-row: 1 / -1;
327
+ }
328
+ }
329
+
330
+ /* ==========================================================================
331
+ Mobile Layout
332
+ ========================================================================== */
333
+
334
+ @media screen and (max-width: 48rem) {
335
+ body {
336
+ grid-template-columns: 1fr;
337
+ grid-template-rows: auto 1fr auto;
338
+ }
339
+
340
+ @scope (.site-nav) {
341
+ :scope {
342
+ position: sticky;
343
+ top: 0;
344
+ height: auto;
345
+ width: auto;
346
+ flex-direction: row;
347
+ align-items: stretch;
348
+ grid-row: auto;
349
+ z-index: 20;
350
+ overflow: visible;
351
+ transition: none;
352
+ }
353
+
354
+ & > a {
355
+ padding: var(--space-3);
356
+ }
357
+
358
+ footer {
359
+ display: flex;
360
+ align-items: center;
361
+ }
362
+
363
+ & > a svg {
364
+ width: 24px;
365
+ height: 24px;
366
+ }
367
+
368
+ /* Hide the menu by default on mobile */
369
+ .menu {
370
+ display: none;
371
+ position: fixed;
372
+ top: 0;
373
+ left: 0;
374
+ right: 0;
375
+ height: 100svh;
376
+ padding: calc(var(--space-22) + var(--space-4)) var(--space-6)
377
+ var(--space-6);
378
+ background-color: var(--color-bg-dark);
379
+ overflow-y: auto;
380
+ z-index: 19;
381
+ flex-direction: column;
382
+ }
383
+
384
+ & > a {
385
+ position: relative;
386
+ z-index: 21;
387
+ }
388
+
389
+ /* Footer toggle moves inline to the right of the logo */
390
+ footer {
391
+ position: static;
392
+ margin-left: auto;
393
+ padding: var(--space-3);
394
+ border-top: none;
395
+ z-index: 21;
396
+ }
397
+
398
+ footer button svg {
399
+ width: 20px;
400
+ height: 20px;
401
+ }
402
+
403
+ /* Hide tooltips and labels on mobile (collapsed) */
404
+ & > a::after,
405
+ .menu a::after,
406
+ .menu button::after,
407
+ footer button::after {
408
+ display: none;
409
+ }
410
+ }
411
+
412
+ /* Mobile expanded: show menu as full-screen overlay */
413
+ @scope (.site-nav.expanded) {
414
+ :scope {
415
+ width: auto;
416
+ }
417
+
418
+ ul {
419
+ align-items: stretch;
420
+ }
421
+
422
+ .menu {
423
+ display: flex;
424
+ animation: nav-overlay-in 0.25s ease-out both;
425
+ }
426
+
427
+ /* Show ::after as inline labels in the mobile menu */
428
+ .menu a::after,
429
+ .menu button::after {
430
+ display: inline;
431
+ position: static;
432
+ margin-left: 0;
433
+ align-self: auto;
434
+ translate: none;
435
+ background-color: transparent;
436
+ padding: 0;
437
+ border-radius: 0;
438
+ opacity: 1;
439
+ pointer-events: auto;
440
+ color: inherit;
441
+ }
442
+ }
443
+
444
+ /* Closing animation */
445
+ @scope (.site-nav.closing) {
446
+ .menu {
447
+ display: flex;
448
+ animation: nav-overlay-out 0.2s ease-in both;
449
+ }
450
+
451
+ .menu a::after,
452
+ .menu button::after {
453
+ display: inline;
454
+ }
455
+ }
456
+
457
+ @keyframes nav-overlay-in {
458
+ from {
459
+ opacity: 0;
460
+ transform: translateY(-8px);
461
+ }
462
+ to {
463
+ opacity: 1;
464
+ transform: translateY(0);
465
+ }
466
+ }
467
+
468
+ @keyframes nav-overlay-out {
469
+ from {
470
+ opacity: 1;
471
+ transform: translateY(0);
472
+ }
473
+ to {
474
+ opacity: 0;
475
+ transform: translateY(-8px);
476
+ }
477
+ }
478
+
479
+ /* Main content adjustments */
480
+ .site-main {
481
+ padding: var(--space-8) var(--space-4);
482
+ }
483
+ }