@cogenta/theme-restaurant 0.3.3 → 0.5.4

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,853 @@
1
+ /*
2
+ * Widgets (contract D `theme@1.6`): the column beside a dish, a page that
3
+ * opens on its title or search results; the bands before and after the
4
+ * content; the columns of the charcoal footer. Everything reads `tokens.css`.
5
+ *
6
+ * The host draws one markup for every theme (`cg-sidebar-layout`); this file
7
+ * sets it the way a printed menu card sets its margin. Each group opens on
8
+ * the part-of-the-menu label (the display serif in small capitals, in brass,
9
+ * over an ink rule), then its words at the size of the menu: a call to book
10
+ * in the serif, hours as a ruled list, a guest's words in the light serif.
11
+ * Structure is drawn with space and hairlines; no box, no tint, no shadow.
12
+ * The one filled rectangle beside a dish is the way to book.
13
+ */
14
+
15
+ /* --------------------------------------------------------------------------
16
+ The layout: the content on the page's own grid, the column beside it.
17
+ -------------------------------------------------------------------------- */
18
+
19
+ .cg-sidebar-layout {
20
+ display: grid;
21
+ grid-template-columns: minmax(0, 1fr);
22
+ gap: 0;
23
+ inline-size: 100%;
24
+ max-inline-size: calc(var(--cr-page) + var(--cr-gutter) * 2);
25
+ margin-inline: auto;
26
+ padding-inline: var(--cr-gutter);
27
+ padding-block-end: 0;
28
+ }
29
+
30
+ .cg-sidebar-layout__content {
31
+ min-inline-size: 0;
32
+ }
33
+
34
+ /* Inside the content column the layout already holds the page's edges:
35
+ every block's container, and the pages the host renders, start on its
36
+ first pixel rather than a gutter further in. */
37
+ .cg-sidebar-layout__content :is(.cr-container, .cg-comments, .cg-form, .cg-form__confirmation),
38
+ .cg-sidebar-layout__content
39
+ > :is(
40
+ .cg-page__title,
41
+ .cg-search__form,
42
+ .cg-search__results,
43
+ .cg-search__empty,
44
+ .cg-search__error
45
+ ) {
46
+ max-inline-size: none;
47
+ padding-inline: 0;
48
+ }
49
+
50
+ /* A band inside the column stops at the column, so its words keep a margin
51
+ from the edge of its ground. */
52
+ .cg-sidebar-layout__content [data-block][data-variant-background] {
53
+ padding-inline: var(--cr-s8);
54
+ }
55
+
56
+ /* On a phone the column follows the page's last section, a section's step
57
+ below it, opening on the ink rule of its first group. */
58
+ .cg-sidebar-layout__aside {
59
+ align-self: start;
60
+ padding-block: calc(var(--cr-section) / 4) calc(var(--cr-section) / 2);
61
+ border: 0;
62
+ }
63
+
64
+ @media (min-width: 64rem) {
65
+ .cg-sidebar-layout {
66
+ grid-template-columns: minmax(0, 1fr) minmax(16rem, 20rem);
67
+ column-gap: clamp(var(--cr-s12), 5vw, var(--cr-s20));
68
+ }
69
+
70
+ /* The column's first label stands on the line of the dish's section label
71
+ and of a page's title, and nothing else parts it from the content: the
72
+ space between them is the margin of the card. */
73
+ .cg-sidebar-layout__aside {
74
+ position: sticky;
75
+ inset-block-start: var(--cr-s8);
76
+ padding-block: calc(var(--cr-section) * 0.4 + var(--cr-s2)) calc(var(--cr-section) / 2);
77
+ }
78
+
79
+ /* The content column is narrower than a page, so the text takes more of its
80
+ twelve columns: running text starts on the first column and keeps its
81
+ measure, a dish keeps its photograph and its words side by side. */
82
+ .cg-sidebar-layout__content .cr-prose__body {
83
+ grid-column: 1 / span 11;
84
+ }
85
+
86
+ .cg-sidebar-layout__content
87
+ :is(.cr-page-head__title, .cr-page-head__meta, .cr-archive__breadcrumb) {
88
+ grid-column: 1 / span 11;
89
+ }
90
+
91
+ .cg-sidebar-layout__content .cr-page-head__lead {
92
+ grid-column: 1 / span 9;
93
+ }
94
+
95
+ .cg-sidebar-layout__content .cr-dish[data-media="true"] .cr-dish__info {
96
+ grid-column: 7 / span 6;
97
+ }
98
+
99
+ .cg-sidebar-layout__content .cr-dish[data-media="false"] .cr-dish__info {
100
+ grid-column: 1 / span 10;
101
+ }
102
+
103
+ .cg-sidebar-layout__content .cr-dish__title {
104
+ font-size: var(--cr-size-section);
105
+ }
106
+
107
+ .cg-sidebar-layout__content .cr-list[data-shape="menu"] .cr-head {
108
+ grid-column: 1 / span 4;
109
+ }
110
+
111
+ .cg-sidebar-layout__content .cr-list[data-layout="list"] .cr-menu {
112
+ grid-column: 1 / span 10;
113
+ }
114
+
115
+ .cg-sidebar-layout__content .cr-list[data-shape="menu"] .cr-head + .cr-menu,
116
+ .cg-sidebar-layout__content .cr-list[data-layout="list"] .cr-head + .cr-menu {
117
+ grid-column: 5 / span 8;
118
+ }
119
+
120
+ .cg-sidebar-layout__content :is(.cr-cta__title, .cr-cta__body) {
121
+ grid-column: 1 / -1;
122
+ }
123
+
124
+ .cg-sidebar-layout__content .cg-comments > * {
125
+ grid-column: 1 / -1;
126
+ }
127
+ }
128
+
129
+ /* --------------------------------------------------------------------------
130
+ An area and its widgets.
131
+ -------------------------------------------------------------------------- */
132
+
133
+ .cg-widget-area {
134
+ display: grid;
135
+ gap: var(--cr-s12);
136
+ align-content: start;
137
+ }
138
+
139
+ .cg-widget {
140
+ min-inline-size: 0;
141
+ color: var(--cr-ink);
142
+ font-size: var(--cr-text-md);
143
+ line-height: var(--cr-leading-ui);
144
+ }
145
+
146
+ /* A band the host places outside the layout (the home page, a page that
147
+ opens on its own photograph): on the page's grid, a group to a column. */
148
+ .cg-widget-area--placed {
149
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
150
+ column-gap: var(--cr-col-gap);
151
+ inline-size: 100%;
152
+ max-inline-size: calc(var(--cr-page) + var(--cr-gutter) * 2);
153
+ margin-inline: auto;
154
+ padding: calc(var(--cr-section) / 2) var(--cr-gutter);
155
+ }
156
+
157
+ .cg-sidebar-layout__content .cg-widget-area--placed {
158
+ max-inline-size: none;
159
+ padding-inline: 0;
160
+ }
161
+
162
+ /* The part-of-the-menu label: the serif in small capitals, in brass, over
163
+ an ink rule, exactly as a section of the menu names itself. */
164
+ .cg-widget__title {
165
+ margin: 0 0 var(--cr-s5);
166
+ padding-block-end: var(--cr-s3);
167
+ border-block-end: var(--cr-rule) solid var(--cr-line-ink);
168
+ color: var(--cr-brass);
169
+ font-family: var(--cr-font-display);
170
+ font-size: var(--cr-size-label);
171
+ font-weight: var(--cr-weight-semibold);
172
+ font-variant-caps: all-small-caps;
173
+ line-height: 1.2;
174
+ letter-spacing: var(--cr-tracking-caps);
175
+ text-transform: none;
176
+ }
177
+
178
+ /* A group without a label still opens on the rule. */
179
+ :is(.cg-sidebar-layout__aside, .cg-widget-area--placed)
180
+ > .cg-widget:not(:has(> .cg-widget__title))
181
+ > .cg-widget__body {
182
+ padding-block-start: var(--cr-s5);
183
+ border-block-start: var(--cr-rule) solid var(--cr-line-ink);
184
+ }
185
+
186
+ .cg-widget__body :is(ul, ol) {
187
+ margin: 0;
188
+ padding: 0;
189
+ list-style: none;
190
+ }
191
+
192
+ .cg-widget__body p {
193
+ margin: 0;
194
+ }
195
+
196
+ .cg-widget__text p + p {
197
+ margin-block-start: var(--cr-s3);
198
+ }
199
+
200
+ .cg-widget__text a {
201
+ text-decoration-color: var(--cr-line-strong);
202
+ }
203
+
204
+ .cg-widget__empty {
205
+ color: var(--cr-ink-muted);
206
+ font-size: var(--cr-text-caption);
207
+ }
208
+
209
+ /* --------------------------------------------------------------------------
210
+ Lists: links, sections, months, a table of contents. Space parts one line
211
+ from the next, the way the menu parts its dishes.
212
+ -------------------------------------------------------------------------- */
213
+
214
+ :is(
215
+ .cg-widget__links-item,
216
+ .cg-widget__terms-item,
217
+ .cg-widget__archives-item,
218
+ .cg-widget__toc-item
219
+ ) {
220
+ padding-block: 0;
221
+ border-block-end: 0;
222
+ }
223
+
224
+ :is(.cg-widget__links, .cg-widget__toc, .cg-widget__terms, .cg-widget__archives) {
225
+ display: grid;
226
+ gap: var(--cr-s1);
227
+ }
228
+
229
+ :is(.cg-widget__links, .cg-widget__toc) a,
230
+ :is(.cg-widget__terms, .cg-widget__archives) a,
231
+ .cg-widget__about-link,
232
+ .cg-widget__form-link {
233
+ color: var(--cr-ink);
234
+ text-decoration-line: underline;
235
+ text-decoration-thickness: var(--cr-rule);
236
+ text-decoration-color: transparent;
237
+ text-underline-offset: 0.3em;
238
+ }
239
+
240
+ :is(.cg-widget__links, .cg-widget__toc) a:hover,
241
+ :is(.cg-widget__terms, .cg-widget__archives) a:hover,
242
+ .cg-widget__about-link:hover,
243
+ .cg-widget__form-link:hover {
244
+ text-decoration-color: currentColor;
245
+ }
246
+
247
+ .cg-widget__link,
248
+ .cg-widget__toc-item a {
249
+ display: inline-flex;
250
+ align-items: center;
251
+ min-block-size: 2.25rem;
252
+ }
253
+
254
+ /* The page being read is named in a heavier weight, without a colour of its
255
+ own. */
256
+ .cg-widget :is([aria-current="page"], [aria-current="page"] > a) {
257
+ font-weight: var(--cr-weight-semibold);
258
+ }
259
+
260
+ /* A section and its count: the menu's own dotted leader between them. */
261
+ :is(.cg-widget__terms-item, .cg-widget__archives-item) {
262
+ display: flex;
263
+ align-items: last baseline;
264
+ gap: 0 var(--cr-s3);
265
+ min-block-size: 2.25rem;
266
+ }
267
+
268
+ :is(.cg-widget__terms-item, .cg-widget__archives-item):has(
269
+ > :is(.cg-widget__terms-count, .cg-widget__archives-count)
270
+ )::after {
271
+ content: "";
272
+ flex: 1 1 var(--cr-s6);
273
+ order: 1;
274
+ min-inline-size: var(--cr-s4);
275
+ margin-block-end: 0.3em;
276
+ border-block-end: var(--cr-rule-strong) dotted var(--cr-line-strong);
277
+ }
278
+
279
+ :is(.cg-widget__terms-count, .cg-widget__archives-count) {
280
+ order: 2;
281
+ }
282
+
283
+ .cg-widget__terms-item[data-depth="1"],
284
+ .cg-widget__toc-item[data-depth="1"] {
285
+ padding-inline-start: var(--cr-s4);
286
+ }
287
+
288
+ .cg-widget__terms-item[data-depth="2"],
289
+ .cg-widget__toc-item[data-depth="2"] {
290
+ padding-inline-start: var(--cr-s8);
291
+ }
292
+
293
+ :is(
294
+ .cg-widget__terms-count,
295
+ .cg-widget__archives-count,
296
+ .cg-widget__cloud-count,
297
+ .cg-widget__entry-date,
298
+ .cg-widget__comment-date
299
+ ) {
300
+ color: var(--cr-ink-muted);
301
+ font-size: var(--cr-text-caption);
302
+ font-variant-numeric: lining-nums tabular-nums;
303
+ }
304
+
305
+ .cg-widget__cloud {
306
+ display: flex;
307
+ flex-wrap: wrap;
308
+ align-items: baseline;
309
+ gap: var(--cr-s1) var(--cr-s5);
310
+ }
311
+
312
+ .cg-widget__cloud-item {
313
+ display: inline-flex;
314
+ align-items: baseline;
315
+ gap: var(--cr-s1);
316
+ font-family: var(--cr-font-display);
317
+ }
318
+
319
+ .cg-widget__cloud-item a {
320
+ text-decoration-color: transparent;
321
+ }
322
+
323
+ .cg-widget__cloud-item a:hover {
324
+ text-decoration-color: currentColor;
325
+ }
326
+
327
+ .cg-widget__cloud-item[data-weight="1"] {
328
+ font-size: var(--cr-text-md);
329
+ }
330
+ .cg-widget__cloud-item[data-weight="2"] {
331
+ font-size: var(--cr-text-lg);
332
+ }
333
+ .cg-widget__cloud-item[data-weight="3"] {
334
+ font-size: var(--cr-text-xl);
335
+ }
336
+ .cg-widget__cloud-item[data-weight="4"] {
337
+ font-size: var(--cr-text-2xl);
338
+ }
339
+ .cg-widget__cloud-item[data-weight="5"] {
340
+ font-size: var(--cr-text-3xl);
341
+ }
342
+
343
+ /* --------------------------------------------------------------------------
344
+ Entries and comments: a dish name in the serif, the date under it.
345
+ -------------------------------------------------------------------------- */
346
+
347
+ :is(.cg-widget__entries, .cg-widget__comments) {
348
+ display: grid;
349
+ gap: var(--cr-s6);
350
+ }
351
+
352
+ :is(.cg-widget__entry, .cg-widget__comment) {
353
+ padding-block: 0;
354
+ border-block: 0;
355
+ }
356
+
357
+ .cg-widget__entry {
358
+ display: grid;
359
+ grid-template-columns: minmax(0, 1fr);
360
+ column-gap: var(--cr-s4);
361
+ align-items: start;
362
+ }
363
+
364
+ .cg-widget__entry[data-image="image"] {
365
+ grid-template-columns: 4.5rem minmax(0, 1fr);
366
+ }
367
+
368
+ .cg-widget__entry-image {
369
+ inline-size: 100%;
370
+ aspect-ratio: 4 / 5;
371
+ background: var(--cr-plate);
372
+ }
373
+
374
+ .cg-widget__entry-text {
375
+ display: grid;
376
+ gap: var(--cr-s1);
377
+ }
378
+
379
+ .cg-widget__entry-title,
380
+ .cg-widget__comment-entry {
381
+ color: var(--cr-ink);
382
+ font-family: var(--cr-font-display);
383
+ font-size: var(--cr-size-dish-name);
384
+ font-weight: var(--cr-weight-semibold);
385
+ line-height: 1.2;
386
+ text-decoration-color: transparent;
387
+ text-underline-offset: 0.2em;
388
+ }
389
+
390
+ a.cg-widget__entry-title:hover,
391
+ a.cg-widget__comment-entry:hover {
392
+ text-decoration-color: currentColor;
393
+ }
394
+
395
+ .cg-widget__entry-excerpt,
396
+ .cg-widget__comment-excerpt {
397
+ margin: 0;
398
+ color: var(--cr-ink-muted);
399
+ font-size: var(--cr-text-caption);
400
+ line-height: 1.5;
401
+ }
402
+
403
+ .cg-widget__comment-author {
404
+ font-weight: var(--cr-weight-medium);
405
+ }
406
+
407
+ /* --------------------------------------------------------------------------
408
+ Search, a jump menu, a form: fields are a baseline, as on the search page;
409
+ the button beside a field is its word, underlined, so the filled rectangle
410
+ stays the way to book.
411
+ -------------------------------------------------------------------------- */
412
+
413
+ .cg-widget__search,
414
+ .cg-widget__jump {
415
+ display: flex;
416
+ align-items: end;
417
+ gap: var(--cr-s4);
418
+ }
419
+
420
+ .cg-widget__search-input,
421
+ .cg-widget__jump select {
422
+ flex: 1;
423
+ min-inline-size: 0;
424
+ }
425
+
426
+ .cg-widget__search-button,
427
+ .cg-widget__jump-button {
428
+ flex: none;
429
+ min-block-size: 44px;
430
+ padding: 0;
431
+ border: 0;
432
+ background: transparent;
433
+ color: var(--cr-ink);
434
+ font-family: var(--cr-font-text);
435
+ font-size: var(--cr-text-md);
436
+ font-weight: var(--cr-weight-medium);
437
+ text-decoration-line: underline;
438
+ text-decoration-thickness: var(--cr-rule);
439
+ text-decoration-color: var(--cr-line-strong);
440
+ text-underline-offset: 0.3em;
441
+ cursor: pointer;
442
+ transition: text-decoration-color var(--cr-duration) var(--cr-ease);
443
+ }
444
+
445
+ .cg-widget__search-button:hover,
446
+ .cg-widget__jump-button:hover {
447
+ text-decoration-color: currentColor;
448
+ }
449
+
450
+ .cg-widget .cg-form {
451
+ display: grid;
452
+ gap: var(--cr-s4);
453
+ inline-size: auto;
454
+ max-inline-size: none;
455
+ margin: 0;
456
+ padding-inline: 0;
457
+ }
458
+
459
+ .cg-widget .cg-form > * {
460
+ max-inline-size: none;
461
+ }
462
+
463
+ .cg-widget .cg-form__field {
464
+ margin-block-end: 0;
465
+ }
466
+
467
+ .cg-widget__form-submit {
468
+ justify-self: start;
469
+ }
470
+
471
+ /* --------------------------------------------------------------------------
472
+ Words and pictures.
473
+ -------------------------------------------------------------------------- */
474
+
475
+ .cg-widget__figure,
476
+ .cg-widget__embed,
477
+ .cg-widget__quote {
478
+ margin: 0;
479
+ }
480
+
481
+ :is(.cg-widget__image, .cg-widget__about-image, .cg-widget__gallery-image) {
482
+ inline-size: 100%;
483
+ aspect-ratio: 4 / 5;
484
+ background: var(--cr-plate);
485
+ }
486
+
487
+ .cg-widget__caption {
488
+ margin-block-start: var(--cr-s3);
489
+ color: var(--cr-ink-muted);
490
+ font-size: var(--cr-text-caption);
491
+ }
492
+
493
+ .cg-widget__frame {
494
+ inline-size: 100%;
495
+ aspect-ratio: 16 / 9;
496
+ border: 0;
497
+ background: var(--cr-plate);
498
+ }
499
+
500
+ .cg-widget__gallery {
501
+ display: grid;
502
+ grid-template-columns: repeat(3, minmax(0, 1fr));
503
+ gap: var(--cr-s2);
504
+ }
505
+
506
+ .cg-widget__gallery[data-columns="2"] {
507
+ grid-template-columns: repeat(2, minmax(0, 1fr));
508
+ }
509
+ .cg-widget__gallery[data-columns="4"] {
510
+ grid-template-columns: repeat(4, minmax(0, 1fr));
511
+ }
512
+
513
+ /* A guest's words, or a critic's: the light serif, between real quotation
514
+ marks, the name after a rule in ink. */
515
+ .cg-widget__quote-text {
516
+ margin: 0;
517
+ }
518
+
519
+ .cg-widget__quote-text p {
520
+ font-family: var(--cr-font-display);
521
+ font-size: var(--cr-text-2xl);
522
+ font-weight: var(--cr-weight-light);
523
+ line-height: 1.25;
524
+ letter-spacing: var(--cr-tracking-heading);
525
+ quotes: "\201C" "\201D";
526
+ text-wrap: pretty;
527
+ }
528
+
529
+ .cg-widget__quote-text p::before {
530
+ content: open-quote;
531
+ }
532
+
533
+ .cg-widget__quote-text p::after {
534
+ content: close-quote;
535
+ }
536
+
537
+ .cg-widget__quote-source {
538
+ display: grid;
539
+ gap: 0.15em;
540
+ margin-block-start: var(--cr-s5);
541
+ padding-inline-start: var(--cr-s4);
542
+ border-inline-start: var(--cr-rule) solid var(--cr-line-ink);
543
+ }
544
+
545
+ .cg-widget__quote-name {
546
+ font-size: var(--cr-text-md);
547
+ font-weight: var(--cr-weight-medium);
548
+ }
549
+
550
+ .cg-widget__quote-role {
551
+ color: var(--cr-ink-muted);
552
+ font-family: var(--cr-font-display);
553
+ font-size: var(--cr-text-lg);
554
+ font-style: italic;
555
+ line-height: var(--cr-leading-lead);
556
+ }
557
+
558
+ .cg-widget__about,
559
+ .cg-widget__cta {
560
+ display: grid;
561
+ gap: var(--cr-s3);
562
+ justify-items: start;
563
+ }
564
+
565
+ .cg-widget__about-heading,
566
+ .cg-widget__cta-heading {
567
+ color: var(--cr-ink);
568
+ font-family: var(--cr-font-display);
569
+ font-size: var(--cr-text-3xl);
570
+ font-weight: var(--cr-weight-light);
571
+ line-height: var(--cr-leading-heading);
572
+ letter-spacing: var(--cr-tracking-display);
573
+ text-wrap: balance;
574
+ }
575
+
576
+ .cg-widget__about-body,
577
+ .cg-widget__cta-body {
578
+ color: var(--cr-ink-muted);
579
+ font-size: var(--cr-text-md);
580
+ line-height: 1.55;
581
+ }
582
+
583
+ .cg-widget__about-image {
584
+ margin-block-end: var(--cr-s2);
585
+ }
586
+
587
+ /* The way to book is the theme's filled rectangle (`base.css`), a step
588
+ further from the words than a line is. */
589
+ .cg-widget__cta-action {
590
+ margin-block-start: var(--cr-s3);
591
+ }
592
+
593
+ /* Contact lines and opening hours: the address card's words, and the hours
594
+ as a ruled list of two columns, the way a dish lists its details. */
595
+ .cg-widget__contact {
596
+ display: grid;
597
+ gap: var(--cr-s2);
598
+ }
599
+
600
+ .cg-widget__contact-line {
601
+ display: flex;
602
+ gap: var(--cr-s3);
603
+ align-items: baseline;
604
+ line-height: 1.5;
605
+ }
606
+
607
+ .cg-widget__contact-line a {
608
+ text-decoration-color: var(--cr-line-strong);
609
+ }
610
+
611
+ .cg-widget__icon {
612
+ flex: none;
613
+ align-self: start;
614
+ margin-block-start: 0.2em;
615
+ color: var(--cr-ink-muted);
616
+ }
617
+
618
+ /* The rule runs under the label and the value as one line: the space between
619
+ the two columns is the label's own padding, not a gap in the grid. */
620
+ .cg-widget__hours {
621
+ display: grid;
622
+ grid-template-columns: minmax(5.5rem, max-content) minmax(0, 1fr);
623
+ column-gap: 0;
624
+ margin: 0;
625
+ }
626
+
627
+ .cg-widget__contact-line + .cg-widget__hours {
628
+ margin-block-start: var(--cr-s4);
629
+ }
630
+
631
+ .cg-widget__hours :is(dt, dd) {
632
+ margin: 0;
633
+ padding-block: var(--cr-s3);
634
+ }
635
+
636
+ .cg-widget__hours dt {
637
+ padding-inline-end: var(--cr-s5);
638
+ }
639
+
640
+ .cg-widget__hours :is(dt, dd):not(:first-of-type) {
641
+ border-block-start: var(--cr-rule) solid var(--cr-line);
642
+ }
643
+
644
+ .cg-widget__hours :is(dt, dd):first-of-type {
645
+ padding-block-start: 0;
646
+ }
647
+
648
+ .cg-widget__hours :is(dt, dd):last-of-type {
649
+ padding-block-end: 0;
650
+ }
651
+
652
+ .cg-widget__hours-label {
653
+ color: var(--cr-ink-muted);
654
+ font-size: var(--cr-text-caption);
655
+ line-height: 1.6;
656
+ }
657
+
658
+ .cg-widget__hours-value {
659
+ font-size: var(--cr-text-md);
660
+ line-height: 1.5;
661
+ font-variant-numeric: lining-nums tabular-nums;
662
+ }
663
+
664
+ /* The profiles keep their names, as in the footer. */
665
+ .cg-widget__social {
666
+ display: grid;
667
+ gap: var(--cr-s1);
668
+ }
669
+
670
+ .cg-widget__social a {
671
+ display: inline-flex;
672
+ align-items: center;
673
+ gap: var(--cr-s2);
674
+ min-block-size: 2.25rem;
675
+ text-decoration-color: transparent;
676
+ }
677
+
678
+ .cg-widget__social a:hover {
679
+ text-decoration-color: currentColor;
680
+ }
681
+
682
+ .cg-widget__social .cg-visually-hidden {
683
+ position: static;
684
+ inline-size: auto;
685
+ block-size: auto;
686
+ margin: 0;
687
+ overflow: visible;
688
+ clip-path: none;
689
+ white-space: normal;
690
+ }
691
+
692
+ .cg-widget__calendar-table {
693
+ inline-size: 100%;
694
+ border-collapse: collapse;
695
+ font-size: var(--cr-text-caption);
696
+ font-variant-numeric: lining-nums tabular-nums;
697
+ text-align: center;
698
+ }
699
+
700
+ .cg-widget__calendar-table caption {
701
+ padding-block-end: var(--cr-s3);
702
+ font-family: var(--cr-font-display);
703
+ font-size: var(--cr-text-xl);
704
+ text-align: start;
705
+ }
706
+
707
+ .cg-widget__calendar-table th {
708
+ color: var(--cr-ink-muted);
709
+ font-weight: var(--cr-weight-regular);
710
+ }
711
+
712
+ .cg-widget__calendar-table :is(th, td) {
713
+ padding-block: var(--cr-s2);
714
+ }
715
+
716
+ .cg-widget__calendar-table td[data-posts] a {
717
+ font-weight: var(--cr-weight-semibold);
718
+ }
719
+
720
+ .cg-widget__calendar-nav {
721
+ display: flex;
722
+ justify-content: space-between;
723
+ margin-block-start: var(--cr-s3);
724
+ font-size: var(--cr-text-caption);
725
+ }
726
+
727
+ /* --------------------------------------------------------------------------
728
+ The footer's widget columns: a second tier of the charcoal band, under a
729
+ hairline, on the footer's twelve columns. The labels drop the brass for
730
+ the band's muted cream; the way to book becomes the footer's own
731
+ underlined words.
732
+ -------------------------------------------------------------------------- */
733
+
734
+ .cr-footer__widgets {
735
+ display: grid;
736
+ grid-template-columns: minmax(0, 1fr);
737
+ gap: var(--cr-s12) var(--cr-col-gap);
738
+ padding-block-start: var(--cr-s12);
739
+ border-block-start: var(--cr-rule) solid var(--cr-footer-line);
740
+ }
741
+
742
+ @media (min-width: 40rem) {
743
+ .cr-footer__widgets {
744
+ grid-template-columns: repeat(2, minmax(0, 1fr));
745
+ }
746
+ }
747
+
748
+ /* On a desk each column starts on a column of the band above: two or three
749
+ columns of four, under the name and the address card; four columns of
750
+ three. */
751
+ @media (min-width: 64rem) {
752
+ .cr-footer__widgets {
753
+ grid-template-columns: repeat(var(--cr-columns), minmax(0, 1fr));
754
+ }
755
+
756
+ .cr-footer__widgets > .cg-widget-area {
757
+ grid-column: span 4;
758
+ }
759
+
760
+ .cr-footer__widgets[data-columns="4"] > .cg-widget-area {
761
+ grid-column: span 3;
762
+ }
763
+ }
764
+
765
+ .cr-footer__widgets .cg-widget {
766
+ color: var(--cr-footer-ink);
767
+ }
768
+
769
+ .cr-footer__widgets .cg-widget__title {
770
+ margin-block-end: var(--cr-s4);
771
+ padding-block-end: 0;
772
+ border-block-end: 0;
773
+ color: var(--cr-footer-muted);
774
+ }
775
+
776
+ .cr-footer__widgets
777
+ :is(
778
+ .cg-widget__cta-body,
779
+ .cg-widget__about-body,
780
+ .cg-widget__hours-label,
781
+ .cg-widget__entry-date,
782
+ .cg-widget__entry-excerpt,
783
+ .cg-widget__terms-count,
784
+ .cg-widget__archives-count,
785
+ .cg-widget__quote-role,
786
+ .cg-widget__caption,
787
+ .cg-widget__icon,
788
+ .cg-widget__empty
789
+ ) {
790
+ color: var(--cr-footer-muted);
791
+ }
792
+
793
+ .cr-footer__widgets
794
+ :is(.cg-widget__cta-heading, .cg-widget__about-heading, .cg-widget__entry-title) {
795
+ color: var(--cr-footer-ink);
796
+ }
797
+
798
+ .cr-footer__widgets .cg-widget__cta-heading {
799
+ font-size: var(--cr-text-2xl);
800
+ }
801
+
802
+ .cr-footer__widgets .cg-widget__cta-body {
803
+ max-inline-size: 36ch;
804
+ font-size: var(--cr-text-caption);
805
+ }
806
+
807
+ .cr-footer__widgets .cg-widget__hours {
808
+ max-inline-size: 30rem;
809
+ }
810
+
811
+ .cr-footer__widgets .cg-widget__hours :is(dt, dd) {
812
+ border-block-start-color: var(--cr-footer-line);
813
+ }
814
+
815
+ .cr-footer__widgets :is(.cg-widget__quote-source, .cg-widget__title) {
816
+ border-color: var(--cr-footer-line);
817
+ }
818
+
819
+ .cr-footer__widgets :is(.cg-widget__search-input, .cg-widget__jump select) {
820
+ border-block-end-color: var(--cr-footer-muted);
821
+ color: var(--cr-footer-ink);
822
+ }
823
+
824
+ .cr-footer__widgets :is(.cg-widget__search-button, .cg-widget__jump-button) {
825
+ color: var(--cr-footer-ink);
826
+ text-decoration-color: var(--cr-footer-line);
827
+ }
828
+
829
+ .cr-footer__widgets .cg-widget__cta-action {
830
+ display: inline-block;
831
+ padding: 0;
832
+ border: 0;
833
+ background: transparent;
834
+ color: var(--cr-footer-ink);
835
+ font-size: var(--cr-text-md);
836
+ text-decoration-line: underline;
837
+ text-decoration-thickness: var(--cr-rule);
838
+ text-decoration-color: var(--cr-footer-line);
839
+ text-underline-offset: 0.3em;
840
+ white-space: normal;
841
+ }
842
+
843
+ .cr-footer__widgets .cg-widget__cta-action::after {
844
+ content: "\2192" / "";
845
+ display: inline-block;
846
+ margin-inline-start: 0.4em;
847
+ }
848
+
849
+ .cr-footer__widgets .cg-widget__cta-action:hover {
850
+ background: transparent;
851
+ color: var(--cr-footer-ink);
852
+ text-decoration-color: currentColor;
853
+ }