@cogenta/theme-association 0.3.3 → 0.5.3

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 (148) hide show
  1. package/dist/src/index.d.ts +6 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +9 -0
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/render/blocks/accordion.d.ts.map +1 -1
  6. package/dist/src/render/blocks/accordion.js +13 -10
  7. package/dist/src/render/blocks/accordion.js.map +1 -1
  8. package/dist/src/render/blocks/breakdown.d.ts +14 -0
  9. package/dist/src/render/blocks/breakdown.d.ts.map +1 -0
  10. package/dist/src/render/blocks/breakdown.js +17 -0
  11. package/dist/src/render/blocks/breakdown.js.map +1 -0
  12. package/dist/src/render/blocks/collection-list.d.ts +4 -10
  13. package/dist/src/render/blocks/collection-list.d.ts.map +1 -1
  14. package/dist/src/render/blocks/collection-list.js +89 -58
  15. package/dist/src/render/blocks/collection-list.js.map +1 -1
  16. package/dist/src/render/blocks/cta.d.ts +0 -5
  17. package/dist/src/render/blocks/cta.d.ts.map +1 -1
  18. package/dist/src/render/blocks/cta.js +22 -10
  19. package/dist/src/render/blocks/cta.js.map +1 -1
  20. package/dist/src/render/blocks/embed.d.ts.map +1 -1
  21. package/dist/src/render/blocks/embed.js +30 -22
  22. package/dist/src/render/blocks/embed.js.map +1 -1
  23. package/dist/src/render/blocks/faq.d.ts.map +1 -1
  24. package/dist/src/render/blocks/faq.js +11 -15
  25. package/dist/src/render/blocks/faq.js.map +1 -1
  26. package/dist/src/render/blocks/feature-grid.d.ts +6 -0
  27. package/dist/src/render/blocks/feature-grid.d.ts.map +1 -1
  28. package/dist/src/render/blocks/feature-grid.js +42 -20
  29. package/dist/src/render/blocks/feature-grid.js.map +1 -1
  30. package/dist/src/render/blocks/gallery.d.ts +9 -7
  31. package/dist/src/render/blocks/gallery.d.ts.map +1 -1
  32. package/dist/src/render/blocks/gallery.js +22 -16
  33. package/dist/src/render/blocks/gallery.js.map +1 -1
  34. package/dist/src/render/blocks/hero.d.ts +23 -9
  35. package/dist/src/render/blocks/hero.d.ts.map +1 -1
  36. package/dist/src/render/blocks/hero.js +40 -23
  37. package/dist/src/render/blocks/hero.js.map +1 -1
  38. package/dist/src/render/blocks/logo-strip.d.ts +6 -0
  39. package/dist/src/render/blocks/logo-strip.d.ts.map +1 -1
  40. package/dist/src/render/blocks/logo-strip.js +7 -9
  41. package/dist/src/render/blocks/logo-strip.js.map +1 -1
  42. package/dist/src/render/blocks/logos.d.ts +14 -0
  43. package/dist/src/render/blocks/logos.d.ts.map +1 -1
  44. package/dist/src/render/blocks/logos.js +30 -16
  45. package/dist/src/render/blocks/logos.js.map +1 -1
  46. package/dist/src/render/blocks/media-figure.d.ts +12 -5
  47. package/dist/src/render/blocks/media-figure.d.ts.map +1 -1
  48. package/dist/src/render/blocks/media-figure.js +32 -18
  49. package/dist/src/render/blocks/media-figure.js.map +1 -1
  50. package/dist/src/render/blocks/pricing-table.d.ts.map +1 -1
  51. package/dist/src/render/blocks/pricing-table.js +18 -20
  52. package/dist/src/render/blocks/pricing-table.js.map +1 -1
  53. package/dist/src/render/blocks/prose.d.ts +9 -3
  54. package/dist/src/render/blocks/prose.d.ts.map +1 -1
  55. package/dist/src/render/blocks/prose.js +11 -4
  56. package/dist/src/render/blocks/prose.js.map +1 -1
  57. package/dist/src/render/blocks/quote.d.ts +4 -7
  58. package/dist/src/render/blocks/quote.d.ts.map +1 -1
  59. package/dist/src/render/blocks/quote.js +12 -17
  60. package/dist/src/render/blocks/quote.js.map +1 -1
  61. package/dist/src/render/blocks/stat-counter.d.ts +8 -1
  62. package/dist/src/render/blocks/stat-counter.d.ts.map +1 -1
  63. package/dist/src/render/blocks/stat-counter.js +18 -10
  64. package/dist/src/render/blocks/stat-counter.js.map +1 -1
  65. package/dist/src/render/blocks/stats.d.ts +12 -1
  66. package/dist/src/render/blocks/stats.d.ts.map +1 -1
  67. package/dist/src/render/blocks/stats.js +24 -14
  68. package/dist/src/render/blocks/stats.js.map +1 -1
  69. package/dist/src/render/blocks/testimonial.d.ts +6 -5
  70. package/dist/src/render/blocks/testimonial.d.ts.map +1 -1
  71. package/dist/src/render/blocks/testimonial.js +13 -11
  72. package/dist/src/render/blocks/testimonial.js.map +1 -1
  73. package/dist/src/render/chrome.d.ts +38 -1
  74. package/dist/src/render/chrome.d.ts.map +1 -1
  75. package/dist/src/render/chrome.js +117 -91
  76. package/dist/src/render/chrome.js.map +1 -1
  77. package/dist/src/render/details.d.ts +79 -0
  78. package/dist/src/render/details.d.ts.map +1 -0
  79. package/dist/src/render/details.js +221 -0
  80. package/dist/src/render/details.js.map +1 -0
  81. package/dist/src/render/figures.d.ts +29 -0
  82. package/dist/src/render/figures.d.ts.map +1 -0
  83. package/dist/src/render/figures.js +59 -0
  84. package/dist/src/render/figures.js.map +1 -0
  85. package/dist/src/render/layout.d.ts +31 -0
  86. package/dist/src/render/layout.d.ts.map +1 -0
  87. package/dist/src/render/layout.js +46 -0
  88. package/dist/src/render/layout.js.map +1 -0
  89. package/dist/src/render/page-head.d.ts +7 -0
  90. package/dist/src/render/page-head.d.ts.map +1 -0
  91. package/dist/src/render/page-head.js +95 -0
  92. package/dist/src/render/page-head.js.map +1 -0
  93. package/dist/src/render/render-block.d.ts +8 -12
  94. package/dist/src/render/render-block.d.ts.map +1 -1
  95. package/dist/src/render/render-block.js +40 -29
  96. package/dist/src/render/render-block.js.map +1 -1
  97. package/dist/src/render/strings.d.ts +15 -0
  98. package/dist/src/render/strings.d.ts.map +1 -0
  99. package/dist/src/render/strings.js +39 -0
  100. package/dist/src/render/strings.js.map +1 -0
  101. package/dist/src/render/term-archive.d.ts.map +1 -1
  102. package/dist/src/render/term-archive.js +33 -25
  103. package/dist/src/render/term-archive.js.map +1 -1
  104. package/dist/src/render/widget-areas.d.ts +14 -0
  105. package/dist/src/render/widget-areas.d.ts.map +1 -0
  106. package/dist/src/render/widget-areas.js +21 -0
  107. package/dist/src/render/widget-areas.js.map +1 -0
  108. package/dist/theme.config.d.ts +1 -1
  109. package/dist/theme.config.js +3 -3
  110. package/dist/theme.config.js.map +1 -1
  111. package/package.json +5 -5
  112. package/src/index.ts +9 -0
  113. package/src/render/blocks/accordion.ts +28 -22
  114. package/src/render/blocks/breakdown.ts +42 -0
  115. package/src/render/blocks/collection-list.ts +234 -103
  116. package/src/render/blocks/cta.ts +48 -19
  117. package/src/render/blocks/embed.ts +47 -29
  118. package/src/render/blocks/faq.ts +22 -31
  119. package/src/render/blocks/feature-grid.ts +73 -41
  120. package/src/render/blocks/gallery.ts +32 -26
  121. package/src/render/blocks/hero.ts +56 -43
  122. package/src/render/blocks/logo-strip.ts +23 -21
  123. package/src/render/blocks/logos.ts +45 -40
  124. package/src/render/blocks/media-figure.ts +49 -24
  125. package/src/render/blocks/pricing-table.ts +31 -40
  126. package/src/render/blocks/prose.ts +16 -6
  127. package/src/render/blocks/quote.ts +34 -27
  128. package/src/render/blocks/stat-counter.ts +35 -29
  129. package/src/render/blocks/stats.ts +46 -38
  130. package/src/render/blocks/testimonial.ts +29 -20
  131. package/src/render/chrome.ts +165 -91
  132. package/src/render/details.ts +276 -0
  133. package/src/render/figures.ts +68 -0
  134. package/src/render/layout.ts +78 -0
  135. package/src/render/page-head.ts +193 -0
  136. package/src/render/render-block.ts +45 -32
  137. package/src/render/strings.ts +74 -0
  138. package/src/render/term-archive.ts +94 -58
  139. package/src/render/widget-areas.ts +24 -0
  140. package/src/styles/archive.css +38 -102
  141. package/src/styles/base.css +503 -554
  142. package/src/styles/blocks.css +913 -666
  143. package/src/styles/chrome.css +506 -0
  144. package/src/styles/listings.css +591 -0
  145. package/src/styles/theme.css +25 -19
  146. package/src/styles/tokens.css +284 -234
  147. package/src/styles/widgets.css +1059 -0
  148. package/tokens.json +18 -18
