@caltho/site-kit 0.2.10 → 0.2.11

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 (92) hide show
  1. package/README.md +61 -12
  2. package/dist/cli/check.js +31 -1
  3. package/dist/content/index.d.ts +310 -23
  4. package/dist/content/index.js +142 -15
  5. package/dist/content/look.d.ts +260 -9
  6. package/dist/content/look.js +386 -22
  7. package/dist/finish.js +9 -1
  8. package/dist/fonts/families/dm-sans/LICENSE +93 -0
  9. package/dist/fonts/families/dm-sans/dm-sans-latin-ext-wght-italic.woff2 +0 -0
  10. package/dist/fonts/families/dm-sans/dm-sans-latin-ext-wght-normal.woff2 +0 -0
  11. package/dist/fonts/families/dm-sans/dm-sans-latin-wght-italic.woff2 +0 -0
  12. package/dist/fonts/families/dm-sans/dm-sans-latin-wght-normal.woff2 +0 -0
  13. package/dist/fonts/families/fraunces/LICENSE +93 -0
  14. package/dist/fonts/families/fraunces/fraunces-latin-ext-wght-italic.woff2 +0 -0
  15. package/dist/fonts/families/fraunces/fraunces-latin-ext-wght-normal.woff2 +0 -0
  16. package/dist/fonts/families/fraunces/fraunces-latin-wght-italic.woff2 +0 -0
  17. package/dist/fonts/families/fraunces/fraunces-latin-wght-normal.woff2 +0 -0
  18. package/dist/fonts/families/inter/LICENSE +93 -0
  19. package/dist/fonts/families/inter/inter-latin-ext-wght-italic.woff2 +0 -0
  20. package/dist/fonts/families/inter/inter-latin-ext-wght-normal.woff2 +0 -0
  21. package/dist/fonts/families/inter/inter-latin-wght-italic.woff2 +0 -0
  22. package/dist/fonts/families/inter/inter-latin-wght-normal.woff2 +0 -0
  23. package/dist/fonts/families/lora/LICENSE +93 -0
  24. package/dist/fonts/families/lora/lora-latin-ext-wght-italic.woff2 +0 -0
  25. package/dist/fonts/families/lora/lora-latin-ext-wght-normal.woff2 +0 -0
  26. package/dist/fonts/families/lora/lora-latin-wght-italic.woff2 +0 -0
  27. package/dist/fonts/families/lora/lora-latin-wght-normal.woff2 +0 -0
  28. package/dist/fonts/families/manrope/LICENSE +93 -0
  29. package/dist/fonts/families/manrope/manrope-latin-ext-wght-normal.woff2 +0 -0
  30. package/dist/fonts/families/manrope/manrope-latin-wght-normal.woff2 +0 -0
  31. package/dist/fonts/families/newsreader/LICENSE +93 -0
  32. package/dist/fonts/families/newsreader/newsreader-latin-ext-wght-italic.woff2 +0 -0
  33. package/dist/fonts/families/newsreader/newsreader-latin-ext-wght-normal.woff2 +0 -0
  34. package/dist/fonts/families/newsreader/newsreader-latin-wght-italic.woff2 +0 -0
  35. package/dist/fonts/families/newsreader/newsreader-latin-wght-normal.woff2 +0 -0
  36. package/dist/fonts/families/outfit/LICENSE +93 -0
  37. package/dist/fonts/families/outfit/outfit-latin-ext-wght-normal.woff2 +0 -0
  38. package/dist/fonts/families/outfit/outfit-latin-wght-normal.woff2 +0 -0
  39. package/dist/fonts/families/playfair-display/LICENSE +93 -0
  40. package/dist/fonts/families/playfair-display/playfair-display-latin-ext-wght-italic.woff2 +0 -0
  41. package/dist/fonts/families/playfair-display/playfair-display-latin-ext-wght-normal.woff2 +0 -0
  42. package/dist/fonts/families/playfair-display/playfair-display-latin-wght-italic.woff2 +0 -0
  43. package/dist/fonts/families/playfair-display/playfair-display-latin-wght-normal.woff2 +0 -0
  44. package/dist/fonts/families/source-serif-4/LICENSE +93 -0
  45. package/dist/fonts/families/source-serif-4/source-serif-4-latin-ext-wght-italic.woff2 +0 -0
  46. package/dist/fonts/families/source-serif-4/source-serif-4-latin-ext-wght-normal.woff2 +0 -0
  47. package/dist/fonts/families/source-serif-4/source-serif-4-latin-wght-italic.woff2 +0 -0
  48. package/dist/fonts/families/source-serif-4/source-serif-4-latin-wght-normal.woff2 +0 -0
  49. package/dist/fonts/families/work-sans/LICENSE +93 -0
  50. package/dist/fonts/families/work-sans/work-sans-latin-ext-wght-italic.woff2 +0 -0
  51. package/dist/fonts/families/work-sans/work-sans-latin-ext-wght-normal.woff2 +0 -0
  52. package/dist/fonts/families/work-sans/work-sans-latin-wght-italic.woff2 +0 -0
  53. package/dist/fonts/families/work-sans/work-sans-latin-wght-normal.woff2 +0 -0
  54. package/dist/fonts/google.json +1 -0
  55. package/dist/fonts-google.d.ts +35 -0
  56. package/dist/fonts-google.js +70 -0
  57. package/dist/fonts.css +365 -0
  58. package/dist/frame.test.d.ts +1 -0
  59. package/dist/frame.test.js +33 -0
  60. package/dist/migrate.d.ts +45 -0
  61. package/dist/migrate.js +284 -0
  62. package/dist/next/block-mark.d.ts +7 -0
  63. package/dist/next/block-mark.js +16 -0
  64. package/dist/next/blocks.d.ts +11 -0
  65. package/dist/next/blocks.js +35 -0
  66. package/dist/next/data.d.ts +4 -0
  67. package/dist/next/data.js +4 -0
  68. package/dist/next/frame.d.ts +34 -0
  69. package/dist/next/frame.js +70 -0
  70. package/dist/next/index.d.ts +6 -2
  71. package/dist/next/index.js +7 -3
  72. package/dist/next/menu-group.d.ts +11 -0
  73. package/dist/next/menu-group.js +33 -0
  74. package/dist/next/parts/LookStyle.js +3 -1
  75. package/dist/next/preview.js +282 -25
  76. package/dist/next/sections.d.ts +19 -10
  77. package/dist/next/sections.js +129 -17
  78. package/dist/prepare.d.ts +5 -1
  79. package/dist/prepare.js +59 -1
  80. package/dist/preview-match.d.ts +8 -0
  81. package/dist/preview-match.js +33 -1
  82. package/dist/schema.d.ts +10 -0
  83. package/dist/schema.js +26 -0
  84. package/dist/sections/icons.d.ts +47 -0
  85. package/dist/sections/icons.js +51 -0
  86. package/dist/sections/index.d.ts +165 -11
  87. package/dist/sections/index.js +129 -8
  88. package/dist/sections/presets.d.ts +13 -0
  89. package/dist/sections/presets.js +300 -0
  90. package/dist/sections.css +1260 -41
  91. package/dist/sections.test.js +276 -14
  92. package/package.json +8 -3
package/dist/sections.css CHANGED
@@ -1,21 +1,240 @@
1
1
  /*
2
- * The kit's sections (@caltho/site-kit/sections), styled to sit in any site: its width, spacing and
3
- * type, themed by the site's Look (--look-*) where it has one and its own fonts and colours otherwise.
4
- * Import once in the site's layout: import "@caltho/site-kit/sections.css".
2
+ * The kit's sections (@caltho/site-kit/sections), drawn from the site's Look (--look-*: its type
3
+ * scale, colours, buttons, width and spacing), so they look right on any site with no classes of its
4
+ * own; the fallbacks are for a site without a Look. And the frame KitBlocks draws around a section
5
+ * with a background. Import once in the site's layout: import "@caltho/site-kit/sections.css".
5
6
  */
6
7
  .kit-section {
7
- padding-block: clamp(48px, 8vw, 96px);
8
+ padding-block: var(--look-section-pad, clamp(56px, 8vw, 96px));
8
9
  }
10
+ /* The content's width, inside the theme's side gutter (--look-gutter), the same as the site's own sections. */
9
11
  .kit-wrap {
10
- width: min(1200px, 100% - 40px);
12
+ width: min(var(--look-width, 1200px), 100% - 2 * var(--look-gutter, 20px));
11
13
  margin-inline: auto;
12
14
  }
