@livx.cc/bare-v3 0.1.0-alpha.10

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 (37) hide show
  1. package/README.md +39 -0
  2. package/dist/bare.css +1758 -0
  3. package/dist/bare.min.css +1 -0
  4. package/dist/manifest.json +457 -0
  5. package/dist/references/app-frame.md +9 -0
  6. package/dist/references/button.md +9 -0
  7. package/dist/references/card-structure.md +9 -0
  8. package/dist/references/command.md +9 -0
  9. package/dist/references/content.md +9 -0
  10. package/dist/references/control-structure.md +9 -0
  11. package/dist/references/conversation.md +9 -0
  12. package/dist/references/cross-screen.md +34 -0
  13. package/dist/references/data-display.md +9 -0
  14. package/dist/references/dialog.md +9 -0
  15. package/dist/references/disclosure.md +9 -0
  16. package/dist/references/feedback.md +9 -0
  17. package/dist/references/field.md +9 -0
  18. package/dist/references/form-composition.md +9 -0
  19. package/dist/references/foundation.md +9 -0
  20. package/dist/references/icons.md +14 -0
  21. package/dist/references/identity.md +9 -0
  22. package/dist/references/layout.md +9 -0
  23. package/dist/references/marketing.md +9 -0
  24. package/dist/references/mobile.md +9 -0
  25. package/dist/references/motion.md +44 -0
  26. package/dist/references/navigation.md +9 -0
  27. package/dist/references/page-layout.md +9 -0
  28. package/dist/references/reading.md +9 -0
  29. package/dist/references/row.md +9 -0
  30. package/dist/references/start.md +21 -0
  31. package/dist/references/status.md +9 -0
  32. package/dist/references/steps.md +9 -0
  33. package/dist/references/surface.md +9 -0
  34. package/dist/references/tabs.md +9 -0
  35. package/dist/references/type.md +9 -0
  36. package/dist/ui.js +598 -0
  37. package/package.json +47 -0
