@gemboss/website-ui 0.10.0 → 0.12.0
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.
- package/CHANGELOG.md +99 -0
- package/README.md +2 -2
- package/bin/lib/check.mjs +7 -2
- package/css/base.css +25 -19
- package/css/components.css +22 -9
- package/css/effects.css +1 -1
- package/css/forms.css +1 -1
- package/css/header.css +374 -120
- package/css/layout.css +7 -3
- package/css/sections.css +1 -1
- package/css/tokens.css +33 -3
- package/demo/article.html +58 -70
- package/demo/blog.html +58 -70
- package/demo/brand-profiles.html +57 -27
- package/demo/footer.html +58 -70
- package/demo/forms.html +58 -70
- package/demo/header.html +59 -109
- package/demo/index.html +58 -70
- package/demo/spotlight.html +58 -71
- package/demo/theme-example.html +1 -1
- package/docs/components.md +37 -26
- package/docs/markup-contract.md +54 -24
- package/docs/theming.md +1 -1
- package/js/website.js +315 -48
- package/js/website.mjs +350 -51
- package/package.json +1 -1
- package/system.json +47 -8
- package/templates/header.html +49 -25
- package/templates/page.html +55 -21
- package/website.css +465 -158
- package/website.min.css +1 -1
package/website.css
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
/*! @gemboss/website-ui 0.
|
|
1
|
+
/*! @gemboss/website-ui 0.12.0 | generated by scripts/build.mjs from the files in css/. Edit those and not this file */
|
|
2
2
|
/* @gemboss/website-ui tokens. GENERATED from system.json by scripts/build.mjs: do not edit by hand. */
|
|
3
3
|
:root {
|
|
4
4
|
color-scheme: light;
|
|
5
5
|
--gw-font: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
6
6
|
--gw-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
7
|
+
--gw-font-action: Inter;
|
|
7
8
|
--gw-text-11: 11px;
|
|
8
9
|
--gw-text-12: 12px;
|
|
9
10
|
--gw-text-13: 13px;
|
|
@@ -19,6 +20,8 @@
|
|
|
19
20
|
--gw-display-wordmark: clamp(40px, 9vw, 128px);
|
|
20
21
|
--gw-display-weight: 600;
|
|
21
22
|
--gw-display-tracking: -0.03em;
|
|
23
|
+
--gw-display-h1-leading: 1.1;
|
|
24
|
+
--gw-display-h2-leading: 1.06;
|
|
22
25
|
--gw-heading-weight: 650;
|
|
23
26
|
--gw-heading-tracking: -0.022em;
|
|
24
27
|
--gw-heading-leading: 1.08;
|
|
@@ -42,6 +45,7 @@
|
|
|
42
45
|
--gw-space-120: 120px;
|
|
43
46
|
--gw-space-section: clamp(56px, 38px + 5vw, 110px);
|
|
44
47
|
--gw-radius-0: 0;
|
|
48
|
+
--gw-radius-2: 2px;
|
|
45
49
|
--gw-radius-4: 4px;
|
|
46
50
|
--gw-radius-6: 6px;
|
|
47
51
|
--gw-radius-8: 8px;
|
|
@@ -58,6 +62,7 @@
|
|
|
58
62
|
--gw-shadow: 0 1px 2px rgba(31,30,29,.04), 0 2px 6px rgba(31,30,29,.06);
|
|
59
63
|
--gw-shadow-sm: 0 1px 2px rgba(31,30,29,.04);
|
|
60
64
|
--gw-shadow-raised: 0 4px 16px rgba(31,30,29,.10);
|
|
65
|
+
--gw-shadow-lift: 0 16px 32px -12px rgba(4,5,26,.72), 0 4px 8px -2px rgba(4,5,26,.36);
|
|
61
66
|
--gw-wrap: 1120px;
|
|
62
67
|
--gw-wrap-narrow: 780px;
|
|
63
68
|
--gw-gutter: 22px;
|
|
@@ -69,6 +74,7 @@
|
|
|
69
74
|
--gw-tap-min: 44px;
|
|
70
75
|
--gw-ease: cubic-bezier(.22,1,.36,1);
|
|
71
76
|
--gw-reveal-ms: 700ms;
|
|
77
|
+
--gw-reveal-distance: 20px;
|
|
72
78
|
--gw-spin-ms: 700ms;
|
|
73
79
|
--gw-spot-radius: 260px;
|
|
74
80
|
--gw-spot-radius-action: 120px;
|
|
@@ -81,6 +87,19 @@
|
|
|
81
87
|
--gw-wash-violet: #7c8af7;
|
|
82
88
|
--gw-wash-sky: #43b0ff;
|
|
83
89
|
--gw-wash-mint: #1fcf9f;
|
|
90
|
+
--gw-stage-glow: rgba(139, 147, 255, 0.5);
|
|
91
|
+
--gw-stage-glow-2: rgba(86, 97, 245, 0.34);
|
|
92
|
+
--gw-stage-top: #1d2058;
|
|
93
|
+
--gw-stage-bottom: #0d0f2e;
|
|
94
|
+
--gw-stage-dot: rgba(255, 255, 255, 0.1);
|
|
95
|
+
--gw-stage-ink: #ffffff;
|
|
96
|
+
--gw-announce-bg: #171a38;
|
|
97
|
+
--gw-announce-ink: #b9beda;
|
|
98
|
+
--gw-announce-line: rgba(255, 255, 255, 0.06);
|
|
99
|
+
--gw-announce-tag: rgba(122, 132, 255, 0.2);
|
|
100
|
+
--gw-announce-tag-ink: #a7aeff;
|
|
101
|
+
--gw-announce-link: #ffffff;
|
|
102
|
+
--gw-announce-link-line: rgba(255, 255, 255, 0.28);
|
|
84
103
|
/* accent primitives: the only colours a brand overrides (docs/theming.md) */
|
|
85
104
|
--gw-accent-light: #5661f5;
|
|
86
105
|
--gw-accent-strong-light: #3a44de;
|
|
@@ -117,6 +136,7 @@
|
|
|
117
136
|
--gw-night-2: #141722;
|
|
118
137
|
--gw-on-night: #e3e4e8;
|
|
119
138
|
--gw-on-night-muted: #9aa3ff;
|
|
139
|
+
--gw-scrim: rgba(12, 14, 18, 0.12);
|
|
120
140
|
}
|
|
121
141
|
@media (prefers-color-scheme: dark) {
|
|
122
142
|
:root:not([data-theme="light"]) {
|
|
@@ -130,7 +150,7 @@
|
|
|
130
150
|
--gw-line: #2a2b33;
|
|
131
151
|
--gw-line-strong: #383944;
|
|
132
152
|
--gw-line-control: #6a6d78;
|
|
133
|
-
--gw-action: #
|
|
153
|
+
--gw-action: #e3e4e8;
|
|
134
154
|
--gw-action-hover: #ffffff;
|
|
135
155
|
--gw-on-action: #0d0d12;
|
|
136
156
|
--gw-accent: var(--gw-accent-dark);
|
|
@@ -148,6 +168,10 @@
|
|
|
148
168
|
--gw-night-2: #12141c;
|
|
149
169
|
--gw-on-night: #e3e4e8;
|
|
150
170
|
--gw-on-night-muted: #9aa3ff;
|
|
171
|
+
--gw-scrim: rgba(0, 0, 0, 0.35);
|
|
172
|
+
--gw-shadow: 0 1px 0 rgba(0,0,0,.3);
|
|
173
|
+
--gw-shadow-sm: 0 1px 0 rgba(0,0,0,.25);
|
|
174
|
+
--gw-shadow-raised: 0 4px 16px rgba(0,0,0,.5);
|
|
151
175
|
}
|
|
152
176
|
}
|
|
153
177
|
:root[data-theme="dark"] {
|
|
@@ -161,7 +185,7 @@
|
|
|
161
185
|
--gw-line: #2a2b33;
|
|
162
186
|
--gw-line-strong: #383944;
|
|
163
187
|
--gw-line-control: #6a6d78;
|
|
164
|
-
--gw-action: #
|
|
188
|
+
--gw-action: #e3e4e8;
|
|
165
189
|
--gw-action-hover: #ffffff;
|
|
166
190
|
--gw-on-action: #0d0d12;
|
|
167
191
|
--gw-accent: var(--gw-accent-dark);
|
|
@@ -179,6 +203,10 @@
|
|
|
179
203
|
--gw-night-2: #12141c;
|
|
180
204
|
--gw-on-night: #e3e4e8;
|
|
181
205
|
--gw-on-night-muted: #9aa3ff;
|
|
206
|
+
--gw-scrim: rgba(0, 0, 0, 0.35);
|
|
207
|
+
--gw-shadow: 0 1px 0 rgba(0,0,0,.3);
|
|
208
|
+
--gw-shadow-sm: 0 1px 0 rgba(0,0,0,.25);
|
|
209
|
+
--gw-shadow-raised: 0 4px 16px rgba(0,0,0,.5);
|
|
182
210
|
}
|
|
183
211
|
:root[data-theme="light"] {
|
|
184
212
|
color-scheme: light;
|
|
@@ -209,6 +237,7 @@
|
|
|
209
237
|
--gw-night-2: #141722;
|
|
210
238
|
--gw-on-night: #e3e4e8;
|
|
211
239
|
--gw-on-night-muted: #9aa3ff;
|
|
240
|
+
--gw-scrim: rgba(12, 14, 18, 0.12);
|
|
212
241
|
}
|
|
213
242
|
/* night band: the dark palette inside, on the night ground, in both themes */
|
|
214
243
|
.gw-band--night, .gw-showcase {
|
|
@@ -222,7 +251,7 @@
|
|
|
222
251
|
--gw-line: #2a2b33;
|
|
223
252
|
--gw-line-strong: #383944;
|
|
224
253
|
--gw-line-control: #6a6d78;
|
|
225
|
-
--gw-action: #
|
|
254
|
+
--gw-action: #e3e4e8;
|
|
226
255
|
--gw-action-hover: #ffffff;
|
|
227
256
|
--gw-on-action: #0d0d12;
|
|
228
257
|
--gw-accent: var(--gw-accent-dark);
|
|
@@ -236,6 +265,7 @@
|
|
|
236
265
|
--gw-danger: #ff6b5a;
|
|
237
266
|
--gw-danger-soft: #2e1714;
|
|
238
267
|
--gw-on-danger: #0d0d12;
|
|
268
|
+
--gw-scrim: rgba(0, 0, 0, 0.35);
|
|
239
269
|
}
|
|
240
270
|
/* action profile "accent": data-gw-action="accent" on <html>. In night bands too, where the dark palette applies. */
|
|
241
271
|
:root[data-gw-action="accent"],
|
|
@@ -286,33 +316,34 @@ h1, h2, h3, h4, h5, h6, .gw-h1, .gw-h2, .gw-h3, .gw-h4 {
|
|
|
286
316
|
text-wrap: balance;
|
|
287
317
|
}
|
|
288
318
|
h1, .gw-h1, h2, .gw-h2 { font-weight: var(--gw-display-weight); letter-spacing: var(--gw-display-tracking); }
|
|
289
|
-
h1, .gw-h1 { font-size: var(--gw-display-h1); }
|
|
290
|
-
h2, .gw-h2 { font-size: var(--gw-display-h2); }
|
|
291
|
-
h3,
|
|
319
|
+
h1, .gw-h1 { font-size: var(--gw-display-h1); line-height: var(--gw-display-h1-leading); }
|
|
320
|
+
h2, .gw-h2 { font-size: var(--gw-display-h2); line-height: var(--gw-display-h2-leading); }
|
|
321
|
+
/* h3 (0.12.0): 20px/600, as every h3 on gemboss.ai */
|
|
322
|
+
h3, .gw-h3 { font-size: 20px; font-weight: 600; letter-spacing: -0.02em; line-height: 1.2; }
|
|
292
323
|
h4, .gw-h4 { font-size: 20px; font-weight: 600; letter-spacing: -0.01em; }
|
|
293
324
|
h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
294
325
|
|
|
295
|
-
.gw-lead { font-size: 18px; line-height: 1.55; color: var(--gw-muted); max-width:
|
|
326
|
+
.gw-lead { font-size: 18px; line-height: 1.55; color: var(--gw-muted); max-width: 58ch; }
|
|
296
327
|
.gw-note { font-size: 14px; color: var(--gw-muted); }
|
|
297
328
|
.gw-dim { color: var(--gw-muted); }
|
|
298
329
|
|
|
299
|
-
/* the label above a heading: sentence case, muted, led by the 8px
|
|
330
|
+
/* the label above a heading: sentence case, muted, led by the 8px square, ink by default (0.12.0, as gemboss.ai). The
|
|
331
|
+
input --gw-label-mark paints the square another colour (a product's own, say): set it on the label or on anything
|
|
332
|
+
around it, e.g. style="--gw-label-mark: var(--gw-accent)". */
|
|
300
333
|
.gw-label {
|
|
301
334
|
display: inline-flex;
|
|
302
335
|
align-items: center;
|
|
303
336
|
gap: 8px;
|
|
304
337
|
font-size: 13px;
|
|
305
338
|
font-weight: 500;
|
|
306
|
-
line-height: 1.4;
|
|
307
339
|
color: var(--gw-muted);
|
|
308
340
|
}
|
|
309
341
|
.gw-label::before {
|
|
310
342
|
content: "";
|
|
311
|
-
flex: none;
|
|
312
343
|
width: 8px;
|
|
313
344
|
height: 8px;
|
|
314
|
-
border-radius: var(--gw-radius-
|
|
315
|
-
background: var(--gw-
|
|
345
|
+
border-radius: var(--gw-radius-2);
|
|
346
|
+
background: var(--gw-label-mark, var(--gw-ink));
|
|
316
347
|
}
|
|
317
348
|
|
|
318
349
|
/* links inside running text (and anywhere in .gw-prose) get a visible link style; everything else opts in with .gw-link */
|
|
@@ -328,22 +359,26 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
328
359
|
:where(p, dd, td, figcaption, .gw-list--check li, .gw-prose) a:not([class]):hover,
|
|
329
360
|
.gw-link:hover { text-decoration-color: currentColor; }
|
|
330
361
|
|
|
331
|
-
|
|
362
|
+
/* the focus ring, as gemboss.ai draws it (0.11.0): 2px of accent, 3px out, 4px corners */
|
|
363
|
+
:focus-visible { border-radius: var(--gw-radius-4); outline: 2px solid var(--gw-accent); outline-offset: 3px; }
|
|
332
364
|
[id] { scroll-margin-top: calc(var(--gw-header-height) + 16px); }
|
|
333
365
|
|
|
366
|
+
/* the skip link (0.12.0, gemboss.ai's): the accent tab in the top left corner, shown while it has the focus */
|
|
334
367
|
.gw-skip {
|
|
335
368
|
position: absolute;
|
|
336
369
|
left: -9999px;
|
|
337
|
-
top:
|
|
338
|
-
z-index:
|
|
339
|
-
padding: 12px
|
|
340
|
-
border-radius: var(--gw-radius-
|
|
341
|
-
background: var(--gw-
|
|
342
|
-
color: var(--gw-on-
|
|
370
|
+
top: 0;
|
|
371
|
+
z-index: 200;
|
|
372
|
+
padding: 12px 20px;
|
|
373
|
+
border-radius: 0 0 var(--gw-radius-card) 0;
|
|
374
|
+
background: var(--gw-accent);
|
|
375
|
+
color: var(--gw-on-accent);
|
|
376
|
+
box-shadow: var(--gw-shadow);
|
|
343
377
|
font-size: 14px;
|
|
344
378
|
font-weight: 600;
|
|
345
379
|
}
|
|
346
|
-
|
|
380
|
+
/* its corner again with the focus: a page's own :focus-visible corners, loaded after the kit, must not round the tab */
|
|
381
|
+
.gw-skip:focus { left: 0; border-radius: 0 0 var(--gw-radius-card) 0; }
|
|
347
382
|
|
|
348
383
|
/* words for a screen reader only (0.7.0): " (opens in a new tab)" in a link with target="_blank" */
|
|
349
384
|
.gw-visually-hidden {
|
|
@@ -357,10 +392,11 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
357
392
|
border: 0;
|
|
358
393
|
}
|
|
359
394
|
|
|
360
|
-
/* scroll reveal: the script adds .is-in
|
|
395
|
+
/* scroll reveal: the script adds .is-in (system.json motion.reveal: when, the stagger, the failsafe); the animation is
|
|
396
|
+
a second failsafe, for a page whose script never ran, that shows it anyway after 2.5s */
|
|
361
397
|
.gw-reveal {
|
|
362
398
|
opacity: 0;
|
|
363
|
-
transform: translateY(
|
|
399
|
+
transform: translateY(var(--gw-reveal-distance));
|
|
364
400
|
transition: opacity var(--gw-reveal-ms) var(--gw-ease), transform var(--gw-reveal-ms) var(--gw-ease);
|
|
365
401
|
animation: gw-reveal-failsafe 1ms linear 2.5s forwards;
|
|
366
402
|
}
|
|
@@ -386,15 +422,19 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
386
422
|
@media (min-width: 768px) { .gw-section--tight { padding-block: 64px; } }
|
|
387
423
|
|
|
388
424
|
/* label + h2 + one or two lines; the vertical flow of every text block in the kit */
|
|
389
|
-
.gw-section__head { max-width:
|
|
425
|
+
.gw-section__head { max-width: 760px; }
|
|
390
426
|
.gw-section__head--center { margin-inline: auto; text-align: center; }
|
|
391
427
|
.gw-section__head--center .gw-lead { margin-inline: auto; }
|
|
392
|
-
.
|
|
393
|
-
|
|
428
|
+
/* what follows a head starts 40px under it, 48px from 768px (0.12.0): a top margin on the next thing, at no
|
|
429
|
+
specificity, so a block that brings its own (a FAQ's 40px, say) keeps it */
|
|
430
|
+
:where(.gw-section__head) + * { margin-top: 40px; }
|
|
431
|
+
@media (min-width: 768px) { :where(.gw-section__head) + * { margin-top: 48px; } }
|
|
394
432
|
|
|
395
433
|
:where(.gw-section__head, .gw-hero > .gw-wrap, .gw-split > :not(.gw-window), .gw-cta, .gw-card, .gw-feature, .gw-plan) > * + * { margin-top: 16px; }
|
|
396
434
|
:where(.gw-section__head, .gw-hero > .gw-wrap, .gw-split > :not(.gw-window), .gw-cta, .gw-card, .gw-plan) > :is(.gw-actions, .gw-segmented) { margin-top: 32px; }
|
|
397
435
|
:where(.gw-section__head, .gw-hero > .gw-wrap, .gw-split > :not(.gw-window), .gw-cta, .gw-card, .gw-plan) > .gw-list--check { margin-top: 24px; }
|
|
436
|
+
/* a lead under a heading: 20px (0.12.0, as gemboss.ai); in a hero it keeps the 16px of the flow */
|
|
437
|
+
:where(.gw-section__head, .gw-split > :not(.gw-window), .gw-cta) > :where(* + .gw-lead) { margin-top: 20px; }
|
|
398
438
|
|
|
399
439
|
/* a row of actions: one .gw-btn, then a secondary or a link */
|
|
400
440
|
.gw-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
|
|
@@ -436,12 +476,12 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
436
476
|
|
|
437
477
|
/* actions are rectangles: 40px, the action radius of the site's profile (8, 12 in soft), 14px/600, sentence case.
|
|
438
478
|
The fill is the action colour: ink, or the brand's accent under data-gw-action="accent" (tokens.css). Never a
|
|
439
|
-
gradient
|
|
479
|
+
gradient or a wash hue. On hover (0.12.0, as gemboss.ai) the filled button rises 1px onto the rest shadow; the framed
|
|
480
|
+
and frameless ones only change their frame or tint. Phones: see "touch" below. */
|
|
440
481
|
.gw-btn {
|
|
441
482
|
position: relative;
|
|
442
483
|
display: inline-flex;
|
|
443
484
|
align-items: center;
|
|
444
|
-
justify-content: center;
|
|
445
485
|
gap: 8px;
|
|
446
486
|
max-width: 100%;
|
|
447
487
|
height: var(--gw-button-height);
|
|
@@ -450,26 +490,34 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
450
490
|
border-radius: var(--gw-radius-action);
|
|
451
491
|
background: var(--gw-action);
|
|
452
492
|
color: var(--gw-on-action);
|
|
493
|
+
font-family: var(--gw-font-action);
|
|
453
494
|
font-size: 14px;
|
|
454
495
|
font-weight: 600;
|
|
455
|
-
line-height: 1.4;
|
|
456
496
|
letter-spacing: 0;
|
|
457
497
|
text-align: center;
|
|
458
498
|
white-space: nowrap;
|
|
459
499
|
cursor: pointer;
|
|
500
|
+
transition: background 0.15s ease, border-color 0.15s ease;
|
|
460
501
|
}
|
|
461
|
-
.gw-btn:hover {
|
|
502
|
+
.gw-btn:hover { transform: translateY(-1px); box-shadow: var(--gw-shadow); }
|
|
462
503
|
.gw-btn svg { flex: none; width: 16px; height: 16px; }
|
|
463
504
|
.gw-btn--secondary { background: transparent; border-color: var(--gw-line-strong); color: var(--gw-ink); }
|
|
464
505
|
.gw-btn--secondary:hover { background: transparent; border-color: var(--gw-ink); }
|
|
465
506
|
.gw-btn--ghost { background: transparent; color: var(--gw-ink); }
|
|
466
507
|
.gw-btn--ghost:hover { background: var(--gw-bg-soft); }
|
|
508
|
+
.gw-btn:is(.gw-btn--secondary, .gw-btn--ghost):hover { transform: none; box-shadow: none; }
|
|
509
|
+
/* an arrow after the label (→), nudged 3px on hover */
|
|
510
|
+
.gw-btn__arrow { letter-spacing: 0; transition: transform 0.18s ease; }
|
|
511
|
+
.gw-btn:hover .gw-btn__arrow { transform: translateX(3px); }
|
|
512
|
+
|
|
467
513
|
.gw-btn--on-night { background: var(--gw-on-night); color: var(--gw-night); }
|
|
468
514
|
.gw-btn--on-night:hover { background: var(--gw-on-night); opacity: 0.88; }
|
|
469
515
|
.gw-btn--sm { height: 36px; padding: 0 16px; }
|
|
470
516
|
.gw-btn--sm::after { content: ""; position: absolute; top: -6px; right: 0; bottom: -6px; left: 0; }
|
|
471
517
|
.gw-btn--lg { height: 48px; padding: 0 24px; font-size: 16px; }
|
|
472
|
-
.
|
|
518
|
+
/* a button wider than its label keeps the label at its start (as gemboss.ai), unless it is made wide on purpose: full
|
|
519
|
+
width (--block), a phone's row of actions, an inline form */
|
|
520
|
+
.gw-btn--block { display: flex; width: 100%; justify-content: center; }
|
|
473
521
|
.gw-btn:disabled, .gw-btn[aria-disabled="true"] { opacity: 0.48; cursor: not-allowed; pointer-events: none; }
|
|
474
522
|
/* pressed: the ink one step darker (the hover ink, as the dashboard's primary), nothing moves; the frameless variants
|
|
475
523
|
take one more step of tint */
|
|
@@ -768,33 +816,72 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
768
816
|
.gw-faq__item[open] > summary::after { transform: rotate(45deg); }
|
|
769
817
|
.gw-faq__item > :not(summary) { margin: 0 0 20px; max-width: 68ch; color: var(--gw-muted); font-size: 16px; }
|
|
770
818
|
|
|
771
|
-
/* touch: every control is at least 44px tall,
|
|
772
|
-
|
|
819
|
+
/* touch: every control is at least 44px tall. A button up to 768px (0.12.0, as gemboss.ai: by the width, not the
|
|
820
|
+
pointer), its label wrapping (and tighter) from 480px down in the page's <main>, so a long one never pushes the page
|
|
821
|
+
sideways (a header or an overlay outside <main> keeps its one line) */
|
|
822
|
+
@media (max-width: 768px) {
|
|
773
823
|
.gw-btn, .gw-btn--sm, .gw-btn--lg {
|
|
774
824
|
height: auto;
|
|
775
825
|
min-height: var(--gw-tap-min);
|
|
776
826
|
padding-block: 8px;
|
|
777
|
-
white-space: normal;
|
|
778
|
-
text-wrap: balance;
|
|
779
827
|
}
|
|
780
828
|
.gw-btn--lg { min-height: 48px; }
|
|
829
|
+
}
|
|
830
|
+
@media (max-width: 480px) {
|
|
831
|
+
:where(main) .gw-btn { white-space: normal; line-height: 1.35; }
|
|
832
|
+
}
|
|
833
|
+
@media (max-width: 768px), (pointer: coarse) {
|
|
781
834
|
:is(a, button, label).gw-chip { min-height: var(--gw-tap-min); }
|
|
782
835
|
.gw-segmented > button { height: auto; min-height: var(--gw-tap-min); padding-block: 8px; white-space: normal; text-wrap: balance; }
|
|
783
836
|
}
|
|
784
837
|
|
|
785
|
-
/* header: announcement, a flat 64px bar with one hairline, mega menu, mobile menu
|
|
838
|
+
/* header: announcement, a flat 64px bar with one hairline, mega menu, mobile menu up to 1080px.
|
|
786
839
|
Not a floating pill: no radius, no blur, no shadow on the bar. Nothing tucks under it. A brand may choose the one
|
|
787
|
-
other shape, .gw-header--float (an inset card from
|
|
840
|
+
other shape, .gw-header--float (an inset card from 1081px, at the end of this file). */
|
|
841
|
+
/* the announcement bar (0.12.0, gemboss.ai's): one sentence on its own ground over the header, the same in both themes
|
|
842
|
+
(system.json color.announce). A small pill may lead it (.gw-announce__tag); its link is light, underlined by a hairline
|
|
843
|
+
that brightens on hover. From 520px down, 12px words and a slimmer bar. */
|
|
788
844
|
.gw-announce {
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
845
|
+
position: relative;
|
|
846
|
+
z-index: 60;
|
|
847
|
+
padding: 12px 16px;
|
|
848
|
+
border-bottom: 1px solid var(--gw-announce-line);
|
|
849
|
+
background: var(--gw-announce-bg);
|
|
850
|
+
color: var(--gw-announce-ink);
|
|
793
851
|
font-size: 13px;
|
|
852
|
+
font-weight: 500;
|
|
794
853
|
line-height: 1.5;
|
|
854
|
+
letter-spacing: 0.005em;
|
|
795
855
|
text-align: center;
|
|
796
856
|
}
|
|
797
|
-
.
|
|
857
|
+
/* 2.5px above and below, as gemboss.ai draws the pill (21.5px tall): the one half pixel in the kit */
|
|
858
|
+
.gw-announce__tag {
|
|
859
|
+
display: inline-block;
|
|
860
|
+
margin-right: 12px;
|
|
861
|
+
padding: 2.5px 8px;
|
|
862
|
+
border-radius: var(--gw-radius-chip);
|
|
863
|
+
background: var(--gw-announce-tag);
|
|
864
|
+
color: var(--gw-announce-tag-ink);
|
|
865
|
+
font-size: 11px;
|
|
866
|
+
font-weight: 700;
|
|
867
|
+
letter-spacing: 0.09em;
|
|
868
|
+
vertical-align: 1px;
|
|
869
|
+
}
|
|
870
|
+
.gw-announce a {
|
|
871
|
+
margin-left: 8px;
|
|
872
|
+
padding-bottom: 2px;
|
|
873
|
+
border-bottom: 1px solid var(--gw-announce-link-line);
|
|
874
|
+
color: var(--gw-announce-link);
|
|
875
|
+
font-weight: 600;
|
|
876
|
+
text-decoration: none;
|
|
877
|
+
white-space: nowrap;
|
|
878
|
+
transition: border-color 0.18s;
|
|
879
|
+
}
|
|
880
|
+
.gw-announce a:hover { border-bottom-color: var(--gw-announce-link); }
|
|
881
|
+
@media (max-width: 520px) {
|
|
882
|
+
.gw-announce { padding: 8px 12px; font-size: 12px; }
|
|
883
|
+
.gw-announce__tag { margin-right: 6px; }
|
|
884
|
+
}
|
|
798
885
|
|
|
799
886
|
.gw-header {
|
|
800
887
|
position: sticky;
|
|
@@ -804,47 +891,54 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
804
891
|
background: var(--gw-surface);
|
|
805
892
|
}
|
|
806
893
|
.gw-header.is-scrolled { border-bottom-color: var(--gw-line-strong); }
|
|
807
|
-
|
|
894
|
+
/* the bar is 12px wider than the page's wrap with 24px inside, as gemboss.ai draws it (1132px; its content starts
|
|
895
|
+
18px in from the page's), 6px inside up to 640px. Its own width, whatever order the stylesheets load in: a bar that
|
|
896
|
+
also carries .gw-wrap (0.10.0 markup) still takes this one. */
|
|
897
|
+
.gw-header__bar { display: flex; align-items: center; gap: 32px; height: var(--gw-header-height); }
|
|
898
|
+
.gw-header > .gw-header__bar { width: min(100% - 32px, var(--gw-wrap) + 12px); margin-inline: auto; padding-inline: 24px; }
|
|
899
|
+
@media (max-width: 640px) { .gw-header > .gw-header__bar { padding-inline: 6px; } }
|
|
808
900
|
|
|
809
901
|
.gw-brand {
|
|
810
902
|
display: inline-flex;
|
|
811
903
|
align-items: center;
|
|
812
904
|
gap: 8px;
|
|
813
905
|
flex: none;
|
|
814
|
-
min-height: 44px;
|
|
815
906
|
color: var(--gw-ink);
|
|
816
907
|
font-size: 18px;
|
|
817
908
|
font-weight: 700;
|
|
818
909
|
letter-spacing: -0.01em;
|
|
910
|
+
line-height: 1.6;
|
|
819
911
|
white-space: nowrap;
|
|
820
912
|
}
|
|
821
|
-
|
|
822
|
-
.gw-
|
|
913
|
+
/* the mark: 34px, its corners clipped at 8px, as gemboss.ai (0.11.0; was 26px); a 44px row up to 768px */
|
|
914
|
+
.gw-brand__mark { flex: none; width: 34px; height: 34px; border-radius: var(--gw-radius-8); }
|
|
915
|
+
@media (max-width: 768px) { .gw-brand { min-height: 44px; } }
|
|
916
|
+
.gw-brand__name { line-height: inherit; }
|
|
823
917
|
|
|
824
918
|
/* desktop nav */
|
|
825
|
-
.gw-nav { display: none; }
|
|
919
|
+
.gw-nav { display: none; margin-left: 6px; }
|
|
826
920
|
.gw-nav__list { display: flex; align-items: center; gap: 4px; margin: 0; padding: 0; list-style: none; }
|
|
827
921
|
.gw-nav__trigger,
|
|
828
922
|
.gw-nav__link {
|
|
829
923
|
display: inline-flex;
|
|
830
924
|
align-items: center;
|
|
831
925
|
gap: 6px;
|
|
832
|
-
|
|
833
|
-
padding: 0 12px;
|
|
926
|
+
padding: 8px 12px;
|
|
834
927
|
border: 0;
|
|
835
928
|
border-radius: var(--gw-radius-action);
|
|
836
929
|
background: transparent;
|
|
837
930
|
color: var(--gw-ink-2);
|
|
838
931
|
font-size: 14px;
|
|
839
932
|
font-weight: 500;
|
|
840
|
-
line-height: 1.
|
|
933
|
+
line-height: 1.6;
|
|
841
934
|
white-space: nowrap;
|
|
842
935
|
cursor: pointer;
|
|
843
936
|
}
|
|
844
937
|
.gw-nav__trigger:hover,
|
|
845
938
|
.gw-nav__link:hover,
|
|
846
939
|
.gw-nav__item.is-open > .gw-nav__trigger { background: var(--gw-bg-soft); color: var(--gw-ink); }
|
|
847
|
-
/* the chevron:
|
|
940
|
+
/* the chevron: gemboss.ai's own 24px path (2.6 stroke, square ends) at 12px and 55%, drawn as a mask so it takes
|
|
941
|
+
currentColor */
|
|
848
942
|
.gw-nav__trigger::after,
|
|
849
943
|
.gw-mobile-menu__group > summary::after {
|
|
850
944
|
content: "";
|
|
@@ -852,97 +946,281 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
852
946
|
width: 12px;
|
|
853
947
|
height: 12px;
|
|
854
948
|
background: currentColor;
|
|
855
|
-
opacity: 0.
|
|
856
|
-
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 9l6 6 6-6' fill='none' stroke='%23000' stroke-width='2.6'
|
|
857
|
-
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 9l6 6 6-6' fill='none' stroke='%23000' stroke-width='2.6'
|
|
949
|
+
opacity: 0.55;
|
|
950
|
+
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 9l6 6 6-6' fill='none' stroke='%23000' stroke-width='2.6'/%3E%3C/svg%3E") center / 12px no-repeat;
|
|
951
|
+
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 9l6 6 6-6' fill='none' stroke='%23000' stroke-width='2.6'/%3E%3C/svg%3E") center / 12px no-repeat;
|
|
858
952
|
transition: transform 0.18s var(--gw-ease);
|
|
859
953
|
}
|
|
860
954
|
.gw-nav__trigger[aria-expanded="true"]::after,
|
|
861
955
|
.gw-mobile-menu__group[open] > summary::after { transform: rotate(180deg); }
|
|
862
|
-
.
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
956
|
+
/* the menu's own words are drawn 0.005em tighter (a text action in the bar keeps its tracking); the page you are on,
|
|
957
|
+
or the section it belongs to (aria-current on the section's name), is named in the accent's strong ink, weight 600,
|
|
958
|
+
as gemboss.ai (0.11.0; was ink with an underline) */
|
|
959
|
+
.gw-nav .gw-nav__trigger,
|
|
960
|
+
.gw-nav .gw-nav__link { letter-spacing: -0.005em; }
|
|
961
|
+
.gw-nav__link[aria-current="page"],
|
|
962
|
+
.gw-nav__trigger[aria-current] { color: var(--gw-accent-strong); font-weight: 600; }
|
|
963
|
+
|
|
964
|
+
/* mega menu (0.11.0): gemboss.ai's own, 1:1 (Chris 26/10/2026). A section's name is a link to its page that opens its
|
|
965
|
+
panel: after the pointer rests 200ms, at once from the keyboard, ArrowDown steps into the first row. From 1081px the
|
|
966
|
+
script draws ONE surface (.gw-mega-surface) that morphs to the open panel's size and place, the panels crossfade on
|
|
967
|
+
it, clipped to its outline while it moves, a caret points at the open name, a pill glides under the hovered name and
|
|
968
|
+
a highlight under the hovered row, and the preview pane follows the row. The page behind dims and blurs (.gw-scrim).
|
|
969
|
+
A panel: .gw-mega__body (columns of rows, then an aside of pictures) and an optional .gw-mega__foot strip. Its width
|
|
970
|
+
and its aside's width are the markup's (--gw-mega-w, --gw-mega-pv; 1000 and 320 when it says nothing), its columns
|
|
971
|
+
too (--gw-mega-cols, 3). Without the script the panels stay hidden and every name is still its page's link. */
|
|
972
|
+
.gw-header { --gw-mega-ease: cubic-bezier(0.25, 1, 0.5, 1); --gw-mega-t: 0.36s; --gw-mega-glide: 0.26s; }
|
|
973
|
+
.gw-nav__item { display: flex; }
|
|
974
|
+
/* gemboss.ai's chevron is an inline 12px SVG after the name (.gw-nav__chev); a name without one keeps the drawn mask */
|
|
975
|
+
.gw-nav__chev { flex: none; opacity: 0.55; transition: transform 0.18s; }
|
|
976
|
+
.gw-nav__trigger:has(> .gw-nav__chev)::after { content: none; }
|
|
977
|
+
.gw-nav__trigger[aria-expanded="true"] > .gw-nav__chev { transform: rotate(180deg); }
|
|
978
|
+
.gw-mega-surface,
|
|
979
|
+
.gw-mega-caret,
|
|
980
|
+
.gw-nav__pill,
|
|
981
|
+
.gw-mega__hl { display: none; }
|
|
982
|
+
.gw-scrim {
|
|
983
|
+
position: fixed;
|
|
984
|
+
inset: 0;
|
|
985
|
+
z-index: 40;
|
|
986
|
+
pointer-events: none;
|
|
987
|
+
opacity: 0;
|
|
988
|
+
background: var(--gw-scrim);
|
|
989
|
+
-webkit-backdrop-filter: blur(4px);
|
|
990
|
+
backdrop-filter: blur(4px);
|
|
991
|
+
transition: opacity 0.24s;
|
|
992
|
+
}
|
|
993
|
+
.gw-scrim.is-on { opacity: 1; }
|
|
994
|
+
/* a link in a panel sets its words at 16px, weight 500, 0.005em tighter, as gemboss.ai; its parts size themselves and
|
|
995
|
+
inherit the rest (a row's line is weight 500, its tracking the 16px one) */
|
|
996
|
+
.gw-mega a { font-size: 16px; font-weight: 500; letter-spacing: -0.005em; }
|
|
997
|
+
.gw-mega__link b { display: block; }
|
|
998
|
+
.gw-mega__link i { display: block; font-style: normal; }
|
|
999
|
+
@media (min-width: 1081px) {
|
|
1000
|
+
.gw-header.has-mega .gw-nav__trigger,
|
|
1001
|
+
.gw-header.has-mega .gw-nav__link { position: relative; z-index: 1; background: none; }
|
|
1002
|
+
.gw-header.has-mega .gw-nav__trigger:hover,
|
|
1003
|
+
.gw-header.has-mega .gw-nav__link:hover,
|
|
1004
|
+
.gw-header.has-mega .gw-nav__item:hover > .gw-nav__trigger,
|
|
1005
|
+
.gw-header.has-mega .gw-nav__item:focus-within > .gw-nav__trigger { background: none; color: var(--gw-ink); }
|
|
1006
|
+
.gw-header.has-mega .gw-nav__chev { transform: none; transition: transform 0.2s var(--gw-mega-ease); }
|
|
1007
|
+
.gw-header.has-mega .gw-nav__trigger[aria-expanded="true"] > .gw-nav__chev { transform: rotate(180deg); }
|
|
1008
|
+
.gw-nav__pill {
|
|
1009
|
+
display: block;
|
|
1010
|
+
position: absolute;
|
|
1011
|
+
left: 0;
|
|
1012
|
+
top: 0;
|
|
1013
|
+
z-index: 0;
|
|
1014
|
+
width: 0;
|
|
1015
|
+
height: 0;
|
|
1016
|
+
border-radius: var(--gw-radius-action);
|
|
1017
|
+
pointer-events: none;
|
|
1018
|
+
opacity: 0;
|
|
1019
|
+
background: color-mix(in srgb, var(--gw-ink) 6%, transparent);
|
|
1020
|
+
transition: translate var(--gw-mega-glide) var(--gw-mega-ease), width var(--gw-mega-glide) var(--gw-mega-ease), opacity 0.2s ease;
|
|
1021
|
+
}
|
|
1022
|
+
.gw-nav__pill.is-on { opacity: 1; }
|
|
1023
|
+
.gw-mega-surface {
|
|
1024
|
+
display: block;
|
|
1025
|
+
position: absolute;
|
|
1026
|
+
left: 0;
|
|
1027
|
+
top: var(--gw-mega-top, 73px);
|
|
1028
|
+
z-index: 88;
|
|
1029
|
+
width: 0;
|
|
1030
|
+
height: 0;
|
|
1031
|
+
pointer-events: none;
|
|
1032
|
+
border: 1px solid var(--gw-line);
|
|
1033
|
+
border-radius: var(--gw-radius-popover);
|
|
1034
|
+
background: var(--gw-surface);
|
|
1035
|
+
box-shadow: var(--gw-shadow-raised);
|
|
1036
|
+
opacity: 0;
|
|
1037
|
+
translate: 0 -6px;
|
|
1038
|
+
transition: opacity 0.22s ease, translate var(--gw-mega-t) var(--gw-mega-ease), left var(--gw-mega-t) var(--gw-mega-ease), width var(--gw-mega-t) var(--gw-mega-ease), height var(--gw-mega-t) var(--gw-mega-ease);
|
|
1039
|
+
}
|
|
1040
|
+
.gw-mega-caret {
|
|
1041
|
+
display: block;
|
|
1042
|
+
position: absolute;
|
|
1043
|
+
left: 0;
|
|
1044
|
+
top: calc(var(--gw-mega-top, 73px) - 5px);
|
|
1045
|
+
z-index: 89;
|
|
1046
|
+
width: 12px;
|
|
1047
|
+
height: 12px;
|
|
1048
|
+
pointer-events: none;
|
|
1049
|
+
border-top: 1px solid var(--gw-line);
|
|
1050
|
+
border-left: 1px solid var(--gw-line);
|
|
1051
|
+
border-radius: var(--gw-radius-2) 0 0 0;
|
|
1052
|
+
background: var(--gw-surface);
|
|
1053
|
+
rotate: 45deg;
|
|
1054
|
+
opacity: 0;
|
|
1055
|
+
transition: opacity 0.22s ease, translate var(--gw-mega-t) var(--gw-mega-ease);
|
|
1056
|
+
}
|
|
1057
|
+
.gw-header.is-mega-open .gw-mega-surface,
|
|
1058
|
+
.gw-header.is-mega-open .gw-mega-caret { opacity: 1; }
|
|
1059
|
+
.gw-header.has-mega .gw-mega {
|
|
1060
|
+
position: absolute;
|
|
1061
|
+
top: var(--gw-mega-top, 73px);
|
|
1062
|
+
left: 0;
|
|
1063
|
+
z-index: 90;
|
|
1064
|
+
width: var(--gw-mega-w, 1000px);
|
|
1065
|
+
max-width: calc(100vw - 48px);
|
|
1066
|
+
border-radius: var(--gw-radius-popover);
|
|
1067
|
+
opacity: 0;
|
|
1068
|
+
visibility: hidden;
|
|
1069
|
+
pointer-events: none;
|
|
1070
|
+
translate: 0 -6px;
|
|
1071
|
+
transition: opacity 0.14s ease, translate var(--gw-mega-t) var(--gw-mega-ease), clip-path var(--gw-mega-t) var(--gw-mega-ease), visibility 0s linear var(--gw-mega-t);
|
|
1072
|
+
}
|
|
1073
|
+
.gw-header.has-mega.is-mega-open .gw-mega { translate: 0 0; }
|
|
1074
|
+
.gw-header.has-mega.is-mega-open .gw-nav__item.is-open > .gw-mega {
|
|
1075
|
+
opacity: 1;
|
|
1076
|
+
visibility: visible;
|
|
1077
|
+
pointer-events: auto;
|
|
1078
|
+
transition: opacity 0.24s var(--gw-mega-ease) 0.05s, translate var(--gw-mega-t) var(--gw-mega-ease), clip-path var(--gw-mega-t) var(--gw-mega-ease), visibility 0s;
|
|
1079
|
+
}
|
|
1080
|
+
.gw-mega__body,
|
|
1081
|
+
.gw-mega__foot { translate: var(--gw-mega-dx, 0px) 0; transition: translate var(--gw-mega-t) var(--gw-mega-ease); }
|
|
1082
|
+
.gw-mega__body { display: grid; grid-template-columns: minmax(0, 1fr) var(--gw-mega-pv, 320px); gap: 16px; padding: 12px; }
|
|
1083
|
+
.gw-mega__body:not(:has(> .gw-mega__aside)) { grid-template-columns: minmax(0, 1fr); }
|
|
1084
|
+
.gw-mega__grid { position: relative; display: grid; grid-template-columns: repeat(var(--gw-mega-cols, 3), minmax(0, 1fr)); gap: 0 12px; padding: 12px 0 0; align-content: start; }
|
|
1085
|
+
.gw-mega__col { display: flex; flex-direction: column; gap: 2px; }
|
|
1086
|
+
.gw-mega__heading { position: relative; z-index: 1; margin: 0; padding: 0 12px 8px; color: var(--gw-muted); font-size: 12px; font-weight: 500; line-height: 16px; }
|
|
1087
|
+
.gw-mega__link { position: relative; z-index: 1; display: block; padding: 12px; border-radius: var(--gw-radius-action); color: var(--gw-ink); }
|
|
1088
|
+
.gw-mega__link:focus-visible { outline: 2px solid var(--gw-accent); outline-offset: -2px; }
|
|
1089
|
+
.gw-mega__link b { color: var(--gw-ink); font-size: 14px; font-weight: 500; letter-spacing: 0; line-height: 20px; }
|
|
1090
|
+
.gw-mega__link i { margin-top: 2px; color: var(--gw-muted); font-size: 13px; line-height: 18px; }
|
|
1091
|
+
.gw-mega__link > .gw-mega__icon,
|
|
1092
|
+
.gw-mega__link > img { display: none; }
|
|
1093
|
+
.gw-mega__hl {
|
|
1094
|
+
display: block;
|
|
1095
|
+
position: absolute;
|
|
1096
|
+
left: 0;
|
|
1097
|
+
top: 0;
|
|
1098
|
+
z-index: 0;
|
|
1099
|
+
width: 0;
|
|
1100
|
+
height: 0;
|
|
1101
|
+
border-radius: var(--gw-radius-action);
|
|
1102
|
+
pointer-events: none;
|
|
1103
|
+
opacity: 0;
|
|
1104
|
+
background: color-mix(in srgb, var(--gw-ink) 5%, transparent);
|
|
1105
|
+
transition: translate var(--gw-mega-glide) var(--gw-mega-ease), width var(--gw-mega-glide) var(--gw-mega-ease), height var(--gw-mega-glide) var(--gw-mega-ease), opacity 0.2s ease;
|
|
1106
|
+
}
|
|
1107
|
+
.gw-mega__hl.is-on { opacity: 1; }
|
|
1108
|
+
/* the aside: one card shows at a time, the panel's own (in the markup) or a row's preview (from its <template>) */
|
|
1109
|
+
.gw-mega__aside { position: relative; display: block; min-height: 296px; border-radius: var(--gw-radius-card); overflow: hidden; }
|
|
1110
|
+
.gw-mega__card {
|
|
1111
|
+
position: absolute;
|
|
1112
|
+
inset: 0;
|
|
1113
|
+
display: flex;
|
|
1114
|
+
flex-direction: column;
|
|
1115
|
+
gap: 12px;
|
|
1116
|
+
padding: 0 0 4px;
|
|
1117
|
+
color: var(--gw-ink);
|
|
1118
|
+
opacity: 0;
|
|
1119
|
+
pointer-events: none;
|
|
1120
|
+
transition: opacity 0.24s ease;
|
|
1121
|
+
}
|
|
1122
|
+
.gw-mega__card[aria-hidden="true"] { visibility: hidden; transition: opacity 0.24s ease, visibility 0s linear 0.24s; }
|
|
1123
|
+
.gw-mega__card.is-on { opacity: 1; visibility: visible; pointer-events: auto; transition: opacity 0.28s ease, visibility 0s; }
|
|
1124
|
+
.gw-mega__card:focus-visible { border-radius: var(--gw-radius-card); outline: 2px solid var(--gw-accent); outline-offset: -2px; }
|
|
1125
|
+
.gw-mega__foot {
|
|
1126
|
+
display: flex;
|
|
1127
|
+
align-items: center;
|
|
1128
|
+
justify-content: space-between;
|
|
1129
|
+
gap: 16px;
|
|
1130
|
+
padding: 16px 24px;
|
|
1131
|
+
border-top: 1px solid var(--gw-line);
|
|
1132
|
+
font-size: 13px;
|
|
1133
|
+
}
|
|
1134
|
+
.gw-mega__foot-start,
|
|
1135
|
+
.gw-mega__foot-end { display: flex; align-items: center; gap: 24px; }
|
|
1136
|
+
.gw-mega__foot a { color: var(--gw-muted); font-size: 13px; font-weight: 500; transition: color 0.15s; }
|
|
1137
|
+
.gw-mega__foot a:hover { color: var(--gw-ink); }
|
|
1138
|
+
.gw-mega__foot a.gw-mega__cta { color: var(--gw-ink); font-weight: 600; }
|
|
1139
|
+
}
|
|
1140
|
+
/* the Stage under a card's picture: a deep iris ground lit from two corners, in the desktop pane a faint dot grid
|
|
1141
|
+
fading out to the lower left. What sits on it (a page, a screen, a photo, a drawing) is the site's: it lifts objects with --gw-shadow-lift. */
|
|
1142
|
+
.gw-mega__art {
|
|
1143
|
+
--gw-lift: var(--gw-shadow-lift);
|
|
1144
|
+
position: relative;
|
|
1145
|
+
display: block;
|
|
1146
|
+
overflow: hidden;
|
|
1147
|
+
border-radius: var(--gw-radius-card);
|
|
1148
|
+
background:
|
|
1149
|
+
radial-gradient(130% 90% at 100% 0%, var(--gw-stage-glow), transparent 55%),
|
|
1150
|
+
radial-gradient(90% 80% at 0% 100%, var(--gw-stage-glow-2), transparent 60%),
|
|
1151
|
+
linear-gradient(160deg, var(--gw-stage-top), var(--gw-stage-bottom));
|
|
1152
|
+
color: var(--gw-stage-ink);
|
|
869
1153
|
}
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
(::before) keeps the pointer inside while it crosses the 8px gap from the trigger. */
|
|
874
|
-
.gw-mega {
|
|
1154
|
+
/* the dots: in the desktop pane only (a phone level's card has none, as gemboss.ai) */
|
|
1155
|
+
.gw-mega__aside .gw-mega__art::before {
|
|
1156
|
+
content: "";
|
|
875
1157
|
position: absolute;
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
}
|
|
887
|
-
|
|
888
|
-
.gw-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
.gw-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
.gw-
|
|
895
|
-
.gw-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
}
|
|
904
|
-
.gw-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
background: var(--gw-surface);
|
|
916
|
-
color: var(--gw-muted);
|
|
1158
|
+
inset: 0;
|
|
1159
|
+
pointer-events: none;
|
|
1160
|
+
background-image: radial-gradient(var(--gw-stage-dot) 1px, transparent 1.5px);
|
|
1161
|
+
background-size: 16px 16px;
|
|
1162
|
+
-webkit-mask-image: linear-gradient(170deg, #000, transparent 70%);
|
|
1163
|
+
mask-image: linear-gradient(170deg, #000, transparent 70%);
|
|
1164
|
+
}
|
|
1165
|
+
/* what sits on the Stage stacks above its dots; a site's own position for it wins (no specificity here) */
|
|
1166
|
+
:where(.gw-mega__art > *) { position: relative; }
|
|
1167
|
+
/* a picture straight on the Stage (an <img> child) fills it, like a photo (gemboss.ai draws its team and its lounge so) */
|
|
1168
|
+
:where(.gw-mega__art) > img { position: absolute; inset: 0; display: block; width: 100%; height: 100%; object-fit: cover; }
|
|
1169
|
+
/* in the desktop pane the picture fills what the words leave (its parts size to it: a size container) */
|
|
1170
|
+
.gw-mega__aside .gw-mega__art { flex: 1 1 auto; min-height: 0; container-type: size; }
|
|
1171
|
+
.gw-mega__card-text { display: block; padding: 0 4px; }
|
|
1172
|
+
.gw-mega__card-text b { display: flex; align-items: center; gap: 8px; color: var(--gw-ink); font-size: 14px; font-weight: 600; line-height: 20px; }
|
|
1173
|
+
.gw-mega__card-text i { display: block; margin-top: 2px; color: var(--gw-muted); font-size: 13px; font-style: normal; line-height: 18px; }
|
|
1174
|
+
/* a level of the phone menu ends with its panel's own card, as gemboss.ai: 24px above, the picture on the Stage as
|
|
1175
|
+
tall as what it holds, 16px inside; the words under it */
|
|
1176
|
+
.gw-mobile-menu .gw-mega__card { display: flex; flex-direction: column; gap: 12px; margin: 24px 0 8px; color: var(--gw-ink); }
|
|
1177
|
+
.gw-mobile-menu .gw-mega__art { display: flex; padding: 16px; }
|
|
1178
|
+
.gw-mobile-menu .gw-mega__card-text b { display: block; line-height: 1.6; }
|
|
1179
|
+
.gw-mobile-menu .gw-mega__card-text i { margin-top: 4px; }
|
|
1180
|
+
/* a row's picture instead of an icon (gemboss.ai's Solutions): 48 by 32, one hairline, 6px corners */
|
|
1181
|
+
.gw-mobile-menu__link > img { display: block; flex: none; width: 48px; height: 32px; border: 1px solid var(--gw-line); border-radius: var(--gw-radius-6); object-fit: cover; }
|
|
1182
|
+
.gw-mega__go { color: var(--gw-accent-strong); font-weight: 500; }
|
|
1183
|
+
.gw-mega__card-text > .gw-mega__go { display: block; margin-top: 8px; font-size: 13px; }
|
|
1184
|
+
.gw-mega__card-text b > .gw-mega__go { margin-left: auto; transition: translate 0.2s var(--gw-mega-ease); }
|
|
1185
|
+
.gw-mega__card:hover b > .gw-mega__go { translate: 4px 0; }
|
|
1186
|
+
.gw-mega__new {
|
|
1187
|
+
display: inline-flex;
|
|
1188
|
+
align-items: center;
|
|
1189
|
+
height: 20px;
|
|
1190
|
+
margin-right: 6px;
|
|
1191
|
+
padding: 0 6px;
|
|
1192
|
+
border-radius: var(--gw-radius-6);
|
|
1193
|
+
background: var(--gw-accent-soft);
|
|
1194
|
+
color: var(--gw-accent-strong);
|
|
1195
|
+
font-size: 11px;
|
|
1196
|
+
font-weight: 600;
|
|
917
1197
|
}
|
|
918
|
-
|
|
919
|
-
.gw-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
.gw-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
var(--gw-night);
|
|
934
|
-
color: var(--gw-on-night);
|
|
1198
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1199
|
+
.gw-scrim,
|
|
1200
|
+
.gw-nav__pill,
|
|
1201
|
+
.gw-mega-surface,
|
|
1202
|
+
.gw-mega-caret,
|
|
1203
|
+
.gw-mega__hl,
|
|
1204
|
+
.gw-mega__go,
|
|
1205
|
+
.gw-header.has-mega .gw-mega,
|
|
1206
|
+
.gw-header.has-mega.is-mega-open .gw-nav__item.is-open > .gw-mega,
|
|
1207
|
+
.gw-mega__body,
|
|
1208
|
+
.gw-mega__foot,
|
|
1209
|
+
.gw-mega__card,
|
|
1210
|
+
.gw-mega__card.is-on { transition: none; }
|
|
1211
|
+
.gw-mega-surface,
|
|
1212
|
+
.gw-header.has-mega .gw-mega { translate: 0 0; }
|
|
935
1213
|
}
|
|
936
|
-
.gw-mega__feature b { font-size: 18px; font-weight: 650; line-height: 1.25; }
|
|
937
|
-
.gw-mega__feature i { color: var(--gw-on-night); font-size: 13px; font-style: normal; line-height: 1.5; opacity: 0.9; }
|
|
938
|
-
.gw-mega__feature .gw-link--arrow { margin-top: 16px; color: var(--gw-on-night); font-size: 13px; font-weight: 600; }
|
|
939
1214
|
|
|
940
1215
|
/* actions on the right */
|
|
941
|
-
.gw-
|
|
942
|
-
.
|
|
943
|
-
|
|
944
|
-
.gw-
|
|
945
|
-
.gw-
|
|
1216
|
+
/* Sign in and a second text action (.gw-header__link, Book a demo on gemboss.ai) read like the menu's words; the
|
|
1217
|
+
primary button sits 8px further out. Sign in shows from 1081px, the second action from 1181px (the first thing to
|
|
1218
|
+
go when the bar gets tight), the button from 561px. */
|
|
1219
|
+
.gw-header__actions { display: flex; align-items: center; gap: 4px; margin-left: auto; }
|
|
1220
|
+
.gw-header__signin,
|
|
1221
|
+
.gw-header__link { display: none; }
|
|
1222
|
+
.gw-header__actions > .gw-btn { display: none; margin-left: 8px; line-height: 1.6; }
|
|
1223
|
+
.gw-theme-toggle {
|
|
946
1224
|
display: inline-flex;
|
|
947
1225
|
align-items: center;
|
|
948
1226
|
justify-content: center;
|
|
@@ -955,10 +1233,25 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
955
1233
|
background: transparent;
|
|
956
1234
|
color: var(--gw-ink);
|
|
957
1235
|
}
|
|
958
|
-
.gw-theme-toggle:hover
|
|
959
|
-
.gw-menu-toggle:hover { background: var(--gw-bg-soft); }
|
|
1236
|
+
.gw-theme-toggle:hover { background: var(--gw-bg-soft); }
|
|
960
1237
|
.gw-theme-toggle svg,
|
|
961
1238
|
.gw-menu-toggle svg { width: 20px; height: 20px; }
|
|
1239
|
+
/* the menu button: a 42px square with one strong hairline on the surface, the card radius of the site's profile (12,
|
|
1240
|
+
20 in soft), its hairline ink while the menu is open, as gemboss.ai (0.11.0) */
|
|
1241
|
+
.gw-menu-toggle {
|
|
1242
|
+
display: inline-flex;
|
|
1243
|
+
align-items: center;
|
|
1244
|
+
justify-content: center;
|
|
1245
|
+
flex: none;
|
|
1246
|
+
width: 42px;
|
|
1247
|
+
height: 42px;
|
|
1248
|
+
padding: 0;
|
|
1249
|
+
border: 1px solid var(--gw-line-strong);
|
|
1250
|
+
border-radius: var(--gw-radius-card);
|
|
1251
|
+
background: var(--gw-surface);
|
|
1252
|
+
color: var(--gw-ink);
|
|
1253
|
+
}
|
|
1254
|
+
.gw-menu-toggle[aria-expanded="true"] { border-color: var(--gw-ink); }
|
|
962
1255
|
.gw-menu-toggle[aria-expanded="true"] .gw-menu-toggle__open,
|
|
963
1256
|
.gw-menu-toggle:not([aria-expanded="true"]) .gw-menu-toggle__close { display: none; }
|
|
964
1257
|
|
|
@@ -993,18 +1286,16 @@ html.is-menu-open .gw-header { position: fixed; top: 0; left: 0; right: 0; }
|
|
|
993
1286
|
.gw-mobile-menu__group > summary::-webkit-details-marker { display: none; }
|
|
994
1287
|
.gw-mobile-menu__list { margin: 0; padding: 8px 0 16px; list-style: none; }
|
|
995
1288
|
.gw-mobile-menu__link { display: flex; align-items: center; min-height: 44px; color: var(--gw-ink-2); font-size: 16px; }
|
|
996
|
-
.gw-mobile-menu__link[aria-current="page"],
|
|
997
|
-
.gw-mobile-menu__top[aria-current="page"] { color: var(--gw-accent-strong); font-weight: 600; }
|
|
998
1289
|
.gw-mobile-menu__actions { display: grid; gap: 8px; margin-top: 24px; }
|
|
999
1290
|
|
|
1000
|
-
@media (min-width:
|
|
1291
|
+
@media (min-width: 561px) {
|
|
1001
1292
|
.gw-header__actions > .gw-btn:not(.gw-btn--secondary) { display: inline-flex; }
|
|
1002
1293
|
}
|
|
1003
|
-
@media (min-width:
|
|
1294
|
+
@media (min-width: 1181px) {
|
|
1295
|
+
.gw-header__link,
|
|
1004
1296
|
.gw-header__actions > .gw-btn--secondary { display: inline-flex; }
|
|
1005
1297
|
}
|
|
1006
|
-
@media (min-width:
|
|
1007
|
-
.gw-header__bar { gap: 32px; }
|
|
1298
|
+
@media (min-width: 1081px) {
|
|
1008
1299
|
.gw-nav { display: block; }
|
|
1009
1300
|
.gw-header__signin { display: inline-flex; }
|
|
1010
1301
|
.gw-menu-toggle, .gw-mobile-menu { display: none !important; }
|
|
@@ -1016,12 +1307,12 @@ html.is-menu-open .gw-header { position: fixed; top: 0; left: 0; right: 0; }
|
|
|
1016
1307
|
}
|
|
1017
1308
|
|
|
1018
1309
|
/* floating header (0.3.0), a brand's header profile: <header class="gw-header gw-header--float">. The same bar, mega
|
|
1019
|
-
menu and script, drawn from
|
|
1310
|
+
menu and script, drawn from 1081px as an inset card: the panel radius of the site's profile (16, 24 in soft), the
|
|
1020
1311
|
surface at 85% over a 10px blur, one hairline, the raised shadow, a 16px gap above it and when it sticks. It is
|
|
1021
1312
|
wrap + 2 x 24px + its border wide, so the bar's content lines up with the page's from 1170px. Below 1080px it is
|
|
1022
1313
|
the flat bar, so the phone menu is unchanged. Solid for a visitor who asks for less transparency, and where the
|
|
1023
1314
|
browser cannot blur. No other floating or blurred header: it is a profile, not a style to copy. */
|
|
1024
|
-
@media (min-width:
|
|
1315
|
+
@media (min-width: 1081px) {
|
|
1025
1316
|
.gw-header--float {
|
|
1026
1317
|
top: var(--gw-header-gap);
|
|
1027
1318
|
width: min(100% - 32px, var(--gw-wrap) + 50px);
|
|
@@ -1039,7 +1330,7 @@ html.is-menu-open .gw-header { position: fixed; top: 0; left: 0; right: 0; }
|
|
|
1039
1330
|
/* an anchor lands below the card, not under it */
|
|
1040
1331
|
:root:has(.gw-header--float) [id] { scroll-margin-top: calc(var(--gw-header-height) + var(--gw-header-gap) + 18px); }
|
|
1041
1332
|
}
|
|
1042
|
-
@media (min-width:
|
|
1333
|
+
@media (min-width: 1081px) and (prefers-reduced-transparency: reduce) {
|
|
1043
1334
|
.gw-header--float { background: var(--gw-surface); -webkit-backdrop-filter: none; backdrop-filter: none; }
|
|
1044
1335
|
}
|
|
1045
1336
|
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
|
@@ -1056,8 +1347,11 @@ html.is-menu-open .gw-header { position: fixed; top: 0; left: 0; right: 0; }
|
|
|
1056
1347
|
stays at the bottom of the sheet while the list scrolls (the sheet has no bottom padding, so nothing peeks out under
|
|
1057
1348
|
the bar; nor sideways while a level slides in). Without the script the groups are the 0.7.0 <details> that open in
|
|
1058
1349
|
place, their chevron pointing down. */
|
|
1059
|
-
.gw-mobile-menu[data-gw-menu="drill"] { display: flex; flex-direction: column; overflow-x: hidden; padding-bottom: 0; }
|
|
1060
|
-
.
|
|
1350
|
+
.gw-mobile-menu[data-gw-menu="drill"] { display: flex; flex-direction: column; overflow-x: hidden; padding-bottom: 0; line-height: 1.6; }
|
|
1351
|
+
/* gemboss.ai's sheet (0.11.0, 1:1): 24px in from both edges, whatever the page's wrap; every link in it set at 18px,
|
|
1352
|
+
weight 500, 0.005em tighter, its parts sizing themselves (a row's line keeps the 18px tracking) */
|
|
1353
|
+
.gw-mobile-menu[data-gw-menu="drill"] > nav { display: flex; flex: 1 0 auto; flex-direction: column; width: auto; margin-inline: 0; padding-inline: 24px; }
|
|
1354
|
+
.gw-mobile-menu[data-gw-menu="drill"] a { font-size: 18px; font-weight: 500; letter-spacing: -0.005em; }
|
|
1061
1355
|
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__group > summary,
|
|
1062
1356
|
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__top { min-height: 64px; font-size: 24px; letter-spacing: -0.01em; }
|
|
1063
1357
|
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__group > summary::after { width: 20px; height: 20px; -webkit-mask-size: 20px; mask-size: 20px; }
|
|
@@ -1070,10 +1364,10 @@ html.is-menu-open .gw-header { position: fixed; top: 0; left: 0; right: 0; }
|
|
|
1070
1364
|
color: var(--gw-ink);
|
|
1071
1365
|
font-weight: 500;
|
|
1072
1366
|
}
|
|
1073
|
-
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__link b { display: block; font-size: 16px; font-weight: 500; line-height: 20px; }
|
|
1367
|
+
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__link b { display: block; font-size: 16px; font-weight: 500; letter-spacing: -0.005em; line-height: 20px; }
|
|
1074
1368
|
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__link i { display: block; margin-top: 2px; color: var(--gw-muted); font-size: 13px; font-style: normal; line-height: 18px; }
|
|
1075
1369
|
/* a level's optional parts: a muted heading over a run of links, a 32px icon tile before a link's words */
|
|
1076
|
-
.gw-mobile-menu__heading { padding: 16px 0 8px; color: var(--gw-muted); font-size: 12px; font-weight: 500; line-height: 1.
|
|
1370
|
+
.gw-mobile-menu__heading { padding: 16px 0 8px; color: var(--gw-muted); font-size: 12px; font-weight: 500; line-height: 1.6; }
|
|
1077
1371
|
.gw-mobile-menu__icon {
|
|
1078
1372
|
display: grid;
|
|
1079
1373
|
place-items: center;
|
|
@@ -1085,9 +1379,19 @@ html.is-menu-open .gw-header { position: fixed; top: 0; left: 0; right: 0; }
|
|
|
1085
1379
|
color: var(--gw-muted);
|
|
1086
1380
|
}
|
|
1087
1381
|
.gw-mobile-menu__icon svg { width: 16px; height: 16px; }
|
|
1382
|
+
/* a row under the pointer or the keyboard (gemboss.ai's, 0.11.0): the soft ground in 8px corners, 2px to the right,
|
|
1383
|
+
its icon tile in the accent and 1px up; only the colours ease (0.15s) */
|
|
1384
|
+
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__list .gw-mobile-menu__link { border-radius: var(--gw-radius-action); transition: background 0.15s; }
|
|
1385
|
+
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__list .gw-mobile-menu__link:hover { background: var(--gw-bg-soft); transform: translateX(2px); }
|
|
1386
|
+
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__list .gw-mobile-menu__link:focus-visible { background: var(--gw-bg-soft); }
|
|
1387
|
+
.gw-mobile-menu__icon { background: var(--gw-surface); transition: color 0.15s, border-color 0.15s, background 0.15s, transform 0.15s; }
|
|
1388
|
+
.gw-mobile-menu__link:is(:hover, :focus-visible) .gw-mobile-menu__icon { border-color: color-mix(in srgb, var(--gw-accent) 32%, var(--gw-line)); background: var(--gw-accent-soft); color: var(--gw-accent-strong); }
|
|
1389
|
+
.gw-mobile-menu__link:hover .gw-mobile-menu__icon { transform: translateY(-1px); }
|
|
1088
1390
|
/* a level's last link, to the section's own page: its row opens the level instead of going there */
|
|
1089
|
-
.gw-mobile-menu__all { display: flex; align-items: center;
|
|
1090
|
-
.gw-mobile-menu__all
|
|
1391
|
+
.gw-mobile-menu__all { display: flex; align-items: center; min-height: 56px; color: var(--gw-accent-strong); font-size: 16px; font-weight: 500; }
|
|
1392
|
+
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__all { font-size: 16px; }
|
|
1393
|
+
/* the arrow follows the words after a space, as gemboss.ai writes "All of Product →" (0.11.0) */
|
|
1394
|
+
.gw-mobile-menu__all::after { content: "\00a0\2192"; }
|
|
1091
1395
|
/* the action bar: what is not a button (Sign in, the language) on the first line, the last one on the right; the
|
|
1092
1396
|
buttons side by side under it (gw-btn--lg: 48px, as gemboss.ai) */
|
|
1093
1397
|
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions {
|
|
@@ -1096,7 +1400,7 @@ html.is-menu-open .gw-header { position: fixed; top: 0; left: 0; right: 0; }
|
|
|
1096
1400
|
z-index: 1;
|
|
1097
1401
|
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
|
1098
1402
|
align-items: center;
|
|
1099
|
-
gap: 8px
|
|
1403
|
+
gap: 8px;
|
|
1100
1404
|
margin-top: auto;
|
|
1101
1405
|
padding-block: 12px calc(12px + env(safe-area-inset-bottom));
|
|
1102
1406
|
border-top: 1px solid var(--gw-line);
|
|
@@ -1105,7 +1409,10 @@ html.is-menu-open .gw-header { position: fixed; top: 0; left: 0; right: 0; }
|
|
|
1105
1409
|
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > .gw-btn { grid-row: 2; }
|
|
1106
1410
|
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > :not(.gw-btn) { grid-row: 1; }
|
|
1107
1411
|
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > :not(.gw-btn):last-child { grid-column: 2; justify-self: end; }
|
|
1108
|
-
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > .gw-mobile-menu__link { color: var(--gw-ink); font-weight: 500; }
|
|
1412
|
+
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > .gw-mobile-menu__link { color: var(--gw-ink); font-size: 16px; font-weight: 500; }
|
|
1413
|
+
/* a quieter link in the bar, before Sign in (gemboss.ai: What's new on the changelog) */
|
|
1414
|
+
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > .gw-mobile-menu__link--muted { color: var(--gw-muted); }
|
|
1415
|
+
.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > .gw-btn { padding: 0 16px; font-size: 16px; line-height: 1.6; }
|
|
1109
1416
|
|
|
1110
1417
|
/* Wired (.is-drill, set by website.js): a group's row points right and opens its level, which shows alone
|
|
1111
1418
|
(.is-drilled) under its head: Back on the left, the level's title in the middle. The sheet starts where the header
|
|
@@ -1137,7 +1444,7 @@ html.is-menu-open .gw-header:has(> .gw-mobile-menu.is-drill) { position: sticky;
|
|
|
1137
1444
|
background: transparent;
|
|
1138
1445
|
color: var(--gw-muted);
|
|
1139
1446
|
font-size: 16px;
|
|
1140
|
-
line-height: 1.
|
|
1447
|
+
line-height: 1.6;
|
|
1141
1448
|
}
|
|
1142
1449
|
.gw-mobile-menu__back:hover { color: var(--gw-ink); }
|
|
1143
1450
|
.gw-mobile-menu__back::before {
|
|
@@ -1149,7 +1456,7 @@ html.is-menu-open .gw-header:has(> .gw-mobile-menu.is-drill) { position: sticky;
|
|
|
1149
1456
|
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15 18l-6-6 6-6' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px no-repeat;
|
|
1150
1457
|
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15 18l-6-6 6-6' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px no-repeat;
|
|
1151
1458
|
}
|
|
1152
|
-
.gw-mobile-menu__title { color: var(--gw-ink); font-size: 16px; font-weight: 600; letter-spacing: 0; line-height: 1.
|
|
1459
|
+
.gw-mobile-menu__title { color: var(--gw-ink); font-size: 16px; font-weight: 600; letter-spacing: 0; line-height: 1.6; text-align: center; }
|
|
1153
1460
|
/* a level slides in from the right, the top level back in from the left; under reduced motion they just switch */
|
|
1154
1461
|
@media (prefers-reduced-motion: no-preference) {
|
|
1155
1462
|
.gw-mobile-menu.is-drilled .gw-mobile-menu__group[open] { animation: gw-drill-in 0.24s var(--gw-ease); }
|
|
@@ -1161,7 +1468,7 @@ html.is-menu-open .gw-header:has(> .gw-mobile-menu.is-drill) { position: sticky;
|
|
|
1161
1468
|
/* The language switcher: <div class="gw-lang" data-gw-lang hidden>, a ghost button with the globe and the current
|
|
1162
1469
|
language's short code, and its list of the other languages, a small popover card (the card radius of the site's
|
|
1163
1470
|
profile, one hairline, the raised shadow). website.js fills the list from the page's <link rel="alternate" hreflang>
|
|
1164
|
-
and takes `hidden` away when there is another language. In the header's actions it shows from
|
|
1471
|
+
and takes `hidden` away when there is another language. In the header's actions it shows from 1081px, where the nav
|
|
1165
1472
|
is; below that a second one sits in the mobile menu's action bar, and its list opens upward. */
|
|
1166
1473
|
.gw-lang { position: relative; flex: none; }
|
|
1167
1474
|
.gw-header__actions > .gw-lang { display: none; }
|
|
@@ -1218,7 +1525,7 @@ html.is-menu-open .gw-header:has(> .gw-mobile-menu.is-drill) { position: sticky;
|
|
|
1218
1525
|
@media (max-width: 768px), (pointer: coarse) {
|
|
1219
1526
|
.gw-lang__btn, .gw-lang__link { min-height: var(--gw-tap-min); }
|
|
1220
1527
|
}
|
|
1221
|
-
@media (min-width:
|
|
1528
|
+
@media (min-width: 1081px) {
|
|
1222
1529
|
.gw-header__actions > .gw-lang { display: block; }
|
|
1223
1530
|
}
|
|
1224
1531
|
|
|
@@ -1513,7 +1820,7 @@ html.is-menu-open .gw-header:has(> .gw-mobile-menu.is-drill) { position: sticky;
|
|
|
1513
1820
|
.gw-hero > .gw-wrap > .gw-window { margin-top: 64px; }
|
|
1514
1821
|
}
|
|
1515
1822
|
@media (max-width: 479px) {
|
|
1516
|
-
:is(.gw-hero, .gw-cta) .gw-actions > .gw-btn { flex: 1 1 100%; }
|
|
1823
|
+
:is(.gw-hero, .gw-cta) .gw-actions > .gw-btn { flex: 1 1 100%; justify-content: center; }
|
|
1517
1824
|
}
|
|
1518
1825
|
|
|
1519
1826
|
/* logos: a proof strip of real logos or wordmarks */
|
|
@@ -2167,7 +2474,7 @@ html.is-menu-open .gw-header:has(> .gw-mobile-menu.is-drill) { position: sticky;
|
|
|
2167
2474
|
room; below 480px, and in a box too narrow for both, the field and the button each take a full line. */
|
|
2168
2475
|
.gw-form-inline { display: flex; flex-wrap: wrap; gap: 8px; }
|
|
2169
2476
|
.gw-form-inline > :not(.gw-btn) { flex: 999 1 160px; min-width: 0; }
|
|
2170
|
-
.gw-form-inline > .gw-btn { flex: 1 0 auto; }
|
|
2477
|
+
.gw-form-inline > .gw-btn { flex: 1 0 auto; justify-content: center; }
|
|
2171
2478
|
@media (max-width: 479px) {
|
|
2172
2479
|
.gw-form-inline > :not(.gw-btn) { flex-basis: 100%; }
|
|
2173
2480
|
}
|
|
@@ -2317,7 +2624,7 @@ a.gw-rating-badge:hover { border-color: var(--gw-line-strong); }
|
|
|
2317
2624
|
the build checks the words on. */
|
|
2318
2625
|
.gw-btn.gw-spot:not([aria-busy="true"])::before { --gw-spot-mix: var(--gw-spot-strength-action); }
|
|
2319
2626
|
/* the mega menu's feature card is the Stage, a night ground: a stronger light, or it would not show */
|
|
2320
|
-
.gw-
|
|
2627
|
+
.gw-mega__art.gw-spot:not([aria-busy="true"])::before { --gw-spot-mix: var(--gw-spot-strength-stage); }
|
|
2321
2628
|
|
|
2322
2629
|
/* words under the light: lit, muted words are ink-2 at once (rules above); back to muted only once the light has gone
|
|
2323
2630
|
out (a colour that waits the light's time, no movement). :where(), so a part's own transition wins. */
|