@caltho/site-kit 0.2.9 → 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 +63 -8
  2. package/dist/cli/check.js +31 -1
  3. package/dist/content/index.d.ts +318 -23
  4. package/dist/content/index.js +148 -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 +21 -6
  77. package/dist/next/sections.js +167 -6
  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 +284 -2
  87. package/dist/sections/index.js +156 -2
  88. package/dist/sections/presets.d.ts +13 -0
  89. package/dist/sections/presets.js +300 -0
  90. package/dist/sections.css +1393 -9
  91. package/dist/sections.test.js +310 -8
  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);
18
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;
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;
@@ -191,3 +410,1168 @@
191
410
  transition: none;
192
411
  }
193
412
  }
413
+
414
+ /*
415
+ * A section of the business's own: its columns side by side from a tablet up (stacked on a phone),
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.
425
+ */
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);
523
+ }
524
+
525
+ .kit-own-grid {
526
+ display: grid;
527
+ gap: clamp(24px, 4vw, 48px);
528
+ }
529
+ @media (min-width: 720px) {
530
+ .kit-own-two,
531
+ .kit-own-four {
532
+ grid-template-columns: repeat(2, minmax(0, 1fr));
533
+ }
534
+ .kit-own-three {
535
+ grid-template-columns: repeat(3, minmax(0, 1fr));
536
+ }
537
+ .kit-own-wide-left {
538
+ grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
539
+ }
540
+ .kit-own-wide-right {
541
+ grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
542
+ }
543
+ }
544
+ @media (min-width: 1024px) {
545
+ .kit-own-four {
546
+ grid-template-columns: repeat(4, minmax(0, 1fr));
547
+ }
548
+ }
549
+ .kit-own-align-center {
550
+ text-align: center;
551
+ }
552
+ .kit-own-align-center .kit-own-text,
553
+ .kit-own-align-center .kit-own-list {
554
+ margin-inline: auto;
555
+ }
556
+ .kit-own-column {
557
+ display: flex;
558
+ flex-direction: column;
559
+ gap: 16px;
560
+ min-width: 0;
561
+ }
562
+ .kit-own-column > * {
563
+ margin: 0;
564
+ }
565
+ .kit-own-text {
566
+ max-width: 65ch;
567
+ }
568
+ .kit-own-photo {
569
+ margin: 0;
570
+ }
571
+ .kit-own-photo img {
572
+ display: block;
573
+ width: 100%;
574
+ height: auto;
575
+ border-radius: var(--look-radius, 8px);
576
+ object-fit: cover;
577
+ }
578
+ .kit-own-photo img.ratio-1-1 {
579
+ aspect-ratio: 1 / 1;
580
+ }
581
+ .kit-own-photo img.ratio-4-3 {
582
+ aspect-ratio: 4 / 3;
583
+ }
584
+ .kit-own-photo img.ratio-4-5 {
585
+ aspect-ratio: 4 / 5;
586
+ }
587
+ .kit-own-photo figcaption,
588
+ .kit-own-quote figcaption {
589
+ margin-top: 8px;
590
+ opacity: 0.75;
591
+ }
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;
598
+ }
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;
616
+ }
617
+ .kit-own-list {
618
+ max-width: 65ch;
619
+ padding-left: 1.25em;
620
+ }
621
+ .kit-own-list li + li {
622
+ margin-top: 6px;
623
+ }
624
+ .kit-own-list-checks {
625
+ list-style: none;
626
+ padding-left: 0;
627
+ }
628
+ .kit-own-list-checks li::before {
629
+ content: "✓";
630
+ margin-right: 8px;
631
+ color: var(--look-accent, currentColor);
632
+ }
633
+ .kit-own-quote {
634
+ margin: 0;
635
+ }
636
+ .kit-own-quote blockquote {
637
+ margin: 0;
638
+ font-family: var(--look-heading-font, inherit);
639
+ font-size: var(--look-type-h3-size, 1.25rem);
640
+ line-height: 1.4;
641
+ }
642
+ .kit-own-stats {
643
+ display: flex;
644
+ flex-wrap: wrap;
645
+ gap: 16px 32px;
646
+ }
647
+ .kit-own-align-center .kit-own-stats {
648
+ justify-content: center;
649
+ }
650
+ .kit-own-stats div {
651
+ display: flex;
652
+ flex-direction: column-reverse;
653
+ }
654
+ .kit-own-stats dd {
655
+ margin: 0;
656
+ }
657
+ .kit-own-stats dt {
658
+ opacity: 0.75;
659
+ }
660
+ .kit-own-amount {
661
+ }
662
+ .kit-own-per {
663
+ opacity: 0.75;
664
+ }
665
+ .kit-own-note {
666
+ display: block;
667
+ font-size: 0.85rem;
668
+ opacity: 0.75;
669
+ }
670
+ .kit-own-space-small {
671
+ height: 8px;
672
+ }
673
+ .kit-own-space-medium {
674
+ height: 24px;
675
+ }
676
+ .kit-own-space-large {
677
+ height: 56px;
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
+ }