@@ -0,0 +1,506 @@
1
+ /*
2
+ * The header and the footer of a charity's site.
3
+ *
4
+ * Header: one row on the paper under a hairline. The organisation's name in
5
+ * the display face, the pages in plain words, and the one standing ask,
6
+ * "Donate", as the yellow button. Below the wide breakpoint the pages open
7
+ * in a panel from a button that says "Menu", with no script.
8
+ *
9
+ * Footer: the green band. Who the organisation is and how to reach it (the
10
+ * registered charity number, the address, the telephone and the email come
11
+ * from the site's footer note), the pages in headed columns, the profiles,
12
+ * and the legal line.
13
+ */
14
+
15
+ /* --------------------------------------------------------------------------
16
+ Header
17
+ -------------------------------------------------------------------------- */
18
+
19
+ .ca-header {
20
+ position: relative;
21
+ z-index: 30;
22
+ border-block-end: var(--ca-rule) solid var(--ca-line);
23
+ background: var(--ca-canvas);
24
+ }
25
+
26
+ .ca-header__inner {
27
+ display: flex;
28
+ align-items: center;
29
+ gap: var(--ca-s2) var(--ca-s8);
30
+ min-block-size: var(--ca-header-height);
31
+ max-inline-size: calc(var(--ca-page) + var(--ca-gutter) * 2);
32
+ margin-inline: auto;
33
+ padding-inline: var(--ca-gutter);
34
+ }
35
+
36
+ .ca-header__brand {
37
+ display: inline-flex;
38
+ flex: 0 1 auto;
39
+ align-items: center;
40
+ min-block-size: 44px;
41
+ min-inline-size: 0;
42
+ margin-inline-end: auto;
43
+ color: var(--ca-ink);
44
+ text-decoration: none;
45
+ }
46
+
47
+ .ca-header__brand:hover {
48
+ color: var(--ca-ink);
49
+ }
50
+
51
+ .ca-header__wordmark {
52
+ overflow: hidden;
53
+ font-family: var(--ca-font-display);
54
+ font-size: var(--ca-size-wordmark);
55
+ font-weight: var(--ca-weight-bold);
56
+ font-stretch: var(--ca-stretch-display);
57
+ line-height: 1;
58
+ letter-spacing: var(--ca-tracking-heading);
59
+ text-overflow: ellipsis;
60
+ white-space: nowrap;
61
+ }
62
+
63
+ .ca-header__logo {
64
+ display: block;
65
+ block-size: 2.25rem;
66
+ inline-size: auto;
67
+ max-inline-size: min(14rem, 46vw);
68
+ object-fit: contain;
69
+ filter: none;
70
+ }
71
+
72
+ .ca-header__links {
73
+ display: flex;
74
+ flex-wrap: wrap;
75
+ gap: 0 var(--ca-s6);
76
+ margin: 0;
77
+ padding: 0;
78
+ list-style: none;
79
+ }
80
+
81
+ .ca-header__item a,
82
+ .ca-header__item span {
83
+ display: inline-flex;
84
+ align-items: center;
85
+ min-block-size: 44px;
86
+ color: var(--ca-ink);
87
+ font-size: var(--ca-text-md);
88
+ font-weight: var(--ca-weight-semibold);
89
+ text-decoration-line: underline;
90
+ text-decoration-thickness: var(--ca-rule-strong);
91
+ text-decoration-color: transparent;
92
+ text-underline-offset: 0.45em;
93
+ }
94
+
95
+ .ca-header__item a:hover {
96
+ color: var(--ca-ink);
97
+ text-decoration-color: var(--ca-green);
98
+ }
99
+
100
+ .ca-header__action {
101
+ display: inline-flex;
102
+ flex: none;
103
+ align-items: center;
104
+ min-block-size: 44px;
105
+ padding: 0 var(--ca-s5);
106
+ border: var(--ca-rule) solid var(--ca-signal);
107
+ border-radius: var(--ca-radius-control);
108
+ font-size: var(--ca-text-md);
109
+ font-weight: var(--ca-weight-bold);
110
+ line-height: 1;
111
+ text-decoration: none;
112
+ white-space: nowrap;
113
+ transition:
114
+ background-color var(--ca-duration) var(--ca-ease),
115
+ border-color var(--ca-duration) var(--ca-ease);
116
+ }
117
+
118
+ .cg-theme-toggle {
119
+ display: inline-flex;
120
+ flex: none;
121
+ align-items: center;
122
+ justify-content: center;
123
+ inline-size: 2.75rem;
124
+ margin-inline-end: calc(var(--ca-s3) * -1);
125
+ padding: 0;
126
+ border: 0;
127
+ background: transparent;
128
+ color: var(--ca-ink);
129
+ cursor: pointer;
130
+ transition: color var(--ca-duration) var(--ca-ease);
131
+ }
132
+
133
+ .cg-theme-toggle:hover {
134
+ color: var(--ca-green);
135
+ }
136
+
137
+ .cg-theme-toggle__icon {
138
+ inline-size: 1.125rem;
139
+ block-size: 1.125rem;
140
+ }
141
+
142
+ .cg-theme-toggle__icon--moon {
143
+ display: none;
144
+ }
145
+
146
+ @media (prefers-color-scheme: dark) {
147
+ :where(:root:not([data-theme="light"])) .cg-theme-toggle__icon--sun {
148
+ display: none;
149
+ }
150
+
151
+ :where(:root:not([data-theme="light"])) .cg-theme-toggle__icon--moon {
152
+ display: block;
153
+ }
154
+ }
155
+
156
+ :where(:root[data-theme="dark"]) .cg-theme-toggle__icon--sun {
157
+ display: none;
158
+ }
159
+
160
+ :where(:root[data-theme="dark"]) .cg-theme-toggle__icon--moon {
161
+ display: block;
162
+ }
163
+
164
+ .ca-nav-toggle-input {
165
+ position: absolute;
166
+ inline-size: 1px;
167
+ block-size: 1px;
168
+ overflow: hidden;
169
+ clip-path: inset(50%);
170
+ white-space: nowrap;
171
+ }
172
+
173
+ /* The menu button says what it does, in words. */
174
+ .ca-nav-toggle-label {
175
+ display: inline-flex;
176
+ flex: none;
177
+ align-items: center;
178
+ order: 4;
179
+ padding-inline: var(--ca-s1);
180
+ color: var(--ca-ink);
181
+ font-size: var(--ca-text-md);
182
+ font-weight: var(--ca-weight-semibold);
183
+ text-decoration-line: underline;
184
+ text-decoration-thickness: var(--ca-rule-strong);
185
+ text-decoration-color: var(--ca-green);
186
+ text-underline-offset: 0.3em;
187
+ cursor: pointer;
188
+ }
189
+
190
+ .ca-nav-toggle-input:focus-visible ~ .ca-nav-toggle-label {
191
+ outline: var(--ca-rule-strong) solid var(--ca-green);
192
+ outline-offset: 2px;
193
+ }
194
+
195
+ .ca-nav-toggle-close {
196
+ display: none;
197
+ }
198
+
199
+ .ca-nav-toggle-input:checked ~ .ca-nav-toggle-label .ca-nav-toggle-open {
200
+ display: none;
201
+ }
202
+
203
+ .ca-nav-toggle-input:checked ~ .ca-nav-toggle-label .ca-nav-toggle-close {
204
+ display: inline;
205
+ }
206
+
207
+ /* Below the wide breakpoint the pages are a panel of large links under the
208
+ header, down to the bottom of the screen; the donation ask and the
209
+ light/dark control stay in the header row. */
210
+ @media (max-width: 63.99rem) {
211
+ .ca-header__inner {
212
+ gap: var(--ca-s2) var(--ca-s3);
213
+ }
214
+
215
+ .ca-header__action {
216
+ order: 2;
217
+ padding-inline: var(--ca-s4);
218
+ }
219
+
220
+ .cg-theme-toggle {
221
+ order: 3;
222
+ margin-inline-end: 0;
223
+ }
224
+
225
+ .ca-header__nav {
226
+ display: none;
227
+ position: absolute;
228
+ inset-inline: 0;
229
+ inset-block-start: 100%;
230
+ z-index: 29;
231
+ min-block-size: calc(100svh - var(--ca-header-height));
232
+ overflow-y: auto;
233
+ padding: var(--ca-s2) var(--ca-gutter) var(--ca-s12);
234
+ border-block-start: var(--ca-rule) solid var(--ca-line);
235
+ background: var(--ca-canvas);
236
+ }
237
+
238
+ .ca-nav-toggle-input:checked ~ .ca-header__nav {
239
+ display: block;
240
+ }
241
+
242
+ .ca-header__links {
243
+ display: block;
244
+ }
245
+
246
+ .ca-header__item {
247
+ border-block-end: var(--ca-rule) solid var(--ca-line);
248
+ }
249
+
250
+ .ca-header__item a,
251
+ .ca-header__item span {
252
+ display: flex;
253
+ min-block-size: 0;
254
+ padding-block: var(--ca-s4);
255
+ font-family: var(--ca-font-display);
256
+ font-size: var(--ca-size-nav);
257
+ font-weight: var(--ca-weight-semibold);
258
+ font-stretch: var(--ca-stretch-display);
259
+ line-height: var(--ca-leading-heading);
260
+ letter-spacing: var(--ca-tracking-heading);
261
+ }
262
+
263
+ .ca-header__tagline {
264
+ margin: var(--ca-s8) 0 0;
265
+ max-inline-size: 32ch;
266
+ color: var(--ca-ink-muted);
267
+ font-size: var(--ca-text-md);
268
+ }
269
+ }
270
+
271
+ @media (max-width: 26rem) {
272
+ /* A long name takes two short lines rather than losing its end. */
273
+ .ca-header__wordmark {
274
+ font-size: var(--ca-text-lg);
275
+ line-height: 1.02;
276
+ white-space: normal;
277
+ }
278
+
279
+ .ca-header__action {
280
+ padding-inline: var(--ca-s3);
281
+ }
282
+ }
283
+
284
+ @media (min-width: 64rem) {
285
+ .ca-nav-toggle-label,
286
+ .ca-header__tagline {
287
+ display: none;
288
+ }
289
+
290
+ .ca-header__nav {
291
+ order: 1;
292
+ }
293
+
294
+ .ca-header__action {
295
+ order: 2;
296
+ }
297
+
298
+ .cg-theme-toggle {
299
+ order: 3;
300
+ }
301
+ }
302
+
303
+ /* --------------------------------------------------------------------------
304
+ Footer: the green band.
305
+ -------------------------------------------------------------------------- */
306
+
307
+ .ca-footer {
308
+ padding-block: var(--ca-s20) var(--ca-s8);
309
+ background: var(--ca-footer);
310
+ color: var(--ca-footer-ink);
311
+ font-size: var(--ca-text-md);
312
+ line-height: var(--ca-leading-ui);
313
+ }
314
+
315
+ .ca-footer__inner {
316
+ display: grid;
317
+ grid-template-columns: repeat(var(--ca-columns), minmax(0, 1fr));
318
+ column-gap: var(--ca-col-gap);
319
+ row-gap: var(--ca-s12);
320
+ max-inline-size: calc(var(--ca-page) + var(--ca-gutter) * 2);
321
+ margin-inline: auto;
322
+ padding-inline: var(--ca-gutter);
323
+ }
324
+
325
+ .ca-footer__inner > * {
326
+ grid-column: 1 / -1;
327
+ min-inline-size: 0;
328
+ }
329
+
330
+ .ca-footer :where(a) {
331
+ color: var(--ca-footer-ink);
332
+ text-decoration-color: var(--ca-footer-line);
333
+ }
334
+
335
+ .ca-footer :where(a:hover) {
336
+ color: var(--ca-footer-ink);
337
+ text-decoration-color: currentColor;
338
+ }
339
+
340
+ .ca-footer__name {
341
+ display: inline-block;
342
+ color: var(--ca-footer-ink);
343
+ font-family: var(--ca-font-display);
344
+ font-size: var(--ca-text-2xl);
345
+ font-weight: var(--ca-weight-bold);
346
+ font-stretch: var(--ca-stretch-display);
347
+ line-height: 1.05;
348
+ letter-spacing: var(--ca-tracking-display);
349
+ text-decoration: none;
350
+ }
351
+
352
+ .ca-footer__tagline {
353
+ margin: var(--ca-s3) 0 0;
354
+ max-inline-size: 34ch;
355
+ color: var(--ca-footer-ink);
356
+ font-size: var(--ca-text-lg);
357
+ line-height: var(--ca-leading-lead);
358
+ }
359
+
360
+ .ca-footer__note {
361
+ margin-block-start: var(--ca-s8);
362
+ }
363
+
364
+ .ca-footer__note p {
365
+ margin: 0;
366
+ max-inline-size: 46ch;
367
+ color: var(--ca-footer-ink);
368
+ line-height: 1.55;
369
+ }
370
+
371
+ .ca-footer__note p + p {
372
+ margin-block-start: var(--ca-s4);
373
+ }
374
+
375
+ .ca-footer__note p:last-child:not(:first-child) {
376
+ color: var(--ca-footer-muted);
377
+ font-size: var(--ca-text-caption);
378
+ }
379
+
380
+ .ca-footer__nav {
381
+ display: grid;
382
+ grid-template-columns: repeat(2, minmax(0, 1fr));
383
+ gap: var(--ca-s10) var(--ca-col-gap);
384
+ align-content: start;
385
+ }
386
+
387
+ .ca-footer__heading {
388
+ margin: 0 0 var(--ca-s3);
389
+ color: var(--ca-footer-muted);
390
+ font-size: var(--ca-text-caption);
391
+ font-weight: var(--ca-weight-semibold);
392
+ }
393
+
394
+ .ca-footer__links,
395
+ .ca-footer__social {
396
+ display: grid;
397
+ gap: var(--ca-s1);
398
+ margin: 0;
399
+ padding: 0;
400
+ list-style: none;
401
+ }
402
+
403
+ .ca-footer__social {
404
+ display: flex;
405
+ flex-wrap: wrap;
406
+ gap: var(--ca-s1) var(--ca-s6);
407
+ margin-block-start: var(--ca-s8);
408
+ }
409
+
410
+ .ca-footer__item a,
411
+ .ca-footer__item span,
412
+ .ca-footer__social-item a {
413
+ display: inline-flex;
414
+ align-items: center;
415
+ gap: var(--ca-s2);
416
+ min-block-size: 2.25rem;
417
+ color: var(--ca-footer-ink);
418
+ text-decoration-line: underline;
419
+ text-decoration-color: transparent;
420
+ text-underline-offset: 0.3em;
421
+ }
422
+
423
+ .ca-footer__item a:hover,
424
+ .ca-footer__social-item a:hover {
425
+ text-decoration-color: currentColor;
426
+ }
427
+
428
+ /* The social profiles keep their names beside the icons. */
429
+ .ca-footer__social .cg-visually-hidden {
430
+ position: static;
431
+ inline-size: auto;
432
+ block-size: auto;
433
+ margin: 0;
434
+ overflow: visible;
435
+ clip-path: none;
436
+ white-space: normal;
437
+ }
438
+
439
+ .cg-social__icon {
440
+ inline-size: 1.125rem;
441
+ block-size: 1.125rem;
442
+ flex: none;
443
+ }
444
+
445
+ .ca-footer__legal {
446
+ display: flex;
447
+ flex-wrap: wrap;
448
+ align-items: center;
449
+ justify-content: space-between;
450
+ gap: var(--ca-s3) var(--ca-s8);
451
+ padding-block-start: var(--ca-s6);
452
+ border-block-start: var(--ca-rule) solid var(--ca-footer-line);
453
+ color: var(--ca-footer-muted);
454
+ font-size: var(--ca-text-sm);
455
+ }
456
+
457
+ .ca-footer__copyright {
458
+ margin: 0;
459
+ font-variant-numeric: lining-nums tabular-nums;
460
+ }
461
+
462
+ .ca-footer__branding a {
463
+ display: inline-flex;
464
+ align-items: center;
465
+ gap: 0.5em;
466
+ color: var(--ca-footer-muted);
467
+ text-decoration: none;
468
+ }
469
+
470
+ .ca-footer__branding a:hover {
471
+ color: var(--ca-footer-ink);
472
+ }
473
+
474
+ .cg-site-footer__brand-logo {
475
+ display: block;
476
+ block-size: 18px;
477
+ inline-size: auto;
478
+ }
479
+
480
+ .cg-site-footer__version {
481
+ font-variant-numeric: tabular-nums;
482
+ }
483
+
484
+ @media (min-width: 48rem) {
485
+ .ca-footer__nav[data-columns="1"] {
486
+ grid-template-columns: minmax(0, 1fr);
487
+ }
488
+
489
+ .ca-footer__nav[data-columns="3"] {
490
+ grid-template-columns: repeat(3, minmax(0, 1fr));
491
+ }
492
+ }
493
+
494
+ @media (min-width: 64rem) {
495
+ .ca-footer__about {
496
+ grid-column: 1 / span 5;
497
+ }
498
+
499
+ .ca-footer__nav {
500
+ grid-column: 7 / -1;
501
+ }
502
+
503
+ .ca-footer__legal {
504
+ grid-column: 1 / -1;
505
+ }
506
+ }