@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,591 @@
1
+ /*
2
+ * Lists of entries and the pages of one entry: the events calendar and its
3
+ * date blocks, programmes as alternating rows of picture and words, photo
4
+ * cards, plain indexes, and the openings of an event page and of a programme
5
+ * page with their practical details. Everything reads `tokens.css`.
6
+ */
7
+
8
+ /* --------------------------------------------------------------------------
9
+ Date blocks
10
+ -------------------------------------------------------------------------- */
11
+
12
+ .ca-date,
13
+ .ca-when {
14
+ display: grid;
15
+ justify-items: start;
16
+ align-content: start;
17
+ line-height: 1;
18
+ }
19
+
20
+ /* The month is a short label in capitals, the way a noticeboard date reads.
21
+ Set in capitals rather than small capitals: the text face as served by
22
+ Google Fonts carries no small-capital glyphs, and synthesis is off. */
23
+ .ca-date-month,
24
+ .ca-when-month {
25
+ color: var(--ca-green);
26
+ font-family: var(--ca-font-text);
27
+ font-weight: var(--ca-weight-bold);
28
+ letter-spacing: var(--ca-tracking-caps);
29
+ text-transform: uppercase;
30
+ }
31
+
32
+ .ca-date-month {
33
+ font-size: var(--ca-text-caption);
34
+ }
35
+
36
+ .ca-date-day,
37
+ .ca-when-day {
38
+ color: var(--ca-ink);
39
+ font-family: var(--ca-font-display);
40
+ font-weight: var(--ca-weight-bold);
41
+ font-stretch: var(--ca-stretch-figure);
42
+ font-variant-numeric: lining-nums tabular-nums;
43
+ letter-spacing: var(--ca-tracking-display);
44
+ }
45
+
46
+ .ca-date-day {
47
+ font-size: var(--ca-size-day);
48
+ line-height: 0.92;
49
+ }
50
+
51
+ .ca-date-weekday,
52
+ .ca-when-weekday {
53
+ margin-block-start: var(--ca-s1);
54
+ color: var(--ca-ink-muted);
55
+ font-size: var(--ca-text-caption);
56
+ line-height: var(--ca-leading-ui);
57
+ }
58
+
59
+ .ca-when-month {
60
+ font-size: var(--ca-text-lg);
61
+ }
62
+
63
+ .ca-when-day {
64
+ font-size: var(--ca-size-day-large);
65
+ line-height: 0.86;
66
+ }
67
+
68
+ .ca-when-weekday {
69
+ margin-block-start: var(--ca-s2);
70
+ font-size: var(--ca-text-md);
71
+ }
72
+
73
+ /* --------------------------------------------------------------------------
74
+ Titles in lists: the words are the link, underlined in green on hover.
75
+ -------------------------------------------------------------------------- */
76
+
77
+ .ca-events__link,
78
+ .ca-rows__link,
79
+ .ca-photos__link,
80
+ .ca-index__link {
81
+ color: var(--ca-ink);
82
+ text-decoration-line: underline;
83
+ text-decoration-thickness: var(--ca-rule-strong);
84
+ text-decoration-color: transparent;
85
+ text-underline-offset: 0.16em;
86
+ }
87
+
88
+ .ca-events__link:hover,
89
+ .ca-rows__link:hover,
90
+ .ca-photos__link:hover,
91
+ .ca-index__link:hover {
92
+ color: var(--ca-ink);
93
+ text-decoration-color: var(--ca-green);
94
+ }
95
+
96
+ .ca-rows__media,
97
+ .ca-photos__media {
98
+ display: block;
99
+ }
100
+
101
+ /* --------------------------------------------------------------------------
102
+ Events: a calendar, one event per row
103
+ -------------------------------------------------------------------------- */
104
+
105
+ .ca-events {
106
+ margin: 0;
107
+ padding: 0;
108
+ list-style: none;
109
+ border-block-start: var(--ca-rule-strong) solid var(--ca-line-ink);
110
+ }
111
+
112
+ .ca-events__item {
113
+ display: grid;
114
+ grid-template-columns: 4.25rem minmax(0, 1fr);
115
+ column-gap: var(--ca-s5);
116
+ row-gap: var(--ca-s3);
117
+ padding-block: var(--ca-s6);
118
+ border-block-end: var(--ca-rule) solid var(--ca-line);
119
+ }
120
+
121
+ .ca-events__body {
122
+ display: grid;
123
+ align-content: start;
124
+ gap: var(--ca-s2);
125
+ }
126
+
127
+ .ca-events__title {
128
+ font-size: clamp(var(--ca-text-lg), calc(0.95rem + 0.55vw), var(--ca-text-xl));
129
+ font-weight: var(--ca-weight-semibold);
130
+ line-height: var(--ca-leading-heading);
131
+ }
132
+
133
+ .ca-events__meta {
134
+ display: grid;
135
+ gap: var(--ca-s1) var(--ca-s3);
136
+ margin: 0;
137
+ font-weight: var(--ca-weight-semibold);
138
+ line-height: var(--ca-leading-ui);
139
+ }
140
+
141
+ .ca-events__place {
142
+ color: var(--ca-ink-muted);
143
+ font-weight: var(--ca-weight-regular);
144
+ }
145
+
146
+ @media (min-width: 40rem) {
147
+ .ca-list[data-layout="list"] .ca-events__meta {
148
+ display: flex;
149
+ flex-wrap: wrap;
150
+ }
151
+
152
+ .ca-list[data-layout="list"] .ca-events__hours + .ca-events__place::before {
153
+ content: "\00B7" / "";
154
+ margin-inline-end: var(--ca-s3);
155
+ color: var(--ca-ink-subtle);
156
+ }
157
+ }
158
+
159
+ .ca-events__text {
160
+ margin: 0;
161
+ max-inline-size: 64ch;
162
+ color: var(--ca-ink-muted);
163
+ }
164
+
165
+ .ca-events__cost {
166
+ grid-column: 2;
167
+ margin: 0;
168
+ color: var(--ca-green);
169
+ font-size: var(--ca-text-caption);
170
+ font-weight: var(--ca-weight-semibold);
171
+ line-height: var(--ca-leading-ui);
172
+ }
173
+
174
+ @media (min-width: 64rem) {
175
+ .ca-list[data-layout="list"] .ca-events__item {
176
+ grid-template-columns: repeat(var(--ca-columns), minmax(0, 1fr));
177
+ column-gap: var(--ca-col-gap);
178
+ }
179
+
180
+ .ca-list[data-layout="list"] .ca-date {
181
+ grid-column: 1 / span 2;
182
+ }
183
+
184
+ .ca-list[data-layout="list"] .ca-events__body {
185
+ grid-column: 3 / span 7;
186
+ }
187
+
188
+ .ca-list[data-layout="list"] .ca-events__cost {
189
+ grid-column: 10 / span 3;
190
+ grid-row: 1;
191
+ justify-self: end;
192
+ padding-block-start: var(--ca-s1);
193
+ text-align: end;
194
+ }
195
+ }
196
+
197
+ /* In a grid or a scrolling row, each event is a column under its own rule. */
198
+ .ca-list[data-layout="grid"] .ca-events,
199
+ .ca-list__viewport .ca-events {
200
+ display: grid;
201
+ gap: var(--ca-s10) var(--ca-col-gap);
202
+ border: 0;
203
+ }
204
+
205
+ /* A column is too narrow for the date beside the words: the date runs along
206
+ the top of the card instead, day first. */
207
+ .ca-list[data-layout="grid"] .ca-events__item,
208
+ .ca-list__viewport .ca-events__item {
209
+ grid-template-columns: minmax(0, 1fr);
210
+ align-content: start;
211
+ padding-block: var(--ca-s5) 0;
212
+ border-block-start: var(--ca-rule-strong) solid var(--ca-line-ink);
213
+ border-block-end: 0;
214
+ }
215
+
216
+ .ca-list[data-layout="grid"] .ca-date,
217
+ .ca-list__viewport .ca-date {
218
+ display: flex;
219
+ flex-wrap: wrap;
220
+ align-items: baseline;
221
+ gap: 0 var(--ca-s2);
222
+ }
223
+
224
+ .ca-list[data-layout="grid"] .ca-date-day,
225
+ .ca-list__viewport .ca-date-day {
226
+ order: -1;
227
+ }
228
+
229
+ .ca-list[data-layout="grid"] .ca-events__cost,
230
+ .ca-list__viewport .ca-events__cost {
231
+ grid-column: 1;
232
+ }
233
+
234
+ @media (min-width: 40rem) {
235
+ .ca-list[data-layout="grid"] .ca-events {
236
+ grid-template-columns: repeat(2, minmax(0, 1fr));
237
+ }
238
+ }
239
+
240
+ @media (min-width: 64rem) {
241
+ .ca-list[data-layout="grid"] .ca-events {
242
+ grid-template-columns: repeat(3, minmax(0, 1fr));
243
+ }
244
+ }
245
+
246
+ .ca-list__viewport > .ca-list__items {
247
+ grid-template-columns: none;
248
+ grid-auto-flow: column;
249
+ grid-auto-columns: min(82%, 22rem);
250
+ }
251
+
252
+ .ca-list__viewport > .ca-list__items > * {
253
+ scroll-snap-align: start;
254
+ }
255
+
256
+ /* --------------------------------------------------------------------------
257
+ Rows: programmes, picture and words, alternating sides
258
+ -------------------------------------------------------------------------- */
259
+
260
+ .ca-rows {
261
+ display: grid;
262
+ gap: var(--ca-s16);
263
+ margin: 0;
264
+ padding: 0;
265
+ list-style: none;
266
+ }
267
+
268
+ .ca-rows__item {
269
+ display: grid;
270
+ gap: var(--ca-s6);
271
+ }
272
+
273
+ .ca-rows__image {
274
+ inline-size: 100%;
275
+ aspect-ratio: 4 / 3;
276
+ background: var(--ca-band);
277
+ }
278
+
279
+ .ca-rows__body {
280
+ display: grid;
281
+ align-content: center;
282
+ justify-items: start;
283
+ gap: var(--ca-s4);
284
+ }
285
+
286
+ .ca-rows__title {
287
+ font-size: clamp(var(--ca-text-xl), calc(1rem + 1.4vw), var(--ca-text-3xl));
288
+ font-weight: var(--ca-weight-bold);
289
+ font-stretch: var(--ca-stretch-display);
290
+ line-height: var(--ca-leading-heading);
291
+ letter-spacing: var(--ca-tracking-display);
292
+ }
293
+
294
+ .ca-rows__text {
295
+ margin: 0;
296
+ max-inline-size: 48ch;
297
+ font-size: var(--ca-size-lead);
298
+ line-height: var(--ca-leading-lead);
299
+ }
300
+
301
+ .ca-rows__facts {
302
+ display: grid;
303
+ grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
304
+ gap: var(--ca-s4) var(--ca-s8);
305
+ inline-size: 100%;
306
+ margin: var(--ca-s2) 0 0;
307
+ padding-block-start: var(--ca-s4);
308
+ border-block-start: var(--ca-rule) solid var(--ca-line);
309
+ }
310
+
311
+ .ca-rows__facts-item,
312
+ .ca-facts-item {
313
+ display: grid;
314
+ align-content: start;
315
+ gap: var(--ca-s1);
316
+ }
317
+
318
+ .ca-rows__facts-label,
319
+ .ca-facts-label {
320
+ color: var(--ca-green);
321
+ font-size: var(--ca-text-caption);
322
+ font-weight: var(--ca-weight-semibold);
323
+ line-height: var(--ca-leading-ui);
324
+ }
325
+
326
+ .ca-rows__facts-value,
327
+ .ca-facts-value {
328
+ margin: 0;
329
+ line-height: var(--ca-leading-ui);
330
+ }
331
+
332
+ .ca-rows__facts-detail,
333
+ .ca-facts-detail {
334
+ display: block;
335
+ color: var(--ca-ink-muted);
336
+ }
337
+
338
+ @media (min-width: 64rem) {
339
+ .ca-rows {
340
+ gap: calc(var(--ca-section) * 0.6);
341
+ }
342
+
343
+ .ca-rows__item {
344
+ grid-template-columns: repeat(var(--ca-columns), minmax(0, 1fr));
345
+ column-gap: var(--ca-col-gap);
346
+ align-items: center;
347
+ }
348
+
349
+ .ca-rows__image {
350
+ aspect-ratio: 4 / 5;
351
+ }
352
+
353
+ .ca-rows__media {
354
+ grid-column: 1 / span 4;
355
+ grid-row: 1;
356
+ }
357
+
358
+ .ca-rows__body {
359
+ grid-column: 6 / span 6;
360
+ grid-row: 1;
361
+ }
362
+
363
+ .ca-rows__item:nth-child(even) .ca-rows__media {
364
+ grid-column: 9 / span 4;
365
+ }
366
+
367
+ .ca-rows__item:nth-child(even) .ca-rows__body {
368
+ grid-column: 2 / span 6;
369
+ }
370
+ }
371
+
372
+ /* --------------------------------------------------------------------------
373
+ Photos: cards of picture, title and summary
374
+ -------------------------------------------------------------------------- */
375
+
376
+ .ca-photos {
377
+ display: grid;
378
+ gap: var(--ca-s12) var(--ca-col-gap);
379
+ margin: 0;
380
+ padding: 0;
381
+ list-style: none;
382
+ }
383
+
384
+ .ca-photos__item {
385
+ display: grid;
386
+ align-content: start;
387
+ gap: var(--ca-s3);
388
+ }
389
+
390
+ .ca-photos__image {
391
+ inline-size: 100%;
392
+ aspect-ratio: 4 / 3;
393
+ margin-block-end: var(--ca-s2);
394
+ background: var(--ca-band);
395
+ }
396
+
397
+ .ca-photos__title {
398
+ font-size: var(--ca-text-xl);
399
+ font-weight: var(--ca-weight-semibold);
400
+ line-height: var(--ca-leading-heading);
401
+ }
402
+
403
+ .ca-photos__text {
404
+ margin: 0;
405
+ color: var(--ca-ink-muted);
406
+ }
407
+
408
+ @media (min-width: 40rem) {
409
+ .ca-list[data-layout="grid"] .ca-photos {
410
+ grid-template-columns: repeat(2, minmax(0, 1fr));
411
+ }
412
+ }
413
+
414
+ @media (min-width: 64rem) {
415
+ .ca-list[data-layout="grid"] .ca-photos {
416
+ grid-template-columns: repeat(3, minmax(0, 1fr));
417
+ }
418
+ }
419
+
420
+ /* --------------------------------------------------------------------------
421
+ Index: ruled rows of titles and summaries
422
+ -------------------------------------------------------------------------- */
423
+
424
+ .ca-index {
425
+ margin: 0;
426
+ padding: 0;
427
+ list-style: none;
428
+ border-block-start: var(--ca-rule-strong) solid var(--ca-line-ink);
429
+ }
430
+
431
+ .ca-index__item {
432
+ display: grid;
433
+ gap: var(--ca-s2);
434
+ padding-block: var(--ca-s5);
435
+ border-block-end: var(--ca-rule) solid var(--ca-line);
436
+ }
437
+
438
+ .ca-index__title {
439
+ font-size: var(--ca-text-lg);
440
+ font-weight: var(--ca-weight-semibold);
441
+ line-height: var(--ca-leading-heading);
442
+ }
443
+
444
+ .ca-index__date {
445
+ margin: 0;
446
+ color: var(--ca-ink-muted);
447
+ font-size: var(--ca-text-caption);
448
+ }
449
+
450
+ .ca-index__text {
451
+ margin: 0;
452
+ max-inline-size: var(--ca-measure);
453
+ color: var(--ca-ink-muted);
454
+ }
455
+
456
+ @media (min-width: 64rem) {
457
+ .ca-list[data-shape="index"] .ca-index,
458
+ .ca-list[data-shape="empty"] .ca-empty {
459
+ grid-column: 1 / span 8;
460
+ }
461
+ }
462
+
463
+ /* --------------------------------------------------------------------------
464
+ The practical details of an event or a programme
465
+ -------------------------------------------------------------------------- */
466
+
467
+ .ca-facts {
468
+ display: grid;
469
+ grid-template-columns: repeat(auto-fit, minmax(12.5rem, 1fr));
470
+ gap: var(--ca-s6) var(--ca-col-gap);
471
+ margin: 0;
472
+ padding-block-start: var(--ca-s5);
473
+ border-block-start: var(--ca-rule-strong) solid var(--ca-line-ink);
474
+ }
475
+
476
+ .ca-facts-value {
477
+ font-size: var(--ca-text-md);
478
+ font-weight: var(--ca-weight-semibold);
479
+ }
480
+
481
+ .ca-facts-detail {
482
+ font-weight: var(--ca-weight-regular);
483
+ }
484
+
485
+ /* --------------------------------------------------------------------------
486
+ An event's own page
487
+ -------------------------------------------------------------------------- */
488
+
489
+ .ca-event,
490
+ .ca-entry {
491
+ padding-block: calc(var(--ca-section) * 0.55) 0;
492
+ }
493
+
494
+ .ca-event__inner,
495
+ .ca-entry__inner {
496
+ row-gap: var(--ca-s8);
497
+ }
498
+
499
+ .ca-event__heading,
500
+ .ca-entry__heading {
501
+ display: grid;
502
+ align-content: start;
503
+ gap: var(--ca-s5);
504
+ }
505
+
506
+ .ca-event__title,
507
+ .ca-entry__title {
508
+ max-inline-size: 20ch;
509
+ font-size: var(--ca-size-title);
510
+ font-weight: var(--ca-weight-bold);
511
+ font-stretch: var(--ca-stretch-display);
512
+ line-height: var(--ca-leading-display);
513
+ letter-spacing: var(--ca-tracking-display);
514
+ }
515
+
516
+ .ca-event__lead,
517
+ .ca-entry__lead {
518
+ margin: 0;
519
+ max-inline-size: 52ch;
520
+ color: var(--ca-ink-muted);
521
+ font-size: var(--ca-size-lead);
522
+ line-height: var(--ca-leading-lead);
523
+ }
524
+
525
+ .ca-event__cover,
526
+ .ca-entry__cover {
527
+ margin: 0;
528
+ }
529
+
530
+ .ca-event__image,
531
+ .ca-entry__image {
532
+ inline-size: 100%;
533
+ aspect-ratio: 16 / 9;
534
+ background: var(--ca-band);
535
+ }
536
+
537
+ .ca-entry[data-cover="portrait"] .ca-entry__image {
538
+ aspect-ratio: 4 / 5;
539
+ }
540
+
541
+ .ca-entry__details {
542
+ margin-block-start: var(--ca-s3);
543
+ }
544
+
545
+ @media (max-width: 63.99rem) {
546
+ .ca-entry[data-cover="portrait"] .ca-entry__cover {
547
+ max-inline-size: 26rem;
548
+ }
549
+ }
550
+
551
+ @media (min-width: 64rem) {
552
+ .ca-event__date {
553
+ grid-column: 1 / span 3;
554
+ grid-row: 1 / span 2;
555
+ }
556
+
557
+ .ca-event__heading {
558
+ grid-column: 4 / span 8;
559
+ }
560
+
561
+ .ca-event__details {
562
+ grid-column: 4 / -1;
563
+ }
564
+
565
+ .ca-event__cover {
566
+ grid-column: 1 / -1;
567
+ margin-block-start: var(--ca-s4);
568
+ }
569
+
570
+ .ca-entry__heading {
571
+ grid-column: 1 / span 9;
572
+ }
573
+
574
+ .ca-entry[data-cover="portrait"] .ca-entry__inner {
575
+ align-items: center;
576
+ }
577
+
578
+ .ca-entry[data-cover="portrait"] .ca-entry__heading {
579
+ grid-column: 1 / span 7;
580
+ grid-row: 1;
581
+ }
582
+
583
+ .ca-entry[data-cover="portrait"] .ca-entry__cover {
584
+ grid-column: 9 / span 4;
585
+ grid-row: 1;
586
+ }
587
+
588
+ .ca-entry[data-cover="landscape"] .ca-entry__cover {
589
+ grid-column: 1 / -1;
590
+ }
591
+ }
@@ -1,31 +1,37 @@
1
1
  /*
2
- * `@cogenta/theme-association`'s stylesheet — the entry point, and nothing
2
+ * `@cogenta/theme-association`'s stylesheet: the entry point, and nothing
3
3
  * else.
4
4
  *
5
- * Three layers, in the only order that works:
5
+ * tokens.css the design system, derived from the skin's `--cogenta-*`
6
+ * custom properties (contract D)
7
+ * base.css document, accessibility floor, grid, section and page
8
+ * titles, actions, and the utility pages the host renders
9
+ * (search, forms, comments)
10
+ * chrome.css the header and the footer
11
+ * blocks.css the vocabulary blocks
12
+ * listings.css the events calendar, programme rows, photo cards, indexes,
13
+ * and the openings of an event page and a programme page
14
+ * archive.css the taxonomy-term archive
15
+ * widgets.css the widget areas: the side column, the bands, the footer row
6
16
  *
7
- * tokens.css the design system, derived entirely from the skin's
8
- * `--cogenta-*` custom properties (contract D)
9
- * base.css document, accessibility floor, page frame, chrome, actions
10
- * blocks.css the seventeen vocabulary blocks
11
- * archive.css the taxonomy-term archive
17
+ * Not one colour is written literally in any of them: every value comes from
18
+ * a skin token or from a `--ca-*` property composed from those.
12
19
  *
13
- * Not one colour, font, radius, duration or shadow is written literally in
14
- * any of the four: every value comes from a `--cogenta-<group>-<name>`
15
- * property produced from the skin's tokens, or from a `--cg-*` property
16
- * composed from those.
17
- *
18
- * The Google Fonts request for the two families `tokens.json` names —
19
- * Nunito for headings (`tokens.json`'s `font.serif` slot, repurposed: it is
20
- * a rounded humanist sans, not a literal serif, chosen for the warm,
21
- * friendly display face the brief asks for) and Source Sans 3 for body copy
22
- * (`font.sans`) — loaded here, once. Both fall back to a real system stack
23
- * if Google Fonts is unreachable (`tokens.json`'s own fallback text).
20
+ * The one thing this file adds on its own is the Google Fonts request for the
21
+ * two families the skin names: Bricolage Grotesque (display, optical size
22
+ * 12 to 96, width 75 to 100, weight 200 to 800) and Source Sans 3 (text,
23
+ * upright and italic, 200 to 900). A skin only names a family; it never
24
+ * fetches one. Both fall back to a real system stack if Google Fonts is
25
+ * unreachable, and `display=swap` keeps text visible while they load.
26
+ * `cogenta serve` hoists this `@import` above the skin's rules.
24
27
  */
25
28
 
26
- @import url("https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,600;0,700;0,800;0,900;1,700&family=Source+Sans+3:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap");
29
+ @import url("https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wdth,wght@12..96,75..100,200..800&family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap");
27
30
 
28
31
  @import "./tokens.css";
29
32
  @import "./base.css";
33
+ @import "./chrome.css";
30
34
  @import "./blocks.css";
35
+ @import "./listings.css";
31
36
  @import "./archive.css";
37
+ @import "./widgets.css";