@gemboss/website-ui 0.13.0 → 0.14.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/AGENTS.md +4 -3
- package/CHANGELOG.md +28 -0
- package/README.md +2 -2
- package/css/components.css +80 -27
- package/css/tokens.css +5 -0
- package/docs/components.md +29 -2
- package/js/website.js +2 -2
- package/js/website.mjs +1 -1
- package/package.json +1 -1
- package/system.json +3 -1
- package/website.css +86 -28
- package/website.min.css +1 -1
package/AGENTS.md
CHANGED
|
@@ -40,13 +40,14 @@ Files you will use, all inside `node_modules/@gemboss/website-ui/`:
|
|
|
40
40
|
square and a chart line. **The accent is never body text, never words in a heading, never a section band, and
|
|
41
41
|
never a fill you set yourself.**
|
|
42
42
|
3. **Actions are rectangles, chips are pills.** Buttons: 40px tall, sentence case, 14px/600, the action radius of the
|
|
43
|
-
site's profile (8px; 12px in `soft`). Chips, toggles, badges: fully rounded
|
|
43
|
+
site's profile (8px; 12px in `soft`). Chips, toggles, badges: fully rounded; a status chip inside a drawn screen
|
|
44
|
+
(`.gw-status`, 0.14.0) takes the action radius, as the product draws it. Cards: the card radius (12px; 20px in
|
|
44
45
|
`soft`), large panels the panel radius (16px; 24px). No other radii: the site picks its profile once
|
|
45
46
|
(`data-gw-radius`), components follow.
|
|
46
47
|
4. **A card sits.** A card (`.gw-card`, a plan) is a white box with a 1px `--gw-line` border and the resting shadow
|
|
47
48
|
`--gw-shadow`, the same as the GemBoss dashboard. It never lifts on hover. To separate anything else, use space or a
|
|
48
49
|
hairline before a shadow. The only shadows are `--gw-shadow` (rest), `--gw-shadow-sm` and `--gw-shadow-raised`
|
|
49
|
-
(popovers: the mega menu, menus).
|
|
50
|
+
(popovers: the mega menu, menus; and a window, `.gw-window`, which floats over its section as on gemboss.ai).
|
|
50
51
|
5. **Only the scales.** Spacing: 0 2 4 6 8 12 16 20 24 32 40 48 64 80 96 120 (px). Type: 11 12 13 14 16 18 20 22 24 30,
|
|
51
52
|
plus the two display sizes for h1/h2. No half pixels, no "just 15px", no colour outside the tokens.
|
|
52
53
|
6. **Sentence case everywhere.** Headings, buttons, labels, menu items. No uppercase with letter spacing.
|
|
@@ -91,7 +92,7 @@ a page. A page of such a site starts from `index.html`, not from `templates/page
|
|
|
91
92
|
- **Colour roles** (CSS variables, light and dark): `--gw-bg`, `--gw-bg-soft` (the neutral raised fill),
|
|
92
93
|
`--gw-surface`, `--gw-ink`, `--gw-ink-2`, `--gw-muted`, `--gw-line`, `--gw-line-strong`, `--gw-action`,
|
|
93
94
|
`--gw-on-action`, `--gw-accent`, `--gw-accent-strong`, `--gw-accent-soft`, `--gw-success`, `--gw-warning` (and
|
|
94
|
-
their tints `--gw-success-soft`, `--gw-warning-soft
|
|
95
|
+
their tints `--gw-success-soft`, `--gw-warning-soft`; success's text form `--gw-success-strong`, 0.14.0), `--gw-danger` (an error, a destructive button; `--gw-danger-soft`,
|
|
95
96
|
`--gw-on-danger`), `--gw-line-control` (a form control's border, 3:1), `--gw-night` (the dark band). Wash hues `--gw-wash-pink|violet|sky|mint` exist for the hero wash and illustrations only.
|
|
96
97
|
- **Dark mode** follows the visitor's system and the theme toggle (`data-theme` on `<html>`). Use the variables and
|
|
97
98
|
it works; a hard-coded colour breaks it.
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,34 @@ Every release lists what changed for a site that uses the kit. A release that ad
|
|
|
4
4
|
says so with `Closes gap #N` (the GitHub issue number), so `npx gemboss-website upgrade` can tell that site which
|
|
5
5
|
stopgap (`kitgap-*`) it can now delete.
|
|
6
6
|
|
|
7
|
+
## 0.14.0 (2026-10-27)
|
|
8
|
+
|
|
9
|
+
The blocks gemboss.ai shares between its pages, 1:1 in the kit: the FAQ, the check list, the window around a product
|
|
10
|
+
screen, and a new status chip (Chris 26/10/2026: step 2 of the pages' bodies onto the kit). gemboss.ai's pages now draw
|
|
11
|
+
these with the kit's classes and were measured against the pages before, pixel by pixel. Where gemboss.ai had a small
|
|
12
|
+
accessibility slip, the kit's version won (Chris 27/10/2026): those three spots are named below. A minor version: a site
|
|
13
|
+
on 0.13.0 sees these parts change look, none of the markup.
|
|
14
|
+
|
|
15
|
+
- **FAQ** (`.gw-faq`): an item 2px 24px inside; the question in the brand face alone (`--gw-font-action`) at the line
|
|
16
|
+
height around it; the + is the face's own glyph in the accent, 24px, turned 45 degrees into × when open (was drawn
|
|
17
|
+
lines); an answer's paragraph at most 33em (was 68ch) and rising 4px into place as the item opens (none under reduced
|
|
18
|
+
motion). On phones (up to 560px) the rows tighten to 4px above and below, never under 44px (gemboss.ai went to 37px:
|
|
19
|
+
the kit's 44px won).
|
|
20
|
+
- **Check list** (`.gw-list--check`): 14px at 1.5 lines, the words 28px in, the mark a 16px tile on the accent's tint with
|
|
21
|
+
the tick in the accent (was a bare tick). The tick follows the theme and the brand (gemboss.ai's was a fixed iris, and
|
|
22
|
+
ink on /partners, so it stayed light in dark mode: the kit's won). A plain link in an item keeps the link style
|
|
23
|
+
(/audit showed one as plain text: the kit's won).
|
|
24
|
+
- **Window** (`.gw-window`): it floats (`--gw-shadow-raised`, was the resting shadow), 13px at 20px lines. The bar is
|
|
25
|
+
40px with 12px sides, three 8px dots 6px apart drawn as real circles, the words 16px after them, `<b>` in ink, one line
|
|
26
|
+
cut when too long; up to 560px the words wrap and the bar grows, its parts at the top.
|
|
27
|
+
- **Status chip** (`.gw-status`, new): gemboss.ai's "pills", a state inside a drawn screen as the GemBoss app draws it: a
|
|
28
|
+
rounded rectangle at the action radius, 28px, 12px/500; `--success` (live), `--accent` (a test), `--early` (neutral,
|
|
29
|
+
the dot in the accent), an optional `__dot`. A badge (`.gw-badge`) stays the pill that labels a thing on the page.
|
|
30
|
+
- **Token** `--gw-success-strong` (new, `system.json` `color.light/dark`): success's text form, `#0a6a4c` light (5.6:1 on
|
|
31
|
+
its tint) and `#34c38f` dark, the words of a live status chip.
|
|
32
|
+
- Docs: `AGENTS.md` lists the window among the raised shadows and the status chip among the shapes; `docs/components.md`
|
|
33
|
+
describes each part's measures.
|
|
34
|
+
|
|
7
35
|
## 0.13.0 (2026-10-26)
|
|
8
36
|
|
|
9
37
|
What building a second site on the kit taught it. gemians.com was rebuilt on 0.12.0 from npm, kit sections only (Chris,
|
package/README.md
CHANGED
|
@@ -41,9 +41,9 @@ nó đọc `AGENTS.md` của kit trước, dựng từ mẫu, và chạy `check`
|
|
|
41
41
|
**Site HTML tĩnh hoặc không có bước build:** dùng CDN của npm, ghim đúng phiên bản.
|
|
42
42
|
|
|
43
43
|
```html
|
|
44
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@gemboss/website-ui@0.
|
|
44
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@gemboss/website-ui@0.14.0/website.min.css">
|
|
45
45
|
<link rel="stylesheet" href="/site.css"> <!-- CSS riêng của site, luôn SAU kit -->
|
|
46
|
-
<script src="https://cdn.jsdelivr.net/npm/@gemboss/website-ui@0.
|
|
46
|
+
<script src="https://cdn.jsdelivr.net/npm/@gemboss/website-ui@0.14.0/js/website.js" defer></script>
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
Chèn markup của kit sau khi trang đã tải (block của builder, bản xem trước CMS): gọi `gwWebsite.init(phầnMới)` ngay
|
package/css/components.css
CHANGED
|
@@ -188,6 +188,29 @@
|
|
|
188
188
|
.gw-badge--danger { background: var(--gw-danger-soft); color: var(--gw-ink); }
|
|
189
189
|
.gw-badge--danger::before { content: ""; flex: none; width: 6px; height: 6px; border-radius: var(--gw-radius-chip); background: var(--gw-danger); }
|
|
190
190
|
|
|
191
|
+
/* Status chip (0.14.0): gemboss.ai's "pills", a state inside a drawn screen of the product (Live, a test, Early access), as
|
|
192
|
+
the GemBoss app draws it: a rounded rectangle (the action radius), 28px, 12px/500 words, neutral by default. --success is
|
|
193
|
+
live (its words in success's text form), --accent a test, --early neutral with the dot in the accent. The dot is an
|
|
194
|
+
optional `.gw-status__dot` before the words. A label that names a thing (New, Recommended) is a .gw-badge. */
|
|
195
|
+
.gw-status {
|
|
196
|
+
display: inline-flex;
|
|
197
|
+
align-items: center;
|
|
198
|
+
gap: 6px;
|
|
199
|
+
min-height: 28px;
|
|
200
|
+
padding: 6px 8px;
|
|
201
|
+
border-radius: var(--gw-radius-action);
|
|
202
|
+
background: color-mix(in srgb, var(--gw-ink) 8%, transparent);
|
|
203
|
+
color: var(--gw-ink-2);
|
|
204
|
+
font-size: 12px;
|
|
205
|
+
font-weight: 500;
|
|
206
|
+
line-height: 16px;
|
|
207
|
+
white-space: nowrap;
|
|
208
|
+
}
|
|
209
|
+
.gw-status--success { background: var(--gw-success-soft); color: var(--gw-success-strong); }
|
|
210
|
+
.gw-status--accent { background: var(--gw-accent-soft); color: var(--gw-accent-strong); }
|
|
211
|
+
.gw-status__dot { width: 6px; height: 6px; border-radius: var(--gw-radius-chip); background: currentColor; }
|
|
212
|
+
.gw-status--early .gw-status__dot { background: var(--gw-accent); }
|
|
213
|
+
|
|
191
214
|
/* cards sit: white, 1px hairline, the card radius of the site's profile (12, 20 in soft), the dashboard's resting
|
|
192
215
|
shadow (Chris 24/10/2026: one language with the app); no hover lift. A soft card is a tint and carries no shadow. */
|
|
193
216
|
.gw-card {
|
|
@@ -221,35 +244,48 @@
|
|
|
221
244
|
:where(.gw-card, .gw-feature) p { font-size: 16px; color: var(--gw-muted); }
|
|
222
245
|
|
|
223
246
|
/* a framed screen: a browser or app window around a screenshot or a drawn mock-up */
|
|
247
|
+
/* 0.14.0: gemboss.ai's frame, 1:1: it floats (the raised shadow), 13px at 20px lines; the bar 40px with 12px sides, three
|
|
248
|
+
8px dots 6px apart, the words 16px after them and 8px between the bar's parts, one line, cut when too long; bold words in
|
|
249
|
+
the bar in ink. */
|
|
224
250
|
.gw-window {
|
|
251
|
+
position: relative;
|
|
225
252
|
overflow: hidden;
|
|
226
253
|
border: 1px solid var(--gw-line);
|
|
227
254
|
border-radius: var(--gw-radius-card);
|
|
228
255
|
background: var(--gw-surface);
|
|
229
256
|
color: var(--gw-ink);
|
|
230
|
-
box-shadow: var(--gw-shadow);
|
|
257
|
+
box-shadow: var(--gw-shadow-raised);
|
|
231
258
|
font-size: 13px;
|
|
232
|
-
line-height:
|
|
259
|
+
line-height: 20px;
|
|
233
260
|
}
|
|
234
261
|
.gw-window__bar {
|
|
235
262
|
display: flex;
|
|
236
263
|
align-items: center;
|
|
237
|
-
gap:
|
|
264
|
+
gap: 8px;
|
|
238
265
|
min-height: 40px;
|
|
239
|
-
padding:
|
|
266
|
+
padding: 0 12px;
|
|
240
267
|
border-bottom: 1px solid var(--gw-line);
|
|
241
268
|
color: var(--gw-muted);
|
|
242
269
|
font-size: 12px;
|
|
270
|
+
white-space: nowrap;
|
|
271
|
+
overflow: hidden;
|
|
243
272
|
}
|
|
244
273
|
.gw-window__bar::before {
|
|
245
274
|
content: "";
|
|
246
275
|
flex: none;
|
|
247
|
-
width:
|
|
276
|
+
width: 8px;
|
|
248
277
|
height: 8px;
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
278
|
+
margin-right: 36px;
|
|
279
|
+
border-radius: var(--gw-radius-chip);
|
|
280
|
+
background: var(--gw-line-strong);
|
|
281
|
+
box-shadow: 14px 0 0 var(--gw-line-strong), 28px 0 0 var(--gw-line-strong);
|
|
282
|
+
}
|
|
283
|
+
.gw-window__bar > :first-child { min-width: 0; overflow: hidden; }
|
|
284
|
+
.gw-window__bar b { color: var(--gw-ink); font-weight: 600; }
|
|
285
|
+
/* up to 560px the bar's words wrap rather than being cut: the bar grows, its parts at the top (gemboss.ai) */
|
|
286
|
+
@media (max-width: 560px) {
|
|
287
|
+
.gw-window__bar { align-items: flex-start; padding-block: 8px; white-space: normal; }
|
|
288
|
+
.gw-window__bar > :first-child { overflow: visible; }
|
|
253
289
|
}
|
|
254
290
|
.gw-window__body { padding: 16px; }
|
|
255
291
|
.gw-window__body:has(> img:only-child) { padding: 0; }
|
|
@@ -278,19 +314,31 @@
|
|
|
278
314
|
.gw-icon svg { width: 20px; height: 20px; }
|
|
279
315
|
|
|
280
316
|
/* list with check marks */
|
|
281
|
-
.
|
|
282
|
-
|
|
317
|
+
/* 0.14.0: gemboss.ai's, 1:1: 14px at 1.5 lines, the words 28px in (a 20px column for the mark, 8px after it); the mark a
|
|
318
|
+
16px tile on the accent's tint, 4px down, with the tick in the accent (the tick follows the theme and the brand). The mark
|
|
319
|
+
is out of the flow, so an item may hold words and links side by side. */
|
|
320
|
+
.gw-list--check { display: grid; gap: 12px; padding: 0; list-style: none; font-size: 14px; line-height: 1.5; }
|
|
321
|
+
.gw-list--check > li { position: relative; padding-left: 28px; }
|
|
283
322
|
.gw-list--check > li::before {
|
|
284
323
|
content: "";
|
|
285
324
|
position: absolute;
|
|
286
325
|
left: 0;
|
|
287
|
-
top:
|
|
288
|
-
|
|
326
|
+
top: 4px;
|
|
327
|
+
width: 16px;
|
|
328
|
+
height: 16px;
|
|
329
|
+
border-radius: var(--gw-radius-4);
|
|
330
|
+
background: var(--gw-accent-soft);
|
|
331
|
+
}
|
|
332
|
+
.gw-list--check > li::after {
|
|
333
|
+
content: "";
|
|
334
|
+
position: absolute;
|
|
335
|
+
left: 0;
|
|
336
|
+
top: 4px;
|
|
289
337
|
width: 16px;
|
|
290
338
|
height: 16px;
|
|
291
339
|
background: var(--gw-accent);
|
|
292
|
-
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='
|
|
293
|
-
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='
|
|
340
|
+
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.2l2.6 2.5L12 5.3' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px no-repeat;
|
|
341
|
+
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.2l2.6 2.5L12 5.3' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px no-repeat;
|
|
294
342
|
}
|
|
295
343
|
|
|
296
344
|
/* table: the wrapper scrolls inside its own box on phones, the page never does */
|
|
@@ -313,10 +361,12 @@
|
|
|
313
361
|
.gw-table--compare thead th:not(:first-child) { text-align: center; }
|
|
314
362
|
.gw-table--compare tbody th { position: sticky; left: 0; z-index: 1; background: var(--gw-surface); min-width: 160px; }
|
|
315
363
|
|
|
316
|
-
/* FAQ: native details/summary, no script
|
|
364
|
+
/* FAQ: native details/summary, no script. 0.14.0: gemboss.ai's, 1:1 (the question in the brand face alone, at the line
|
|
365
|
+
height around it; the + is the face's own glyph in the accent, turned 45 degrees when open; the answer 33em wide,
|
|
366
|
+
rising in as the item opens) */
|
|
317
367
|
.gw-faq { display: grid; gap: 12px; }
|
|
318
368
|
.gw-faq__item {
|
|
319
|
-
padding:
|
|
369
|
+
padding: 2px 24px;
|
|
320
370
|
border: 1px solid var(--gw-line);
|
|
321
371
|
border-radius: var(--gw-radius-card);
|
|
322
372
|
background: var(--gw-surface);
|
|
@@ -329,25 +379,28 @@
|
|
|
329
379
|
gap: 16px;
|
|
330
380
|
min-height: 44px;
|
|
331
381
|
padding: 20px 0;
|
|
382
|
+
font-family: var(--gw-font-action);
|
|
332
383
|
font-size: 18px;
|
|
333
384
|
font-weight: 600;
|
|
334
|
-
line-height: 1.4;
|
|
335
385
|
list-style: none;
|
|
336
386
|
cursor: pointer;
|
|
337
387
|
}
|
|
338
388
|
.gw-faq__item > summary::-webkit-details-marker { display: none; }
|
|
339
389
|
.gw-faq__item > summary::after {
|
|
340
|
-
content: "";
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
linear-gradient(var(--gw-accent), var(--gw-accent)) center / 16px 2px no-repeat,
|
|
346
|
-
linear-gradient(var(--gw-accent), var(--gw-accent)) center / 2px 16px no-repeat;
|
|
347
|
-
transition: transform 0.2s var(--gw-ease);
|
|
390
|
+
content: "+";
|
|
391
|
+
color: var(--gw-accent);
|
|
392
|
+
font-size: 24px;
|
|
393
|
+
font-weight: 400;
|
|
394
|
+
transition: transform 0.2s ease;
|
|
348
395
|
}
|
|
349
396
|
.gw-faq__item[open] > summary::after { transform: rotate(45deg); }
|
|
350
|
-
.gw-faq__item > :not(summary) { margin: 0 0 20px;
|
|
397
|
+
.gw-faq__item > :not(summary) { margin: 0 0 20px; color: var(--gw-muted); font-size: 16px; }
|
|
398
|
+
.gw-faq__item > p { max-width: 33em; }
|
|
399
|
+
@keyframes gw-faq-in { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
|
|
400
|
+
.gw-faq__item[open] > :not(summary) { animation: gw-faq-in 0.28s ease; }
|
|
401
|
+
@media (prefers-reduced-motion: reduce) { .gw-faq__item[open] > :not(summary) { animation: none; } }
|
|
402
|
+
/* phones: the rows tighten (gemboss.ai), never under the 44px a finger needs */
|
|
403
|
+
@media (max-width: 560px) { .gw-faq__item > summary { padding-block: 4px; } }
|
|
351
404
|
|
|
352
405
|
/* touch: every control is at least 44px tall. A button up to 768px (0.12.0, as gemboss.ai: by the width, not the
|
|
353
406
|
pointer), its label wrapping (and tighter) from 480px down in the page's <main>, so a long one never pushes the page
|
package/css/tokens.css
CHANGED
|
@@ -126,6 +126,7 @@
|
|
|
126
126
|
--gw-on-accent: var(--gw-on-accent-light);
|
|
127
127
|
--gw-success: #007f5f;
|
|
128
128
|
--gw-success-soft: #e3f1df;
|
|
129
|
+
--gw-success-strong: #0a6a4c;
|
|
129
130
|
--gw-warning: #9a6700;
|
|
130
131
|
--gw-warning-soft: #fbf1dc;
|
|
131
132
|
--gw-danger: #b42318;
|
|
@@ -158,6 +159,7 @@
|
|
|
158
159
|
--gw-on-accent: var(--gw-on-accent-dark);
|
|
159
160
|
--gw-success: #34c38f;
|
|
160
161
|
--gw-success-soft: #132a22;
|
|
162
|
+
--gw-success-strong: #34c38f;
|
|
161
163
|
--gw-warning: #e0b341;
|
|
162
164
|
--gw-warning-soft: #2b2410;
|
|
163
165
|
--gw-danger: #ff6b5a;
|
|
@@ -193,6 +195,7 @@
|
|
|
193
195
|
--gw-on-accent: var(--gw-on-accent-dark);
|
|
194
196
|
--gw-success: #34c38f;
|
|
195
197
|
--gw-success-soft: #132a22;
|
|
198
|
+
--gw-success-strong: #34c38f;
|
|
196
199
|
--gw-warning: #e0b341;
|
|
197
200
|
--gw-warning-soft: #2b2410;
|
|
198
201
|
--gw-danger: #ff6b5a;
|
|
@@ -227,6 +230,7 @@
|
|
|
227
230
|
--gw-on-accent: var(--gw-on-accent-light);
|
|
228
231
|
--gw-success: #007f5f;
|
|
229
232
|
--gw-success-soft: #e3f1df;
|
|
233
|
+
--gw-success-strong: #0a6a4c;
|
|
230
234
|
--gw-warning: #9a6700;
|
|
231
235
|
--gw-warning-soft: #fbf1dc;
|
|
232
236
|
--gw-danger: #b42318;
|
|
@@ -259,6 +263,7 @@
|
|
|
259
263
|
--gw-on-accent: var(--gw-on-accent-dark);
|
|
260
264
|
--gw-success: #34c38f;
|
|
261
265
|
--gw-success-soft: #132a22;
|
|
266
|
+
--gw-success-strong: #34c38f;
|
|
262
267
|
--gw-warning: #e0b341;
|
|
263
268
|
--gw-warning-soft: #2b2410;
|
|
264
269
|
--gw-danger: #ff6b5a;
|
package/docs/components.md
CHANGED
|
@@ -214,6 +214,22 @@ small text on a tint).
|
|
|
214
214
|
|
|
215
215
|
Don't: make a badge clickable; write a sentence in it; use success or warning for anything but state.
|
|
216
216
|
|
|
217
|
+
### Status chip `.gw-status`
|
|
218
|
+
|
|
219
|
+
0.14.0, gemboss.ai's "pills": a state inside a drawn screen of the product, as the GemBoss app draws it (Live, A/B test,
|
|
220
|
+
Early access). A rounded rectangle at the action radius (8px; 12px in `soft`), 28px tall, 12px/500 words, neutral by
|
|
221
|
+
default (ink at 8%). `--success` is live (its words in `--gw-success-strong`, 5.6:1 on the tint), `--accent` a test,
|
|
222
|
+
`--early` neutral with the dot in the accent. The dot is an optional `<span class="gw-status__dot">` before the words.
|
|
223
|
+
|
|
224
|
+
```html
|
|
225
|
+
<span class="gw-status gw-status--success"><span class="gw-status__dot"></span>Live</span>
|
|
226
|
+
<span class="gw-status gw-status--accent">A/B test</span>
|
|
227
|
+
<span class="gw-status gw-status--early"><span class="gw-status__dot"></span>Early access</span>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
A badge (`.gw-badge`, a pill) labels a thing on the page itself (New, Recommended); a status chip shows the state of
|
|
231
|
+
something inside a screen. Don't: a status chip outside a window or a drawn screen; a sentence in it; a click handler.
|
|
232
|
+
|
|
217
233
|
### Cards `.gw-card`
|
|
218
234
|
|
|
219
235
|
A white box with a 1px hairline, the card radius (12, 20 in `soft`), the resting shadow `--gw-shadow` (as the dashboard's cards), 24px padding
|
|
@@ -256,6 +272,11 @@ A framed screen: `__bar` (three dots and where the screen lives), `__body` (16px
|
|
|
256
272
|
`<img>`) and `__caption`. Use it around real product screenshots, or around a drawn mock-up built in the site's CSS with
|
|
257
273
|
the tokens.
|
|
258
274
|
|
|
275
|
+
0.14.0, gemboss.ai's frame 1:1: it floats (`--gw-shadow-raised`), 13px words at 20px lines. The bar is 40px with 12px
|
|
276
|
+
sides: three 8px dots, then where the screen lives 16px after them (12px, muted, one line, cut when too long; `<b>` words
|
|
277
|
+
in ink), then anything else 8px apart (a status chip, an action of the mock-up, which keep the window's ink). Up to 560px
|
|
278
|
+
the bar's words wrap instead and the bar grows, its parts at the top.
|
|
279
|
+
|
|
259
280
|
`__caption` says what the numbers in the window are: 12px, muted, at the end of the window, the last child after
|
|
260
281
|
`__body` (a `<figcaption>` when the window is a `<figure>`). Under a drawn mock-up whose numbers are made up it says
|
|
261
282
|
**"Illustrative data."**, in exactly these words: vi "Dữ liệu minh hoạ.", zh "示意数据。". Add a second sentence only when
|
|
@@ -305,7 +326,10 @@ Don't: emoji as icons; filled multi-colour icons; icon-only buttons without `ari
|
|
|
305
326
|
|
|
306
327
|
### Check list `.gw-list--check`
|
|
307
328
|
|
|
308
|
-
A `<ul>` whose items are led by
|
|
329
|
+
A `<ul>` whose items are led by a check mark: 0.14.0, gemboss.ai's, 1:1: 14px at 1.5 lines, the words 28px in, the mark a
|
|
330
|
+
16px tile on the accent's tint (4px corners, 4px down) with the tick in the accent, so it follows the theme and the brand.
|
|
331
|
+
An item may hold words and links side by side (a plain link in an item gets the link style). An item with its own
|
|
332
|
+
vertical padding moves the mark with it: set `top` on its `::before` and `::after`.
|
|
309
333
|
|
|
310
334
|
```html
|
|
311
335
|
<ul class="gw-list--check"><li>Checkout stays on Shopify</li><li>No overage fees</li></ul>
|
|
@@ -332,7 +356,10 @@ Don't: put the class on the `<table>` itself; tables for layout; colour cells to
|
|
|
332
356
|
|
|
333
357
|
### FAQ `.gw-faq`
|
|
334
358
|
|
|
335
|
-
Native `<details class="gw-faq__item">` with a `<summary>`, no script.
|
|
359
|
+
Native `<details class="gw-faq__item">` with a `<summary>`, no script. 0.14.0, gemboss.ai's 1:1: the question 18px/600 in
|
|
360
|
+
the brand face alone, the + the face's own glyph in the accent, turned 45 degrees into × when open; the answer muted,
|
|
361
|
+
16px, a paragraph at most 33em, rising in as it opens (not under reduced motion). On phones (up to 560px) the rows
|
|
362
|
+
tighten, never under 44px.
|
|
336
363
|
|
|
337
364
|
```html
|
|
338
365
|
<div class="gw-faq">
|
package/js/website.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/*! @gemboss/website-ui 0.
|
|
1
|
+
/*! @gemboss/website-ui 0.14.0 website.js | GENERATED by scripts/build.mjs from js/website.mjs (the source, with its comments): edit that file | spec: docs/markup-contract.md | load with defer */
|
|
2
2
|
(function () {
|
|
3
3
|
'use strict';
|
|
4
4
|
if (window.gwWebsite) return;
|
|
5
5
|
|
|
6
|
-
var version = '0.
|
|
6
|
+
var version = '0.14.0';
|
|
7
7
|
var api = { version: version, init: init, destroy: destroy };
|
|
8
8
|
var doc, root, mine, fine, sys, wide, desk, mid, live = [], queued = false;
|
|
9
9
|
var still, lights;
|
package/js/website.mjs
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// the export line and the // comments, plus auto-init): edit this file, then run the build. Keep comments on lines of
|
|
7
7
|
// their own, so the build can leave them out.
|
|
8
8
|
|
|
9
|
-
var version = '0.
|
|
9
|
+
var version = '0.14.0';
|
|
10
10
|
var api = { version: version, init: init, destroy: destroy };
|
|
11
11
|
// Page state. Set up by the first init(), never at import: a server can import this file.
|
|
12
12
|
var doc, root, mine, fine, sys, wide, desk, mid, live = [], queued = false;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gemboss/website-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "The GemBoss website kit: tokens, header, footer, sections and the rules (AGENTS.md) that GemCommerce public websites share, plus a CLI that checks a site, reports kit gaps and upgrades.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
package/system.json
CHANGED
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"on-accent": "#ffffff",
|
|
22
22
|
"success": "#007f5f",
|
|
23
23
|
"success-soft": "#e3f1df",
|
|
24
|
+
"success-strong": "#0a6a4c",
|
|
24
25
|
"warning": "#9a6700",
|
|
25
26
|
"warning-soft": "#fbf1dc",
|
|
26
27
|
"danger": "#b42318",
|
|
@@ -51,6 +52,7 @@
|
|
|
51
52
|
"on-accent": "#0d0d12",
|
|
52
53
|
"success": "#34c38f",
|
|
53
54
|
"success-soft": "#132a22",
|
|
55
|
+
"success-strong": "#34c38f",
|
|
54
56
|
"warning": "#e0b341",
|
|
55
57
|
"warning-soft": "#2b2410",
|
|
56
58
|
"danger": "#ff6b5a",
|
|
@@ -91,7 +93,7 @@
|
|
|
91
93
|
"roles": {
|
|
92
94
|
"action": "The thing you click: ink, or the brand's accent when the site chose the accent action profile (profiles.action).",
|
|
93
95
|
"accent": "Links, focus rings, active state, a chart line, the 8px label square; the primary button only through the accent action profile. Never body text, never words in a heading, never a section band.",
|
|
94
|
-
"success/warning/danger": "State only. Their -soft tints are grounds: a tip or a warning callout, a success or an error badge, a field marked invalid. danger (0.6.0, gap #28) is the dashboard's --gemboss-danger family: the words of a field's error and the fill of a destructive button (on-danger on it).",
|
|
96
|
+
"success/warning/danger": "State only. success-strong (0.14.0) is success's text form, the words of a status chip on its tint (gemboss.ai's emerald ink, 5.6:1). Their -soft tints are grounds: a tip or a warning callout, a success or an error badge, a field marked invalid. danger (0.6.0, gap #28) is the dashboard's --gemboss-danger family: the words of a field's error and the fill of a destructive button (on-danger on it).",
|
|
95
97
|
"line-control": "The border of a form control (a field, a checkbox, a radio), 0.6.0: it must reach 3:1 on bg, bg-soft and surface, light and dark, where line and line-strong are hairlines that do not. Like the dashboard's --gemboss-field-line.",
|
|
96
98
|
"wash": "The hero wash and illustrations only.",
|
|
97
99
|
"scrim": "The veil over the page while a mega menu is open (0.11.0): a dim and a 4px blur, as gemboss.ai.",
|
package/website.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @gemboss/website-ui 0.
|
|
1
|
+
/*! @gemboss/website-ui 0.14.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;
|
|
@@ -127,6 +127,7 @@
|
|
|
127
127
|
--gw-on-accent: var(--gw-on-accent-light);
|
|
128
128
|
--gw-success: #007f5f;
|
|
129
129
|
--gw-success-soft: #e3f1df;
|
|
130
|
+
--gw-success-strong: #0a6a4c;
|
|
130
131
|
--gw-warning: #9a6700;
|
|
131
132
|
--gw-warning-soft: #fbf1dc;
|
|
132
133
|
--gw-danger: #b42318;
|
|
@@ -159,6 +160,7 @@
|
|
|
159
160
|
--gw-on-accent: var(--gw-on-accent-dark);
|
|
160
161
|
--gw-success: #34c38f;
|
|
161
162
|
--gw-success-soft: #132a22;
|
|
163
|
+
--gw-success-strong: #34c38f;
|
|
162
164
|
--gw-warning: #e0b341;
|
|
163
165
|
--gw-warning-soft: #2b2410;
|
|
164
166
|
--gw-danger: #ff6b5a;
|
|
@@ -194,6 +196,7 @@
|
|
|
194
196
|
--gw-on-accent: var(--gw-on-accent-dark);
|
|
195
197
|
--gw-success: #34c38f;
|
|
196
198
|
--gw-success-soft: #132a22;
|
|
199
|
+
--gw-success-strong: #34c38f;
|
|
197
200
|
--gw-warning: #e0b341;
|
|
198
201
|
--gw-warning-soft: #2b2410;
|
|
199
202
|
--gw-danger: #ff6b5a;
|
|
@@ -228,6 +231,7 @@
|
|
|
228
231
|
--gw-on-accent: var(--gw-on-accent-light);
|
|
229
232
|
--gw-success: #007f5f;
|
|
230
233
|
--gw-success-soft: #e3f1df;
|
|
234
|
+
--gw-success-strong: #0a6a4c;
|
|
231
235
|
--gw-warning: #9a6700;
|
|
232
236
|
--gw-warning-soft: #fbf1dc;
|
|
233
237
|
--gw-danger: #b42318;
|
|
@@ -260,6 +264,7 @@
|
|
|
260
264
|
--gw-on-accent: var(--gw-on-accent-dark);
|
|
261
265
|
--gw-success: #34c38f;
|
|
262
266
|
--gw-success-soft: #132a22;
|
|
267
|
+
--gw-success-strong: #34c38f;
|
|
263
268
|
--gw-warning: #e0b341;
|
|
264
269
|
--gw-warning-soft: #2b2410;
|
|
265
270
|
--gw-danger: #ff6b5a;
|
|
@@ -662,6 +667,29 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
662
667
|
.gw-badge--danger { background: var(--gw-danger-soft); color: var(--gw-ink); }
|
|
663
668
|
.gw-badge--danger::before { content: ""; flex: none; width: 6px; height: 6px; border-radius: var(--gw-radius-chip); background: var(--gw-danger); }
|
|
664
669
|
|
|
670
|
+
/* Status chip (0.14.0): gemboss.ai's "pills", a state inside a drawn screen of the product (Live, a test, Early access), as
|
|
671
|
+
the GemBoss app draws it: a rounded rectangle (the action radius), 28px, 12px/500 words, neutral by default. --success is
|
|
672
|
+
live (its words in success's text form), --accent a test, --early neutral with the dot in the accent. The dot is an
|
|
673
|
+
optional `.gw-status__dot` before the words. A label that names a thing (New, Recommended) is a .gw-badge. */
|
|
674
|
+
.gw-status {
|
|
675
|
+
display: inline-flex;
|
|
676
|
+
align-items: center;
|
|
677
|
+
gap: 6px;
|
|
678
|
+
min-height: 28px;
|
|
679
|
+
padding: 6px 8px;
|
|
680
|
+
border-radius: var(--gw-radius-action);
|
|
681
|
+
background: color-mix(in srgb, var(--gw-ink) 8%, transparent);
|
|
682
|
+
color: var(--gw-ink-2);
|
|
683
|
+
font-size: 12px;
|
|
684
|
+
font-weight: 500;
|
|
685
|
+
line-height: 16px;
|
|
686
|
+
white-space: nowrap;
|
|
687
|
+
}
|
|
688
|
+
.gw-status--success { background: var(--gw-success-soft); color: var(--gw-success-strong); }
|
|
689
|
+
.gw-status--accent { background: var(--gw-accent-soft); color: var(--gw-accent-strong); }
|
|
690
|
+
.gw-status__dot { width: 6px; height: 6px; border-radius: var(--gw-radius-chip); background: currentColor; }
|
|
691
|
+
.gw-status--early .gw-status__dot { background: var(--gw-accent); }
|
|
692
|
+
|
|
665
693
|
/* cards sit: white, 1px hairline, the card radius of the site's profile (12, 20 in soft), the dashboard's resting
|
|
666
694
|
shadow (Chris 24/10/2026: one language with the app); no hover lift. A soft card is a tint and carries no shadow. */
|
|
667
695
|
.gw-card {
|
|
@@ -695,35 +723,48 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
695
723
|
:where(.gw-card, .gw-feature) p { font-size: 16px; color: var(--gw-muted); }
|
|
696
724
|
|
|
697
725
|
/* a framed screen: a browser or app window around a screenshot or a drawn mock-up */
|
|
726
|
+
/* 0.14.0: gemboss.ai's frame, 1:1: it floats (the raised shadow), 13px at 20px lines; the bar 40px with 12px sides, three
|
|
727
|
+
8px dots 6px apart, the words 16px after them and 8px between the bar's parts, one line, cut when too long; bold words in
|
|
728
|
+
the bar in ink. */
|
|
698
729
|
.gw-window {
|
|
730
|
+
position: relative;
|
|
699
731
|
overflow: hidden;
|
|
700
732
|
border: 1px solid var(--gw-line);
|
|
701
733
|
border-radius: var(--gw-radius-card);
|
|
702
734
|
background: var(--gw-surface);
|
|
703
735
|
color: var(--gw-ink);
|
|
704
|
-
box-shadow: var(--gw-shadow);
|
|
736
|
+
box-shadow: var(--gw-shadow-raised);
|
|
705
737
|
font-size: 13px;
|
|
706
|
-
line-height:
|
|
738
|
+
line-height: 20px;
|
|
707
739
|
}
|
|
708
740
|
.gw-window__bar {
|
|
709
741
|
display: flex;
|
|
710
742
|
align-items: center;
|
|
711
|
-
gap:
|
|
743
|
+
gap: 8px;
|
|
712
744
|
min-height: 40px;
|
|
713
|
-
padding:
|
|
745
|
+
padding: 0 12px;
|
|
714
746
|
border-bottom: 1px solid var(--gw-line);
|
|
715
747
|
color: var(--gw-muted);
|
|
716
748
|
font-size: 12px;
|
|
749
|
+
white-space: nowrap;
|
|
750
|
+
overflow: hidden;
|
|
717
751
|
}
|
|
718
752
|
.gw-window__bar::before {
|
|
719
753
|
content: "";
|
|
720
754
|
flex: none;
|
|
721
|
-
width:
|
|
755
|
+
width: 8px;
|
|
722
756
|
height: 8px;
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
757
|
+
margin-right: 36px;
|
|
758
|
+
border-radius: var(--gw-radius-chip);
|
|
759
|
+
background: var(--gw-line-strong);
|
|
760
|
+
box-shadow: 14px 0 0 var(--gw-line-strong), 28px 0 0 var(--gw-line-strong);
|
|
761
|
+
}
|
|
762
|
+
.gw-window__bar > :first-child { min-width: 0; overflow: hidden; }
|
|
763
|
+
.gw-window__bar b { color: var(--gw-ink); font-weight: 600; }
|
|
764
|
+
/* up to 560px the bar's words wrap rather than being cut: the bar grows, its parts at the top (gemboss.ai) */
|
|
765
|
+
@media (max-width: 560px) {
|
|
766
|
+
.gw-window__bar { align-items: flex-start; padding-block: 8px; white-space: normal; }
|
|
767
|
+
.gw-window__bar > :first-child { overflow: visible; }
|
|
727
768
|
}
|
|
728
769
|
.gw-window__body { padding: 16px; }
|
|
729
770
|
.gw-window__body:has(> img:only-child) { padding: 0; }
|
|
@@ -752,19 +793,31 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
752
793
|
.gw-icon svg { width: 20px; height: 20px; }
|
|
753
794
|
|
|
754
795
|
/* list with check marks */
|
|
755
|
-
.
|
|
756
|
-
|
|
796
|
+
/* 0.14.0: gemboss.ai's, 1:1: 14px at 1.5 lines, the words 28px in (a 20px column for the mark, 8px after it); the mark a
|
|
797
|
+
16px tile on the accent's tint, 4px down, with the tick in the accent (the tick follows the theme and the brand). The mark
|
|
798
|
+
is out of the flow, so an item may hold words and links side by side. */
|
|
799
|
+
.gw-list--check { display: grid; gap: 12px; padding: 0; list-style: none; font-size: 14px; line-height: 1.5; }
|
|
800
|
+
.gw-list--check > li { position: relative; padding-left: 28px; }
|
|
757
801
|
.gw-list--check > li::before {
|
|
758
802
|
content: "";
|
|
759
803
|
position: absolute;
|
|
760
804
|
left: 0;
|
|
761
|
-
top:
|
|
762
|
-
|
|
805
|
+
top: 4px;
|
|
806
|
+
width: 16px;
|
|
807
|
+
height: 16px;
|
|
808
|
+
border-radius: var(--gw-radius-4);
|
|
809
|
+
background: var(--gw-accent-soft);
|
|
810
|
+
}
|
|
811
|
+
.gw-list--check > li::after {
|
|
812
|
+
content: "";
|
|
813
|
+
position: absolute;
|
|
814
|
+
left: 0;
|
|
815
|
+
top: 4px;
|
|
763
816
|
width: 16px;
|
|
764
817
|
height: 16px;
|
|
765
818
|
background: var(--gw-accent);
|
|
766
|
-
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='
|
|
767
|
-
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='
|
|
819
|
+
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.2l2.6 2.5L12 5.3' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px no-repeat;
|
|
820
|
+
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.2l2.6 2.5L12 5.3' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px no-repeat;
|
|
768
821
|
}
|
|
769
822
|
|
|
770
823
|
/* table: the wrapper scrolls inside its own box on phones, the page never does */
|
|
@@ -787,10 +840,12 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
787
840
|
.gw-table--compare thead th:not(:first-child) { text-align: center; }
|
|
788
841
|
.gw-table--compare tbody th { position: sticky; left: 0; z-index: 1; background: var(--gw-surface); min-width: 160px; }
|
|
789
842
|
|
|
790
|
-
/* FAQ: native details/summary, no script
|
|
843
|
+
/* FAQ: native details/summary, no script. 0.14.0: gemboss.ai's, 1:1 (the question in the brand face alone, at the line
|
|
844
|
+
height around it; the + is the face's own glyph in the accent, turned 45 degrees when open; the answer 33em wide,
|
|
845
|
+
rising in as the item opens) */
|
|
791
846
|
.gw-faq { display: grid; gap: 12px; }
|
|
792
847
|
.gw-faq__item {
|
|
793
|
-
padding:
|
|
848
|
+
padding: 2px 24px;
|
|
794
849
|
border: 1px solid var(--gw-line);
|
|
795
850
|
border-radius: var(--gw-radius-card);
|
|
796
851
|
background: var(--gw-surface);
|
|
@@ -803,25 +858,28 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
803
858
|
gap: 16px;
|
|
804
859
|
min-height: 44px;
|
|
805
860
|
padding: 20px 0;
|
|
861
|
+
font-family: var(--gw-font-action);
|
|
806
862
|
font-size: 18px;
|
|
807
863
|
font-weight: 600;
|
|
808
|
-
line-height: 1.4;
|
|
809
864
|
list-style: none;
|
|
810
865
|
cursor: pointer;
|
|
811
866
|
}
|
|
812
867
|
.gw-faq__item > summary::-webkit-details-marker { display: none; }
|
|
813
868
|
.gw-faq__item > summary::after {
|
|
814
|
-
content: "";
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
linear-gradient(var(--gw-accent), var(--gw-accent)) center / 16px 2px no-repeat,
|
|
820
|
-
linear-gradient(var(--gw-accent), var(--gw-accent)) center / 2px 16px no-repeat;
|
|
821
|
-
transition: transform 0.2s var(--gw-ease);
|
|
869
|
+
content: "+";
|
|
870
|
+
color: var(--gw-accent);
|
|
871
|
+
font-size: 24px;
|
|
872
|
+
font-weight: 400;
|
|
873
|
+
transition: transform 0.2s ease;
|
|
822
874
|
}
|
|
823
875
|
.gw-faq__item[open] > summary::after { transform: rotate(45deg); }
|
|
824
|
-
.gw-faq__item > :not(summary) { margin: 0 0 20px;
|
|
876
|
+
.gw-faq__item > :not(summary) { margin: 0 0 20px; color: var(--gw-muted); font-size: 16px; }
|
|
877
|
+
.gw-faq__item > p { max-width: 33em; }
|
|
878
|
+
@keyframes gw-faq-in { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
|
|
879
|
+
.gw-faq__item[open] > :not(summary) { animation: gw-faq-in 0.28s ease; }
|
|
880
|
+
@media (prefers-reduced-motion: reduce) { .gw-faq__item[open] > :not(summary) { animation: none; } }
|
|
881
|
+
/* phones: the rows tighten (gemboss.ai), never under the 44px a finger needs */
|
|
882
|
+
@media (max-width: 560px) { .gw-faq__item > summary { padding-block: 4px; } }
|
|
825
883
|
|
|
826
884
|
/* touch: every control is at least 44px tall. A button up to 768px (0.12.0, as gemboss.ai: by the width, not the
|
|
827
885
|
pointer), its label wrapping (and tighter) from 480px down in the page's <main>, so a long one never pushes the page
|
package/website.min.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
/*! @gemboss/website-ui 0.13.0 | generated by scripts/build.mjs from the files in css/. Edit those and not this file */ :root{color-scheme: light;--gw-font: Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--gw-font-mono: ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--gw-font-action: Inter;--gw-text-11: 11px;--gw-text-12: 12px;--gw-text-13: 13px;--gw-text-14: 14px;--gw-text-16: 16px;--gw-text-18: 18px;--gw-text-20: 20px;--gw-text-22: 22px;--gw-text-24: 24px;--gw-text-30: 30px;--gw-display-h1: clamp(40px,4.6vw,68px);--gw-display-h2: clamp(32px,3.4vw,52px);--gw-display-wordmark: clamp(40px,9vw,128px);--gw-display-weight: 600;--gw-display-tracking: -0.03em;--gw-display-h1-leading: 1.1;--gw-display-h2-leading: 1.06;--gw-heading-weight: 650;--gw-heading-tracking: -0.022em;--gw-heading-leading: 1.08;--gw-body-size: 18px;--gw-body-leading: 1.6;--gw-space-0: 0;--gw-space-2: 2px;--gw-space-4: 4px;--gw-space-6: 6px;--gw-space-8: 8px;--gw-space-12: 12px;--gw-space-16: 16px;--gw-space-20: 20px;--gw-space-24: 24px;--gw-space-32: 32px;--gw-space-40: 40px;--gw-space-48: 48px;--gw-space-64: 64px;--gw-space-80: 80px;--gw-space-96: 96px;--gw-space-120: 120px;--gw-space-section: clamp(56px,38px + 5vw,110px);--gw-radius-0: 0;--gw-radius-2: 2px;--gw-radius-4: 4px;--gw-radius-6: 6px;--gw-radius-8: 8px;--gw-radius-12: 12px;--gw-radius-16: 16px;--gw-radius-20: 20px;--gw-radius-24: 24px;--gw-radius-999: 999px;--gw-radius-action: 8px;--gw-radius-chip: 999px;--gw-radius-card: 12px;--gw-radius-panel: 16px;--gw-radius-popover: 20px;--gw-shadow: 0 1px 2px rgba(31,30,29,.04),0 2px 6px rgba(31,30,29,.06);--gw-shadow-sm: 0 1px 2px rgba(31,30,29,.04);--gw-shadow-raised: 0 4px 16px rgba(31,30,29,.10);--gw-shadow-lift: 0 16px 32px -12px rgba(4,5,26,.72),0 4px 8px -2px rgba(4,5,26,.36);--gw-wrap: 1120px;--gw-wrap-narrow: 780px;--gw-gutter: 22px;--gw-header-height: 64px;--gw-header-gap: 16px;--gw-header-surface: 85%;--gw-header-blur: 10px;--gw-button-height: 40px;--gw-tap-min: 44px;--gw-ease: cubic-bezier(.22,1,.36,1);--gw-reveal-ms: 700ms;--gw-reveal-distance: 20px;--gw-spin-ms: 700ms;--gw-spot-radius: 260px;--gw-spot-radius-action: 120px;--gw-spot-strength: 22%;--gw-spot-strength-action: 38%;--gw-spot-strength-stage: 40%;--gw-spot-ms: 550ms;--gw-spot-ease: cubic-bezier(.16,1,.3,1);--gw-wash-pink: #ff6f5e;--gw-wash-violet: #7c8af7;--gw-wash-sky: #43b0ff;--gw-wash-mint: #1fcf9f;--gw-stage-glow: rgba(139,147,255,0.5);--gw-stage-glow-2: rgba(86,97,245,0.34);--gw-stage-top: #1d2058;--gw-stage-bottom: #0d0f2e;--gw-stage-dot: rgba(255,255,255,0.1);--gw-stage-ink: #ffffff;--gw-announce-bg: #171a38;--gw-announce-ink: #b9beda;--gw-announce-line: rgba(255,255,255,0.06);--gw-announce-tag: rgba(122,132,255,0.2);--gw-announce-tag-ink: #a7aeff;--gw-announce-link: #ffffff;--gw-announce-link-line: rgba(255,255,255,0.28);--gw-accent-light: #5661f5;--gw-accent-strong-light: #3a44de;--gw-accent-soft-light: #eef0fe;--gw-on-accent-light: #ffffff;--gw-accent-dark: #7c84ff;--gw-accent-strong-dark: #a3a9ff;--gw-accent-soft-dark: #1f2140;--gw-on-accent-dark: #0d0d12;--gw-bg: #ffffff;--gw-bg-soft: #f2f3f5;--gw-surface: #ffffff;--gw-ink: #1b1c1e;--gw-ink-2: #3b3d42;--gw-muted: #6a6d73;--gw-line: #e5e7ea;--gw-line-strong: #d5d8dd;--gw-line-control: #85888e;--gw-action: #1b1c1e;--gw-action-hover: #000000;--gw-on-action: #ffffff;--gw-accent: var(--gw-accent-light);--gw-accent-strong: var(--gw-accent-strong-light);--gw-accent-soft: var(--gw-accent-soft-light);--gw-on-accent: var(--gw-on-accent-light);--gw-success: #007f5f;--gw-success-soft: #e3f1df;--gw-warning: #9a6700;--gw-warning-soft: #fbf1dc;--gw-danger: #b42318;--gw-danger-soft: #fff0e9;--gw-on-danger: #ffffff;--gw-night: #0c0e14;--gw-night-2: #141722;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff;--gw-scrim: rgba(12,14,18,0.12)}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){color-scheme: dark;--gw-bg: #0d0d12;--gw-bg-soft: #121318;--gw-surface: #16171d;--gw-ink: #e3e4e8;--gw-ink-2: #c4c6cc;--gw-muted: #9a9ca6;--gw-line: #2a2b33;--gw-line-strong: #383944;--gw-line-control: #6a6d78;--gw-action: #e3e4e8;--gw-action-hover: #ffffff;--gw-on-action: #0d0d12;--gw-accent: var(--gw-accent-dark);--gw-accent-strong: var(--gw-accent-strong-dark);--gw-accent-soft: var(--gw-accent-soft-dark);--gw-on-accent: var(--gw-on-accent-dark);--gw-success: #34c38f;--gw-success-soft: #132a22;--gw-warning: #e0b341;--gw-warning-soft: #2b2410;--gw-danger: #ff6b5a;--gw-danger-soft: #2e1714;--gw-on-danger: #0d0d12;--gw-night: #0a0b10;--gw-night-2: #12141c;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff;--gw-scrim: rgba(0,0,0,0.35);--gw-shadow: 0 1px 0 rgba(0,0,0,.3);--gw-shadow-sm: 0 1px 0 rgba(0,0,0,.25);--gw-shadow-raised: 0 4px 16px rgba(0,0,0,.5)}}:root[data-theme="dark"]{color-scheme: dark;--gw-bg: #0d0d12;--gw-bg-soft: #121318;--gw-surface: #16171d;--gw-ink: #e3e4e8;--gw-ink-2: #c4c6cc;--gw-muted: #9a9ca6;--gw-line: #2a2b33;--gw-line-strong: #383944;--gw-line-control: #6a6d78;--gw-action: #e3e4e8;--gw-action-hover: #ffffff;--gw-on-action: #0d0d12;--gw-accent: var(--gw-accent-dark);--gw-accent-strong: var(--gw-accent-strong-dark);--gw-accent-soft: var(--gw-accent-soft-dark);--gw-on-accent: var(--gw-on-accent-dark);--gw-success: #34c38f;--gw-success-soft: #132a22;--gw-warning: #e0b341;--gw-warning-soft: #2b2410;--gw-danger: #ff6b5a;--gw-danger-soft: #2e1714;--gw-on-danger: #0d0d12;--gw-night: #0a0b10;--gw-night-2: #12141c;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff;--gw-scrim: rgba(0,0,0,0.35);--gw-shadow: 0 1px 0 rgba(0,0,0,.3);--gw-shadow-sm: 0 1px 0 rgba(0,0,0,.25);--gw-shadow-raised: 0 4px 16px rgba(0,0,0,.5)}:root[data-theme="light"]{color-scheme: light;--gw-bg: #ffffff;--gw-bg-soft: #f2f3f5;--gw-surface: #ffffff;--gw-ink: #1b1c1e;--gw-ink-2: #3b3d42;--gw-muted: #6a6d73;--gw-line: #e5e7ea;--gw-line-strong: #d5d8dd;--gw-line-control: #85888e;--gw-action: #1b1c1e;--gw-action-hover: #000000;--gw-on-action: #ffffff;--gw-accent: var(--gw-accent-light);--gw-accent-strong: var(--gw-accent-strong-light);--gw-accent-soft: var(--gw-accent-soft-light);--gw-on-accent: var(--gw-on-accent-light);--gw-success: #007f5f;--gw-success-soft: #e3f1df;--gw-warning: #9a6700;--gw-warning-soft: #fbf1dc;--gw-danger: #b42318;--gw-danger-soft: #fff0e9;--gw-on-danger: #ffffff;--gw-night: #0c0e14;--gw-night-2: #141722;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff;--gw-scrim: rgba(12,14,18,0.12)}.gw-band--night,.gw-showcase{color-scheme: dark;--gw-bg: var(--gw-night);--gw-bg-soft: var(--gw-night-2);--gw-surface: var(--gw-night-2);--gw-ink: #e3e4e8;--gw-ink-2: #c4c6cc;--gw-muted: #9a9ca6;--gw-line: #2a2b33;--gw-line-strong: #383944;--gw-line-control: #6a6d78;--gw-action: #e3e4e8;--gw-action-hover: #ffffff;--gw-on-action: #0d0d12;--gw-accent: var(--gw-accent-dark);--gw-accent-strong: var(--gw-accent-strong-dark);--gw-accent-soft: var(--gw-accent-soft-dark);--gw-on-accent: var(--gw-on-accent-dark);--gw-success: #34c38f;--gw-success-soft: #132a22;--gw-warning: #e0b341;--gw-warning-soft: #2b2410;--gw-danger: #ff6b5a;--gw-danger-soft: #2e1714;--gw-on-danger: #0d0d12;--gw-scrim: rgba(0,0,0,0.35)}:root[data-gw-action="accent"],:root[data-gw-action="accent"] :is(.gw-band--night,.gw-showcase){--gw-action: var(--gw-accent);--gw-action-hover: var(--gw-accent-strong);--gw-on-action: var(--gw-on-accent)}:root[data-gw-radius="soft"]{--gw-radius-action: 12px;--gw-radius-card: 20px;--gw-radius-panel: 24px;--gw-radius-popover: 24px}*,*::before,*::after{box-sizing: border-box}[hidden]{display: none !important}html{-webkit-text-size-adjust: 100%;text-size-adjust: 100%}body{margin: 0;background: var(--gw-bg);color: var(--gw-ink);font-family: var(--gw-font);font-size: var(--gw-body-size);line-height: var(--gw-body-leading);-webkit-font-smoothing: antialiased;text-rendering: optimizeLegibility}:where(h1,h2,h3,h4,h5,h6,p,ul,ol,dl,dd,figure,blockquote){margin: 0}img,svg,video{display: block;max-width: 100%}img,video{height: auto}button,input,select,textarea{font: inherit;color: inherit}button{cursor: pointer}a{color: inherit;text-decoration: none}b,strong{font-weight: 600}.gw-page{display: flex;flex-direction: column;min-height: 100vh;min-height: 100dvh}.gw-page > main{flex: 1 0 auto}h1,h2,h3,h4,h5,h6,.gw-h1,.gw-h2,.gw-h3,.gw-h4{font-weight: var(--gw-heading-weight);letter-spacing: var(--gw-heading-tracking);line-height: var(--gw-heading-leading);text-wrap: balance}h1,.gw-h1,h2,.gw-h2{font-weight: var(--gw-display-weight);letter-spacing: var(--gw-display-tracking)}h1,.gw-h1{font-size: var(--gw-display-h1);line-height: var(--gw-display-h1-leading)}h2,.gw-h2{font-size: var(--gw-display-h2);line-height: var(--gw-display-h2-leading)}h3,.gw-h3{font-size: 20px;font-weight: 600;letter-spacing: -0.02em;line-height: 1.2}h4,.gw-h4{font-size: 20px;font-weight: 600;letter-spacing: -0.01em}h5,h6{font-size: 16px;font-weight: 600;letter-spacing: 0}.gw-lead{font-size: 18px;line-height: 1.55;color: var(--gw-muted);max-width: 58ch}.gw-note{font-size: 14px;color: var(--gw-muted)}.gw-dim{color: var(--gw-muted)}.gw-label{display: inline-flex;align-items: center;gap: 8px;font-size: 13px;font-weight: 500;color: var(--gw-muted)}.gw-label::before{content: "";width: 8px;height: 8px;border-radius: var(--gw-radius-2);background: var(--gw-label-mark,var(--gw-ink))}:where(p,dd,td,figcaption,.gw-list--check li,.gw-prose) a:not([class]),.gw-link{color: var(--gw-accent-strong);font-weight: 500;text-decoration: underline;text-decoration-thickness: 1px;text-underline-offset: 4px;text-decoration-color: color-mix(in srgb,currentColor 40%,transparent)}:where(p,dd,td,figcaption,.gw-list--check li,.gw-prose) a:not([class]):hover,.gw-link:hover{text-decoration-color: currentColor}:focus-visible{border-radius: var(--gw-radius-4);outline: 2px solid var(--gw-accent);outline-offset: 3px}[id]{scroll-margin-top: calc(var(--gw-header-height) + 16px)}.gw-skip{position: absolute;left: -9999px;top: 0;z-index: 200;padding: 12px 20px;border-radius: 0 0 var(--gw-radius-card) 0;background: var(--gw-accent);color: var(--gw-on-accent);box-shadow: var(--gw-shadow);font-size: 14px;font-weight: 600}.gw-skip:focus{left: 0;border-radius: 0 0 var(--gw-radius-card) 0}.gw-visually-hidden{position: absolute;width: 1px;height: 1px;padding: 0;overflow: hidden;clip-path: inset(50%);white-space: nowrap;border: 0}.gw-reveal{opacity: 0;transform: translateY(var(--gw-reveal-distance));transition: opacity var(--gw-reveal-ms) var(--gw-ease),transform var(--gw-reveal-ms) var(--gw-ease);animation: gw-reveal-failsafe 1ms linear 2.5s forwards}.gw-reveal.is-in{opacity: 1;transform: none}@keyframes gw-reveal-failsafe{to{opacity: 1;transform: none}}@media (prefers-reduced-motion: reduce){*,*::before,*::after{scroll-behavior: auto !important}.gw-reveal{opacity: 1;transform: none;transition: none;animation: none}}.gw-wrap,.gw-wrap--narrow{width: min(100% - 2 * var(--gw-gutter),var(--gw-wrap));margin-inline: auto}.gw-wrap--narrow{max-width: var(--gw-wrap-narrow)}.gw-section{padding-block: var(--gw-space-section)}.gw-section--soft{background: var(--gw-bg-soft)}.gw-section--tight{padding-block: 40px}@media (min-width: 768px){.gw-section--tight{padding-block: 64px}}.gw-section__head{max-width: 760px}.gw-section__head--center{margin-inline: auto;text-align: center}.gw-section__head--center .gw-lead{margin-inline: auto}:where(.gw-section__head) + *{margin-top: 40px}@media (min-width: 768px){:where(.gw-section__head) + *{margin-top: 48px}}:where(.gw-section__head,.gw-hero > .gw-wrap,.gw-split > :not(.gw-window),.gw-cta,.gw-card,.gw-feature,.gw-plan) > * + *{margin-top: 16px}: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}: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}:where(.gw-section__head,.gw-split > :not(.gw-window),.gw-cta) > :where(* + .gw-lead){margin-top: 20px}.gw-actions{display: flex;flex-wrap: wrap;align-items: center;gap: 12px}.gw-grid,.gw-grid--2,.gw-grid--3,.gw-grid--4{display: grid;grid-template-columns: minmax(0,1fr);gap: 16px}@media (min-width: 480px){.gw-grid--4{grid-template-columns: repeat(2,minmax(0,1fr))}}@media (min-width: 768px){.gw-grid,.gw-grid--2,.gw-grid--3,.gw-grid--4{gap: 24px}.gw-grid--2{grid-template-columns: repeat(2,minmax(0,1fr))}.gw-grid--3{grid-template-columns: repeat(3,minmax(0,1fr))}}@media (min-width: 1080px){.gw-grid--4{grid-template-columns: repeat(4,minmax(0,1fr))}}.gw-band--night,.gw-showcase{position: relative;isolation: isolate;color: var(--gw-ink);background: radial-gradient(800px 360px at 50% 0%,color-mix(in srgb,var(--gw-accent) 22%,transparent),transparent 72%),var(--gw-night)}.gw-btn{position: relative;display: inline-flex;align-items: center;gap: 8px;max-width: 100%;height: var(--gw-button-height);padding: 0 20px;border: 1px solid transparent;border-radius: var(--gw-radius-action);background: var(--gw-action);color: var(--gw-on-action);font-family: var(--gw-font-action);font-size: 14px;font-weight: 600;letter-spacing: 0;text-align: center;white-space: nowrap;cursor: pointer;transition: background 0.15s ease,border-color 0.15s ease}.gw-btn:hover{transform: translateY(-1px);box-shadow: var(--gw-shadow)}.gw-btn svg{flex: none;width: 16px;height: 16px}.gw-btn--secondary{background: transparent;border-color: var(--gw-line-strong);color: var(--gw-ink)}.gw-btn--secondary:hover{background: transparent;border-color: var(--gw-ink)}.gw-btn--ghost{background: transparent;color: var(--gw-ink)}.gw-btn--ghost:hover{background: var(--gw-bg-soft)}.gw-btn:is(.gw-btn--secondary,.gw-btn--ghost):hover{transform: none;box-shadow: none}.gw-btn__arrow{letter-spacing: 0;transition: transform 0.18s ease}.gw-btn:hover .gw-btn__arrow{transform: translateX(3px)}.gw-btn--on-night{background: var(--gw-on-night);color: var(--gw-night)}.gw-btn--on-night:hover{background: var(--gw-on-night);opacity: 0.88}.gw-btn--sm{height: 36px;padding: 0 16px}.gw-btn--sm::after{content: "";position: absolute;top: -6px;right: 0;bottom: -6px;left: 0}.gw-btn--lg{height: 48px;padding: 0 24px;font-size: 16px}.gw-btn--block{display: flex;width: 100%;justify-content: center}.gw-btn:disabled,.gw-btn[aria-disabled="true"]{opacity: 0.48;cursor: not-allowed;pointer-events: none}.gw-btn:active{background: var(--gw-action-hover)}.gw-btn--secondary:active{background: var(--gw-bg-soft);border-color: var(--gw-ink)}.gw-btn--ghost:active{background: var(--gw-line)}.gw-btn--on-night:active{background: var(--gw-on-night);opacity: 0.76}.gw-btn--danger{background: var(--gw-danger);color: var(--gw-on-danger)}.gw-btn--danger:hover,.gw-btn--danger:active{background: color-mix(in srgb,var(--gw-danger) 84%,var(--gw-ink))}.gw-btn[aria-busy="true"]{cursor: progress;-webkit-text-fill-color: transparent}.gw-btn[aria-busy="true"] svg{opacity: 0}.gw-btn[aria-busy="true"]::before{content: "";position: absolute;top: 50%;left: 50%;width: 16px;height: 16px;margin: -8px 0 0 -8px;border: 2px solid color-mix(in srgb,currentColor 18%,transparent);border-top-color: currentColor;border-radius: var(--gw-radius-chip);animation: gw-spin var(--gw-spin-ms) linear infinite}@keyframes gw-spin{to{transform: rotate(360deg)}}@media (prefers-reduced-motion: reduce){.gw-btn[aria-busy="true"]::before{border: 0;border-radius: var(--gw-radius-0);background: radial-gradient(circle at 3px 50%,currentColor 1.5px,transparent 2px),radial-gradient(circle at 8px 50%,currentColor 1.5px,transparent 2px),radial-gradient(circle at 13px 50%,currentColor 1.5px,transparent 2px);animation: none}}.gw-link--arrow{display: inline-flex;align-items: center;gap: 6px;min-height: 24px;font-weight: 600;text-decoration: none}.gw-link--arrow::after{content: "\2192";transition: transform 0.18s var(--gw-ease)}.gw-link--arrow:hover::after{transform: translateX(2px)}.gw-chip{display: inline-flex;align-items: center;gap: 6px;min-height: 32px;padding: 4px 12px;border: 1px solid var(--gw-line-strong);border-radius: var(--gw-radius-chip);background: var(--gw-surface);color: var(--gw-ink-2);font-size: 13px;font-weight: 500;line-height: 1.4;white-space: nowrap}:is(a,button,label).gw-chip{cursor: pointer}:is(a,button,label).gw-chip:hover{border-color: var(--gw-ink);color: var(--gw-ink)}.gw-chip.is-active,.gw-chip[aria-pressed="true"],.gw-chip[aria-selected="true"]{border-color: var(--gw-accent);background: var(--gw-accent-soft);color: var(--gw-accent-strong)}.gw-segmented{display: inline-flex;max-width: 100%;border: 1px solid var(--gw-line-strong);border-radius: var(--gw-radius-action);background: var(--gw-surface);overflow: hidden;overflow: clip;vertical-align: middle}.gw-segmented--block{display: flex;width: 100%}.gw-segmented > button{display: inline-flex;flex: 0 1 auto;align-items: center;justify-content: center;min-width: 0;height: calc(var(--gw-button-height) - 2px);padding: 0 16px;border: 0;background: transparent;color: var(--gw-muted);font-size: 14px;font-weight: 500;line-height: 1.4;white-space: nowrap;cursor: pointer}.gw-segmented--block > button{flex: 1 1 0}.gw-segmented > button + button{border-left: 1px solid var(--gw-line-strong)}.gw-segmented > button:hover{background: var(--gw-bg-soft);color: var(--gw-ink)}.gw-segmented > button:active{background: var(--gw-line)}.gw-segmented > button:focus-visible{outline-offset: -2px}.gw-segmented > button[aria-checked="true"]{background: var(--gw-accent-soft);color: var(--gw-accent-strong)}.gw-badge{display: inline-flex;align-items: center;gap: 6px;min-height: 24px;padding: 2px 8px;border-radius: var(--gw-radius-chip);background: color-mix(in srgb,var(--gw-ink) 8%,transparent);color: var(--gw-ink-2);font-size: 12px;font-weight: 500;line-height: 1.4;white-space: nowrap;vertical-align: middle}.gw-badge--accent{background: var(--gw-accent-soft);color: var(--gw-accent-strong)}.gw-badge--success{background: var(--gw-success-soft);color: var(--gw-ink)}.gw-badge--success::before,.gw-badge--warning::before{content: "";flex: none;width: 6px;height: 6px;border-radius: var(--gw-radius-chip);background: var(--gw-success)}.gw-badge--warning::before{background: var(--gw-warning)}.gw-badge--danger{background: var(--gw-danger-soft);color: var(--gw-ink)}.gw-badge--danger::before{content: "";flex: none;width: 6px;height: 6px;border-radius: var(--gw-radius-chip);background: var(--gw-danger)}.gw-card{padding: 24px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface);box-shadow: var(--gw-shadow)}@media (min-width: 768px){.gw-card{padding: 32px}}.gw-card--soft{background: var(--gw-bg-soft);box-shadow: none}.gw-card--link{display: block;color: inherit}.gw-card--link:hover{border-color: var(--gw-line-strong)}.gw-card__media{overflow: hidden;aspect-ratio: 16 / 9;margin: -24px -24px 0;border-top-left-radius: calc(var(--gw-radius-card) - 1px);border-top-right-radius: calc(var(--gw-radius-card) - 1px);background: var(--gw-bg-soft)}.gw-card__media--wide{aspect-ratio: 1200 / 630}.gw-card__media--square{aspect-ratio: 1 / 1}.gw-card__media :is(img,video){width: 100%;height: 100%;object-fit: cover}@media (min-width: 768px){.gw-card__media{margin: -32px -32px 0}}:where(.gw-card,.gw-feature,.gw-plan) > :is(h3,h4) + p{margin-top: 8px}:where(.gw-card,.gw-feature) h3{font-size: 20px}:where(.gw-card,.gw-feature) p{font-size: 16px;color: var(--gw-muted)}.gw-window{overflow: hidden;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface);color: var(--gw-ink);box-shadow: var(--gw-shadow);font-size: 13px;line-height: 1.5}.gw-window__bar{display: flex;align-items: center;gap: 12px;min-height: 40px;padding: 8px 16px;border-bottom: 1px solid var(--gw-line);color: var(--gw-muted);font-size: 12px}.gw-window__bar::before{content: "";flex: none;width: 36px;height: 8px;background: radial-gradient(circle at 4px 4px,var(--gw-line-strong) 4px,transparent 4px),radial-gradient(circle at 18px 4px,var(--gw-line-strong) 4px,transparent 4px),radial-gradient(circle at 32px 4px,var(--gw-line-strong) 4px,transparent 4px)}.gw-window__body{padding: 16px}.gw-window__body:has(> img:only-child){padding: 0}.gw-window__body > img{width: 100%}.gw-window__caption{margin: 0;padding: 0 16px 12px;color: var(--gw-muted);font-size: 12px;line-height: 1.5;text-align: end}.gw-window__body:has(> img:only-child) + .gw-window__caption{padding-top: 12px}.gw-figure > :is(img,video,picture){display: block;width: 100%;height: auto;border-radius: var(--gw-radius-card)}.gw-figure > picture > img{display: block;width: 100%;height: auto;border-radius: inherit}.gw-figure > figcaption{margin-top: 12px;color: var(--gw-muted);font-size: 14px;line-height: 1.5}.gw-icon{display: inline-flex;align-items: center;justify-content: center;flex: none;width: 20px;height: 20px}.gw-icon svg{width: 20px;height: 20px}.gw-list--check{display: grid;gap: 12px;padding: 0;list-style: none}.gw-list--check > li{position: relative;padding-left: 24px}.gw-list--check > li::before{content: "";position: absolute;left: 0;top: 6px;top: calc((1lh - 16px) / 2);width: 16px;height: 16px;background: var(--gw-accent);-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.4l2.9 2.8L12.5 5' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.4l2.9 2.8L12.5 5' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px no-repeat}.gw-table{overflow-x: auto;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface);-webkit-overflow-scrolling: touch}.gw-table table{width: 100%;border-collapse: collapse;font-size: 14px;line-height: 1.5}.gw-table caption{padding: 16px;text-align: left;font-size: 13px;color: var(--gw-muted)}.gw-table th,.gw-table td{padding: 12px 16px;border-bottom: 1px solid var(--gw-line);text-align: left;vertical-align: top}.gw-table thead th{background: var(--gw-bg-soft);color: var(--gw-ink);font-size: 13px;font-weight: 600;white-space: nowrap}.gw-table tbody th{font-weight: 500}.gw-table tbody tr:last-child > *{border-bottom: 0}.gw-table td{color: var(--gw-ink-2);font-variant-numeric: tabular-nums}.gw-table--compare table{min-width: 640px}.gw-table--compare td{text-align: center}.gw-table--compare thead th:not(:first-child){text-align: center}.gw-table--compare tbody th{position: sticky;left: 0;z-index: 1;background: var(--gw-surface);min-width: 160px}.gw-faq{display: grid;gap: 12px}.gw-faq__item{padding: 0 24px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface)}.gw-faq__item[open]{border-color: var(--gw-line-strong)}.gw-faq__item > summary{display: flex;align-items: center;justify-content: space-between;gap: 16px;min-height: 44px;padding: 20px 0;font-size: 18px;font-weight: 600;line-height: 1.4;list-style: none;cursor: pointer}.gw-faq__item > summary::-webkit-details-marker{display: none}.gw-faq__item > summary::after{content: "";flex: none;width: 16px;height: 16px;background: linear-gradient(var(--gw-accent),var(--gw-accent)) center / 16px 2px no-repeat,linear-gradient(var(--gw-accent),var(--gw-accent)) center / 2px 16px no-repeat;transition: transform 0.2s var(--gw-ease)}.gw-faq__item[open] > summary::after{transform: rotate(45deg)}.gw-faq__item > :not(summary){margin: 0 0 20px;max-width: 68ch;color: var(--gw-muted);font-size: 16px}@media (max-width: 768px){.gw-btn,.gw-btn--sm,.gw-btn--lg{height: auto;min-height: var(--gw-tap-min);padding-block: 8px}.gw-btn--lg{min-height: 48px}}@media (max-width: 480px){:where(main) .gw-btn{white-space: normal;line-height: 1.35}}@media (max-width: 768px),(pointer: coarse){:is(a,button,label).gw-chip{min-height: var(--gw-tap-min)}.gw-segmented > button{height: auto;min-height: var(--gw-tap-min);padding-block: 8px;white-space: normal;text-wrap: balance}}.gw-announce{position: relative;z-index: 60;padding: 12px 16px;border-bottom: 1px solid var(--gw-announce-line);background: var(--gw-announce-bg);color: var(--gw-announce-ink);font-size: 13px;font-weight: 500;line-height: 1.5;letter-spacing: 0.005em;text-align: center}.gw-announce__tag{display: inline-block;margin-right: 12px;padding: 2.5px 8px;border-radius: var(--gw-radius-chip);background: var(--gw-announce-tag);color: var(--gw-announce-tag-ink);font-size: 11px;font-weight: 700;letter-spacing: 0.09em;vertical-align: 1px}.gw-announce a{margin-left: 8px;padding-bottom: 2px;border-bottom: 1px solid var(--gw-announce-link-line);color: var(--gw-announce-link);font-weight: 600;text-decoration: none;white-space: nowrap;transition: border-color 0.18s}.gw-announce a:hover{border-bottom-color: var(--gw-announce-link)}@media (max-width: 520px){.gw-announce{padding: 8px 12px;font-size: 12px}.gw-announce__tag{margin-right: 6px}}.gw-header{position: sticky;top: 0;z-index: 50;border-bottom: 1px solid var(--gw-line);background: var(--gw-surface)}.gw-header.is-scrolled{border-bottom-color: var(--gw-line-strong)}.gw-header__bar{display: flex;align-items: center;gap: 32px;height: var(--gw-header-height)}.gw-header > .gw-header__bar{width: min(100% - 32px,var(--gw-wrap) + 12px);margin-inline: auto;padding-inline: 24px}@media (max-width: 640px){.gw-header > .gw-header__bar{padding-inline: 6px}}.gw-brand{display: inline-flex;align-items: center;gap: 8px;flex: none;color: var(--gw-ink);font-size: 18px;font-weight: 700;letter-spacing: -0.01em;line-height: 1.6;white-space: nowrap}.gw-brand__mark{flex: none;width: 34px;height: 34px;border-radius: var(--gw-radius-8)}@media (max-width: 768px){.gw-brand{min-height: 44px}}.gw-brand__name{line-height: inherit}.gw-nav{display: none;margin-left: 6px}.gw-nav__list{display: flex;align-items: center;gap: 4px;margin: 0;padding: 0;list-style: none}.gw-nav__trigger,.gw-nav__link{display: inline-flex;align-items: center;gap: 6px;padding: 8px 12px;border: 0;border-radius: var(--gw-radius-action);background: transparent;color: var(--gw-ink-2);font-size: 14px;font-weight: 500;line-height: 1.6;white-space: nowrap;cursor: pointer}.gw-nav__trigger:hover,.gw-nav__link:hover,.gw-nav__item.is-open > .gw-nav__trigger{background: var(--gw-bg-soft);color: var(--gw-ink)}.gw-nav__trigger::after,.gw-mobile-menu__group > summary::after{content: "";flex: none;width: 12px;height: 12px;background: currentColor;opacity: 0.55;-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;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;transition: transform 0.18s var(--gw-ease)}.gw-nav__trigger[aria-expanded="true"]::after,.gw-mobile-menu__group[open] > summary::after{transform: rotate(180deg)}.gw-nav .gw-nav__trigger,.gw-nav .gw-nav__link{letter-spacing: -0.005em}.gw-nav__link[aria-current="page"],.gw-nav__trigger[aria-current]{color: var(--gw-accent-strong);font-weight: 600}.gw-header{--gw-mega-ease: cubic-bezier(0.25,1,0.5,1);--gw-mega-t: 0.36s;--gw-mega-glide: 0.26s}.gw-nav__item{display: flex}.gw-nav__chev{flex: none;opacity: 0.55;transition: transform 0.18s}.gw-nav__trigger:has(> .gw-nav__chev)::after{content: none}.gw-nav__trigger[aria-expanded="true"] > .gw-nav__chev{transform: rotate(180deg)}.gw-mega-surface,.gw-mega-caret,.gw-nav__pill,.gw-mega__hl{display: none}.gw-scrim{position: fixed;inset: 0;z-index: 40;pointer-events: none;opacity: 0;background: var(--gw-scrim);-webkit-backdrop-filter: blur(4px);backdrop-filter: blur(4px);transition: opacity 0.24s}.gw-scrim.is-on{opacity: 1}.gw-mega a{font-size: 16px;font-weight: 500;letter-spacing: -0.005em}.gw-mega__link b{display: block}.gw-mega__link i{display: block;font-style: normal}@media (min-width: 1081px){.gw-header.has-mega .gw-nav__trigger,.gw-header.has-mega .gw-nav__link{position: relative;z-index: 1;background: none}.gw-header.has-mega .gw-nav__trigger:hover,.gw-header.has-mega .gw-nav__link:hover,.gw-header.has-mega .gw-nav__item:hover > .gw-nav__trigger,.gw-header.has-mega .gw-nav__item:focus-within > .gw-nav__trigger{background: none;color: var(--gw-ink)}.gw-header.has-mega .gw-nav__chev{transform: none;transition: transform 0.2s var(--gw-mega-ease)}.gw-header.has-mega .gw-nav__trigger[aria-expanded="true"] > .gw-nav__chev{transform: rotate(180deg)}.gw-nav__pill{display: block;position: absolute;left: 0;top: 0;z-index: 0;width: 0;height: 0;border-radius: var(--gw-radius-action);pointer-events: none;opacity: 0;background: color-mix(in srgb,var(--gw-ink) 6%,transparent);transition: translate var(--gw-mega-glide) var(--gw-mega-ease),width var(--gw-mega-glide) var(--gw-mega-ease),opacity 0.2s ease}.gw-nav__pill.is-on{opacity: 1}.gw-mega-surface{display: block;position: absolute;left: 0;top: var(--gw-mega-top,73px);z-index: 88;width: 0;height: 0;pointer-events: none;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-popover);background: var(--gw-surface);box-shadow: var(--gw-shadow-raised);opacity: 0;translate: 0 -6px;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)}.gw-mega-caret{display: block;position: absolute;left: 0;top: calc(var(--gw-mega-top,73px) - 5px);z-index: 89;width: 12px;height: 12px;pointer-events: none;border-top: 1px solid var(--gw-line);border-left: 1px solid var(--gw-line);border-radius: var(--gw-radius-2) 0 0 0;background: var(--gw-surface);rotate: 45deg;opacity: 0;transition: opacity 0.22s ease,translate var(--gw-mega-t) var(--gw-mega-ease)}.gw-header.is-mega-open .gw-mega-surface,.gw-header.is-mega-open .gw-mega-caret{opacity: 1}.gw-header.has-mega .gw-mega{position: absolute;top: var(--gw-mega-top,73px);left: 0;z-index: 90;width: var(--gw-mega-w,1000px);max-width: calc(100vw - 48px);border-radius: var(--gw-radius-popover);opacity: 0;visibility: hidden;pointer-events: none;translate: 0 -6px;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)}.gw-header.has-mega.is-mega-open .gw-mega{translate: 0 0}.gw-header.has-mega.is-mega-open .gw-nav__item.is-open > .gw-mega{opacity: 1;visibility: visible;pointer-events: auto;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}.gw-mega__body,.gw-mega__foot{translate: var(--gw-mega-dx,0px) 0;transition: translate var(--gw-mega-t) var(--gw-mega-ease)}.gw-mega__body{display: grid;grid-template-columns: minmax(0,1fr) var(--gw-mega-pv,320px);gap: 16px;padding: 12px}.gw-mega__body:not(:has(> .gw-mega__aside)){grid-template-columns: minmax(0,1fr)}.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}.gw-mega__col{display: flex;flex-direction: column;gap: 2px}.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}.gw-mega__link{position: relative;z-index: 1;display: block;padding: 12px;border-radius: var(--gw-radius-action);color: var(--gw-ink)}.gw-mega__link:focus-visible{outline: 2px solid var(--gw-accent);outline-offset: -2px}.gw-mega__link b{color: var(--gw-ink);font-size: 14px;font-weight: 500;letter-spacing: 0;line-height: 20px}.gw-mega__link i{margin-top: 2px;color: var(--gw-muted);font-size: 13px;line-height: 18px}.gw-mega__link > .gw-mega__icon,.gw-mega__link > img{display: none}.gw-mega__hl{display: block;position: absolute;left: 0;top: 0;z-index: 0;width: 0;height: 0;border-radius: var(--gw-radius-action);pointer-events: none;opacity: 0;background: color-mix(in srgb,var(--gw-ink) 5%,transparent);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}.gw-mega__hl.is-on{opacity: 1}.gw-mega__aside{position: relative;display: block;min-height: 296px;border-radius: var(--gw-radius-card);overflow: hidden}.gw-mega__card{position: absolute;inset: 0;display: flex;flex-direction: column;gap: 12px;padding: 0 0 4px;color: var(--gw-ink);opacity: 0;pointer-events: none;transition: opacity 0.24s ease}.gw-mega__card[aria-hidden="true"]{visibility: hidden;transition: opacity 0.24s ease,visibility 0s linear 0.24s}.gw-mega__card.is-on{opacity: 1;visibility: visible;pointer-events: auto;transition: opacity 0.28s ease,visibility 0s}.gw-mega__card:focus-visible{border-radius: var(--gw-radius-card);outline: 2px solid var(--gw-accent);outline-offset: -2px}.gw-mega__foot{display: flex;align-items: center;justify-content: space-between;gap: 16px;padding: 16px 24px;border-top: 1px solid var(--gw-line);font-size: 13px}.gw-mega__foot-start,.gw-mega__foot-end{display: flex;align-items: center;gap: 24px}.gw-mega__foot a{color: var(--gw-muted);font-size: 13px;font-weight: 500;transition: color 0.15s}.gw-mega__foot a:hover{color: var(--gw-ink)}.gw-mega__foot a.gw-mega__cta{color: var(--gw-ink);font-weight: 600}}.gw-mega__art{--gw-lift: var(--gw-shadow-lift);position: relative;display: block;overflow: hidden;border-radius: var(--gw-radius-card);background: radial-gradient(130% 90% at 100% 0%,var(--gw-stage-glow),transparent 55%),radial-gradient(90% 80% at 0% 100%,var(--gw-stage-glow-2),transparent 60%),linear-gradient(160deg,var(--gw-stage-top),var(--gw-stage-bottom));color: var(--gw-stage-ink)}.gw-mega__aside .gw-mega__art::before{content: "";position: absolute;inset: 0;pointer-events: none;background-image: radial-gradient(var(--gw-stage-dot) 1px,transparent 1.5px);background-size: 16px 16px;-webkit-mask-image: linear-gradient(170deg,#000,transparent 70%);mask-image: linear-gradient(170deg,#000,transparent 70%)}:where(.gw-mega__art > *){position: relative}:where(.gw-mega__art) > img{position: absolute;inset: 0;display: block;width: 100%;height: 100%;object-fit: cover}.gw-mega__aside .gw-mega__art{flex: 1 1 auto;min-height: 0;container-type: size}.gw-mega__card-text{display: block;padding: 0 4px}.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}.gw-mega__card-text i{display: block;margin-top: 2px;color: var(--gw-muted);font-size: 13px;font-style: normal;line-height: 18px}.gw-mobile-menu .gw-mega__card{display: flex;flex-direction: column;gap: 12px;margin: 24px 0 8px;color: var(--gw-ink)}.gw-mobile-menu .gw-mega__art{display: flex;padding: 16px}.gw-mobile-menu .gw-mega__card-text b{display: block;line-height: 1.6}.gw-mobile-menu .gw-mega__card-text i{margin-top: 4px}.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}.gw-mega__go{color: var(--gw-accent-strong);font-weight: 500}.gw-mega__card-text > .gw-mega__go{display: block;margin-top: 8px;font-size: 13px}.gw-mega__card-text b > .gw-mega__go{margin-left: auto;transition: translate 0.2s var(--gw-mega-ease)}.gw-mega__card:hover b > .gw-mega__go{translate: 4px 0}.gw-mega__new{display: inline-flex;align-items: center;height: 20px;margin-right: 6px;padding: 0 6px;border-radius: var(--gw-radius-6);background: var(--gw-accent-soft);color: var(--gw-accent-strong);font-size: 11px;font-weight: 600}@media (prefers-reduced-motion: reduce){.gw-scrim,.gw-nav__pill,.gw-mega-surface,.gw-mega-caret,.gw-mega__hl,.gw-mega__go,.gw-header.has-mega .gw-mega,.gw-header.has-mega.is-mega-open .gw-nav__item.is-open > .gw-mega,.gw-mega__body,.gw-mega__foot,.gw-mega__card,.gw-mega__card.is-on{transition: none}.gw-mega-surface,.gw-header.has-mega .gw-mega{translate: 0 0}}.gw-header__actions{display: flex;align-items: center;gap: 4px;margin-left: auto}.gw-header__signin,.gw-header__link{display: none}.gw-header__actions > .gw-btn{display: none;margin-left: 8px;line-height: 1.6}.gw-theme-toggle{display: inline-flex;align-items: center;justify-content: center;flex: none;width: 40px;height: 40px;padding: 0;border: 0;border-radius: var(--gw-radius-action);background: transparent;color: var(--gw-ink)}.gw-theme-toggle:hover{background: var(--gw-bg-soft)}.gw-theme-toggle svg,.gw-menu-toggle svg{width: 20px;height: 20px}.gw-menu-toggle{display: inline-flex;align-items: center;justify-content: center;flex: none;width: 42px;height: 42px;padding: 0;border: 1px solid var(--gw-line-strong);border-radius: var(--gw-radius-card);background: var(--gw-surface);color: var(--gw-ink)}.gw-menu-toggle[aria-expanded="true"]{border-color: var(--gw-ink)}.gw-menu-toggle[aria-expanded="true"] .gw-menu-toggle__open,.gw-menu-toggle:not([aria-expanded="true"]) .gw-menu-toggle__close{display: none}.gw-mobile-menu{position: fixed;top: calc(var(--gw-header-height) + 1px);left: 0;right: 0;bottom: 0;overflow-y: auto;overscroll-behavior: contain;padding-block: 8px 32px;background: var(--gw-bg)}html.is-menu-open{overflow: hidden}html.is-menu-open .gw-header{position: fixed;top: 0;left: 0;right: 0}.gw-mobile-menu__group > summary,.gw-mobile-menu__top{display: flex;align-items: center;justify-content: space-between;min-height: 48px;padding-block: 8px;border-bottom: 1px solid var(--gw-line);color: var(--gw-ink);font-size: 18px;font-weight: 500;list-style: none;cursor: pointer}.gw-mobile-menu__group > summary::-webkit-details-marker{display: none}.gw-mobile-menu__list{margin: 0;padding: 8px 0 16px;list-style: none}.gw-mobile-menu__link{display: flex;align-items: center;min-height: 44px;color: var(--gw-ink-2);font-size: 16px}.gw-mobile-menu__actions{display: grid;gap: 8px;margin-top: 24px}@media (min-width: 561px){.gw-header__actions > .gw-btn:not(.gw-btn--secondary){display: inline-flex}}@media (min-width: 1181px){.gw-header__link,.gw-header__actions > .gw-btn--secondary{display: inline-flex}}@media (min-width: 1081px){.gw-nav{display: block}.gw-header__signin{display: inline-flex}.gw-menu-toggle,.gw-mobile-menu{display: none !important}html.is-menu-open{overflow: visible}html.is-menu-open .gw-header{position: sticky}}@media (max-width: 768px),(pointer: coarse){.gw-theme-toggle,.gw-menu-toggle{width: var(--gw-tap-min);height: var(--gw-tap-min)}}@media (min-width: 1081px){.gw-header--float{top: var(--gw-header-gap);width: min(100% - 32px,var(--gw-wrap) + 50px);margin: var(--gw-header-gap) auto 0;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-panel);background: color-mix(in srgb,var(--gw-surface) var(--gw-header-surface),transparent);-webkit-backdrop-filter: blur(var(--gw-header-blur));backdrop-filter: blur(var(--gw-header-blur));box-shadow: var(--gw-shadow-raised)}.gw-header--float.is-scrolled{border-color: var(--gw-line-strong)}.gw-header--float > .gw-header__bar{width: auto;padding-inline: 24px}.gw-header--float .gw-mega{max-height: calc(100vh - var(--gw-header-height) - var(--gw-header-gap) - 24px)}:root:has(.gw-header--float) [id]{scroll-margin-top: calc(var(--gw-header-height) + var(--gw-header-gap) + 18px)}}@media (min-width: 1081px) and (prefers-reduced-transparency: reduce){.gw-header--float{background: var(--gw-surface);-webkit-backdrop-filter: none;backdrop-filter: none}}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.gw-header--float{background: var(--gw-surface)}}.gw-mobile-menu[data-gw-menu="drill"]{display: flex;flex-direction: column;overflow-x: hidden;padding-bottom: 0;line-height: 1.6}.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}.gw-mobile-menu[data-gw-menu="drill"] a{font-size: 18px;font-weight: 500;letter-spacing: -0.005em}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__group > summary,.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__top{min-height: 64px;font-size: 24px;letter-spacing: -0.01em}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__group > summary::after{width: 20px;height: 20px;-webkit-mask-size: 20px;mask-size: 20px}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__list{padding: 0}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__list .gw-mobile-menu__link{gap: 12px;min-height: 56px;padding-block: 12px;border-bottom: 1px solid var(--gw-line);color: var(--gw-ink);font-weight: 500}.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}.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}.gw-mobile-menu__heading{padding: 16px 0 8px;color: var(--gw-muted);font-size: 12px;font-weight: 500;line-height: 1.6}.gw-mobile-menu__icon{display: grid;place-items: center;flex: none;width: 32px;height: 32px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-action);color: var(--gw-muted)}.gw-mobile-menu__icon svg{width: 16px;height: 16px}.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}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__list .gw-mobile-menu__link:hover{background: var(--gw-bg-soft);transform: translateX(2px)}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__list .gw-mobile-menu__link:focus-visible{background: var(--gw-bg-soft)}.gw-mobile-menu__icon{background: var(--gw-surface);transition: color 0.15s,border-color 0.15s,background 0.15s,transform 0.15s}.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)}.gw-mobile-menu__link:hover .gw-mobile-menu__icon{transform: translateY(-1px)}.gw-mobile-menu__all{display: flex;align-items: center;min-height: 56px;color: var(--gw-accent-strong);font-size: 16px;font-weight: 500}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__all{font-size: 16px}.gw-mobile-menu__all::after{content: "\00a0\2192"}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions{position: sticky;bottom: 0;z-index: 1;grid-template-columns: minmax(0,1fr) minmax(0,1fr);align-items: center;gap: 8px;margin-top: auto;padding-block: 12px calc(12px + env(safe-area-inset-bottom));border-top: 1px solid var(--gw-line);background: var(--gw-bg)}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > .gw-btn{grid-row: 2}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > :not(.gw-btn){grid-row: 1}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > :not(.gw-btn):last-child{grid-column: 2;justify-self: end}.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}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > .gw-mobile-menu__link--muted{color: var(--gw-muted)}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > .gw-btn{padding: 0 16px;font-size: 16px;line-height: 1.6}.gw-mobile-menu.is-drill{top: var(--gw-menu-top,calc(var(--gw-header-height) + 1px))}html.is-menu-open .gw-header:has(> .gw-mobile-menu.is-drill){position: sticky}.gw-mobile-menu.is-drill .gw-mobile-menu__group > summary::after{transform: rotate(-90deg);transition: none}.gw-mobile-menu.is-drilled > nav > :not([open],.gw-mobile-menu__actions),.gw-mobile-menu.is-drilled .gw-mobile-menu__group[open] > summary{display: none}.gw-mobile-menu__head{display: none}.gw-mobile-menu.is-drilled .gw-mobile-menu__group[open] > .gw-mobile-menu__head{display: grid;grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);align-items: center;gap: 8px;min-height: 56px;margin-bottom: 8px;border-bottom: 1px solid var(--gw-line)}.gw-mobile-menu__back{display: inline-flex;align-items: center;justify-self: start;gap: 4px;min-height: var(--gw-tap-min);padding: 0 8px 0 0;border: 0;background: transparent;color: var(--gw-muted);font-size: 16px;line-height: 1.6}.gw-mobile-menu__back:hover{color: var(--gw-ink)}.gw-mobile-menu__back::before{content: "";flex: none;width: 16px;height: 16px;background: currentColor;-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;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}.gw-mobile-menu__title{color: var(--gw-ink);font-size: 16px;font-weight: 600;letter-spacing: 0;line-height: 1.6;text-align: center}@media (prefers-reduced-motion: no-preference){.gw-mobile-menu.is-drilled .gw-mobile-menu__group[open]{animation: gw-drill-in 0.24s var(--gw-ease)}.gw-mobile-menu.is-back > nav > :not(.gw-mobile-menu__actions){animation: gw-drill-back 0.24s var(--gw-ease)}}@keyframes gw-drill-in{from{opacity: 0;transform: translateX(32px)}}@keyframes gw-drill-back{from{opacity: 0;transform: translateX(-32px)}}.gw-lang{position: relative;flex: none}.gw-header__actions > .gw-lang{display: none}.gw-lang__btn{display: inline-flex;align-items: center;gap: 6px;height: 40px;padding: 0 12px;border: 0;border-radius: var(--gw-radius-action);background: transparent;color: var(--gw-ink-2);font-size: 14px;font-weight: 500;line-height: 1.4;white-space: nowrap}.gw-lang__btn:hover,.gw-lang__btn[aria-expanded="true"]{background: var(--gw-bg-soft);color: var(--gw-ink)}.gw-lang__btn svg{flex: none;width: 18px;height: 18px}.gw-lang__menu{position: absolute;top: calc(100% + 8px);right: 0;z-index: 1;display: grid;gap: 2px;min-width: 200px;margin: 0;padding: 8px;list-style: none;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface);box-shadow: var(--gw-shadow-raised)}.gw-lang__link{display: flex;align-items: center;min-height: 40px;padding: 0 12px;border-radius: var(--gw-radius-action);color: var(--gw-ink);font-size: 14px;font-weight: 500;white-space: nowrap}.gw-lang__link:hover{background: var(--gw-bg-soft)}.gw-mobile-menu .gw-lang__btn{padding: 0 8px 0 0;color: var(--gw-muted);font-size: 16px}.gw-mobile-menu .gw-lang__btn:hover,.gw-mobile-menu .gw-lang__btn[aria-expanded="true"]{background: transparent;color: var(--gw-ink)}.gw-mobile-menu .gw-lang__menu{top: auto;right: auto;bottom: calc(100% + 8px);left: 0}@media (max-width: 768px),(pointer: coarse){.gw-lang__btn,.gw-lang__link{min-height: var(--gw-tap-min)}}@media (min-width: 1081px){.gw-header__actions > .gw-lang{display: block}}.gw-theme-toggle__sun{display: none}:root[data-theme="dark"] .gw-theme-toggle__sun{display: block}:root[data-theme="dark"] .gw-theme-toggle__moon{display: none}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .gw-theme-toggle__sun{display: block}:root:not([data-theme="light"]) .gw-theme-toggle__moon{display: none}}.gw-brand__logo{display: block;flex: none;width: auto;height: 26px}.gw-brand__logo--dark{display: none}:root[data-theme="dark"] .gw-brand__logo--dark{display: block}:root[data-theme="dark"] .gw-brand__logo:has(+ .gw-brand__logo--dark){display: none}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .gw-brand__logo--dark{display: block}:root:not([data-theme="light"]) .gw-brand__logo:has(+ .gw-brand__logo--dark){display: none}}.gw-footer{padding-block: 64px 32px;border-top: 1px solid var(--gw-line);background: transparent;color: var(--gw-ink);font-size: 14px}.gw-footer__grid{display: grid;grid-template-columns: repeat(2,minmax(0,1fr));gap: 32px}.gw-footer__brand p{max-width: 30ch;margin-top: 16px;color: var(--gw-muted);line-height: 22px}.gw-footer__brand .gw-brand{display: flex;min-height: 34px;font-family: var(--gw-font);line-height: 1.6}.gw-footer__brand .gw-brand__mark{width: 34px;height: 34px;border-radius: var(--gw-radius-8)}.gw-footer__heading{margin: 0 0 12px;color: var(--gw-ink);font-family: var(--gw-font);font-size: 13px;font-weight: 600;letter-spacing: 0;line-height: 1.6;text-wrap: balance}.gw-footer__newsletter{margin-top: 24px}.gw-footer__col ul{margin: 0;padding: 0;list-style: none}.gw-footer__col a{display: block;padding-block: 6px;color: var(--gw-muted)}.gw-footer__col a:hover{color: var(--gw-ink)}.gw-footer__col a[aria-current="page"]{color: var(--gw-accent-strong)}.gw-footer__bottom{display: flex;flex-wrap: wrap;align-items: center;justify-content: space-between;gap: 12px 24px;margin-top: 32px;padding-top: 24px;border-top: 1px solid var(--gw-line);color: var(--gw-muted);font-size: 13px}.gw-footer__bottom:first-child{margin-top: 0;padding-top: 0;border-top: 0}.gw-footer__bottom ul{display: flex;flex-wrap: wrap;gap: 16px;margin: 0;padding: 0;list-style: none}.gw-footer__bottom a{display: inline-flex;align-items: center;justify-content: center;color: var(--gw-muted)}.gw-footer__bottom a:hover{color: var(--gw-ink)}@media (max-width: 620px){.gw-footer__grid{gap: 24px 20px}.gw-footer__brand{grid-column: 1 / -1}}@media (min-width: 1081px){.gw-footer__grid{grid-auto-flow: column;grid-template-columns: minmax(0,1.6fr);grid-auto-columns: minmax(0,1fr);gap: 32px 24px}}@media (max-width: 768px),(pointer: coarse){.gw-footer__brand .gw-brand{min-height: var(--gw-tap-min)}.gw-footer__col a{display: flex;align-items: center;min-height: var(--gw-tap-min);padding-block: 0}.gw-footer__bottom a{min-height: var(--gw-tap-min)}.gw-footer__bottom ul:last-child a{min-width: var(--gw-tap-min)}.gw-footer__bottom ul:not(:last-child){gap: 8px 16px}}.gw-footer__ask{margin-top: 24px}.gw-footer__ask > .gw-footer__ask-label{margin: 0;color: var(--gw-muted);font-size: 13px;line-height: 22px}.gw-footer__ask > ul{display: flex;flex-wrap: wrap;gap: 0 16px;margin: 4px 0 0;padding: 0;list-style: none}.gw-footer__ask a{display: block;padding-block: 4px;color: var(--gw-ink);line-height: 20px}.gw-footer__ask a:hover{text-decoration: underline}.gw-footer__ext:empty{display: inline-block;width: 12px;height: 12px;margin-left: 4px;vertical-align: -1px;background: var(--gw-muted);-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3.5 8.5l5-5M4.5 3.5h4v4' fill='none' stroke='%23000' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3.5 8.5l5-5M4.5 3.5h4v4' fill='none' stroke='%23000' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat}.gw-footer__ext:not(:empty){color: var(--gw-muted);font-weight: 400}.gw-footer__fold > summary{list-style: none}.gw-footer__fold > summary::-webkit-details-marker{display: none}.gw-footer__fold .gw-footer__heading{margin: 0}.gw-footer__fold > ul{margin: 0;padding: 0;list-style: none}.gw-footer__col > .gw-footer__fold a{line-height: 20px}@media (min-width: 621px){.gw-footer__fold > summary{display: contents}.gw-footer__col > .gw-footer__fold .gw-footer__heading{margin-bottom: 12px}}@media (min-width: 621px){.gw-footer__fold::details-content{content-visibility: visible}}@media (max-width: 620px){.gw-footer__grid:has(> .gw-footer__col > .gw-footer__fold){grid-template-columns: minmax(0,1fr);row-gap: 0}.gw-footer__grid:has(> .gw-footer__col > .gw-footer__fold) > .gw-footer__brand{padding-bottom: 24px}.gw-footer__col:has(> .gw-footer__fold){border-top: 1px solid var(--gw-line)}.gw-footer__col:has(> .gw-footer__fold):last-child,.gw-footer__family{border-bottom: 1px solid var(--gw-line)}.gw-footer__fold > summary{display: flex;align-items: center;justify-content: space-between;gap: 16px;min-height: 52px;padding: 0;cursor: pointer}.gw-footer__fold > summary::after{content: "";flex: none;width: 8px;height: 8px;margin-right: 4px;border-right: 2px solid var(--gw-muted);border-bottom: 2px solid var(--gw-muted);rotate: 45deg;translate: 0 -2px}.gw-footer__fold[open] > summary::after{rotate: 225deg;translate: 0 2px}.gw-footer__fold > summary:focus-visible{outline: 2px solid var(--gw-accent);outline-offset: 2px;border-radius: var(--gw-radius-6)}.gw-footer__fold > ul{padding-bottom: 12px}.gw-footer__col > .gw-footer__fold a{display: flex;align-items: center;min-height: var(--gw-tap-min)}}@media (min-width: 1081px){.gw-footer__grid:has(> .gw-footer__col > .gw-footer__fold){grid-template-columns: minmax(0,calc((100% - 120px) * 6 / 31))}}.gw-footer__family .gw-footer__heading{color: var(--gw-muted);font-weight: 500}.gw-footer__family .gw-footer__fold > ul{display: grid;grid-template-columns: repeat(2,minmax(0,1fr));gap: 8px}.gw-footer__family .gw-footer__fold > ul > li{display: flex}.gw-footer__family .gw-footer__fold > ul > li > a{flex: 1 1 auto}.gw-footer__family a{display: flex;flex-direction: column;justify-content: center;gap: 2px;min-height: var(--gw-tap-min);padding: 8px 12px 8px 0;border-radius: var(--gw-radius-action);color: var(--gw-ink)}.gw-footer__family a:hover{background: var(--gw-bg-soft)}.gw-footer__family b{font-size: 14px;font-weight: 600;line-height: 20px}.gw-footer__family i{color: var(--gw-muted);font-size: 13px;font-style: normal;line-height: 18px}@media (min-width: 621px){.gw-footer__family{margin-top: 48px;padding-top: 32px;border-top: 1px solid var(--gw-line)}.gw-footer__family .gw-footer__heading{margin-bottom: 12px}.gw-footer__family .gw-footer__fold > ul{grid-template-columns: repeat(4,minmax(0,1fr));gap: 4px 16px}.gw-footer__family a{min-height: 0;padding: 8px 12px}.gw-footer__family + .gw-footer__bottom{margin-top: 32px}}@media (min-width: 621px) and (max-width: 768px){.gw-footer__family a{min-height: var(--gw-tap-min)}}@media (min-width: 1081px){.gw-footer__family .gw-footer__fold > ul{margin-left: -12px}.gw-footer__family{display: flow-root}.gw-footer__family .gw-footer__heading{float: left;width: calc((100% - 120px) * 6 / 31);margin: 8px 0 0}.gw-footer__family .gw-footer__fold > ul{margin-left: calc((100% - 120px) * 6 / 31 + 12px)}}.gw-footer__toggle{position: relative;width: 32px;height: 32px;margin-inline: auto 16px;border: 1px solid var(--gw-line-strong);background: var(--gw-surface)}.gw-footer__toggle::after{content: "";position: absolute;inset: -5px}.gw-footer__toggle svg{width: 18px;height: 18px}.gw-footer__toggle{transition: border-color 0.15s,color 0.15s}.gw-footer__toggle:hover{border-color: var(--gw-ink);background: var(--gw-surface);color: var(--gw-accent)}@media (max-width: 768px),(pointer: coarse){.gw-footer__toggle{width: var(--gw-tap-min);height: var(--gw-tap-min)}}@media (max-width: 620px){.gw-footer__bottom:has(> .gw-footer__toggle){gap: 8px 16px}.gw-footer__bottom:has(> .gw-footer__toggle) > :first-child{flex: 1 1 calc(100% - 64px)}.gw-footer__bottom > .gw-footer__toggle{order: 1;margin: 0}.gw-footer__bottom:has(> .gw-footer__toggle) > ul{order: 2}.gw-footer__family + .gw-footer__bottom,.gw-footer__grid:has(> .gw-footer__col > .gw-footer__fold) + .gw-footer__bottom{margin-top: 24px}}.gw-footer__wordmark{display: flex;align-items: center;justify-content: center;gap: 24px;padding-block: 48px 0;color: color-mix(in srgb,var(--gw-ink) 10%,transparent);font-family: var(--gw-font);font-size: var(--gw-display-wordmark);font-weight: 800;letter-spacing: var(--gw-display-tracking);line-height: 1;white-space: nowrap;user-select: none}.gw-footer__wordmark > svg,.gw-footer__wordmark > img{flex: none;width: clamp(40px,7vw,96px);height: auto}.gw-footer__wordmark > span{min-width: 0;overflow-x: clip}@media (max-width: 640px){.gw-footer__wordmark{gap: 16px}}@media (max-width: 620px){.gw-footer__wordmark{display: none}}@media (max-width: 768px),(pointer: coarse){.gw-footer__ask a{display: flex;align-items: center;min-height: var(--gw-tap-min);padding-block: 0}}@media (forced-colors: active){.gw-footer__ext:empty{forced-color-adjust: none;background: CanvasText}.gw-footer__fold > summary::after{border-color: CanvasText}}.gw-hero{position: relative;isolation: isolate;padding-block: 48px 64px}.gw-hero__wash{position: absolute;inset: 0;z-index: -1;pointer-events: none;background: radial-gradient(640px 460px at 88% -10%,color-mix(in srgb,var(--gw-accent) 16%,transparent),transparent 62%),radial-gradient(560px 480px at 6% 108%,color-mix(in srgb,var(--gw-wash-violet) 12%,transparent),transparent 62%),radial-gradient(420px 320px at 52% 118%,color-mix(in srgb,var(--gw-wash-mint) 10%,transparent),transparent 62%)}.gw-hero h1 .gw-dim{display: block}.gw-hero > .gw-wrap > :is(.gw-window,.gw-figure){margin-top: 48px}.gw-hero--center{text-align: center}.gw-hero--center > .gw-wrap > *{margin-inline: auto}.gw-hero--center .gw-actions{justify-content: center}.gw-hero--compact{padding-block: 40px 48px}.gw-hero--compact h1{font-size: var(--gw-display-h2)}@media (min-width: 768px){.gw-hero{padding-block: 80px 96px}.gw-hero--compact{padding-block: 64px}.gw-hero .gw-lead{font-size: 20px}.gw-hero > .gw-wrap > .gw-window{margin-top: 64px}}@media (max-width: 479px){:is(.gw-hero,.gw-cta) .gw-actions > .gw-btn{flex: 1 1 100%;justify-content: center}}.gw-logos{padding-block: 40px;border-block: 1px solid var(--gw-line)}.gw-logos p{color: var(--gw-muted);font-size: 13px;text-align: center}.gw-logos ul{display: flex;flex-wrap: wrap;align-items: center;justify-content: center;gap: 16px 40px;margin-top: 20px;padding: 0;list-style: none}.gw-logos li{color: var(--gw-muted);font-size: 22px;font-weight: 600;letter-spacing: -0.02em;line-height: 1.2}.gw-logos img{width: auto;height: 28px}.gw-stats{display: grid;grid-template-columns: minmax(0,1fr);gap: 24px;padding: 0;list-style: none}.gw-stats__value{font-size: var(--gw-display-h2);font-weight: 600;letter-spacing: -0.03em;line-height: 1.1;font-variant-numeric: tabular-nums}.gw-stats__label{margin-top: 8px;max-width: 28ch;color: var(--gw-muted);font-size: 14px}.gw-stats__source{margin-top: 8px;color: var(--gw-muted);font-size: 12px}@media (min-width: 480px){.gw-stats{grid-template-columns: repeat(2,minmax(0,1fr))}}@media (min-width: 1080px){.gw-stats{grid-template-columns: none;grid-auto-flow: column;grid-auto-columns: minmax(0,1fr);gap: 0}.gw-stats__item{padding: 4px 24px;border-left: 1px solid var(--gw-line)}.gw-stats__item:first-child{padding-left: 0;border-left: 0}}.gw-features{row-gap: 40px}.gw-feature .gw-icon{width: 40px;height: 40px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-action);background: var(--gw-surface);color: var(--gw-accent)}.gw-split{display: grid;grid-template-columns: minmax(0,1fr);align-items: center;gap: 40px}@media (min-width: 768px){.gw-split{grid-template-columns: repeat(2,minmax(0,1fr))}.gw-split--reverse > :first-child{order: 2}}.gw-split h2{font-size: 30px}@media (min-width: 1080px){.gw-split{gap: 64px}}.gw-showcase .gw-window{max-width: 960px;margin-inline: auto}.gw-showcase .gw-window + *{margin-top: 48px}.gw-steps{display: grid;grid-template-columns: minmax(0,1fr);gap: 32px 24px;padding: 0;list-style: none;counter-reset: gw-step}.gw-steps > li{counter-increment: gw-step}.gw-steps > li::before{content: counter(gw-step,decimal-leading-zero);display: block;margin-bottom: 16px;padding-bottom: 12px;border-bottom: 1px solid var(--gw-line);color: var(--gw-accent-strong);font-size: 13px;font-weight: 600;font-variant-numeric: tabular-nums}.gw-steps h3{font-size: 20px}.gw-steps p{margin-top: 8px;color: var(--gw-muted);font-size: 16px}@media (min-width: 768px){.gw-steps{grid-template-columns: repeat(2,minmax(0,1fr))}}@media (min-width: 1080px){.gw-steps{grid-template-columns: none;grid-auto-flow: column;grid-auto-columns: minmax(0,1fr)}}.gw-quote{max-width: 880px;margin-inline: auto;padding: 40px 24px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-panel);background: var(--gw-surface);text-align: center}.gw-quote::before{content: "";display: block;width: 32px;height: 24px;margin: 0 auto 24px;background: var(--gw-accent);-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 24'%3E%3Cpath d='M0 24V14C0 6 4 1 12 0l1 4c-4 1-6 4-6 8h5v12zm19 0V14c0-8 4-13 12-14l1 4c-4 1-6 4-6 8h5v12z'/%3E%3C/svg%3E") center / contain no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 24'%3E%3Cpath d='M0 24V14C0 6 4 1 12 0l1 4c-4 1-6 4-6 8h5v12zm19 0V14c0-8 4-13 12-14l1 4c-4 1-6 4-6 8h5v12z'/%3E%3C/svg%3E") center / contain no-repeat}.gw-quote blockquote{font-size: 24px;font-weight: 500;line-height: 1.4;letter-spacing: -0.01em;text-wrap: balance}.gw-quote figcaption{margin-top: 24px;color: var(--gw-muted);font-size: 14px}.gw-quote figcaption b{color: var(--gw-ink)}.gw-quote figcaption img{width: 40px;height: 40px;margin: 0 auto 12px;border-radius: var(--gw-radius-chip)}@media (min-width: 768px){.gw-quote{padding: 64px}.gw-quote blockquote{font-size: 30px}}.gw-pricing{display: grid;grid-template-columns: repeat(auto-fit,minmax(min(100%,260px),1fr));align-items: start;gap: 16px}.gw-plan{display: flex;flex-direction: column;padding: 24px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-panel);background: var(--gw-surface);box-shadow: var(--gw-shadow)}.gw-plan--featured{border-color: var(--gw-accent)}.gw-plan{position: relative}.gw-plan > .gw-badge{align-self: flex-start}.gw-plan > .gw-badge:first-child{position: absolute;top: -12px;left: 24px}.gw-plan > .gw-badge:first-child + *{margin-top: 0}.gw-plan h3{font-size: 20px}:where(.gw-plan) p{color: var(--gw-muted);font-size: 14px}.gw-plan__price{display: flex;flex-wrap: wrap;align-items: baseline;gap: 6px;color: var(--gw-ink);font-size: var(--gw-display-h2);font-weight: 600;letter-spacing: -0.03em;line-height: 1.1;font-variant-numeric: tabular-nums}.gw-plan__price small{color: var(--gw-muted);font-size: 14px;font-weight: 500;letter-spacing: 0}.gw-plan .gw-list--check{font-size: 14px}@media (min-width: 768px){.gw-plan{padding: 32px}.gw-plan > .gw-badge:first-child{left: 32px}}.gw-cta{max-width: 780px;margin-inline: auto;text-align: center}.gw-cta .gw-lead{margin-inline: auto}.gw-cta .gw-actions{justify-content: center}.gw-prose{max-width: 68ch;min-width: 0;color: var(--gw-ink);font-size: var(--gw-body-size);line-height: var(--gw-body-leading);overflow-wrap: break-word}.gw-prose--sm{font-size: 16px}:where(.gw-prose) > * + *{margin-top: 20px}:where(.gw-prose--sm) > * + *{margin-top: 16px}:where(.gw-prose) > * + :where(figure,img,video,pre,table,hr,.gw-table,.gw-window,.gw-prose__table,.gw-callout),:where(.gw-prose) > :where(figure,img,video,pre,table,hr,.gw-table,.gw-window,.gw-prose__table,.gw-callout) + *{margin-top: 32px}:where(.gw-prose) > * + h2{margin-top: 48px}:where(.gw-prose) > * + h3{margin-top: 40px}:where(.gw-prose) > * + h4{margin-top: 32px}:where(.gw-prose--sm) > * + h2{margin-top: 40px}:where(.gw-prose--sm) > * + h3{margin-top: 32px}:where(.gw-prose--sm) > * + h4{margin-top: 24px}:where(.gw-prose) > h1 + *{margin-top: 24px}:where(.gw-prose) > :is(h2,h3,h4) + *{margin-top: 12px}:where(.gw-prose) > :is(h1,h2,h3,h4){color: var(--gw-ink);font-weight: var(--gw-heading-weight);letter-spacing: var(--gw-heading-tracking);line-height: 1.25}:where(.gw-prose) > h1{font-size: var(--gw-display-h2);font-weight: var(--gw-display-weight);letter-spacing: var(--gw-display-tracking);line-height: var(--gw-heading-leading)}:where(.gw-prose) > h2{font-size: 30px;line-height: 1.2}:where(.gw-prose) > h3{font-size: 24px}:where(.gw-prose) > h4{font-size: 20px}:where(.gw-prose--sm) > h2{font-size: 24px}:where(.gw-prose--sm) > h3{font-size: 20px}:where(.gw-prose--sm) > h4{font-size: 18px}:where(.gw-prose :is(ul,ol):not([class])){padding-left: 24px}:where(.gw-prose ul:not([class])){list-style: disc}:where(.gw-prose ol:not([class])){list-style: decimal}:where(.gw-prose :is(ul,ol):not([class]) > li + li),:where(.gw-prose :is(ul,ol):not([class]) > li > * + *),:where(.gw-prose :is(ul,ol):not([class]) > li > :is(ul,ol)){margin-top: 8px}:where(.gw-prose :is(ul,ol):not([class]) > li)::marker{color: var(--gw-muted);font-variant-numeric: tabular-nums}:where(.gw-prose) > blockquote{padding-left: 20px;border-left: 3px solid var(--gw-line-strong);color: var(--gw-muted)}:where(.gw-prose) > blockquote > * + *{margin-top: 12px}:where(.gw-prose) > hr{height: 0;border: 0;border-top: 1px solid var(--gw-line)}:where(.gw-prose) :is(sup,sub){line-height: 0}:where(.gw-prose) :is(pre,code,kbd,samp){font-family: var(--gw-font-mono)}:where(.gw-prose) code{padding: 2px 6px;border-radius: var(--gw-radius-6);background: color-mix(in srgb,var(--gw-ink) 8%,transparent);color: var(--gw-ink);font-size: 16px;overflow-wrap: anywhere;-webkit-box-decoration-break: clone;box-decoration-break: clone}:where(.gw-prose--sm) code{font-size: 14px}:where(.gw-prose) :is(h1,h2,h3,h4) code{font-size: inherit}:where(.gw-prose) figcaption code{font-size: 13px}:where(.gw-prose) :is(th,td) code{font-size: 13px;overflow-wrap: normal;white-space: nowrap}:where(.gw-prose) pre{overflow-x: auto;padding: 16px 20px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-bg-soft);color: var(--gw-ink);font-size: 14px;line-height: 1.6;tab-size: 2}:where(.gw-prose) pre code{padding: 0;border-radius: var(--gw-radius-0);background: none;font-size: inherit;overflow-wrap: normal}:where(.gw-prose) > :is(img,video),:where(.gw-prose) > :is(p,figure) > :is(img,video){border-radius: var(--gw-radius-card)}:where(.gw-prose) figcaption{margin-top: 12px;color: var(--gw-muted);font-size: 14px;line-height: 1.5}:where(.gw-prose) > table:where(:not(.is-wrapped)),:where(.gw-prose) > :where(.gw-prose__table){width: max-content;max-width: 100%;overflow-x: auto;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface);-webkit-overflow-scrolling: touch}:where(.gw-prose) > table:where(:not(.is-wrapped)){display: block}:where(.gw-prose) > table,:where(.gw-prose) > :where(.gw-prose__table) > table{border-collapse: collapse;font-size: 14px;line-height: 1.5}:where(.gw-prose) > table :is(th,td),:where(.gw-prose) > :where(.gw-prose__table) > table :is(th,td){padding: 12px 16px;border-bottom: 1px solid var(--gw-line);text-align: left;vertical-align: top}:where(.gw-prose) > table thead th,:where(.gw-prose) > :where(.gw-prose__table) > table thead th{background: var(--gw-bg-soft);color: var(--gw-ink);font-size: 13px;font-weight: 600;white-space: nowrap}:where(.gw-prose) > table tbody th,:where(.gw-prose) > :where(.gw-prose__table) > table tbody th{font-weight: 500}:where(.gw-prose) > table td,:where(.gw-prose) > :where(.gw-prose__table) > table td{color: var(--gw-ink-2);font-variant-numeric: tabular-nums}:where(.gw-prose) > table tbody tr:last-child > *,:where(.gw-prose) > :where(.gw-prose__table) > table tbody tr:last-child > *{border-bottom: 0}:where(.gw-prose) > table caption,:where(.gw-prose) > :where(.gw-prose__table) > table caption{padding: 12px 16px;color: var(--gw-muted);font-size: 13px;text-align: left}@media (max-width: 767px){:where(.gw-prose) > table td,:where(.gw-prose) > :where(.gw-prose__table) > table td{min-width: 160px}}.gw-breadcrumbs{color: var(--gw-muted);font-size: 13px;line-height: 1.5}.gw-breadcrumbs > ol{display: flex;flex-wrap: wrap;align-items: center;gap: 0 8px;margin: 0;padding: 0;list-style: none}.gw-breadcrumbs li{display: flex;align-items: center;gap: 8px;min-width: 0;max-width: 100%}.gw-breadcrumbs li + li::before{content: "";flex: none;width: 12px;height: 12px;background: currentColor;opacity: 0.6;-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 6l6 6-6 6' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 6l6 6-6 6' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat}.gw-breadcrumbs a{display: inline-flex;align-items: center;min-height: 24px;color: var(--gw-muted)}.gw-breadcrumbs a:hover{color: var(--gw-ink);text-decoration: underline;text-underline-offset: 4px}.gw-breadcrumbs [aria-current="page"]{display: block;min-width: 0;overflow: hidden;color: var(--gw-ink);font-weight: 500;line-height: 24px;text-overflow: ellipsis;white-space: nowrap}.gw-article-meta{display: flex;flex-wrap: wrap;align-items: center;row-gap: 4px;margin-inline-start: -16px;clip-path: inset(-8px -8px -8px 12px);color: var(--gw-muted);font-size: 14px;line-height: 24px}.gw-article-meta > *::before{content: "";display: inline-block;width: 4px;height: 4px;margin-inline: 6px;border-radius: var(--gw-radius-chip);background: var(--gw-line-strong);vertical-align: middle}.gw-article-meta a{display: inline-block;color: var(--gw-accent-strong);font-weight: 500;text-decoration: underline;text-decoration-thickness: 1px;text-underline-offset: 4px;text-decoration-color: color-mix(in srgb,currentColor 40%,transparent)}.gw-article-meta a:hover{text-decoration-color: currentColor}.gw-article-meta__avatar{display: inline-block;width: 24px;height: 24px;margin-inline-end: 8px;border-radius: var(--gw-radius-chip);object-fit: cover;vertical-align: top}.gw-article{padding-block: 32px 64px}.gw-article__head > * + *{margin-top: 16px}.gw-article__head h1{font-size: var(--gw-display-h2)}.gw-article__hero{margin-top: 32px}.gw-article__hero img{width: 100%;border-radius: var(--gw-radius-card);background: var(--gw-bg-soft)}.gw-article__hero figcaption{margin-top: 12px;color: var(--gw-muted);font-size: 14px;line-height: 1.5}.gw-article > .gw-toc{margin-top: 32px}.gw-article > .gw-prose{margin-top: 40px}@media (min-width: 768px){.gw-article{padding-block: 48px 96px}.gw-article__hero{margin-top: 40px}}@media (min-width: 1080px){.gw-article{display: grid;grid-template-columns: minmax(0,68ch) minmax(200px,240px);grid-template-rows: auto auto 1fr;justify-content: space-between;column-gap: 64px}.gw-article > *{grid-column: 1}.gw-article > .gw-article__head{grid-row: 1}.gw-article > .gw-article__hero{grid-row: 2}.gw-article > .gw-prose{grid-row: 3}.gw-article > .gw-toc{grid-column: 2;grid-row: 2 / 4;margin-top: 40px}}.gw-toc{font-size: 14px;line-height: 1.45}.gw-toc > details{border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface)}.gw-toc summary{display: flex;align-items: center;justify-content: space-between;gap: 12px;min-height: var(--gw-tap-min);padding: 8px 16px;color: var(--gw-ink);font-weight: 600;list-style: none;cursor: pointer}.gw-toc summary::-webkit-details-marker{display: none}.gw-toc summary::after{content: "";flex: none;width: 12px;height: 12px;background: currentColor;opacity: 0.6;-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' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat;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' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat;transition: transform 0.18s var(--gw-ease)}.gw-toc details[open] > summary::after{transform: rotate(180deg)}.gw-toc ol{margin: 0;padding: 0;list-style: none}.gw-toc details > ol{margin: 0 16px 16px;background: linear-gradient(var(--gw-line),var(--gw-line)) 0 0 / 1px 100% no-repeat}.gw-toc a{display: block;padding: 6px 8px 6px 16px;border-left: 2px solid transparent;color: var(--gw-muted)}.gw-toc ol ol a{padding-left: 32px}.gw-toc a:hover{color: var(--gw-ink)}.gw-toc a:focus-visible{outline-offset: -2px}.gw-toc a[aria-current="true"]{border-left-color: var(--gw-accent);color: var(--gw-ink)}@media (min-width: 1080px){.gw-toc{position: sticky;top: calc(var(--gw-header-height) + 32px);align-self: start}.gw-toc > details{border: 0;border-radius: var(--gw-radius-0);background: transparent}.gw-toc summary{min-height: 32px;padding: 0;color: var(--gw-muted);font-size: 13px}.gw-toc details > ol{max-height: calc(100vh - var(--gw-header-height) - 120px);margin: 8px 0 0;overflow-y: auto;overscroll-behavior: contain}:root:has(.gw-header--float) .gw-toc{top: calc(var(--gw-header-height) + var(--gw-header-gap) + 32px)}:root:has(.gw-header--float) .gw-toc details > ol{max-height: calc(100vh - var(--gw-header-height) - var(--gw-header-gap) - 120px)}}@media (prefers-reduced-motion: no-preference){:root:has(.gw-toc){scroll-behavior: smooth}}.gw-callout{padding: 16px 20px;border-radius: var(--gw-radius-card);background: var(--gw-accent-soft);color: var(--gw-ink);font-size: 16px;line-height: 1.6}.gw-callout > * + *{margin-top: 8px}.gw-callout--tip{background: var(--gw-success-soft)}.gw-callout--warning{background: var(--gw-warning-soft)}.gw-callout__label{display: flex;align-items: center;gap: 8px;font-size: 14px;font-weight: 600;line-height: 1.5}.gw-callout__label::before{content: "";flex: none;width: 16px;height: 16px;background: var(--gw-accent);-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v5M12 7.5v.5'/%3E%3C/svg%3E") center / 16px no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v5M12 7.5v.5'/%3E%3C/svg%3E") center / 16px no-repeat}.gw-callout--tip > .gw-callout__label::before{background: var(--gw-success);-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21h4M12 3a6 6 0 0 0-3.6 10.8c.7.5 1.1 1.3 1.1 2.2h5c0-.9.4-1.7 1.1-2.2A6 6 0 0 0 12 3z'/%3E%3C/svg%3E");mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21h4M12 3a6 6 0 0 0-3.6 10.8c.7.5 1.1 1.3 1.1 2.2h5c0-.9.4-1.7 1.1-2.2A6 6 0 0 0 12 3z'/%3E%3C/svg%3E")}.gw-callout--warning > .gw-callout__label::before{background: var(--gw-warning);-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5 2.8 19.5h18.4z'/%3E%3Cpath d='M12 10v4M12 16.8v.2'/%3E%3C/svg%3E");mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5 2.8 19.5h18.4z'/%3E%3Cpath d='M12 10v4M12 16.8v.2'/%3E%3C/svg%3E")}.gw-post-list{display: grid;grid-template-columns: minmax(0,1fr);gap: 16px;padding: 0;list-style: none}.gw-post-list > li{display: flex;min-width: 0}.gw-post{position: relative;display: flex;flex: 1 1 auto;flex-direction: column;min-width: 0}.gw-post:hover{border-color: var(--gw-line-strong)}.gw-post > .gw-card__media + *{margin-top: 20px}.gw-post > .gw-label + .gw-post__title{margin-top: 8px}.gw-post__title{font-size: 20px;line-height: 1.3}.gw-post__title a{color: var(--gw-ink)}.gw-post__title a::after{content: "";position: absolute;inset: 0;z-index: 1;border-radius: var(--gw-radius-card)}.gw-post:hover .gw-post__title a{text-decoration: underline;text-decoration-thickness: 1px;text-underline-offset: 4px}.gw-post__title a:focus-visible{outline: 0}.gw-post__title a:focus-visible::after{outline: 2px solid var(--gw-accent);outline-offset: 2px}.gw-post__title + p{margin-top: 8px}.gw-post > .gw-article-meta{margin-top: auto;padding-top: 16px}@media (min-width: 768px){.gw-post-list{gap: 24px}.gw-post-list:not(.gw-post-list--compact){grid-template-columns: repeat(2,minmax(0,1fr))}}@media (min-width: 1080px){.gw-post-list:not(.gw-post-list--compact){grid-template-columns: repeat(3,minmax(0,1fr))}}.gw-post-list--compact{gap: 0;border-top: 1px solid var(--gw-line)}.gw-post-list--compact .gw-post{padding: 20px 0;border: 0;border-bottom: 1px solid var(--gw-line);border-radius: var(--gw-radius-0);background: transparent;box-shadow: none}.gw-post-list--compact .gw-post__title a::after{border-radius: var(--gw-radius-0)}.gw-post-list--compact .gw-card__media{display: none}.gw-post-list--compact .gw-post > .gw-article-meta{padding-top: 8px}.gw-pagination{display: flex;flex-wrap: wrap;align-items: center;justify-content: space-between;gap: 12px 16px}* + .gw-pagination{margin-top: 40px}.gw-pagination__status{color: var(--gw-muted);font-size: 14px}.gw-pagination > [rel="next"]{margin-inline-start: auto}.gw-field{display: grid;gap: 8px;min-width: 0}.gw-field__label{display: block;color: var(--gw-ink);font-size: 14px;font-weight: 600;line-height: 1.5}:is(.gw-field,.gw-choices) > :is(.gw-field__hint,.gw-field__error){margin: 0;font-size: 14px;font-weight: 400;line-height: 1.5}:is(.gw-field,.gw-choices) > .gw-field__hint{color: var(--gw-muted)}:is(.gw-field,.gw-choices) > .gw-field__error{display: flex;gap: 6px;color: var(--gw-danger);font-weight: 500}:is(.gw-field,.gw-choices) > .gw-field__error:empty{display: none}.gw-field__error::before{content: "";flex: none;width: 16px;height: 16px;margin-top: 2px;margin-top: calc((1lh - 16px) / 2);background: currentColor;-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 4h1.5v5.5h-1.5V6Zm.75 9a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z'/%3E%3C/svg%3E") center / 16px no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 4h1.5v5.5h-1.5V6Zm.75 9a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z'/%3E%3C/svg%3E") center / 16px no-repeat}.gw-input,.gw-select,.gw-textarea{display: block;width: 100%;min-width: 0;height: var(--gw-button-height);margin: 0;padding: 0 12px;border: 1px solid var(--gw-line-control);border-radius: var(--gw-radius-action);background-color: var(--gw-surface);color: var(--gw-ink);font-size: 16px;line-height: 1.5;-webkit-appearance: none;appearance: none}:is(.gw-input,.gw-textarea)::placeholder{color: var(--gw-muted);opacity: 1}.gw-select{padding-right: 40px;background-image: linear-gradient(45deg,transparent 50%,var(--gw-muted) 50%),linear-gradient(135deg,var(--gw-muted) 50%,transparent 50%);background-position: calc(100% - 20px) 50%,calc(100% - 15px) 50%;background-size: 5px 5px;background-repeat: no-repeat;cursor: pointer}.gw-textarea{height: auto;min-height: 96px;padding-block: 8px;resize: vertical}:is(.gw-input,.gw-select,.gw-textarea):hover{border-color: var(--gw-muted)}:is(.gw-input,.gw-select,.gw-textarea):focus-visible{border-color: var(--gw-ink);outline: 2px solid var(--gw-accent);outline-offset: 1px}:is(.gw-input,.gw-textarea)[readonly]{border-color: var(--gw-line-strong);background-color: var(--gw-bg-soft);cursor: default}:is(.gw-input,.gw-select,.gw-textarea)[aria-invalid="true"]{border-color: var(--gw-danger);background-color: var(--gw-danger-soft)}:is(.gw-input,.gw-select,.gw-textarea):disabled{opacity: 0.48;cursor: not-allowed}.gw-choices{min-width: 0;margin: 0;padding: 0;border: 0}.gw-choices > legend{margin-bottom: 4px;padding: 0}.gw-choices > :is(.gw-check,.gw-radio){display: flex}.gw-choices > :is(.gw-field__hint,.gw-field__error){margin-top: 4px}.gw-check,.gw-radio{display: inline-flex;align-items: flex-start;gap: 8px;max-width: 100%;padding-block: 4px;color: var(--gw-ink);font-size: 16px;line-height: 1.5;overflow-wrap: break-word;cursor: pointer}:is(.gw-check,.gw-radio) > :not(input){min-width: 0}:is(.gw-check,.gw-radio) > input{display: inline-grid;flex: none;place-content: center;width: 18px;height: 18px;margin: 3px 0 0;border: 1px solid var(--gw-line-control);border-radius: var(--gw-radius-4);background: var(--gw-surface);-webkit-appearance: none;appearance: none;cursor: inherit}.gw-radio > input{border-radius: var(--gw-radius-chip)}:is(.gw-check,.gw-radio):hover > input{border-color: var(--gw-muted)}.gw-check > input:checked{border-color: var(--gw-accent);background: var(--gw-accent)}.gw-check > input:checked::before{content: "";width: 14px;height: 14px;background: var(--gw-on-accent);-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.4l2.9 2.8L12.5 5' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 14px no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.4l2.9 2.8L12.5 5' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 14px no-repeat}.gw-radio > input:checked{border: 5px solid var(--gw-accent)}:is(.gw-check,.gw-radio) > input[aria-invalid="true"]:not(:checked){border-color: var(--gw-danger)}:is(.gw-check,.gw-radio):has(> input:disabled){opacity: 0.48;cursor: not-allowed}.gw-check__count{flex: none;min-width: 24px;margin: 1px 0 0 auto;padding: 2px 8px;border-radius: var(--gw-radius-chip);background: color-mix(in srgb,var(--gw-ink) 8%,transparent);color: var(--gw-ink-2);font-size: 12px;font-weight: 500;text-align: center;font-variant-numeric: tabular-nums}.gw-form-inline{display: flex;flex-wrap: wrap;gap: 8px}.gw-form-inline > :not(.gw-btn){flex: 999 1 160px;min-width: 0}.gw-form-inline > .gw-btn{flex: 1 0 auto;justify-content: center}@media (max-width: 479px){.gw-form-inline > :not(.gw-btn){flex-basis: 100%}}.gw-form{display: grid;gap: 24px;max-width: 560px}.gw-form > *{margin: 0}.gw-form > :is(.gw-actions,.gw-btn){margin-top: 8px}.gw-form > .gw-btn{justify-self: start}@media (max-width: 768px),(pointer: coarse){.gw-input,.gw-select{height: var(--gw-tap-min)}.gw-check,.gw-radio{padding-block: 10px}}.gw-stars{display: inline-block;flex: none;width: 80px;height: 16px;vertical-align: middle;background: linear-gradient(90deg,var(--gw-ink) calc(clamp(0,var(--gw-stars,0),5) * 20%),var(--gw-line-strong) 0);-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 1.6L9.8 6.4L14.8 6.6L10.9 9.7L12.2 14.6L8 11.8L3.8 14.6L5.1 9.7L1.2 6.6L6.2 6.4Z' stroke='%23000' stroke-width='1' stroke-linejoin='round'/%3E%3C/svg%3E") 0 0 / 16px 16px repeat-x;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 1.6L9.8 6.4L14.8 6.6L10.9 9.7L12.2 14.6L8 11.8L3.8 14.6L5.1 9.7L1.2 6.6L6.2 6.4Z' stroke='%23000' stroke-width='1' stroke-linejoin='round'/%3E%3C/svg%3E") 0 0 / 16px 16px repeat-x}@media (forced-colors: active){.gw-stars{forced-color-adjust: none;background: linear-gradient(90deg,CanvasText calc(clamp(0,var(--gw-stars,0),5) * 20%),GrayText 0)}}.gw-testimonials{display: grid;grid-template-columns: minmax(0,1fr);gap: 16px;padding: 0;list-style: none}.gw-testimonials > li{display: flex;min-width: 0}@media (min-width: 768px){.gw-testimonials{grid-template-columns: repeat(2,minmax(0,1fr));gap: 24px}}@media (min-width: 1080px){.gw-testimonials{grid-template-columns: repeat(3,minmax(0,1fr))}}.gw-testimonial{display: flex;flex-direction: column;gap: 16px;width: 100%;margin: 0}.gw-testimonial > *{margin: 0}.gw-testimonial__quote,.gw-testimonial__quote p{color: var(--gw-ink);font-size: 16px;line-height: 1.6}.gw-testimonial__quote > * + *{margin-top: 8px}.gw-testimonial > .gw-testimonial__by{display: flex;align-items: center;gap: 12px;margin-top: auto;color: var(--gw-muted);font-size: 14px;line-height: 1.5}.gw-testimonial__by b{display: block;color: var(--gw-ink);font-weight: 600}.gw-testimonial__by > :not(img){min-width: 0}.gw-testimonial__avatar{flex: none;width: 40px;height: 40px;border-radius: var(--gw-radius-chip);background: var(--gw-bg-soft);object-fit: cover}.gw-rating-badge{display: inline-flex;align-items: center;gap: 12px;max-width: 100%;padding: 8px 16px 8px 8px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface);color: var(--gw-ink);font-size: 13px;line-height: 1.4;vertical-align: middle}a.gw-rating-badge:hover{border-color: var(--gw-line-strong)}.gw-rating-badge__icon{display: inline-flex;flex: none;align-items: center;justify-content: center;width: 40px;height: 40px;border-radius: var(--gw-radius-action);background: var(--gw-bg-soft);color: var(--gw-ink)}.gw-rating-badge__icon :is(svg,img){width: 24px;height: 24px}.gw-rating-badge__body{display: grid;gap: 2px;min-width: 0}.gw-rating-badge__score{display: flex;align-items: center;gap: 8px;color: var(--gw-ink);font-size: 16px;font-weight: 600;font-variant-numeric: tabular-nums}.gw-rating-badge__count{color: var(--gw-muted)}@property --gw-spot-r{syntax: "<length>";inherits: true;initial-value: 0px}@media (hover: hover) and (pointer: fine){[data-gw-ready~="spot"]{--gw-spot-r: 0px}[data-gw-ready~="spot"]:is(:hover,:focus-visible){--gw-spot-r: var(--gw-spot-radius);--gw-muted: var(--gw-ink-2)}[data-gw-ready~="spot"]:has(:focus-visible){--gw-spot-r: var(--gw-spot-radius);--gw-muted: var(--gw-ink-2)}.gw-btn[data-gw-ready~="spot"]:is(:hover,:focus-visible){--gw-spot-r: var(--gw-spot-radius-action)}:where(.gw-spot){position: relative;isolation: isolate}.gw-spot:not([aria-busy="true"])::before{--gw-spot-mix: var(--gw-spot-strength);content: "";position: absolute;inset: 0;z-index: -1;border-radius: inherit;background: radial-gradient(circle var(--gw-spot-r) at var(--gw-spot-x,50%) var(--gw-spot-y,50%),color-mix(in srgb,var(--gw-accent) var(--gw-spot-mix),transparent),transparent 70%);pointer-events: none;transition: --gw-spot-r var(--gw-spot-ms) var(--gw-spot-ease)}.gw-btn.gw-spot:not([aria-busy="true"])::before{--gw-spot-mix: var(--gw-spot-strength-action)}.gw-mega__art.gw-spot:not([aria-busy="true"])::before{--gw-spot-mix: var(--gw-spot-strength-stage)}:where([data-gw-ready~="spot"] *){transition: color 0s linear var(--gw-spot-ms)}:where([data-gw-ready~="spot"]:is(:hover,:focus-visible) *){transition-delay: 0s}:where([data-gw-ready~="spot"]:has(:focus-visible) *){transition-delay: 0s}:is([data-gw-ready~="spot"]:focus-visible,[data-gw-ready~="spot"]:focus-visible *).gw-spot::before{--gw-spot-x: 50%;--gw-spot-y: 50%}:is([data-gw-ready~="spot"]:has(:focus-visible),[data-gw-ready~="spot"]:has(:focus-visible) *).gw-spot::before{--gw-spot-x: 50%;--gw-spot-y: 50%}}@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: reduce){.gw-spot:not([aria-busy="true"])::before{--gw-spot-x: 50%;--gw-spot-y: 50%;transition: none}:where([data-gw-ready~="spot"] *){transition: none}}
|
|
1
|
+
/*! @gemboss/website-ui 0.14.0 | generated by scripts/build.mjs from the files in css/. Edit those and not this file */ :root{color-scheme: light;--gw-font: Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--gw-font-mono: ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--gw-font-action: Inter;--gw-text-11: 11px;--gw-text-12: 12px;--gw-text-13: 13px;--gw-text-14: 14px;--gw-text-16: 16px;--gw-text-18: 18px;--gw-text-20: 20px;--gw-text-22: 22px;--gw-text-24: 24px;--gw-text-30: 30px;--gw-display-h1: clamp(40px,4.6vw,68px);--gw-display-h2: clamp(32px,3.4vw,52px);--gw-display-wordmark: clamp(40px,9vw,128px);--gw-display-weight: 600;--gw-display-tracking: -0.03em;--gw-display-h1-leading: 1.1;--gw-display-h2-leading: 1.06;--gw-heading-weight: 650;--gw-heading-tracking: -0.022em;--gw-heading-leading: 1.08;--gw-body-size: 18px;--gw-body-leading: 1.6;--gw-space-0: 0;--gw-space-2: 2px;--gw-space-4: 4px;--gw-space-6: 6px;--gw-space-8: 8px;--gw-space-12: 12px;--gw-space-16: 16px;--gw-space-20: 20px;--gw-space-24: 24px;--gw-space-32: 32px;--gw-space-40: 40px;--gw-space-48: 48px;--gw-space-64: 64px;--gw-space-80: 80px;--gw-space-96: 96px;--gw-space-120: 120px;--gw-space-section: clamp(56px,38px + 5vw,110px);--gw-radius-0: 0;--gw-radius-2: 2px;--gw-radius-4: 4px;--gw-radius-6: 6px;--gw-radius-8: 8px;--gw-radius-12: 12px;--gw-radius-16: 16px;--gw-radius-20: 20px;--gw-radius-24: 24px;--gw-radius-999: 999px;--gw-radius-action: 8px;--gw-radius-chip: 999px;--gw-radius-card: 12px;--gw-radius-panel: 16px;--gw-radius-popover: 20px;--gw-shadow: 0 1px 2px rgba(31,30,29,.04),0 2px 6px rgba(31,30,29,.06);--gw-shadow-sm: 0 1px 2px rgba(31,30,29,.04);--gw-shadow-raised: 0 4px 16px rgba(31,30,29,.10);--gw-shadow-lift: 0 16px 32px -12px rgba(4,5,26,.72),0 4px 8px -2px rgba(4,5,26,.36);--gw-wrap: 1120px;--gw-wrap-narrow: 780px;--gw-gutter: 22px;--gw-header-height: 64px;--gw-header-gap: 16px;--gw-header-surface: 85%;--gw-header-blur: 10px;--gw-button-height: 40px;--gw-tap-min: 44px;--gw-ease: cubic-bezier(.22,1,.36,1);--gw-reveal-ms: 700ms;--gw-reveal-distance: 20px;--gw-spin-ms: 700ms;--gw-spot-radius: 260px;--gw-spot-radius-action: 120px;--gw-spot-strength: 22%;--gw-spot-strength-action: 38%;--gw-spot-strength-stage: 40%;--gw-spot-ms: 550ms;--gw-spot-ease: cubic-bezier(.16,1,.3,1);--gw-wash-pink: #ff6f5e;--gw-wash-violet: #7c8af7;--gw-wash-sky: #43b0ff;--gw-wash-mint: #1fcf9f;--gw-stage-glow: rgba(139,147,255,0.5);--gw-stage-glow-2: rgba(86,97,245,0.34);--gw-stage-top: #1d2058;--gw-stage-bottom: #0d0f2e;--gw-stage-dot: rgba(255,255,255,0.1);--gw-stage-ink: #ffffff;--gw-announce-bg: #171a38;--gw-announce-ink: #b9beda;--gw-announce-line: rgba(255,255,255,0.06);--gw-announce-tag: rgba(122,132,255,0.2);--gw-announce-tag-ink: #a7aeff;--gw-announce-link: #ffffff;--gw-announce-link-line: rgba(255,255,255,0.28);--gw-accent-light: #5661f5;--gw-accent-strong-light: #3a44de;--gw-accent-soft-light: #eef0fe;--gw-on-accent-light: #ffffff;--gw-accent-dark: #7c84ff;--gw-accent-strong-dark: #a3a9ff;--gw-accent-soft-dark: #1f2140;--gw-on-accent-dark: #0d0d12;--gw-bg: #ffffff;--gw-bg-soft: #f2f3f5;--gw-surface: #ffffff;--gw-ink: #1b1c1e;--gw-ink-2: #3b3d42;--gw-muted: #6a6d73;--gw-line: #e5e7ea;--gw-line-strong: #d5d8dd;--gw-line-control: #85888e;--gw-action: #1b1c1e;--gw-action-hover: #000000;--gw-on-action: #ffffff;--gw-accent: var(--gw-accent-light);--gw-accent-strong: var(--gw-accent-strong-light);--gw-accent-soft: var(--gw-accent-soft-light);--gw-on-accent: var(--gw-on-accent-light);--gw-success: #007f5f;--gw-success-soft: #e3f1df;--gw-success-strong: #0a6a4c;--gw-warning: #9a6700;--gw-warning-soft: #fbf1dc;--gw-danger: #b42318;--gw-danger-soft: #fff0e9;--gw-on-danger: #ffffff;--gw-night: #0c0e14;--gw-night-2: #141722;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff;--gw-scrim: rgba(12,14,18,0.12)}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){color-scheme: dark;--gw-bg: #0d0d12;--gw-bg-soft: #121318;--gw-surface: #16171d;--gw-ink: #e3e4e8;--gw-ink-2: #c4c6cc;--gw-muted: #9a9ca6;--gw-line: #2a2b33;--gw-line-strong: #383944;--gw-line-control: #6a6d78;--gw-action: #e3e4e8;--gw-action-hover: #ffffff;--gw-on-action: #0d0d12;--gw-accent: var(--gw-accent-dark);--gw-accent-strong: var(--gw-accent-strong-dark);--gw-accent-soft: var(--gw-accent-soft-dark);--gw-on-accent: var(--gw-on-accent-dark);--gw-success: #34c38f;--gw-success-soft: #132a22;--gw-success-strong: #34c38f;--gw-warning: #e0b341;--gw-warning-soft: #2b2410;--gw-danger: #ff6b5a;--gw-danger-soft: #2e1714;--gw-on-danger: #0d0d12;--gw-night: #0a0b10;--gw-night-2: #12141c;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff;--gw-scrim: rgba(0,0,0,0.35);--gw-shadow: 0 1px 0 rgba(0,0,0,.3);--gw-shadow-sm: 0 1px 0 rgba(0,0,0,.25);--gw-shadow-raised: 0 4px 16px rgba(0,0,0,.5)}}:root[data-theme="dark"]{color-scheme: dark;--gw-bg: #0d0d12;--gw-bg-soft: #121318;--gw-surface: #16171d;--gw-ink: #e3e4e8;--gw-ink-2: #c4c6cc;--gw-muted: #9a9ca6;--gw-line: #2a2b33;--gw-line-strong: #383944;--gw-line-control: #6a6d78;--gw-action: #e3e4e8;--gw-action-hover: #ffffff;--gw-on-action: #0d0d12;--gw-accent: var(--gw-accent-dark);--gw-accent-strong: var(--gw-accent-strong-dark);--gw-accent-soft: var(--gw-accent-soft-dark);--gw-on-accent: var(--gw-on-accent-dark);--gw-success: #34c38f;--gw-success-soft: #132a22;--gw-success-strong: #34c38f;--gw-warning: #e0b341;--gw-warning-soft: #2b2410;--gw-danger: #ff6b5a;--gw-danger-soft: #2e1714;--gw-on-danger: #0d0d12;--gw-night: #0a0b10;--gw-night-2: #12141c;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff;--gw-scrim: rgba(0,0,0,0.35);--gw-shadow: 0 1px 0 rgba(0,0,0,.3);--gw-shadow-sm: 0 1px 0 rgba(0,0,0,.25);--gw-shadow-raised: 0 4px 16px rgba(0,0,0,.5)}:root[data-theme="light"]{color-scheme: light;--gw-bg: #ffffff;--gw-bg-soft: #f2f3f5;--gw-surface: #ffffff;--gw-ink: #1b1c1e;--gw-ink-2: #3b3d42;--gw-muted: #6a6d73;--gw-line: #e5e7ea;--gw-line-strong: #d5d8dd;--gw-line-control: #85888e;--gw-action: #1b1c1e;--gw-action-hover: #000000;--gw-on-action: #ffffff;--gw-accent: var(--gw-accent-light);--gw-accent-strong: var(--gw-accent-strong-light);--gw-accent-soft: var(--gw-accent-soft-light);--gw-on-accent: var(--gw-on-accent-light);--gw-success: #007f5f;--gw-success-soft: #e3f1df;--gw-success-strong: #0a6a4c;--gw-warning: #9a6700;--gw-warning-soft: #fbf1dc;--gw-danger: #b42318;--gw-danger-soft: #fff0e9;--gw-on-danger: #ffffff;--gw-night: #0c0e14;--gw-night-2: #141722;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff;--gw-scrim: rgba(12,14,18,0.12)}.gw-band--night,.gw-showcase{color-scheme: dark;--gw-bg: var(--gw-night);--gw-bg-soft: var(--gw-night-2);--gw-surface: var(--gw-night-2);--gw-ink: #e3e4e8;--gw-ink-2: #c4c6cc;--gw-muted: #9a9ca6;--gw-line: #2a2b33;--gw-line-strong: #383944;--gw-line-control: #6a6d78;--gw-action: #e3e4e8;--gw-action-hover: #ffffff;--gw-on-action: #0d0d12;--gw-accent: var(--gw-accent-dark);--gw-accent-strong: var(--gw-accent-strong-dark);--gw-accent-soft: var(--gw-accent-soft-dark);--gw-on-accent: var(--gw-on-accent-dark);--gw-success: #34c38f;--gw-success-soft: #132a22;--gw-success-strong: #34c38f;--gw-warning: #e0b341;--gw-warning-soft: #2b2410;--gw-danger: #ff6b5a;--gw-danger-soft: #2e1714;--gw-on-danger: #0d0d12;--gw-scrim: rgba(0,0,0,0.35)}:root[data-gw-action="accent"],:root[data-gw-action="accent"] :is(.gw-band--night,.gw-showcase){--gw-action: var(--gw-accent);--gw-action-hover: var(--gw-accent-strong);--gw-on-action: var(--gw-on-accent)}:root[data-gw-radius="soft"]{--gw-radius-action: 12px;--gw-radius-card: 20px;--gw-radius-panel: 24px;--gw-radius-popover: 24px}*,*::before,*::after{box-sizing: border-box}[hidden]{display: none !important}html{-webkit-text-size-adjust: 100%;text-size-adjust: 100%}body{margin: 0;background: var(--gw-bg);color: var(--gw-ink);font-family: var(--gw-font);font-size: var(--gw-body-size);line-height: var(--gw-body-leading);-webkit-font-smoothing: antialiased;text-rendering: optimizeLegibility}:where(h1,h2,h3,h4,h5,h6,p,ul,ol,dl,dd,figure,blockquote){margin: 0}img,svg,video{display: block;max-width: 100%}img,video{height: auto}button,input,select,textarea{font: inherit;color: inherit}button{cursor: pointer}a{color: inherit;text-decoration: none}b,strong{font-weight: 600}.gw-page{display: flex;flex-direction: column;min-height: 100vh;min-height: 100dvh}.gw-page > main{flex: 1 0 auto}h1,h2,h3,h4,h5,h6,.gw-h1,.gw-h2,.gw-h3,.gw-h4{font-weight: var(--gw-heading-weight);letter-spacing: var(--gw-heading-tracking);line-height: var(--gw-heading-leading);text-wrap: balance}h1,.gw-h1,h2,.gw-h2{font-weight: var(--gw-display-weight);letter-spacing: var(--gw-display-tracking)}h1,.gw-h1{font-size: var(--gw-display-h1);line-height: var(--gw-display-h1-leading)}h2,.gw-h2{font-size: var(--gw-display-h2);line-height: var(--gw-display-h2-leading)}h3,.gw-h3{font-size: 20px;font-weight: 600;letter-spacing: -0.02em;line-height: 1.2}h4,.gw-h4{font-size: 20px;font-weight: 600;letter-spacing: -0.01em}h5,h6{font-size: 16px;font-weight: 600;letter-spacing: 0}.gw-lead{font-size: 18px;line-height: 1.55;color: var(--gw-muted);max-width: 58ch}.gw-note{font-size: 14px;color: var(--gw-muted)}.gw-dim{color: var(--gw-muted)}.gw-label{display: inline-flex;align-items: center;gap: 8px;font-size: 13px;font-weight: 500;color: var(--gw-muted)}.gw-label::before{content: "";width: 8px;height: 8px;border-radius: var(--gw-radius-2);background: var(--gw-label-mark,var(--gw-ink))}:where(p,dd,td,figcaption,.gw-list--check li,.gw-prose) a:not([class]),.gw-link{color: var(--gw-accent-strong);font-weight: 500;text-decoration: underline;text-decoration-thickness: 1px;text-underline-offset: 4px;text-decoration-color: color-mix(in srgb,currentColor 40%,transparent)}:where(p,dd,td,figcaption,.gw-list--check li,.gw-prose) a:not([class]):hover,.gw-link:hover{text-decoration-color: currentColor}:focus-visible{border-radius: var(--gw-radius-4);outline: 2px solid var(--gw-accent);outline-offset: 3px}[id]{scroll-margin-top: calc(var(--gw-header-height) + 16px)}.gw-skip{position: absolute;left: -9999px;top: 0;z-index: 200;padding: 12px 20px;border-radius: 0 0 var(--gw-radius-card) 0;background: var(--gw-accent);color: var(--gw-on-accent);box-shadow: var(--gw-shadow);font-size: 14px;font-weight: 600}.gw-skip:focus{left: 0;border-radius: 0 0 var(--gw-radius-card) 0}.gw-visually-hidden{position: absolute;width: 1px;height: 1px;padding: 0;overflow: hidden;clip-path: inset(50%);white-space: nowrap;border: 0}.gw-reveal{opacity: 0;transform: translateY(var(--gw-reveal-distance));transition: opacity var(--gw-reveal-ms) var(--gw-ease),transform var(--gw-reveal-ms) var(--gw-ease);animation: gw-reveal-failsafe 1ms linear 2.5s forwards}.gw-reveal.is-in{opacity: 1;transform: none}@keyframes gw-reveal-failsafe{to{opacity: 1;transform: none}}@media (prefers-reduced-motion: reduce){*,*::before,*::after{scroll-behavior: auto !important}.gw-reveal{opacity: 1;transform: none;transition: none;animation: none}}.gw-wrap,.gw-wrap--narrow{width: min(100% - 2 * var(--gw-gutter),var(--gw-wrap));margin-inline: auto}.gw-wrap--narrow{max-width: var(--gw-wrap-narrow)}.gw-section{padding-block: var(--gw-space-section)}.gw-section--soft{background: var(--gw-bg-soft)}.gw-section--tight{padding-block: 40px}@media (min-width: 768px){.gw-section--tight{padding-block: 64px}}.gw-section__head{max-width: 760px}.gw-section__head--center{margin-inline: auto;text-align: center}.gw-section__head--center .gw-lead{margin-inline: auto}:where(.gw-section__head) + *{margin-top: 40px}@media (min-width: 768px){:where(.gw-section__head) + *{margin-top: 48px}}:where(.gw-section__head,.gw-hero > .gw-wrap,.gw-split > :not(.gw-window),.gw-cta,.gw-card,.gw-feature,.gw-plan) > * + *{margin-top: 16px}: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}: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}:where(.gw-section__head,.gw-split > :not(.gw-window),.gw-cta) > :where(* + .gw-lead){margin-top: 20px}.gw-actions{display: flex;flex-wrap: wrap;align-items: center;gap: 12px}.gw-grid,.gw-grid--2,.gw-grid--3,.gw-grid--4{display: grid;grid-template-columns: minmax(0,1fr);gap: 16px}@media (min-width: 480px){.gw-grid--4{grid-template-columns: repeat(2,minmax(0,1fr))}}@media (min-width: 768px){.gw-grid,.gw-grid--2,.gw-grid--3,.gw-grid--4{gap: 24px}.gw-grid--2{grid-template-columns: repeat(2,minmax(0,1fr))}.gw-grid--3{grid-template-columns: repeat(3,minmax(0,1fr))}}@media (min-width: 1080px){.gw-grid--4{grid-template-columns: repeat(4,minmax(0,1fr))}}.gw-band--night,.gw-showcase{position: relative;isolation: isolate;color: var(--gw-ink);background: radial-gradient(800px 360px at 50% 0%,color-mix(in srgb,var(--gw-accent) 22%,transparent),transparent 72%),var(--gw-night)}.gw-btn{position: relative;display: inline-flex;align-items: center;gap: 8px;max-width: 100%;height: var(--gw-button-height);padding: 0 20px;border: 1px solid transparent;border-radius: var(--gw-radius-action);background: var(--gw-action);color: var(--gw-on-action);font-family: var(--gw-font-action);font-size: 14px;font-weight: 600;letter-spacing: 0;text-align: center;white-space: nowrap;cursor: pointer;transition: background 0.15s ease,border-color 0.15s ease}.gw-btn:hover{transform: translateY(-1px);box-shadow: var(--gw-shadow)}.gw-btn svg{flex: none;width: 16px;height: 16px}.gw-btn--secondary{background: transparent;border-color: var(--gw-line-strong);color: var(--gw-ink)}.gw-btn--secondary:hover{background: transparent;border-color: var(--gw-ink)}.gw-btn--ghost{background: transparent;color: var(--gw-ink)}.gw-btn--ghost:hover{background: var(--gw-bg-soft)}.gw-btn:is(.gw-btn--secondary,.gw-btn--ghost):hover{transform: none;box-shadow: none}.gw-btn__arrow{letter-spacing: 0;transition: transform 0.18s ease}.gw-btn:hover .gw-btn__arrow{transform: translateX(3px)}.gw-btn--on-night{background: var(--gw-on-night);color: var(--gw-night)}.gw-btn--on-night:hover{background: var(--gw-on-night);opacity: 0.88}.gw-btn--sm{height: 36px;padding: 0 16px}.gw-btn--sm::after{content: "";position: absolute;top: -6px;right: 0;bottom: -6px;left: 0}.gw-btn--lg{height: 48px;padding: 0 24px;font-size: 16px}.gw-btn--block{display: flex;width: 100%;justify-content: center}.gw-btn:disabled,.gw-btn[aria-disabled="true"]{opacity: 0.48;cursor: not-allowed;pointer-events: none}.gw-btn:active{background: var(--gw-action-hover)}.gw-btn--secondary:active{background: var(--gw-bg-soft);border-color: var(--gw-ink)}.gw-btn--ghost:active{background: var(--gw-line)}.gw-btn--on-night:active{background: var(--gw-on-night);opacity: 0.76}.gw-btn--danger{background: var(--gw-danger);color: var(--gw-on-danger)}.gw-btn--danger:hover,.gw-btn--danger:active{background: color-mix(in srgb,var(--gw-danger) 84%,var(--gw-ink))}.gw-btn[aria-busy="true"]{cursor: progress;-webkit-text-fill-color: transparent}.gw-btn[aria-busy="true"] svg{opacity: 0}.gw-btn[aria-busy="true"]::before{content: "";position: absolute;top: 50%;left: 50%;width: 16px;height: 16px;margin: -8px 0 0 -8px;border: 2px solid color-mix(in srgb,currentColor 18%,transparent);border-top-color: currentColor;border-radius: var(--gw-radius-chip);animation: gw-spin var(--gw-spin-ms) linear infinite}@keyframes gw-spin{to{transform: rotate(360deg)}}@media (prefers-reduced-motion: reduce){.gw-btn[aria-busy="true"]::before{border: 0;border-radius: var(--gw-radius-0);background: radial-gradient(circle at 3px 50%,currentColor 1.5px,transparent 2px),radial-gradient(circle at 8px 50%,currentColor 1.5px,transparent 2px),radial-gradient(circle at 13px 50%,currentColor 1.5px,transparent 2px);animation: none}}.gw-link--arrow{display: inline-flex;align-items: center;gap: 6px;min-height: 24px;font-weight: 600;text-decoration: none}.gw-link--arrow::after{content: "\2192";transition: transform 0.18s var(--gw-ease)}.gw-link--arrow:hover::after{transform: translateX(2px)}.gw-chip{display: inline-flex;align-items: center;gap: 6px;min-height: 32px;padding: 4px 12px;border: 1px solid var(--gw-line-strong);border-radius: var(--gw-radius-chip);background: var(--gw-surface);color: var(--gw-ink-2);font-size: 13px;font-weight: 500;line-height: 1.4;white-space: nowrap}:is(a,button,label).gw-chip{cursor: pointer}:is(a,button,label).gw-chip:hover{border-color: var(--gw-ink);color: var(--gw-ink)}.gw-chip.is-active,.gw-chip[aria-pressed="true"],.gw-chip[aria-selected="true"]{border-color: var(--gw-accent);background: var(--gw-accent-soft);color: var(--gw-accent-strong)}.gw-segmented{display: inline-flex;max-width: 100%;border: 1px solid var(--gw-line-strong);border-radius: var(--gw-radius-action);background: var(--gw-surface);overflow: hidden;overflow: clip;vertical-align: middle}.gw-segmented--block{display: flex;width: 100%}.gw-segmented > button{display: inline-flex;flex: 0 1 auto;align-items: center;justify-content: center;min-width: 0;height: calc(var(--gw-button-height) - 2px);padding: 0 16px;border: 0;background: transparent;color: var(--gw-muted);font-size: 14px;font-weight: 500;line-height: 1.4;white-space: nowrap;cursor: pointer}.gw-segmented--block > button{flex: 1 1 0}.gw-segmented > button + button{border-left: 1px solid var(--gw-line-strong)}.gw-segmented > button:hover{background: var(--gw-bg-soft);color: var(--gw-ink)}.gw-segmented > button:active{background: var(--gw-line)}.gw-segmented > button:focus-visible{outline-offset: -2px}.gw-segmented > button[aria-checked="true"]{background: var(--gw-accent-soft);color: var(--gw-accent-strong)}.gw-badge{display: inline-flex;align-items: center;gap: 6px;min-height: 24px;padding: 2px 8px;border-radius: var(--gw-radius-chip);background: color-mix(in srgb,var(--gw-ink) 8%,transparent);color: var(--gw-ink-2);font-size: 12px;font-weight: 500;line-height: 1.4;white-space: nowrap;vertical-align: middle}.gw-badge--accent{background: var(--gw-accent-soft);color: var(--gw-accent-strong)}.gw-badge--success{background: var(--gw-success-soft);color: var(--gw-ink)}.gw-badge--success::before,.gw-badge--warning::before{content: "";flex: none;width: 6px;height: 6px;border-radius: var(--gw-radius-chip);background: var(--gw-success)}.gw-badge--warning::before{background: var(--gw-warning)}.gw-badge--danger{background: var(--gw-danger-soft);color: var(--gw-ink)}.gw-badge--danger::before{content: "";flex: none;width: 6px;height: 6px;border-radius: var(--gw-radius-chip);background: var(--gw-danger)}.gw-status{display: inline-flex;align-items: center;gap: 6px;min-height: 28px;padding: 6px 8px;border-radius: var(--gw-radius-action);background: color-mix(in srgb,var(--gw-ink) 8%,transparent);color: var(--gw-ink-2);font-size: 12px;font-weight: 500;line-height: 16px;white-space: nowrap}.gw-status--success{background: var(--gw-success-soft);color: var(--gw-success-strong)}.gw-status--accent{background: var(--gw-accent-soft);color: var(--gw-accent-strong)}.gw-status__dot{width: 6px;height: 6px;border-radius: var(--gw-radius-chip);background: currentColor}.gw-status--early .gw-status__dot{background: var(--gw-accent)}.gw-card{padding: 24px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface);box-shadow: var(--gw-shadow)}@media (min-width: 768px){.gw-card{padding: 32px}}.gw-card--soft{background: var(--gw-bg-soft);box-shadow: none}.gw-card--link{display: block;color: inherit}.gw-card--link:hover{border-color: var(--gw-line-strong)}.gw-card__media{overflow: hidden;aspect-ratio: 16 / 9;margin: -24px -24px 0;border-top-left-radius: calc(var(--gw-radius-card) - 1px);border-top-right-radius: calc(var(--gw-radius-card) - 1px);background: var(--gw-bg-soft)}.gw-card__media--wide{aspect-ratio: 1200 / 630}.gw-card__media--square{aspect-ratio: 1 / 1}.gw-card__media :is(img,video){width: 100%;height: 100%;object-fit: cover}@media (min-width: 768px){.gw-card__media{margin: -32px -32px 0}}:where(.gw-card,.gw-feature,.gw-plan) > :is(h3,h4) + p{margin-top: 8px}:where(.gw-card,.gw-feature) h3{font-size: 20px}:where(.gw-card,.gw-feature) p{font-size: 16px;color: var(--gw-muted)}.gw-window{position: relative;overflow: hidden;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface);color: var(--gw-ink);box-shadow: var(--gw-shadow-raised);font-size: 13px;line-height: 20px}.gw-window__bar{display: flex;align-items: center;gap: 8px;min-height: 40px;padding: 0 12px;border-bottom: 1px solid var(--gw-line);color: var(--gw-muted);font-size: 12px;white-space: nowrap;overflow: hidden}.gw-window__bar::before{content: "";flex: none;width: 8px;height: 8px;margin-right: 36px;border-radius: var(--gw-radius-chip);background: var(--gw-line-strong);box-shadow: 14px 0 0 var(--gw-line-strong),28px 0 0 var(--gw-line-strong)}.gw-window__bar > :first-child{min-width: 0;overflow: hidden}.gw-window__bar b{color: var(--gw-ink);font-weight: 600}@media (max-width: 560px){.gw-window__bar{align-items: flex-start;padding-block: 8px;white-space: normal}.gw-window__bar > :first-child{overflow: visible}}.gw-window__body{padding: 16px}.gw-window__body:has(> img:only-child){padding: 0}.gw-window__body > img{width: 100%}.gw-window__caption{margin: 0;padding: 0 16px 12px;color: var(--gw-muted);font-size: 12px;line-height: 1.5;text-align: end}.gw-window__body:has(> img:only-child) + .gw-window__caption{padding-top: 12px}.gw-figure > :is(img,video,picture){display: block;width: 100%;height: auto;border-radius: var(--gw-radius-card)}.gw-figure > picture > img{display: block;width: 100%;height: auto;border-radius: inherit}.gw-figure > figcaption{margin-top: 12px;color: var(--gw-muted);font-size: 14px;line-height: 1.5}.gw-icon{display: inline-flex;align-items: center;justify-content: center;flex: none;width: 20px;height: 20px}.gw-icon svg{width: 20px;height: 20px}.gw-list--check{display: grid;gap: 12px;padding: 0;list-style: none;font-size: 14px;line-height: 1.5}.gw-list--check > li{position: relative;padding-left: 28px}.gw-list--check > li::before{content: "";position: absolute;left: 0;top: 4px;width: 16px;height: 16px;border-radius: var(--gw-radius-4);background: var(--gw-accent-soft)}.gw-list--check > li::after{content: "";position: absolute;left: 0;top: 4px;width: 16px;height: 16px;background: var(--gw-accent);-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.2l2.6 2.5L12 5.3' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.2l2.6 2.5L12 5.3' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px no-repeat}.gw-table{overflow-x: auto;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface);-webkit-overflow-scrolling: touch}.gw-table table{width: 100%;border-collapse: collapse;font-size: 14px;line-height: 1.5}.gw-table caption{padding: 16px;text-align: left;font-size: 13px;color: var(--gw-muted)}.gw-table th,.gw-table td{padding: 12px 16px;border-bottom: 1px solid var(--gw-line);text-align: left;vertical-align: top}.gw-table thead th{background: var(--gw-bg-soft);color: var(--gw-ink);font-size: 13px;font-weight: 600;white-space: nowrap}.gw-table tbody th{font-weight: 500}.gw-table tbody tr:last-child > *{border-bottom: 0}.gw-table td{color: var(--gw-ink-2);font-variant-numeric: tabular-nums}.gw-table--compare table{min-width: 640px}.gw-table--compare td{text-align: center}.gw-table--compare thead th:not(:first-child){text-align: center}.gw-table--compare tbody th{position: sticky;left: 0;z-index: 1;background: var(--gw-surface);min-width: 160px}.gw-faq{display: grid;gap: 12px}.gw-faq__item{padding: 2px 24px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface)}.gw-faq__item[open]{border-color: var(--gw-line-strong)}.gw-faq__item > summary{display: flex;align-items: center;justify-content: space-between;gap: 16px;min-height: 44px;padding: 20px 0;font-family: var(--gw-font-action);font-size: 18px;font-weight: 600;list-style: none;cursor: pointer}.gw-faq__item > summary::-webkit-details-marker{display: none}.gw-faq__item > summary::after{content: "+";color: var(--gw-accent);font-size: 24px;font-weight: 400;transition: transform 0.2s ease}.gw-faq__item[open] > summary::after{transform: rotate(45deg)}.gw-faq__item > :not(summary){margin: 0 0 20px;color: var(--gw-muted);font-size: 16px}.gw-faq__item > p{max-width: 33em}@keyframes gw-faq-in{from{opacity: 0;transform: translateY(-4px)}to{opacity: 1;transform: none}}.gw-faq__item[open] > :not(summary){animation: gw-faq-in 0.28s ease}@media (prefers-reduced-motion: reduce){.gw-faq__item[open] > :not(summary){animation: none}}@media (max-width: 560px){.gw-faq__item > summary{padding-block: 4px}}@media (max-width: 768px){.gw-btn,.gw-btn--sm,.gw-btn--lg{height: auto;min-height: var(--gw-tap-min);padding-block: 8px}.gw-btn--lg{min-height: 48px}}@media (max-width: 480px){:where(main) .gw-btn{white-space: normal;line-height: 1.35}}@media (max-width: 768px),(pointer: coarse){:is(a,button,label).gw-chip{min-height: var(--gw-tap-min)}.gw-segmented > button{height: auto;min-height: var(--gw-tap-min);padding-block: 8px;white-space: normal;text-wrap: balance}}.gw-announce{position: relative;z-index: 60;padding: 12px 16px;border-bottom: 1px solid var(--gw-announce-line);background: var(--gw-announce-bg);color: var(--gw-announce-ink);font-size: 13px;font-weight: 500;line-height: 1.5;letter-spacing: 0.005em;text-align: center}.gw-announce__tag{display: inline-block;margin-right: 12px;padding: 2.5px 8px;border-radius: var(--gw-radius-chip);background: var(--gw-announce-tag);color: var(--gw-announce-tag-ink);font-size: 11px;font-weight: 700;letter-spacing: 0.09em;vertical-align: 1px}.gw-announce a{margin-left: 8px;padding-bottom: 2px;border-bottom: 1px solid var(--gw-announce-link-line);color: var(--gw-announce-link);font-weight: 600;text-decoration: none;white-space: nowrap;transition: border-color 0.18s}.gw-announce a:hover{border-bottom-color: var(--gw-announce-link)}@media (max-width: 520px){.gw-announce{padding: 8px 12px;font-size: 12px}.gw-announce__tag{margin-right: 6px}}.gw-header{position: sticky;top: 0;z-index: 50;border-bottom: 1px solid var(--gw-line);background: var(--gw-surface)}.gw-header.is-scrolled{border-bottom-color: var(--gw-line-strong)}.gw-header__bar{display: flex;align-items: center;gap: 32px;height: var(--gw-header-height)}.gw-header > .gw-header__bar{width: min(100% - 32px,var(--gw-wrap) + 12px);margin-inline: auto;padding-inline: 24px}@media (max-width: 640px){.gw-header > .gw-header__bar{padding-inline: 6px}}.gw-brand{display: inline-flex;align-items: center;gap: 8px;flex: none;color: var(--gw-ink);font-size: 18px;font-weight: 700;letter-spacing: -0.01em;line-height: 1.6;white-space: nowrap}.gw-brand__mark{flex: none;width: 34px;height: 34px;border-radius: var(--gw-radius-8)}@media (max-width: 768px){.gw-brand{min-height: 44px}}.gw-brand__name{line-height: inherit}.gw-nav{display: none;margin-left: 6px}.gw-nav__list{display: flex;align-items: center;gap: 4px;margin: 0;padding: 0;list-style: none}.gw-nav__trigger,.gw-nav__link{display: inline-flex;align-items: center;gap: 6px;padding: 8px 12px;border: 0;border-radius: var(--gw-radius-action);background: transparent;color: var(--gw-ink-2);font-size: 14px;font-weight: 500;line-height: 1.6;white-space: nowrap;cursor: pointer}.gw-nav__trigger:hover,.gw-nav__link:hover,.gw-nav__item.is-open > .gw-nav__trigger{background: var(--gw-bg-soft);color: var(--gw-ink)}.gw-nav__trigger::after,.gw-mobile-menu__group > summary::after{content: "";flex: none;width: 12px;height: 12px;background: currentColor;opacity: 0.55;-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;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;transition: transform 0.18s var(--gw-ease)}.gw-nav__trigger[aria-expanded="true"]::after,.gw-mobile-menu__group[open] > summary::after{transform: rotate(180deg)}.gw-nav .gw-nav__trigger,.gw-nav .gw-nav__link{letter-spacing: -0.005em}.gw-nav__link[aria-current="page"],.gw-nav__trigger[aria-current]{color: var(--gw-accent-strong);font-weight: 600}.gw-header{--gw-mega-ease: cubic-bezier(0.25,1,0.5,1);--gw-mega-t: 0.36s;--gw-mega-glide: 0.26s}.gw-nav__item{display: flex}.gw-nav__chev{flex: none;opacity: 0.55;transition: transform 0.18s}.gw-nav__trigger:has(> .gw-nav__chev)::after{content: none}.gw-nav__trigger[aria-expanded="true"] > .gw-nav__chev{transform: rotate(180deg)}.gw-mega-surface,.gw-mega-caret,.gw-nav__pill,.gw-mega__hl{display: none}.gw-scrim{position: fixed;inset: 0;z-index: 40;pointer-events: none;opacity: 0;background: var(--gw-scrim);-webkit-backdrop-filter: blur(4px);backdrop-filter: blur(4px);transition: opacity 0.24s}.gw-scrim.is-on{opacity: 1}.gw-mega a{font-size: 16px;font-weight: 500;letter-spacing: -0.005em}.gw-mega__link b{display: block}.gw-mega__link i{display: block;font-style: normal}@media (min-width: 1081px){.gw-header.has-mega .gw-nav__trigger,.gw-header.has-mega .gw-nav__link{position: relative;z-index: 1;background: none}.gw-header.has-mega .gw-nav__trigger:hover,.gw-header.has-mega .gw-nav__link:hover,.gw-header.has-mega .gw-nav__item:hover > .gw-nav__trigger,.gw-header.has-mega .gw-nav__item:focus-within > .gw-nav__trigger{background: none;color: var(--gw-ink)}.gw-header.has-mega .gw-nav__chev{transform: none;transition: transform 0.2s var(--gw-mega-ease)}.gw-header.has-mega .gw-nav__trigger[aria-expanded="true"] > .gw-nav__chev{transform: rotate(180deg)}.gw-nav__pill{display: block;position: absolute;left: 0;top: 0;z-index: 0;width: 0;height: 0;border-radius: var(--gw-radius-action);pointer-events: none;opacity: 0;background: color-mix(in srgb,var(--gw-ink) 6%,transparent);transition: translate var(--gw-mega-glide) var(--gw-mega-ease),width var(--gw-mega-glide) var(--gw-mega-ease),opacity 0.2s ease}.gw-nav__pill.is-on{opacity: 1}.gw-mega-surface{display: block;position: absolute;left: 0;top: var(--gw-mega-top,73px);z-index: 88;width: 0;height: 0;pointer-events: none;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-popover);background: var(--gw-surface);box-shadow: var(--gw-shadow-raised);opacity: 0;translate: 0 -6px;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)}.gw-mega-caret{display: block;position: absolute;left: 0;top: calc(var(--gw-mega-top,73px) - 5px);z-index: 89;width: 12px;height: 12px;pointer-events: none;border-top: 1px solid var(--gw-line);border-left: 1px solid var(--gw-line);border-radius: var(--gw-radius-2) 0 0 0;background: var(--gw-surface);rotate: 45deg;opacity: 0;transition: opacity 0.22s ease,translate var(--gw-mega-t) var(--gw-mega-ease)}.gw-header.is-mega-open .gw-mega-surface,.gw-header.is-mega-open .gw-mega-caret{opacity: 1}.gw-header.has-mega .gw-mega{position: absolute;top: var(--gw-mega-top,73px);left: 0;z-index: 90;width: var(--gw-mega-w,1000px);max-width: calc(100vw - 48px);border-radius: var(--gw-radius-popover);opacity: 0;visibility: hidden;pointer-events: none;translate: 0 -6px;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)}.gw-header.has-mega.is-mega-open .gw-mega{translate: 0 0}.gw-header.has-mega.is-mega-open .gw-nav__item.is-open > .gw-mega{opacity: 1;visibility: visible;pointer-events: auto;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}.gw-mega__body,.gw-mega__foot{translate: var(--gw-mega-dx,0px) 0;transition: translate var(--gw-mega-t) var(--gw-mega-ease)}.gw-mega__body{display: grid;grid-template-columns: minmax(0,1fr) var(--gw-mega-pv,320px);gap: 16px;padding: 12px}.gw-mega__body:not(:has(> .gw-mega__aside)){grid-template-columns: minmax(0,1fr)}.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}.gw-mega__col{display: flex;flex-direction: column;gap: 2px}.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}.gw-mega__link{position: relative;z-index: 1;display: block;padding: 12px;border-radius: var(--gw-radius-action);color: var(--gw-ink)}.gw-mega__link:focus-visible{outline: 2px solid var(--gw-accent);outline-offset: -2px}.gw-mega__link b{color: var(--gw-ink);font-size: 14px;font-weight: 500;letter-spacing: 0;line-height: 20px}.gw-mega__link i{margin-top: 2px;color: var(--gw-muted);font-size: 13px;line-height: 18px}.gw-mega__link > .gw-mega__icon,.gw-mega__link > img{display: none}.gw-mega__hl{display: block;position: absolute;left: 0;top: 0;z-index: 0;width: 0;height: 0;border-radius: var(--gw-radius-action);pointer-events: none;opacity: 0;background: color-mix(in srgb,var(--gw-ink) 5%,transparent);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}.gw-mega__hl.is-on{opacity: 1}.gw-mega__aside{position: relative;display: block;min-height: 296px;border-radius: var(--gw-radius-card);overflow: hidden}.gw-mega__card{position: absolute;inset: 0;display: flex;flex-direction: column;gap: 12px;padding: 0 0 4px;color: var(--gw-ink);opacity: 0;pointer-events: none;transition: opacity 0.24s ease}.gw-mega__card[aria-hidden="true"]{visibility: hidden;transition: opacity 0.24s ease,visibility 0s linear 0.24s}.gw-mega__card.is-on{opacity: 1;visibility: visible;pointer-events: auto;transition: opacity 0.28s ease,visibility 0s}.gw-mega__card:focus-visible{border-radius: var(--gw-radius-card);outline: 2px solid var(--gw-accent);outline-offset: -2px}.gw-mega__foot{display: flex;align-items: center;justify-content: space-between;gap: 16px;padding: 16px 24px;border-top: 1px solid var(--gw-line);font-size: 13px}.gw-mega__foot-start,.gw-mega__foot-end{display: flex;align-items: center;gap: 24px}.gw-mega__foot a{color: var(--gw-muted);font-size: 13px;font-weight: 500;transition: color 0.15s}.gw-mega__foot a:hover{color: var(--gw-ink)}.gw-mega__foot a.gw-mega__cta{color: var(--gw-ink);font-weight: 600}}.gw-mega__art{--gw-lift: var(--gw-shadow-lift);position: relative;display: block;overflow: hidden;border-radius: var(--gw-radius-card);background: radial-gradient(130% 90% at 100% 0%,var(--gw-stage-glow),transparent 55%),radial-gradient(90% 80% at 0% 100%,var(--gw-stage-glow-2),transparent 60%),linear-gradient(160deg,var(--gw-stage-top),var(--gw-stage-bottom));color: var(--gw-stage-ink)}.gw-mega__aside .gw-mega__art::before{content: "";position: absolute;inset: 0;pointer-events: none;background-image: radial-gradient(var(--gw-stage-dot) 1px,transparent 1.5px);background-size: 16px 16px;-webkit-mask-image: linear-gradient(170deg,#000,transparent 70%);mask-image: linear-gradient(170deg,#000,transparent 70%)}:where(.gw-mega__art > *){position: relative}:where(.gw-mega__art) > img{position: absolute;inset: 0;display: block;width: 100%;height: 100%;object-fit: cover}.gw-mega__aside .gw-mega__art{flex: 1 1 auto;min-height: 0;container-type: size}.gw-mega__card-text{display: block;padding: 0 4px}.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}.gw-mega__card-text i{display: block;margin-top: 2px;color: var(--gw-muted);font-size: 13px;font-style: normal;line-height: 18px}.gw-mobile-menu .gw-mega__card{display: flex;flex-direction: column;gap: 12px;margin: 24px 0 8px;color: var(--gw-ink)}.gw-mobile-menu .gw-mega__art{display: flex;padding: 16px}.gw-mobile-menu .gw-mega__card-text b{display: block;line-height: 1.6}.gw-mobile-menu .gw-mega__card-text i{margin-top: 4px}.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}.gw-mega__go{color: var(--gw-accent-strong);font-weight: 500}.gw-mega__card-text > .gw-mega__go{display: block;margin-top: 8px;font-size: 13px}.gw-mega__card-text b > .gw-mega__go{margin-left: auto;transition: translate 0.2s var(--gw-mega-ease)}.gw-mega__card:hover b > .gw-mega__go{translate: 4px 0}.gw-mega__new{display: inline-flex;align-items: center;height: 20px;margin-right: 6px;padding: 0 6px;border-radius: var(--gw-radius-6);background: var(--gw-accent-soft);color: var(--gw-accent-strong);font-size: 11px;font-weight: 600}@media (prefers-reduced-motion: reduce){.gw-scrim,.gw-nav__pill,.gw-mega-surface,.gw-mega-caret,.gw-mega__hl,.gw-mega__go,.gw-header.has-mega .gw-mega,.gw-header.has-mega.is-mega-open .gw-nav__item.is-open > .gw-mega,.gw-mega__body,.gw-mega__foot,.gw-mega__card,.gw-mega__card.is-on{transition: none}.gw-mega-surface,.gw-header.has-mega .gw-mega{translate: 0 0}}.gw-header__actions{display: flex;align-items: center;gap: 4px;margin-left: auto}.gw-header__signin,.gw-header__link{display: none}.gw-header__actions > .gw-btn{display: none;margin-left: 8px;line-height: 1.6}.gw-theme-toggle{display: inline-flex;align-items: center;justify-content: center;flex: none;width: 40px;height: 40px;padding: 0;border: 0;border-radius: var(--gw-radius-action);background: transparent;color: var(--gw-ink)}.gw-theme-toggle:hover{background: var(--gw-bg-soft)}.gw-theme-toggle svg,.gw-menu-toggle svg{width: 20px;height: 20px}.gw-menu-toggle{display: inline-flex;align-items: center;justify-content: center;flex: none;width: 42px;height: 42px;padding: 0;border: 1px solid var(--gw-line-strong);border-radius: var(--gw-radius-card);background: var(--gw-surface);color: var(--gw-ink)}.gw-menu-toggle[aria-expanded="true"]{border-color: var(--gw-ink)}.gw-menu-toggle[aria-expanded="true"] .gw-menu-toggle__open,.gw-menu-toggle:not([aria-expanded="true"]) .gw-menu-toggle__close{display: none}.gw-mobile-menu{position: fixed;top: calc(var(--gw-header-height) + 1px);left: 0;right: 0;bottom: 0;overflow-y: auto;overscroll-behavior: contain;padding-block: 8px 32px;background: var(--gw-bg)}html.is-menu-open{overflow: hidden}html.is-menu-open .gw-header{position: fixed;top: 0;left: 0;right: 0}.gw-mobile-menu__group > summary,.gw-mobile-menu__top{display: flex;align-items: center;justify-content: space-between;min-height: 48px;padding-block: 8px;border-bottom: 1px solid var(--gw-line);color: var(--gw-ink);font-size: 18px;font-weight: 500;list-style: none;cursor: pointer}.gw-mobile-menu__group > summary::-webkit-details-marker{display: none}.gw-mobile-menu__list{margin: 0;padding: 8px 0 16px;list-style: none}.gw-mobile-menu__link{display: flex;align-items: center;min-height: 44px;color: var(--gw-ink-2);font-size: 16px}.gw-mobile-menu__actions{display: grid;gap: 8px;margin-top: 24px}@media (min-width: 561px){.gw-header__actions > .gw-btn:not(.gw-btn--secondary){display: inline-flex}}@media (min-width: 1181px){.gw-header__link,.gw-header__actions > .gw-btn--secondary{display: inline-flex}}@media (min-width: 1081px){.gw-nav{display: block}.gw-header__signin{display: inline-flex}.gw-menu-toggle,.gw-mobile-menu{display: none !important}html.is-menu-open{overflow: visible}html.is-menu-open .gw-header{position: sticky}}@media (max-width: 768px),(pointer: coarse){.gw-theme-toggle,.gw-menu-toggle{width: var(--gw-tap-min);height: var(--gw-tap-min)}}@media (min-width: 1081px){.gw-header--float{top: var(--gw-header-gap);width: min(100% - 32px,var(--gw-wrap) + 50px);margin: var(--gw-header-gap) auto 0;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-panel);background: color-mix(in srgb,var(--gw-surface) var(--gw-header-surface),transparent);-webkit-backdrop-filter: blur(var(--gw-header-blur));backdrop-filter: blur(var(--gw-header-blur));box-shadow: var(--gw-shadow-raised)}.gw-header--float.is-scrolled{border-color: var(--gw-line-strong)}.gw-header--float > .gw-header__bar{width: auto;padding-inline: 24px}.gw-header--float .gw-mega{max-height: calc(100vh - var(--gw-header-height) - var(--gw-header-gap) - 24px)}:root:has(.gw-header--float) [id]{scroll-margin-top: calc(var(--gw-header-height) + var(--gw-header-gap) + 18px)}}@media (min-width: 1081px) and (prefers-reduced-transparency: reduce){.gw-header--float{background: var(--gw-surface);-webkit-backdrop-filter: none;backdrop-filter: none}}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.gw-header--float{background: var(--gw-surface)}}.gw-mobile-menu[data-gw-menu="drill"]{display: flex;flex-direction: column;overflow-x: hidden;padding-bottom: 0;line-height: 1.6}.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}.gw-mobile-menu[data-gw-menu="drill"] a{font-size: 18px;font-weight: 500;letter-spacing: -0.005em}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__group > summary,.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__top{min-height: 64px;font-size: 24px;letter-spacing: -0.01em}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__group > summary::after{width: 20px;height: 20px;-webkit-mask-size: 20px;mask-size: 20px}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__list{padding: 0}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__list .gw-mobile-menu__link{gap: 12px;min-height: 56px;padding-block: 12px;border-bottom: 1px solid var(--gw-line);color: var(--gw-ink);font-weight: 500}.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}.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}.gw-mobile-menu__heading{padding: 16px 0 8px;color: var(--gw-muted);font-size: 12px;font-weight: 500;line-height: 1.6}.gw-mobile-menu__icon{display: grid;place-items: center;flex: none;width: 32px;height: 32px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-action);color: var(--gw-muted)}.gw-mobile-menu__icon svg{width: 16px;height: 16px}.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}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__list .gw-mobile-menu__link:hover{background: var(--gw-bg-soft);transform: translateX(2px)}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__list .gw-mobile-menu__link:focus-visible{background: var(--gw-bg-soft)}.gw-mobile-menu__icon{background: var(--gw-surface);transition: color 0.15s,border-color 0.15s,background 0.15s,transform 0.15s}.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)}.gw-mobile-menu__link:hover .gw-mobile-menu__icon{transform: translateY(-1px)}.gw-mobile-menu__all{display: flex;align-items: center;min-height: 56px;color: var(--gw-accent-strong);font-size: 16px;font-weight: 500}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__all{font-size: 16px}.gw-mobile-menu__all::after{content: "\00a0\2192"}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions{position: sticky;bottom: 0;z-index: 1;grid-template-columns: minmax(0,1fr) minmax(0,1fr);align-items: center;gap: 8px;margin-top: auto;padding-block: 12px calc(12px + env(safe-area-inset-bottom));border-top: 1px solid var(--gw-line);background: var(--gw-bg)}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > .gw-btn{grid-row: 2}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > :not(.gw-btn){grid-row: 1}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > :not(.gw-btn):last-child{grid-column: 2;justify-self: end}.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}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > .gw-mobile-menu__link--muted{color: var(--gw-muted)}.gw-mobile-menu[data-gw-menu="drill"] .gw-mobile-menu__actions > .gw-btn{padding: 0 16px;font-size: 16px;line-height: 1.6}.gw-mobile-menu.is-drill{top: var(--gw-menu-top,calc(var(--gw-header-height) + 1px))}html.is-menu-open .gw-header:has(> .gw-mobile-menu.is-drill){position: sticky}.gw-mobile-menu.is-drill .gw-mobile-menu__group > summary::after{transform: rotate(-90deg);transition: none}.gw-mobile-menu.is-drilled > nav > :not([open],.gw-mobile-menu__actions),.gw-mobile-menu.is-drilled .gw-mobile-menu__group[open] > summary{display: none}.gw-mobile-menu__head{display: none}.gw-mobile-menu.is-drilled .gw-mobile-menu__group[open] > .gw-mobile-menu__head{display: grid;grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);align-items: center;gap: 8px;min-height: 56px;margin-bottom: 8px;border-bottom: 1px solid var(--gw-line)}.gw-mobile-menu__back{display: inline-flex;align-items: center;justify-self: start;gap: 4px;min-height: var(--gw-tap-min);padding: 0 8px 0 0;border: 0;background: transparent;color: var(--gw-muted);font-size: 16px;line-height: 1.6}.gw-mobile-menu__back:hover{color: var(--gw-ink)}.gw-mobile-menu__back::before{content: "";flex: none;width: 16px;height: 16px;background: currentColor;-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;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}.gw-mobile-menu__title{color: var(--gw-ink);font-size: 16px;font-weight: 600;letter-spacing: 0;line-height: 1.6;text-align: center}@media (prefers-reduced-motion: no-preference){.gw-mobile-menu.is-drilled .gw-mobile-menu__group[open]{animation: gw-drill-in 0.24s var(--gw-ease)}.gw-mobile-menu.is-back > nav > :not(.gw-mobile-menu__actions){animation: gw-drill-back 0.24s var(--gw-ease)}}@keyframes gw-drill-in{from{opacity: 0;transform: translateX(32px)}}@keyframes gw-drill-back{from{opacity: 0;transform: translateX(-32px)}}.gw-lang{position: relative;flex: none}.gw-header__actions > .gw-lang{display: none}.gw-lang__btn{display: inline-flex;align-items: center;gap: 6px;height: 40px;padding: 0 12px;border: 0;border-radius: var(--gw-radius-action);background: transparent;color: var(--gw-ink-2);font-size: 14px;font-weight: 500;line-height: 1.4;white-space: nowrap}.gw-lang__btn:hover,.gw-lang__btn[aria-expanded="true"]{background: var(--gw-bg-soft);color: var(--gw-ink)}.gw-lang__btn svg{flex: none;width: 18px;height: 18px}.gw-lang__menu{position: absolute;top: calc(100% + 8px);right: 0;z-index: 1;display: grid;gap: 2px;min-width: 200px;margin: 0;padding: 8px;list-style: none;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface);box-shadow: var(--gw-shadow-raised)}.gw-lang__link{display: flex;align-items: center;min-height: 40px;padding: 0 12px;border-radius: var(--gw-radius-action);color: var(--gw-ink);font-size: 14px;font-weight: 500;white-space: nowrap}.gw-lang__link:hover{background: var(--gw-bg-soft)}.gw-mobile-menu .gw-lang__btn{padding: 0 8px 0 0;color: var(--gw-muted);font-size: 16px}.gw-mobile-menu .gw-lang__btn:hover,.gw-mobile-menu .gw-lang__btn[aria-expanded="true"]{background: transparent;color: var(--gw-ink)}.gw-mobile-menu .gw-lang__menu{top: auto;right: auto;bottom: calc(100% + 8px);left: 0}@media (max-width: 768px),(pointer: coarse){.gw-lang__btn,.gw-lang__link{min-height: var(--gw-tap-min)}}@media (min-width: 1081px){.gw-header__actions > .gw-lang{display: block}}.gw-theme-toggle__sun{display: none}:root[data-theme="dark"] .gw-theme-toggle__sun{display: block}:root[data-theme="dark"] .gw-theme-toggle__moon{display: none}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .gw-theme-toggle__sun{display: block}:root:not([data-theme="light"]) .gw-theme-toggle__moon{display: none}}.gw-brand__logo{display: block;flex: none;width: auto;height: 26px}.gw-brand__logo--dark{display: none}:root[data-theme="dark"] .gw-brand__logo--dark{display: block}:root[data-theme="dark"] .gw-brand__logo:has(+ .gw-brand__logo--dark){display: none}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .gw-brand__logo--dark{display: block}:root:not([data-theme="light"]) .gw-brand__logo:has(+ .gw-brand__logo--dark){display: none}}.gw-footer{padding-block: 64px 32px;border-top: 1px solid var(--gw-line);background: transparent;color: var(--gw-ink);font-size: 14px}.gw-footer__grid{display: grid;grid-template-columns: repeat(2,minmax(0,1fr));gap: 32px}.gw-footer__brand p{max-width: 30ch;margin-top: 16px;color: var(--gw-muted);line-height: 22px}.gw-footer__brand .gw-brand{display: flex;min-height: 34px;font-family: var(--gw-font);line-height: 1.6}.gw-footer__brand .gw-brand__mark{width: 34px;height: 34px;border-radius: var(--gw-radius-8)}.gw-footer__heading{margin: 0 0 12px;color: var(--gw-ink);font-family: var(--gw-font);font-size: 13px;font-weight: 600;letter-spacing: 0;line-height: 1.6;text-wrap: balance}.gw-footer__newsletter{margin-top: 24px}.gw-footer__col ul{margin: 0;padding: 0;list-style: none}.gw-footer__col a{display: block;padding-block: 6px;color: var(--gw-muted)}.gw-footer__col a:hover{color: var(--gw-ink)}.gw-footer__col a[aria-current="page"]{color: var(--gw-accent-strong)}.gw-footer__bottom{display: flex;flex-wrap: wrap;align-items: center;justify-content: space-between;gap: 12px 24px;margin-top: 32px;padding-top: 24px;border-top: 1px solid var(--gw-line);color: var(--gw-muted);font-size: 13px}.gw-footer__bottom:first-child{margin-top: 0;padding-top: 0;border-top: 0}.gw-footer__bottom ul{display: flex;flex-wrap: wrap;gap: 16px;margin: 0;padding: 0;list-style: none}.gw-footer__bottom a{display: inline-flex;align-items: center;justify-content: center;color: var(--gw-muted)}.gw-footer__bottom a:hover{color: var(--gw-ink)}@media (max-width: 620px){.gw-footer__grid{gap: 24px 20px}.gw-footer__brand{grid-column: 1 / -1}}@media (min-width: 1081px){.gw-footer__grid{grid-auto-flow: column;grid-template-columns: minmax(0,1.6fr);grid-auto-columns: minmax(0,1fr);gap: 32px 24px}}@media (max-width: 768px),(pointer: coarse){.gw-footer__brand .gw-brand{min-height: var(--gw-tap-min)}.gw-footer__col a{display: flex;align-items: center;min-height: var(--gw-tap-min);padding-block: 0}.gw-footer__bottom a{min-height: var(--gw-tap-min)}.gw-footer__bottom ul:last-child a{min-width: var(--gw-tap-min)}.gw-footer__bottom ul:not(:last-child){gap: 8px 16px}}.gw-footer__ask{margin-top: 24px}.gw-footer__ask > .gw-footer__ask-label{margin: 0;color: var(--gw-muted);font-size: 13px;line-height: 22px}.gw-footer__ask > ul{display: flex;flex-wrap: wrap;gap: 0 16px;margin: 4px 0 0;padding: 0;list-style: none}.gw-footer__ask a{display: block;padding-block: 4px;color: var(--gw-ink);line-height: 20px}.gw-footer__ask a:hover{text-decoration: underline}.gw-footer__ext:empty{display: inline-block;width: 12px;height: 12px;margin-left: 4px;vertical-align: -1px;background: var(--gw-muted);-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3.5 8.5l5-5M4.5 3.5h4v4' fill='none' stroke='%23000' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3.5 8.5l5-5M4.5 3.5h4v4' fill='none' stroke='%23000' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat}.gw-footer__ext:not(:empty){color: var(--gw-muted);font-weight: 400}.gw-footer__fold > summary{list-style: none}.gw-footer__fold > summary::-webkit-details-marker{display: none}.gw-footer__fold .gw-footer__heading{margin: 0}.gw-footer__fold > ul{margin: 0;padding: 0;list-style: none}.gw-footer__col > .gw-footer__fold a{line-height: 20px}@media (min-width: 621px){.gw-footer__fold > summary{display: contents}.gw-footer__col > .gw-footer__fold .gw-footer__heading{margin-bottom: 12px}}@media (min-width: 621px){.gw-footer__fold::details-content{content-visibility: visible}}@media (max-width: 620px){.gw-footer__grid:has(> .gw-footer__col > .gw-footer__fold){grid-template-columns: minmax(0,1fr);row-gap: 0}.gw-footer__grid:has(> .gw-footer__col > .gw-footer__fold) > .gw-footer__brand{padding-bottom: 24px}.gw-footer__col:has(> .gw-footer__fold){border-top: 1px solid var(--gw-line)}.gw-footer__col:has(> .gw-footer__fold):last-child,.gw-footer__family{border-bottom: 1px solid var(--gw-line)}.gw-footer__fold > summary{display: flex;align-items: center;justify-content: space-between;gap: 16px;min-height: 52px;padding: 0;cursor: pointer}.gw-footer__fold > summary::after{content: "";flex: none;width: 8px;height: 8px;margin-right: 4px;border-right: 2px solid var(--gw-muted);border-bottom: 2px solid var(--gw-muted);rotate: 45deg;translate: 0 -2px}.gw-footer__fold[open] > summary::after{rotate: 225deg;translate: 0 2px}.gw-footer__fold > summary:focus-visible{outline: 2px solid var(--gw-accent);outline-offset: 2px;border-radius: var(--gw-radius-6)}.gw-footer__fold > ul{padding-bottom: 12px}.gw-footer__col > .gw-footer__fold a{display: flex;align-items: center;min-height: var(--gw-tap-min)}}@media (min-width: 1081px){.gw-footer__grid:has(> .gw-footer__col > .gw-footer__fold){grid-template-columns: minmax(0,calc((100% - 120px) * 6 / 31))}}.gw-footer__family .gw-footer__heading{color: var(--gw-muted);font-weight: 500}.gw-footer__family .gw-footer__fold > ul{display: grid;grid-template-columns: repeat(2,minmax(0,1fr));gap: 8px}.gw-footer__family .gw-footer__fold > ul > li{display: flex}.gw-footer__family .gw-footer__fold > ul > li > a{flex: 1 1 auto}.gw-footer__family a{display: flex;flex-direction: column;justify-content: center;gap: 2px;min-height: var(--gw-tap-min);padding: 8px 12px 8px 0;border-radius: var(--gw-radius-action);color: var(--gw-ink)}.gw-footer__family a:hover{background: var(--gw-bg-soft)}.gw-footer__family b{font-size: 14px;font-weight: 600;line-height: 20px}.gw-footer__family i{color: var(--gw-muted);font-size: 13px;font-style: normal;line-height: 18px}@media (min-width: 621px){.gw-footer__family{margin-top: 48px;padding-top: 32px;border-top: 1px solid var(--gw-line)}.gw-footer__family .gw-footer__heading{margin-bottom: 12px}.gw-footer__family .gw-footer__fold > ul{grid-template-columns: repeat(4,minmax(0,1fr));gap: 4px 16px}.gw-footer__family a{min-height: 0;padding: 8px 12px}.gw-footer__family + .gw-footer__bottom{margin-top: 32px}}@media (min-width: 621px) and (max-width: 768px){.gw-footer__family a{min-height: var(--gw-tap-min)}}@media (min-width: 1081px){.gw-footer__family .gw-footer__fold > ul{margin-left: -12px}.gw-footer__family{display: flow-root}.gw-footer__family .gw-footer__heading{float: left;width: calc((100% - 120px) * 6 / 31);margin: 8px 0 0}.gw-footer__family .gw-footer__fold > ul{margin-left: calc((100% - 120px) * 6 / 31 + 12px)}}.gw-footer__toggle{position: relative;width: 32px;height: 32px;margin-inline: auto 16px;border: 1px solid var(--gw-line-strong);background: var(--gw-surface)}.gw-footer__toggle::after{content: "";position: absolute;inset: -5px}.gw-footer__toggle svg{width: 18px;height: 18px}.gw-footer__toggle{transition: border-color 0.15s,color 0.15s}.gw-footer__toggle:hover{border-color: var(--gw-ink);background: var(--gw-surface);color: var(--gw-accent)}@media (max-width: 768px),(pointer: coarse){.gw-footer__toggle{width: var(--gw-tap-min);height: var(--gw-tap-min)}}@media (max-width: 620px){.gw-footer__bottom:has(> .gw-footer__toggle){gap: 8px 16px}.gw-footer__bottom:has(> .gw-footer__toggle) > :first-child{flex: 1 1 calc(100% - 64px)}.gw-footer__bottom > .gw-footer__toggle{order: 1;margin: 0}.gw-footer__bottom:has(> .gw-footer__toggle) > ul{order: 2}.gw-footer__family + .gw-footer__bottom,.gw-footer__grid:has(> .gw-footer__col > .gw-footer__fold) + .gw-footer__bottom{margin-top: 24px}}.gw-footer__wordmark{display: flex;align-items: center;justify-content: center;gap: 24px;padding-block: 48px 0;color: color-mix(in srgb,var(--gw-ink) 10%,transparent);font-family: var(--gw-font);font-size: var(--gw-display-wordmark);font-weight: 800;letter-spacing: var(--gw-display-tracking);line-height: 1;white-space: nowrap;user-select: none}.gw-footer__wordmark > svg,.gw-footer__wordmark > img{flex: none;width: clamp(40px,7vw,96px);height: auto}.gw-footer__wordmark > span{min-width: 0;overflow-x: clip}@media (max-width: 640px){.gw-footer__wordmark{gap: 16px}}@media (max-width: 620px){.gw-footer__wordmark{display: none}}@media (max-width: 768px),(pointer: coarse){.gw-footer__ask a{display: flex;align-items: center;min-height: var(--gw-tap-min);padding-block: 0}}@media (forced-colors: active){.gw-footer__ext:empty{forced-color-adjust: none;background: CanvasText}.gw-footer__fold > summary::after{border-color: CanvasText}}.gw-hero{position: relative;isolation: isolate;padding-block: 48px 64px}.gw-hero__wash{position: absolute;inset: 0;z-index: -1;pointer-events: none;background: radial-gradient(640px 460px at 88% -10%,color-mix(in srgb,var(--gw-accent) 16%,transparent),transparent 62%),radial-gradient(560px 480px at 6% 108%,color-mix(in srgb,var(--gw-wash-violet) 12%,transparent),transparent 62%),radial-gradient(420px 320px at 52% 118%,color-mix(in srgb,var(--gw-wash-mint) 10%,transparent),transparent 62%)}.gw-hero h1 .gw-dim{display: block}.gw-hero > .gw-wrap > :is(.gw-window,.gw-figure){margin-top: 48px}.gw-hero--center{text-align: center}.gw-hero--center > .gw-wrap > *{margin-inline: auto}.gw-hero--center .gw-actions{justify-content: center}.gw-hero--compact{padding-block: 40px 48px}.gw-hero--compact h1{font-size: var(--gw-display-h2)}@media (min-width: 768px){.gw-hero{padding-block: 80px 96px}.gw-hero--compact{padding-block: 64px}.gw-hero .gw-lead{font-size: 20px}.gw-hero > .gw-wrap > .gw-window{margin-top: 64px}}@media (max-width: 479px){:is(.gw-hero,.gw-cta) .gw-actions > .gw-btn{flex: 1 1 100%;justify-content: center}}.gw-logos{padding-block: 40px;border-block: 1px solid var(--gw-line)}.gw-logos p{color: var(--gw-muted);font-size: 13px;text-align: center}.gw-logos ul{display: flex;flex-wrap: wrap;align-items: center;justify-content: center;gap: 16px 40px;margin-top: 20px;padding: 0;list-style: none}.gw-logos li{color: var(--gw-muted);font-size: 22px;font-weight: 600;letter-spacing: -0.02em;line-height: 1.2}.gw-logos img{width: auto;height: 28px}.gw-stats{display: grid;grid-template-columns: minmax(0,1fr);gap: 24px;padding: 0;list-style: none}.gw-stats__value{font-size: var(--gw-display-h2);font-weight: 600;letter-spacing: -0.03em;line-height: 1.1;font-variant-numeric: tabular-nums}.gw-stats__label{margin-top: 8px;max-width: 28ch;color: var(--gw-muted);font-size: 14px}.gw-stats__source{margin-top: 8px;color: var(--gw-muted);font-size: 12px}@media (min-width: 480px){.gw-stats{grid-template-columns: repeat(2,minmax(0,1fr))}}@media (min-width: 1080px){.gw-stats{grid-template-columns: none;grid-auto-flow: column;grid-auto-columns: minmax(0,1fr);gap: 0}.gw-stats__item{padding: 4px 24px;border-left: 1px solid var(--gw-line)}.gw-stats__item:first-child{padding-left: 0;border-left: 0}}.gw-features{row-gap: 40px}.gw-feature .gw-icon{width: 40px;height: 40px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-action);background: var(--gw-surface);color: var(--gw-accent)}.gw-split{display: grid;grid-template-columns: minmax(0,1fr);align-items: center;gap: 40px}@media (min-width: 768px){.gw-split{grid-template-columns: repeat(2,minmax(0,1fr))}.gw-split--reverse > :first-child{order: 2}}.gw-split h2{font-size: 30px}@media (min-width: 1080px){.gw-split{gap: 64px}}.gw-showcase .gw-window{max-width: 960px;margin-inline: auto}.gw-showcase .gw-window + *{margin-top: 48px}.gw-steps{display: grid;grid-template-columns: minmax(0,1fr);gap: 32px 24px;padding: 0;list-style: none;counter-reset: gw-step}.gw-steps > li{counter-increment: gw-step}.gw-steps > li::before{content: counter(gw-step,decimal-leading-zero);display: block;margin-bottom: 16px;padding-bottom: 12px;border-bottom: 1px solid var(--gw-line);color: var(--gw-accent-strong);font-size: 13px;font-weight: 600;font-variant-numeric: tabular-nums}.gw-steps h3{font-size: 20px}.gw-steps p{margin-top: 8px;color: var(--gw-muted);font-size: 16px}@media (min-width: 768px){.gw-steps{grid-template-columns: repeat(2,minmax(0,1fr))}}@media (min-width: 1080px){.gw-steps{grid-template-columns: none;grid-auto-flow: column;grid-auto-columns: minmax(0,1fr)}}.gw-quote{max-width: 880px;margin-inline: auto;padding: 40px 24px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-panel);background: var(--gw-surface);text-align: center}.gw-quote::before{content: "";display: block;width: 32px;height: 24px;margin: 0 auto 24px;background: var(--gw-accent);-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 24'%3E%3Cpath d='M0 24V14C0 6 4 1 12 0l1 4c-4 1-6 4-6 8h5v12zm19 0V14c0-8 4-13 12-14l1 4c-4 1-6 4-6 8h5v12z'/%3E%3C/svg%3E") center / contain no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 24'%3E%3Cpath d='M0 24V14C0 6 4 1 12 0l1 4c-4 1-6 4-6 8h5v12zm19 0V14c0-8 4-13 12-14l1 4c-4 1-6 4-6 8h5v12z'/%3E%3C/svg%3E") center / contain no-repeat}.gw-quote blockquote{font-size: 24px;font-weight: 500;line-height: 1.4;letter-spacing: -0.01em;text-wrap: balance}.gw-quote figcaption{margin-top: 24px;color: var(--gw-muted);font-size: 14px}.gw-quote figcaption b{color: var(--gw-ink)}.gw-quote figcaption img{width: 40px;height: 40px;margin: 0 auto 12px;border-radius: var(--gw-radius-chip)}@media (min-width: 768px){.gw-quote{padding: 64px}.gw-quote blockquote{font-size: 30px}}.gw-pricing{display: grid;grid-template-columns: repeat(auto-fit,minmax(min(100%,260px),1fr));align-items: start;gap: 16px}.gw-plan{display: flex;flex-direction: column;padding: 24px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-panel);background: var(--gw-surface);box-shadow: var(--gw-shadow)}.gw-plan--featured{border-color: var(--gw-accent)}.gw-plan{position: relative}.gw-plan > .gw-badge{align-self: flex-start}.gw-plan > .gw-badge:first-child{position: absolute;top: -12px;left: 24px}.gw-plan > .gw-badge:first-child + *{margin-top: 0}.gw-plan h3{font-size: 20px}:where(.gw-plan) p{color: var(--gw-muted);font-size: 14px}.gw-plan__price{display: flex;flex-wrap: wrap;align-items: baseline;gap: 6px;color: var(--gw-ink);font-size: var(--gw-display-h2);font-weight: 600;letter-spacing: -0.03em;line-height: 1.1;font-variant-numeric: tabular-nums}.gw-plan__price small{color: var(--gw-muted);font-size: 14px;font-weight: 500;letter-spacing: 0}.gw-plan .gw-list--check{font-size: 14px}@media (min-width: 768px){.gw-plan{padding: 32px}.gw-plan > .gw-badge:first-child{left: 32px}}.gw-cta{max-width: 780px;margin-inline: auto;text-align: center}.gw-cta .gw-lead{margin-inline: auto}.gw-cta .gw-actions{justify-content: center}.gw-prose{max-width: 68ch;min-width: 0;color: var(--gw-ink);font-size: var(--gw-body-size);line-height: var(--gw-body-leading);overflow-wrap: break-word}.gw-prose--sm{font-size: 16px}:where(.gw-prose) > * + *{margin-top: 20px}:where(.gw-prose--sm) > * + *{margin-top: 16px}:where(.gw-prose) > * + :where(figure,img,video,pre,table,hr,.gw-table,.gw-window,.gw-prose__table,.gw-callout),:where(.gw-prose) > :where(figure,img,video,pre,table,hr,.gw-table,.gw-window,.gw-prose__table,.gw-callout) + *{margin-top: 32px}:where(.gw-prose) > * + h2{margin-top: 48px}:where(.gw-prose) > * + h3{margin-top: 40px}:where(.gw-prose) > * + h4{margin-top: 32px}:where(.gw-prose--sm) > * + h2{margin-top: 40px}:where(.gw-prose--sm) > * + h3{margin-top: 32px}:where(.gw-prose--sm) > * + h4{margin-top: 24px}:where(.gw-prose) > h1 + *{margin-top: 24px}:where(.gw-prose) > :is(h2,h3,h4) + *{margin-top: 12px}:where(.gw-prose) > :is(h1,h2,h3,h4){color: var(--gw-ink);font-weight: var(--gw-heading-weight);letter-spacing: var(--gw-heading-tracking);line-height: 1.25}:where(.gw-prose) > h1{font-size: var(--gw-display-h2);font-weight: var(--gw-display-weight);letter-spacing: var(--gw-display-tracking);line-height: var(--gw-heading-leading)}:where(.gw-prose) > h2{font-size: 30px;line-height: 1.2}:where(.gw-prose) > h3{font-size: 24px}:where(.gw-prose) > h4{font-size: 20px}:where(.gw-prose--sm) > h2{font-size: 24px}:where(.gw-prose--sm) > h3{font-size: 20px}:where(.gw-prose--sm) > h4{font-size: 18px}:where(.gw-prose :is(ul,ol):not([class])){padding-left: 24px}:where(.gw-prose ul:not([class])){list-style: disc}:where(.gw-prose ol:not([class])){list-style: decimal}:where(.gw-prose :is(ul,ol):not([class]) > li + li),:where(.gw-prose :is(ul,ol):not([class]) > li > * + *),:where(.gw-prose :is(ul,ol):not([class]) > li > :is(ul,ol)){margin-top: 8px}:where(.gw-prose :is(ul,ol):not([class]) > li)::marker{color: var(--gw-muted);font-variant-numeric: tabular-nums}:where(.gw-prose) > blockquote{padding-left: 20px;border-left: 3px solid var(--gw-line-strong);color: var(--gw-muted)}:where(.gw-prose) > blockquote > * + *{margin-top: 12px}:where(.gw-prose) > hr{height: 0;border: 0;border-top: 1px solid var(--gw-line)}:where(.gw-prose) :is(sup,sub){line-height: 0}:where(.gw-prose) :is(pre,code,kbd,samp){font-family: var(--gw-font-mono)}:where(.gw-prose) code{padding: 2px 6px;border-radius: var(--gw-radius-6);background: color-mix(in srgb,var(--gw-ink) 8%,transparent);color: var(--gw-ink);font-size: 16px;overflow-wrap: anywhere;-webkit-box-decoration-break: clone;box-decoration-break: clone}:where(.gw-prose--sm) code{font-size: 14px}:where(.gw-prose) :is(h1,h2,h3,h4) code{font-size: inherit}:where(.gw-prose) figcaption code{font-size: 13px}:where(.gw-prose) :is(th,td) code{font-size: 13px;overflow-wrap: normal;white-space: nowrap}:where(.gw-prose) pre{overflow-x: auto;padding: 16px 20px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-bg-soft);color: var(--gw-ink);font-size: 14px;line-height: 1.6;tab-size: 2}:where(.gw-prose) pre code{padding: 0;border-radius: var(--gw-radius-0);background: none;font-size: inherit;overflow-wrap: normal}:where(.gw-prose) > :is(img,video),:where(.gw-prose) > :is(p,figure) > :is(img,video){border-radius: var(--gw-radius-card)}:where(.gw-prose) figcaption{margin-top: 12px;color: var(--gw-muted);font-size: 14px;line-height: 1.5}:where(.gw-prose) > table:where(:not(.is-wrapped)),:where(.gw-prose) > :where(.gw-prose__table){width: max-content;max-width: 100%;overflow-x: auto;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface);-webkit-overflow-scrolling: touch}:where(.gw-prose) > table:where(:not(.is-wrapped)){display: block}:where(.gw-prose) > table,:where(.gw-prose) > :where(.gw-prose__table) > table{border-collapse: collapse;font-size: 14px;line-height: 1.5}:where(.gw-prose) > table :is(th,td),:where(.gw-prose) > :where(.gw-prose__table) > table :is(th,td){padding: 12px 16px;border-bottom: 1px solid var(--gw-line);text-align: left;vertical-align: top}:where(.gw-prose) > table thead th,:where(.gw-prose) > :where(.gw-prose__table) > table thead th{background: var(--gw-bg-soft);color: var(--gw-ink);font-size: 13px;font-weight: 600;white-space: nowrap}:where(.gw-prose) > table tbody th,:where(.gw-prose) > :where(.gw-prose__table) > table tbody th{font-weight: 500}:where(.gw-prose) > table td,:where(.gw-prose) > :where(.gw-prose__table) > table td{color: var(--gw-ink-2);font-variant-numeric: tabular-nums}:where(.gw-prose) > table tbody tr:last-child > *,:where(.gw-prose) > :where(.gw-prose__table) > table tbody tr:last-child > *{border-bottom: 0}:where(.gw-prose) > table caption,:where(.gw-prose) > :where(.gw-prose__table) > table caption{padding: 12px 16px;color: var(--gw-muted);font-size: 13px;text-align: left}@media (max-width: 767px){:where(.gw-prose) > table td,:where(.gw-prose) > :where(.gw-prose__table) > table td{min-width: 160px}}.gw-breadcrumbs{color: var(--gw-muted);font-size: 13px;line-height: 1.5}.gw-breadcrumbs > ol{display: flex;flex-wrap: wrap;align-items: center;gap: 0 8px;margin: 0;padding: 0;list-style: none}.gw-breadcrumbs li{display: flex;align-items: center;gap: 8px;min-width: 0;max-width: 100%}.gw-breadcrumbs li + li::before{content: "";flex: none;width: 12px;height: 12px;background: currentColor;opacity: 0.6;-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 6l6 6-6 6' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 6l6 6-6 6' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat}.gw-breadcrumbs a{display: inline-flex;align-items: center;min-height: 24px;color: var(--gw-muted)}.gw-breadcrumbs a:hover{color: var(--gw-ink);text-decoration: underline;text-underline-offset: 4px}.gw-breadcrumbs [aria-current="page"]{display: block;min-width: 0;overflow: hidden;color: var(--gw-ink);font-weight: 500;line-height: 24px;text-overflow: ellipsis;white-space: nowrap}.gw-article-meta{display: flex;flex-wrap: wrap;align-items: center;row-gap: 4px;margin-inline-start: -16px;clip-path: inset(-8px -8px -8px 12px);color: var(--gw-muted);font-size: 14px;line-height: 24px}.gw-article-meta > *::before{content: "";display: inline-block;width: 4px;height: 4px;margin-inline: 6px;border-radius: var(--gw-radius-chip);background: var(--gw-line-strong);vertical-align: middle}.gw-article-meta a{display: inline-block;color: var(--gw-accent-strong);font-weight: 500;text-decoration: underline;text-decoration-thickness: 1px;text-underline-offset: 4px;text-decoration-color: color-mix(in srgb,currentColor 40%,transparent)}.gw-article-meta a:hover{text-decoration-color: currentColor}.gw-article-meta__avatar{display: inline-block;width: 24px;height: 24px;margin-inline-end: 8px;border-radius: var(--gw-radius-chip);object-fit: cover;vertical-align: top}.gw-article{padding-block: 32px 64px}.gw-article__head > * + *{margin-top: 16px}.gw-article__head h1{font-size: var(--gw-display-h2)}.gw-article__hero{margin-top: 32px}.gw-article__hero img{width: 100%;border-radius: var(--gw-radius-card);background: var(--gw-bg-soft)}.gw-article__hero figcaption{margin-top: 12px;color: var(--gw-muted);font-size: 14px;line-height: 1.5}.gw-article > .gw-toc{margin-top: 32px}.gw-article > .gw-prose{margin-top: 40px}@media (min-width: 768px){.gw-article{padding-block: 48px 96px}.gw-article__hero{margin-top: 40px}}@media (min-width: 1080px){.gw-article{display: grid;grid-template-columns: minmax(0,68ch) minmax(200px,240px);grid-template-rows: auto auto 1fr;justify-content: space-between;column-gap: 64px}.gw-article > *{grid-column: 1}.gw-article > .gw-article__head{grid-row: 1}.gw-article > .gw-article__hero{grid-row: 2}.gw-article > .gw-prose{grid-row: 3}.gw-article > .gw-toc{grid-column: 2;grid-row: 2 / 4;margin-top: 40px}}.gw-toc{font-size: 14px;line-height: 1.45}.gw-toc > details{border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface)}.gw-toc summary{display: flex;align-items: center;justify-content: space-between;gap: 12px;min-height: var(--gw-tap-min);padding: 8px 16px;color: var(--gw-ink);font-weight: 600;list-style: none;cursor: pointer}.gw-toc summary::-webkit-details-marker{display: none}.gw-toc summary::after{content: "";flex: none;width: 12px;height: 12px;background: currentColor;opacity: 0.6;-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' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat;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' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat;transition: transform 0.18s var(--gw-ease)}.gw-toc details[open] > summary::after{transform: rotate(180deg)}.gw-toc ol{margin: 0;padding: 0;list-style: none}.gw-toc details > ol{margin: 0 16px 16px;background: linear-gradient(var(--gw-line),var(--gw-line)) 0 0 / 1px 100% no-repeat}.gw-toc a{display: block;padding: 6px 8px 6px 16px;border-left: 2px solid transparent;color: var(--gw-muted)}.gw-toc ol ol a{padding-left: 32px}.gw-toc a:hover{color: var(--gw-ink)}.gw-toc a:focus-visible{outline-offset: -2px}.gw-toc a[aria-current="true"]{border-left-color: var(--gw-accent);color: var(--gw-ink)}@media (min-width: 1080px){.gw-toc{position: sticky;top: calc(var(--gw-header-height) + 32px);align-self: start}.gw-toc > details{border: 0;border-radius: var(--gw-radius-0);background: transparent}.gw-toc summary{min-height: 32px;padding: 0;color: var(--gw-muted);font-size: 13px}.gw-toc details > ol{max-height: calc(100vh - var(--gw-header-height) - 120px);margin: 8px 0 0;overflow-y: auto;overscroll-behavior: contain}:root:has(.gw-header--float) .gw-toc{top: calc(var(--gw-header-height) + var(--gw-header-gap) + 32px)}:root:has(.gw-header--float) .gw-toc details > ol{max-height: calc(100vh - var(--gw-header-height) - var(--gw-header-gap) - 120px)}}@media (prefers-reduced-motion: no-preference){:root:has(.gw-toc){scroll-behavior: smooth}}.gw-callout{padding: 16px 20px;border-radius: var(--gw-radius-card);background: var(--gw-accent-soft);color: var(--gw-ink);font-size: 16px;line-height: 1.6}.gw-callout > * + *{margin-top: 8px}.gw-callout--tip{background: var(--gw-success-soft)}.gw-callout--warning{background: var(--gw-warning-soft)}.gw-callout__label{display: flex;align-items: center;gap: 8px;font-size: 14px;font-weight: 600;line-height: 1.5}.gw-callout__label::before{content: "";flex: none;width: 16px;height: 16px;background: var(--gw-accent);-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v5M12 7.5v.5'/%3E%3C/svg%3E") center / 16px no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v5M12 7.5v.5'/%3E%3C/svg%3E") center / 16px no-repeat}.gw-callout--tip > .gw-callout__label::before{background: var(--gw-success);-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21h4M12 3a6 6 0 0 0-3.6 10.8c.7.5 1.1 1.3 1.1 2.2h5c0-.9.4-1.7 1.1-2.2A6 6 0 0 0 12 3z'/%3E%3C/svg%3E");mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21h4M12 3a6 6 0 0 0-3.6 10.8c.7.5 1.1 1.3 1.1 2.2h5c0-.9.4-1.7 1.1-2.2A6 6 0 0 0 12 3z'/%3E%3C/svg%3E")}.gw-callout--warning > .gw-callout__label::before{background: var(--gw-warning);-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5 2.8 19.5h18.4z'/%3E%3Cpath d='M12 10v4M12 16.8v.2'/%3E%3C/svg%3E");mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5 2.8 19.5h18.4z'/%3E%3Cpath d='M12 10v4M12 16.8v.2'/%3E%3C/svg%3E")}.gw-post-list{display: grid;grid-template-columns: minmax(0,1fr);gap: 16px;padding: 0;list-style: none}.gw-post-list > li{display: flex;min-width: 0}.gw-post{position: relative;display: flex;flex: 1 1 auto;flex-direction: column;min-width: 0}.gw-post:hover{border-color: var(--gw-line-strong)}.gw-post > .gw-card__media + *{margin-top: 20px}.gw-post > .gw-label + .gw-post__title{margin-top: 8px}.gw-post__title{font-size: 20px;line-height: 1.3}.gw-post__title a{color: var(--gw-ink)}.gw-post__title a::after{content: "";position: absolute;inset: 0;z-index: 1;border-radius: var(--gw-radius-card)}.gw-post:hover .gw-post__title a{text-decoration: underline;text-decoration-thickness: 1px;text-underline-offset: 4px}.gw-post__title a:focus-visible{outline: 0}.gw-post__title a:focus-visible::after{outline: 2px solid var(--gw-accent);outline-offset: 2px}.gw-post__title + p{margin-top: 8px}.gw-post > .gw-article-meta{margin-top: auto;padding-top: 16px}@media (min-width: 768px){.gw-post-list{gap: 24px}.gw-post-list:not(.gw-post-list--compact){grid-template-columns: repeat(2,minmax(0,1fr))}}@media (min-width: 1080px){.gw-post-list:not(.gw-post-list--compact){grid-template-columns: repeat(3,minmax(0,1fr))}}.gw-post-list--compact{gap: 0;border-top: 1px solid var(--gw-line)}.gw-post-list--compact .gw-post{padding: 20px 0;border: 0;border-bottom: 1px solid var(--gw-line);border-radius: var(--gw-radius-0);background: transparent;box-shadow: none}.gw-post-list--compact .gw-post__title a::after{border-radius: var(--gw-radius-0)}.gw-post-list--compact .gw-card__media{display: none}.gw-post-list--compact .gw-post > .gw-article-meta{padding-top: 8px}.gw-pagination{display: flex;flex-wrap: wrap;align-items: center;justify-content: space-between;gap: 12px 16px}* + .gw-pagination{margin-top: 40px}.gw-pagination__status{color: var(--gw-muted);font-size: 14px}.gw-pagination > [rel="next"]{margin-inline-start: auto}.gw-field{display: grid;gap: 8px;min-width: 0}.gw-field__label{display: block;color: var(--gw-ink);font-size: 14px;font-weight: 600;line-height: 1.5}:is(.gw-field,.gw-choices) > :is(.gw-field__hint,.gw-field__error){margin: 0;font-size: 14px;font-weight: 400;line-height: 1.5}:is(.gw-field,.gw-choices) > .gw-field__hint{color: var(--gw-muted)}:is(.gw-field,.gw-choices) > .gw-field__error{display: flex;gap: 6px;color: var(--gw-danger);font-weight: 500}:is(.gw-field,.gw-choices) > .gw-field__error:empty{display: none}.gw-field__error::before{content: "";flex: none;width: 16px;height: 16px;margin-top: 2px;margin-top: calc((1lh - 16px) / 2);background: currentColor;-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 4h1.5v5.5h-1.5V6Zm.75 9a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z'/%3E%3C/svg%3E") center / 16px no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 4h1.5v5.5h-1.5V6Zm.75 9a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z'/%3E%3C/svg%3E") center / 16px no-repeat}.gw-input,.gw-select,.gw-textarea{display: block;width: 100%;min-width: 0;height: var(--gw-button-height);margin: 0;padding: 0 12px;border: 1px solid var(--gw-line-control);border-radius: var(--gw-radius-action);background-color: var(--gw-surface);color: var(--gw-ink);font-size: 16px;line-height: 1.5;-webkit-appearance: none;appearance: none}:is(.gw-input,.gw-textarea)::placeholder{color: var(--gw-muted);opacity: 1}.gw-select{padding-right: 40px;background-image: linear-gradient(45deg,transparent 50%,var(--gw-muted) 50%),linear-gradient(135deg,var(--gw-muted) 50%,transparent 50%);background-position: calc(100% - 20px) 50%,calc(100% - 15px) 50%;background-size: 5px 5px;background-repeat: no-repeat;cursor: pointer}.gw-textarea{height: auto;min-height: 96px;padding-block: 8px;resize: vertical}:is(.gw-input,.gw-select,.gw-textarea):hover{border-color: var(--gw-muted)}:is(.gw-input,.gw-select,.gw-textarea):focus-visible{border-color: var(--gw-ink);outline: 2px solid var(--gw-accent);outline-offset: 1px}:is(.gw-input,.gw-textarea)[readonly]{border-color: var(--gw-line-strong);background-color: var(--gw-bg-soft);cursor: default}:is(.gw-input,.gw-select,.gw-textarea)[aria-invalid="true"]{border-color: var(--gw-danger);background-color: var(--gw-danger-soft)}:is(.gw-input,.gw-select,.gw-textarea):disabled{opacity: 0.48;cursor: not-allowed}.gw-choices{min-width: 0;margin: 0;padding: 0;border: 0}.gw-choices > legend{margin-bottom: 4px;padding: 0}.gw-choices > :is(.gw-check,.gw-radio){display: flex}.gw-choices > :is(.gw-field__hint,.gw-field__error){margin-top: 4px}.gw-check,.gw-radio{display: inline-flex;align-items: flex-start;gap: 8px;max-width: 100%;padding-block: 4px;color: var(--gw-ink);font-size: 16px;line-height: 1.5;overflow-wrap: break-word;cursor: pointer}:is(.gw-check,.gw-radio) > :not(input){min-width: 0}:is(.gw-check,.gw-radio) > input{display: inline-grid;flex: none;place-content: center;width: 18px;height: 18px;margin: 3px 0 0;border: 1px solid var(--gw-line-control);border-radius: var(--gw-radius-4);background: var(--gw-surface);-webkit-appearance: none;appearance: none;cursor: inherit}.gw-radio > input{border-radius: var(--gw-radius-chip)}:is(.gw-check,.gw-radio):hover > input{border-color: var(--gw-muted)}.gw-check > input:checked{border-color: var(--gw-accent);background: var(--gw-accent)}.gw-check > input:checked::before{content: "";width: 14px;height: 14px;background: var(--gw-on-accent);-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.4l2.9 2.8L12.5 5' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 14px no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.4l2.9 2.8L12.5 5' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 14px no-repeat}.gw-radio > input:checked{border: 5px solid var(--gw-accent)}:is(.gw-check,.gw-radio) > input[aria-invalid="true"]:not(:checked){border-color: var(--gw-danger)}:is(.gw-check,.gw-radio):has(> input:disabled){opacity: 0.48;cursor: not-allowed}.gw-check__count{flex: none;min-width: 24px;margin: 1px 0 0 auto;padding: 2px 8px;border-radius: var(--gw-radius-chip);background: color-mix(in srgb,var(--gw-ink) 8%,transparent);color: var(--gw-ink-2);font-size: 12px;font-weight: 500;text-align: center;font-variant-numeric: tabular-nums}.gw-form-inline{display: flex;flex-wrap: wrap;gap: 8px}.gw-form-inline > :not(.gw-btn){flex: 999 1 160px;min-width: 0}.gw-form-inline > .gw-btn{flex: 1 0 auto;justify-content: center}@media (max-width: 479px){.gw-form-inline > :not(.gw-btn){flex-basis: 100%}}.gw-form{display: grid;gap: 24px;max-width: 560px}.gw-form > *{margin: 0}.gw-form > :is(.gw-actions,.gw-btn){margin-top: 8px}.gw-form > .gw-btn{justify-self: start}@media (max-width: 768px),(pointer: coarse){.gw-input,.gw-select{height: var(--gw-tap-min)}.gw-check,.gw-radio{padding-block: 10px}}.gw-stars{display: inline-block;flex: none;width: 80px;height: 16px;vertical-align: middle;background: linear-gradient(90deg,var(--gw-ink) calc(clamp(0,var(--gw-stars,0),5) * 20%),var(--gw-line-strong) 0);-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 1.6L9.8 6.4L14.8 6.6L10.9 9.7L12.2 14.6L8 11.8L3.8 14.6L5.1 9.7L1.2 6.6L6.2 6.4Z' stroke='%23000' stroke-width='1' stroke-linejoin='round'/%3E%3C/svg%3E") 0 0 / 16px 16px repeat-x;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 1.6L9.8 6.4L14.8 6.6L10.9 9.7L12.2 14.6L8 11.8L3.8 14.6L5.1 9.7L1.2 6.6L6.2 6.4Z' stroke='%23000' stroke-width='1' stroke-linejoin='round'/%3E%3C/svg%3E") 0 0 / 16px 16px repeat-x}@media (forced-colors: active){.gw-stars{forced-color-adjust: none;background: linear-gradient(90deg,CanvasText calc(clamp(0,var(--gw-stars,0),5) * 20%),GrayText 0)}}.gw-testimonials{display: grid;grid-template-columns: minmax(0,1fr);gap: 16px;padding: 0;list-style: none}.gw-testimonials > li{display: flex;min-width: 0}@media (min-width: 768px){.gw-testimonials{grid-template-columns: repeat(2,minmax(0,1fr));gap: 24px}}@media (min-width: 1080px){.gw-testimonials{grid-template-columns: repeat(3,minmax(0,1fr))}}.gw-testimonial{display: flex;flex-direction: column;gap: 16px;width: 100%;margin: 0}.gw-testimonial > *{margin: 0}.gw-testimonial__quote,.gw-testimonial__quote p{color: var(--gw-ink);font-size: 16px;line-height: 1.6}.gw-testimonial__quote > * + *{margin-top: 8px}.gw-testimonial > .gw-testimonial__by{display: flex;align-items: center;gap: 12px;margin-top: auto;color: var(--gw-muted);font-size: 14px;line-height: 1.5}.gw-testimonial__by b{display: block;color: var(--gw-ink);font-weight: 600}.gw-testimonial__by > :not(img){min-width: 0}.gw-testimonial__avatar{flex: none;width: 40px;height: 40px;border-radius: var(--gw-radius-chip);background: var(--gw-bg-soft);object-fit: cover}.gw-rating-badge{display: inline-flex;align-items: center;gap: 12px;max-width: 100%;padding: 8px 16px 8px 8px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-card);background: var(--gw-surface);color: var(--gw-ink);font-size: 13px;line-height: 1.4;vertical-align: middle}a.gw-rating-badge:hover{border-color: var(--gw-line-strong)}.gw-rating-badge__icon{display: inline-flex;flex: none;align-items: center;justify-content: center;width: 40px;height: 40px;border-radius: var(--gw-radius-action);background: var(--gw-bg-soft);color: var(--gw-ink)}.gw-rating-badge__icon :is(svg,img){width: 24px;height: 24px}.gw-rating-badge__body{display: grid;gap: 2px;min-width: 0}.gw-rating-badge__score{display: flex;align-items: center;gap: 8px;color: var(--gw-ink);font-size: 16px;font-weight: 600;font-variant-numeric: tabular-nums}.gw-rating-badge__count{color: var(--gw-muted)}@property --gw-spot-r{syntax: "<length>";inherits: true;initial-value: 0px}@media (hover: hover) and (pointer: fine){[data-gw-ready~="spot"]{--gw-spot-r: 0px}[data-gw-ready~="spot"]:is(:hover,:focus-visible){--gw-spot-r: var(--gw-spot-radius);--gw-muted: var(--gw-ink-2)}[data-gw-ready~="spot"]:has(:focus-visible){--gw-spot-r: var(--gw-spot-radius);--gw-muted: var(--gw-ink-2)}.gw-btn[data-gw-ready~="spot"]:is(:hover,:focus-visible){--gw-spot-r: var(--gw-spot-radius-action)}:where(.gw-spot){position: relative;isolation: isolate}.gw-spot:not([aria-busy="true"])::before{--gw-spot-mix: var(--gw-spot-strength);content: "";position: absolute;inset: 0;z-index: -1;border-radius: inherit;background: radial-gradient(circle var(--gw-spot-r) at var(--gw-spot-x,50%) var(--gw-spot-y,50%),color-mix(in srgb,var(--gw-accent) var(--gw-spot-mix),transparent),transparent 70%);pointer-events: none;transition: --gw-spot-r var(--gw-spot-ms) var(--gw-spot-ease)}.gw-btn.gw-spot:not([aria-busy="true"])::before{--gw-spot-mix: var(--gw-spot-strength-action)}.gw-mega__art.gw-spot:not([aria-busy="true"])::before{--gw-spot-mix: var(--gw-spot-strength-stage)}:where([data-gw-ready~="spot"] *){transition: color 0s linear var(--gw-spot-ms)}:where([data-gw-ready~="spot"]:is(:hover,:focus-visible) *){transition-delay: 0s}:where([data-gw-ready~="spot"]:has(:focus-visible) *){transition-delay: 0s}:is([data-gw-ready~="spot"]:focus-visible,[data-gw-ready~="spot"]:focus-visible *).gw-spot::before{--gw-spot-x: 50%;--gw-spot-y: 50%}:is([data-gw-ready~="spot"]:has(:focus-visible),[data-gw-ready~="spot"]:has(:focus-visible) *).gw-spot::before{--gw-spot-x: 50%;--gw-spot-y: 50%}}@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: reduce){.gw-spot:not([aria-busy="true"])::before{--gw-spot-x: 50%;--gw-spot-y: 50%;transition: none}:where([data-gw-ready~="spot"] *){transition: none}}
|