package/dist/bare.css ADDED
@@ -0,0 +1,1758 @@
1
+ @layer bare.reset {
2
+ :where(.b3-root), :where(.b3-root *) {
3
+ box-sizing: border-box;
4
+ }
5
+
6
+ :where(.b3-root) {
7
+ font-family: var(--b3-font-body);
8
+ background: var(--b3-color-canvas);
9
+ color: var(--b3-color-text);
10
+ color-scheme: light;
11
+ margin: 0;
12
+ font-size: 1rem;
13
+ line-height: 1.5;
14
+ }
15
+
16
+ :where(.b3-root > body) {
17
+ margin: 0;
18
+ }
19
+
20
+ :where(.b3-root) :where(button, input, select, textarea) {
21
+ font: inherit;
22
+ }
23
+
24
+ :where(.b3-root) :where(h1, h2, h3, p) {
25
+ margin: 0;
26
+ }
27
+
28
+ :where(.b3-root) :where(button, a, input, select, textarea, summary, [tabindex]):focus-visible {
29
+ outline: 3px solid var(--b3-color-focus);
30
+ outline-offset: 3px;
31
+ }
32
+
33
+ :where(.b3-root) :where(img, svg) {
34
+ max-inline-size: 100%;
35
+ }
36
+
37
+ @media (prefers-reduced-motion: reduce) {
38
+ :where(.b3-root *), :where(.b3-root *):before, :where(.b3-root *):after {
39
+ transition-duration: .01ms !important;
40
+ animation-duration: .01ms !important;
41
+ animation-iteration-count: 1 !important;
42
+ }
43
+ }
44
+
45
+ [data-b3-motion="reduce"] *, [data-b3-motion="reduce"] :before, [data-b3-motion="reduce"] :after, [data-b3-motion="reduce"] ::backdrop {
46
+ scroll-behavior: auto !important;
47
+ transition: none !important;
48
+ animation: none !important;
49
+ }
50
+
51
+ :where(.b3-root [hidden]):not([hidden="until-found"]) {
52
+ display: none !important;
53
+ }
54
+
55
+ :where(.b3-root) :where(input[type="checkbox"], input[type="radio"], input[type="range"]) {
56
+ accent-color: var(--b3-color-accent);
57
+ }
58
+ }
59
+
60
+ @layer bare.tokens {
61
+ .b3-root {
62
+ --b3-color-canvas: #f6f5f0;
63
+ --b3-color-surface: #fff;
64
+ --b3-color-text: #202923;
65
+ --b3-color-muted: #59655d;
66
+ --b3-color-border: #d5dbd3;
67
+ --b3-color-accent: #245c42;
68
+ --b3-color-on-accent: #fff;
69
+ --b3-color-danger: #a62c35;
70
+ --b3-color-focus: #276bdd;
71
+ --b3-font-body: ui-sans-serif, system-ui, sans-serif;
72
+ --b3-font-display: var(--b3-font-body);
73
+ --b3-radius: .75rem;
74
+ --b3-space: 1rem;
75
+ --b3-content: 68rem;
76
+ }
77
+
78
+ .b3-root[data-b3-theme="dark"] {
79
+ color-scheme: dark;
80
+ --b3-color-canvas: #141c19;
81
+ --b3-color-surface: #202c26;
82
+ --b3-color-text: #edf3ec;
83
+ --b3-color-muted: #a8b9ad;
84
+ --b3-color-border: #415348;
85
+ --b3-color-accent: #aadbb8;
86
+ --b3-color-on-accent: #132b1b;
87
+ --b3-color-danger: #ffadb1;
88
+ --b3-color-focus: #9ac4ff;
89
+ }
90
+
91
+ .b3-root {
92
+ --b3-space-1: .25rem;
93
+ --b3-space-2: .5rem;
94
+ --b3-space-3: .75rem;
95
+ --b3-space-4: 1rem;
96
+ --b3-space-6: 1.5rem;
97
+ --b3-space-8: 2rem;
98
+ --b3-space-12: 3rem;
99
+ --b3-radius-small: .375rem;
100
+ --b3-radius-large: 1.25rem;
101
+ --b3-shadow: 0 8px 32px #14231b14;
102
+ --b3-shadow-raised: 0 16px 56px #14231b24;
103
+ --b3-color-success: #256443;
104
+ --b3-color-warning: #805100;
105
+ --b3-color-info: #275f99;
106
+ --b3-duration: .16s;
107
+ }
108
+
109
+ .b3-root[data-b3-theme="dark"] {
110
+ --b3-shadow: 0 8px 32px #0004;
111
+ --b3-shadow-raised: 0 16px 56px #0007;
112
+ --b3-color-success: #99d9ab;
113
+ --b3-color-warning: #f2c76c;
114
+ --b3-color-info: #a2cfff;
115
+ }
116
+ }
117
+
118
+ @layer bare.layout {
119
+ .b3-shell {
120
+ inline-size: min(100%, var(--b3-content));
121
+ margin-inline: auto;
122
+ padding: clamp(1rem, 4vw, 3rem);
123
+ }
124
+
125
+ .b3-stack {
126
+ gap: var(--b3-space);
127
+ flex-direction: column;
128
+ min-inline-size: 0;
129
+ display: flex;
130
+ }
131
+
132
+ .b3-stack:where(dialog:not([open])) {
133
+ display: none;
134
+ }
135
+
136
+ .b3-scroll {
137
+ overscroll-behavior: contain;
138
+ scrollbar-gutter: stable;
139
+ flex: auto;
140
+ min-block-size: 0;
141
+ min-inline-size: 0;
142
+ overflow: auto;
143
+ }
144
+
145
+ .b3-stack:has( > .b3-scroll) > :not(.b3-scroll) {
146
+ flex-shrink: 0;
147
+ }
148
+
149
+ .b3-cluster {
150
+ align-items: center;
151
+ gap: var(--b3-space);
152
+ flex-wrap: wrap;
153
+ min-inline-size: 0;
154
+ display: flex;
155
+ }
156
+
157
+ .b3-inline {
158
+ vertical-align: middle;
159
+ align-items: center;
160
+ gap: .5em;
161
+ min-inline-size: 0;
162
+ max-inline-size: 100%;
163
+ display: inline-flex;
164
+ }
165
+
166
+ .b3-inline > * {
167
+ min-inline-size: 0;
168
+ }
169
+
170
+ .b3-grid {
171
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--b3-grid-min, 17rem)), 1fr));
172
+ gap: var(--b3-space);
173
+ display: grid;
174
+ }
175
+
176
+ .b3-split {
177
+ justify-content: space-between;
178
+ align-items: center;
179
+ gap: var(--b3-space);
180
+ flex-wrap: wrap;
181
+ display: flex;
182
+ }
183
+
184
+ .b3-page {
185
+ flex-direction: column;
186
+ min-block-size: 100svh;
187
+ display: flex;
188
+ }
189
+
190
+ .b3-page-body {
191
+ flex: 1;
192
+ min-inline-size: 0;
193
+ }
194
+
195
+ .b3-app-layout {
196
+ grid-template-columns: minmax(12rem, 16rem) minmax(0, 1fr);
197
+ min-block-size: 100svh;
198
+ display: grid;
199
+ }
200
+
201
+ .b3-sidebar {
202
+ padding: var(--b3-space-6);
203
+ border-inline-end: 1px solid var(--b3-color-border);
204
+ background: var(--b3-color-surface);
205
+ min-inline-size: 0;
206
+ }
207
+
208
+ .b3-center {
209
+ padding: var(--b3-space-6);
210
+ place-items: center;
211
+ display: grid;
212
+ }
213
+
214
+ .b3-cover {
215
+ min-block-size: min(42rem, 85svh);
216
+ padding-block: var(--b3-space-12);
217
+ flex-direction: column;
218
+ justify-content: center;
219
+ display: flex;
220
+ }
221
+
222
+ .b3-reel {
223
+ gap: var(--b3-space);
224
+ scroll-snap-type: x proximity;
225
+ padding-block-end: var(--b3-space-2);
226
+ display: flex;
227
+ overflow-x: auto;
228
+ }
229
+
230
+ .b3-reel > * {
231
+ scroll-snap-align: start;
232
+ flex: 0 0 min(85%, 20rem);
233
+ }
234
+
235
+ @media (width <= 48rem) {
236
+ .b3-app-layout {
237
+ grid-template-columns: minmax(0, 1fr);
238
+ }
239
+
240
+ .b3-sidebar {
241
+ border-inline-end: 0;
242
+ border-block-end: 1px solid var(--b3-color-border);
243
+ }
244
+ }
245
+ }
246
+
247
+ @layer bare.components {
248
+ .b3-title {
249
+ font-family: var(--b3-font-display);
250
+ letter-spacing: -.04em;
251
+ overflow-wrap: anywhere;
252
+ font-size: clamp(2rem, 7vw, 4rem);
253
+ line-height: 1.05;
254
+ }
255
+
256
+ .b3-heading {
257
+ font-family: var(--b3-font-display);
258
+ letter-spacing: -.02em;
259
+ font-size: 1.375rem;
260
+ line-height: 1.25;
261
+ }
262
+
263
+ .b3-muted {
264
+ color: var(--b3-color-muted);
265
+ }
266
+
267
+ .b3-label {
268
+ letter-spacing: .06em;
269
+ text-transform: uppercase;
270
+ font-size: .8125rem;
271
+ font-weight: 650;
272
+ }
273
+
274
+ .b3-surface {
275
+ background: var(--b3-color-surface);
276
+ color: var(--b3-color-text);
277
+ border: 1px solid var(--b3-color-border);
278
+ border-radius: var(--b3-radius);
279
+ padding: clamp(1rem, 3vw, 2rem);
280
+ }
281
+
282
+ .b3-button {
283
+ border-radius: var(--b3-radius);
284
+ background: var(--b3-color-accent);
285
+ min-block-size: 2.75rem;
286
+ color: var(--b3-color-on-accent);
287
+ cursor: pointer;
288
+ border: 1px solid #0000;
289
+ justify-content: center;
290
+ align-items: center;
291
+ gap: .5rem;
292
+ padding: .625rem 1rem;
293
+ font-weight: 650;
294
+ text-decoration: none;
295
+ display: inline-flex;
296
+ }
297
+
298
+ .b3-button[data-b3-emphasis="quiet"] {
299
+ color: var(--b3-color-text);
300
+ border-color: var(--b3-color-border);
301
+ background: none;
302
+ }
303
+
304
+ .b3-button:disabled {
305
+ opacity: .5;
306
+ cursor: not-allowed;
307
+ }
308
+
309
+ .b3-field {
310
+ align-content: start;
311
+ gap: .375rem;
312
+ min-inline-size: 0;
313
+ display: grid;
314
+ }
315
+
316
+ .b3-input {
317
+ border: 1px solid var(--b3-color-border);
318
+ border-radius: var(--b3-radius);
319
+ background: var(--b3-color-surface);
320
+ min-block-size: 2.75rem;
321
+ inline-size: 100%;
322
+ min-inline-size: 0;
323
+ color: var(--b3-color-text);
324
+ padding: .625rem .75rem;
325
+ }
326
+
327
+ .b3-error {
328
+ color: var(--b3-color-danger);
329
+ font-size: .875rem;
330
+ }
331
+
332
+ select.b3-input:not([multiple]):not([size]), select.b3-input[size="1"]:not([multiple]) {
333
+ appearance: none;
334
+ background-image: linear-gradient(45deg, #0000 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, #0000 50%);
335
+ background-position: right calc(1rem + 5px) center, right 1rem center;
336
+ background-repeat: no-repeat;
337
+ background-size: 5px 5px;
338
+ padding-inline-end: 2.5rem;
339
+ }
340
+
341
+ select.b3-input:not([multiple]):not([size]):dir(rtl), select.b3-input[size="1"]:not([multiple]):dir(rtl) {
342
+ background-position: 1rem, calc(1rem + 5px);
343
+ }
344
+
345
+ @media (forced-colors: active) {
346
+ select.b3-input:not([multiple]):not([size]), select.b3-input[size="1"]:not([multiple]) {
347
+ appearance: auto;
348
+ background-image: none;
349
+ }
350
+ }
351
+
352
+ .b3-row {
353
+ border-block-end: 1px solid var(--b3-color-border);
354
+ align-items: center;
355
+ gap: .75rem;
356
+ padding-block: 1rem;
357
+ display: flex;
358
+ }
359
+
360
+ .b3-badge {
361
+ border: 1px solid var(--b3-color-border);
362
+ border-radius: 100vmax;
363
+ align-items: center;
364
+ padding: .125rem .5rem;
365
+ font-size: .75rem;
366
+ font-weight: 650;
367
+ display: inline-flex;
368
+ }
369
+
370
+ .b3-progress {
371
+ block-size: .5rem;
372
+ inline-size: 100%;
373
+ accent-color: var(--b3-color-accent);
374
+ }
375
+
376
+ .b3-button {
377
+ transition: box-shadow var(--b3-duration),
378
+ border-color var(--b3-duration);
379
+ }
380
+
381
+ @media (hover: hover) {
382
+ .b3-button:not(:disabled):hover {
383
+ box-shadow: inset 0 0 0 100vmax #00000012;
384
+ }
385
+ }
386
+
387
+ .b3-button:not(:disabled):active {
388
+ box-shadow: inset 0 0 0 100vmax #00000024;
389
+ }
390
+
391
+ .b3-button[data-b3-emphasis="outline"] {
392
+ color: var(--b3-color-accent);
393
+ background: none;
394
+ border-color: currentColor;
395
+ }
396
+
397
+ .b3-button[data-b3-emphasis="danger"] {
398
+ background: var(--b3-color-danger);
399
+ color: var(--b3-color-canvas);
400
+ }
401
+
402
+ .b3-button[data-b3-size="small"] {
403
+ padding: .5rem .75rem;
404
+ font-size: .875rem;
405
+ }
406
+
407
+ .b3-button[data-b3-size="large"] {
408
+ min-block-size: 3.25rem;
409
+ padding: .875rem 1.5rem;
410
+ }
411
+
412
+ .b3-button[aria-busy="true"] {
413
+ cursor: progress;
414
+ }
415
+
416
+ .b3-icon {
417
+ vertical-align: -.2em;
418
+ flex: none;
419
+ block-size: 1.25em;
420
+ inline-size: 1.25em;
421
+ display: inline-block;
422
+ }
423
+
424
+ .b3-input:disabled {
425
+ opacity: .6;
426
+ cursor: not-allowed;
427
+ }
428
+
429
+ .b3-input[readonly] {
430
+ background: var(--b3-color-canvas);
431
+ }
432
+
433
+ .b3-input::placeholder {
434
+ color: var(--b3-color-muted);
435
+ opacity: .8;
436
+ }
437
+
438
+ .b3-input-group {
439
+ border: 1px solid var(--b3-color-border);
440
+ border-radius: var(--b3-radius);
441
+ background: var(--b3-color-surface);
442
+ align-items: stretch;
443
+ min-inline-size: 0;
444
+ display: flex;
445
+ overflow: clip;
446
+ }
447
+
448
+ .b3-input-group > .b3-input {
449
+ border: 0;
450
+ border-radius: 0;
451
+ flex: 1;
452
+ }
453
+
454
+ .b3-input-group:focus-within {
455
+ outline: 3px solid var(--b3-color-focus);
456
+ outline-offset: 3px;
457
+ }
458
+
459
+ .b3-input-affix {
460
+ color: var(--b3-color-muted);
461
+ background: var(--b3-color-canvas);
462
+ align-items: center;
463
+ padding-inline: .75rem;
464
+ display: flex;
465
+ }
466
+
467
+ .b3-choice {
468
+ cursor: pointer;
469
+ align-items: start;
470
+ gap: .75rem;
471
+ padding-block: .5rem;
472
+ display: flex;
473
+ }
474
+
475
+ .b3-choice input {
476
+ --b3-choice-control: 1.125rem;
477
+ inline-size: var(--b3-choice-control);
478
+ block-size: var(--b3-choice-control);
479
+ flex: none;
480
+ margin: 0;
481
+ margin-block-start: max(0px, calc((1lh - var(--b3-choice-control)) / 2));
482
+ }
483
+
484
+ .b3-choice > .b3-switch {
485
+ --b3-choice-control: 1.625rem;
486
+ }
487
+
488
+ .b3-switch {
489
+ appearance: none;
490
+ background: var(--b3-color-muted);
491
+ border: 2px solid var(--b3-color-muted);
492
+ cursor: pointer;
493
+ border-radius: 2rem;
494
+ position: relative;
495
+ block-size: 1.625rem !important;
496
+ inline-size: 2.75rem !important;
497
+ }
498
+
499
+ .b3-switch:before {
500
+ content: "";
501
+ background: var(--b3-color-surface);
502
+ border-radius: 50%;
503
+ block-size: 1.125rem;
504
+ inline-size: 1.125rem;
505
+ position: absolute;
506
+ inset-block-start: .125rem;
507
+ inset-inline-start: .125rem;
508
+ }
509
+
510
+ .b3-switch:checked {
511
+ background: var(--b3-color-accent);
512
+ border-color: var(--b3-color-accent);
513
+ }
514
+
515
+ .b3-switch:checked:before {
516
+ background: var(--b3-color-on-accent);
517
+ inset-inline-start: calc(100% - 1.25rem);
518
+ }
519
+
520
+ .b3-switch:disabled {
521
+ opacity: .5;
522
+ cursor: not-allowed;
523
+ }
524
+
525
+ .b3-card-header, .b3-card-footer {
526
+ justify-content: space-between;
527
+ align-items: center;
528
+ gap: var(--b3-space);
529
+ flex-wrap: wrap;
530
+ display: flex;
531
+ }
532
+
533
+ .b3-card-header {
534
+ margin-block-end: var(--b3-space-4);
535
+ }
536
+
537
+ .b3-card-footer {
538
+ border-block-start: 1px solid var(--b3-color-border);
539
+ margin-block-start: var(--b3-space-4);
540
+ padding-block-start: var(--b3-space-4);
541
+ }
542
+
543
+ .b3-surface[data-b3-elevation="raised"] {
544
+ box-shadow: var(--b3-shadow);
545
+ }
546
+
547
+ .b3-divider {
548
+ border: 0;
549
+ border-block-start: 1px solid var(--b3-color-border);
550
+ margin-block: var(--b3-space);
551
+ }
552
+
553
+ .b3-alert {
554
+ --b3-status-color: var(--b3-color-info);
555
+ border: 1px solid var(--b3-status-color);
556
+ border-radius: var(--b3-radius-small);
557
+ color: var(--b3-color-text);
558
+ background: color-mix(in srgb, var(--b3-status-color) 8%, var(--b3-color-surface));
559
+ border-inline-start-width: 4px;
560
+ align-items: start;
561
+ gap: .75rem;
562
+ padding: 1rem;
563
+ display: flex;
564
+ }
565
+
566
+ .b3-alert[data-b3-tone="success"], .b3-badge[data-b3-tone="success"] {
567
+ --b3-status-color: var(--b3-color-success);
568
+ }
569
+
570
+ .b3-alert[data-b3-tone="warning"], .b3-badge[data-b3-tone="warning"] {
571
+ --b3-status-color: var(--b3-color-warning);
572
+ }
573
+
574
+ .b3-alert[data-b3-tone="danger"], .b3-badge[data-b3-tone="danger"] {
575
+ --b3-status-color: var(--b3-color-danger);
576
+ }
577
+
578
+ .b3-badge[data-b3-tone] {
579
+ color: var(--b3-status-color, var(--b3-color-info));
580
+ background: color-mix(in srgb, currentColor 7%, transparent);
581
+ border-color: currentColor;
582
+ }
583
+
584
+ .b3-toast-region {
585
+ z-index: 100;
586
+ pointer-events: none;
587
+ gap: .75rem;
588
+ inline-size: min(24rem, 100% - 2rem);
589
+ display: grid;
590
+ position: fixed;
591
+ inset-block-end: 1rem;
592
+ inset-inline-end: 1rem;
593
+ }
594
+
595
+ .b3-toast {
596
+ border: 1px solid var(--b3-color-border);
597
+ border-radius: var(--b3-radius);
598
+ background: var(--b3-color-surface);
599
+ color: var(--b3-color-text);
600
+ box-shadow: var(--b3-shadow-raised);
601
+ pointer-events: auto;
602
+ align-items: start;
603
+ gap: 1rem;
604
+ padding: 1rem;
605
+ display: flex;
606
+ }
607
+
608
+ .b3-spinner {
609
+ border: 2px solid;
610
+ vertical-align: -.125em;
611
+ border-inline-end-color: #0000;
612
+ border-radius: 50%;
613
+ flex: none;
614
+ block-size: 1.125em;
615
+ inline-size: 1.125em;
616
+ animation: .8s linear infinite b3-spin;
617
+ display: inline-block;
618
+ }
619
+
620
+ @keyframes b3-spin {
621
+ to {
622
+ transform: rotate(360deg);
623
+ }
624
+ }
625
+
626
+ .b3-skeleton {
627
+ background: var(--b3-color-border);
628
+ border-radius: var(--b3-radius-small);
629
+ min-block-size: 1rem;
630
+ animation: 1.8s ease-in-out infinite b3-pulse;
631
+ }
632
+
633
+ @keyframes b3-pulse {
634
+ 50% {
635
+ opacity: .45;
636
+ }
637
+ }
638
+
639
+ .b3-avatar {
640
+ background: var(--b3-color-accent);
641
+ block-size: 2.5rem;
642
+ inline-size: 2.5rem;
643
+ color: var(--b3-color-on-accent);
644
+ border-radius: 50%;
645
+ flex: none;
646
+ place-items: center;
647
+ font-size: .875rem;
648
+ font-weight: 650;
649
+ display: inline-grid;
650
+ overflow: hidden;
651
+ }
652
+
653
+ .b3-avatar > img {
654
+ object-fit: cover;
655
+ block-size: 100%;
656
+ inline-size: 100%;
657
+ }
658
+
659
+ .b3-avatar-stack {
660
+ padding-inline-start: .5rem;
661
+ display: flex;
662
+ }
663
+
664
+ .b3-avatar-stack > .b3-avatar {
665
+ border: 2px solid var(--b3-color-surface);
666
+ margin-inline-start: -.5rem;
667
+ }
668
+
669
+ .b3-kbd {
670
+ border: 1px solid var(--b3-color-border);
671
+ background: var(--b3-color-surface);
672
+ color: var(--b3-color-muted);
673
+ border-block-end-width: 2px;
674
+ border-radius: .25rem;
675
+ padding: .15rem .35rem;
676
+ font: .75rem ui-monospace, monospace;
677
+ }
678
+
679
+ .b3-table-wrap {
680
+ border: 1px solid var(--b3-color-border);
681
+ border-radius: var(--b3-radius);
682
+ overflow-x: auto;
683
+ }
684
+
685
+ .b3-table {
686
+ border-collapse: collapse;
687
+ text-align: start;
688
+ font-variant-numeric: tabular-nums;
689
+ inline-size: 100%;
690
+ }
691
+
692
+ .b3-table th {
693
+ color: var(--b3-color-muted);
694
+ background: var(--b3-color-canvas);
695
+ font-size: .75rem;
696
+ font-weight: 650;
697
+ }
698
+
699
+ .b3-table :is(th, td) {
700
+ border-block-end: 1px solid var(--b3-color-border);
701
+ text-align: start;
702
+ vertical-align: middle;
703
+ padding: .875rem 1rem;
704
+ }
705
+
706
+ .b3-table tbody tr:last-child td {
707
+ border-block-end: 0;
708
+ }
709
+
710
+ .b3-table[data-b3-density="compact"] :is(th, td) {
711
+ padding: .5rem .75rem;
712
+ }
713
+
714
+ .b3-table tbody tr[aria-selected="true"] {
715
+ background: color-mix(in srgb, var(--b3-color-accent) 10%, var(--b3-color-surface));
716
+ }
717
+
718
+ .b3-definition {
719
+ grid-template-columns: minmax(7rem, 1fr) minmax(0, 2fr);
720
+ gap: .75rem 1.5rem;
721
+ margin: 0;
722
+ display: grid;
723
+ }
724
+
725
+ .b3-definition dt {
726
+ color: var(--b3-color-muted);
727
+ }
728
+
729
+ .b3-definition dd {
730
+ overflow-wrap: anywhere;
731
+ margin: 0;
732
+ }
733
+
734
+ .b3-stat {
735
+ gap: .5rem;
736
+ display: grid;
737
+ }
738
+
739
+ .b3-stat-value {
740
+ letter-spacing: -.045em;
741
+ font-variant-numeric: tabular-nums;
742
+ font-size: clamp(2rem, 5vw, 3rem);
743
+ font-weight: 650;
744
+ line-height: 1.1;
745
+ }
746
+
747
+ .b3-nav {
748
+ border-block-end: 1px solid var(--b3-color-border);
749
+ flex-wrap: wrap;
750
+ align-items: center;
751
+ gap: .5rem;
752
+ padding: .75rem;
753
+ display: flex;
754
+ }
755
+
756
+ .b3-nav[data-b3-orientation="vertical"] {
757
+ border-block-end: 0;
758
+ flex-direction: column;
759
+ align-items: stretch;
760
+ }
761
+
762
+ .b3-nav-link {
763
+ border-radius: var(--b3-radius-small);
764
+ min-block-size: 2.75rem;
765
+ color: var(--b3-color-muted);
766
+ align-items: center;
767
+ gap: .5rem;
768
+ padding: .625rem .875rem;
769
+ text-decoration: none;
770
+ display: flex;
771
+ }
772
+
773
+ .b3-nav-link[aria-current="page"] {
774
+ background: color-mix(in srgb, var(--b3-color-accent) 10%, var(--b3-color-surface));
775
+ color: var(--b3-color-accent);
776
+ font-weight: 650;
777
+ }
778
+
779
+ .b3-nav-link:hover {
780
+ background: var(--b3-color-surface);
781
+ color: var(--b3-color-text);
782
+ }
783
+
784
+ .b3-breadcrumbs {
785
+ color: var(--b3-color-muted);
786
+ flex-wrap: wrap;
787
+ align-items: center;
788
+ gap: .5rem;
789
+ margin: 0;
790
+ padding: 0;
791
+ font-size: .875rem;
792
+ list-style: none;
793
+ display: flex;
794
+ }
795
+
796
+ .b3-breadcrumbs li + li:before {
797
+ content: "/";
798
+ color: var(--b3-color-border);
799
+ margin-inline-end: .5rem;
800
+ }
801
+
802
+ .b3-tablist {
803
+ border-block-end: 1px solid var(--b3-color-border);
804
+ gap: .25rem;
805
+ display: flex;
806
+ overflow-x: auto;
807
+ }
808
+
809
+ .b3-tab {
810
+ appearance: none;
811
+ color: var(--b3-color-muted);
812
+ font: inherit;
813
+ white-space: nowrap;
814
+ cursor: pointer;
815
+ background: none;
816
+ border: 0;
817
+ border-block-end: 2px solid #0000;
818
+ min-block-size: 2.75rem;
819
+ padding: .75rem 1rem;
820
+ }
821
+
822
+ .b3-tab[aria-selected="true"] {
823
+ color: var(--b3-color-accent);
824
+ border-block-end-color: currentColor;
825
+ font-weight: 650;
826
+ }
827
+
828
+ .b3-tab:disabled {
829
+ opacity: .5;
830
+ cursor: not-allowed;
831
+ }
832
+
833
+ .b3-tabpanel {
834
+ padding-block: var(--b3-space-4);
835
+ }
836
+
837
+ .b3-accordion {
838
+ border-block-end: 1px solid var(--b3-color-border);
839
+ }
840
+
841
+ .b3-accordion > summary {
842
+ cursor: pointer;
843
+ padding: 1rem .25rem;
844
+ font-weight: 650;
845
+ }
846
+
847
+ .b3-accordion > :not(summary) {
848
+ padding: 0 .25rem 1rem;
849
+ }
850
+
851
+ .b3-dropdown {
852
+ display: inline-block;
853
+ position: relative;
854
+ }
855
+
856
+ .b3-dropdown > summary {
857
+ list-style: none;
858
+ }
859
+
860
+ .b3-dropdown > summary::-webkit-details-marker {
861
+ display: none;
862
+ }
863
+
864
+ .b3-dropdown-panel {
865
+ z-index: 20;
866
+ border: 1px solid var(--b3-color-border);
867
+ border-radius: var(--b3-radius);
868
+ background: var(--b3-color-surface);
869
+ max-block-size: 70svh;
870
+ inline-size: max-content;
871
+ min-inline-size: min(12rem, 85vw);
872
+ max-inline-size: min(22rem, 85vw);
873
+ color: var(--b3-color-text);
874
+ box-shadow: var(--b3-shadow-raised);
875
+ padding: .5rem;
876
+ position: absolute;
877
+ inset-block-start: calc(100% + .5rem);
878
+ inset-inline-start: 0;
879
+ overflow-y: auto;
880
+ }
881
+
882
+ .b3-dialog {
883
+ overscroll-behavior: contain;
884
+ border: 1px solid var(--b3-color-border);
885
+ border-radius: var(--b3-radius-large);
886
+ background: var(--b3-color-surface);
887
+ max-block-size: calc(100svh - 2rem);
888
+ inline-size: min(32rem, 100% - 2rem);
889
+ color: var(--b3-color-text);
890
+ box-shadow: var(--b3-shadow-raised);
891
+ padding: 1.5rem;
892
+ overflow: auto;
893
+ }
894
+
895
+ .b3-dialog::backdrop {
896
+ background: #101b17a6;
897
+ }
898
+
899
+ .b3-dialog[data-b3-placement="end"] {
900
+ border-radius: 0;
901
+ block-size: 100svh;
902
+ max-block-size: 100svh;
903
+ inline-size: min(28rem, 100%);
904
+ margin: 0;
905
+ margin-inline-start: auto;
906
+ }
907
+
908
+ @media (prefers-reduced-motion: no-preference) {
909
+ .b3-dialog[open] {
910
+ animation: .28s cubic-bezier(.16, 1, .3, 1) b3-dialog-enter;
911
+ }
912
+
913
+ .b3-dialog[open][data-b3-placement="end"] {
914
+ animation-name: b3-drawer-enter;
915
+ }
916
+
917
+ .b3-dialog::backdrop, .b3-sheet::backdrop {
918
+ transition: opacity .16s ease-out;
919
+ }
920
+
921
+ .b3-dialog[data-b3-closing]::backdrop, .b3-sheet[data-b3-closing]::backdrop {
922
+ opacity: 0;
923
+ }
924
+
925
+ @keyframes b3-dialog-enter {
926
+ from {
927
+ opacity: 0;
928
+ transform: translateY(8px) scale(.96);
929
+ }
930
+ }
931
+
932
+ @keyframes b3-drawer-enter {
933
+ from {
934
+ opacity: 0;
935
+ translate: var(--b3-drawer-offset, 1rem);
936
+ }
937
+ }
938
+
939
+ .b3-dialog[dir="rtl"][data-b3-placement="end"], [dir="rtl"] .b3-dialog[data-b3-placement="end"] {
940
+ --b3-drawer-offset: -1rem;
941
+ }
942
+ }
943
+
944
+ .b3-tree {
945
+ border-inline-start: 1px solid var(--b3-color-border);
946
+ padding-inline-start: 1rem;
947
+ list-style: none;
948
+ }
949
+
950
+ .b3-tree summary {
951
+ cursor: pointer;
952
+ padding-block: .5rem;
953
+ }
954
+
955
+ .b3-prose {
956
+ overflow-wrap: anywhere;
957
+ max-inline-size: 65ch;
958
+ line-height: 1.75;
959
+ }
960
+
961
+ .b3-prose :is(p, ul, ol, blockquote, pre) {
962
+ margin-block: 1rem;
963
+ }
964
+
965
+ .b3-prose :is(h2, h3, h4) {
966
+ margin-block: 1.75rem .75rem;
967
+ line-height: 1.25;
968
+ }
969
+
970
+ .b3-prose blockquote {
971
+ border-inline-start: 3px solid var(--b3-color-accent);
972
+ color: var(--b3-color-muted);
973
+ margin-inline: 0;
974
+ padding-inline-start: 1rem;
975
+ }
976
+
977
+ .b3-prose pre {
978
+ background: var(--b3-color-surface);
979
+ border: 1px solid var(--b3-color-border);
980
+ border-radius: var(--b3-radius-small);
981
+ padding: 1rem;
982
+ overflow-x: auto;
983
+ }
984
+
985
+ .b3-visually-hidden {
986
+ clip-path: inset(50%);
987
+ white-space: nowrap;
988
+ block-size: 1px;
989
+ inline-size: 1px;
990
+ position: absolute;
991
+ overflow: hidden;
992
+ }
993
+
994
+ .b3-skip-link {
995
+ z-index: 1000;
996
+ border-radius: var(--b3-radius-small);
997
+ background: var(--b3-color-accent);
998
+ max-inline-size: calc(100% - 1.5rem);
999
+ color: var(--b3-color-on-accent);
1000
+ padding: .75rem 1rem;
1001
+ font-weight: 650;
1002
+ position: fixed;
1003
+ inset-block-start: max(.75rem, env(safe-area-inset-top, 0px));
1004
+ inset-inline-start: .75rem;
1005
+ }
1006
+
1007
+ .b3-skip-link:not(:focus) {
1008
+ clip-path: inset(50%);
1009
+ white-space: nowrap;
1010
+ block-size: 1px;
1011
+ inline-size: 1px;
1012
+ padding: 0;
1013
+ overflow: hidden;
1014
+ }
1015
+
1016
+ .b3-hero {
1017
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1018
+ align-items: center;
1019
+ gap: clamp(2rem, 6vw, 6rem);
1020
+ padding-block: clamp(3rem, 8vw, 7rem);
1021
+ display: grid;
1022
+ }
1023
+
1024
+ .b3-hero[data-b3-align="center"] {
1025
+ text-align: center;
1026
+ grid-template-columns: minmax(0, 1fr);
1027
+ justify-items: center;
1028
+ }
1029
+
1030
+ .b3-hero-copy {
1031
+ gap: 1.5rem;
1032
+ max-inline-size: 40rem;
1033
+ display: grid;
1034
+ }
1035
+
1036
+ .b3-feature {
1037
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
1038
+ align-items: center;
1039
+ gap: clamp(1.5rem, 5vw, 5rem);
1040
+ padding-block: clamp(2rem, 6vw, 5rem);
1041
+ display: grid;
1042
+ }
1043
+
1044
+ .b3-feature[data-b3-reverse="true"] > :first-child {
1045
+ order: 2;
1046
+ }
1047
+
1048
+ .b3-feature-icon {
1049
+ border-radius: var(--b3-radius);
1050
+ background: var(--b3-color-accent);
1051
+ block-size: 3rem;
1052
+ inline-size: 3rem;
1053
+ color: var(--b3-color-on-accent);
1054
+ place-items: center;
1055
+ display: inline-grid;
1056
+ }
1057
+
1058
+ .b3-pricing {
1059
+ border: 1px solid var(--b3-color-border);
1060
+ border-radius: var(--b3-radius-large);
1061
+ background: var(--b3-color-surface);
1062
+ color: var(--b3-color-text);
1063
+ flex-direction: column;
1064
+ gap: 1.25rem;
1065
+ padding: clamp(1.25rem, 3vw, 2rem);
1066
+ display: flex;
1067
+ }
1068
+
1069
+ .b3-pricing[data-b3-featured="true"] {
1070
+ border: 2px solid var(--b3-color-accent);
1071
+ box-shadow: var(--b3-shadow);
1072
+ }
1073
+
1074
+ .b3-pricing > .b3-button:last-child {
1075
+ margin-block-start: auto;
1076
+ }
1077
+
1078
+ .b3-price {
1079
+ font-variant-numeric: tabular-nums;
1080
+ align-items: baseline;
1081
+ gap: .375rem;
1082
+ display: flex;
1083
+ }
1084
+
1085
+ .b3-price > strong {
1086
+ letter-spacing: -.05em;
1087
+ font-size: 3.25rem;
1088
+ line-height: 1.1;
1089
+ }
1090
+
1091
+ .b3-checklist {
1092
+ gap: .75rem;
1093
+ margin: 0;
1094
+ padding: 0;
1095
+ list-style: none;
1096
+ display: grid;
1097
+ }
1098
+
1099
+ .b3-checklist > li {
1100
+ align-items: start;
1101
+ gap: .625rem;
1102
+ display: flex;
1103
+ }
1104
+
1105
+ .b3-checklist > li:before {
1106
+ content: "✓";
1107
+ color: var(--b3-color-accent);
1108
+ font-weight: 700;
1109
+ }
1110
+
1111
+ .b3-quote {
1112
+ border-inline-start: 3px solid var(--b3-color-accent);
1113
+ margin: 0;
1114
+ padding: 1.5rem;
1115
+ }
1116
+
1117
+ .b3-quote blockquote {
1118
+ margin: 0 0 1rem;
1119
+ font-size: 1.25rem;
1120
+ line-height: 1.5;
1121
+ }
1122
+
1123
+ .b3-art {
1124
+ isolation: isolate;
1125
+ border-radius: var(--b3-radius-large);
1126
+ background: var(--b3-color-surface);
1127
+ position: relative;
1128
+ overflow: hidden;
1129
+ }
1130
+
1131
+ .b3-art:before {
1132
+ content: "";
1133
+ z-index: -1;
1134
+ pointer-events: none;
1135
+ position: absolute;
1136
+ inset: 0;
1137
+ }
1138
+
1139
+ .b3-art[data-b3-art="dots"]:before {
1140
+ background-image: radial-gradient(var(--b3-color-border) 1px,transparent 1px);
1141
+ background-size: 16px 16px;
1142
+ }
1143
+
1144
+ .b3-art[data-b3-art="glow"]:before {
1145
+ background: radial-gradient(ellipse at 20% 20%,color-mix(in srgb,var(--b3-color-accent) 20%,transparent),transparent 65%);
1146
+ }
1147
+
1148
+ .b3-art[data-b3-art="wash"]:before {
1149
+ background: linear-gradient(135deg,color-mix(in srgb,var(--b3-color-accent) 14%,transparent),transparent 70%);
1150
+ }
1151
+
1152
+ @media (width <= 48rem) {
1153
+ .b3-hero, .b3-feature {
1154
+ grid-template-columns: minmax(0, 1fr);
1155
+ }
1156
+
1157
+ .b3-feature[data-b3-reverse="true"] > :first-child {
1158
+ order: initial;
1159
+ }
1160
+ }
1161
+
1162
+ .b3-reading {
1163
+ grid-template-columns: minmax(0, 1fr) minmax(12rem, 16rem);
1164
+ grid-template-areas: "content outline";
1165
+ align-items: start;
1166
+ gap: clamp(2rem, 5vw, 5rem);
1167
+ display: grid;
1168
+ }
1169
+
1170
+ .b3-reading > :not(.b3-toc) {
1171
+ grid-area: content;
1172
+ min-inline-size: 0;
1173
+ }
1174
+
1175
+ .b3-toc {
1176
+ max-block-size: calc(100svh - var(--b3-outline-top, 1rem) - 1rem);
1177
+ border-inline-start: 1px solid var(--b3-color-border);
1178
+ grid-area: outline;
1179
+ padding-inline-start: 1rem;
1180
+ font-size: .875rem;
1181
+ position: sticky;
1182
+ inset-block-start: var(--b3-outline-top, 1rem);
1183
+ overflow-y: auto;
1184
+ }
1185
+
1186
+ .b3-toc ol {
1187
+ gap: .25rem;
1188
+ margin: .75rem 0 0;
1189
+ padding: 0;
1190
+ list-style: none;
1191
+ display: grid;
1192
+ }
1193
+
1194
+ .b3-toc ol ol {
1195
+ margin: .25rem 0;
1196
+ padding-inline-start: 1rem;
1197
+ }
1198
+
1199
+ .b3-toc-link {
1200
+ border-radius: var(--b3-radius-small);
1201
+ color: var(--b3-color-muted);
1202
+ overflow-wrap: anywhere;
1203
+ padding: .625rem .75rem;
1204
+ text-decoration: none;
1205
+ display: block;
1206
+ }
1207
+
1208
+ .b3-toc-link:hover {
1209
+ color: var(--b3-color-text);
1210
+ background: var(--b3-color-surface);
1211
+ }
1212
+
1213
+ .b3-toc-link[aria-current="location"] {
1214
+ color: var(--b3-color-accent);
1215
+ background: color-mix(in srgb, var(--b3-color-accent) 10%, var(--b3-color-surface));
1216
+ font-weight: 650;
1217
+ }
1218
+
1219
+ @media (width <= 48rem) {
1220
+ .b3-reading {
1221
+ grid-template-columns: minmax(0, 1fr);
1222
+ grid-template-areas: "outline"
1223
+ "content";
1224
+ gap: 2rem;
1225
+ }
1226
+
1227
+ .b3-toc {
1228
+ max-block-size: none;
1229
+ position: static;
1230
+ }
1231
+ }
1232
+
1233
+ .b3-command {
1234
+ inline-size: min(38rem, 100% - 2rem);
1235
+ padding: 0;
1236
+ }
1237
+
1238
+ .b3-command-search {
1239
+ border-block-end: 1px solid var(--b3-color-border);
1240
+ align-items: center;
1241
+ gap: .75rem;
1242
+ padding: 1rem;
1243
+ display: flex;
1244
+ }
1245
+
1246
+ .b3-command-search > input {
1247
+ flex: 1;
1248
+ min-inline-size: 0;
1249
+ }
1250
+
1251
+ .b3-command-list {
1252
+ overscroll-behavior: contain;
1253
+ max-block-size: 50svh;
1254
+ padding: .5rem;
1255
+ overflow-y: auto;
1256
+ }
1257
+
1258
+ .b3-command-group + .b3-command-group {
1259
+ border-block-start: 1px solid var(--b3-color-border);
1260
+ margin-block-start: .5rem;
1261
+ padding-block-start: .5rem;
1262
+ }
1263
+
1264
+ .b3-command-group > :first-child:not([role="option"]) {
1265
+ color: var(--b3-color-muted);
1266
+ padding: .5rem .75rem;
1267
+ font-size: .75rem;
1268
+ display: block;
1269
+ }
1270
+
1271
+ .b3-command-item {
1272
+ border-radius: var(--b3-radius-small);
1273
+ cursor: pointer;
1274
+ justify-content: space-between;
1275
+ align-items: center;
1276
+ gap: 1rem;
1277
+ min-block-size: 2.75rem;
1278
+ padding: .875rem .75rem;
1279
+ display: flex;
1280
+ }
1281
+
1282
+ .b3-command-item > :first-child {
1283
+ overflow-wrap: anywhere;
1284
+ min-inline-size: 0;
1285
+ }
1286
+
1287
+ .b3-command-item[aria-selected="true"] {
1288
+ background: var(--b3-color-accent);
1289
+ color: var(--b3-color-on-accent);
1290
+ }
1291
+
1292
+ .b3-command-item[aria-selected="true"] .b3-muted {
1293
+ color: inherit;
1294
+ }
1295
+
1296
+ .b3-command-item[aria-disabled="true"] {
1297
+ opacity: .5;
1298
+ cursor: not-allowed;
1299
+ }
1300
+
1301
+ .b3-command-item:not([aria-disabled="true"]):hover {
1302
+ outline: 1px solid var(--b3-color-border);
1303
+ outline-offset: -1px;
1304
+ }
1305
+
1306
+ .b3-form-grid {
1307
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
1308
+ align-items: start;
1309
+ gap: 1.25rem;
1310
+ display: grid;
1311
+ }
1312
+
1313
+ .b3-fieldset {
1314
+ border: 0;
1315
+ min-inline-size: 0;
1316
+ margin: 0;
1317
+ padding: 0;
1318
+ }
1319
+
1320
+ .b3-fieldset > legend {
1321
+ padding: 0 0 .75rem;
1322
+ font-weight: 650;
1323
+ }
1324
+
1325
+ .b3-help {
1326
+ color: var(--b3-color-muted);
1327
+ font-size: .875rem;
1328
+ }
1329
+
1330
+ .b3-help[data-b3-tone="success"] {
1331
+ color: var(--b3-color-success);
1332
+ }
1333
+
1334
+ .b3-help[data-b3-tone="warning"] {
1335
+ color: var(--b3-color-warning);
1336
+ }
1337
+
1338
+ .b3-input[data-b3-size="small"] {
1339
+ padding: .5rem .75rem;
1340
+ }
1341
+
1342
+ .b3-input[data-b3-size="large"] {
1343
+ min-block-size: 3.25rem;
1344
+ padding: .875rem 1rem;
1345
+ }
1346
+
1347
+ .b3-input[data-b3-emphasis="subtle"] {
1348
+ background-color: var(--b3-color-canvas);
1349
+ border-color: #0000;
1350
+ }
1351
+
1352
+ .b3-input[data-b3-emphasis="outline"] {
1353
+ background-color: #0000;
1354
+ border-width: 2px;
1355
+ }
1356
+
1357
+ .b3-input[data-b3-tone="success"] {
1358
+ border-color: var(--b3-color-success);
1359
+ }
1360
+
1361
+ .b3-input[data-b3-tone="warning"] {
1362
+ border-color: var(--b3-color-warning);
1363
+ }
1364
+
1365
+ .b3-input[aria-invalid="true"] {
1366
+ border-color: var(--b3-color-danger);
1367
+ }
1368
+
1369
+ textarea.b3-input {
1370
+ resize: vertical;
1371
+ }
1372
+
1373
+ select.b3-input[multiple] {
1374
+ min-block-size: 8rem;
1375
+ }
1376
+
1377
+ .b3-input[type="file"] {
1378
+ padding: .375rem;
1379
+ }
1380
+
1381
+ .b3-input::file-selector-button {
1382
+ font: inherit;
1383
+ border-radius: var(--b3-radius-small);
1384
+ background: var(--b3-color-accent);
1385
+ color: var(--b3-color-on-accent);
1386
+ cursor: pointer;
1387
+ border: 0;
1388
+ margin-inline-end: .75rem;
1389
+ padding: .5rem .75rem;
1390
+ }
1391
+
1392
+ .b3-input[type="color"] {
1393
+ inline-size: 5rem;
1394
+ padding: .25rem;
1395
+ }
1396
+
1397
+ .b3-range {
1398
+ min-block-size: 2.75rem;
1399
+ inline-size: 100%;
1400
+ accent-color: var(--b3-color-accent);
1401
+ margin: 0;
1402
+ }
1403
+
1404
+ .b3-choice-card {
1405
+ border: 1px solid var(--b3-color-border);
1406
+ border-radius: var(--b3-radius);
1407
+ background: var(--b3-color-surface);
1408
+ color: var(--b3-color-text);
1409
+ cursor: pointer;
1410
+ align-items: start;
1411
+ gap: .75rem;
1412
+ padding: 1rem;
1413
+ display: flex;
1414
+ }
1415
+
1416
+ .b3-choice-card > input {
1417
+ flex: none;
1418
+ block-size: 1.125rem;
1419
+ inline-size: 1.125rem;
1420
+ margin-block-start: .3rem;
1421
+ }
1422
+
1423
+ .b3-choice-card:has(input:checked) {
1424
+ border-color: var(--b3-color-accent);
1425
+ background: color-mix(in srgb, var(--b3-color-accent) 7%, var(--b3-color-surface));
1426
+ box-shadow: inset 0 0 0 1px var(--b3-color-accent);
1427
+ }
1428
+
1429
+ .b3-choice-card:has(input:focus-visible) {
1430
+ outline: 3px solid var(--b3-color-focus);
1431
+ outline-offset: 3px;
1432
+ }
1433
+
1434
+ .b3-choice-card:has(input:disabled) {
1435
+ opacity: .5;
1436
+ cursor: not-allowed;
1437
+ }
1438
+
1439
+ .b3-choice-card:has(input[aria-invalid="true"]) {
1440
+ border-color: var(--b3-color-danger);
1441
+ }
1442
+
1443
+ .b3-range[aria-invalid="true"] {
1444
+ accent-color: var(--b3-color-danger);
1445
+ }
1446
+
1447
+ .b3-stepper {
1448
+ flex-wrap: wrap;
1449
+ gap: 1rem 2rem;
1450
+ margin: 0;
1451
+ padding: 0;
1452
+ list-style: none;
1453
+ display: flex;
1454
+ }
1455
+
1456
+ .b3-step {
1457
+ color: var(--b3-color-muted);
1458
+ align-items: center;
1459
+ gap: .625rem;
1460
+ font-size: .875rem;
1461
+ display: flex;
1462
+ }
1463
+
1464
+ .b3-step-marker {
1465
+ border: 1px solid var(--b3-color-border);
1466
+ font-variant-numeric: tabular-nums;
1467
+ border-radius: 50%;
1468
+ flex: none;
1469
+ place-items: center;
1470
+ block-size: 2rem;
1471
+ inline-size: 2rem;
1472
+ display: grid;
1473
+ }
1474
+
1475
+ .b3-step[aria-current="step"] {
1476
+ color: var(--b3-color-text);
1477
+ font-weight: 650;
1478
+ }
1479
+
1480
+ .b3-step[aria-current="step"] .b3-step-marker {
1481
+ background: var(--b3-color-accent);
1482
+ color: var(--b3-color-on-accent);
1483
+ border-color: var(--b3-color-accent);
1484
+ }
1485
+
1486
+ .b3-step[data-b3-complete="true"] .b3-step-marker {
1487
+ border-color: var(--b3-color-success);
1488
+ color: var(--b3-color-success);
1489
+ }
1490
+
1491
+ .b3-conversation {
1492
+ gap: 1.5rem;
1493
+ min-inline-size: 0;
1494
+ margin: 0;
1495
+ padding: 0;
1496
+ list-style: none;
1497
+ display: grid;
1498
+ }
1499
+
1500
+ .b3-message {
1501
+ justify-self: start;
1502
+ gap: .375rem;
1503
+ min-inline-size: 0;
1504
+ max-inline-size: min(85%, 38rem);
1505
+ display: grid;
1506
+ }
1507
+
1508
+ .b3-message[data-b3-side="self"] {
1509
+ justify-self: end;
1510
+ }
1511
+
1512
+ .b3-message-body {
1513
+ border: 1px solid var(--b3-color-border);
1514
+ border-radius: var(--b3-radius);
1515
+ background: var(--b3-color-surface);
1516
+ color: var(--b3-color-text);
1517
+ white-space: pre-wrap;
1518
+ overflow-wrap: anywhere;
1519
+ padding: .875rem 1rem;
1520
+ }
1521
+
1522
+ .b3-message[data-b3-side="self"] > .b3-message-body {
1523
+ background: var(--b3-color-accent);
1524
+ color: var(--b3-color-on-accent);
1525
+ border-color: #0000;
1526
+ }
1527
+
1528
+ .b3-message-meta {
1529
+ color: var(--b3-color-muted);
1530
+ flex-wrap: wrap;
1531
+ gap: .35rem .75rem;
1532
+ font-size: .8125rem;
1533
+ display: flex;
1534
+ }
1535
+
1536
+ .b3-message[data-b3-side="self"] > .b3-message-meta {
1537
+ justify-content: end;
1538
+ }
1539
+
1540
+ .b3-mobile-app {
1541
+ --b3-touch: 44px;
1542
+ min-block-size: 100svh;
1543
+ max-inline-size: var(--b3-app-width, 70rem);
1544
+ margin-inline: auto;
1545
+ padding-block-end: calc(5.5rem + env(safe-area-inset-bottom, 0px));
1546
+ }
1547
+
1548
+ .b3-mobile-app[data-b3-platform="android"] {
1549
+ --b3-touch: 48px;
1550
+ }
1551
+
1552
+ .b3-mobile-app :where(button, .b3-button, select, input:not([type="checkbox"], [type="radio"])) {
1553
+ min-block-size: var(--b3-touch);
1554
+ }
1555
+
1556
+ .b3-app-bar {
1557
+ padding: max(.75rem, env(safe-area-inset-top, 0px)) 1.25rem .75rem;
1558
+ align-items: center;
1559
+ gap: .75rem;
1560
+ display: flex;
1561
+ }
1562
+
1563
+ .b3-app-bar > :last-child {
1564
+ margin-inline-start: auto;
1565
+ }
1566
+
1567
+ .b3-bottom-nav {
1568
+ z-index: 10;
1569
+ max-inline-size: var(--b3-app-width, 70rem);
1570
+ padding: .5rem 1rem max(.5rem, env(safe-area-inset-bottom, 0px));
1571
+ background: var(--b3-color-surface);
1572
+ color: var(--b3-color-text);
1573
+ border-block-start: 1px solid var(--b3-color-border);
1574
+ justify-content: space-around;
1575
+ gap: .5rem;
1576
+ margin-inline: auto;
1577
+ display: flex;
1578
+ position: fixed;
1579
+ inset-block-end: 0;
1580
+ inset-inline: 0;
1581
+ }
1582
+
1583
+ .b3-bottom-link {
1584
+ min-block-size: var(--b3-touch, 44px);
1585
+ min-inline-size: 0;
1586
+ color: var(--b3-color-muted);
1587
+ border-radius: 1rem;
1588
+ flex-direction: column;
1589
+ flex: 1;
1590
+ justify-content: center;
1591
+ align-items: center;
1592
+ gap: .15rem;
1593
+ padding: .25rem .5rem;
1594
+ font-size: .75rem;
1595
+ text-decoration: none;
1596
+ display: flex;
1597
+ }
1598
+
1599
+ .b3-bottom-link[aria-current="page"] {
1600
+ color: var(--b3-color-accent);
1601
+ font-weight: 700;
1602
+ }
1603
+
1604
+ [data-b3-platform="android"] .b3-bottom-link[aria-current="page"] {
1605
+ background: var(--b3-color-canvas);
1606
+ }
1607
+
1608
+ .b3-mobile-list {
1609
+ border: 1px solid var(--b3-color-border);
1610
+ background: var(--b3-color-surface);
1611
+ border-radius: 1rem;
1612
+ margin: 0;
1613
+ padding: 0;
1614
+ list-style: none;
1615
+ overflow: hidden;
1616
+ }
1617
+
1618
+ .b3-mobile-list > li + li {
1619
+ border-block-start: 1px solid var(--b3-color-border);
1620
+ }
1621
+
1622
+ .b3-mobile-row {
1623
+ min-block-size: var(--b3-touch, 44px);
1624
+ color: var(--b3-color-text);
1625
+ align-items: center;
1626
+ gap: 1rem;
1627
+ padding: .875rem 1rem;
1628
+ text-decoration: none;
1629
+ display: flex;
1630
+ }
1631
+
1632
+ .b3-mobile-row > :last-child:not(:first-child) {
1633
+ margin-inline-start: auto;
1634
+ }
1635
+
1636
+ .b3-sheet {
1637
+ inline-size: min(100%, var(--b3-overlay-width, 32rem));
1638
+ max-inline-size: none;
1639
+ max-block-size: min(85dvh, calc(100dvh - env(safe-area-inset-top, 0px) - 1rem));
1640
+ overscroll-behavior: contain;
1641
+ border: 1px solid var(--b3-color-border);
1642
+ padding: 1.5rem 1.5rem max(1.5rem, env(safe-area-inset-bottom, 0px));
1643
+ background: var(--b3-color-surface);
1644
+ color: var(--b3-color-text);
1645
+ border-radius: 1.5rem 1.5rem 0 0;
1646
+ margin: 0 auto;
1647
+ inset: auto 0 0;
1648
+ overflow-y: auto;
1649
+ }
1650
+
1651
+ .b3-sheet::backdrop {
1652
+ background: #0007;
1653
+ }
1654
+
1655
+ .b3-sheet [data-b3-initial-focus]:focus {
1656
+ outline: none;
1657
+ }
1658
+
1659
+ .b3-sheet-handle {
1660
+ min-block-size: 44px;
1661
+ inline-size: 5rem;
1662
+ color: var(--b3-color-muted);
1663
+ touch-action: none;
1664
+ cursor: grab;
1665
+ background: none;
1666
+ border: 0;
1667
+ border-radius: 1rem;
1668
+ flex: none;
1669
+ align-self: center;
1670
+ place-items: center;
1671
+ margin-block: -1rem -.5rem;
1672
+ padding: 0;
1673
+ display: grid;
1674
+ }
1675
+
1676
+ .b3-sheet-handle:before {
1677
+ content: "";
1678
+ background: currentColor;
1679
+ border-radius: 1rem;
1680
+ block-size: .25rem;
1681
+ inline-size: 2.25rem;
1682
+ }
1683
+
1684
+ .b3-sheet[data-b3-dragging] {
1685
+ animation: none;
1686
+ }
1687
+
1688
+ .b3-sheet[data-b3-dragging] .b3-sheet-handle {
1689
+ cursor: grabbing;
1690
+ }
1691
+
1692
+ [data-b3-platform="android"] .b3-mobile-list {
1693
+ border-radius: 1.5rem;
1694
+ }
1695
+
1696
+ @media (prefers-reduced-motion: no-preference) {
1697
+ .b3-sheet[open] {
1698
+ animation: .32s cubic-bezier(.16, 1, .3, 1) b3-sheet-enter;
1699
+ }
1700
+
1701
+ @keyframes b3-sheet-enter {
1702
+ from {
1703
+ opacity: 0;
1704
+ transform: translateY(3rem);
1705
+ }
1706
+
1707
+ to {
1708
+ opacity: 1;
1709
+ transform: translateY(0);
1710
+ }
1711
+ }
1712
+ }
1713
+
1714
+ .b3-root:has(dialog:modal) {
1715
+ overflow: hidden;
1716
+ }
1717
+
1718
+ .b3-app-frame {
1719
+ block-size: var(--b3-frame-height, 100dvh);
1720
+ min-block-size: 0;
1721
+ max-inline-size: var(--b3-app-width, 70rem);
1722
+ padding: env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px);
1723
+ grid-template-rows: auto minmax(0, 1fr) auto;
1724
+ margin-inline: auto;
1725
+ display: grid;
1726
+ overflow: clip;
1727
+ }
1728
+
1729
+ .b3-app-frame > header {
1730
+ grid-row: 1;
1731
+ min-inline-size: 0;
1732
+ }
1733
+
1734
+ .b3-app-frame > main {
1735
+ overscroll-behavior: contain;
1736
+ grid-row: 2;
1737
+ min-block-size: 0;
1738
+ min-inline-size: 0;
1739
+ overflow: auto;
1740
+ }
1741
+
1742
+ .b3-app-frame > :is(nav, footer) {
1743
+ grid-row: 3;
1744
+ min-inline-size: 0;
1745
+ position: relative;
1746
+ }
1747
+
1748
+ .b3-app-frame > .b3-app-bar {
1749
+ padding-block-start: .75rem;
1750
+ }
1751
+
1752
+ .b3-app-frame .b3-bottom-nav {
1753
+ inline-size: 100%;
1754
+ max-inline-size: none;
1755
+ padding-block-end: .5rem;
1756
+ position: static;
1757
+ }
1758
+ }