13
- .kit-heading {
14
- margin: 0 0 12px;
15
+
16
+ /* Headings: large is a section's own (the Look's section heading), medium one under it, small the least. */
17
+ .kit-h {
18
+ margin: 0;
19
+ color: inherit;
15
20
  font-family: var(--look-heading-font, inherit);
16
- font-size: clamp(1.6rem, 3vw, 2.25rem);
17
- line-height: 1.15;
21
+ text-wrap: balance;
22
+ }
23
+ .kit-h-large {
24
+ font-size: clamp(calc(var(--look-type-h2-size, 40px) * 0.7), calc(var(--look-type-h2-size, 40px) * 0.45 + 2vw), var(--look-type-h2-size, 40px));
25
+ font-weight: var(--look-type-h2-weight, 600);
26
+ letter-spacing: var(--look-type-h2-tracking, -0.02em);
27
+ line-height: var(--look-type-h2-leading, 1.15);
28
+ }
29
+ .kit-h-medium {
30
+ font-size: clamp(calc(var(--look-type-h3-size, 24px) * 0.85), calc(var(--look-type-h3-size, 24px) * 0.7 + 0.6vw), var(--look-type-h3-size, 24px));
31
+ font-weight: var(--look-type-h3-weight, 600);
32
+ letter-spacing: var(--look-type-h3-tracking, -0.01em);
33
+ line-height: var(--look-type-h3-leading, 1.25);
34
+ }
35
+ .kit-h-small {
36
+ font-size: var(--look-type-body-size, 17px);
37
+ font-weight: var(--look-type-h3-weight, 600);
38
+ letter-spacing: var(--look-type-h3-tracking, 0);
39
+ line-height: var(--look-type-h3-leading, 1.3);
40
+ }
41
+ :is(h1, h2, h3, h4, h5, h6).kit-h-large + * {
42
+ margin-top: 4px;
43
+ }
44
+ .kit-text,
45
+ .kit-intro {
46
+ font-family: var(--look-body-font, inherit);
47
+ font-size: var(--look-type-body-size, inherit);
48
+ font-weight: var(--look-type-body-weight, inherit);
49
+ letter-spacing: var(--look-type-body-tracking, normal);
50
+ line-height: var(--look-type-body-leading, 1.6);
51
+ }
52
+ .kit-text > :first-child {
53
+ margin-top: 0;
54
+ }
55
+ .kit-text > :last-child {
56
+ margin-bottom: 0;
57
+ }
58
+ .kit-text a {
59
+ color: inherit;
60
+ text-decoration-color: var(--look-accent, currentColor);
61
+ text-underline-offset: 3px;
62
+ }
63
+ .kit-muted {
64
+ color: var(--look-muted, inherit);
65
+ font-size: var(--look-type-small-size, 0.875rem);
66
+ letter-spacing: var(--look-type-small-tracking, normal);
67
+ line-height: var(--look-type-small-leading, 1.5);
68
+ }
69
+ .kit-own-stats dd.kit-h,
70
+ .kit-own-amount.kit-h {
71
+ font-size: var(--look-type-h3-size, 24px);
72
+ }
73
+
74
+ /* Buttons: the Look's (brand, corners, filled or outlined), flat. The quiet one an outline. */
75
+ .kit-button {
76
+ display: inline-block;
77
+ padding: 0.7em 1.3em;
78
+ border: var(--look-button-border-width, 1px) solid var(--look-button-border-colour, var(--look-button-border, currentColor));
79
+ border-radius: var(--look-button-radius, 999px);
80
+ background: var(--look-button-bg, #111);
81
+ color: var(--look-button-fg, #fff);
82
+ font-family: var(--look-body-font, inherit);
83
+ font-size: var(--look-type-body-size, 1rem);
84
+ /* A site's own buttons' weight, where it says (--kit-button-weight), so the kit's match them. */
85
+ font-weight: var(--kit-button-weight, 500);
86
+ line-height: 1.2;
87
+ text-decoration: none;
88
+ }
89
+ .kit-button:hover {
90
+ opacity: 0.9;
91
+ }
92
+ .kit-button:focus-visible {
93
+ outline: 2px solid var(--look-accent, currentColor);
94
+ outline-offset: 3px;
95
+ }
96
+ .kit-button.kit-button-quiet {
97
+ border-color: currentColor;
98
+ background: transparent;
99
+ color: inherit;
100
+ }
101
+
102
+ /* A kit section's Layout, where the site's own CSS doesn't say. */
103
+ .kit-section.place-width-narrow > .kit-wrap {
104
+ width: min(calc(var(--look-width, 1200px) * 0.66), 100% - 2 * var(--look-gutter, 20px));
105
+ }
106
+ .kit-section.place-width-wide > .kit-wrap {
107
+ width: min(calc(var(--look-width, 1200px) * 1.2), 100% - 2 * var(--look-gutter, 20px));
108
+ }
109
+ .kit-section.place-align-center > .kit-wrap {
110
+ text-align: center;
18
111
  }
112
+ .kit-section.place-spacing-compact {
113
+ padding-block: calc(var(--look-section-pad, clamp(56px, 8vw, 96px)) * 0.6);
114
+ }
115
+ .kit-section.place-spacing-roomy {
116
+ padding-block: calc(var(--look-section-pad, clamp(56px, 8vw, 96px)) * 1.4);
117
+ }
118
+ @media (max-width: 719px) {
119
+ .kit-section.place-show-desktop {
120
+ display: none;
121
+ }
122
+ }
123
+ @media (min-width: 720px) {
124
+ .kit-section.place-show-phone {
125
+ display: none;
126
+ }
127
+ }
128
+
129
+ /* Lines across a section's full width (its Layout's Lines): the Look's line colour, or its text colour when strong. */
130
+ .kit-lines {
131
+ --kit-lines-colour: var(--look-line, #ddd);
132
+ }
133
+ .kit-lines.kit-lines-strong {
134
+ --kit-lines-colour: var(--look-ink, #111);
135
+ }
136
+ .kit-lines-top,
137
+ .kit-lines-both {
138
+ border-top: 1px solid var(--kit-lines-colour);
139
+ }
140
+ .kit-lines-bottom,
141
+ .kit-lines-both {
142
+ border-bottom: 1px solid var(--kit-lines-colour);
143
+ }
144
+
145
+ /*
146
+ * The frame around a section with a background (KitBlocks): its colour from the Look (one of the
147
+ * page's, or one of the site's own by its place in the list), a photo behind under a shade, and its
148
+ * words in the darker of page and ink, or the lighter on a dark one (kit-frame-dark). The section in
149
+ * it is drawn over it without a background of its own.
150
+ */
151
+ .kit-frame {
152
+ position: relative;
153
+ isolation: isolate;
154
+ background: var(--kit-frame-bg, transparent);
155
+ color: var(--look-dark, #111);
156
+ }
157
+ .kit-frame.kit-frame-dark {
158
+ color: var(--look-light, #fff);
159
+ }
160
+ .kit-frame > :not(.kit-frame-bg, template) {
161
+ background: transparent;
162
+ color: inherit;
163
+ }
164
+ .kit-bg-page { --kit-frame-bg: var(--look-page, #fff); }
165
+ .kit-bg-soft { --kit-frame-bg: var(--look-soft, #f3f3f3); }
166
+ .kit-bg-brand { --kit-frame-bg: var(--look-brand, #111); }
167
+ .kit-bg-accent { --kit-frame-bg: var(--look-accent, #111); }
168
+ .kit-bg-ink { --kit-frame-bg: var(--look-ink, #111); }
169
+ .kit-bg-swatch-1 { --kit-frame-bg: var(--look-swatch-1); }
170
+ .kit-bg-swatch-2 { --kit-frame-bg: var(--look-swatch-2); }
171
+ .kit-bg-swatch-3 { --kit-frame-bg: var(--look-swatch-3); }
172
+ .kit-bg-swatch-4 { --kit-frame-bg: var(--look-swatch-4); }
173
+ .kit-bg-swatch-5 { --kit-frame-bg: var(--look-swatch-5); }
174
+ .kit-bg-swatch-6 { --kit-frame-bg: var(--look-swatch-6); }
175
+ .kit-bg-swatch-7 { --kit-frame-bg: var(--look-swatch-7); }
176
+ .kit-bg-swatch-8 { --kit-frame-bg: var(--look-swatch-8); }
177
+ .kit-bg-swatch-9 { --kit-frame-bg: var(--look-swatch-9); }
178
+ .kit-bg-swatch-10 { --kit-frame-bg: var(--look-swatch-10); }
179
+ .kit-bg-swatch-11 { --kit-frame-bg: var(--look-swatch-11); }
180
+ .kit-bg-swatch-12 { --kit-frame-bg: var(--look-swatch-12); }
181
+ .kit-frame-photo {
182
+ overflow: hidden;
183
+ }
184
+ .kit-frame-bg {
185
+ position: absolute;
186
+ inset: 0;
187
+ z-index: -1;
188
+ }
189
+ .kit-frame-bg img {
190
+ display: block;
191
+ width: 100%;
192
+ height: 100%;
193
+ object-fit: cover;
194
+ }
195
+ .kit-frame-bg::after {
196
+ content: "";
197
+ position: absolute;
198
+ inset: 0;
199
+ }
200
+ .kit-overlay-dark .kit-frame-bg::after {
201
+ background: linear-gradient(rgb(0 0 0 / 0.45), rgb(0 0 0 / 0.62));
202
+ }
203
+ .kit-overlay-light .kit-frame-bg::after {
204
+ background: color-mix(in srgb, var(--look-page, #fff) 78%, transparent);
205
+ }
206
+ .kit-overlay-none.kit-frame-dark {
207
+ text-shadow: 0 1px 14px rgb(0 0 0 / 0.55);
208
+ }
209
+ /* Words and buttons readable on a dark frame, whatever the section's own classes give them. */
210
+ .kit-frame-dark {
211
+ --kit-own-fg: var(--look-light, #fff);
212
+ --kit-own-button-bg: var(--look-light, #fff);
213
+ --kit-own-button-fg: var(--look-dark, #111);
214
+ }
215
+ .kit-frame-dark :is(.kit-h, .kit-text, .kit-muted) {
216
+ color: inherit;
217
+ }
218
+ .kit-frame-dark .kit-muted {
219
+ opacity: 0.8;
220
+ }
221
+ .kit-frame-dark .kit-button {
222
+ border-color: var(--look-button-border-colour, var(--look-light, #fff));
223
+ background: var(--look-light, #fff);
224
+ color: var(--look-dark, #111);
225
+ }
226
+ .kit-frame-dark .kit-button.kit-button-quiet {
227
+ border-color: currentColor;
228
+ background: transparent;
229
+ color: inherit;
230
+ }
231
+ /* On a brand frame light enough for dark words, the brand's buttons in its readable colour. */
232
+ .kit-bg-brand:not(.kit-frame-dark) .kit-button:not(.kit-button-quiet) {
233
+ border-color: var(--look-button-border-colour, var(--look-on-brand, #111));
234
+ background: var(--look-on-brand, #111);
235
+ color: var(--look-brand, #fff);
236
+ }
237
+
19
238
  .kit-intro {
20
239
  max-width: 65ch;
21
240
  margin-top: 12px;
@@ -194,13 +413,115 @@
194
413
 
195
414
  /*
196
415
  * A section of the business's own: its columns side by side from a tablet up (stacked on a phone),
197
- * its parts spaced evenly, in the site's type. Brand tone: the site's brand colour behind, its
198
- * readable colour over it.
416
+ * its parts spaced evenly, in the site's type.
417
+ *
418
+ * Its background (tone), from the site's Look: plain is the page's own; soft a quiet tint of the
419
+ * page's text colour; brand the brand colour, its readable colour over it; dark the site's ink, the
420
+ * page's colour over it. A photo behind is under a scrim, the words light over it.
421
+ *
422
+ * Its shape, on soft, brand or dark: a card (the default) is that background inset within the
423
+ * content's width, in the theme's corners, the section's own space around it; a band is the
424
+ * background across the page's full width.
199
425
  */
200
- .kit-own-brand {
201
- background: var(--look-brand, #111);
202
- color: var(--look-on-brand, #fff);
426
+ .kit-own.kit-own-soft {
427
+ --kit-own-tone-bg: var(--look-soft, color-mix(in srgb, currentColor 5%, transparent));
428
+ }
429
+ .kit-own.kit-own-brand {
430
+ --kit-own-fg: var(--look-on-brand, #fff);
431
+ --kit-own-button-bg: var(--look-on-brand, #fff);
432
+ --kit-own-button-fg: var(--look-brand, #111);
433
+ --kit-own-tone-bg: var(--look-brand, #111);
434
+ }
435
+ .kit-own.kit-own-dark {
436
+ --kit-own-fg: var(--look-page, #fff);
437
+ --kit-own-button-bg: var(--look-page, #fff);
438
+ --kit-own-button-fg: var(--look-ink, #111);
439
+ --kit-own-tone-bg: var(--look-ink, #111);
440
+ }
441
+ .kit-own.kit-own-shape-band {
442
+ background: var(--kit-own-tone-bg);
443
+ }
444
+ .kit-own.kit-own-shape-card > * > .kit-own-panel {
445
+ padding: clamp(28px, 5vw, 64px) clamp(20px, 5vw, 64px);
446
+ border-radius: var(--look-radius, 8px);
447
+ background: var(--kit-own-tone-bg);
448
+ }
449
+ /* In a frame (a Layout background), the frame's colour is the section's: the tone gives way to it. */
450
+ .kit-frame .kit-own.kit-own-shape-card > * > .kit-own-panel {
451
+ padding: 0;
452
+ background: transparent;
453
+ }
454
+ .kit-own.kit-own-behind {
455
+ --kit-own-fg: #fff;
456
+ --kit-own-button-bg: #fff;
457
+ --kit-own-button-fg: #111;
458
+ position: relative;
459
+ isolation: isolate;
460
+ overflow: hidden;
461
+ background: var(--look-ink, #111);
462
+ }
463
+ .kit-own-bg {
464
+ position: absolute;
465
+ inset: 0;
466
+ z-index: -1;
467
+ }
468
+ .kit-own-bg img {
469
+ display: block;
470
+ width: 100%;
471
+ height: 100%;
472
+ object-fit: cover;
473
+ }
474
+ /* The scrim: dark enough that light words read over any photo, a little darker at the bottom. */
475
+ .kit-own-bg::after {
476
+ content: "";
477
+ position: absolute;
478
+ inset: 0;
479
+ background: linear-gradient(rgb(0 0 0 / 0.45), rgb(0 0 0 / 0.65));
480
+ }
481
+
482
+ /*
483
+ * On brand, dark or a photo: the words in the section's readable colour, and its buttons a light
484
+ * pill (the main one) or an outline (the quiet one), over whatever colours the site's own classes
485
+ * give them, which are for its page background.
486
+ */
487
+ .kit-own.kit-own-inverse {
488
+ color: var(--kit-own-fg);
489
+ }
490
+ :is(.kit-own-inverse, .kit-frame-dark) .kit-own-column :is(h1, h2, h3, h4, h5, h6, p, li, blockquote, figcaption, dt, dd, span, strong, em, a) {
491
+ color: inherit;
492
+ }
493
+ .kit-own:is(.kit-own-inverse, .kit-frame-dark *) .kit-own-column .kit-own-action > a {
494
+ border-color: var(--kit-own-button-bg);
495
+ background: var(--kit-own-button-bg);
496
+ color: var(--kit-own-button-fg);
497
+ }
498
+ .kit-own:is(.kit-own-inverse, .kit-frame-dark *) .kit-own-column .kit-own-action-quiet > a {
499
+ border-color: currentColor;
500
+ background: transparent;
501
+ color: var(--kit-own-fg);
502
+ }
503
+ .kit-own-inverse .kit-own-column .kit-own-action > a:hover {
504
+ opacity: 0.9;
505
+ }
506
+ .kit-own-inverse .kit-own-column .kit-own-action > a:focus-visible {
507
+ outline: 2px solid var(--kit-own-fg);
508
+ outline-offset: 3px;
509
+ }
510
+ .kit-own-inverse .kit-own-list-checks li::before {
511
+ color: inherit;
512
+ }
513
+ .kit-own-inverse .kit-own-text a {
514
+ text-decoration: underline;
515
+ }
516
+
517
+ /* Space above and below: normal is the site's own; tight and roomy less and more. */
518
+ .kit-own.kit-own-pad-tight {
519
+ padding-block: clamp(24px, 4vw, 40px);
520
+ }
521
+ .kit-own.kit-own-pad-roomy {
522
+ padding-block: clamp(72px, 12vw, 144px);
203
523
  }
524
+
204
525
  .kit-own-grid {
205
526
  display: grid;
206
527
  gap: clamp(24px, 4vw, 48px);
@@ -241,12 +562,6 @@
241
562
  .kit-own-column > * {
242
563
  margin: 0;
243
564
  }
244
- .kit-own-h-large {
245
- font-size: clamp(1.75rem, 3.5vw, 2.5rem);
246
- }
247
- .kit-own-h-small {
248
- font-size: 1.15rem;
249
- }
250
565
  .kit-own-text {
251
566
  max-width: 65ch;
252
567
  }
@@ -272,22 +587,32 @@
272
587
  .kit-own-photo figcaption,
273
588
  .kit-own-quote figcaption {
274
589
  margin-top: 8px;
275
- font-size: 0.9rem;
276
590
  opacity: 0.75;
277
591
  }
278
- .kit-button {
279
- display: inline-block;
280
- padding: 10px 18px;
281
- border: 1px solid var(--look-button-border, currentColor);
282
- border-radius: var(--look-button-radius, 8px);
283
- background: var(--look-button-bg, #111);
284
- color: var(--look-button-fg, #fff);
285
- font-weight: 500;
286
- text-decoration: none;
592
+ /* Buttons one after another: side by side, wrapping on a phone. */
593
+ .kit-own-actions {
594
+ display: flex;
595
+ flex-wrap: wrap;
596
+ align-items: center;
597
+ gap: 12px;
287
598
  }
288
- .kit-button-quiet {
289
- background: transparent;
290
- color: inherit;
599
+ .kit-own-align-center .kit-own-actions {
600
+ justify-content: center;
601
+ }
602
+ .kit-own-actions > .kit-own-action {
603
+ margin: 0;
604
+ }
605
+ /* A photo still to choose, in CalOS's preview only: a quiet box its shape. */
606
+ .kit-own-photo-empty {
607
+ aspect-ratio: 4 / 3;
608
+ border-radius: var(--look-radius, 8px);
609
+ background: color-mix(in srgb, currentColor 10%, transparent);
610
+ }
611
+ .kit-own-photo-empty.kit-own-shape-square {
612
+ aspect-ratio: 1 / 1;
613
+ }
614
+ .kit-own-photo-empty.kit-own-shape-portrait {
615
+ aspect-ratio: 4 / 5;
291
616
  }
292
617
  .kit-own-list {
293
618
  max-width: 65ch;
@@ -310,8 +635,9 @@
310
635
  }
311
636
  .kit-own-quote blockquote {
312
637
  margin: 0;
313
- font-size: 1.15rem;
314
- line-height: 1.5;
638
+ font-family: var(--look-heading-font, inherit);
639
+ font-size: var(--look-type-h3-size, 1.25rem);
640
+ line-height: 1.4;
315
641
  }
316
642
  .kit-own-stats {
317
643
  display: flex;
@@ -327,17 +653,11 @@
327
653
  }
328
654
  .kit-own-stats dd {
329
655
  margin: 0;
330
- font-size: 1.6rem;
331
- font-weight: 600;
332
- line-height: 1.1;
333
656
  }
334
657
  .kit-own-stats dt {
335
- font-size: 0.85rem;
336
658
  opacity: 0.75;
337
659
  }
338
660
  .kit-own-amount {
339
- font-size: 2rem;
340
- font-weight: 600;
341
661
  }
342
662
  .kit-own-per {
343
663
  opacity: 0.75;
@@ -356,3 +676,902 @@
356
676
  .kit-own-space-large {
357
677
  height: 56px;
358
678
  }
679
+
680
+ /* Text only a screen reader reads: a tick's "Yes", a dash's "No". */
681
+ .kit-sr {
682
+ position: absolute;
683
+ width: 1px;
684
+ height: 1px;
685
+ overflow: hidden;
686
+ clip-path: inset(50%);
687
+ white-space: nowrap;
688
+ }
689
+
690
+ /* A section's heading and intro, over its columns, aligned as the section is. */
691
+ .kit-own-head {
692
+ display: flex;
693
+ flex-direction: column;
694
+ gap: 12px;
695
+ margin-bottom: clamp(24px, 4vw, 40px);
696
+ }
697
+ .kit-own-head.kit-own-align-center {
698
+ align-items: center;
699
+ }
700
+ .kit-own-head > * {
701
+ margin: 0;
702
+ }
703
+ .kit-own-intro {
704
+ max-width: 65ch;
705
+ }
706
+ .kit-own-intro > :first-child {
707
+ margin-top: 0;
708
+ }
709
+ .kit-own-intro > :last-child {
710
+ margin-bottom: 0;
711
+ }
712
+
713
+ /*
714
+ * A column drawn as a card: the theme's quiet background on the page, a line around it on a quiet
715
+ * one, and a faint line in the words' colour on brand, dark, a photo or a frame; the theme's corners.
716
+ */
717
+ .kit-own-card {
718
+ padding: clamp(20px, 3vw, 32px);
719
+ border: 1px solid transparent;
720
+ border-radius: var(--look-radius, 8px);
721
+ background: var(--look-soft, color-mix(in srgb, currentColor 5%, transparent));
722
+ }
723
+ .kit-own-soft .kit-own-card {
724
+ border-color: var(--look-line, color-mix(in srgb, currentColor 18%, transparent));
725
+ background: var(--look-page, transparent);
726
+ }
727
+ :is(.kit-own-inverse, .kit-frame) .kit-own-card {
728
+ border-color: color-mix(in srgb, currentColor 28%, transparent);
729
+ background: transparent;
730
+ }
731
+
732
+ /* An icon: the brand colour on the page, the words' colour on brand, dark or a photo. */
733
+ .kit-icon {
734
+ display: inline-block;
735
+ flex-shrink: 0;
736
+ width: 1em;
737
+ height: 1em;
738
+ vertical-align: -0.125em;
739
+ }
740
+ .kit-own-icon {
741
+ color: var(--look-brand, currentColor);
742
+ }
743
+ :is(.kit-own-inverse, .kit-frame-dark) .kit-own-icon {
744
+ color: inherit;
745
+ }
746
+ .kit-own-icon-small {
747
+ width: 24px;
748
+ height: 24px;
749
+ }
750
+ .kit-own-icon-medium {
751
+ width: 32px;
752
+ height: 32px;
753
+ }
754
+ .kit-own-icon-large {
755
+ width: 48px;
756
+ height: 48px;
757
+ }
758
+ .kit-own-align-center .kit-own-icon {
759
+ align-self: center;
760
+ }
761
+
762
+ /*
763
+ * A table: a real table from 640px up, its rows' labels and cells lined up, a column picked out by
764
+ * a faint tint and a line over its heading; below that, each row a small card, its label its
765
+ * heading and each column's heading beside the row's cell. Ticks and dashes in the words' colour.
766
+ */
767
+ .kit-own-table {
768
+ width: 100%;
769
+ text-align: start;
770
+ }
771
+ .kit-table-wide {
772
+ overflow-x: auto;
773
+ }
774
+ .kit-table {
775
+ width: 100%;
776
+ border-collapse: collapse;
777
+ }
778
+ .kit-table :is(th, td) {
779
+ padding: 14px 16px;
780
+ border-bottom: 1px solid var(--look-line, color-mix(in srgb, currentColor 18%, transparent));
781
+ text-align: center;
782
+ vertical-align: middle;
783
+ }
784
+ .kit-table :is(th[scope="row"], thead > tr > :first-child) {
785
+ padding-left: 0;
786
+ text-align: start;
787
+ }
788
+ .kit-table th {
789
+ font-weight: 600;
790
+ }
791
+ .kit-table th[scope="row"] {
792
+ font-weight: 500;
793
+ }
794
+ .kit-table thead th {
795
+ font-family: var(--look-heading-font, inherit);
796
+ vertical-align: bottom;
797
+ }
798
+ .kit-table .kit-table-highlight {
799
+ background: color-mix(in srgb, currentColor 5%, transparent);
800
+ }
801
+ .kit-table thead th.kit-table-highlight {
802
+ border-top: 3px solid var(--look-brand, currentColor);
803
+ border-top-left-radius: var(--look-radius, 8px);
804
+ border-top-right-radius: var(--look-radius, 8px);
805
+ }
806
+ :is(.kit-own-inverse, .kit-frame-dark) .kit-table thead th.kit-table-highlight {
807
+ border-top-color: currentColor;
808
+ }
809
+ :is(.kit-own-inverse, .kit-frame-dark) .kit-table :is(th, td) {
810
+ border-bottom-color: color-mix(in srgb, currentColor 25%, transparent);
811
+ }
812
+ .kit-table-yes,
813
+ .kit-table-no {
814
+ display: inline-flex;
815
+ }
816
+ .kit-table-yes .kit-icon,
817
+ .kit-table-no .kit-icon {
818
+ width: 20px;
819
+ height: 20px;
820
+ }
821
+ .kit-table-no {
822
+ opacity: 0.55;
823
+ }
824
+ .kit-table-cards {
825
+ display: grid;
826
+ gap: 12px;
827
+ margin: 0;
828
+ padding: 0;
829
+ list-style: none;
830
+ }
831
+ .kit-table-card {
832
+ padding: 16px 18px;
833
+ border: 1px solid var(--look-line, color-mix(in srgb, currentColor 18%, transparent));
834
+ border-radius: var(--look-radius, 8px);
835
+ }
836
+ :is(.kit-own-inverse, .kit-frame-dark) .kit-table-card {
837
+ border-color: color-mix(in srgb, currentColor 28%, transparent);
838
+ }
839
+ .kit-table-card > :is(h1, h2, h3, h4, h5, h6) {
840
+ margin: 0 0 8px;
841
+ }
842
+ .kit-table-card dl {
843
+ margin: 0;
844
+ }
845
+ .kit-table-card dl > div {
846
+ display: flex;
847
+ align-items: center;
848
+ justify-content: space-between;
849
+ gap: 16px;
850
+ padding: 6px 0;
851
+ }
852
+ .kit-table-card dl > div + div {
853
+ border-top: 1px solid color-mix(in srgb, currentColor 10%, transparent);
854
+ }
855
+ .kit-table-card dl > .kit-table-highlight {
856
+ font-weight: 600;
857
+ }
858
+ .kit-table-card dt::after {
859
+ content: ":";
860
+ }
861
+ .kit-table-card dd {
862
+ margin: 0;
863
+ text-align: end;
864
+ }
865
+ @media (max-width: 639px) {
866
+ .kit-table-wide {
867
+ display: none;
868
+ }
869
+ }
870
+ @media (min-width: 640px) {
871
+ .kit-table-cards {
872
+ display: none;
873
+ }
874
+ }
875
+
876
+ /* Logos in a row, wrapping, in grey until pointed at, so the business's colours lead. */
877
+ .kit-own-logos {
878
+ display: flex;
879
+ flex-direction: column;
880
+ gap: 16px;
881
+ }
882
+ .kit-own-align-center .kit-own-logos {
883
+ align-items: center;
884
+ }
885
+ .kit-own-logos-title {
886
+ margin: 0;
887
+ }
888
+ .kit-own-logos ul {
889
+ display: flex;
890
+ flex-wrap: wrap;
891
+ align-items: center;
892
+ gap: 24px clamp(28px, 5vw, 56px);
893
+ margin: 0;
894
+ padding: 0;
895
+ list-style: none;
896
+ }
897
+ .kit-own-align-center .kit-own-logos ul {
898
+ justify-content: center;
899
+ }
900
+ .kit-own-logos img {
901
+ display: block;
902
+ width: auto;
903
+ max-width: 160px;
904
+ height: auto;
905
+ max-height: 40px;
906
+ object-fit: contain;
907
+ filter: grayscale(1);
908
+ opacity: 0.7;
909
+ }
910
+ .kit-own-logos li:hover img {
911
+ filter: none;
912
+ opacity: 1;
913
+ }
914
+ :is(.kit-own-inverse, .kit-frame-dark) .kit-own-logos img {
915
+ filter: grayscale(1) brightness(0) invert(1);
916
+ opacity: 0.85;
917
+ }
918
+
919
+ /* A video: its player at 16:9, in the theme's corners; one still to choose, a quiet box in the preview. */
920
+ .kit-own-video {
921
+ overflow: hidden;
922
+ aspect-ratio: 16 / 9;
923
+ width: 100%;
924
+ border-radius: var(--look-radius, 8px);
925
+ }
926
+ .kit-own-video iframe {
927
+ display: block;
928
+ width: 100%;
929
+ height: 100%;
930
+ border: 0;
931
+ }
932
+ .kit-own-video-empty {
933
+ background: color-mix(in srgb, currentColor 10%, transparent);
934
+ }
935
+
936
+ /*
937
+ * The frame around every page (KitFrame, KitHeader, KitFooter): drawn from the Look, like the
938
+ * sections. The header follows the Look's Header (headerOf): .is-sticky, a style (kit-header-line,
939
+ * -plain, -brand, -floating) and, on a wide screen, a layout (kit-header-spread, -centered, -left).
940
+ * A site sets --kit-footer-bg, -fg, -muted and -line for a footer in colours of its own, not its darkest.
941
+ */
942
+ .kit-skip {
943
+ position: absolute;
944
+ left: 1rem;
945
+ top: -10rem;
946
+ z-index: 100;
947
+ padding: 0.75rem 1rem;
948
+ background: var(--look-ink, #111);
949
+ color: var(--look-page, #fff);
950
+ border-radius: calc(var(--look-radius, 8px) / 2);
951
+ font-weight: 600;
952
+ }
953
+ .kit-skip:focus {
954
+ top: 1rem;
955
+ }
956
+
957
+ .kit-header {
958
+ --kit-h-ink: var(--look-ink, #111);
959
+ --kit-h-muted: var(--look-muted, #666);
960
+ --kit-h-line: var(--look-line, #ddd);
961
+ --kit-h-bg: var(--look-page, #fff);
962
+ --kit-h-hover: var(--look-soft, #f4f4f2);
963
+ --kit-h-pick: var(--look-brand, currentColor);
964
+ position: relative;
965
+ z-index: 20;
966
+ /* Solid, not see-through and blurred: a blur behind a sticky header is redrawn every frame, and
967
+ on a fast scroll the header fell behind the page and jumped back. */
968
+ background: var(--kit-h-bg);
969
+ border-bottom: 1px solid var(--kit-h-line);
970
+ color: var(--kit-h-ink);
971
+ font-family: var(--look-body-font, inherit);
972
+ }
973
+ .kit-header.is-sticky {
974
+ position: sticky;
975
+ top: 0;
976
+ }
977
+ .kit-header-plain {
978
+ border-bottom-color: transparent;
979
+ }
980
+ /* The brand colour, its words in the colour that reads on it. */
981
+ .kit-header-brand {
982
+ --kit-h-bg: var(--look-brand, #111);
983
+ --kit-h-ink: var(--look-on-brand, #fff);
984
+ --kit-h-muted: color-mix(in srgb, var(--look-on-brand, #fff) 75%, transparent);
985
+ --kit-h-line: color-mix(in srgb, var(--look-on-brand, #fff) 30%, transparent);
986
+ --kit-h-hover: color-mix(in srgb, var(--look-on-brand, #fff) 14%, transparent);
987
+ --kit-h-pick: var(--look-on-brand, #fff);
988
+ background: var(--kit-h-bg);
989
+ border-bottom-color: transparent;
990
+ }
991
+ .kit-header-brand .kit-header-action {
992
+ --look-button-bg: var(--look-on-brand, #fff);
993
+ --look-button-fg: var(--look-brand, #111);
994
+ --look-button-border: var(--look-on-brand, #fff);
995
+ }
996
+ /* A bar over the page, inset from its edges, set apart by a shadow rather than a line. */
997
+ .kit-header-floating {
998
+ background: transparent;
999
+ border-bottom: 0;
1000
+ padding-top: 0.75rem;
1001
+ }
1002
+ .kit-header-floating .kit-header-row {
1003
+ padding-inline: 1.25rem;
1004
+ min-height: 4rem;
1005
+ background: var(--kit-h-bg);
1006
+ border: 1px solid var(--kit-h-line);
1007
+ border-radius: max(calc(var(--look-radius, 8px) * 1.25), 0.75rem);
1008
+ box-shadow: 0 8px 30px -12px color-mix(in srgb, var(--kit-h-ink) 30%, transparent);
1009
+ }
1010
+ .kit-header-row {
1011
+ position: relative;
1012
+ display: flex;
1013
+ align-items: center;
1014
+ gap: 0.75rem 1.5rem;
1015
+ min-height: 4.75rem;
1016
+ }
1017
+ .kit-brand {
1018
+ margin-right: auto;
1019
+ color: var(--kit-h-ink);
1020
+ text-decoration: none;
1021
+ }
1022
+ .kit-brand-name {
1023
+ font-family: var(--look-heading-font, inherit);
1024
+ font-size: 1.35rem;
1025
+ font-weight: var(--look-type-h2-weight, 600);
1026
+ letter-spacing: var(--look-type-h2-tracking, -0.01em);
1027
+ line-height: 1.1;
1028
+ }
1029
+ .kit-logo {
1030
+ max-height: 2.75rem;
1031
+ width: auto;
1032
+ }
1033
+ .kit-menu-wide ul {
1034
+ display: flex;
1035
+ gap: 0.25rem;
1036
+ margin: 0;
1037
+ padding: 0;
1038
+ list-style: none;
1039
+ }
1040
+ .kit-menu-wide a {
1041
+ display: block;
1042
+ padding: 0.5rem 0.8rem;
1043
+ border-radius: calc(var(--look-radius, 8px) / 2);
1044
+ color: var(--kit-h-ink);
1045
+ font-weight: 500;
1046
+ text-decoration: none;
1047
+ }
1048
+ .kit-menu-wide a:hover {
1049
+ background: var(--kit-h-hover);
1050
+ }
1051
+ /* A link the menu picks out (Emphasize in CalOS), and the page you're on. */
1052
+ .kit-header a.is-emphasis {
1053
+ color: var(--kit-h-pick);
1054
+ font-weight: 600;
1055
+ }
1056
+ .kit-menu-wide a[aria-current="page"] {
1057
+ color: var(--kit-h-pick);
1058
+ text-decoration: underline;
1059
+ text-decoration-thickness: 2px;
1060
+ text-underline-offset: 0.45em;
1061
+ }
1062
+ /* A menu link with links under it: the link, a button beside it, and the links in a panel under them. */
1063
+ .kit-menu-group {
1064
+ position: relative;
1065
+ display: flex;
1066
+ align-items: center;
1067
+ }
1068
+ .kit-menu-wide .kit-menu-group > a {
1069
+ padding-right: 0.25rem;
1070
+ }
1071
+ .kit-menu-group-toggle {
1072
+ display: grid;
1073
+ place-items: center;
1074
+ width: 1.75rem;
1075
+ height: 1.75rem;
1076
+ border: 0;
1077
+ border-radius: calc(var(--look-radius, 8px) / 2);
1078
+ padding: 0;
1079
+ background: none;
1080
+ color: var(--kit-h-ink);
1081
+ cursor: pointer;
1082
+ }
1083
+ .kit-menu-group-toggle:hover {
1084
+ background: var(--kit-h-hover);
1085
+ }
1086
+ .kit-menu-group-toggle:focus-visible {
1087
+ outline: 2px solid var(--look-accent, currentColor);
1088
+ outline-offset: 2px;
1089
+ }
1090
+ .kit-menu-group-toggle .kit-icon {
1091
+ width: 1rem;
1092
+ height: 1rem;
1093
+ transition: transform 0.15s ease;
1094
+ }
1095
+ .kit-menu-group.is-open .kit-menu-group-toggle .kit-icon {
1096
+ transform: rotate(180deg);
1097
+ }
1098
+ .kit-menu-wide .kit-menu-group-list {
1099
+ position: absolute;
1100
+ top: calc(100% + 0.4rem);
1101
+ left: 0;
1102
+ z-index: 30;
1103
+ display: flex;
1104
+ flex-direction: column;
1105
+ gap: 0;
1106
+ min-width: 13rem;
1107
+ padding: 0.4rem;
1108
+ background: var(--look-page, #fff);
1109
+ border: 1px solid var(--look-line, #ddd);
1110
+ border-radius: calc(var(--look-radius, 8px) * 0.75);
1111
+ box-shadow: 0 18px 30px -18px rgb(0 0 0 / 0.25);
1112
+ }
1113
+ .kit-menu-wide .kit-menu-group-list a {
1114
+ color: var(--look-ink, #111);
1115
+ white-space: nowrap;
1116
+ }
1117
+ .kit-menu-wide .kit-menu-group-list[hidden] {
1118
+ display: none;
1119
+ }
1120
+ @media (prefers-reduced-motion: reduce) {
1121
+ .kit-menu-group-toggle .kit-icon {
1122
+ transition: none;
1123
+ }
1124
+ }
1125
+ .kit-header-action {
1126
+ display: inline-flex;
1127
+ align-items: center;
1128
+ gap: 0.5rem;
1129
+ flex-shrink: 0;
1130
+ min-height: 2.75rem;
1131
+ padding: 0.6rem 1.1rem;
1132
+ }
1133
+ .kit-header-action .kit-icon,
1134
+ .kit-menu-narrow .kit-icon {
1135
+ width: 1.15rem;
1136
+ height: 1.15rem;
1137
+ }
1138
+ .kit-menu-narrow {
1139
+ display: none;
1140
+ flex-shrink: 0;
1141
+ }
1142
+ .kit-menu-narrow summary {
1143
+ display: flex;
1144
+ align-items: center;
1145
+ gap: 0.45rem;
1146
+ padding: 0.55rem 0.9rem;
1147
+ border: 1px solid var(--kit-h-line);
1148
+ border-radius: var(--look-button-radius, 6px);
1149
+ color: var(--kit-h-ink);
1150
+ font-weight: 600;
1151
+ list-style: none;
1152
+ cursor: pointer;
1153
+ }
1154
+ /* The phone's menu button as the header's Look says: its icon, the word, or both (its look a button style, kit-btn-n). */
1155
+ .kit-menu-icon .kit-menu-word {
1156
+ position: absolute;
1157
+ width: 1px;
1158
+ height: 1px;
1159
+ overflow: hidden;
1160
+ clip-path: inset(50%);
1161
+ white-space: nowrap;
1162
+ }
1163
+ .kit-menu-icon summary {
1164
+ padding: 0.55rem;
1165
+ }
1166
+ .kit-menu-word summary .kit-icon {
1167
+ display: none;
1168
+ }
1169
+ .kit-menu-narrow summary::-webkit-details-marker {
1170
+ display: none;
1171
+ }
1172
+ .kit-menu-narrow[open] .when-closed,
1173
+ .kit-menu-narrow:not([open]) .when-open {
1174
+ display: none;
1175
+ }
1176
+ .kit-menu-narrow nav {
1177
+ position: absolute;
1178
+ top: 100%;
1179
+ left: 0;
1180
+ right: 0;
1181
+ padding: 0.5rem var(--look-gutter, 20px) 1.5rem;
1182
+ background: var(--look-page, #fff);
1183
+ border-bottom: 1px solid var(--look-line, #ddd);
1184
+ box-shadow: 0 18px 30px -18px rgb(0 0 0 / 0.25);
1185
+ }
1186
+ .kit-menu-narrow ul {
1187
+ margin: 0 0 1.25rem;
1188
+ padding: 0;
1189
+ list-style: none;
1190
+ }
1191
+ .kit-menu-narrow li a {
1192
+ display: block;
1193
+ padding: 0.9rem 0;
1194
+ border-bottom: 1px solid var(--look-line, #ddd);
1195
+ color: var(--look-ink, #111);
1196
+ font-size: 1.125rem;
1197
+ font-weight: 500;
1198
+ text-decoration: none;
1199
+ }
1200
+ .kit-menu-narrow li a[aria-current="page"] {
1201
+ color: var(--look-brand, currentColor);
1202
+ }
1203
+ /* Links under a link, in the phone's menu: indented under it, a little smaller. */
1204
+ .kit-menu-narrow .kit-menu-sub {
1205
+ margin: 0;
1206
+ padding-left: 1.25rem;
1207
+ }
1208
+ .kit-menu-narrow .kit-menu-sub li a {
1209
+ padding: 0.7rem 0;
1210
+ font-size: 1rem;
1211
+ color: var(--look-muted, #666);
1212
+ }
1213
+ .kit-menu-narrow .kit-button {
1214
+ display: block;
1215
+ width: 100%;
1216
+ text-align: center;
1217
+ }
1218
+ @media (min-width: 961px) {
1219
+ /* Centred: the name in the middle, the button at the right, the menu under them. */
1220
+ .kit-header-centered .kit-header-row {
1221
+ display: grid;
1222
+ grid-template-columns: 1fr auto 1fr;
1223
+ padding-block: 0.9rem 0.6rem;
1224
+ row-gap: 0.4rem;
1225
+ }
1226
+ .kit-header-centered .kit-brand {
1227
+ grid-column: 2;
1228
+ margin: 0;
1229
+ justify-self: center;
1230
+ }
1231
+ .kit-header-centered .kit-header-action {
1232
+ grid-column: 3;
1233
+ justify-self: end;
1234
+ }
1235
+ .kit-header-centered .kit-menu-wide {
1236
+ grid-column: 1 / -1;
1237
+ grid-row: 2;
1238
+ justify-self: center;
1239
+ }
1240
+ /* All on the left: the menu beside the name, the button alone at the right. */
1241
+ .kit-header-left .kit-brand {
1242
+ margin-right: 1.5rem;
1243
+ }
1244
+ .kit-header-left .kit-menu-wide {
1245
+ margin-right: auto;
1246
+ }
1247
+ }
1248
+ @media (max-width: 960px) {
1249
+ .kit-menu-wide,
1250
+ .kit-header-action:not(.is-call) {
1251
+ display: none;
1252
+ }
1253
+ .kit-menu-narrow {
1254
+ display: block;
1255
+ }
1256
+ /* On a phone, calling stays one tap away: the button keeps its icon, the number is read out. */
1257
+ .kit-header-action.is-call {
1258
+ justify-content: center;
1259
+ width: 2.75rem;
1260
+ padding: 0;
1261
+ }
1262
+ .kit-header-action.is-call > span {
1263
+ position: absolute;
1264
+ width: 1px;
1265
+ height: 1px;
1266
+ overflow: hidden;
1267
+ clip-path: inset(50%);
1268
+ white-space: nowrap;
1269
+ }
1270
+ .kit-brand-name {
1271
+ font-size: 1.15rem;
1272
+ }
1273
+ }
1274
+
1275
+ .kit-footer {
1276
+ --kit-f-bg: var(--kit-footer-bg, var(--look-dark, #111));
1277
+ --kit-f-ink: var(--kit-footer-fg, var(--look-light, #fff));
1278
+ --kit-f-muted: var(--kit-footer-muted, color-mix(in srgb, var(--kit-f-ink) 70%, var(--kit-f-bg)));
1279
+ --kit-f-line: var(--kit-footer-line, color-mix(in srgb, var(--kit-f-ink) 22%, var(--kit-f-bg)));
1280
+ padding-block: clamp(3rem, 6vw, 4.5rem) 2rem;
1281
+ background: var(--kit-f-bg);
1282
+ color: var(--kit-f-ink);
1283
+ font-family: var(--look-body-font, inherit);
1284
+ font-size: 0.975rem;
1285
+ }
1286
+ .kit-footer-grid {
1287
+ display: grid;
1288
+ grid-template-columns: 1.5fr repeat(3, 1fr);
1289
+ gap: 2.5rem;
1290
+ }
1291
+ .kit-footer-name {
1292
+ margin: 0 0 0.5rem;
1293
+ font-family: var(--look-heading-font, inherit);
1294
+ font-size: 1.5rem;
1295
+ font-weight: var(--look-type-h2-weight, 600);
1296
+ letter-spacing: var(--look-type-h2-tracking, -0.01em);
1297
+ line-height: 1.2;
1298
+ }
1299
+ .kit-footer-muted {
1300
+ margin: 0 0 1.5rem;
1301
+ color: var(--kit-f-muted);
1302
+ }
1303
+ .kit-footer-heading {
1304
+ margin: 0 0 1rem;
1305
+ color: var(--kit-f-muted);
1306
+ font-family: var(--look-body-font, inherit);
1307
+ font-size: 0.8rem;
1308
+ font-weight: 600;
1309
+ letter-spacing: 0.12em;
1310
+ text-transform: uppercase;
1311
+ }
1312
+ .kit-footer-contact {
1313
+ display: grid;
1314
+ gap: 0.9rem;
1315
+ margin: 0 0 1.75rem;
1316
+ padding: 0;
1317
+ list-style: none;
1318
+ }
1319
+ .kit-footer-contact li {
1320
+ display: flex;
1321
+ align-items: flex-start;
1322
+ gap: 0.75rem;
1323
+ }
1324
+ .kit-footer-contact .kit-icon {
1325
+ flex-shrink: 0;
1326
+ width: 1.125rem;
1327
+ height: 1.125rem;
1328
+ margin-top: 0.2rem;
1329
+ color: color-mix(in srgb, var(--look-brand, #888) 55%, var(--kit-f-ink));
1330
+ }
1331
+ .kit-footer a {
1332
+ color: var(--kit-f-ink);
1333
+ }
1334
+ .kit-footer-links {
1335
+ display: grid;
1336
+ gap: 0.55rem;
1337
+ margin: 0;
1338
+ padding: 0;
1339
+ list-style: none;
1340
+ }
1341
+ .kit-footer-links a,
1342
+ .kit-footer-policies a {
1343
+ text-decoration: none;
1344
+ }
1345
+ .kit-footer-links a:hover,
1346
+ .kit-footer-policies a:hover {
1347
+ text-decoration: underline;
1348
+ }
1349
+ .kit-footer-hours {
1350
+ margin: 0 0 0.75rem;
1351
+ }
1352
+ .kit-footer-hours div {
1353
+ display: flex;
1354
+ justify-content: space-between;
1355
+ gap: 1rem;
1356
+ padding: 0.25rem 0;
1357
+ }
1358
+ .kit-footer-hours dt {
1359
+ color: var(--kit-f-muted);
1360
+ }
1361
+ .kit-footer-hours dd {
1362
+ margin: 0;
1363
+ font-variant-numeric: tabular-nums;
1364
+ }
1365
+ .kit-footer-base {
1366
+ display: flex;
1367
+ flex-wrap: wrap;
1368
+ justify-content: space-between;
1369
+ gap: 1rem 2rem;
1370
+ margin-top: 3rem;
1371
+ padding-top: 1.5rem;
1372
+ border-top: 1px solid var(--kit-f-line);
1373
+ color: var(--kit-f-muted);
1374
+ font-size: 0.9rem;
1375
+ }
1376
+ .kit-footer-base p {
1377
+ margin: 0;
1378
+ }
1379
+ .kit-footer-policies {
1380
+ display: flex;
1381
+ flex-wrap: wrap;
1382
+ gap: 0.5rem 1.25rem;
1383
+ margin: 0;
1384
+ padding: 0;
1385
+ list-style: none;
1386
+ }
1387
+ .kit-footer-policies a {
1388
+ color: var(--kit-f-muted);
1389
+ }
1390
+ @media (max-width: 900px) {
1391
+ .kit-footer-grid {
1392
+ grid-template-columns: 1fr 1fr;
1393
+ }
1394
+ .kit-footer-about {
1395
+ grid-column: 1 / -1;
1396
+ }
1397
+ }
1398
+
1399
+ /* Items with titles: a number (01, 02…) beside each title and its line, rules between them. */
1400
+ .kit-own-items {
1401
+ margin: 0;
1402
+ padding: 0;
1403
+ list-style: none;
1404
+ }
1405
+ .kit-own-items li {
1406
+ display: flex;
1407
+ gap: 1.5rem;
1408
+ padding-block: 1.25rem;
1409
+ }
1410
+ .kit-own-items-lines {
1411
+ border-bottom: 1px solid var(--look-line, #ddd);
1412
+ }
1413
+ .kit-own-items-lines li {
1414
+ border-top: 1px solid var(--look-line, #ddd);
1415
+ }
1416
+ .kit-frame-dark .kit-own-items-lines,
1417
+ .kit-frame-dark .kit-own-items-lines li {
1418
+ border-color: color-mix(in srgb, currentColor 25%, transparent);
1419
+ }
1420
+ .kit-own-items-n {
1421
+ flex: none;
1422
+ min-width: 1.5rem;
1423
+ padding-top: 0.4em;
1424
+ font-size: var(--look-type-small-size, 14px);
1425
+ font-variant-numeric: tabular-nums;
1426
+ opacity: 0.8;
1427
+ }
1428
+ .kit-own-items-title {
1429
+ margin: 0;
1430
+ }
1431
+ .kit-own-items-text {
1432
+ margin: 0.35rem 0 0;
1433
+ }
1434
+
1435
+ /* A button in the accent colour (a part's or an action's style), its words in what reads on it, on any background. */
1436
+ .kit-button.kit-button-accent,
1437
+ .kit-frame-dark .kit-button.kit-button-accent {
1438
+ border-color: var(--look-button-border-colour, var(--look-accent, #c9a54a));
1439
+ background: var(--look-accent, #c9a54a);
1440
+ color: var(--look-on-accent, #111);
1441
+ }
1442
+
1443
+ /* A column's parts at its foot or middle, when a column beside it is taller (words at the foot of a tall photo). */
1444
+ .kit-own-column-bottom {
1445
+ align-self: stretch;
1446
+ justify-content: flex-end;
1447
+ }
1448
+ .kit-own-column-middle {
1449
+ align-self: stretch;
1450
+ justify-content: center;
1451
+ }
1452
+
1453
+ /* A part in the Look's other font (a sans title under serif headings); two classes, so a site's own heading class doesn't win. */
1454
+ .kit-own .kit-font-text {
1455
+ font-family: var(--look-body-font, inherit);
1456
+ }
1457
+ .kit-own .kit-font-heading {
1458
+ font-family: var(--look-heading-font, inherit);
1459
+ }
1460
+
1461
+ /* A heading at the Look's largest sizes (Display, Page heading): its size, weight, spacing and line height, smaller on a narrow screen. */
1462
+ .kit-own .kit-type-display {
1463
+ --s: var(--look-type-display-size, 74px);
1464
+ font-size: clamp(calc(var(--s) * 0.5), calc(var(--s) * 0.3 + 4.4vw), var(--s));
1465
+ font-weight: var(--look-type-display-weight, 600);
1466
+ letter-spacing: var(--look-type-display-tracking, -0.01em);
1467
+ line-height: var(--look-type-display-leading, 1.05);
1468
+ }
1469
+ .kit-own .kit-type-h1 {
1470
+ --s: var(--look-type-h1-size, 58px);
1471
+ font-size: clamp(calc(var(--s) * 0.62), calc(var(--s) * 0.41 + 3vw), var(--s));
1472
+ font-weight: var(--look-type-h1-weight, 600);
1473
+ letter-spacing: var(--look-type-h1-tracking, -0.01em);
1474
+ line-height: var(--look-type-h1-leading, 1.1);
1475
+ }
1476
+
1477
+ /* A column against the far edge: its parts to the right (the start on a phone, where columns stack). */
1478
+ @media (min-width: 701px) {
1479
+ .kit-own-column-end {
1480
+ align-items: flex-end;
1481
+ text-align: end;
1482
+ }
1483
+ }
1484
+
1485
+ /* The business's own button styles (Look › Buttons): style n's values are --look-btn-n-* (lookVars). Three classes so a site's own button classes (.btn-primary on a brand band) don't win. */
1486
+ .kit-btn-1.kit-btn-1.kit-btn-1 {
1487
+ border: var(--look-btn-1-bw) solid var(--look-btn-1-bc);
1488
+ border-radius: var(--look-btn-1-radius);
1489
+ background: var(--look-btn-1-bg);
1490
+ color: var(--look-btn-1-fg);
1491
+ padding: var(--look-btn-1-pad);
1492
+ font-size: var(--look-btn-1-size);
1493
+ font-weight: var(--look-btn-1-weight);
1494
+ text-transform: var(--look-btn-1-case);
1495
+ letter-spacing: var(--look-btn-1-track);
1496
+ }
1497
+ .kit-btn-2.kit-btn-2.kit-btn-2 {
1498
+ border: var(--look-btn-2-bw) solid var(--look-btn-2-bc);
1499
+ border-radius: var(--look-btn-2-radius);
1500
+ background: var(--look-btn-2-bg);
1501
+ color: var(--look-btn-2-fg);
1502
+ padding: var(--look-btn-2-pad);
1503
+ font-size: var(--look-btn-2-size);
1504
+ font-weight: var(--look-btn-2-weight);
1505
+ text-transform: var(--look-btn-2-case);
1506
+ letter-spacing: var(--look-btn-2-track);
1507
+ }
1508
+ .kit-btn-3.kit-btn-3.kit-btn-3 {
1509
+ border: var(--look-btn-3-bw) solid var(--look-btn-3-bc);
1510
+ border-radius: var(--look-btn-3-radius);
1511
+ background: var(--look-btn-3-bg);
1512
+ color: var(--look-btn-3-fg);
1513
+ padding: var(--look-btn-3-pad);
1514
+ font-size: var(--look-btn-3-size);
1515
+ font-weight: var(--look-btn-3-weight);
1516
+ text-transform: var(--look-btn-3-case);
1517
+ letter-spacing: var(--look-btn-3-track);
1518
+ }
1519
+ .kit-btn-4.kit-btn-4.kit-btn-4 {
1520
+ border: var(--look-btn-4-bw) solid var(--look-btn-4-bc);
1521
+ border-radius: var(--look-btn-4-radius);
1522
+ background: var(--look-btn-4-bg);
1523
+ color: var(--look-btn-4-fg);
1524
+ padding: var(--look-btn-4-pad);
1525
+ font-size: var(--look-btn-4-size);
1526
+ font-weight: var(--look-btn-4-weight);
1527
+ text-transform: var(--look-btn-4-case);
1528
+ letter-spacing: var(--look-btn-4-track);
1529
+ }
1530
+ .kit-btn-5.kit-btn-5.kit-btn-5 {
1531
+ border: var(--look-btn-5-bw) solid var(--look-btn-5-bc);
1532
+ border-radius: var(--look-btn-5-radius);
1533
+ background: var(--look-btn-5-bg);
1534
+ color: var(--look-btn-5-fg);
1535
+ padding: var(--look-btn-5-pad);
1536
+ font-size: var(--look-btn-5-size);
1537
+ font-weight: var(--look-btn-5-weight);
1538
+ text-transform: var(--look-btn-5-case);
1539
+ letter-spacing: var(--look-btn-5-track);
1540
+ }
1541
+ .kit-btn-6.kit-btn-6.kit-btn-6 {
1542
+ border: var(--look-btn-6-bw) solid var(--look-btn-6-bc);
1543
+ border-radius: var(--look-btn-6-radius);
1544
+ background: var(--look-btn-6-bg);
1545
+ color: var(--look-btn-6-fg);
1546
+ padding: var(--look-btn-6-pad);
1547
+ font-size: var(--look-btn-6-size);
1548
+ font-weight: var(--look-btn-6-weight);
1549
+ text-transform: var(--look-btn-6-case);
1550
+ letter-spacing: var(--look-btn-6-track);
1551
+ }
1552
+ .kit-btn-7.kit-btn-7.kit-btn-7 {
1553
+ border: var(--look-btn-7-bw) solid var(--look-btn-7-bc);
1554
+ border-radius: var(--look-btn-7-radius);
1555
+ background: var(--look-btn-7-bg);
1556
+ color: var(--look-btn-7-fg);
1557
+ padding: var(--look-btn-7-pad);
1558
+ font-size: var(--look-btn-7-size);
1559
+ font-weight: var(--look-btn-7-weight);
1560
+ text-transform: var(--look-btn-7-case);
1561
+ letter-spacing: var(--look-btn-7-track);
1562
+ }
1563
+ .kit-btn-8.kit-btn-8.kit-btn-8 {
1564
+ border: var(--look-btn-8-bw) solid var(--look-btn-8-bc);
1565
+ border-radius: var(--look-btn-8-radius);
1566
+ background: var(--look-btn-8-bg);
1567
+ color: var(--look-btn-8-fg);
1568
+ padding: var(--look-btn-8-pad);
1569
+ font-size: var(--look-btn-8-size);
1570
+ font-weight: var(--look-btn-8-weight);
1571
+ text-transform: var(--look-btn-8-case);
1572
+ letter-spacing: var(--look-btn-8-track);
1573
+ }
1574
+ /* Each a touch darker under the pointer, whatever its colours. */
1575
+ .kit-btn:hover {
1576
+ filter: brightness(0.94);
1577
+ }