@jonsoc/console-app 1.1.34 → 1.1.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/package.json +5 -1
  2. package/public/robots.txt +5 -5
  3. package/script/generate-sitemap.ts +0 -0
  4. package/src/app.css +1 -1
  5. package/src/asset/brand/opencode-logo-dark.svg +16 -16
  6. package/src/asset/brand/opencode-logo-light.svg +16 -16
  7. package/src/asset/brand/opencode-wordmark-dark.svg +30 -30
  8. package/src/asset/brand/opencode-wordmark-light.svg +30 -30
  9. package/src/asset/brand/opencode-wordmark-simple-dark.svg +22 -22
  10. package/src/asset/brand/opencode-wordmark-simple-light.svg +22 -22
  11. package/src/asset/lander/brand-assets-dark.svg +10 -10
  12. package/src/asset/lander/brand-assets-light.svg +10 -10
  13. package/src/asset/lander/check.svg +3 -3
  14. package/src/asset/lander/copy.svg +3 -3
  15. package/src/asset/lander/logo-dark.svg +11 -11
  16. package/src/asset/lander/logo-light.svg +11 -11
  17. package/src/asset/lander/opencode-logo-dark.svg +11 -11
  18. package/src/asset/lander/opencode-logo-light.svg +11 -11
  19. package/src/asset/lander/opencode-wordmark-dark.svg +25 -25
  20. package/src/asset/lander/opencode-wordmark-light.svg +25 -25
  21. package/src/asset/lander/wordmark-dark.svg +3 -3
  22. package/src/asset/lander/wordmark-light.svg +3 -3
  23. package/src/asset/logo-ornate-dark.svg +18 -18
  24. package/src/asset/logo-ornate-light.svg +18 -18
  25. package/src/asset/logo.svg +18 -18
  26. package/src/asset/zen-ornate-dark.svg +8 -8
  27. package/src/asset/zen-ornate-light.svg +8 -8
  28. package/src/component/dropdown.css +80 -80
  29. package/src/component/header-context-menu.css +63 -63
  30. package/src/component/modal.css +66 -66
  31. package/src/component/spotlight.css +15 -15
  32. package/src/routes/[...404].css +130 -130
  33. package/src/routes/black/workspace.css +214 -214
  34. package/src/routes/black.css +828 -828
  35. package/src/routes/brand/index.css +555 -555
  36. package/src/routes/changelog/index.css +477 -477
  37. package/src/routes/download/index.css +750 -750
  38. package/src/routes/enterprise/index.css +578 -578
  39. package/src/routes/index.css +1251 -1251
  40. package/src/routes/legal/privacy-policy/index.css +343 -343
  41. package/src/routes/legal/terms-of-service/index.css +254 -254
  42. package/src/routes/user-menu.css +18 -18
  43. package/src/routes/workspace/[id]/billing/billing-section.module.css +185 -185
  44. package/src/routes/workspace/[id]/billing/black-section.module.css +142 -142
  45. package/src/routes/workspace/[id]/billing/black-waitlist-section.module.css +23 -23
  46. package/src/routes/workspace/[id]/billing/monthly-limit-section.module.css +96 -96
  47. package/src/routes/workspace/[id]/billing/payment-section.module.css +93 -93
  48. package/src/routes/workspace/[id]/billing/reload-section.module.css +261 -261
  49. package/src/routes/workspace/[id]/graph-section.module.css +145 -145
  50. package/src/routes/workspace/[id]/keys/key-section.module.css +197 -197
  51. package/src/routes/workspace/[id]/members/member-section.module.css +249 -249
  52. package/src/routes/workspace/[id]/members/role-dropdown.css +72 -72
  53. package/src/routes/workspace/[id]/model-section.module.css +173 -173
  54. package/src/routes/workspace/[id]/new-user-section.module.css +143 -143
  55. package/src/routes/workspace/[id]/provider-section.module.css +138 -138
  56. package/src/routes/workspace/[id]/settings/settings-section.module.css +94 -94
  57. package/src/routes/workspace/[id]/usage-section.module.css +185 -185
  58. package/src/routes/workspace/[id].css +308 -308
  59. package/src/routes/workspace-picker.css +74 -74
  60. package/src/routes/workspace.css +107 -107
  61. package/src/routes/zen/index.css +866 -866
  62. package/src/style/base.css +21 -21
  63. package/src/style/component/button.css +102 -102
  64. package/src/style/index.css +8 -8
  65. package/src/style/reset.css +76 -76
  66. package/src/style/token/color.css +91 -91
  67. package/src/style/token/font.css +21 -21
  68. package/src/style/token/space.css +46 -46
  69. package/public/apple-touch-icon-v3.png +0 -1
  70. package/public/apple-touch-icon.png +0 -1
  71. package/public/email +0 -1
  72. package/public/favicon-96x96-v3.png +0 -1
  73. package/public/favicon-96x96.png +0 -1
  74. package/public/favicon-v3.ico +0 -1
  75. package/public/favicon-v3.svg +0 -1
  76. package/public/favicon.ico +0 -1
  77. package/public/favicon.svg +0 -1
  78. package/public/site.webmanifest +0 -1
  79. package/public/social-share-black.png +0 -1
  80. package/public/social-share-zen.png +0 -1
  81. package/public/social-share.png +0 -1
  82. package/public/web-app-manifest-192x192.png +0 -1
  83. package/public/web-app-manifest-512x512.png +0 -1
