@cogenta/theme-restaurant 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 (138) hide show
  1. package/dist/src/index.d.ts +3 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +3 -0
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/render/blocks/accordion.d.ts +7 -0
  6. package/dist/src/render/blocks/accordion.d.ts.map +1 -1
  7. package/dist/src/render/blocks/accordion.js +10 -16
  8. package/dist/src/render/blocks/accordion.js.map +1 -1
  9. package/dist/src/render/blocks/collection-list.d.ts +4 -11
  10. package/dist/src/render/blocks/collection-list.d.ts.map +1 -1
  11. package/dist/src/render/blocks/collection-list.js +96 -96
  12. package/dist/src/render/blocks/collection-list.js.map +1 -1
  13. package/dist/src/render/blocks/cta.d.ts +7 -4
  14. package/dist/src/render/blocks/cta.d.ts.map +1 -1
  15. package/dist/src/render/blocks/cta.js +9 -7
  16. package/dist/src/render/blocks/cta.js.map +1 -1
  17. package/dist/src/render/blocks/embed.d.ts.map +1 -1
  18. package/dist/src/render/blocks/embed.js +30 -28
  19. package/dist/src/render/blocks/embed.js.map +1 -1
  20. package/dist/src/render/blocks/faq.d.ts +13 -1
  21. package/dist/src/render/blocks/faq.d.ts.map +1 -1
  22. package/dist/src/render/blocks/faq.js +15 -11
  23. package/dist/src/render/blocks/faq.js.map +1 -1
  24. package/dist/src/render/blocks/feature-grid.d.ts.map +1 -1
  25. package/dist/src/render/blocks/feature-grid.js +43 -16
  26. package/dist/src/render/blocks/feature-grid.js.map +1 -1
  27. package/dist/src/render/blocks/gallery.d.ts +0 -7
  28. package/dist/src/render/blocks/gallery.d.ts.map +1 -1
  29. package/dist/src/render/blocks/gallery.js +28 -10
  30. package/dist/src/render/blocks/gallery.js.map +1 -1
  31. package/dist/src/render/blocks/hero.d.ts +16 -9
  32. package/dist/src/render/blocks/hero.d.ts.map +1 -1
  33. package/dist/src/render/blocks/hero.js +27 -20
  34. package/dist/src/render/blocks/hero.js.map +1 -1
  35. package/dist/src/render/blocks/logo-strip.d.ts +6 -0
  36. package/dist/src/render/blocks/logo-strip.d.ts.map +1 -1
  37. package/dist/src/render/blocks/logo-strip.js +7 -9
  38. package/dist/src/render/blocks/logo-strip.js.map +1 -1
  39. package/dist/src/render/blocks/logos.d.ts +8 -0
  40. package/dist/src/render/blocks/logos.d.ts.map +1 -1
  41. package/dist/src/render/blocks/logos.js +18 -18
  42. package/dist/src/render/blocks/logos.js.map +1 -1
  43. package/dist/src/render/blocks/media-figure.d.ts +14 -3
  44. package/dist/src/render/blocks/media-figure.d.ts.map +1 -1
  45. package/dist/src/render/blocks/media-figure.js +34 -16
  46. package/dist/src/render/blocks/media-figure.js.map +1 -1
  47. package/dist/src/render/blocks/pricing-table.d.ts.map +1 -1
  48. package/dist/src/render/blocks/pricing-table.js +17 -22
  49. package/dist/src/render/blocks/pricing-table.js.map +1 -1
  50. package/dist/src/render/blocks/prose.d.ts +11 -6
  51. package/dist/src/render/blocks/prose.d.ts.map +1 -1
  52. package/dist/src/render/blocks/prose.js +13 -7
  53. package/dist/src/render/blocks/prose.js.map +1 -1
  54. package/dist/src/render/blocks/quote.d.ts +6 -2
  55. package/dist/src/render/blocks/quote.d.ts.map +1 -1
  56. package/dist/src/render/blocks/quote.js +14 -12
  57. package/dist/src/render/blocks/quote.js.map +1 -1
  58. package/dist/src/render/blocks/stat-counter.d.ts +6 -0
  59. package/dist/src/render/blocks/stat-counter.d.ts.map +1 -1
  60. package/dist/src/render/blocks/stat-counter.js +7 -10
  61. package/dist/src/render/blocks/stat-counter.js.map +1 -1
  62. package/dist/src/render/blocks/stats.d.ts +7 -0
  63. package/dist/src/render/blocks/stats.d.ts.map +1 -1
  64. package/dist/src/render/blocks/stats.js +8 -16
  65. package/dist/src/render/blocks/stats.js.map +1 -1
  66. package/dist/src/render/blocks/testimonial.d.ts +5 -11
  67. package/dist/src/render/blocks/testimonial.d.ts.map +1 -1
  68. package/dist/src/render/blocks/testimonial.js +9 -17
  69. package/dist/src/render/blocks/testimonial.js.map +1 -1
  70. package/dist/src/render/chrome.d.ts.map +1 -1
  71. package/dist/src/render/chrome.js +101 -84
  72. package/dist/src/render/chrome.js.map +1 -1
  73. package/dist/src/render/dish.d.ts +13 -0
  74. package/dist/src/render/dish.d.ts.map +1 -0
  75. package/dist/src/render/dish.js +84 -0
  76. package/dist/src/render/dish.js.map +1 -0
  77. package/dist/src/render/layout.d.ts +23 -0
  78. package/dist/src/render/layout.d.ts.map +1 -0
  79. package/dist/src/render/layout.js +33 -0
  80. package/dist/src/render/layout.js.map +1 -0
  81. package/dist/src/render/menu.d.ts +53 -0
  82. package/dist/src/render/menu.d.ts.map +1 -0
  83. package/dist/src/render/menu.js +99 -0
  84. package/dist/src/render/menu.js.map +1 -0
  85. package/dist/src/render/render-block.d.ts +19 -0
  86. package/dist/src/render/render-block.d.ts.map +1 -1
  87. package/dist/src/render/render-block.js +50 -39
  88. package/dist/src/render/render-block.js.map +1 -1
  89. package/dist/src/render/strings.d.ts +15 -0
  90. package/dist/src/render/strings.d.ts.map +1 -0
  91. package/dist/src/render/strings.js +23 -0
  92. package/dist/src/render/strings.js.map +1 -0
  93. package/dist/src/render/term-archive.d.ts +10 -4
  94. package/dist/src/render/term-archive.d.ts.map +1 -1
  95. package/dist/src/render/term-archive.js +25 -16
  96. package/dist/src/render/term-archive.js.map +1 -1
  97. package/dist/src/render/widget-areas.d.ts +13 -0
  98. package/dist/src/render/widget-areas.d.ts.map +1 -0
  99. package/dist/src/render/widget-areas.js +20 -0
  100. package/dist/src/render/widget-areas.js.map +1 -0
  101. package/dist/theme.config.d.ts +1 -1
  102. package/dist/theme.config.js +2 -2
  103. package/dist/theme.config.js.map +1 -1
  104. package/package.json +5 -5
  105. package/src/index.ts +3 -0
  106. package/src/render/blocks/accordion.ts +18 -47
  107. package/src/render/blocks/collection-list.ts +245 -133
  108. package/src/render/blocks/cta.ts +20 -11
  109. package/src/render/blocks/embed.ts +45 -36
  110. package/src/render/blocks/faq.ts +32 -25
  111. package/src/render/blocks/feature-grid.ts +83 -33
  112. package/src/render/blocks/gallery.ts +39 -21
  113. package/src/render/blocks/hero.ts +41 -34
  114. package/src/render/blocks/logo-strip.ts +27 -25
  115. package/src/render/blocks/logos.ts +34 -43
  116. package/src/render/blocks/media-figure.ts +49 -24
  117. package/src/render/blocks/pricing-table.ts +30 -42
  118. package/src/render/blocks/prose.ts +18 -9
  119. package/src/render/blocks/quote.ts +29 -19
  120. package/src/render/blocks/stat-counter.ts +24 -29
  121. package/src/render/blocks/stats.ts +30 -40
  122. package/src/render/blocks/testimonial.ts +17 -22
  123. package/src/render/chrome.ts +113 -95
  124. package/src/render/dish.ts +195 -0
  125. package/src/render/layout.ts +64 -0
  126. package/src/render/menu.ts +117 -0
  127. package/src/render/render-block.ts +51 -40
  128. package/src/render/strings.ts +44 -0
  129. package/src/render/term-archive.ts +78 -44
  130. package/src/render/widget-areas.ts +23 -0
  131. package/src/styles/archive.css +46 -56
  132. package/src/styles/base.css +803 -550
  133. package/src/styles/blocks.css +723 -641
  134. package/src/styles/menu.css +482 -0
  135. package/src/styles/theme.css +24 -25
  136. package/src/styles/tokens.css +239 -225
  137. package/src/styles/widgets.css +853 -0
  138. package/tokens.json +16 -16
