@gemboss/website-ui 0.4.0 → 0.5.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 +16 -5
- package/CHANGELOG.md +62 -0
- package/README.md +8 -7
- package/bin/lib/check.mjs +47 -0
- package/css/article.css +237 -0
- package/css/components.css +15 -0
- package/css/prose.css +29 -16
- package/css/tokens.css +5 -0
- package/demo/article.html +359 -0
- package/demo/assets/article-hero.svg +1 -0
- package/demo/assets/avatar-gemboss.svg +1 -0
- package/demo/assets/post-headless.svg +1 -0
- package/demo/assets/post-motion.svg +1 -0
- package/demo/assets/post-output.svg +1 -0
- package/demo/assets/post-speed.svg +1 -0
- package/demo/assets/post-theme.svg +1 -0
- package/demo/assets/post-voice.svg +1 -0
- package/demo/blog.html +314 -0
- package/demo/index.html +1 -0
- package/docs/components.md +191 -7
- package/docs/markup-contract.md +58 -4
- package/js/website.js +68 -8
- package/js/website.mjs +80 -7
- package/package.json +1 -1
- package/skill/SKILL.md +3 -0
- package/system.json +3 -1
- package/templates/sections/article.html +93 -0
- package/templates/sections/post-list.html +65 -0
- package/website.css +288 -17
- package/website.min.css +1 -1
package/website.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @gemboss/website-ui 0.
|
|
1
|
+
/*! @gemboss/website-ui 0.5.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;
|
|
@@ -100,6 +100,7 @@
|
|
|
100
100
|
--gw-success: #007f5f;
|
|
101
101
|
--gw-success-soft: #e3f1df;
|
|
102
102
|
--gw-warning: #9a6700;
|
|
103
|
+
--gw-warning-soft: #fbf1dc;
|
|
103
104
|
--gw-night: #0c0e14;
|
|
104
105
|
--gw-night-2: #141722;
|
|
105
106
|
--gw-on-night: #e3e4e8;
|
|
@@ -126,6 +127,7 @@
|
|
|
126
127
|
--gw-success: #34c38f;
|
|
127
128
|
--gw-success-soft: #132a22;
|
|
128
129
|
--gw-warning: #e0b341;
|
|
130
|
+
--gw-warning-soft: #2b2410;
|
|
129
131
|
--gw-night: #0a0b10;
|
|
130
132
|
--gw-night-2: #12141c;
|
|
131
133
|
--gw-on-night: #e3e4e8;
|
|
@@ -152,6 +154,7 @@
|
|
|
152
154
|
--gw-success: #34c38f;
|
|
153
155
|
--gw-success-soft: #132a22;
|
|
154
156
|
--gw-warning: #e0b341;
|
|
157
|
+
--gw-warning-soft: #2b2410;
|
|
155
158
|
--gw-night: #0a0b10;
|
|
156
159
|
--gw-night-2: #12141c;
|
|
157
160
|
--gw-on-night: #e3e4e8;
|
|
@@ -177,6 +180,7 @@
|
|
|
177
180
|
--gw-success: #007f5f;
|
|
178
181
|
--gw-success-soft: #e3f1df;
|
|
179
182
|
--gw-warning: #9a6700;
|
|
183
|
+
--gw-warning-soft: #fbf1dc;
|
|
180
184
|
--gw-night: #0c0e14;
|
|
181
185
|
--gw-night-2: #141722;
|
|
182
186
|
--gw-on-night: #e3e4e8;
|
|
@@ -203,6 +207,7 @@
|
|
|
203
207
|
--gw-success: #34c38f;
|
|
204
208
|
--gw-success-soft: #132a22;
|
|
205
209
|
--gw-warning: #e0b341;
|
|
210
|
+
--gw-warning-soft: #2b2410;
|
|
206
211
|
}
|
|
207
212
|
/* action profile "accent": data-gw-action="accent" on <html>. In night bands too, where the dark palette applies. */
|
|
208
213
|
:root[data-gw-action="accent"],
|
|
@@ -574,6 +579,21 @@ h5, h6 { font-size: 16px; font-weight: 600; letter-spacing: 0; }
|
|
|
574
579
|
.gw-card--soft { background: var(--gw-bg-soft); box-shadow: none; }
|
|
575
580
|
.gw-card--link { display: block; color: inherit; }
|
|
576
581
|
.gw-card--link:hover { border-color: var(--gw-line-strong); }
|
|
582
|
+
/* a card's picture (0.5.0, gap #33): the first child of the card, edge to edge across its top, its corners the card's
|
|
583
|
+
radius inside the hairline. An aspect-ratio box (16:9; --wide 1.91:1, the share-image shape, so a post's own
|
|
584
|
+
1200 x 630 image fits uncut; --square 1:1) that the image covers, on the soft ground while it loads. */
|
|
585
|
+
.gw-card__media {
|
|
586
|
+
overflow: hidden;
|
|
587
|
+
aspect-ratio: 16 / 9;
|
|
588
|
+
margin: -24px -24px 0;
|
|
589
|
+
border-top-left-radius: calc(var(--gw-radius-card) - 1px);
|
|
590
|
+
border-top-right-radius: calc(var(--gw-radius-card) - 1px);
|
|
591
|
+
background: var(--gw-bg-soft);
|
|
592
|
+
}
|
|
593
|
+
.gw-card__media--wide { aspect-ratio: 1200 / 630; }
|
|
594
|
+
.gw-card__media--square { aspect-ratio: 1 / 1; }
|
|
595
|
+
.gw-card__media :is(img, video) { width: 100%; height: 100%; object-fit: cover; }
|
|
596
|
+
@media (min-width: 768px) { .gw-card__media { margin: -32px -32px 0; } }
|
|
577
597
|
:where(.gw-card, .gw-feature, .gw-plan) > :is(h3, h4) + p { margin-top: 8px; }
|
|
578
598
|
:where(.gw-card, .gw-feature) h3 { font-size: 20px; }
|
|
579
599
|
:where(.gw-card, .gw-feature) p { font-size: 16px; color: var(--gw-muted); }
|
|
@@ -1224,8 +1244,8 @@ html.is-menu-open .gw-header { position: fixed; top: 0; left: 0; right: 0; }
|
|
|
1224
1244
|
/* the flow: each block 20px below the one before it (16px in --sm); more air around headings and large blocks */
|
|
1225
1245
|
:where(.gw-prose) > * + * { margin-top: 20px; }
|
|
1226
1246
|
:where(.gw-prose--sm) > * + * { margin-top: 16px; }
|
|
1227
|
-
:where(.gw-prose) > * + :where(figure, img, video, pre, table, hr, .gw-table, .gw-window),
|
|
1228
|
-
:where(.gw-prose) > :where(figure, img, video, pre, table, hr, .gw-table, .gw-window) + * { margin-top: 32px; }
|
|
1247
|
+
:where(.gw-prose) > * + :where(figure, img, video, pre, table, hr, .gw-table, .gw-window, .gw-prose__table, .gw-callout),
|
|
1248
|
+
:where(.gw-prose) > :where(figure, img, video, pre, table, hr, .gw-table, .gw-window, .gw-prose__table, .gw-callout) + * { margin-top: 32px; }
|
|
1229
1249
|
:where(.gw-prose) > * + h2 { margin-top: 48px; }
|
|
1230
1250
|
:where(.gw-prose) > * + h3 { margin-top: 40px; }
|
|
1231
1251
|
:where(.gw-prose) > * + h4 { margin-top: 32px; }
|
|
@@ -1303,26 +1323,277 @@ html.is-menu-open .gw-header { position: fixed; top: 0; left: 0; right: 0; }
|
|
|
1303
1323
|
:where(.gw-prose) > :is(p, figure) > :is(img, video) { border-radius: var(--gw-radius-card); }
|
|
1304
1324
|
:where(.gw-prose) figcaption { margin-top: 12px; color: var(--gw-muted); font-size: 14px; line-height: 1.5; }
|
|
1305
1325
|
|
|
1306
|
-
/* a table straight from
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1326
|
+
/* a table straight from the CMS or markdown (gap #63, 0.5.0). website.js puts each bare table in a scroll box of its
|
|
1327
|
+
own, .gw-prose__table: a region named after the table's caption or first header cell, with tabindex="0" so a
|
|
1328
|
+
keyboard can scroll it. The table is marked .is-wrapped and keeps display: table, because some Safari versions stop
|
|
1329
|
+
announcing a table as a table once its display changes. Without the script, or before it runs, the table itself
|
|
1330
|
+
scrolls inside its box, as in 0.2.0. The box looks the same either way. When you write the markup, the .gw-table
|
|
1331
|
+
wrapper (a region with a name and tabindex="0") is still the better choice. */
|
|
1332
|
+
:where(.gw-prose) > table:where(:not(.is-wrapped)),
|
|
1333
|
+
:where(.gw-prose) > :where(.gw-prose__table) {
|
|
1310
1334
|
width: max-content;
|
|
1311
1335
|
max-width: 100%;
|
|
1312
1336
|
overflow-x: auto;
|
|
1313
1337
|
border: 1px solid var(--gw-line);
|
|
1314
1338
|
border-radius: var(--gw-radius-card);
|
|
1315
1339
|
background: var(--gw-surface);
|
|
1316
|
-
border-collapse: collapse;
|
|
1317
|
-
font-size: 14px;
|
|
1318
|
-
line-height: 1.5;
|
|
1319
1340
|
-webkit-overflow-scrolling: touch;
|
|
1320
1341
|
}
|
|
1321
|
-
:where(.gw-prose) > table
|
|
1322
|
-
:where(.gw-prose) > table
|
|
1323
|
-
:where(.gw-prose) >
|
|
1324
|
-
:where(.gw-prose) > table
|
|
1325
|
-
:where(.gw-prose) >
|
|
1326
|
-
:where(.gw-prose) > table
|
|
1342
|
+
:where(.gw-prose) > table:where(:not(.is-wrapped)) { display: block; }
|
|
1343
|
+
:where(.gw-prose) > table,
|
|
1344
|
+
:where(.gw-prose) > :where(.gw-prose__table) > table { border-collapse: collapse; font-size: 14px; line-height: 1.5; }
|
|
1345
|
+
:where(.gw-prose) > table :is(th, td),
|
|
1346
|
+
: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; }
|
|
1347
|
+
:where(.gw-prose) > table thead th,
|
|
1348
|
+
: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; }
|
|
1349
|
+
:where(.gw-prose) > table tbody th,
|
|
1350
|
+
:where(.gw-prose) > :where(.gw-prose__table) > table tbody th { font-weight: 500; }
|
|
1351
|
+
:where(.gw-prose) > table td,
|
|
1352
|
+
:where(.gw-prose) > :where(.gw-prose__table) > table td { color: var(--gw-ink-2); font-variant-numeric: tabular-nums; }
|
|
1353
|
+
:where(.gw-prose) > table tbody tr:last-child > *,
|
|
1354
|
+
:where(.gw-prose) > :where(.gw-prose__table) > table tbody tr:last-child > * { border-bottom: 0; }
|
|
1355
|
+
:where(.gw-prose) > table caption,
|
|
1356
|
+
:where(.gw-prose) > :where(.gw-prose__table) > table caption { padding: 12px 16px; color: var(--gw-muted); font-size: 13px; text-align: left; }
|
|
1327
1357
|
/* on a phone a cell keeps room for a few words a line: the table scrolls further instead of squeezing its text */
|
|
1328
|
-
@media (max-width: 767px) {
|
|
1358
|
+
@media (max-width: 767px) {
|
|
1359
|
+
:where(.gw-prose) > table td,
|
|
1360
|
+
:where(.gw-prose) > :where(.gw-prose__table) > table td { min-width: 160px; }
|
|
1361
|
+
}
|
|
1362
|
+
|
|
1363
|
+
/* article (0.5.0): the parts around a long read and the blog index. Breadcrumbs, the meta row, the article layout with
|
|
1364
|
+
its contents list (.gw-toc), callouts, the post list and prev / next pagination. The article's own HTML stays in
|
|
1365
|
+
.gw-prose (prose.css); .gw-card__media is in components.css. */
|
|
1366
|
+
|
|
1367
|
+
/* breadcrumbs: a nav with an <ol>, the last item aria-current="page". The separator is drawn here (a chevron mask,
|
|
1368
|
+
no character), so screen readers read the trail and not the punctuation. The current item stays on one line and
|
|
1369
|
+
is cut with an ellipsis on a phone: the h1 right under it says it in full. */
|
|
1370
|
+
.gw-breadcrumbs { color: var(--gw-muted); font-size: 13px; line-height: 1.5; }
|
|
1371
|
+
.gw-breadcrumbs > ol { display: flex; flex-wrap: wrap; align-items: center; gap: 0 8px; margin: 0; padding: 0; list-style: none; }
|
|
1372
|
+
.gw-breadcrumbs li { display: flex; align-items: center; gap: 8px; min-width: 0; max-width: 100%; }
|
|
1373
|
+
.gw-breadcrumbs li + li::before {
|
|
1374
|
+
content: "";
|
|
1375
|
+
flex: none;
|
|
1376
|
+
width: 12px;
|
|
1377
|
+
height: 12px;
|
|
1378
|
+
background: currentColor;
|
|
1379
|
+
opacity: 0.6;
|
|
1380
|
+
-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;
|
|
1381
|
+
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;
|
|
1382
|
+
}
|
|
1383
|
+
.gw-breadcrumbs a { display: inline-flex; align-items: center; min-height: 24px; color: var(--gw-muted); }
|
|
1384
|
+
.gw-breadcrumbs a:hover { color: var(--gw-ink); text-decoration: underline; text-underline-offset: 4px; }
|
|
1385
|
+
.gw-breadcrumbs [aria-current="page"] {
|
|
1386
|
+
display: block;
|
|
1387
|
+
min-width: 0;
|
|
1388
|
+
overflow: hidden;
|
|
1389
|
+
color: var(--gw-ink);
|
|
1390
|
+
font-weight: 500;
|
|
1391
|
+
line-height: 24px;
|
|
1392
|
+
text-overflow: ellipsis;
|
|
1393
|
+
white-space: nowrap;
|
|
1394
|
+
}
|
|
1395
|
+
|
|
1396
|
+
/* meta row: author (an optional 24px avatar), category, published or updated <time datetime>, read time, each item a
|
|
1397
|
+
<span> (or a <time>, an <a>) straight in the row. Small muted text on 24px lines that wraps. A dot sits before every
|
|
1398
|
+
item; the row is pulled 16px to the left and clipped there, so the dot before the first item of each line is hidden
|
|
1399
|
+
and a wrapped line never starts with a separator. */
|
|
1400
|
+
.gw-article-meta {
|
|
1401
|
+
display: flex;
|
|
1402
|
+
flex-wrap: wrap;
|
|
1403
|
+
align-items: center;
|
|
1404
|
+
row-gap: 4px;
|
|
1405
|
+
margin-inline-start: -16px;
|
|
1406
|
+
clip-path: inset(-8px -8px -8px 12px);
|
|
1407
|
+
color: var(--gw-muted);
|
|
1408
|
+
font-size: 14px;
|
|
1409
|
+
line-height: 24px;
|
|
1410
|
+
}
|
|
1411
|
+
.gw-article-meta > *::before {
|
|
1412
|
+
content: "";
|
|
1413
|
+
display: inline-block;
|
|
1414
|
+
width: 4px;
|
|
1415
|
+
height: 4px;
|
|
1416
|
+
margin-inline: 6px;
|
|
1417
|
+
border-radius: var(--gw-radius-chip);
|
|
1418
|
+
background: var(--gw-line-strong);
|
|
1419
|
+
vertical-align: middle;
|
|
1420
|
+
}
|
|
1421
|
+
.gw-article-meta a {
|
|
1422
|
+
display: inline-block;
|
|
1423
|
+
color: var(--gw-accent-strong);
|
|
1424
|
+
font-weight: 500;
|
|
1425
|
+
text-decoration: underline;
|
|
1426
|
+
text-decoration-thickness: 1px;
|
|
1427
|
+
text-underline-offset: 4px;
|
|
1428
|
+
text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);
|
|
1429
|
+
}
|
|
1430
|
+
.gw-article-meta a:hover { text-decoration-color: currentColor; }
|
|
1431
|
+
.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; }
|
|
1432
|
+
|
|
1433
|
+
/* the article page (templates/sections/article.html): <article class="gw-wrap gw-article"> holding __head
|
|
1434
|
+
(breadcrumbs, h1, meta), an optional __hero image, the .gw-toc and the .gw-prose, in that order. On phones one
|
|
1435
|
+
column, the contents folded above the prose. From 1080px (the kit's desktop width, where the header shows its nav)
|
|
1436
|
+
two columns: the reading column (68ch, the prose measure) and the contents beside it, sticky under the header. */
|
|
1437
|
+
.gw-article { padding-block: 32px 64px; }
|
|
1438
|
+
.gw-article__head > * + * { margin-top: 16px; }
|
|
1439
|
+
.gw-article__head h1 { font-size: var(--gw-display-h2); }
|
|
1440
|
+
.gw-article__hero { margin-top: 32px; }
|
|
1441
|
+
.gw-article__hero img { width: 100%; border-radius: var(--gw-radius-card); background: var(--gw-bg-soft); }
|
|
1442
|
+
.gw-article__hero figcaption { margin-top: 12px; color: var(--gw-muted); font-size: 14px; line-height: 1.5; }
|
|
1443
|
+
.gw-article > .gw-toc { margin-top: 32px; }
|
|
1444
|
+
.gw-article > .gw-prose { margin-top: 40px; }
|
|
1445
|
+
@media (min-width: 768px) {
|
|
1446
|
+
.gw-article { padding-block: 48px 96px; }
|
|
1447
|
+
.gw-article__hero { margin-top: 40px; }
|
|
1448
|
+
}
|
|
1449
|
+
@media (min-width: 1080px) {
|
|
1450
|
+
.gw-article {
|
|
1451
|
+
display: grid;
|
|
1452
|
+
grid-template-columns: minmax(0, 68ch) minmax(200px, 240px);
|
|
1453
|
+
grid-template-rows: auto auto 1fr;
|
|
1454
|
+
justify-content: space-between;
|
|
1455
|
+
column-gap: 64px;
|
|
1456
|
+
}
|
|
1457
|
+
.gw-article > * { grid-column: 1; }
|
|
1458
|
+
.gw-article > .gw-article__head { grid-row: 1; }
|
|
1459
|
+
.gw-article > .gw-article__hero { grid-row: 2; }
|
|
1460
|
+
.gw-article > .gw-prose { grid-row: 3; }
|
|
1461
|
+
.gw-article > .gw-toc { grid-column: 2; grid-row: 2 / 4; margin-top: 40px; }
|
|
1462
|
+
}
|
|
1463
|
+
|
|
1464
|
+
/* contents: <nav class="gw-toc" aria-label="On this page" data-gw-toc> holding a <details>, its <summary> and an <ol>
|
|
1465
|
+
of links to the article's h2s (a nested <ol> for h3s). Plain links: they work without the script. website.js marks
|
|
1466
|
+
the section in view (aria-current="true", the accent bar) and opens the <details> from 1080px, where the list sits
|
|
1467
|
+
beside the article and sticks under the header; below 1080px it is folded above the article and a link closes it.
|
|
1468
|
+
The weight never changes with the mark, so the list does not move. */
|
|
1469
|
+
.gw-toc { font-size: 14px; line-height: 1.45; }
|
|
1470
|
+
.gw-toc > details { border: 1px solid var(--gw-line); border-radius: var(--gw-radius-card); background: var(--gw-surface); }
|
|
1471
|
+
.gw-toc summary {
|
|
1472
|
+
display: flex;
|
|
1473
|
+
align-items: center;
|
|
1474
|
+
justify-content: space-between;
|
|
1475
|
+
gap: 12px;
|
|
1476
|
+
min-height: var(--gw-tap-min);
|
|
1477
|
+
padding: 8px 16px;
|
|
1478
|
+
color: var(--gw-ink);
|
|
1479
|
+
font-weight: 600;
|
|
1480
|
+
list-style: none;
|
|
1481
|
+
cursor: pointer;
|
|
1482
|
+
}
|
|
1483
|
+
.gw-toc summary::-webkit-details-marker { display: none; }
|
|
1484
|
+
.gw-toc summary::after {
|
|
1485
|
+
content: "";
|
|
1486
|
+
flex: none;
|
|
1487
|
+
width: 12px;
|
|
1488
|
+
height: 12px;
|
|
1489
|
+
background: currentColor;
|
|
1490
|
+
opacity: 0.6;
|
|
1491
|
+
-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;
|
|
1492
|
+
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;
|
|
1493
|
+
transition: transform 0.18s var(--gw-ease);
|
|
1494
|
+
}
|
|
1495
|
+
.gw-toc details[open] > summary::after { transform: rotate(180deg); }
|
|
1496
|
+
.gw-toc ol { margin: 0; padding: 0; list-style: none; }
|
|
1497
|
+
/* the rail is a background, so the list can scroll inside itself without clipping the bar of the marked link */
|
|
1498
|
+
.gw-toc details > ol { margin: 0 16px 16px; background: linear-gradient(var(--gw-line), var(--gw-line)) 0 0 / 1px 100% no-repeat; }
|
|
1499
|
+
.gw-toc a {
|
|
1500
|
+
display: block;
|
|
1501
|
+
padding: 6px 8px 6px 16px;
|
|
1502
|
+
border-left: 2px solid transparent;
|
|
1503
|
+
color: var(--gw-muted);
|
|
1504
|
+
}
|
|
1505
|
+
.gw-toc ol ol a { padding-left: 32px; }
|
|
1506
|
+
.gw-toc a:hover { color: var(--gw-ink); }
|
|
1507
|
+
.gw-toc a:focus-visible { outline-offset: -2px; }
|
|
1508
|
+
.gw-toc a[aria-current="true"] { border-left-color: var(--gw-accent); color: var(--gw-ink); }
|
|
1509
|
+
/* from 1080px: sticky beside the article; a long list scrolls inside itself, under the summary. Under the floating
|
|
1510
|
+
header it sticks below the card. */
|
|
1511
|
+
@media (min-width: 1080px) {
|
|
1512
|
+
.gw-toc { position: sticky; top: calc(var(--gw-header-height) + 32px); align-self: start; }
|
|
1513
|
+
.gw-toc > details { border: 0; border-radius: var(--gw-radius-0); background: transparent; }
|
|
1514
|
+
.gw-toc summary { min-height: 32px; padding: 0; color: var(--gw-muted); font-size: 13px; }
|
|
1515
|
+
.gw-toc details > ol {
|
|
1516
|
+
max-height: calc(100vh - var(--gw-header-height) - 120px);
|
|
1517
|
+
margin: 8px 0 0;
|
|
1518
|
+
overflow-y: auto;
|
|
1519
|
+
overscroll-behavior: contain;
|
|
1520
|
+
}
|
|
1521
|
+
:root:has(.gw-header--float) .gw-toc { top: calc(var(--gw-header-height) + var(--gw-header-gap) + 32px); }
|
|
1522
|
+
:root:has(.gw-header--float) .gw-toc details > ol { max-height: calc(100vh - var(--gw-header-height) - var(--gw-header-gap) - 120px); }
|
|
1523
|
+
}
|
|
1524
|
+
/* a contents link glides to its section, except for a visitor who asked for less motion (base.css stops it too) */
|
|
1525
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
1526
|
+
:root:has(.gw-toc) { scroll-behavior: smooth; }
|
|
1527
|
+
}
|
|
1528
|
+
|
|
1529
|
+
/* callout: a note, a tip or a warning inside an article. The kind is said in words by __label (Note, Tip, Warning,
|
|
1530
|
+
or the reader's language), with a 16px icon before it; the tint only repeats it. Tints are the kit's: the accent's,
|
|
1531
|
+
success's and warning's -soft grounds; the icon takes the solid hue. role="note" on the box. */
|
|
1532
|
+
.gw-callout {
|
|
1533
|
+
padding: 16px 20px;
|
|
1534
|
+
border-radius: var(--gw-radius-card);
|
|
1535
|
+
background: var(--gw-accent-soft);
|
|
1536
|
+
color: var(--gw-ink);
|
|
1537
|
+
font-size: 16px;
|
|
1538
|
+
line-height: 1.6;
|
|
1539
|
+
}
|
|
1540
|
+
.gw-callout > * + * { margin-top: 8px; }
|
|
1541
|
+
.gw-callout--tip { background: var(--gw-success-soft); }
|
|
1542
|
+
.gw-callout--warning { background: var(--gw-warning-soft); }
|
|
1543
|
+
.gw-callout__label { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; line-height: 1.5; }
|
|
1544
|
+
.gw-callout__label::before {
|
|
1545
|
+
content: "";
|
|
1546
|
+
flex: none;
|
|
1547
|
+
width: 16px;
|
|
1548
|
+
height: 16px;
|
|
1549
|
+
background: var(--gw-accent);
|
|
1550
|
+
-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;
|
|
1551
|
+
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;
|
|
1552
|
+
}
|
|
1553
|
+
.gw-callout--tip > .gw-callout__label::before {
|
|
1554
|
+
background: var(--gw-success);
|
|
1555
|
+
-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");
|
|
1556
|
+
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");
|
|
1557
|
+
}
|
|
1558
|
+
.gw-callout--warning > .gw-callout__label::before {
|
|
1559
|
+
background: var(--gw-warning);
|
|
1560
|
+
-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");
|
|
1561
|
+
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");
|
|
1562
|
+
}
|
|
1563
|
+
|
|
1564
|
+
/* post list: the blog index and "more from the blog". A <ul role="list"> of post cards: .gw-card with a
|
|
1565
|
+
.gw-card__media first, a .gw-label for the category, the title (its link covers the card, so the card is one target
|
|
1566
|
+
and the link's name is the title alone), one or two lines of excerpt and a .gw-article-meta row at the foot. One
|
|
1567
|
+
column on phones, two from 768px, three from 1080px. --compact: one column of rows, no card and no picture. */
|
|
1568
|
+
.gw-post-list { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; margin: 0; padding: 0; list-style: none; }
|
|
1569
|
+
.gw-post-list > li { display: flex; min-width: 0; }
|
|
1570
|
+
.gw-post { position: relative; display: flex; flex: 1 1 auto; flex-direction: column; min-width: 0; }
|
|
1571
|
+
.gw-post:hover { border-color: var(--gw-line-strong); }
|
|
1572
|
+
.gw-post > .gw-card__media + * { margin-top: 20px; }
|
|
1573
|
+
.gw-post > .gw-label + .gw-post__title { margin-top: 8px; }
|
|
1574
|
+
.gw-post__title { font-size: 20px; line-height: 1.3; }
|
|
1575
|
+
.gw-post__title a { color: var(--gw-ink); }
|
|
1576
|
+
.gw-post__title a::after { content: ""; position: absolute; inset: 0; z-index: 1; border-radius: var(--gw-radius-card); }
|
|
1577
|
+
.gw-post:hover .gw-post__title a { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
|
|
1578
|
+
.gw-post__title a:focus-visible { outline: 0; }
|
|
1579
|
+
.gw-post__title a:focus-visible::after { outline: 2px solid var(--gw-accent); outline-offset: 2px; }
|
|
1580
|
+
.gw-post__title + p { margin-top: 8px; }
|
|
1581
|
+
.gw-post > .gw-article-meta { margin-top: auto; padding-top: 16px; }
|
|
1582
|
+
@media (min-width: 768px) {
|
|
1583
|
+
.gw-post-list { gap: 24px; }
|
|
1584
|
+
.gw-post-list:not(.gw-post-list--compact) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
1585
|
+
}
|
|
1586
|
+
@media (min-width: 1080px) {
|
|
1587
|
+
.gw-post-list:not(.gw-post-list--compact) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
|
|
1588
|
+
}
|
|
1589
|
+
.gw-post-list--compact { gap: 0; border-top: 1px solid var(--gw-line); }
|
|
1590
|
+
.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; }
|
|
1591
|
+
.gw-post-list--compact .gw-post__title a::after { border-radius: var(--gw-radius-0); }
|
|
1592
|
+
.gw-post-list--compact .gw-card__media { display: none; }
|
|
1593
|
+
.gw-post-list--compact .gw-post > .gw-article-meta { padding-top: 8px; }
|
|
1594
|
+
|
|
1595
|
+
/* pagination: previous and next as links, a muted "Page 2 of 12" between them. Markup only, no script. */
|
|
1596
|
+
.gw-pagination { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 16px; }
|
|
1597
|
+
* + .gw-pagination { margin-top: 40px; }
|
|
1598
|
+
.gw-pagination__status { color: var(--gw-muted); font-size: 14px; }
|
|
1599
|
+
.gw-pagination > [rel="next"] { margin-inline-start: auto; }
|
package/website.min.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
/*! @gemboss/website-ui 0.4.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-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-weight: 600;--gw-display-tracking: -0.03em;--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-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-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-spin-ms: 700ms;--gw-wash-pink: #ff6f5e;--gw-wash-violet: #7c8af7;--gw-wash-sky: #43b0ff;--gw-wash-mint: #1fcf9f;--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: #686b71;--gw-line: #e5e7ea;--gw-line-strong: #d5d8dd;--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-night: #0c0e14;--gw-night-2: #141722;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff}@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-action: #f2f3f5;--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-night: #0a0b10;--gw-night-2: #12141c;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff}}: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-action: #f2f3f5;--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-night: #0a0b10;--gw-night-2: #12141c;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff}: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: #686b71;--gw-line: #e5e7ea;--gw-line-strong: #d5d8dd;--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-night: #0c0e14;--gw-night-2: #141722;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff}.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-action: #f2f3f5;--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}: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)}h2,.gw-h2{font-size: var(--gw-display-h2)}h3,.gw-h3{font-size: 24px}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: 60ch}.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;line-height: 1.4;color: var(--gw-muted)}.gw-label::before{content: "";flex: none;width: 8px;height: 8px;border-radius: var(--gw-radius-0);background: var(--gw-accent)}: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{outline: 2px solid var(--gw-accent);outline-offset: 2px}[id]{scroll-margin-top: calc(var(--gw-header-height) + 16px)}.gw-skip{position: absolute;left: -9999px;top: 8px;z-index: 100;padding: 12px 16px;border-radius: var(--gw-radius-action);background: var(--gw-action);color: var(--gw-on-action);font-size: 14px;font-weight: 600}.gw-skip:focus{left: 16px}.gw-reveal{opacity: 0;transform: translateY(24px);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: 660px}.gw-section__head--center{margin-inline: auto;text-align: center}.gw-section__head--center .gw-lead{margin-inline: auto}.gw-section__head:not(:last-child){margin-bottom: 40px}@media (min-width: 768px){.gw-section__head:not(:last-child){margin-bottom: 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}.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;justify-content: 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-size: 14px;font-weight: 600;line-height: 1.4;letter-spacing: 0;text-align: center;white-space: nowrap;cursor: pointer}.gw-btn:hover{background: var(--gw-action-hover)}.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--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%}.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[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-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)}: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-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),(pointer: coarse){.gw-btn,.gw-btn--sm,.gw-btn--lg{height: auto;min-height: var(--gw-tap-min);padding-block: 8px;white-space: normal;text-wrap: balance}.gw-btn--lg{min-height: 48px}: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{padding: 8px var(--gw-gutter);border-bottom: 1px solid var(--gw-line);background: var(--gw-bg-soft);color: var(--gw-ink-2);font-size: 13px;line-height: 1.5;text-align: center}.gw-announce a{color: var(--gw-ink);font-weight: 600;text-decoration: underline;text-underline-offset: 4px}.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: 16px;height: var(--gw-header-height)}.gw-brand{display: inline-flex;align-items: center;gap: 8px;flex: none;min-height: 44px;color: var(--gw-ink);font-size: 18px;font-weight: 700;letter-spacing: -0.01em;white-space: nowrap}.gw-brand__mark{flex: none;width: 26px;height: 26px}.gw-brand__name{line-height: 1.2}.gw-nav{display: none}.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;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;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.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-nav__trigger[aria-expanded="true"]::after,.gw-mobile-menu__group[open] > summary::after{transform: rotate(180deg)}.gw-nav__link[aria-current="page"]{color: var(--gw-ink);font-weight: 600;text-decoration: underline;text-decoration-color: var(--gw-accent);text-decoration-thickness: 2px;text-underline-offset: 8px}.gw-mega{position: absolute;top: calc(100% + 8px);left: 50%;width: min(960px,calc(100vw - 40px));max-height: calc(100vh - var(--gw-header-height) - 24px);overflow-y: auto;transform: translateX(-50%);border: 1px solid var(--gw-line);border-radius: var(--gw-radius-popover);background: var(--gw-surface);box-shadow: var(--gw-shadow-raised)}.gw-mega::before{content: "";position: absolute;top: -12px;left: 0;right: 0;height: 12px}.gw-mega:not([hidden]){animation: gw-mega-in 0.16s var(--gw-ease)}@keyframes gw-mega-in{from{opacity: 0;transform: translateX(-50%) translateY(8px)}}@media (prefers-reduced-motion: reduce){.gw-mega:not([hidden]){animation: none}}.gw-mega > .gw-wrap{width: auto;margin: 0}.gw-mega__grid{display: grid;grid-auto-flow: column;grid-auto-columns: minmax(0,1fr);gap: 32px;padding: 32px}.gw-mega__col{display: flex;flex-direction: column;gap: 2px}.gw-mega__heading{padding: 0 8px 8px;color: var(--gw-muted);font-size: 12px;font-weight: 500}.gw-mega__link{display: grid;grid-template-columns: 32px minmax(0,1fr);align-items: start;gap: 12px;padding: 8px;border-radius: var(--gw-radius-action);color: var(--gw-ink)}.gw-mega__link:hover{background: var(--gw-bg-soft)}.gw-mega__link b{display: block;font-size: 14px;font-weight: 500;line-height: 20px}.gw-mega__link i{display: block;margin-top: 2px;color: var(--gw-muted);font-size: 13px;font-style: normal;line-height: 18px}.gw-mega__link[aria-current="page"] b{color: var(--gw-accent-strong);font-weight: 600}.gw-mega__icon{display: grid;place-items: center;width: 32px;height: 32px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-action);background: var(--gw-surface);color: var(--gw-muted)}.gw-mega__icon svg{width: 16px;height: 16px}.gw-mega__link:hover .gw-mega__icon{border-color: var(--gw-accent-soft);background: var(--gw-accent-soft);color: var(--gw-accent-strong)}.gw-mega__feature{display: flex;flex-direction: column;justify-content: flex-end;gap: 4px;min-height: 216px;padding: 24px;border-radius: var(--gw-radius-panel);background: radial-gradient(360px 260px at 12% 112%,color-mix(in srgb,var(--gw-accent) 78%,transparent),transparent 62%),radial-gradient(300px 220px at 92% -14%,color-mix(in srgb,var(--gw-wash-violet) 44%,transparent),transparent 70%),var(--gw-night);color: var(--gw-on-night)}.gw-mega__feature b{font-size: 18px;font-weight: 650;line-height: 1.25}.gw-mega__feature i{color: var(--gw-on-night);font-size: 13px;font-style: normal;line-height: 1.5;opacity: 0.9}.gw-mega__feature .gw-link--arrow{margin-top: 16px;color: var(--gw-on-night);font-size: 13px;font-weight: 600}.gw-header__actions{display: flex;align-items: center;gap: 8px;margin-left: auto}.gw-header__signin{display: none}.gw-header__actions > .gw-btn{display: none}.gw-theme-toggle,.gw-menu-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,.gw-menu-toggle:hover{background: var(--gw-bg-soft)}.gw-theme-toggle svg,.gw-menu-toggle svg{width: 20px;height: 20px}.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__link[aria-current="page"],.gw-mobile-menu__top[aria-current="page"]{color: var(--gw-accent-strong);font-weight: 600}.gw-mobile-menu__actions{display: grid;gap: 8px;margin-top: 24px}@media (min-width: 480px){.gw-header__actions > .gw-btn:not(.gw-btn--secondary){display: inline-flex}}@media (min-width: 768px){.gw-header__actions > .gw-btn--secondary{display: inline-flex}}@media (min-width: 1080px){.gw-header__bar{gap: 32px}.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: 1080px){.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: 1080px) 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-footer{padding-block: 64px 40px;border-top: 1px solid var(--gw-line);background: var(--gw-bg);color: var(--gw-ink);font-size: 14px}.gw-footer__grid{display: grid;grid-template-columns: repeat(2,minmax(0,1fr));gap: 32px 24px}.gw-footer__brand{grid-column: 1 / -1;max-width: 320px}.gw-footer__brand p{margin-top: 16px;color: var(--gw-muted)}.gw-footer__heading{margin: 0 0 8px;color: var(--gw-ink);font-size: 13px;font-weight: 600;letter-spacing: 0}.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: 8px 24px;margin-top: 48px;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: 0 16px;margin: 0;padding: 0;list-style: none}.gw-footer__bottom a{display: inline-flex;align-items: center;justify-content: center;min-width: 24px;min-height: 24px;color: var(--gw-muted)}.gw-footer__bottom a:hover{color: var(--gw-ink)}@media (min-width: 768px){.gw-footer__grid{grid-template-columns: repeat(3,minmax(0,1fr))}}@media (min-width: 1080px){.gw-footer__grid{grid-auto-flow: column;grid-template-columns: minmax(0,1.6fr);grid-auto-columns: minmax(0,1fr)}.gw-footer__brand{grid-column: auto}}@media (max-width: 768px),(pointer: coarse){.gw-footer__bottom a{min-height: var(--gw-tap-min)}}.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 > .gw-window{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%}}.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;margin: 0;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;margin: 0;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),:where(.gw-prose) > :where(figure,img,video,pre,table,hr,.gw-table,.gw-window) + *{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{display: block;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);border-collapse: collapse;font-size: 14px;line-height: 1.5;-webkit-overflow-scrolling: touch}:where(.gw-prose) > 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{background: var(--gw-bg-soft);color: var(--gw-ink);font-size: 13px;font-weight: 600;white-space: nowrap}:where(.gw-prose) > table tbody th{font-weight: 500}:where(.gw-prose) > table td{color: var(--gw-ink-2);font-variant-numeric: tabular-nums}:where(.gw-prose) > table tbody tr:last-child > *{border-bottom: 0}:where(.gw-prose) > table caption{padding: 12px 16px;color: var(--gw-muted);font-size: 13px;text-align: left}@media (max-width: 767px){:where(.gw-prose) > table td{min-width: 160px}}
|
|
1
|
+
/*! @gemboss/website-ui 0.5.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-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-weight: 600;--gw-display-tracking: -0.03em;--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-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-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-spin-ms: 700ms;--gw-wash-pink: #ff6f5e;--gw-wash-violet: #7c8af7;--gw-wash-sky: #43b0ff;--gw-wash-mint: #1fcf9f;--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: #686b71;--gw-line: #e5e7ea;--gw-line-strong: #d5d8dd;--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-night: #0c0e14;--gw-night-2: #141722;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff}@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-action: #f2f3f5;--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-night: #0a0b10;--gw-night-2: #12141c;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff}}: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-action: #f2f3f5;--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-night: #0a0b10;--gw-night-2: #12141c;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff}: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: #686b71;--gw-line: #e5e7ea;--gw-line-strong: #d5d8dd;--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-night: #0c0e14;--gw-night-2: #141722;--gw-on-night: #e3e4e8;--gw-on-night-muted: #9aa3ff}.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-action: #f2f3f5;--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}: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)}h2,.gw-h2{font-size: var(--gw-display-h2)}h3,.gw-h3{font-size: 24px}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: 60ch}.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;line-height: 1.4;color: var(--gw-muted)}.gw-label::before{content: "";flex: none;width: 8px;height: 8px;border-radius: var(--gw-radius-0);background: var(--gw-accent)}: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{outline: 2px solid var(--gw-accent);outline-offset: 2px}[id]{scroll-margin-top: calc(var(--gw-header-height) + 16px)}.gw-skip{position: absolute;left: -9999px;top: 8px;z-index: 100;padding: 12px 16px;border-radius: var(--gw-radius-action);background: var(--gw-action);color: var(--gw-on-action);font-size: 14px;font-weight: 600}.gw-skip:focus{left: 16px}.gw-reveal{opacity: 0;transform: translateY(24px);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: 660px}.gw-section__head--center{margin-inline: auto;text-align: center}.gw-section__head--center .gw-lead{margin-inline: auto}.gw-section__head:not(:last-child){margin-bottom: 40px}@media (min-width: 768px){.gw-section__head:not(:last-child){margin-bottom: 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}.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;justify-content: 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-size: 14px;font-weight: 600;line-height: 1.4;letter-spacing: 0;text-align: center;white-space: nowrap;cursor: pointer}.gw-btn:hover{background: var(--gw-action-hover)}.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--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%}.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[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-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-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),(pointer: coarse){.gw-btn,.gw-btn--sm,.gw-btn--lg{height: auto;min-height: var(--gw-tap-min);padding-block: 8px;white-space: normal;text-wrap: balance}.gw-btn--lg{min-height: 48px}: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{padding: 8px var(--gw-gutter);border-bottom: 1px solid var(--gw-line);background: var(--gw-bg-soft);color: var(--gw-ink-2);font-size: 13px;line-height: 1.5;text-align: center}.gw-announce a{color: var(--gw-ink);font-weight: 600;text-decoration: underline;text-underline-offset: 4px}.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: 16px;height: var(--gw-header-height)}.gw-brand{display: inline-flex;align-items: center;gap: 8px;flex: none;min-height: 44px;color: var(--gw-ink);font-size: 18px;font-weight: 700;letter-spacing: -0.01em;white-space: nowrap}.gw-brand__mark{flex: none;width: 26px;height: 26px}.gw-brand__name{line-height: 1.2}.gw-nav{display: none}.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;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;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.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-nav__trigger[aria-expanded="true"]::after,.gw-mobile-menu__group[open] > summary::after{transform: rotate(180deg)}.gw-nav__link[aria-current="page"]{color: var(--gw-ink);font-weight: 600;text-decoration: underline;text-decoration-color: var(--gw-accent);text-decoration-thickness: 2px;text-underline-offset: 8px}.gw-mega{position: absolute;top: calc(100% + 8px);left: 50%;width: min(960px,calc(100vw - 40px));max-height: calc(100vh - var(--gw-header-height) - 24px);overflow-y: auto;transform: translateX(-50%);border: 1px solid var(--gw-line);border-radius: var(--gw-radius-popover);background: var(--gw-surface);box-shadow: var(--gw-shadow-raised)}.gw-mega::before{content: "";position: absolute;top: -12px;left: 0;right: 0;height: 12px}.gw-mega:not([hidden]){animation: gw-mega-in 0.16s var(--gw-ease)}@keyframes gw-mega-in{from{opacity: 0;transform: translateX(-50%) translateY(8px)}}@media (prefers-reduced-motion: reduce){.gw-mega:not([hidden]){animation: none}}.gw-mega > .gw-wrap{width: auto;margin: 0}.gw-mega__grid{display: grid;grid-auto-flow: column;grid-auto-columns: minmax(0,1fr);gap: 32px;padding: 32px}.gw-mega__col{display: flex;flex-direction: column;gap: 2px}.gw-mega__heading{padding: 0 8px 8px;color: var(--gw-muted);font-size: 12px;font-weight: 500}.gw-mega__link{display: grid;grid-template-columns: 32px minmax(0,1fr);align-items: start;gap: 12px;padding: 8px;border-radius: var(--gw-radius-action);color: var(--gw-ink)}.gw-mega__link:hover{background: var(--gw-bg-soft)}.gw-mega__link b{display: block;font-size: 14px;font-weight: 500;line-height: 20px}.gw-mega__link i{display: block;margin-top: 2px;color: var(--gw-muted);font-size: 13px;font-style: normal;line-height: 18px}.gw-mega__link[aria-current="page"] b{color: var(--gw-accent-strong);font-weight: 600}.gw-mega__icon{display: grid;place-items: center;width: 32px;height: 32px;border: 1px solid var(--gw-line);border-radius: var(--gw-radius-action);background: var(--gw-surface);color: var(--gw-muted)}.gw-mega__icon svg{width: 16px;height: 16px}.gw-mega__link:hover .gw-mega__icon{border-color: var(--gw-accent-soft);background: var(--gw-accent-soft);color: var(--gw-accent-strong)}.gw-mega__feature{display: flex;flex-direction: column;justify-content: flex-end;gap: 4px;min-height: 216px;padding: 24px;border-radius: var(--gw-radius-panel);background: radial-gradient(360px 260px at 12% 112%,color-mix(in srgb,var(--gw-accent) 78%,transparent),transparent 62%),radial-gradient(300px 220px at 92% -14%,color-mix(in srgb,var(--gw-wash-violet) 44%,transparent),transparent 70%),var(--gw-night);color: var(--gw-on-night)}.gw-mega__feature b{font-size: 18px;font-weight: 650;line-height: 1.25}.gw-mega__feature i{color: var(--gw-on-night);font-size: 13px;font-style: normal;line-height: 1.5;opacity: 0.9}.gw-mega__feature .gw-link--arrow{margin-top: 16px;color: var(--gw-on-night);font-size: 13px;font-weight: 600}.gw-header__actions{display: flex;align-items: center;gap: 8px;margin-left: auto}.gw-header__signin{display: none}.gw-header__actions > .gw-btn{display: none}.gw-theme-toggle,.gw-menu-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,.gw-menu-toggle:hover{background: var(--gw-bg-soft)}.gw-theme-toggle svg,.gw-menu-toggle svg{width: 20px;height: 20px}.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__link[aria-current="page"],.gw-mobile-menu__top[aria-current="page"]{color: var(--gw-accent-strong);font-weight: 600}.gw-mobile-menu__actions{display: grid;gap: 8px;margin-top: 24px}@media (min-width: 480px){.gw-header__actions > .gw-btn:not(.gw-btn--secondary){display: inline-flex}}@media (min-width: 768px){.gw-header__actions > .gw-btn--secondary{display: inline-flex}}@media (min-width: 1080px){.gw-header__bar{gap: 32px}.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: 1080px){.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: 1080px) 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-footer{padding-block: 64px 40px;border-top: 1px solid var(--gw-line);background: var(--gw-bg);color: var(--gw-ink);font-size: 14px}.gw-footer__grid{display: grid;grid-template-columns: repeat(2,minmax(0,1fr));gap: 32px 24px}.gw-footer__brand{grid-column: 1 / -1;max-width: 320px}.gw-footer__brand p{margin-top: 16px;color: var(--gw-muted)}.gw-footer__heading{margin: 0 0 8px;color: var(--gw-ink);font-size: 13px;font-weight: 600;letter-spacing: 0}.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: 8px 24px;margin-top: 48px;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: 0 16px;margin: 0;padding: 0;list-style: none}.gw-footer__bottom a{display: inline-flex;align-items: center;justify-content: center;min-width: 24px;min-height: 24px;color: var(--gw-muted)}.gw-footer__bottom a:hover{color: var(--gw-ink)}@media (min-width: 768px){.gw-footer__grid{grid-template-columns: repeat(3,minmax(0,1fr))}}@media (min-width: 1080px){.gw-footer__grid{grid-auto-flow: column;grid-template-columns: minmax(0,1.6fr);grid-auto-columns: minmax(0,1fr)}.gw-footer__brand{grid-column: auto}}@media (max-width: 768px),(pointer: coarse){.gw-footer__bottom a{min-height: var(--gw-tap-min)}}.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 > .gw-window{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%}}.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;margin: 0;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;margin: 0;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;margin: 0;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}
|