@@ -1,555 +1,555 @@
1
- ::selection {
2
- background: var(--color-background-interactive);
3
- color: var(--color-text-strong);
4
-
5
- @media (prefers-color-scheme: dark) {
6
- background: var(--color-background-interactive);
7
- color: var(--color-text-inverted);
8
- }
9
- }
10
-
11
- [data-page="enterprise"],
12
- [data-page="legal"] {
13
- --color-background: hsl(0, 20%, 99%);
14
- --color-background-weak: hsl(0, 8%, 97%);
15
- --color-background-weak-hover: hsl(0, 8%, 94%);
16
- --color-background-strong: hsl(0, 5%, 12%);
17
- --color-background-strong-hover: hsl(0, 5%, 18%);
18
- --color-background-interactive: hsl(62, 84%, 88%);
19
- --color-background-interactive-weaker: hsl(64, 74%, 95%);
20
-
21
- --color-text: hsl(0, 1%, 39%);
22
- --color-text-weak: hsl(0, 1%, 60%);
23
- --color-text-weaker: hsl(30, 2%, 81%);
24
- --color-text-strong: hsl(0, 5%, 12%);
25
- --color-text-inverted: hsl(0, 20%, 99%);
26
- --color-text-success: hsl(119, 100%, 35%);
27
-
28
- --color-border: hsl(30, 2%, 81%);
29
- --color-border-weak: hsl(0, 1%, 85%);
30
-
31
- --color-icon: hsl(0, 1%, 55%);
32
- --color-success: hsl(142, 76%, 36%);
33
-
34
- background: var(--color-background);
35
- font-family: var(--font-mono);
36
- color: var(--color-text);
37
- padding-bottom: 5rem;
38
-
39
- @media (prefers-color-scheme: dark) {
40
- --color-background: hsl(0, 9%, 7%);
41
- --color-background-weak: hsl(0, 6%, 10%);
42
- --color-background-weak-hover: hsl(0, 6%, 15%);
43
- --color-background-strong: hsl(0, 15%, 94%);
44
- --color-background-strong-hover: hsl(0, 15%, 97%);
45
- --color-background-interactive: hsl(62, 100%, 90%);
46
- --color-background-interactive-weaker: hsl(60, 20%, 8%);
47
-
48
- --color-text: hsl(0, 4%, 71%);
49
- --color-text-weak: hsl(0, 2%, 49%);
50
- --color-text-weaker: hsl(0, 3%, 28%);
51
- --color-text-strong: hsl(0, 15%, 94%);
52
- --color-text-inverted: hsl(0, 9%, 7%);
53
- --color-text-success: hsl(119, 60%, 72%);
54
-
55
- --color-border: hsl(0, 3%, 28%);
56
- --color-border-weak: hsl(0, 4%, 23%);
57
-
58
- --color-icon: hsl(10, 3%, 43%);
59
- --color-success: hsl(142, 76%, 46%);
60
- }
61
-
62
- /* Header and Footer styles - copied from index.css */
63
- [data-component="top"] {
64
- padding: 24px 5rem;
65
- height: 80px;
66
- position: sticky;
67
- top: 0;
68
- display: flex;
69
- justify-content: space-between;
70
- align-items: center;
71
- background: var(--color-background);
72
- border-bottom: 1px solid var(--color-border-weak);
73
- z-index: 10;
74
-
75
- @media (max-width: 60rem) {
76
- padding: 24px 1.5rem;
77
- }
78
-
79
- img {
80
- height: 34px;
81
- width: auto;
82
- }
83
-
84
- [data-component="nav-desktop"] {
85
- ul {
86
- display: flex;
87
- justify-content: space-between;
88
- align-items: center;
89
- gap: 48px;
90
-
91
- @media (max-width: 55rem) {
92
- gap: 32px;
93
- }
94
-
95
- @media (max-width: 48rem) {
96
- gap: 24px;
97
- }
98
- li {
99
- display: inline-block;
100
- a {
101
- text-decoration: none;
102
- span {
103
- color: var(--color-text-weak);
104
- }
105
- }
106
- a:hover {
107
- text-decoration: underline;
108
- text-underline-offset: 2px;
109
- text-decoration-thickness: 1px;
110
- }
111
- [data-slot="cta-button"] {
112
- background: var(--color-background-strong);
113
- color: var(--color-text-inverted);
114
- padding: 8px 16px 8px 10px;
115
- border-radius: 4px;
116
- font-weight: 500;
117
- text-decoration: none;
118
- display: flex;
119
- align-items: center;
120
- gap: 8px;
121
-
122
- @media (max-width: 55rem) {
123
- display: none;
124
- }
125
- }
126
- [data-slot="cta-button"]:hover {
127
- background: var(--color-background-strong-hover);
128
- text-decoration: none;
129
- }
130
- }
131
- }
132
-
133
- @media (max-width: 40rem) {
134
- display: none;
135
- }
136
- }
137
-
138
- [data-component="nav-mobile"] {
139
- button > svg {
140
- color: var(--color-icon);
141
- }
142
- }
143
-
144
- [data-component="nav-mobile-toggle"] {
145
- border: none;
146
- background: none;
147
- outline: none;
148
- height: 40px;
149
- width: 40px;
150
- cursor: pointer;
151
- margin-right: -8px;
152
- }
153
-
154
- [data-component="nav-mobile-toggle"]:hover {
155
- background: var(--color-background-weak);
156
- }
157
-
158
- [data-component="nav-mobile"] {
159
- display: none;
160
-
161
- @media (max-width: 40rem) {
162
- display: block;
163
-
164
- [data-component="nav-mobile-icon"] {
165
- cursor: pointer;
166
- height: 40px;
167
- width: 40px;
168
- display: flex;
169
- align-items: center;
170
- justify-content: center;
171
- }
172
-
173
- [data-component="nav-mobile-menu-list"] {
174
- position: fixed;
175
- background: var(--color-background);
176
- top: 80px;
177
- left: 0;
178
- right: 0;
179
- height: 100vh;
180
-
181
- ul {
182
- list-style: none;
183
- padding: 20px 0;
184
-
185
- li {
186
- a {
187
- text-decoration: none;
188
- padding: 20px;
189
- display: block;
190
-
191
- span {
192
- color: var(--color-text-weak);
193
- }
194
- }
195
-
196
- a:hover {
197
- background: var(--color-background-weak);
198
- }
199
- }
200
- }
201
- }
202
- }
203
- }
204
-
205
- [data-slot="logo dark"] {
206
- display: none;
207
- }
208
-
209
- @media (prefers-color-scheme: dark) {
210
- [data-slot="logo light"] {
211
- display: none;
212
- }
213
- [data-slot="logo dark"] {
214
- display: block;
215
- }
216
- }
217
- }
218
-
219
- [data-component="footer"] {
220
- border-top: 1px solid var(--color-border-weak);
221
- display: flex;
222
- flex-direction: row;
223
-
224
- @media (max-width: 65rem) {
225
- border-bottom: 1px solid var(--color-border-weak);
226
- }
227
-
228
- [data-slot="cell"] {
229
- flex: 1;
230
- text-align: center;
231
-
232
- a {
233
- text-decoration: none;
234
- padding: 2rem 0;
235
- width: 100%;
236
- display: block;
237
-
238
- span {
239
- color: var(--color-text-weak);
240
-
241
- @media (max-width: 40rem) {
242
- display: none;
243
- }
244
- }
245
- }
246
-
247
- a:hover {
248
- background: var(--color-background-weak);
249
- text-decoration: underline;
250
- text-underline-offset: 2px;
251
- text-decoration-thickness: 1px;
252
- }
253
- }
254
-
255
- [data-slot="cell"] + [data-slot="cell"] {
256
- border-left: 1px solid var(--color-border-weak);
257
-
258
- @media (max-width: 40rem) {
259
- border-left: none;
260
- }
261
- }
262
-
263
- /* Mobile: third column on its own row */
264
- @media (max-width: 25rem) {
265
- flex-wrap: wrap;
266
-
267
- [data-slot="cell"] {
268
- flex: 1 0 100%;
269
- border-left: none;
270
- border-top: 1px solid var(--color-border-weak);
271
- }
272
-
273
- [data-slot="cell"]:nth-child(1) {
274
- border-top: none;
275
- }
276
- }
277
- }
278
-
279
- [data-component="container"] {
280
- max-width: 67.5rem;
281
- margin: 0 auto;
282
- border: 1px solid var(--color-border-weak);
283
- border-top: none;
284
-
285
- @media (max-width: 65rem) {
286
- border: none;
287
- }
288
- }
289
-
290
- [data-component="content"] {
291
- }
292
-
293
- [data-component="brand-content"] {
294
- padding: 4rem 5rem;
295
-
296
- h1 {
297
- font-size: 1.5rem;
298
- font-weight: 700;
299
- color: var(--color-text-strong);
300
- margin-bottom: 1rem;
301
- }
302
-
303
- h3 {
304
- font-size: 1.25rem;
305
- font-weight: 500;
306
- color: var(--color-text-strong);
307
- margin: 2rem 0 1rem 0;
308
- }
309
-
310
- p {
311
- line-height: 1.6;
312
- margin-bottom: 2.5rem;
313
- color: var(--color-text);
314
- }
315
-
316
- [data-component="download-button"] {
317
- padding: 8px 12px 8px 20px;
318
- background: var(--color-background-strong);
319
- color: var(--color-text-inverted);
320
- border: none;
321
- border-radius: 4px;
322
- font-weight: 500;
323
- cursor: pointer;
324
- display: flex;
325
- width: fit-content;
326
- align-items: center;
327
- gap: 12px;
328
- transition: all 0.2s ease;
329
- text-decoration: none;
330
-
331
- &:hover:not(:disabled) {
332
- background: var(--color-background-strong-hover);
333
- }
334
-
335
- &:active {
336
- transform: scale(0.98);
337
- }
338
-
339
- &:disabled {
340
- opacity: 0.6;
341
- cursor: not-allowed;
342
- }
343
- }
344
-
345
- [data-component="brand-grid"] {
346
- display: grid;
347
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
348
- gap: 2rem;
349
- margin-top: 4rem;
350
- margin-bottom: 2rem;
351
- }
352
-
353
- [data-component="brand-grid"] img {
354
- width: 100%;
355
- height: auto;
356
- display: block;
357
- border-radius: 4px;
358
- border: 1px solid var(--color-border-weak);
359
- }
360
-
361
- [data-component="brand-grid"] > div {
362
- position: relative;
363
- }
364
-
365
- [data-component="actions"] {
366
- position: absolute;
367
- background: rgba(4, 0, 0, 0.08);
368
- border-radius: 4px;
369
- bottom: 0;
370
- right: 0;
371
- top: 0;
372
- left: 0;
373
- display: flex;
374
- justify-content: center;
375
- align-items: center;
376
- gap: 16px;
377
- opacity: 0;
378
- transition: opacity 0.2s ease;
379
-
380
- @media (max-width: 40rem) {
381
- position: static;
382
- opacity: 1;
383
- background: none;
384
- margin-top: 1rem;
385
- justify-content: start;
386
- }
387
- }
388
-
389
- [data-component="brand-grid"] > div:hover [data-component="actions"] {
390
- opacity: 1;
391
-
392
- @media (max-width: 40rem) {
393
- opacity: 1;
394
- }
395
- }
396
-
397
- [data-component="actions"] button {
398
- padding: 6px 12px;
399
- background: var(--color-background);
400
- color: var(--color-text);
401
- border: none;
402
- border-radius: 4px;
403
- font-weight: 500;
404
- display: flex;
405
- align-items: center;
406
- gap: 12px;
407
- transition: all 0.2s ease;
408
- cursor: pointer;
409
- box-shadow:
410
- 0 0 0 1px rgba(19, 16, 16, 0.08),
411
- 0 6px 8px -4px rgba(19, 16, 16, 0.12),
412
- 0 4px 3px -2px rgba(19, 16, 16, 0.12),
413
- 0 1px 2px -1px rgba(19, 16, 16, 0.12);
414
-
415
- @media (max-width: 40rem) {
416
- box-shadow: 0 0 0 1px rgba(19, 16, 16, 0.16);
417
- }
418
-
419
- &:hover {
420
- background: var(--color-background);
421
- }
422
-
423
- &:active {
424
- transform: scale(0.98);
425
- box-shadow:
426
- 0 0 0 1px rgba(19, 16, 16, 0.08),
427
- 0 6px 8px -8px rgba(19, 16, 16, 0.5);
428
- }
429
- }
430
-
431
- @media (max-width: 60rem) {
432
- padding: 2rem 1.5rem;
433
- }
434
- }
435
-
436
- [data-component="faq"] {
437
- border-top: 1px solid var(--color-border-weak);
438
- padding: 4rem 5rem;
439
-
440
- @media (max-width: 60rem) {
441
- padding: 2rem 1.5rem;
442
- }
443
-
444
- [data-slot="section-title"] {
445
- margin-bottom: 24px;
446
-
447
- h3 {
448
- font-size: 16px;
449
- font-weight: 500;
450
- color: var(--color-text-strong);
451
- margin-bottom: 12px;
452
- }
453
-
454
- p {
455
- margin-bottom: 12px;
456
- color: var(--color-text);
457
- }
458
- }
459
-
460
- ul {
461
- padding: 0;
462
-
463
- li {
464
- list-style: none;
465
- margin-bottom: 24px;
466
- line-height: 200%;
467
-
468
- @media (max-width: 60rem) {
469
- line-height: 180%;
470
- }
471
- }
472
- }
473
-
474
- [data-slot="faq-question"] {
475
- display: flex;
476
- gap: 16px;
477
- margin-bottom: 8px;
478
- color: var(--color-text-strong);
479
- font-weight: 500;
480
- cursor: pointer;
481
- background: none;
482
- border: none;
483
- padding: 0;
484
-
485
- [data-slot="faq-icon-plus"] {
486
- flex-shrink: 0;
487
- color: var(--color-text-weak);
488
- margin-top: 2px;
489
-
490
- [data-closed] & {
491
- display: block;
492
- }
493
- [data-expanded] & {
494
- display: none;
495
- }
496
- }
497
- [data-slot="faq-icon-minus"] {
498
- flex-shrink: 0;
499
- color: var(--color-text-weak);
500
- margin-top: 2px;
501
-
502
- [data-closed] & {
503
- display: none;
504
- }
505
- [data-expanded] & {
506
- display: block;
507
- }
508
- }
509
- [data-slot="faq-question-text"] {
510
- flex-grow: 1;
511
- text-align: left;
512
- }
513
- }
514
-
515
- [data-slot="faq-answer"] {
516
- margin-left: 40px;
517
- margin-bottom: 32px;
518
- color: var(--color-text);
519
- }
520
- }
521
-
522
- [data-component="legal"] {
523
- color: var(--color-text-weak);
524
- text-align: center;
525
- padding: 2rem 5rem;
526
- display: flex;
527
- gap: 32px;
528
- justify-content: center;
529
-
530
- @media (max-width: 60rem) {
531
- padding: 2rem 1.5rem;
532
- }
533
-
534
- a {
535
- color: var(--color-text-weak);
536
- text-decoration: none;
537
- }
538
-
539
- a:hover {
540
- color: var(--color-text);
541
- text-decoration: underline;
542
- }
543
- }
544
-
545
- a {
546
- color: var(--color-text-strong);
547
- text-decoration: underline;
548
- text-underline-offset: 2px;
549
- text-decoration-thickness: 1px;
550
-
551
- &:hover {
552
- text-decoration-thickness: 2px;
553
- }
554
- }
555
- }
1
+ ::selection {
2
+ background: var(--color-background-interactive);
3
+ color: var(--color-text-strong);
4
+
5
+ @media (prefers-color-scheme: dark) {
6
+ background: var(--color-background-interactive);
7
+ color: var(--color-text-inverted);
8
+ }
9
+ }
10
+
11
+ [data-page="enterprise"],
12
+ [data-page="legal"] {
13
+ --color-background: hsl(0, 20%, 99%);
14
+ --color-background-weak: hsl(0, 8%, 97%);
15
+ --color-background-weak-hover: hsl(0, 8%, 94%);
16
+ --color-background-strong: hsl(0, 5%, 12%);
17
+ --color-background-strong-hover: hsl(0, 5%, 18%);
18
+ --color-background-interactive: hsl(62, 84%, 88%);
19
+ --color-background-interactive-weaker: hsl(64, 74%, 95%);
20
+
21
+ --color-text: hsl(0, 1%, 39%);
22
+ --color-text-weak: hsl(0, 1%, 60%);
23
+ --color-text-weaker: hsl(30, 2%, 81%);
24
+ --color-text-strong: hsl(0, 5%, 12%);
25
+ --color-text-inverted: hsl(0, 20%, 99%);
26
+ --color-text-success: hsl(119, 100%, 35%);
27
+
28
+ --color-border: hsl(30, 2%, 81%);
29
+ --color-border-weak: hsl(0, 1%, 85%);
30
+
31
+ --color-icon: hsl(0, 1%, 55%);
32
+ --color-success: hsl(142, 76%, 36%);
33
+
34
+ background: var(--color-background);
35
+ font-family: var(--font-mono);
36
+ color: var(--color-text);
37
+ padding-bottom: 5rem;
38
+
39
+ @media (prefers-color-scheme: dark) {
40
+ --color-background: hsl(0, 9%, 7%);
41
+ --color-background-weak: hsl(0, 6%, 10%);
42
+ --color-background-weak-hover: hsl(0, 6%, 15%);
43
+ --color-background-strong: hsl(0, 15%, 94%);
44
+ --color-background-strong-hover: hsl(0, 15%, 97%);
45
+ --color-background-interactive: hsl(62, 100%, 90%);
46
+ --color-background-interactive-weaker: hsl(60, 20%, 8%);
47
+
48
+ --color-text: hsl(0, 4%, 71%);
49
+ --color-text-weak: hsl(0, 2%, 49%);
50
+ --color-text-weaker: hsl(0, 3%, 28%);
51
+ --color-text-strong: hsl(0, 15%, 94%);
52
+ --color-text-inverted: hsl(0, 9%, 7%);
53
+ --color-text-success: hsl(119, 60%, 72%);
54
+
55
+ --color-border: hsl(0, 3%, 28%);
56
+ --color-border-weak: hsl(0, 4%, 23%);
57
+
58
+ --color-icon: hsl(10, 3%, 43%);
59
+ --color-success: hsl(142, 76%, 46%);
60
+ }
61
+
62
+ /* Header and Footer styles - copied from index.css */
63
+ [data-component="top"] {
64
+ padding: 24px 5rem;
65
+ height: 80px;
66
+ position: sticky;
67
+ top: 0;
68
+ display: flex;
69
+ justify-content: space-between;
70
+ align-items: center;
71
+ background: var(--color-background);
72
+ border-bottom: 1px solid var(--color-border-weak);
73
+ z-index: 10;
74
+
75
+ @media (max-width: 60rem) {
76
+ padding: 24px 1.5rem;
77
+ }
78
+
79
+ img {
80
+ height: 34px;
81
+ width: auto;
82
+ }
83
+
84
+ [data-component="nav-desktop"] {
85
+ ul {
86
+ display: flex;
87
+ justify-content: space-between;
88
+ align-items: center;
89
+ gap: 48px;
90
+
91
+ @media (max-width: 55rem) {
92
+ gap: 32px;
93
+ }
94
+
95
+ @media (max-width: 48rem) {
96
+ gap: 24px;
97
+ }
98
+ li {
99
+ display: inline-block;
100
+ a {
101
+ text-decoration: none;
102
+ span {
103
+ color: var(--color-text-weak);
104
+ }
105
+ }
106
+ a:hover {
107
+ text-decoration: underline;
108
+ text-underline-offset: 2px;
109
+ text-decoration-thickness: 1px;
110
+ }
111
+ [data-slot="cta-button"] {
112
+ background: var(--color-background-strong);
113
+ color: var(--color-text-inverted);
114
+ padding: 8px 16px 8px 10px;
115
+ border-radius: 4px;
116
+ font-weight: 500;
117
+ text-decoration: none;
118
+ display: flex;
119
+ align-items: center;
120
+ gap: 8px;
121
+
122
+ @media (max-width: 55rem) {
123
+ display: none;
124
+ }
125
+ }
126
+ [data-slot="cta-button"]:hover {
127
+ background: var(--color-background-strong-hover);
128
+ text-decoration: none;
129
+ }
130
+ }
131
+ }
132
+
133
+ @media (max-width: 40rem) {
134
+ display: none;
135
+ }
136
+ }
137
+
138
+ [data-component="nav-mobile"] {
139
+ button > svg {
140
+ color: var(--color-icon);
141
+ }
142
+ }
143
+
144
+ [data-component="nav-mobile-toggle"] {
145
+ border: none;
146
+ background: none;
147
+ outline: none;
148
+ height: 40px;
149
+ width: 40px;
150
+ cursor: pointer;
151
+ margin-right: -8px;
152
+ }
153
+
154
+ [data-component="nav-mobile-toggle"]:hover {
155
+ background: var(--color-background-weak);
156
+ }
157
+
158
+ [data-component="nav-mobile"] {
159
+ display: none;
160
+
161
+ @media (max-width: 40rem) {
162
+ display: block;
163
+
164
+ [data-component="nav-mobile-icon"] {
165
+ cursor: pointer;
166
+ height: 40px;
167
+ width: 40px;
168
+ display: flex;
169
+ align-items: center;
170
+ justify-content: center;
171
+ }
172
+
173
+ [data-component="nav-mobile-menu-list"] {
174
+ position: fixed;
175
+ background: var(--color-background);
176
+ top: 80px;
177
+ left: 0;
178
+ right: 0;
179
+ height: 100vh;
180
+
181
+ ul {
182
+ list-style: none;
183
+ padding: 20px 0;
184
+
185
+ li {
186
+ a {
187
+ text-decoration: none;
188
+ padding: 20px;
189
+ display: block;
190
+
191
+ span {
192
+ color: var(--color-text-weak);
193
+ }
194
+ }
195
+
196
+ a:hover {
197
+ background: var(--color-background-weak);
198
+ }
199
+ }
200
+ }
201
+ }
202
+ }
203
+ }
204
+
205
+ [data-slot="logo dark"] {
206
+ display: none;
207
+ }
208
+
209
+ @media (prefers-color-scheme: dark) {
210
+ [data-slot="logo light"] {
211
+ display: none;
212
+ }
213
+ [data-slot="logo dark"] {
214
+ display: block;
215
+ }
216
+ }
217
+ }
218
+
219
+ [data-component="footer"] {
220
+ border-top: 1px solid var(--color-border-weak);
221
+ display: flex;
222
+ flex-direction: row;
223
+
224
+ @media (max-width: 65rem) {
225
+ border-bottom: 1px solid var(--color-border-weak);
226
+ }
227
+
228
+ [data-slot="cell"] {
229
+ flex: 1;
230
+ text-align: center;
231
+
232
+ a {
233
+ text-decoration: none;
234
+ padding: 2rem 0;
235
+ width: 100%;
236
+ display: block;
237
+
238
+ span {
239
+ color: var(--color-text-weak);
240
+
241
+ @media (max-width: 40rem) {
242
+ display: none;
243
+ }
244
+ }
245
+ }
246
+
247
+ a:hover {
248
+ background: var(--color-background-weak);
249
+ text-decoration: underline;
250
+ text-underline-offset: 2px;
251
+ text-decoration-thickness: 1px;
252
+ }
253
+ }
254
+
255
+ [data-slot="cell"] + [data-slot="cell"] {
256
+ border-left: 1px solid var(--color-border-weak);
257
+
258
+ @media (max-width: 40rem) {
259
+ border-left: none;
260
+ }
261
+ }
262
+
263
+ /* Mobile: third column on its own row */
264
+ @media (max-width: 25rem) {
265
+ flex-wrap: wrap;
266
+
267
+ [data-slot="cell"] {
268
+ flex: 1 0 100%;
269
+ border-left: none;
270
+ border-top: 1px solid var(--color-border-weak);
271
+ }
272
+
273
+ [data-slot="cell"]:nth-child(1) {
274
+ border-top: none;
275
+ }
276
+ }
277
+ }
278
+
279
+ [data-component="container"] {
280
+ max-width: 67.5rem;
281
+ margin: 0 auto;
282
+ border: 1px solid var(--color-border-weak);
283
+ border-top: none;
284
+
285
+ @media (max-width: 65rem) {
286
+ border: none;
287
+ }
288
+ }
289
+
290
+ [data-component="content"] {
291
+ }
292
+
293
+ [data-component="brand-content"] {
294
+ padding: 4rem 5rem;
295
+
296
+ h1 {
297
+ font-size: 1.5rem;
298
+ font-weight: 700;
299
+ color: var(--color-text-strong);
300
+ margin-bottom: 1rem;
301
+ }
302
+
303
+ h3 {
304
+ font-size: 1.25rem;
305
+ font-weight: 500;
306
+ color: var(--color-text-strong);
307
+ margin: 2rem 0 1rem 0;
308
+ }
309
+
310
+ p {
311
+ line-height: 1.6;
312
+ margin-bottom: 2.5rem;
313
+ color: var(--color-text);
314
+ }
315
+
316
+ [data-component="download-button"] {
317
+ padding: 8px 12px 8px 20px;
318
+ background: var(--color-background-strong);
319
+ color: var(--color-text-inverted);
320
+ border: none;
321
+ border-radius: 4px;
322
+ font-weight: 500;
323
+ cursor: pointer;
324
+ display: flex;
325
+ width: fit-content;
326
+ align-items: center;
327
+ gap: 12px;
328
+ transition: all 0.2s ease;
329
+ text-decoration: none;
330
+
331
+ &:hover:not(:disabled) {
332
+ background: var(--color-background-strong-hover);
333
+ }
334
+
335
+ &:active {
336
+ transform: scale(0.98);
337
+ }
338
+
339
+ &:disabled {
340
+ opacity: 0.6;
341
+ cursor: not-allowed;
342
+ }
343
+ }
344
+
345
+ [data-component="brand-grid"] {
346
+ display: grid;
347
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
348
+ gap: 2rem;
349
+ margin-top: 4rem;
350
+ margin-bottom: 2rem;
351
+ }
352
+
353
+ [data-component="brand-grid"] img {
354
+ width: 100%;
355
+ height: auto;
356
+ display: block;
357
+ border-radius: 4px;
358
+ border: 1px solid var(--color-border-weak);
359
+ }
360
+
361
+ [data-component="brand-grid"] > div {
362
+ position: relative;
363
+ }
364
+
365
+ [data-component="actions"] {
366
+ position: absolute;
367
+ background: rgba(4, 0, 0, 0.08);
368
+ border-radius: 4px;
369
+ bottom: 0;
370
+ right: 0;
371
+ top: 0;
372
+ left: 0;
373
+ display: flex;
374
+ justify-content: center;
375
+ align-items: center;
376
+ gap: 16px;
377
+ opacity: 0;
378
+ transition: opacity 0.2s ease;
379
+
380
+ @media (max-width: 40rem) {
381
+ position: static;
382
+ opacity: 1;
383
+ background: none;
384
+ margin-top: 1rem;
385
+ justify-content: start;
386
+ }
387
+ }
388
+
389
+ [data-component="brand-grid"] > div:hover [data-component="actions"] {
390
+ opacity: 1;
391
+
392
+ @media (max-width: 40rem) {
393
+ opacity: 1;
394
+ }
395
+ }
396
+
397
+ [data-component="actions"] button {
398
+ padding: 6px 12px;
399
+ background: var(--color-background);
400
+ color: var(--color-text);
401
+ border: none;
402
+ border-radius: 4px;
403
+ font-weight: 500;
404
+ display: flex;
405
+ align-items: center;
406
+ gap: 12px;
407
+ transition: all 0.2s ease;
408
+ cursor: pointer;
409
+ box-shadow:
410
+ 0 0 0 1px rgba(19, 16, 16, 0.08),
411
+ 0 6px 8px -4px rgba(19, 16, 16, 0.12),
412
+ 0 4px 3px -2px rgba(19, 16, 16, 0.12),
413
+ 0 1px 2px -1px rgba(19, 16, 16, 0.12);
414
+
415
+ @media (max-width: 40rem) {
416
+ box-shadow: 0 0 0 1px rgba(19, 16, 16, 0.16);
417
+ }
418
+
419
+ &:hover {
420
+ background: var(--color-background);
421
+ }
422
+
423
+ &:active {
424
+ transform: scale(0.98);
425
+ box-shadow:
426
+ 0 0 0 1px rgba(19, 16, 16, 0.08),
427
+ 0 6px 8px -8px rgba(19, 16, 16, 0.5);
428
+ }
429
+ }
430
+
431
+ @media (max-width: 60rem) {
432
+ padding: 2rem 1.5rem;
433
+ }
434
+ }
435
+
436
+ [data-component="faq"] {
437
+ border-top: 1px solid var(--color-border-weak);
438
+ padding: 4rem 5rem;
439
+
440
+ @media (max-width: 60rem) {
441
+ padding: 2rem 1.5rem;
442
+ }
443
+
444
+ [data-slot="section-title"] {
445
+ margin-bottom: 24px;
446
+
447
+ h3 {
448
+ font-size: 16px;
449
+ font-weight: 500;
450
+ color: var(--color-text-strong);
451
+ margin-bottom: 12px;
452
+ }
453
+
454
+ p {
455
+ margin-bottom: 12px;
456
+ color: var(--color-text);
457
+ }
458
+ }
459
+
460
+ ul {
461
+ padding: 0;
462
+
463
+ li {
464
+ list-style: none;
465
+ margin-bottom: 24px;
466
+ line-height: 200%;
467
+
468
+ @media (max-width: 60rem) {
469
+ line-height: 180%;
470
+ }
471
+ }
472
+ }
473
+
474
+ [data-slot="faq-question"] {
475
+ display: flex;
476
+ gap: 16px;
477
+ margin-bottom: 8px;
478
+ color: var(--color-text-strong);
479
+ font-weight: 500;
480
+ cursor: pointer;
481
+ background: none;
482
+ border: none;
483
+ padding: 0;
484
+
485
+ [data-slot="faq-icon-plus"] {
486
+ flex-shrink: 0;
487
+ color: var(--color-text-weak);
488
+ margin-top: 2px;
489
+
490
+ [data-closed] & {
491
+ display: block;
492
+ }
493
+ [data-expanded] & {
494
+ display: none;
495
+ }
496
+ }
497
+ [data-slot="faq-icon-minus"] {
498
+ flex-shrink: 0;
499
+ color: var(--color-text-weak);
500
+ margin-top: 2px;
501
+
502
+ [data-closed] & {
503
+ display: none;
504
+ }
505
+ [data-expanded] & {
506
+ display: block;
507
+ }
508
+ }
509
+ [data-slot="faq-question-text"] {
510
+ flex-grow: 1;
511
+ text-align: left;
512
+ }
513
+ }
514
+
515
+ [data-slot="faq-answer"] {
516
+ margin-left: 40px;
517
+ margin-bottom: 32px;
518
+ color: var(--color-text);
519
+ }
520
+ }
521
+
522
+ [data-component="legal"] {
523
+ color: var(--color-text-weak);
524
+ text-align: center;
525
+ padding: 2rem 5rem;
526
+ display: flex;
527
+ gap: 32px;
528
+ justify-content: center;
529
+
530
+ @media (max-width: 60rem) {
531
+ padding: 2rem 1.5rem;
532
+ }
533
+
534
+ a {
535
+ color: var(--color-text-weak);
536
+ text-decoration: none;
537
+ }
538
+
539
+ a:hover {
540
+ color: var(--color-text);
541
+ text-decoration: underline;
542
+ }
543
+ }
544
+
545
+ a {
546
+ color: var(--color-text-strong);
547
+ text-decoration: underline;
548
+ text-underline-offset: 2px;
549
+ text-decoration-thickness: 1px;
550
+
551
+ &:hover {
552
+ text-decoration-thickness: 2px;
553
+ }
554
+ }
555
+ }