@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
@@ -1,975 +1,1057 @@
1
1
  /*
2
- * The seventeen vocabulary blocks (`blocks@2.0`). Reads only `--cg-*` from
3
- * `tokens.css`; nothing here reads a `--cogenta-*` token directly.
2
+ * The vocabulary blocks other than lists (see `menu.css`). Everything reads
3
+ * `tokens.css`; every block sits in the `.cr-section` rhythm and on the
4
+ * `.cr-container` grid (`base.css`).
4
5
  */
5
6
 
6
7
  /* --------------------------------------------------------------------------
7
- hero — full-bleed, centred, a flat scrim over any photograph
8
+ hero: the room across the window, the name under it.
8
9
  -------------------------------------------------------------------------- */
9
10
 
10
- .cg-hero {
11
- position: relative;
12
- display: flex;
13
- align-items: center;
14
- justify-content: center;
15
- min-block-size: 34rem;
16
- padding: var(--cg-s20) var(--cg-gutter);
17
- overflow: hidden;
18
- background: var(--cg-ink);
19
- color: var(--cg-canvas);
20
- text-align: center;
11
+ .cr-hero[data-media="true"] {
12
+ padding-block-start: 0;
21
13
  }
22
14
 
23
- @media (min-width: 56rem) {
24
- .cg-hero {
25
- min-block-size: 44rem;
26
- }
27
- }
28
-
29
- .cg-hero[data-has-media="false"] {
30
- background: var(--cg-surface-sunken);
31
- color: var(--cg-ink);
32
- }
33
-
34
- .cg-hero__media {
35
- position: absolute;
36
- inset: 0;
37
- z-index: 0;
15
+ .cr-hero__media {
16
+ margin: 0 0 clamp(var(--cr-s8), 4vw, var(--cr-s16));
17
+ background: var(--cr-plate);
38
18
  }
39
19
 
40
- .cg-hero__image {
20
+ .cr-hero__image {
41
21
  inline-size: 100%;
42
- block-size: 100%;
22
+ aspect-ratio: 4 / 5;
43
23
  object-fit: cover;
44
24
  }
45
25
 
46
- /* A flat, uniform veil rather than a gradient fade: `.cg-hero`'s content is
47
- centred over the whole image (not pinned to the bottom), so contrast
48
- needs to hold anywhere in the frame, not just near the caption. */
49
- .cg-hero__scrim {
50
- position: absolute;
51
- inset: 0;
52
- background: var(--cg-scrim);
26
+ @media (min-width: 40rem) {
27
+ .cr-hero__image {
28
+ aspect-ratio: 3 / 2;
29
+ }
53
30
  }
54
31
 
55
- .cg-hero__body {
56
- position: relative;
57
- z-index: 1;
58
- display: flex;
59
- flex-direction: column;
60
- align-items: center;
61
- gap: var(--cg-s5);
62
- max-inline-size: 42rem;
32
+ @media (min-width: 64rem) {
33
+ .cr-hero__image {
34
+ aspect-ratio: 21 / 9;
35
+ max-block-size: 72svh;
36
+ }
63
37
  }
64
38
 
65
- .cg-hero__eyebrow {
66
- margin: 0;
67
- color: inherit;
39
+ .cr-hero__inner {
40
+ row-gap: var(--cr-s6);
41
+ align-items: end;
68
42
  }
69
43
 
70
- .cg-hero__eyebrow::before,
71
- .cg-hero__eyebrow::after {
72
- display: inline-block;
73
- inline-size: 1.5em;
74
- border-block-end: 1px solid currentColor;
75
- vertical-align: middle;
76
- margin-inline: 0.5em;
77
- opacity: 0.6;
78
- content: "";
44
+ .cr-hero[data-media="false"] .cr-hero__inner {
45
+ padding-block-start: calc(var(--cr-section) * 0.4);
79
46
  }
80
47
 
81
- .cg-hero__title {
82
- margin: 0;
83
- font-size: clamp(var(--cg-text-3xl), 6vw, var(--cg-text-4xl));
84
- letter-spacing: var(--cg-tracking-wide);
48
+ .cr-hero__eyebrow {
49
+ margin: 0 0 var(--cr-s3);
50
+ color: var(--cr-brass);
51
+ font-family: var(--cr-font-display);
52
+ font-size: var(--cr-size-label);
53
+ font-weight: var(--cr-weight-semibold);
54
+ font-variant-caps: all-small-caps;
55
+ line-height: 1.2;
56
+ letter-spacing: var(--cr-tracking-caps);
85
57
  }
86
58
 
87
- .cg-hero__subtitle {
88
- margin: 0;
89
- font-size: var(--cg-text-lg);
90
- opacity: 0.92;
59
+ .cr-hero__title {
60
+ font-size: var(--cr-size-name);
61
+ font-weight: var(--cr-weight-light);
62
+ line-height: var(--cr-leading-display);
63
+ letter-spacing: var(--cr-tracking-display);
91
64
  }
92
65
 
93
- .cg-hero .cg-actions {
94
- justify-content: center;
66
+ .cr-hero__aside {
67
+ display: grid;
68
+ gap: var(--cr-s5);
69
+ justify-items: start;
95
70
  }
96
71
 
97
- /* The secondary action's global rule (`base.css`) hardcodes `--cg-ink` — the
98
- * right choice on the plain, light `data-has-media="false"` backdrop below,
99
- * but unreadable dark-on-dark once a photograph and its scrim are behind it.
100
- * Same fix as `.cg-close`'s own secondary override just below in this file,
101
- * scoped to the media case only so the no-media hero keeps its correct ink
102
- * text untouched. */
103
- .cg-hero[data-has-media="true"] .cg-action[data-emphasis="secondary"] {
104
- border-color: color-mix(in oklab, var(--cg-canvas) 40%, transparent);
105
- color: var(--cg-canvas);
72
+ .cr-hero__subtitle {
73
+ margin: 0;
74
+ max-inline-size: 34ch;
75
+ color: var(--cr-ink-muted);
76
+ font-size: var(--cr-text-lg);
77
+ line-height: var(--cr-leading-lead);
106
78
  }
107
79
 
108
- .cg-hero[data-has-media="true"] .cg-action[data-emphasis="secondary"]:hover {
109
- border-color: var(--cg-canvas);
110
- color: var(--cg-canvas);
80
+ @media (min-width: 64rem) {
81
+ .cr-hero__heading {
82
+ grid-column: 1 / span 8;
83
+ }
84
+
85
+ .cr-hero__aside {
86
+ grid-column: 9 / span 4;
87
+ padding-block-end: calc(var(--cr-size-name) * 0.16);
88
+ }
111
89
  }
112
90
 
113
91
  /* --------------------------------------------------------------------------
114
- prose ("Our story") — a short, centred, narrow column
92
+ prose: running text, and the centred welcome an editor asks for.
115
93
  -------------------------------------------------------------------------- */
116
94
 
117
- .cg-story {
118
- text-align: center;
95
+ .cr-prose__body {
96
+ max-inline-size: var(--cr-measure);
97
+ font-size: var(--cr-text-reading);
98
+ line-height: var(--cr-leading-text);
119
99
  }
120
100
 
121
- .cg-story__body {
122
- max-inline-size: var(--cg-measure-narrow);
123
- margin-inline: auto;
124
- text-align: start;
101
+ @media (min-width: 64rem) {
102
+ .cr-prose__body {
103
+ grid-column: 3 / span 7;
104
+ }
125
105
  }
126
106
 
127
- .cg-story__body p {
128
- margin: 0 0 var(--cg-s5);
107
+ .cr-prose__body > * {
108
+ margin: 0;
129
109
  }
130
110
 
131
- .cg-story__body :is(h2, h3, h4) {
132
- margin-block: var(--cg-s8) var(--cg-s4);
111
+ .cr-prose__body > * + * {
112
+ margin-block-start: 1.1em;
133
113
  }
134
114
 
135
- .cg-story__body blockquote {
136
- margin: var(--cg-s6) 0;
137
- padding-inline-start: var(--cg-s5);
138
- border-inline-start: 2px solid var(--cg-accent);
139
- font-style: italic;
115
+ .cr-prose__body :where(h2) {
116
+ margin-block-start: var(--cr-s16);
117
+ font-size: var(--cr-text-3xl);
118
+ font-weight: var(--cr-weight-light);
119
+ line-height: var(--cr-leading-heading);
120
+ letter-spacing: var(--cr-tracking-display);
140
121
  }
141
122
 
142
- .cg-prose__figure {
143
- margin: var(--cg-s6) 0;
123
+ .cr-prose__body :where(h3) {
124
+ margin-block-start: var(--cr-s10);
125
+ font-size: var(--cr-text-xl);
126
+ font-weight: var(--cr-weight-semibold);
144
127
  }
145
128
 
146
- .cg-prose__figure figcaption {
147
- margin-block-start: var(--cg-s2);
148
- font-size: var(--cg-text-sm);
149
- color: var(--cg-ink-muted);
129
+ .cr-prose__body :where(h4, h5, h6) {
130
+ margin-block-start: var(--cr-s8);
131
+ font-size: var(--cr-text-lg);
132
+ font-weight: var(--cr-weight-semibold);
150
133
  }
151
134
 
152
- .cg-prose__rule {
153
- block-size: 1px;
154
- border: 0;
155
- margin-block: var(--cg-s8);
156
- background: var(--cg-line);
135
+ .cr-prose__body > :first-child {
136
+ margin-block-start: 0;
157
137
  }
158
138
 
159
- /* --------------------------------------------------------------------------
160
- collectionList — "The menu", grouped by category, priced with a leader
161
- -------------------------------------------------------------------------- */
162
-
163
- .cg-menu__groups {
164
- display: grid;
165
- gap: var(--cg-s16);
166
- grid-template-columns: 1fr;
139
+ .cr-prose__body :where(h2, h3, h4, h5, h6) + * {
140
+ margin-block-start: 0.7em;
167
141
  }
168
142
 
169
- @media (min-width: 80rem) {
170
- .cg-menu__groups {
171
- grid-template-columns: 1fr 1fr;
172
- column-gap: var(--cg-s20);
173
- }
143
+ .cr-prose__body a {
144
+ text-decoration-color: var(--cr-brass);
174
145
  }
175
146
 
176
- .cg-menu__group-title {
177
- margin: 0 0 var(--cg-s6);
178
- font-size: var(--cg-text-lg);
179
- text-align: center;
180
- letter-spacing: var(--cg-tracking-caps);
181
- text-transform: uppercase;
182
- font-family: var(--cogenta-font-sans);
183
- font-weight: var(--cg-weight-medium);
184
- color: var(--cg-accent);
147
+ .cr-prose__body a:hover {
148
+ text-decoration-color: currentColor;
185
149
  }
186
150
 
187
- .cg-menu__group + .cg-menu__group {
188
- padding-block-start: var(--cg-s10);
189
- border-block-start: 1px solid var(--cg-line-soft);
151
+ .cr-prose__body :where(ul, ol) {
152
+ padding-inline-start: 1.2em;
190
153
  }
191
154
 
192
- @media (min-width: 80rem) {
193
- .cg-menu__group + .cg-menu__group {
194
- border-block-start: 0;
195
- padding-block-start: 0;
196
- }
197
- }
198
-
199
- .cg-menu__dish {
200
- display: flex;
201
- gap: var(--cg-s4);
202
- padding-block: var(--cg-s5);
203
- }
204
-
205
- .cg-menu__dish + .cg-menu__dish {
206
- border-block-start: 1px dotted var(--cg-line);
155
+ .cr-prose__body :where(li) + li {
156
+ margin-block-start: 0.4em;
207
157
  }
208
158
 
209
- .cg-menu__dish-photo {
210
- flex: 0 0 auto;
159
+ .cr-prose__body :where(li)::marker {
160
+ color: var(--cr-ink-subtle);
211
161
  }
212
162
 
213
- .cg-menu__dish-image {
214
- inline-size: 5rem;
215
- block-size: 5rem;
216
- border-radius: var(--cg-radius-md);
217
- }
218
-
219
- .cg-menu__dish-body {
220
- flex: 1 1 auto;
221
- min-inline-size: 0;
222
- }
223
-
224
- .cg-menu__dish-row {
225
- display: flex;
226
- flex-wrap: wrap;
227
- align-items: baseline;
228
- gap: var(--cg-s2);
163
+ .cr-prose__body :where(blockquote) {
164
+ margin-inline: 0;
165
+ padding-inline-start: var(--cr-s6);
166
+ border-inline-start: var(--cr-rule) solid var(--cr-line-ink);
167
+ font-family: var(--cr-font-display);
168
+ font-size: var(--cr-text-xl);
169
+ font-style: italic;
170
+ line-height: var(--cr-leading-lead);
229
171
  }
230
172
 
231
- .cg-menu__dish-name {
173
+ .cr-prose__body :where(blockquote p) {
232
174
  margin: 0;
233
- /* Shrinkable and free to wrap: a real, human-entered dish name has no
234
- length limit, and on a narrow screen it must break onto a second line
235
- — or shrink to make room for its leader and price — rather than force
236
- the whole row (and the page) wider than the viewport, which `nowrap`
237
- plus a non-shrinking basis did below ~400px. */
238
- flex: 1 1 auto;
239
- min-inline-size: 0;
240
- font-size: var(--cg-text-lg);
241
- font-weight: var(--cg-weight-regular);
242
175
  }
243
176
 
244
- /*
245
- * The leader and its price move as one unit (`collection-list.ts` nests
246
- * both in a single `<span>`): on a name too long to share its line, the
247
- * dots must wrap down *with* the price they point to, never left dangling
248
- * at the end of the name's own line while the price they introduce sits
249
- * stranded below on a line of its own.
250
- */
251
- .cg-menu__dish-tail {
252
- display: flex;
253
- align-items: baseline;
254
- gap: var(--cg-s2);
255
- flex: 0 1 auto;
256
- min-inline-size: 5rem;
177
+ .cr-prose__body :where(strong) {
178
+ font-weight: var(--cr-weight-semibold);
257
179
  }
258
180
 
259
- .cg-menu__dish-leader {
260
- flex: 1 1 auto;
261
- block-size: 0;
262
- border-block-end: 1px dotted var(--cg-line-strong);
263
- margin-block-end: 0.35em;
264
- min-inline-size: var(--cg-s5);
181
+ .cg-prose__figure {
182
+ margin-block: var(--cr-s10);
183
+ margin-inline: 0;
265
184
  }
266
185
 
267
- .cg-menu__dish-price {
268
- flex: 0 0 auto;
269
- font-family: var(--cogenta-font-sans);
270
- font-weight: var(--cg-weight-medium);
271
- color: var(--cg-accent);
272
- white-space: nowrap;
186
+ .cg-prose__figure img {
187
+ inline-size: 100%;
188
+ background: var(--cr-plate);
273
189
  }
274
190
 
275
- .cg-menu__dish-description {
276
- margin: var(--cg-s1) 0 0;
277
- font-style: italic;
278
- color: var(--cg-ink-muted);
279
- font-size: var(--cg-text-sm);
191
+ .cg-prose__figure figcaption {
192
+ margin-block-start: var(--cr-s3);
193
+ color: var(--cr-ink-muted);
194
+ font-size: var(--cr-text-caption);
280
195
  }
281
196
 
282
- .cg-menu__empty {
197
+ .cg-prose__rule {
198
+ margin-block: var(--cr-s12);
199
+ }
200
+
201
+ /* The welcome: a prose block whose `align` variant is `center`. A few
202
+ sentences in the display serif, centred on the page, the only centred
203
+ text block of the theme. */
204
+ [data-block="prose"][data-variant-align="center"] .cr-prose__body {
205
+ grid-column: 1 / -1;
206
+ justify-self: center;
207
+ max-inline-size: 34ch;
208
+ font-family: var(--cr-font-display);
209
+ font-size: var(--cr-size-welcome);
210
+ font-weight: var(--cr-weight-regular);
211
+ line-height: 1.32;
283
212
  text-align: center;
284
- color: var(--cg-ink-muted);
213
+ text-wrap: balance;
214
+ }
215
+
216
+ [data-block="prose"][data-variant-align="center"] .cr-prose__body > * + * {
217
+ margin-block-start: 0.8em;
285
218
  }
286
219
 
287
220
  /* --------------------------------------------------------------------------
288
- gallery — grid / carousel / masonry, no JavaScript
221
+ mediaFigure
289
222
  -------------------------------------------------------------------------- */
290
223
 
291
- .cg-gallery__item {
292
- border-radius: var(--cg-radius-md);
224
+ .cr-figure__frame {
293
225
  overflow: hidden;
226
+ background: var(--cr-plate);
294
227
  }
295
228
 
296
- .cg-gallery__item img {
297
- aspect-ratio: 4 / 3;
229
+ .cr-figure__image {
298
230
  inline-size: 100%;
231
+ block-size: 100%;
299
232
  object-fit: cover;
300
- transition: transform var(--cg-duration-slow) var(--cg-ease);
301
233
  }
302
234
 
303
- .cg-gallery__item:hover img {
304
- transform: scale(1.03);
305
- }
306
-
307
- .cg-gallery[data-layout="grid"] .cg-gallery__items {
235
+ .cr-figure__caption {
308
236
  display: grid;
309
- gap: var(--cg-s4);
310
- grid-template-columns: repeat(2, 1fr);
237
+ gap: var(--cr-s2);
238
+ margin-block-start: var(--cr-s4);
311
239
  }
312
240
 
313
- @media (min-width: 48rem) {
314
- .cg-gallery[data-layout="grid"] .cg-gallery__items {
315
- grid-template-columns: repeat(3, 1fr);
316
- }
241
+ .cr-figure__text {
242
+ max-inline-size: 60ch;
243
+ color: var(--cr-ink-muted);
244
+ font-size: var(--cr-text-caption);
317
245
  }
318
246
 
319
- .cg-gallery[data-layout="carousel"] .cg-gallery__items {
320
- display: flex;
321
- gap: var(--cg-s4);
247
+ .cr-figure__credit {
248
+ color: var(--cr-ink-subtle);
249
+ font-size: var(--cr-text-sm);
322
250
  }
323
251
 
324
- .cg-gallery[data-layout="carousel"] .cg-gallery__item {
325
- flex: 0 0 auto;
326
- inline-size: 16rem;
327
- scroll-snap-align: start;
252
+ .cr-figure[data-align="full"] > .cr-container {
253
+ max-inline-size: none;
254
+ padding-inline: 0;
328
255
  }
329
256
 
330
- /* True masonry, no JavaScript: a multi-column flow, each tile forbidden
331
- from breaking across a column so the effect reads as a real masonry wall
332
- rather than a grid with gaps. */
333
- .cg-gallery[data-layout="masonry"] .cg-gallery__items {
334
- column-count: 2;
335
- column-gap: var(--cg-s4);
257
+ .cr-figure[data-align="full"] .cr-figure__caption {
258
+ padding-inline: var(--cr-gutter);
336
259
  }
337
260
 
338
- @media (min-width: 48rem) {
339
- .cg-gallery[data-layout="masonry"] .cg-gallery__items {
340
- column-count: 3;
261
+ @media (min-width: 64rem) {
262
+ .cr-figure[data-align="center"] .cr-figure__frame,
263
+ .cr-figure[data-align="center"] .cr-figure__caption {
264
+ grid-column: 3 / span 8;
341
265
  }
342
- }
343
266
 
344
- .cg-gallery[data-layout="masonry"] .cg-gallery__item {
345
- margin-block-end: var(--cg-s4);
346
- break-inside: avoid;
347
- }
267
+ .cr-figure[data-layout="split"] .cr-figure__inner {
268
+ align-items: end;
269
+ }
270
+
271
+ .cr-figure[data-layout="split"] .cr-figure__frame {
272
+ grid-column: 1 / span 7;
273
+ grid-row: 1;
274
+ }
275
+
276
+ .cr-figure[data-layout="split"] .cr-figure__caption {
277
+ grid-column: 9 / span 4;
278
+ grid-row: 1;
279
+ margin: 0;
280
+ }
281
+
282
+ .cr-figure[data-align="end"] .cr-figure__frame {
283
+ grid-column: 6 / span 7;
284
+ }
348
285
 
349
- .cg-gallery[data-layout="masonry"] .cg-gallery__item img {
350
- aspect-ratio: auto;
286
+ .cr-figure[data-align="end"] .cr-figure__caption {
287
+ grid-column: 1 / span 4;
288
+ }
289
+
290
+ .cr-figure[data-layout="split"] .cr-figure__text {
291
+ color: var(--cr-ink);
292
+ font-family: var(--cr-font-display);
293
+ font-size: var(--cr-size-lead);
294
+ font-style: italic;
295
+ line-height: var(--cr-leading-lead);
296
+ }
351
297
  }
352
298
 
353
299
  /* --------------------------------------------------------------------------
354
- stats ("Since 1994 · 3 chefs · 120 seats")
300
+ featureGrid, as a ruled table and as ruled columns
355
301
  -------------------------------------------------------------------------- */
356
302
 
357
- .cg-figures__items {
358
- display: flex;
359
- flex-wrap: wrap;
360
- justify-content: center;
361
- gap: 0;
303
+ .cr-table__rows {
362
304
  margin: 0;
363
305
  padding: 0;
306
+ list-style: none;
307
+ border-block-start: var(--cr-rule) solid var(--cr-line-ink);
364
308
  }
365
309
 
366
- .cg-figures__item {
367
- display: flex;
368
- flex-direction: column;
369
- align-items: center;
370
- gap: var(--cg-s2);
371
- padding-inline: var(--cg-s8);
372
- text-align: center;
310
+ .cr-table__row {
311
+ display: grid;
312
+ gap: var(--cr-s2) var(--cr-col-gap);
313
+ padding-block: var(--cr-s5);
314
+ border-block-end: var(--cr-rule) solid var(--cr-line);
373
315
  }
374
316
 
375
- .cg-figures__item + .cg-figures__item {
376
- border-inline-start: 1px solid var(--cg-line-soft);
317
+ .cr-table__label {
318
+ font-size: var(--cr-size-dish-name);
319
+ font-weight: var(--cr-weight-semibold);
320
+ line-height: 1.25;
377
321
  }
378
322
 
379
- .cg-figures__value {
323
+ .cr-table__text {
380
324
  margin: 0;
381
- font-family: var(--cogenta-font-serif);
382
- font-size: var(--cg-text-3xl);
383
- font-weight: var(--cg-weight-light);
384
- color: var(--cg-accent);
325
+ max-inline-size: 52ch;
326
+ color: var(--cr-ink-muted);
385
327
  }
386
328
 
387
- .cg-figures__unit {
388
- margin-inline-start: 0.15em;
389
- font-size: 0.6em;
329
+ .cr-table__value-link {
330
+ color: inherit;
331
+ text-decoration-color: var(--cr-line-strong);
332
+ }
333
+
334
+ .cr-table__value-link:hover {
335
+ color: var(--cr-ink);
336
+ text-decoration-color: currentColor;
390
337
  }
391
338
 
392
- .cg-figures__label {
339
+ @media (min-width: 40rem) {
340
+ .cr-table__row {
341
+ grid-template-columns: minmax(9rem, 1fr) minmax(0, 2.4fr);
342
+ align-items: baseline;
343
+ }
344
+ }
345
+
346
+ @media (min-width: 64rem) {
347
+ .cr-table[data-titled="true"] .cr-head {
348
+ grid-column: 1 / span 4;
349
+ grid-row: 1;
350
+ }
351
+
352
+ .cr-table[data-titled="true"] .cr-table__rows {
353
+ grid-column: 5 / span 8;
354
+ grid-row: 1;
355
+ }
356
+
357
+ .cr-table[data-titled="false"] .cr-table__rows {
358
+ grid-column: 3 / span 8;
359
+ }
360
+
361
+ .cr-table .cr-head__title {
362
+ max-inline-size: 12ch;
363
+ }
364
+ }
365
+
366
+ .cr-columns__items {
367
+ display: grid;
368
+ gap: var(--cr-s10) var(--cr-col-gap);
393
369
  margin: 0;
394
- font-size: var(--cg-text-xs);
395
- letter-spacing: var(--cg-tracking-caps);
396
- text-transform: uppercase;
397
- color: var(--cg-ink-muted);
370
+ padding: 0;
371
+ list-style: none;
398
372
  }
399
373
 
400
- /* --------------------------------------------------------------------------
401
- testimonial — a guestbook quotation
402
- -------------------------------------------------------------------------- */
374
+ @media (min-width: 40rem) {
375
+ .cr-columns__items {
376
+ grid-template-columns: repeat(2, minmax(0, 1fr));
377
+ }
378
+ }
403
379
 
404
- .cg-testimonial {
405
- max-inline-size: var(--cg-page-narrow);
406
- margin-inline: auto;
407
- text-align: center;
380
+ @media (min-width: 64rem) {
381
+ .cr-columns[data-count="3"] .cr-columns__items {
382
+ grid-template-columns: repeat(3, minmax(0, 1fr));
383
+ }
384
+
385
+ .cr-columns[data-count="4"] .cr-columns__items {
386
+ grid-template-columns: repeat(4, minmax(0, 1fr));
387
+ }
408
388
  }
409
389
 
410
- .cg-testimonial__quote {
411
- margin: 0 0 var(--cg-s6);
412
- font-family: var(--cogenta-font-serif);
413
- font-size: var(--cg-text-xl);
414
- font-style: italic;
415
- line-height: var(--cg-leading-snug);
390
+ .cr-columns__item {
391
+ padding-block-start: var(--cr-s5);
392
+ border-block-start: var(--cr-rule) solid var(--cr-line-ink);
416
393
  }
417
394
 
418
- .cg-testimonial__quote::before {
395
+ .cr-columns__icon {
419
396
  display: block;
420
- margin-block-end: var(--cg-s2);
421
- font-size: var(--cg-text-3xl);
422
- color: var(--cg-accent);
423
- font-family: var(--cogenta-font-serif);
424
- content: "\201C";
397
+ margin-block-end: var(--cr-s5);
398
+ color: var(--cr-ink);
425
399
  }
426
400
 
427
- .cg-testimonial__attribution {
428
- display: flex;
429
- flex-direction: column;
430
- align-items: center;
431
- gap: var(--cg-s2);
401
+ .cr-columns__name {
402
+ font-size: var(--cr-text-2xl);
403
+ font-weight: var(--cr-weight-regular);
432
404
  }
433
405
 
434
- .cg-testimonial__avatar {
435
- inline-size: 3.5rem;
436
- block-size: 3.5rem;
437
- border-radius: 50%;
406
+ .cr-columns__text {
407
+ margin: var(--cr-s3) 0 0;
408
+ max-inline-size: 42ch;
409
+ color: var(--cr-ink-muted);
438
410
  }
439
411
 
440
- .cg-testimonial__who {
441
- display: flex;
442
- flex-direction: column;
443
- font-size: var(--cg-text-sm);
412
+ /* --------------------------------------------------------------------------
413
+ cta: a line of the page between a rule and the space after it.
414
+ -------------------------------------------------------------------------- */
415
+
416
+ .cr-cta__inner {
417
+ row-gap: var(--cr-s6);
418
+ }
419
+
420
+ /* The rule is a grid item across the columns, so it stops at the gutters
421
+ like the words under it instead of running to the edges of the window. */
422
+ .cr-cta__inner::before {
423
+ content: "";
424
+ grid-column: 1 / -1;
425
+ block-size: var(--cr-rule);
426
+ margin-block-end: var(--cr-s4);
427
+ background: var(--cr-line-ink);
428
+ }
429
+
430
+ /* On a band the change of ground already marks the start. */
431
+ [data-variant-background] > .cr-cta__inner::before {
432
+ content: none;
444
433
  }
445
434
 
446
- .cg-testimonial__name {
447
- font-weight: var(--cg-weight-medium);
435
+ .cr-cta__title {
436
+ max-inline-size: 18ch;
437
+ font-size: var(--cr-size-section);
438
+ font-weight: var(--cr-weight-light);
439
+ line-height: var(--cr-leading-heading);
440
+ letter-spacing: var(--cr-tracking-display);
448
441
  }
449
442
 
450
- .cg-testimonial__role {
451
- color: var(--cg-ink-muted);
443
+ .cr-cta__body {
444
+ display: grid;
445
+ gap: var(--cr-s5);
446
+ justify-items: start;
447
+ }
448
+
449
+ .cr-cta__text {
450
+ margin: 0;
451
+ max-inline-size: 40ch;
452
+ color: var(--cr-ink-muted);
453
+ font-size: var(--cr-text-lg);
454
+ line-height: var(--cr-leading-lead);
455
+ }
456
+
457
+ @media (min-width: 64rem) {
458
+ .cr-cta__title {
459
+ grid-column: 1 / span 7;
460
+ }
461
+
462
+ .cr-cta__body {
463
+ grid-column: 9 / span 4;
464
+ padding-block-start: 0.6em;
465
+ }
452
466
  }
453
467
 
454
468
  /* --------------------------------------------------------------------------
455
- accordion ("Hours & location")
469
+ gallery
456
470
  -------------------------------------------------------------------------- */
457
471
 
458
- .cg-hours {
459
- max-inline-size: var(--cg-page-narrow);
460
- margin-inline: auto;
472
+ .cr-gallery__items {
473
+ margin: 0;
474
+ padding: 0;
475
+ list-style: none;
461
476
  }
462
477
 
463
- .cg-hours__item + .cg-hours__item {
464
- border-block-start: 1px solid var(--cg-line-soft);
478
+ .cr-gallery__item {
479
+ background: var(--cr-plate);
465
480
  }
466
481
 
467
- .cg-hours__details {
468
- padding-block: var(--cg-s2);
482
+ .cr-gallery__image {
483
+ inline-size: 100%;
484
+ object-fit: cover;
469
485
  }
470
486
 
471
- .cg-hours__question {
472
- display: flex;
473
- align-items: center;
474
- justify-content: space-between;
475
- gap: var(--cg-s4);
476
- padding-block: var(--cg-s4);
477
- cursor: pointer;
478
- list-style: none;
479
- font-size: var(--cg-text-lg);
487
+ .cr-gallery[data-layout="grid"] .cr-gallery__items {
488
+ display: grid;
489
+ grid-template-columns: repeat(2, minmax(0, 1fr));
490
+ gap: var(--cr-col-gap);
480
491
  }
481
492
 
482
- .cg-hours__question::-webkit-details-marker {
483
- display: none;
493
+ .cr-gallery[data-layout="grid"][data-columns="1"] .cr-gallery__items {
494
+ grid-template-columns: minmax(0, 1fr);
484
495
  }
485
496
 
486
- .cg-hours__question-text {
487
- font-family: var(--cogenta-font-serif);
497
+ .cr-gallery[data-layout="grid"] .cr-gallery__image {
498
+ aspect-ratio: 4 / 5;
488
499
  }
489
500
 
490
- .cg-hours__mark {
491
- position: relative;
492
- flex: 0 0 auto;
493
- inline-size: 0.9rem;
494
- block-size: 0.9rem;
501
+ @media (min-width: 64rem) {
502
+ .cr-gallery[data-layout="grid"][data-columns="3"] .cr-gallery__items {
503
+ grid-template-columns: repeat(3, minmax(0, 1fr));
504
+ }
505
+
506
+ .cr-gallery[data-layout="grid"][data-columns="4"] .cr-gallery__items {
507
+ grid-template-columns: repeat(4, minmax(0, 1fr));
508
+ }
495
509
  }
496
510
 
497
- .cg-hours__mark::before,
498
- .cg-hours__mark::after {
499
- position: absolute;
500
- inset: 0;
501
- margin: auto;
502
- inline-size: 100%;
503
- block-size: 1px;
504
- background: currentColor;
505
- content: "";
511
+ .cr-gallery[data-layout="masonry"] .cr-gallery__items {
512
+ columns: 2;
513
+ column-gap: var(--cr-col-gap);
506
514
  }
507
515
 
508
- .cg-hours__mark::after {
509
- transform: rotate(90deg);
510
- transition: transform var(--cg-duration) var(--cg-ease);
516
+ .cr-gallery[data-layout="masonry"] .cr-gallery__item {
517
+ margin-block-end: var(--cr-col-gap);
518
+ break-inside: avoid;
511
519
  }
512
520
 
513
- .cg-hours__details[open] .cg-hours__mark::after {
514
- transform: rotate(0deg);
521
+ @media (min-width: 64rem) {
522
+ .cr-gallery[data-layout="masonry"] .cr-gallery__items {
523
+ columns: 3;
524
+ }
515
525
  }
516
526
 
517
- .cg-hours__answer {
518
- padding-block-end: var(--cg-s5);
519
- color: var(--cg-ink-muted);
527
+ .cr-gallery__viewport {
528
+ overflow-x: auto;
529
+ overscroll-behavior-x: contain;
530
+ scroll-snap-type: x mandatory;
531
+ scrollbar-width: thin;
532
+ padding-block-end: var(--cr-s4);
520
533
  }
521
534
 
522
- .cg-hours__answer table {
523
- width: 100%;
524
- border-collapse: collapse;
535
+ .cr-gallery[data-layout="carousel"] .cr-gallery__items {
536
+ display: grid;
537
+ grid-auto-flow: column;
538
+ grid-auto-columns: 72%;
539
+ gap: var(--cr-col-gap);
525
540
  }
526
541
 
527
- .cg-hours__answer td,
528
- .cg-hours__answer th {
529
- padding: var(--cg-s2) var(--cg-s3);
530
- border-block-end: 1px solid var(--cg-line-soft);
531
- text-align: start;
542
+ @media (min-width: 40rem) {
543
+ .cr-gallery[data-layout="carousel"] .cr-gallery__items {
544
+ grid-auto-columns: calc((100% - var(--cr-col-gap) * 2) / 3);
545
+ }
532
546
  }
533
547
 
534
- /* --------------------------------------------------------------------------
535
- embed — the map placeholder card
536
- -------------------------------------------------------------------------- */
548
+ @media (min-width: 64rem) {
549
+ .cr-gallery[data-layout="carousel"] .cr-gallery__items {
550
+ grid-auto-columns: calc((100% - var(--cr-col-gap) * 3) / 4);
551
+ }
552
+ }
537
553
 
538
- .cg-embed {
539
- position: relative;
540
- max-inline-size: var(--cg-page-narrow);
541
- margin-inline: auto;
542
- aspect-ratio: var(--cg-ratio, 16 / 9);
543
- border-radius: var(--cg-radius-md);
544
- overflow: hidden;
545
- box-shadow: var(--cg-ring);
554
+ .cr-gallery[data-layout="carousel"] .cr-gallery__item {
555
+ scroll-snap-align: start;
546
556
  }
547
557
 
548
- .cg-embed__frame {
549
- position: absolute;
550
- inset: 0;
551
- inline-size: 100%;
552
- block-size: 100%;
553
- border: 0;
558
+ .cr-gallery[data-layout="carousel"] .cr-gallery__image {
559
+ aspect-ratio: 4 / 5;
554
560
  }
555
561
 
556
- .cg-embed__placeholder {
557
- position: absolute;
558
- inset: 0;
559
- display: flex;
560
- flex-direction: column;
561
- align-items: center;
562
- justify-content: center;
563
- gap: var(--cg-s3);
564
- padding: var(--cg-s6);
565
- background: var(--cg-surface-sunken);
566
- text-align: center;
562
+ /* --------------------------------------------------------------------------
563
+ quote: a line from the press.
564
+ -------------------------------------------------------------------------- */
565
+
566
+ .cr-quote__inner {
567
+ margin-block: 0;
568
+ row-gap: var(--cr-s8);
567
569
  }
568
570
 
569
- .cg-embed__provider {
571
+ .cr-quote__quote {
570
572
  margin: 0;
571
- font-size: var(--cg-text-xs);
572
- letter-spacing: var(--cg-tracking-caps);
573
- text-transform: uppercase;
574
- color: var(--cg-ink-subtle);
575
573
  }
576
574
 
577
- .cg-embed__notice {
575
+ .cr-quote__text {
578
576
  margin: 0;
579
- max-inline-size: 28rem;
580
- color: var(--cg-ink-muted);
577
+ max-inline-size: 32ch;
578
+ font-family: var(--cr-font-display);
579
+ font-size: var(--cr-size-quote);
580
+ font-weight: var(--cr-weight-light);
581
+ line-height: 1.22;
582
+ letter-spacing: var(--cr-tracking-heading);
583
+ quotes: "\201C" "\201D";
584
+ text-wrap: balance;
581
585
  }
582
586
 
583
- .cg-embed__link {
584
- font-weight: var(--cg-weight-medium);
587
+ .cr-quote__text::before {
588
+ content: open-quote;
585
589
  }
586
590
 
587
- /* --------------------------------------------------------------------------
588
- cta ("Book now / Call us") — full-bleed closing band
589
- -------------------------------------------------------------------------- */
591
+ .cr-quote__text::after {
592
+ content: close-quote;
593
+ }
590
594
 
591
- .cg-close {
595
+ .cr-quote__attribution {
592
596
  display: flex;
593
- flex-direction: column;
594
597
  align-items: center;
595
- gap: var(--cg-s5);
596
- padding: var(--cg-s20) var(--cg-gutter);
597
- background: var(--cg-ink);
598
- color: var(--cg-canvas);
599
- text-align: center;
598
+ gap: var(--cr-s4);
600
599
  }
601
600
 
602
- .cg-close__title {
603
- color: inherit;
604
- font-size: var(--cg-text-2xl);
601
+ .cr-quote__avatar {
602
+ inline-size: 3rem;
603
+ block-size: 3rem;
604
+ object-fit: cover;
605
605
  }
606
606
 
607
- .cg-close__text {
608
- margin: 0;
609
- max-inline-size: 36rem;
610
- opacity: 0.9;
607
+ .cr-quote__who {
608
+ display: grid;
609
+ gap: 0.15em;
610
+ padding-inline-start: var(--cr-s4);
611
+ border-inline-start: var(--cr-rule) solid var(--cr-line-ink);
611
612
  }
612
613
 
613
- .cg-close .cg-actions {
614
- justify-content: center;
614
+ .cr-quote__author {
615
+ font-size: var(--cr-text-md);
616
+ font-weight: var(--cr-weight-medium);
615
617
  }
616
618
 
617
- .cg-close .cg-action[data-emphasis="secondary"] {
618
- border-color: color-mix(in oklab, var(--cg-canvas) 40%, transparent);
619
- color: var(--cg-canvas);
619
+ .cr-quote__role {
620
+ color: var(--cr-ink-muted);
621
+ font-family: var(--cr-font-display);
622
+ font-size: var(--cr-text-lg);
623
+ font-style: italic;
620
624
  }
621
625
 
622
- .cg-close .cg-action[data-emphasis="secondary"]:hover {
623
- border-color: var(--cg-canvas);
624
- color: var(--cg-canvas);
626
+ @media (min-width: 64rem) {
627
+ .cr-quote__quote,
628
+ .cr-quote__attribution {
629
+ grid-column: 2 / span 10;
630
+ }
631
+
632
+ /* The opening quotation mark hangs in the margin, so the words align. */
633
+ .cr-quote__text {
634
+ text-indent: -0.42em;
635
+ }
625
636
  }
626
637
 
627
638
  /* --------------------------------------------------------------------------
628
- mediaFigure
639
+ testimonial: a guest's note.
629
640
  -------------------------------------------------------------------------- */
630
641
 
631
- .cg-plate {
642
+ .cr-note__inner {
643
+ margin-block: 0;
644
+ row-gap: var(--cr-s5);
645
+ }
646
+
647
+ .cr-note__quote {
632
648
  margin: 0;
649
+ max-inline-size: 44ch;
650
+ font-family: var(--cr-font-display);
651
+ font-size: var(--cr-size-lead);
652
+ font-style: italic;
653
+ line-height: var(--cr-leading-lead);
633
654
  }
634
655
 
635
- .cg-plate__frame {
636
- overflow: hidden;
637
- border-radius: var(--cg-radius-md);
638
- box-shadow: var(--cg-ring);
639
- aspect-ratio: var(--cg-ratio, auto);
656
+ .cr-note__quote p {
657
+ margin: 0;
640
658
  }
641
659
 
642
- .cg-plate__media {
643
- inline-size: 100%;
644
- block-size: 100%;
645
- object-fit: cover;
660
+ .cr-note__quote p + p {
661
+ margin-block-start: 0.7em;
646
662
  }
647
663
 
648
- .cg-plate__caption {
649
- margin-block-start: var(--cg-s3);
650
- font-size: var(--cg-text-sm);
651
- font-style: italic;
652
- color: var(--cg-ink-muted);
653
- text-align: center;
664
+ .cr-note__attribution {
665
+ display: flex;
666
+ align-items: center;
667
+ gap: var(--cr-s4);
654
668
  }
655
669
 
656
- .cg-plate__credit {
657
- display: block;
658
- font-style: normal;
659
- font-size: var(--cg-text-xs);
660
- color: var(--cg-ink-subtle);
670
+ .cr-note__avatar {
671
+ inline-size: 3.5rem;
672
+ block-size: 3.5rem;
673
+ object-fit: cover;
661
674
  }
662
675
 
663
- .cg-plate[data-align="wide"] {
664
- max-inline-size: none;
676
+ .cr-note__who {
677
+ display: grid;
678
+ gap: 0.1em;
665
679
  }
666
680
 
667
- .cg-plate[data-align="full"] {
668
- max-inline-size: none;
669
- margin-inline: calc(var(--cg-gutter) * -1);
681
+ .cr-note__name {
682
+ font-weight: var(--cr-weight-medium);
683
+ }
684
+
685
+ .cr-note__role {
686
+ color: var(--cr-ink-muted);
687
+ font-size: var(--cr-text-caption);
670
688
  }
671
689
 
672
- .cg-plate[data-align="full"] .cg-plate__frame {
673
- border-radius: 0;
690
+ @media (min-width: 64rem) {
691
+ .cr-note__quote,
692
+ .cr-note__attribution {
693
+ grid-column: 4 / span 7;
694
+ }
674
695
  }
675
696
 
676
697
  /* --------------------------------------------------------------------------
677
- featureGrid — "How we cook"
698
+ faq and accordion
678
699
  -------------------------------------------------------------------------- */
679
700
 
680
- .cg-craft__items {
681
- display: grid;
682
- gap: var(--cg-s10);
683
- grid-template-columns: 1fr;
684
- text-align: center;
701
+ .cr-answers__items {
702
+ margin: 0;
703
+ padding: 0;
704
+ list-style: none;
705
+ border-block-start: var(--cr-rule) solid var(--cr-line-ink);
685
706
  }
686
707
 
687
- @media (min-width: 48rem) {
688
- .cg-craft__items {
689
- grid-template-columns: repeat(3, 1fr);
690
- }
708
+ .cr-answers__item {
709
+ border-block-end: var(--cr-rule) solid var(--cr-line);
691
710
  }
692
711
 
693
- .cg-craft__mark {
694
- display: inline-flex;
712
+ .cr-answers__summary {
713
+ display: flex;
695
714
  align-items: center;
696
- justify-content: center;
697
- inline-size: 3rem;
698
- block-size: 3rem;
699
- margin-block-end: var(--cg-s4);
700
- border: 1px solid var(--cg-line-strong);
701
- border-radius: 50%;
702
- color: var(--cg-accent);
715
+ justify-content: space-between;
716
+ gap: var(--cr-s6);
717
+ padding-block: var(--cr-s5);
718
+ cursor: pointer;
719
+ list-style: none;
703
720
  }
704
721
 
705
- .cg-craft__glyph {
706
- inline-size: 1.4rem;
707
- block-size: 1.4rem;
722
+ .cr-answers__summary::-webkit-details-marker {
723
+ display: none;
708
724
  }
709
725
 
710
- .cg-craft__title {
711
- margin: 0 0 var(--cg-s2);
712
- font-size: var(--cg-text-lg);
713
- font-weight: var(--cg-weight-regular);
726
+ .cr-answers__question {
727
+ font-size: var(--cr-size-dish-name);
728
+ font-weight: var(--cr-weight-semibold);
729
+ line-height: 1.25;
714
730
  }
715
731
 
716
- .cg-craft__link {
717
- color: inherit;
732
+ .cr-answers__summary:hover .cr-answers__question {
733
+ text-decoration-line: underline;
734
+ text-decoration-thickness: var(--cr-rule);
735
+ text-underline-offset: 0.2em;
718
736
  }
719
737
 
720
- .cg-craft__text {
721
- margin: 0;
722
- color: var(--cg-ink-muted);
738
+ /* A plus of two hairlines; open, the vertical one is hidden. */
739
+ .cr-answers__mark {
740
+ position: relative;
741
+ flex: none;
742
+ inline-size: 0.9rem;
743
+ block-size: 0.9rem;
723
744
  }
724
745
 
725
- /* --------------------------------------------------------------------------
726
- quote — the menu-insert pull-quote
727
- -------------------------------------------------------------------------- */
746
+ .cr-answers__mark::before,
747
+ .cr-answers__mark::after {
748
+ content: "";
749
+ position: absolute;
750
+ background: var(--cr-ink);
751
+ }
728
752
 
729
- .cg-line {
730
- max-inline-size: var(--cg-page-narrow);
731
- margin-inline: auto;
732
- text-align: center;
753
+ .cr-answers__mark::before {
754
+ inset: calc(50% - 0.5px) 0 auto;
755
+ block-size: 1px;
733
756
  }
734
757
 
735
- .cg-line__text {
736
- margin: 0 0 var(--cg-s4);
737
- font-family: var(--cogenta-font-serif);
738
- font-size: var(--cg-text-xl);
739
- font-style: italic;
758
+ .cr-answers__mark::after {
759
+ inset: 0 auto 0 calc(50% - 0.5px);
760
+ inline-size: 1px;
740
761
  }
741
762
 
742
- .cg-line__attribution {
743
- display: flex;
744
- flex-direction: column;
745
- align-items: center;
746
- gap: var(--cg-s2);
763
+ .cr-answers__details[open] .cr-answers__mark::after {
764
+ display: none;
747
765
  }
748
766
 
749
- .cg-line__avatar {
750
- inline-size: 3rem;
751
- block-size: 3rem;
752
- border-radius: 50%;
767
+ .cr-answers__answer {
768
+ max-inline-size: 60ch;
769
+ padding-block-end: var(--cr-s6);
770
+ color: var(--cr-ink-muted);
753
771
  }
754
772
 
755
- .cg-line__who {
756
- display: flex;
757
- flex-direction: column;
758
- font-size: var(--cg-text-sm);
773
+ .cr-answers__answer > * {
774
+ margin: 0;
759
775
  }
760
776
 
761
- .cg-line__author {
762
- font-weight: var(--cg-weight-medium);
777
+ .cr-answers__answer > * + * {
778
+ margin-block-start: 0.8em;
763
779
  }
764
780
 
765
- .cg-line__role {
766
- color: var(--cg-ink-muted);
781
+ @media (min-width: 64rem) {
782
+ .cr-answers[data-titled="true"]:not([data-variant="notes"]) .cr-head {
783
+ grid-column: 1 / span 4;
784
+ grid-row: 1;
785
+ }
786
+
787
+ .cr-answers[data-titled="true"]:not([data-variant="notes"]) .cr-answers__items {
788
+ grid-column: 5 / span 8;
789
+ grid-row: 1;
790
+ }
791
+
792
+ .cr-answers[data-titled="false"] .cr-answers__items,
793
+ .cr-answers[data-variant="notes"] .cr-head,
794
+ .cr-answers[data-variant="notes"] .cr-answers__items {
795
+ grid-column: 3 / span 8;
796
+ }
797
+
798
+ .cr-answers .cr-head__title {
799
+ max-inline-size: 12ch;
800
+ }
801
+
802
+ .cr-answers[data-variant="notes"] .cr-head__title {
803
+ max-inline-size: 24ch;
804
+ }
767
805
  }
768
806
 
769
807
  /* --------------------------------------------------------------------------
770
- faq
808
+ stats and statCounter
771
809
  -------------------------------------------------------------------------- */
772
810
 
773
- .cg-faq {
774
- max-inline-size: var(--cg-page-narrow);
775
- margin-inline: auto;
811
+ .cr-figures__items {
812
+ display: grid;
813
+ grid-template-columns: repeat(2, minmax(0, 1fr));
814
+ gap: var(--cr-s10) var(--cr-col-gap);
815
+ margin: 0;
816
+ padding-block-start: var(--cr-s6);
817
+ border-block-start: var(--cr-rule) solid var(--cr-line-ink);
776
818
  }
777
819
 
778
- .cg-faq__item + .cg-faq__item {
779
- border-block-start: 1px solid var(--cg-line-soft);
820
+ .cr-figures[data-count="1"] .cr-figures__items {
821
+ grid-template-columns: minmax(0, 1fr);
780
822
  }
781
823
 
782
- .cg-faq__question {
783
- display: flex;
784
- align-items: baseline;
785
- gap: var(--cg-s4);
786
- padding-block: var(--cg-s4);
787
- cursor: pointer;
788
- list-style: none;
789
- font-size: var(--cg-text-lg);
824
+ @media (min-width: 64rem) {
825
+ .cr-figures[data-count="3"] .cr-figures__items {
826
+ grid-template-columns: repeat(3, minmax(0, 1fr));
827
+ }
828
+
829
+ .cr-figures[data-count="4"] .cr-figures__items {
830
+ grid-template-columns: repeat(4, minmax(0, 1fr));
831
+ }
790
832
  }
791
833
 
792
- .cg-faq__question::-webkit-details-marker {
793
- display: none;
834
+ .cr-figures__item {
835
+ display: flex;
836
+ flex-direction: column-reverse;
837
+ justify-content: flex-end;
838
+ gap: var(--cr-s2);
794
839
  }
795
840
 
796
- .cg-faq__index {
797
- flex: 0 0 auto;
798
- font-family: var(--cogenta-font-serif);
799
- font-style: italic;
800
- color: var(--cg-accent);
841
+ .cr-figures__value {
842
+ margin: 0;
843
+ font-family: var(--cr-font-display);
844
+ font-size: var(--cr-size-figure);
845
+ font-weight: var(--cr-weight-light);
846
+ font-variant-numeric: lining-nums tabular-nums;
847
+ line-height: 1;
848
+ letter-spacing: var(--cr-tracking-display);
801
849
  }
802
850
 
803
- .cg-faq__question-text {
804
- font-family: var(--cogenta-font-serif);
851
+ .cr-figures__unit {
852
+ margin-inline-start: 0.08em;
853
+ font-size: 0.6em;
805
854
  }
806
855
 
807
- .cg-faq__answer {
808
- padding-block-end: var(--cg-s5);
809
- padding-inline-start: calc(var(--cg-s4) + 1.6em);
810
- color: var(--cg-ink-muted);
856
+ .cr-figures__label {
857
+ max-inline-size: 28ch;
858
+ color: var(--cr-ink-muted);
859
+ font-size: var(--cr-text-caption);
811
860
  }
812
861
 
813
862
  /* --------------------------------------------------------------------------
814
- logos — press mentions, held back until hovered
863
+ logos and logoStrip
815
864
  -------------------------------------------------------------------------- */
816
865
 
817
- .cg-press__items {
866
+ .cr-marks__items,
867
+ .cr-strip__items {
818
868
  display: flex;
819
869
  flex-wrap: wrap;
820
- justify-content: center;
821
870
  align-items: center;
822
- gap: var(--cg-s10);
871
+ gap: var(--cr-s6) clamp(var(--cr-s8), 4vw, var(--cr-s16));
872
+ margin: 0;
873
+ padding: 0;
874
+ list-style: none;
823
875
  }
824
876
 
825
- .cg-press__logo {
826
- max-block-size: 2.25rem;
827
- inline-size: auto;
828
- filter: grayscale(1);
829
- opacity: 0.7;
830
- transition:
831
- opacity var(--cg-duration) var(--cg-ease),
832
- filter var(--cg-duration) var(--cg-ease);
877
+ .cr-marks__items {
878
+ padding-block: var(--cr-s8);
879
+ border-block: var(--cr-rule) solid var(--cr-line);
833
880
  }
834
881
 
835
- .cg-press__link:hover .cg-press__logo,
836
- .cg-press__link:focus-visible .cg-press__logo {
837
- filter: none;
838
- opacity: 1;
882
+ .cr-marks__plate {
883
+ display: inline-flex;
884
+ align-items: center;
885
+ padding: var(--cr-s2) var(--cr-s3);
886
+ background: transparent;
839
887
  }
840
888
 
841
- /* --------------------------------------------------------------------------
842
- logoStrip — trust badges, dense single row
843
- -------------------------------------------------------------------------- */
889
+ .cr-marks__image {
890
+ block-size: 2.25rem;
891
+ inline-size: auto;
892
+ max-inline-size: 9rem;
893
+ object-fit: contain;
894
+ filter: none;
895
+ }
844
896
 
845
- .cg-press-strip {
846
- margin: 0;
847
- text-align: center;
897
+ @media (prefers-color-scheme: dark) {
898
+ :where(:root:not([data-theme="light"])) .cr-marks__plate {
899
+ background: var(--cr-mark-plate);
900
+ }
848
901
  }
849
902
 
850
- .cg-press-strip__items {
851
- display: flex;
852
- flex-wrap: wrap;
853
- justify-content: center;
854
- align-items: center;
855
- gap: var(--cg-s8);
903
+ :where(:root[data-theme="dark"]) .cr-marks__plate {
904
+ background: var(--cr-mark-plate);
856
905
  }
857
906
 
858
- .cg-press-strip__image {
859
- max-block-size: 1.75rem;
860
- inline-size: auto;
907
+ .cr-strip__caption {
908
+ margin: 0 0 var(--cr-s5);
909
+ color: var(--cr-ink-muted);
910
+ font-size: var(--cr-text-caption);
861
911
  }
862
912
 
863
- .cg-press-strip__caption {
864
- margin-block-start: var(--cg-s4);
865
- font-size: var(--cg-text-xs);
866
- letter-spacing: var(--cg-tracking-caps);
867
- text-transform: uppercase;
868
- color: var(--cg-ink-subtle);
913
+ @media (min-width: 64rem) {
914
+ .cr-strip[data-captioned="true"] .cr-strip__caption {
915
+ grid-column: 1 / span 3;
916
+ grid-row: 1;
917
+ align-self: center;
918
+ margin: 0;
919
+ }
920
+
921
+ .cr-strip[data-captioned="true"] .cr-strip__items {
922
+ grid-column: 4 / span 9;
923
+ grid-row: 1;
924
+ }
869
925
  }
870
926
 
871
927
  /* --------------------------------------------------------------------------
872
- pricingTable — the set-menu comparison
928
+ pricingTable: set menus in ruled columns.
873
929
  -------------------------------------------------------------------------- */
874
930
 
875
- .cg-set-menu__tiers {
931
+ .cr-set__tiers {
876
932
  display: grid;
877
- gap: var(--cg-s6);
878
- grid-template-columns: 1fr;
933
+ gap: var(--cr-s12) var(--cr-col-gap);
934
+ margin: 0;
935
+ padding: 0;
936
+ list-style: none;
879
937
  }
880
938
 
881
- @media (min-width: 56rem) {
882
- .cg-set-menu__tiers {
883
- grid-template-columns: repeat(3, 1fr);
939
+ @media (min-width: 48rem) {
940
+ .cr-set__tiers {
941
+ grid-template-columns: repeat(2, minmax(0, 1fr));
884
942
  }
885
943
  }
886
944
 
887
- .cg-set-menu__tier {
945
+ @media (min-width: 64rem) {
946
+ .cr-set[data-count="3"] .cr-set__tiers {
947
+ grid-template-columns: repeat(3, minmax(0, 1fr));
948
+ }
949
+
950
+ .cr-set[data-count="4"] .cr-set__tiers {
951
+ grid-template-columns: repeat(4, minmax(0, 1fr));
952
+ }
953
+ }
954
+
955
+ .cr-set__tier {
888
956
  display: flex;
889
957
  flex-direction: column;
890
- padding: var(--cg-s8);
891
- border-radius: var(--cg-radius-md);
892
- box-shadow: var(--cg-ring);
893
- text-align: center;
958
+ padding-block-start: var(--cr-s6);
959
+ border-block-start: var(--cr-rule) solid var(--cr-line-strong);
894
960
  }
895
961
 
896
- .cg-set-menu__tier[data-highlighted="true"] {
897
- box-shadow: var(--cg-ring-accent);
962
+ .cr-set__tier[data-highlighted="true"] {
963
+ border-block-start: var(--cr-rule-strong) solid var(--cr-line-ink);
898
964
  }
899
965
 
900
- .cg-set-menu__name {
901
- margin: 0 0 var(--cg-s3);
902
- font-size: var(--cg-text-lg);
966
+ .cr-set__name {
967
+ color: var(--cr-brass);
968
+ font-size: var(--cr-size-label);
969
+ font-weight: var(--cr-weight-semibold);
970
+ font-variant-caps: all-small-caps;
971
+ line-height: 1.2;
972
+ letter-spacing: var(--cr-tracking-caps);
903
973
  }
904
974
 
905
- .cg-set-menu__price {
906
- margin: 0 0 var(--cg-s5);
975
+ .cr-set__price {
976
+ display: grid;
977
+ justify-items: start;
978
+ gap: var(--cr-s2);
979
+ margin: var(--cr-s4) 0 0;
907
980
  }
908
981
 
909
- .cg-set-menu__amount {
910
- font-family: var(--cogenta-font-serif);
911
- font-size: var(--cg-text-2xl);
912
- color: var(--cg-accent);
982
+ .cr-set__amount {
983
+ font-family: var(--cr-font-display);
984
+ font-size: var(--cr-size-figure);
985
+ font-weight: var(--cr-weight-light);
986
+ font-variant-numeric: lining-nums tabular-nums;
987
+ line-height: 1;
913
988
  }
914
989
 
915
- .cg-set-menu__interval {
916
- margin-inline-start: 0.25em;
917
- color: var(--cg-ink-muted);
990
+ .cr-set__interval {
991
+ color: var(--cr-ink-muted);
992
+ font-size: var(--cr-text-caption);
918
993
  }
919
994
 
920
- .cg-set-menu__features {
921
- flex: 1 1 auto;
922
- margin: 0 0 var(--cg-s6);
995
+ .cr-set__courses {
996
+ flex: 1;
997
+ margin: var(--cr-s6) 0 0;
923
998
  padding: 0;
924
999
  list-style: none;
925
- color: var(--cg-ink-muted);
926
1000
  }
927
1001
 
928
- .cg-set-menu__feature {
929
- padding-block: var(--cg-s2);
930
- border-block-start: 1px solid var(--cg-line-soft);
1002
+ .cr-set__course {
1003
+ padding-block: var(--cr-s3);
1004
+ border-block-start: var(--cr-rule) solid var(--cr-line);
1005
+ font-size: var(--cr-text-md);
931
1006
  }
932
1007
 
933
- .cg-set-menu__feature:first-child {
934
- border-block-start: 0;
935
- }
936
-
937
- .cg-set-menu__action .cg-action {
938
- inline-size: 100%;
1008
+ .cr-set__action {
1009
+ margin-block-start: var(--cr-s6);
939
1010
  }
940
1011
 
941
1012
  /* --------------------------------------------------------------------------
942
- statCounter
1013
+ embed
943
1014
  -------------------------------------------------------------------------- */
944
1015
 
945
- .cg-tallies__items {
946
- display: flex;
947
- flex-wrap: wrap;
948
- justify-content: center;
949
- gap: var(--cg-s10);
950
- margin: 0;
951
- padding: 0;
1016
+ .cr-embed__frame {
1017
+ background: var(--cr-plate);
952
1018
  }
953
1019
 
954
- .cg-tally {
955
- display: flex;
956
- flex-direction: column;
957
- align-items: center;
958
- gap: var(--cg-s1);
959
- text-align: center;
1020
+ .cr-embed__player {
1021
+ inline-size: 100%;
1022
+ block-size: 100%;
1023
+ border: 0;
960
1024
  }
961
1025
 
962
- .cg-tally__value {
963
- margin: 0;
964
- font-family: var(--cogenta-font-serif);
965
- font-size: var(--cg-text-2xl);
966
- color: var(--cg-accent);
1026
+ .cr-embed__notice {
1027
+ display: grid;
1028
+ gap: var(--cr-s2);
1029
+ justify-items: start;
1030
+ padding: var(--cr-s8);
1031
+ border: var(--cr-rule) solid var(--cr-line-strong);
1032
+ border-radius: var(--cr-radius);
967
1033
  }
968
1034
 
969
- .cg-tally__label {
1035
+ .cr-embed__label {
970
1036
  margin: 0;
971
- font-size: var(--cg-text-xs);
972
- letter-spacing: var(--cg-tracking-caps);
973
- text-transform: uppercase;
974
- color: var(--cg-ink-muted);
1037
+ color: var(--cr-brass);
1038
+ font-family: var(--cr-font-display);
1039
+ font-size: var(--cr-size-label);
1040
+ font-weight: var(--cr-weight-semibold);
1041
+ font-variant-caps: all-small-caps;
1042
+ line-height: 1.2;
1043
+ letter-spacing: var(--cr-tracking-caps);
1044
+ }
1045
+
1046
+ .cr-embed__reason {
1047
+ margin: 0 0 var(--cr-s2);
1048
+ max-inline-size: 52ch;
1049
+ color: var(--cr-ink-muted);
1050
+ }
1051
+
1052
+ @media (min-width: 64rem) {
1053
+ .cr-embed__frame,
1054
+ .cr-embed__notice {
1055
+ grid-column: 3 / span 8;
1056
+ }
975
1057
  }