@@ -0,0 +1,482 @@
1
+ /*
2
+ * The menu, the band of plates, lists of photographed or plain entries, and
3
+ * the page of one dish. Everything reads `tokens.css`.
4
+ */
5
+
6
+ /* --------------------------------------------------------------------------
7
+ Lists: the frame every `collectionList` shape sits in.
8
+ -------------------------------------------------------------------------- */
9
+
10
+ .cr-list__items {
11
+ margin: 0;
12
+ padding: 0;
13
+ list-style: none;
14
+ }
15
+
16
+ .cr-list__viewport {
17
+ overflow-x: auto;
18
+ overscroll-behavior-x: contain;
19
+ scroll-snap-type: x mandatory;
20
+ scrollbar-width: thin;
21
+ padding-block-end: var(--cr-s4);
22
+ }
23
+
24
+ /* One column holds a printed menu's width, not the page's: the leaders stay
25
+ the length of a few words. */
26
+ .cr-list[data-layout="list"] .cr-menu {
27
+ max-inline-size: 38rem;
28
+ }
29
+
30
+ @media (min-width: 64rem) {
31
+ .cr-list[data-layout="list"] .cr-menu {
32
+ grid-column: 3 / span 8;
33
+ }
34
+
35
+ /* A titled menu: the title on the first three columns, the menu on the
36
+ last eight, so the sections read as a card set beside its name. */
37
+ .cr-list[data-shape="menu"] .cr-head {
38
+ position: sticky;
39
+ inset-block-start: var(--cr-s8);
40
+ grid-column: 1 / span 3;
41
+ grid-row: 1;
42
+ }
43
+
44
+ .cr-list[data-shape="menu"] .cr-head + .cr-menu {
45
+ grid-column: 5 / span 8;
46
+ grid-row: 1;
47
+ }
48
+
49
+ .cr-list[data-shape="menu"] .cr-head__title {
50
+ max-inline-size: 10ch;
51
+ }
52
+ }
53
+
54
+ /* --------------------------------------------------------------------------
55
+ The menu: sections in small capitals, a dish per line with a dotted leader
56
+ to its price, the description under it.
57
+ -------------------------------------------------------------------------- */
58
+
59
+ .cr-menu__section {
60
+ padding-block-end: var(--cr-s12);
61
+ }
62
+
63
+ .cr-menu__section:last-child {
64
+ padding-block-end: 0;
65
+ }
66
+
67
+ .cr-menu__section-title {
68
+ margin: 0 0 var(--cr-s3);
69
+ padding-block-end: var(--cr-s3);
70
+ border-block-end: var(--cr-rule) solid var(--cr-line-ink);
71
+ color: var(--cr-brass);
72
+ font-family: var(--cr-font-display);
73
+ font-size: var(--cr-size-label);
74
+ font-weight: var(--cr-weight-semibold);
75
+ font-variant-caps: all-small-caps;
76
+ line-height: 1.2;
77
+ letter-spacing: var(--cr-tracking-caps);
78
+ }
79
+
80
+ .cr-menu__items {
81
+ margin: 0;
82
+ padding: 0;
83
+ list-style: none;
84
+ }
85
+
86
+ /* Dishes are separated by space alone, the way a printed menu sets them: a
87
+ rule under every dish would make a form of it. */
88
+ .cr-menu__item {
89
+ padding-block: var(--cr-s3) var(--cr-s4);
90
+ }
91
+
92
+ /* One line: the name, a leader of dots on the shared baseline, the price.
93
+ A long name wraps and the leader and price follow its last line. */
94
+ .cr-menu__line {
95
+ display: flex;
96
+ align-items: last baseline;
97
+ gap: 0 var(--cr-s3);
98
+ margin: 0;
99
+ }
100
+
101
+ .cr-menu__name {
102
+ flex: 0 1 auto;
103
+ color: var(--cr-ink);
104
+ font-family: var(--cr-font-display);
105
+ font-size: var(--cr-size-dish-name);
106
+ font-weight: var(--cr-weight-semibold);
107
+ line-height: 1.2;
108
+ text-decoration-color: transparent;
109
+ text-underline-offset: 0.2em;
110
+ }
111
+
112
+ .cr-menu__name:hover {
113
+ text-decoration-color: currentColor;
114
+ }
115
+
116
+ .cr-menu__leader {
117
+ flex: 1 1 var(--cr-s8);
118
+ min-inline-size: var(--cr-s6);
119
+ margin-block-end: 0.3em;
120
+ border-block-end: var(--cr-rule-strong) dotted var(--cr-line-strong);
121
+ }
122
+
123
+ .cr-menu__price {
124
+ flex: none;
125
+ color: var(--cr-ink);
126
+ font-size: var(--cr-text-md);
127
+ font-weight: var(--cr-weight-medium);
128
+ font-variant-numeric: lining-nums tabular-nums;
129
+ white-space: nowrap;
130
+ }
131
+
132
+ .cr-menu__description {
133
+ margin: var(--cr-s1) 0 0;
134
+ max-inline-size: 52ch;
135
+ color: var(--cr-ink-muted);
136
+ font-size: var(--cr-text-caption);
137
+ line-height: 1.5;
138
+ }
139
+
140
+ .cr-menu__diet {
141
+ color: var(--cr-ink-muted);
142
+ font-style: italic;
143
+ white-space: nowrap;
144
+ }
145
+
146
+ .cr-menu__text + .cr-menu__diet {
147
+ margin-inline-start: 0.5em;
148
+ }
149
+
150
+ /* Two columns of sections on a wide screen, balanced, never a section split
151
+ across them. */
152
+ @media (min-width: 48rem) {
153
+ .cr-list[data-layout="grid"] .cr-menu:not([data-sections="1"]),
154
+ .cr-list[data-layout="carousel"] .cr-menu:not([data-sections="1"]) {
155
+ column-count: 2;
156
+ column-gap: clamp(var(--cr-s10), 5vw, var(--cr-s20));
157
+ }
158
+
159
+ .cr-list[data-layout="grid"] .cr-menu__section,
160
+ .cr-list[data-layout="carousel"] .cr-menu__section {
161
+ break-inside: avoid;
162
+ }
163
+
164
+ .cr-list[data-layout="grid"] .cr-menu:not([data-sections="1"]) .cr-menu__section:last-child {
165
+ padding-block-end: 0;
166
+ }
167
+ }
168
+
169
+ @media (min-width: 64rem) {
170
+ .cr-list[data-layout="list"] .cr-head + .cr-menu {
171
+ grid-column: 5 / span 7;
172
+ }
173
+ }
174
+
175
+ /* --------------------------------------------------------------------------
176
+ A band of plates: the photograph at 4:5, the name and the price under it.
177
+ -------------------------------------------------------------------------- */
178
+
179
+ .cr-plates {
180
+ display: grid;
181
+ grid-auto-flow: column;
182
+ grid-auto-columns: 72%;
183
+ gap: var(--cr-col-gap);
184
+ }
185
+
186
+ @media (min-width: 40rem) {
187
+ .cr-plates {
188
+ grid-auto-columns: calc((100% - var(--cr-col-gap) * 2) / 3);
189
+ }
190
+ }
191
+
192
+ @media (min-width: 64rem) {
193
+ .cr-plates {
194
+ grid-auto-columns: calc((100% - var(--cr-col-gap) * 3) / 4);
195
+ }
196
+ }
197
+
198
+ .cr-plates__item {
199
+ scroll-snap-align: start;
200
+ }
201
+
202
+ .cr-plates__media {
203
+ display: block;
204
+ margin-block-end: var(--cr-s4);
205
+ background: var(--cr-plate);
206
+ }
207
+
208
+ .cr-plates__image {
209
+ inline-size: 100%;
210
+ aspect-ratio: 4 / 5;
211
+ object-fit: cover;
212
+ }
213
+
214
+ .cr-plates__item[data-media="false"] {
215
+ padding-block-start: var(--cr-s4);
216
+ border-block-start: var(--cr-rule) solid var(--cr-line-ink);
217
+ }
218
+
219
+ .cr-plates__line {
220
+ display: flex;
221
+ align-items: baseline;
222
+ justify-content: space-between;
223
+ gap: var(--cr-s4);
224
+ margin: 0;
225
+ }
226
+
227
+ .cr-plates__name {
228
+ color: var(--cr-ink);
229
+ font-family: var(--cr-font-display);
230
+ font-size: var(--cr-size-dish-name);
231
+ font-weight: var(--cr-weight-semibold);
232
+ line-height: 1.2;
233
+ text-decoration-color: transparent;
234
+ }
235
+
236
+ .cr-plates__name:hover {
237
+ text-decoration-color: currentColor;
238
+ }
239
+
240
+ .cr-plates__price {
241
+ flex: none;
242
+ font-weight: var(--cr-weight-medium);
243
+ font-variant-numeric: lining-nums tabular-nums;
244
+ }
245
+
246
+ .cr-plates__section {
247
+ margin: var(--cr-s1) 0 0;
248
+ color: var(--cr-ink-muted);
249
+ font-size: var(--cr-text-caption);
250
+ }
251
+
252
+ /* --------------------------------------------------------------------------
253
+ Photographed entries without a price, and a plain index.
254
+ -------------------------------------------------------------------------- */
255
+
256
+ .cr-photos {
257
+ display: grid;
258
+ grid-template-columns: minmax(0, 1fr);
259
+ gap: var(--cr-s12) var(--cr-col-gap);
260
+ }
261
+
262
+ @media (min-width: 40rem) {
263
+ .cr-photos {
264
+ grid-template-columns: repeat(2, minmax(0, 1fr));
265
+ }
266
+ }
267
+
268
+ @media (min-width: 64rem) {
269
+ .cr-photos[data-count="3"] {
270
+ grid-template-columns: repeat(3, minmax(0, 1fr));
271
+ }
272
+ }
273
+
274
+ .cr-list__viewport .cr-photos {
275
+ grid-template-columns: none;
276
+ grid-auto-flow: column;
277
+ grid-auto-columns: 72%;
278
+ }
279
+
280
+ @media (min-width: 40rem) {
281
+ .cr-list__viewport .cr-photos {
282
+ grid-auto-columns: calc((100% - var(--cr-col-gap) * 2) / 3);
283
+ }
284
+ }
285
+
286
+ .cr-photos__item {
287
+ scroll-snap-align: start;
288
+ }
289
+
290
+ .cr-photos__media {
291
+ display: block;
292
+ margin-block-end: var(--cr-s5);
293
+ background: var(--cr-plate);
294
+ }
295
+
296
+ .cr-photos__image {
297
+ inline-size: 100%;
298
+ aspect-ratio: 4 / 5;
299
+ object-fit: cover;
300
+ }
301
+
302
+ .cr-photos__name {
303
+ font-size: var(--cr-text-2xl);
304
+ font-weight: var(--cr-weight-regular);
305
+ }
306
+
307
+ .cr-photos__text {
308
+ margin: var(--cr-s2) 0 0;
309
+ max-inline-size: 42ch;
310
+ color: var(--cr-ink-muted);
311
+ font-size: var(--cr-text-caption);
312
+ }
313
+
314
+ .cr-index__item {
315
+ padding-block: var(--cr-s6);
316
+ border-block-start: var(--cr-rule) solid var(--cr-line);
317
+ }
318
+
319
+ .cr-index__item:last-child {
320
+ border-block-end: var(--cr-rule) solid var(--cr-line);
321
+ }
322
+
323
+ .cr-index__name {
324
+ font-size: var(--cr-text-2xl);
325
+ font-weight: var(--cr-weight-regular);
326
+ }
327
+
328
+ .cr-index__link {
329
+ color: var(--cr-ink);
330
+ text-decoration-color: transparent;
331
+ }
332
+
333
+ .cr-index__link:hover {
334
+ text-decoration-color: currentColor;
335
+ }
336
+
337
+ .cr-index__text {
338
+ margin: var(--cr-s2) 0 0;
339
+ max-inline-size: var(--cr-measure);
340
+ color: var(--cr-ink-muted);
341
+ }
342
+
343
+ @media (min-width: 64rem) {
344
+ .cr-list[data-shape="index"] .cr-head {
345
+ grid-column: 1 / span 4;
346
+ grid-row: 1;
347
+ }
348
+
349
+ .cr-list[data-shape="index"] .cr-index {
350
+ grid-column: 5 / span 8;
351
+ }
352
+
353
+ .cr-list[data-shape="index"] .cr-head + .cr-index {
354
+ grid-row: 1;
355
+ }
356
+ }
357
+
358
+ /* --------------------------------------------------------------------------
359
+ The page of one dish.
360
+ -------------------------------------------------------------------------- */
361
+
362
+ .cr-dish {
363
+ padding-block: calc(var(--cr-section) * 0.4) calc(var(--cr-section) * 0.3);
364
+ }
365
+
366
+ .cr-dish__inner {
367
+ row-gap: var(--cr-s10);
368
+ align-items: center;
369
+ }
370
+
371
+ .cr-dish__media {
372
+ margin: 0;
373
+ background: var(--cr-plate);
374
+ }
375
+
376
+ .cr-dish__image {
377
+ inline-size: 100%;
378
+ aspect-ratio: 4 / 5;
379
+ object-fit: cover;
380
+ }
381
+
382
+ .cr-dish__section {
383
+ margin: 0 0 var(--cr-s4);
384
+ color: var(--cr-brass);
385
+ font-family: var(--cr-font-display);
386
+ font-size: var(--cr-size-label);
387
+ font-weight: var(--cr-weight-semibold);
388
+ font-variant-caps: all-small-caps;
389
+ line-height: 1.2;
390
+ letter-spacing: var(--cr-tracking-caps);
391
+ }
392
+
393
+ .cr-dish__title {
394
+ font-size: var(--cr-size-dish);
395
+ font-weight: var(--cr-weight-light);
396
+ line-height: 1.02;
397
+ letter-spacing: var(--cr-tracking-display);
398
+ }
399
+
400
+ .cr-dish__summary {
401
+ margin: var(--cr-s6) 0 0;
402
+ max-inline-size: 36ch;
403
+ color: var(--cr-ink-muted);
404
+ font-family: var(--cr-font-display);
405
+ font-size: var(--cr-size-lead);
406
+ font-style: italic;
407
+ line-height: var(--cr-leading-lead);
408
+ }
409
+
410
+ .cr-dish__price-line {
411
+ display: flex;
412
+ flex-wrap: wrap;
413
+ align-items: baseline;
414
+ justify-content: space-between;
415
+ gap: var(--cr-s2) var(--cr-s6);
416
+ margin: var(--cr-s10) 0 0;
417
+ padding-block: var(--cr-s4);
418
+ border-block: var(--cr-rule) solid var(--cr-line-ink);
419
+ }
420
+
421
+ .cr-dish__price {
422
+ color: var(--cr-ink);
423
+ font-size: var(--cr-text-xl);
424
+ font-weight: var(--cr-weight-medium);
425
+ font-variant-numeric: lining-nums tabular-nums;
426
+ }
427
+
428
+ .cr-dish__diet {
429
+ color: var(--cr-ink-muted);
430
+ font-style: italic;
431
+ }
432
+
433
+ .cr-dish__details {
434
+ margin-block-start: var(--cr-s2);
435
+ }
436
+
437
+ .cr-dish__facts {
438
+ margin: 0;
439
+ }
440
+
441
+ .cr-dish__fact {
442
+ display: grid;
443
+ grid-template-columns: minmax(6.5rem, 1fr) 3fr;
444
+ gap: var(--cr-s1) var(--cr-s5);
445
+ padding-block: var(--cr-s4);
446
+ border-block-end: var(--cr-rule) solid var(--cr-line);
447
+ }
448
+
449
+ .cr-dish__fact-label {
450
+ color: var(--cr-ink-muted);
451
+ font-size: var(--cr-text-caption);
452
+ }
453
+
454
+ .cr-dish__fact-value {
455
+ margin: 0;
456
+ font-size: var(--cr-text-md);
457
+ line-height: 1.5;
458
+ }
459
+
460
+ .cr-dish__terms {
461
+ display: flex;
462
+ flex-wrap: wrap;
463
+ gap: var(--cr-s1) var(--cr-s5);
464
+ margin: var(--cr-s6) 0 0;
465
+ padding: 0;
466
+ list-style: none;
467
+ font-size: var(--cr-text-caption);
468
+ }
469
+
470
+ @media (min-width: 64rem) {
471
+ .cr-dish[data-media="true"] .cr-dish__media {
472
+ grid-column: 1 / span 6;
473
+ }
474
+
475
+ .cr-dish[data-media="true"] .cr-dish__info {
476
+ grid-column: 8 / span 5;
477
+ }
478
+
479
+ .cr-dish[data-media="false"] .cr-dish__info {
480
+ grid-column: 1 / span 7;
481
+ }
482
+ }
@@ -1,36 +1,35 @@
1
1
  /*
2
- * `@cogenta/theme-restaurant`'s stylesheet — the entry point, and nothing
3
- * else.
2
+ * `@cogenta/theme-restaurant`'s stylesheet: the entry point, and nothing else.
4
3
  *
5
- * Four layers, in the only order that works:
4
+ * tokens.css the design system, derived from the skin's `--cogenta-*`
5
+ * custom properties (contract D)
6
+ * base.css document, accessibility floor, grid, section and page
7
+ * titles, actions, header, footer, and the utility pages the
8
+ * host renders (search, forms, comments)
9
+ * menu.css the menu, the band of plates, photographed and plain lists,
10
+ * the page of one dish
11
+ * blocks.css the other vocabulary blocks
12
+ * archive.css the taxonomy-term archive
13
+ * widgets.css the widget areas: the column beside a dish, the bands, the
14
+ * footer columns
6
15
  *
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 (contract D `theme@1.3`)
16
+ * Not one colour is written literally in any of them: every value comes from
17
+ * a skin token or from a `--cr-*` property composed from those.
12
18
  *
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
- * `@import` is resolved at build time by Astro, and by `@cogenta/cli`'s own
19
- * inliner when `cogenta serve` renders without a build. Both flatten these
20
- * four into one sheet, so no visitor ever pays for four round trips.
21
- *
22
- * The one thing this file adds on its own: the Google Fonts request for the
23
- * two type families `tokens.json` names — Cormorant Garamond (display
24
- * headings, light weight) and Jost (body copy, controls, small-caps
25
- * labels) — loaded here, once, rather than per skin, since a skin only ever
26
- * *names* a font family; it does not fetch one. Both fall back to a real
27
- * system stack (`tokens.json`'s `font.serif`/`font.sans`) if Google Fonts is
28
- * unreachable.
19
+ * The one thing this file adds on its own is the Google Fonts request for the
20
+ * two families the skin names: Cormorant Garamond (display, upright and
21
+ * italic, 300 to 700) and Karla (text, upright and italic, 200 to 800). A
22
+ * skin only names a family; it never fetches one. Both fall back to a real
23
+ * system stack if Google Fonts is unreachable, and `display=swap` keeps text
24
+ * visible while they load. `cogenta serve` hoists this `@import` above the
25
+ * skin's rules.
29
26
  */
30
27
 
31
- @import url("https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;1,400&family=Jost:ital,wght@0,300;0,400;0,500;0,600;1,400&display=swap");
28
+ @import url("https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300..700;1,300..700&family=Karla:ital,wght@0,200..800;1,200..800&display=swap");
32
29
 
33
30
  @import "./tokens.css";
34
31
  @import "./base.css";
32
+ @import "./menu.css";
35
33
  @import "./blocks.css";
36
34
  @import "./archive.css";
35
+ @import "./widgets.css";