@livx.cc/bare-v3 0.1.0-alpha.158 → 0.1.0-alpha.159

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/dist/bare.css CHANGED
@@ -17,7 +17,7 @@
17
17
  margin: 0;
18
18
  }
19
19
 
20
- :where(b3-tabs, b3-dropdown, b3-dialog, b3-sheet, b3-command) {
20
+ :where(b3-tabs, b3-dropdown, b3-dialog, b3-sheet, b3-command, b3-composer) {
21
21
  display: contents;
22
22
  }
23
23
 
@@ -2274,6 +2274,189 @@
2274
2274
  margin-block-end: 0;
2275
2275
  }
2276
2276
 
2277
+ .b3-conversation[data-b3-layout="assistant"] {
2278
+ gap: .75em;
2279
+ }
2280
+
2281
+ .b3-conversation[data-b3-layout="assistant"] > .b3-message {
2282
+ gap: .45em;
2283
+ }
2284
+
2285
+ .b3-conversation[data-b3-layout="assistant"] > .b3-message:not([data-b3-side="self"]) {
2286
+ justify-self: stretch;
2287
+ max-inline-size: none;
2288
+ }
2289
+
2290
+ .b3-conversation[data-b3-layout="assistant"] > .b3-message[data-b3-side="self"] {
2291
+ max-inline-size: 88%;
2292
+ }
2293
+
2294
+ .b3-conversation[data-b3-layout="assistant"] > .b3-message:not([data-b3-side="self"]) > .b3-message-body {
2295
+ background: none;
2296
+ border: 0;
2297
+ padding: 0;
2298
+ }
2299
+
2300
+ .b3-conversation[data-b3-layout="assistant"] > .b3-message[data-b3-side="self"] > .b3-message-body, .b3-root[data-b3-theme="dark"] .b3-conversation[data-b3-layout="assistant"] > .b3-message[data-b3-side="self"] > .b3-message-body {
2301
+ background: var(--b3-message-self-bg, color-mix(in srgb, var(--b3-color-accent) 12%, var(--b3-color-surface)));
2302
+ color: var(--b3-message-self-text, var(--b3-color-text));
2303
+ unicode-bidi: plaintext;
2304
+ border: 0;
2305
+ border-radius: 1.075em 1.075em .3em;
2306
+ padding: .625em .9375em;
2307
+ }
2308
+
2309
+ .b3-message-body:has( > :is(div, p, ul, ol, table, pre, blockquote, h1, h2, h3, h4, h5, h6)) {
2310
+ overflow-wrap: anywhere;
2311
+ line-height: 1.5;
2312
+ }
2313
+
2314
+ .b3-message-body :where(p, ul, ol, pre, blockquote, table, .b3-table-wrap, .b3-alert) {
2315
+ margin-block: 0 .6em;
2316
+ }
2317
+
2318
+ .b3-message-body :where(h1, h2, h3, h4, h5, h6) {
2319
+ margin-block: .9em .3em;
2320
+ font-size: 1.1em;
2321
+ line-height: 1.3;
2322
+ }
2323
+
2324
+ .b3-message-body :where(h1) {
2325
+ font-size: 1.2em;
2326
+ }
2327
+
2328
+ .b3-message-body :where(ul, ol) {
2329
+ padding-inline-start: 1.5em;
2330
+ }
2331
+
2332
+ .b3-message-body :where(a) {
2333
+ color: var(--b3-color-accent);
2334
+ text-underline-offset: 2px;
2335
+ text-decoration: underline;
2336
+ }
2337
+
2338
+ .b3-message-body :where(:not(pre) > code) {
2339
+ background: color-mix(in srgb, var(--b3-color-text) 8%, transparent);
2340
+ border-radius: .3em;
2341
+ padding: .05em .3em;
2342
+ font-size: .92em;
2343
+ }
2344
+
2345
+ .b3-message-body :where(code, pre) {
2346
+ font-family: var(--b3-font-mono, ui-monospace, monospace);
2347
+ text-align: start;
2348
+ direction: ltr;
2349
+ unicode-bidi: isolate;
2350
+ }
2351
+
2352
+ .b3-message-body :where(pre) {
2353
+ background: color-mix(in srgb, var(--b3-color-text) 6%, transparent);
2354
+ border-radius: .6em;
2355
+ padding: .75em .9em;
2356
+ font-size: .92em;
2357
+ overflow-x: auto;
2358
+ }
2359
+
2360
+ .b3-message-body :where(blockquote) {
2361
+ border-inline-start: 3px solid var(--b3-color-border);
2362
+ color: var(--b3-color-muted);
2363
+ margin-inline: 0;
2364
+ padding-inline-start: .75em;
2365
+ }
2366
+
2367
+ .b3-message-disclosure {
2368
+ font-size: .92em;
2369
+ }
2370
+
2371
+ .b3-message-disclosure > summary {
2372
+ max-inline-size: 100%;
2373
+ color: var(--b3-color-muted);
2374
+ border-radius: .5em;
2375
+ align-items: center;
2376
+ gap: .5em;
2377
+ padding: .25em .5em;
2378
+ list-style: none;
2379
+ display: inline-flex;
2380
+ overflow: hidden;
2381
+ }
2382
+
2383
+ .b3-message-disclosure > summary::-webkit-details-marker {
2384
+ display: none;
2385
+ }
2386
+
2387
+ .b3-message-disclosure > summary:before {
2388
+ content: "›";
2389
+ transition: transform var(--b3-duration, .15s);
2390
+ }
2391
+
2392
+ .b3-message-disclosure[open] > summary:before {
2393
+ transform: rotate(90deg);
2394
+ }
2395
+
2396
+ @media (hover: hover) {
2397
+ .b3-message-disclosure > summary:hover {
2398
+ background: color-mix(in srgb, var(--b3-color-text) 6%, transparent);
2399
+ }
2400
+ }
2401
+
2402
+ .b3-message-disclosure > :not(summary) {
2403
+ max-block-size: 18em;
2404
+ color: var(--b3-color-muted);
2405
+ white-space: pre-wrap;
2406
+ padding: .35em .65em .35em 1.5em;
2407
+ font-style: italic;
2408
+ overflow-y: auto;
2409
+ }
2410
+
2411
+ .b3-composer[data-b3-layout="stacked"] {
2412
+ border: 1px solid var(--b3-color-border);
2413
+ background: var(--b3-color-surface);
2414
+ border-radius: .9375em;
2415
+ flex-flow: column;
2416
+ align-items: stretch;
2417
+ gap: .45em;
2418
+ padding: .625em;
2419
+ }
2420
+
2421
+ .b3-composer[data-b3-layout="stacked"]:focus-within {
2422
+ border-color: var(--b3-color-accent);
2423
+ }
2424
+
2425
+ .b3-composer[data-b3-layout="stacked"] > textarea {
2426
+ max-block-size: 15.4em;
2427
+ inline-size: 100%;
2428
+ color: inherit;
2429
+ font: inherit;
2430
+ resize: none;
2431
+ background: none;
2432
+ border: 0;
2433
+ padding: .15em;
2434
+ line-height: 1.45;
2435
+ display: block;
2436
+ }
2437
+
2438
+ .b3-composer[data-b3-layout="stacked"] > textarea:is(:focus, :focus-visible) {
2439
+ box-shadow: none;
2440
+ outline: none;
2441
+ }
2442
+
2443
+ .b3-composer-bar {
2444
+ align-items: center;
2445
+ gap: .45em;
2446
+ min-inline-size: 0;
2447
+ display: flex;
2448
+ }
2449
+
2450
+ .b3-composer-bar > .b3-button:last-child:not([data-b3-icon]) {
2451
+ border-radius: .86em;
2452
+ flex: none;
2453
+ block-size: auto;
2454
+ min-block-size: 2.46em;
2455
+ margin-inline-start: auto;
2456
+ padding: 0 1.23em;
2457
+ font-size: .875em;
2458
+ }
2459
+
2277
2460
  .b3-mobile-app {
2278
2461
  --b3-touch: 44px;
2279
2462
  min-block-size: 100svh;
package/dist/bare.min.css CHANGED
@@ -1 +1 @@
1
- @layer bare.reset{:where(.b3-root),:where(.b3-root *){box-sizing:border-box}:where(.b3-root){font-family:var(--b3-font-body);background:var(--b3-color-canvas);color:var(--b3-color-text);color-scheme:light;margin:0;font-size:1rem;line-height:1.5}:where(.b3-root>body){margin:0}:where(b3-tabs,b3-dropdown,b3-dialog,b3-sheet,b3-command){display:contents}:where(b3-reel,b3-toast-region,b3-toc,b3-board,b3-date-picker,b3-image-viewer){display:block}:where(.b3-root) :where(button,input,select,textarea){font:inherit}:where(.b3-root) :where(button:not(:disabled)){color:inherit}:where(.b3-root) :where(button:not(:disabled),a[href],select,summary,[role=button],[role=option],[role=tab],[role=menuitem],[role=link]){cursor:pointer}:where(.b3-root) :where(h1,h2,h3,h4,h5,h6,p){margin:0}:where(.b3-root) :where(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:none;box-shadow:inset 0 0 0 2px}:where(.b3-root) :where([tabindex="-1"]:not(:is(button,a,input,select,textarea,summary,[role=button],[role=link]))):focus-visible{box-shadow:none}@media (forced-colors:active){:where(.b3-root) :where(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline-offset:-2px;outline:1px solid highlight}}:where(.b3-root) :where(img,svg:not([width])){max-inline-size:100%}:where(.b3-root) :where(svg:not([width])){block-size:1em;inline-size:1em}@media (prefers-reduced-motion:reduce){:where(.b3-root *),:where(.b3-root *):before,:where(.b3-root *):after{transition:none!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}[data-b3-motion=reduce] *,[data-b3-motion=reduce] :before,[data-b3-motion=reduce] :after,[data-b3-motion=reduce] ::backdrop{scroll-behavior:auto!important;transition:none!important;animation:none!important}:where(.b3-root [hidden]):not([hidden=until-found]){display:none!important}:where(.b3-root) :where(input[type=checkbox],input[type=radio],input[type=range]){accent-color:var(--b3-color-accent)}:where(.b3-root) :where(input[type=checkbox],input[type=radio]){flex-shrink:0}}@layer bare.tokens{.b3-root:where(:not(.b3-root .b3-root)),.b3-root[data-b3-theme=light]{--b3-color-canvas:#f6f5f0;--b3-color-surface:#fff;--b3-color-text:#202923;--b3-color-muted:#59655d;--b3-color-border:#d5dbd3;--b3-color-border-strong:#838d86;--b3-color-accent:#245c42;--b3-color-on-accent:#fff;--b3-color-danger:#a62c35;--b3-color-focus:#276bdd;--b3-font-body:ui-sans-serif, system-ui, sans-serif;--b3-font-display:var(--b3-font-body);--b3-radius:.75rem;--b3-space:1rem;--b3-content:68rem}.b3-root[data-b3-theme=dark]{color-scheme:dark;--b3-color-canvas:#141c19;--b3-color-surface:#202c26;--b3-color-text:#edf3ec;--b3-color-muted:#a8b9ad;--b3-color-border:#415348;--b3-color-border-strong:#74877b;--b3-color-accent:#aadbb8;--b3-color-on-accent:#132b1b;--b3-color-danger:#ffadb1;--b3-color-focus:#9ac4ff}.b3-root:where(:not(.b3-root .b3-root)),.b3-root[data-b3-theme=light]{--b3-space-1:.25rem;--b3-space-2:.5rem;--b3-space-3:.75rem;--b3-space-4:1rem;--b3-space-6:1.5rem;--b3-space-8:2rem;--b3-space-12:3rem;--b3-radius-small:.375rem;--b3-radius-large:1.25rem;--b3-shadow:0 8px 32px #14231b14;--b3-shadow-raised:0 16px 56px #14231b24;--b3-color-success:#256443;--b3-color-warning:#805100;--b3-color-info:#275f99;--b3-duration:.16s}.b3-root[data-b3-theme=dark]{--b3-shadow:0 8px 32px #0004;--b3-shadow-raised:0 16px 56px #0007;--b3-color-success:#99d9ab;--b3-color-warning:#f2c76c;--b3-color-info:#a2cfff}.b3-root[data-b3-density=compact]{--b3-d-control:2.25rem;--b3-d-control-small:1.875rem;--b3-d-pad-block:.4375rem;--b3-d-pad-inline:.875rem;--b3-d-label:.875rem;--b3-d-heading:1.0625rem;--b3-d-avatar:2.25rem;--b3-d-message-pad:.625rem .875rem;--b3-d-meta:.75rem;--b3-d-gap:1rem;--b3-d-surface-pad:1rem}@media (pointer:fine) and (width>=48rem){.b3-root[data-b3-density=auto]{--b3-d-control:2.25rem;--b3-d-control-small:1.875rem;--b3-d-pad-block:.4375rem;--b3-d-pad-inline:.875rem;--b3-d-label:.875rem;--b3-d-heading:1.0625rem;--b3-d-avatar:2.25rem;--b3-d-message-pad:.625rem .875rem;--b3-d-meta:.75rem;--b3-d-gap:1rem;--b3-d-surface-pad:1rem}}}@layer bare.layout{.b3-shell{inline-size:min(100%, var(--b3-content));margin-inline:auto;padding:clamp(1rem,4vw,3rem)}.b3-stack{gap:var(--b3-space);flex-direction:column;min-inline-size:0;display:flex}.b3-stack:where(dialog:not([open])){display:none}.b3-scroll{overscroll-behavior:contain;scrollbar-gutter:stable;flex:auto;min-block-size:0;min-inline-size:0;overflow:auto}dialog.b3-stack>.b3-scroll{min-block-size:min(6rem,30dvh)}.b3-stack:has(>.b3-scroll)>:not(.b3-scroll){flex-shrink:0}.b3-cluster{align-items:center;gap:var(--b3-space);flex-wrap:wrap;min-inline-size:0;display:flex}.b3-cluster>*,.b3-split>*{min-inline-size:0}.b3-inline{vertical-align:middle;align-items:center;gap:.5em;min-inline-size:0;max-inline-size:100%;display:inline-flex}.b3-inline>*{min-inline-size:0}.b3-inline:has(>.b3-badge){flex-wrap:wrap}.b3-inline>.b3-badge{flex-shrink:0}.b3-inline:has(>.b3-badge)>:not(.b3-badge,.b3-icon,svg){flex:1 1 min-content}.b3-grid{grid-template-columns:repeat(auto-fit, minmax(min(100%, var(--b3-grid-min,17rem)), 1fr));gap:var(--b3-space);display:grid}.b3-split{justify-content:space-between;align-items:center;gap:var(--b3-space);flex-wrap:wrap;display:flex}.b3-page{flex-direction:column;min-block-size:100svh;display:flex}.b3-page-body{flex:1;min-inline-size:0}.b3-app-layout{flex-wrap:wrap;min-block-size:100svh;display:flex;container:b3-app/inline-size}.b3-app-layout>.b3-sidebar{flex:16rem}.b3-app-layout>:not(.b3-sidebar){flex:999 32rem;min-inline-size:0}.b3-sidebar{padding:var(--b3-space-6);border-inline-end:1px solid var(--b3-color-border);background:var(--b3-color-surface);min-inline-size:0}.b3-center{padding:var(--b3-space-6);place-items:center;display:grid}.b3-cover{min-block-size:min(42rem,85svh);padding-block:var(--b3-space-12);flex-direction:column;justify-content:center;display:flex}.b3-reel{gap:var(--b3-space);scroll-snap-type:x proximity;padding-block-end:var(--b3-space-2);display:flex;overflow-x:auto}.b3-reel>*{scroll-snap-align:start;flex:0 0 min(85%,20rem)}@container b3-app (width<48rem){.b3-app-layout>.b3-sidebar{border-inline-end:0;border-block-end:1px solid var(--b3-color-border)}}.b3-reel:has(>.b3-badge){scrollbar-width:none;align-items:center;gap:.5rem;padding-block:.625rem}.b3-reel:has(>.b3-badge)::-webkit-scrollbar{display:none}.b3-reel>.b3-badge{flex:none}.b3-stack>.b3-reel{flex-shrink:0}@supports (animation-timeline:scroll(self inline)){.b3-reel:has(>.b3-badge){mask-image:linear-gradient(to right, #000 calc(100% - var(--b3-reel-fade)), #0000);animation:linear both b3-reel-fade scroll(self inline)}.b3-reel:has(>.b3-badge):dir(rtl){mask-image:linear-gradient(to left, #000 calc(100% - var(--b3-reel-fade)), #0000)}@keyframes b3-reel-fade{90%{--b3-reel-fade:2.5rem}to{--b3-reel-fade:0rem}}}}@layer bare.components{.b3-title{font-family:var(--b3-font-display);letter-spacing:-.04em;overflow-wrap:anywhere;font-size:clamp(1.75rem,7vw,4rem);line-height:1.05}.b3-heading{font-family:var(--b3-font-display);letter-spacing:-.02em;overflow-wrap:anywhere;font-size:1.375rem;font-weight:650;line-height:1.25}.b3-muted{color:var(--b3-color-muted)}.b3-label{letter-spacing:.06em;text-transform:uppercase;font-size:.8125rem;font-weight:650}.b3-surface{background:var(--b3-color-surface);color:var(--b3-color-text);border:1px solid var(--b3-color-border);border-radius:var(--b3-radius);padding:clamp(1rem,3vw,2rem)}.b3-button{border-radius:var(--b3-radius);background:var(--b3-color-accent);min-block-size:2.75rem;color:var(--b3-color-on-accent);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:.625rem 1rem;font-weight:650;text-decoration:none;display:inline-flex}.b3-button :where(svg){flex-shrink:0;display:block}.b3-button>:where([aria-hidden=true]):has(>svg){flex-shrink:0}.b3-button[data-b3-emphasis=quiet]{color:var(--b3-color-text);border-color:var(--b3-color-border);background:0 0}.b3-button:disabled{opacity:.5;cursor:not-allowed}.b3-field{align-content:start;gap:.375rem;min-inline-size:0;display:grid}.b3-input:where(:not([type=checkbox],[type=radio])){border:1px solid var(--b3-color-border-strong);border-radius:var(--b3-radius);background:var(--b3-color-surface);min-block-size:2.75rem;inline-size:100%;min-inline-size:0;color:var(--b3-color-text);padding:.625rem .75rem}.b3-error{color:var(--b3-color-danger);font-size:.875rem}select.b3-input:not([multiple]):not([size]),select.b3-input[size="1"]:not([multiple]){appearance:none;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:right calc(1rem + 5px) center,right 1rem center;background-repeat:no-repeat;background-size:5px 5px;padding-inline-end:2.5rem}select.b3-input:not([multiple]):not([size]):dir(rtl),select.b3-input[size="1"]:not([multiple]):dir(rtl){background-position:1rem,calc(1rem + 5px)}@media (forced-colors:active){select.b3-input:not([multiple]):not([size]),select.b3-input[size="1"]:not([multiple]){appearance:auto;background-image:none}}:where(ul,ol):has(>.b3-row){margin:0;padding-inline-start:0}.b3-row{border-block-end:1px solid var(--b3-color-border);align-items:center;gap:.75rem;padding-block:1rem;display:flex}.b3-row:where(.b3-stack){align-items:stretch;gap:var(--b3-space)}:is(a,button,[role=button]).b3-row{padding-inline:var(--b3-space-4);color:inherit;text-align:start;cursor:pointer;transition:background-color var(--b3-duration);text-decoration:none}button.b3-row{appearance:none;border:0;border-block-end:1px solid var(--b3-color-border);background:0 0;inline-size:100%}@media (hover:hover){:is(a,button,[role=button]).b3-row:hover{background:color-mix(in srgb, var(--b3-color-text) 4%, transparent)}}:is(a,button,[role=button]).b3-row:focus-visible{background:color-mix(in srgb, var(--b3-color-text) 4%, transparent)}:is(a,button,[role=button]).b3-row:active{background:color-mix(in srgb, var(--b3-color-text) 8%, transparent)}.b3-clamp{-webkit-line-clamp:var(--b3-clamp,2);line-clamp:var(--b3-clamp,2);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.b3-count{box-sizing:border-box;background:var(--b3-color-danger);block-size:1.25rem;min-inline-size:1.25rem;color:var(--b3-color-canvas);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:100vmax;flex:none;place-items:center;padding-inline:.3125rem;font-size:.6875rem;font-weight:700;line-height:1;display:inline-grid}.b3-count[data-b3-tone=accent]{background:var(--b3-color-accent);color:var(--b3-color-on-accent)}.b3-nav-link>.b3-count{margin-inline-start:auto}.b3-bottom-link{position:relative}.b3-bottom-link:has(>.b3-count){min-inline-size:max(var(--b3-touch,44px), 2.25rem)}.b3-bottom-link>.b3-count{box-shadow:0 0 0 2px var(--b3-color-surface);position:absolute;inset-block-start:.125rem;inset-inline-end:max(.125rem,50% - 2rem)}:is(a,button,[role=button]).b3-row:is([aria-current]:not([aria-current=false]),[aria-selected=true]){background:color-mix(in srgb, var(--b3-color-accent) 12%, transparent)}@media (forced-colors:active){:is(a,button,[role=button]).b3-row{border-inline-start:3px solid canvas}:is(a,button,[role=button]).b3-row:is([aria-current]:not([aria-current=false]),[aria-selected=true]){border-inline-start-color:highlight}}.b3-badge{overflow-wrap:anywhere;border:1px solid var(--b3-color-border);border-radius:100vmax;align-items:center;inline-size:fit-content;max-inline-size:100%;padding:.125rem .5rem;font-size:.75rem;font-weight:650;display:inline-flex}.b3-progress{block-size:.5rem;inline-size:100%;accent-color:var(--b3-color-accent)}.b3-button{transition:box-shadow var(--b3-duration), border-color var(--b3-duration)}@media (hover:hover){.b3-button:not(:disabled):hover{box-shadow:inset 0 0 0 100vmax #00000012}}.b3-button:not(:disabled):active{box-shadow:inset 0 0 0 100vmax #00000024}.b3-button[data-b3-emphasis=ghost]:not(:disabled):active{color:var(--b3-color-text)}.b3-button[data-b3-emphasis=outline]{color:var(--b3-color-accent);background:0 0;border-color:currentColor}.b3-button[data-b3-emphasis=danger]{background:var(--b3-color-danger);color:var(--b3-color-canvas)}.b3-button[data-b3-size=small]{padding:.5rem .75rem;font-size:.875rem}.b3-button[data-b3-size=large]{min-block-size:3.25rem;padding:.875rem 1.5rem}.b3-button[aria-busy=true]{cursor:progress}.b3-icon{vertical-align:-.2em;flex:none;block-size:1.25em;inline-size:1.25em;display:inline-block}[data-b3-confirm][data-b3-armed]{outline:2px solid var(--b3-color-danger)!important;outline-offset:2px!important}.b3-button[data-b3-armed]{background:var(--b3-color-danger);color:var(--b3-color-canvas);border-color:var(--b3-color-danger)}.b3-input:disabled{opacity:.6;cursor:not-allowed}.b3-input[readonly]{background:var(--b3-color-canvas)}.b3-input::placeholder{color:var(--b3-color-muted);opacity:.8}.b3-input-group{border:1px solid var(--b3-color-border-strong);border-radius:var(--b3-radius);background:var(--b3-color-canvas);flex-wrap:wrap;align-items:stretch;min-inline-size:0;display:flex;overflow:clip}.b3-input-group>.b3-input{border:0;border-radius:0;flex:12ch}.b3-input-group>.b3-button{overflow-wrap:anywhere;flex-wrap:wrap;min-inline-size:0;max-inline-size:100%;margin-inline-start:auto;padding-inline:.75rem}.b3-input-group:focus-within{outline:none;box-shadow:inset 0 0 0 2px}.b3-input-affix{overflow-wrap:anywhere;min-inline-size:0;max-inline-size:100%;color:var(--b3-color-muted);background:var(--b3-color-canvas);align-items:center;padding-inline:.75rem;display:flex}.b3-choice{cursor:pointer;flex-wrap:wrap;align-items:start;gap:.75rem;padding-block:.5rem;display:flex}.b3-choice>:not(input){overflow-wrap:anywhere;flex:12ch;min-inline-size:0}.b3-choice input{--b3-choice-control:1.125rem;inline-size:var(--b3-choice-control);block-size:var(--b3-choice-control);flex:none;margin:0;margin-block-start:max(0px, calc((1lh - var(--b3-choice-control)) / 2))}.b3-choice>.b3-switch{--b3-choice-control:1.625rem}.b3-switch{appearance:none;background:var(--b3-color-muted);border:2px solid var(--b3-color-muted);cursor:pointer;border-radius:2rem;position:relative;block-size:1.625rem!important;inline-size:2.75rem!important}.b3-switch:before{content:"";background:var(--b3-color-surface);border-radius:50%;block-size:1.125rem;inline-size:1.125rem;position:absolute;inset-block-start:.125rem;inset-inline-start:.125rem}.b3-switch:checked{background:var(--b3-color-accent);border-color:var(--b3-color-accent)}.b3-switch:checked:before{background:var(--b3-color-on-accent);inset-inline-start:calc(100% - 1.25rem)}.b3-switch:disabled{opacity:.5;cursor:not-allowed}@media (forced-colors:active){.b3-switch{forced-color-adjust:none;background:canvas;border-color:buttontext}.b3-switch:before{background:buttontext}.b3-switch:checked{background:highlight;border-color:highlight}.b3-switch:checked:before{background:highlighttext}.b3-switch:disabled{opacity:1;background:canvas;border-color:graytext}.b3-switch:disabled:before{background:graytext}}.b3-input[type=number]{appearance:textfield}.b3-input[type=number]::-webkit-inner-spin-button,.b3-input[type=number]::-webkit-outer-spin-button{appearance:none;margin:0}.b3-input::-webkit-datetime-edit,.b3-input::-webkit-datetime-edit-fields-wrapper{padding-block:0}.b3-input:is([type=date],[type=time],[type=datetime-local],[type=month],[type=week]){appearance:none;max-inline-size:100%;display:block}.b3-input::-webkit-date-and-time-value{text-align:start;min-block-size:1lh}.b3-card-header,.b3-card-footer{justify-content:space-between;align-items:center;gap:var(--b3-space);flex-wrap:wrap;display:flex}.b3-card-header{margin-block-end:var(--b3-space-4)}.b3-card-footer{border-block-start:1px solid var(--b3-color-border);margin-block-start:var(--b3-space-4);padding-block-start:var(--b3-space-4)}.b3-stack>:is(.b3-card-header,.b3-card-footer){margin-block:0}.b3-surface[data-b3-elevation=raised]{box-shadow:var(--b3-shadow)}.b3-divider{border:0;border-block-start:1px solid var(--b3-color-border);inline-size:100%;margin-inline:0;margin-block:var(--b3-space)}.b3-stack>.b3-divider{margin-block:0}.b3-alert,.b3-toast{overflow-wrap:anywhere;min-inline-size:0}.b3-alert>*,.b3-toast>*{min-inline-size:0}.b3-alert pre{max-inline-size:100%;overflow-x:auto}.b3-alert{--b3-status-color:var(--b3-color-info);border:1px solid var(--b3-status-color);border-radius:var(--b3-radius-small);color:var(--b3-color-text);background:color-mix(in srgb, var(--b3-status-color) 8%, var(--b3-color-surface));border-inline-start-width:4px;align-items:start;gap:.75rem;padding:1rem;display:flex}.b3-alert[data-b3-tone=success],.b3-badge[data-b3-tone=success]{--b3-status-color:var(--b3-color-success)}.b3-alert[data-b3-tone=warning],.b3-badge[data-b3-tone=warning]{--b3-status-color:var(--b3-color-warning)}.b3-alert[data-b3-tone=danger],.b3-badge[data-b3-tone=danger]{--b3-status-color:var(--b3-color-danger)}.b3-badge[data-b3-tone]{color:var(--b3-status-color,var(--b3-color-info));background:color-mix(in srgb, currentColor 7%, transparent);border-color:currentColor}.b3-toast-region{z-index:100;inline-size:min(24rem,100% - 2rem);max-block-size:calc(100dvh - 2rem - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));overscroll-behavior:contain;pointer-events:none;gap:.75rem;display:grid;position:fixed;inset-block-end:calc(1rem + env(safe-area-inset-bottom,0px));inset-inline-end:1rem;overflow-y:auto}.b3-toast{border:1px solid var(--b3-color-border);border-radius:var(--b3-radius);background:var(--b3-color-surface);color:var(--b3-color-text);box-shadow:var(--b3-shadow-raised);pointer-events:auto;flex-wrap:wrap;align-items:start;gap:1rem;padding:1rem;display:flex}.b3-toast>:not(button,.b3-button){flex:12rem}.b3-toast>:is(button,.b3-button){flex:none;max-inline-size:100%}.b3-spinner{vertical-align:-.125em;border:2px solid;border-inline-end-color:#0000;border-radius:50%;flex:none;block-size:1.125em;inline-size:1.125em;animation:.8s linear infinite b3-spin;display:inline-block}@keyframes b3-spin{to{transform:rotate(360deg)}}.b3-skeleton{background:var(--b3-color-border);border-radius:var(--b3-radius-small);min-block-size:1rem;animation:1.8s ease-in-out infinite b3-pulse}@keyframes b3-pulse{50%{opacity:.45}}:is(button,a).b3-badge{min-block-size:auto;color:var(--b3-color-text);cursor:pointer;background:0 0;gap:.25rem;text-decoration:none;position:relative}:is(button,a).b3-badge:after{content:"";position:absolute;inset:-10px 0}:is(button,a).b3-badge[data-b3-tone]{color:var(--b3-status-color,var(--b3-color-info))}:is(button,a).b3-badge:is([aria-pressed=true],[aria-current]:not([aria-current=false])){color:var(--b3-color-on-accent);background:var(--b3-color-accent);border-color:var(--b3-color-accent)}.b3-avatar{background:var(--b3-color-accent);block-size:2.5rem;inline-size:2.5rem;color:var(--b3-color-on-accent);border-radius:50%;flex:none;place-items:center;font-size:.875rem;font-weight:650;display:inline-grid;overflow:hidden}.b3-avatar>img{object-fit:cover;block-size:100%;inline-size:100%}.b3-avatar[data-b3-unread]{position:relative;overflow:visible}.b3-avatar[data-b3-unread]>img{border-radius:inherit}.b3-avatar[data-b3-unread]:after{content:"";background:var(--b3-color-accent);block-size:.75rem;inline-size:.75rem;box-shadow:0 0 0 2px var(--b3-color-surface);border-radius:50%;position:absolute;inset-block-start:-.0625rem;inset-inline-end:-.0625rem}.b3-avatar-stack{padding-inline-start:.5rem;display:flex}.b3-avatar-stack>.b3-avatar{border:2px solid var(--b3-color-surface);margin-inline-start:-.5rem}.b3-kbd{border:1px solid var(--b3-color-border);background:var(--b3-color-surface);color:var(--b3-color-muted);border-block-end-width:2px;border-radius:.25rem;padding:.15rem .35rem;font:.75rem ui-monospace,monospace}.b3-table-wrap{border:1px solid var(--b3-color-border);border-radius:var(--b3-radius);position:relative;overflow-x:auto}.b3-table{border-collapse:collapse;text-align:start;font-variant-numeric:tabular-nums;inline-size:100%}.b3-table th{color:var(--b3-color-muted);background:var(--b3-color-canvas);font-size:.75rem;font-weight:650}.b3-table :is(th,td){border-block-end:1px solid var(--b3-color-border);text-align:start;vertical-align:middle;padding:.875rem 1rem}.b3-table tbody tr:last-child td{border-block-end:0}.b3-table[data-b3-density=compact] :is(th,td){padding:.5rem .75rem}.b3-table tbody tr[aria-selected=true]{background:color-mix(in srgb, var(--b3-color-accent) 10%, var(--b3-color-surface))}.b3-definition{grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:.75rem 1.5rem;margin:0;display:grid;container:b3-definition/inline-size}.b3-definition dt{overflow-wrap:anywhere;min-inline-size:0;color:var(--b3-color-muted)}.b3-definition dd{overflow-wrap:anywhere;margin:0}@container b3-definition (width<=26rem){.b3-definition>:is(dt,dd){grid-column:1/-1}.b3-definition>dt:not(:first-child){margin-block-start:.75rem}}.b3-stat{grid-template-columns:minmax(0,1fr);gap:.5rem;display:grid}.b3-stat-value{overflow-wrap:anywhere;letter-spacing:-.045em;font-variant-numeric:tabular-nums;font-size:clamp(1.5rem,5vw,3rem);font-weight:650;line-height:1.1}.b3-nav{border-block-end:1px solid var(--b3-color-border);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.75rem min(.75rem,3%);display:flex}.b3-nav[data-b3-orientation=vertical]{border-block-end:0;flex-direction:column;align-items:stretch}.b3-nav-link{overflow-wrap:anywhere;border-radius:var(--b3-radius-small);min-block-size:2.75rem;min-inline-size:0;max-inline-size:100%;color:var(--b3-color-muted);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.625rem min(.875rem,4%);text-decoration:none;display:flex}.b3-nav-link[aria-current=page]{background:color-mix(in srgb, var(--b3-color-accent) 10%, var(--b3-color-surface));color:var(--b3-color-accent);font-weight:650}.b3-nav-link:hover{background:var(--b3-color-surface);color:var(--b3-color-text)}.b3-breadcrumbs{color:var(--b3-color-muted);flex-wrap:wrap;align-items:center;gap:.5rem;margin:0;padding:0;font-size:.875rem;list-style:none;display:flex}.b3-breadcrumbs li+li:before{content:"/";color:var(--b3-color-border);margin-inline-end:.5rem}.b3-tablist{border-block-end:1px solid var(--b3-color-border);gap:.25rem;display:flex;overflow-x:auto}.b3-tab{appearance:none;color:var(--b3-color-muted);font:inherit;white-space:normal;overflow-wrap:anywhere;cursor:pointer;background:0 0;border:0;border-block-end:2px solid #0000;flex-shrink:0;min-block-size:2.75rem;max-inline-size:100%;padding:.75rem min(1rem,4vi)}.b3-tab[aria-selected=true]{color:var(--b3-color-accent);border-block-end-color:currentColor;font-weight:650}.b3-tab:disabled{opacity:.5;cursor:not-allowed}.b3-tabpanel{padding-block:var(--b3-space-4)}.b3-segmented{border-radius:var(--b3-radius);background:color-mix(in srgb, var(--b3-color-text) 7%, var(--b3-color-canvas));border:0;flex-wrap:wrap;gap:.25rem;min-inline-size:0;margin:0;padding:.25rem;display:flex}.b3-segmented>label{border-radius:calc(var(--b3-radius) - .25rem);min-block-size:2.75rem;max-inline-size:100%;color:var(--b3-color-muted);text-align:center;cursor:pointer;flex:1 0 auto;justify-content:center;align-items:center;gap:.375rem;padding-inline:.875rem;font-weight:600;display:inline-flex;position:relative}.b3-segmented>label>input{opacity:0;block-size:100%;inline-size:100%;cursor:inherit;margin:0;position:absolute;inset:0}.b3-segmented>label:has(input:checked){background:var(--b3-color-surface);color:var(--b3-color-text);box-shadow:0 1px 2px #0000001f, 0 0 0 1px var(--b3-color-border)}.b3-segmented>label:has(input:focus-visible){box-shadow:inset 0 0 0 2px}@media (forced-colors:active){.b3-segmented>label{border:2px solid canvas}.b3-segmented>label:has(input:checked){border-color:canvastext}.b3-segmented>label:has(input:focus-visible){outline-offset:1px;outline:2px solid highlight}}.b3-segmented>label:has(input:disabled){opacity:.5;cursor:not-allowed}.b3-filter-labels{overscroll-behavior-x:contain;scrollbar-width:none;gap:18px;display:flex;overflow-x:auto}.b3-filter-labels::-webkit-scrollbar{display:none}.b3-filter-labels>button{block-size:32px;box-shadow:none;color:var(--b3-color-muted);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:0;flex:none;padding:0;font-size:15px;font-weight:500}.b3-filter-labels>button:hover{color:var(--b3-color-text)}.b3-filter-labels>button:is([aria-checked=true],[aria-pressed=true]){color:var(--b3-color-accent);font-weight:700}.b3-filter-labels>button:focus-visible{box-shadow:none;text-decoration:underline 2px var(--b3-color-accent);text-underline-offset:5px;outline:none}@media (forced-colors:active){.b3-filter-labels>button:is([aria-checked=true],[aria-pressed=true]){text-decoration:underline}.b3-filter-labels>button:focus-visible{outline:1px solid highlight}}.b3-accordion{border-block-end:1px solid var(--b3-color-border)}.b3-accordion>summary{cursor:pointer;padding:1rem .25rem;font-weight:650}.b3-accordion>:not(summary){padding:0 .25rem 1rem}.b3-dropdown{display:inline-block;position:relative}.b3-dropdown>summary{list-style:none}.b3-dropdown>summary::-webkit-details-marker{display:none}.b3-dropdown-panel{z-index:20;border:1px solid var(--b3-color-border);border-radius:var(--b3-radius);background:var(--b3-color-surface);max-block-size:70svh;inline-size:max-content;min-inline-size:min(12rem,85vw);max-inline-size:min(22rem,85vw);color:var(--b3-color-text);box-shadow:var(--b3-shadow-raised);padding:.5rem;position:absolute;inset-block-start:calc(100% + .5rem);inset-inline-start:0;overflow-y:auto}.b3-dialog{overscroll-behavior:contain;border:1px solid var(--b3-color-border);border-radius:var(--b3-radius-large);background:var(--b3-color-surface);max-block-size:calc(100svh - 2rem);inline-size:min(32rem,100% - 2rem);color:var(--b3-color-text);box-shadow:var(--b3-shadow-raised);padding:min(1.5rem,5vi);overflow:auto;container:b3-dialog/inline-size}.b3-dialog::backdrop{background:#101b17a6}.b3-dialog[data-b3-placement=end]{border-radius:0;block-size:100svh;max-block-size:100svh;inline-size:min(28rem,100%);max-inline-size:100%;margin:0;margin-inline-start:auto}@media (prefers-reduced-motion:no-preference){.b3-dialog[open]{animation:.28s cubic-bezier(.16,1,.3,1) b3-dialog-enter}.b3-dialog[open][data-b3-placement=end]{animation-name:b3-drawer-enter}.b3-dialog::backdrop,.b3-sheet::backdrop{transition:opacity .16s ease-out}.b3-dialog[data-b3-closing]::backdrop,.b3-sheet[data-b3-closing]::backdrop{opacity:0}@keyframes b3-dialog-enter{0%{opacity:0;transform:translateY(8px)scale(.96)}}@keyframes b3-drawer-enter{0%{opacity:0;translate:var(--b3-drawer-offset,1rem)}}.b3-dialog[dir=rtl][data-b3-placement=end],[dir=rtl] .b3-dialog[data-b3-placement=end]{--b3-drawer-offset:-1rem}}.b3-dialog>form{gap:var(--b3-space);flex-direction:column;margin:0;display:flex}.b3-dialog>form>header:has(>button:last-child){grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:.75rem;display:grid}.b3-dialog>form>header:has(>button:last-child)>:not(:last-child){grid-column:1;min-inline-size:0}.b3-dialog>form>header>button:last-child:not(:first-child){grid-area:1/2}.b3-dialog>form>footer{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.75rem;display:flex}.b3-dialog>form>footer>[data-b3-emphasis=quiet]:first-child:not(:last-child){margin-inline-end:auto}@container b3-dialog (width<=16rem){.b3-dialog>form>header:has(>button:last-child){flex-direction:column;align-items:flex-start;display:flex}}.b3-tree,.b3-tree ul{overflow-wrap:anywhere;border-inline-start:1px solid var(--b3-color-border);padding-inline-start:min(1rem,5%);list-style:none}.b3-tree summary{cursor:pointer;padding-block:.5rem}.b3-prose{overflow-wrap:anywhere;max-inline-size:65ch;line-height:1.75}.b3-prose :is(p,ul,ol,blockquote,pre){margin-block:1rem}.b3-prose :is(h1,h2,h3,h4,h5,h6){margin-block:1.75rem .75rem;line-height:1.25}.b3-prose :is(h5,h6){font-size:1em}.b3-prose>:first-child{margin-block-start:0}.b3-prose :is(img,video,iframe){max-inline-size:100%;display:block}.b3-prose :is(img,video){block-size:auto}.b3-prose iframe{border:0}.b3-prose blockquote{border-inline-start:3px solid var(--b3-color-accent);color:var(--b3-color-muted);margin-inline:0;padding-inline-start:1rem}.b3-prose pre{background:var(--b3-color-surface);border:1px solid var(--b3-color-border);border-radius:var(--b3-radius-small);padding:1rem;overflow-x:auto}.b3-visually-hidden{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}.b3-skip-link{z-index:1000;border-radius:var(--b3-radius-small);background:var(--b3-color-accent);max-inline-size:calc(100% - 1.5rem);color:var(--b3-color-on-accent);padding:.75rem 1rem;font-weight:650;position:fixed;inset-block-start:max(.75rem, env(safe-area-inset-top,0px));inset-inline-start:.75rem}.b3-skip-link:not(:focus){clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;padding:0;overflow:hidden}.b3-hero{grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;gap:clamp(2rem,6vw,6rem);padding-block:clamp(3rem,8vw,7rem);display:grid}.b3-hero[data-b3-align=center]{text-align:center;grid-template-columns:minmax(0,1fr);justify-items:center}.b3-hero-copy{gap:1.5rem;max-inline-size:40rem;display:grid}.b3-feature{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:clamp(1.5rem,5vw,5rem);padding-block:clamp(2rem,6vw,5rem);display:grid}.b3-feature[data-b3-reverse=true]>:first-child{order:2}.b3-feature-icon{border-radius:var(--b3-radius);background:var(--b3-color-accent);block-size:3rem;inline-size:3rem;color:var(--b3-color-on-accent);place-items:center;display:inline-grid}.b3-pricing{border:1px solid var(--b3-color-border);border-radius:var(--b3-radius-large);background:var(--b3-color-surface);color:var(--b3-color-text);flex-direction:column;gap:1.25rem;padding:clamp(1.25rem,3vw,2rem);display:flex}.b3-pricing[data-b3-featured=true]{border:2px solid var(--b3-color-accent);box-shadow:var(--b3-shadow)}.b3-pricing>.b3-button:last-child{margin-block-start:auto}.b3-price{font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:baseline;gap:.375rem;display:flex}.b3-price>strong{letter-spacing:-.05em;font-size:3.25rem;line-height:1.1}.b3-checklist{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.b3-checklist>li{align-items:start;gap:.625rem;display:flex}.b3-checklist>li:before{content:"✓";color:var(--b3-color-accent);font-weight:700}.b3-quote{border-inline-start:3px solid var(--b3-color-accent);margin:0;padding:1.5rem}.b3-quote blockquote{margin:0 0 1rem;font-size:1.25rem;line-height:1.5}.b3-art{isolation:isolate;border-radius:var(--b3-radius-large);background:var(--b3-color-surface);position:relative;overflow:hidden}.b3-art:before{content:"";z-index:-1;pointer-events:none;position:absolute;inset:0}.b3-art[data-b3-art=dots]:before{background-image:radial-gradient(var(--b3-color-border) 1px,transparent 1px);background-size:16px 16px}.b3-art[data-b3-art=glow]:before{background:radial-gradient(ellipse at 20% 20%,color-mix(in srgb,var(--b3-color-accent) 20%,transparent),transparent 65%)}.b3-art[data-b3-art=wash]:before{background:linear-gradient(135deg,color-mix(in srgb,var(--b3-color-accent) 14%,transparent),transparent 70%)}@media (width<=48rem){.b3-hero,.b3-feature{grid-template-columns:minmax(0,1fr)}.b3-feature[data-b3-reverse=true]>:first-child{order:initial}}.b3-reading{grid-template-columns:minmax(0,1fr) minmax(12rem,16rem);grid-template-areas:"content outline";align-items:start;gap:clamp(2rem,5vw,5rem);display:grid}.b3-reading>:not(.b3-toc){grid-area:content;min-inline-size:0}.b3-toc{max-block-size:calc(100svh - var(--b3-outline-top,1rem) - 1rem);border-inline-start:1px solid var(--b3-color-border);grid-area:outline;padding-inline-start:min(1rem,5%);font-size:.875rem;position:sticky;inset-block-start:var(--b3-outline-top,1rem);overflow-y:auto}.b3-toc ol{gap:.25rem;margin:.75rem 0 0;padding:0;list-style:none;display:grid}.b3-toc ol ol{margin:.25rem 0;padding-inline-start:min(1rem,5%)}.b3-toc-link{border-radius:var(--b3-radius-small);color:var(--b3-color-muted);overflow-wrap:anywhere;padding:.625rem min(.75rem,5%);text-decoration:none;display:block}.b3-toc-link:hover{color:var(--b3-color-text);background:var(--b3-color-surface)}.b3-toc-link[aria-current=location]{color:var(--b3-color-accent);background:color-mix(in srgb, var(--b3-color-accent) 10%, var(--b3-color-surface));font-weight:650}@media (width<=48rem){.b3-reading{grid-template-columns:minmax(0,1fr);grid-template-areas:"outline""content";gap:2rem}.b3-toc{max-block-size:none;position:static}}.b3-command{inline-size:min(38rem,100% - 2rem);padding:0}.b3-command[open]:has(>.b3-scroll){grid-template-rows:auto minmax(0,1fr);display:grid}.b3-command>.b3-scroll>.b3-command-list{max-block-size:none;overflow:visible}.b3-command-search{border-block-end:1px solid var(--b3-color-border);flex-wrap:wrap;justify-content:end;align-items:center;gap:.75rem;padding:min(1rem,4vw);display:flex}.b3-command-search>input{flex:12ch;min-inline-size:0}.b3-command-list{overscroll-behavior:contain;max-block-size:50svh;padding:.5rem;overflow-y:auto}.b3-command-group+.b3-command-group{border-block-start:1px solid var(--b3-color-border);margin-block-start:.5rem;padding-block-start:.5rem}.b3-command-group>:first-child:not([role=option]){color:var(--b3-color-muted);padding:.5rem .75rem;font-size:.75rem;display:block}.b3-command-item{border-radius:var(--b3-radius-small);cursor:pointer;justify-content:space-between;align-items:center;gap:min(1rem,2vw);min-block-size:2.75rem;padding:min(.875rem,2svh) min(.75rem,3vw);display:flex}.b3-command .b3-command-item{border-radius:max(0px, calc(var(--b3-radius-large) - .5rem - 1px))}.b3-command-item>:first-child{overflow-wrap:anywhere;min-inline-size:0}.b3-command-item[aria-selected=true]{background:var(--b3-color-accent);color:var(--b3-color-on-accent)}.b3-command-item[aria-selected=true] .b3-muted{color:inherit}.b3-command-item[aria-disabled=true]{opacity:.5;cursor:not-allowed}.b3-command-item:not([aria-disabled=true]):hover{outline:1px solid var(--b3-color-border);outline-offset:-1px}.b3-form-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));align-items:start;gap:1.25rem;display:grid}.b3-form-grid[data-b3-layout=inline]{flex-wrap:wrap;align-items:end;display:flex}.b3-form-grid[data-b3-layout=inline]>.b3-field{flex:12rem;min-inline-size:0}.b3-form-grid[data-b3-layout=inline]>.b3-button{overflow-wrap:anywhere;flex:0 auto;max-inline-size:100%}.b3-fieldset{border:0;min-inline-size:0;margin:0;padding:0}.b3-fieldset>legend{padding:0 0 .75rem;font-weight:650}.b3-help,.b3-error{overflow-wrap:anywhere}.b3-help{color:var(--b3-color-muted);font-size:.875rem}.b3-help[data-b3-tone=success]{color:var(--b3-color-success)}.b3-help[data-b3-tone=warning]{color:var(--b3-color-warning)}.b3-input:where(:not([type=checkbox],[type=radio]))[data-b3-size=small]{padding:.5rem .75rem}.b3-input:where(:not([type=checkbox],[type=radio]))[data-b3-size=large]{min-block-size:3.25rem;padding:.875rem 1rem}.b3-input[data-b3-emphasis=subtle]{background-color:var(--b3-color-canvas);border-color:#0000}.b3-input[data-b3-emphasis=outline]{background-color:#0000;border-width:2px}.b3-input[data-b3-tone=success]{border-color:var(--b3-color-success)}.b3-input[data-b3-tone=warning]{border-color:var(--b3-color-warning)}.b3-input[aria-invalid=true]{border-color:var(--b3-color-danger)}textarea.b3-input{resize:vertical}select.b3-input[multiple]{min-block-size:8rem}.b3-input[type=file]{padding:.375rem}.b3-input::file-selector-button{font:inherit;border-radius:max(0px, calc(var(--b3-radius) - .375rem - 1px));background:var(--b3-color-accent);color:var(--b3-color-on-accent);cursor:pointer;border:0;margin-inline-end:.75rem;padding:.5rem .75rem}.b3-input[data-b3-emphasis=outline]::file-selector-button{border-radius:max(0px, calc(var(--b3-radius) - .375rem - 2px))}.b3-input[type=color]{inline-size:5rem;padding:.25rem}.b3-range{min-block-size:2.75rem;inline-size:100%;accent-color:var(--b3-color-accent);margin:0}.b3-choice-card{border:1px solid var(--b3-color-border);border-radius:var(--b3-radius);background:var(--b3-color-surface);color:var(--b3-color-text);cursor:pointer;flex-wrap:wrap;align-items:start;gap:.75rem;padding:1rem;display:flex}.b3-choice-card>:not(input){overflow-wrap:anywhere;flex:12ch;min-inline-size:0}.b3-choice-card>input{flex:none;block-size:1.125rem;inline-size:1.125rem;margin-block-start:.3rem}.b3-choice-card:has(input:checked){border-color:var(--b3-color-accent);background:color-mix(in srgb, var(--b3-color-accent) 7%, var(--b3-color-surface));box-shadow:inset 0 0 0 1px var(--b3-color-accent)}.b3-choice-card:has(input:focus-visible){outline:none;box-shadow:inset 0 0 0 2px}.b3-choice-card:has(input:disabled){opacity:.5;cursor:not-allowed}.b3-choice-card:has(input[aria-invalid=true]){border-color:var(--b3-color-danger)}.b3-range[aria-invalid=true]{accent-color:var(--b3-color-danger)}.b3-stepper{flex-wrap:wrap;gap:1rem 2rem;margin:0;padding:0;list-style:none;display:flex}.b3-step{color:var(--b3-color-muted);align-items:center;gap:.625rem;font-size:.875rem;display:flex}.b3-step-marker{border:1px solid var(--b3-color-border);font-variant-numeric:tabular-nums;border-radius:50%;flex:none;place-items:center;block-size:2rem;inline-size:2rem;display:grid}.b3-step[aria-current=step]{color:var(--b3-color-text);font-weight:650}.b3-step[aria-current=step] .b3-step-marker{background:var(--b3-color-accent);color:var(--b3-color-on-accent);border-color:var(--b3-color-accent)}.b3-step[data-b3-complete=true] .b3-step-marker{border-color:var(--b3-color-success);color:var(--b3-color-success)}.b3-conversation{gap:1.5rem;min-inline-size:0;margin:0;padding:0;list-style:none;display:grid}.b3-message{grid-template-columns:minmax(0,1fr);justify-self:start;gap:.375rem;min-inline-size:0;max-inline-size:min(85%,38rem);display:grid}.b3-message[data-b3-side=self]{justify-self:end}.b3-message-body{border:1px solid var(--b3-color-border);border-radius:var(--b3-radius);background:var(--b3-color-surface);color:var(--b3-color-text);white-space:pre-wrap;overflow-wrap:anywhere;padding:.75rem 1rem}.b3-message[data-b3-side=self]>.b3-message-body{background:var(--b3-color-accent);color:var(--b3-color-on-accent);border-color:#0000}.b3-message-meta{color:var(--b3-color-muted);flex-wrap:wrap;gap:.35rem .75rem;font-size:.8125rem;display:flex}.b3-message[data-b3-side=self]>.b3-message-meta{justify-content:end}.b3-conversation{align-content:start}.b3-message-body:has(>:is(div,p,ul,ol,table,pre,blockquote,b3-markdown-stream)){white-space:normal}.b3-composer{align-items:end;gap:var(--b3-space-2);padding:var(--b3-space-3);border-block-start:1px solid var(--b3-color-border);background:var(--b3-color-canvas);flex-wrap:wrap;display:flex}.b3-composer>.b3-input,.b3-composer>.b3-button{border-radius:var(--b3-radius);min-block-size:var(--b3-d-control,2.75rem)}.b3-composer>.b3-input{resize:none;min-inline-size:0;max-inline-size:100%;padding-block:calc((var(--b3-d-control,2.75rem) - 1.5em - 2px) / 2);flex:12ch;line-height:1.5}.b3-composer>.b3-button{block-size:var(--b3-d-control,2.75rem);min-inline-size:var(--b3-d-control,2.75rem);flex-shrink:0;margin-inline-start:auto}.b3-message-body :where(p,ul,ol,pre,table,blockquote,h1,h2,h3,h4,h5,h6,div,figure):first-child{margin-block-start:0}.b3-message-body :where(p,ul,ol,pre,table,blockquote,h1,h2,h3,h4,h5,h6,div,figure):last-child{margin-block-end:0}.b3-mobile-app{--b3-touch:44px;min-block-size:100svh;max-inline-size:var(--b3-app-width,70rem);margin-inline:auto;padding-block-end:calc(5.5rem + env(safe-area-inset-bottom,0px))}.b3-mobile-app[data-b3-platform=android]{--b3-touch:48px}.b3-mobile-app :where(button,.b3-button,select,input:not([type=checkbox],[type=radio])){min-block-size:var(--b3-touch)}.b3-app-bar{padding:max(.75rem, env(safe-area-inset-top,0px)) 1.25rem .75rem;align-items:center;gap:.75rem;display:flex}.b3-app-bar>:last-child:not(:first-child){margin-inline-start:auto}.b3-bottom-nav{z-index:10;max-inline-size:var(--b3-app-width,70rem);padding:.5rem clamp(.5rem, 2vw, 1rem) max(.5rem, env(safe-area-inset-bottom,0px));background:var(--b3-color-surface);color:var(--b3-color-text);border-block-start:1px solid var(--b3-color-border);flex-wrap:wrap;justify-content:space-around;gap:.125rem;margin-inline:auto;display:flex;position:fixed;inset-block-end:0;inset-inline:0}.b3-bottom-link{appearance:none;cursor:pointer;overflow-wrap:anywhere;text-align:center;flex:1 1 max-content;min-block-size:var(--b3-touch,44px);min-inline-size:var(--b3-touch,44px);max-inline-size:100%;color:var(--b3-color-muted);background:0 0;border:0;border-radius:1rem;flex-direction:column;justify-content:center;align-items:center;gap:.15rem;padding:.25rem clamp(.125rem,1vw,.5rem);font-size:.75rem;text-decoration:none;display:flex}.b3-bottom-link:disabled{opacity:.5;cursor:not-allowed}.b3-bottom-link:has(svg){justify-content:flex-start}.b3-bottom-link[aria-current=page]{color:var(--b3-color-accent);font-weight:700}[data-b3-platform=android] .b3-bottom-link[aria-current=page]{background:var(--b3-color-canvas)}.b3-mobile-list{border:1px solid var(--b3-color-border);background:var(--b3-color-surface);border-radius:1rem;margin:0;padding:0;list-style:none;overflow:hidden}.b3-mobile-list>li+li{border-block-start:1px solid var(--b3-color-border)}.b3-mobile-row{min-block-size:var(--b3-touch,44px);color:var(--b3-color-text);align-items:center;gap:1rem;padding:.875rem 1rem;text-decoration:none;display:flex}.b3-mobile-row>:last-child:not(:first-child){margin-inline-start:auto}.b3-sheet{inline-size:min(100%, var(--b3-overlay-width,32rem));max-inline-size:none;max-block-size:min(85dvh, calc(100dvh - env(safe-area-inset-top,0px) - 1rem));overscroll-behavior:contain;border:1px solid var(--b3-color-border);padding:1.5rem min(1.5rem, 5vi) max(1.5rem, env(safe-area-inset-bottom,0px));background:var(--b3-color-surface);color:var(--b3-color-text);border-radius:1.5rem 1.5rem 0 0;margin:0 auto;inset:auto 0 0;overflow-y:auto}.b3-sheet::backdrop{background:#0007}.b3-sheet [data-b3-initial-focus]:focus{box-shadow:none;outline:none}.b3-sheet-handle{min-block-size:44px;inline-size:5rem;color:var(--b3-color-muted);touch-action:none;cursor:grab;background:0 0;border:0;border-radius:1rem;flex:none;align-self:center;place-items:center;margin-block:-1rem -.5rem;padding:0;display:grid}.b3-sheet-handle:before{content:"";background:currentColor;border-radius:1rem;block-size:.25rem;inline-size:2.25rem}.b3-sheet[data-b3-dragging]{animation:none}.b3-sheet[data-b3-dragging] .b3-sheet-handle{cursor:grabbing}[data-b3-platform=android] .b3-mobile-list{border-radius:1.5rem}@media (prefers-reduced-motion:no-preference){.b3-sheet[open]{animation:.32s cubic-bezier(.16,1,.3,1) b3-sheet-enter}@keyframes b3-sheet-enter{0%{opacity:0;transform:translateY(3rem)}to{opacity:1;transform:translateY(0)}}}.b3-root:has(dialog:modal){overflow:hidden}.b3-bottom-link[aria-current=page]{background:color-mix(in srgb, var(--b3-color-accent) 12%, transparent)}.b3-bottom-link :where(svg:not([width])){flex:none;block-size:1.375rem;inline-size:1.375rem}.b3-bottom-link>:where(span,strong):not(.b3-count){white-space:normal;overflow-wrap:anywhere;max-inline-size:100%;overflow:visible}:has(>.b3-bottom-link:nth-of-type(5))>.b3-bottom-link{padding-inline:.125rem;font-size:.6875rem}.b3-app-frame{inline-size:100%;block-size:var(--b3-frame-height,100dvh);min-block-size:0;max-inline-size:var(--b3-app-width,70rem);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);grid-template-rows:auto minmax(0,1fr) auto;margin-inline:auto;display:grid;overflow:clip}.b3-app-frame>header{grid-row:1;min-inline-size:0}.b3-app-frame>main{overscroll-behavior:contain;grid-area:2/1;min-block-size:0;min-inline-size:0;overflow:hidden auto}.b3-app-frame>:is(nav,footer){grid-row:3;min-inline-size:0;position:relative}.b3-app-frame>.b3-toast-region{overscroll-behavior:contain;grid-area:2/1;place-self:end;min-block-size:0;max-block-size:calc(100% - 2rem);margin:1rem;position:relative;inset:auto;overflow-y:auto}.b3-app-frame>.b3-app-bar{padding-block-start:.75rem}.b3-app-frame:has(>.b3-bottom-nav,>footer .b3-bottom-nav){padding-block-end:0}.b3-app-frame .b3-bottom-nav{inline-size:100%;max-inline-size:none;padding-block-end:max(.5rem, env(safe-area-inset-bottom,0px));position:static}:where(.b3-root[data-b3-density]) .b3-button{min-block-size:var(--b3-d-control,2.75rem);padding:var(--b3-d-pad-block,.625rem) var(--b3-d-pad-inline,1rem);font-size:var(--b3-d-label,inherit)}:where(.b3-root[data-b3-density]) .b3-button[data-b3-size=small]{min-block-size:var(--b3-d-control-small,auto);padding:calc(var(--b3-d-pad-block,.5rem) - .125rem) calc(var(--b3-d-pad-inline,.75rem) - .25rem)}:where(.b3-root[data-b3-density]) .b3-input:where(:not([type=checkbox],[type=radio])){min-block-size:var(--b3-d-control,2.75rem);padding:calc((var(--b3-d-control,2.75rem) - 1.5em - 2px) / 2) .75rem;line-height:1.5}:where(.b3-root[data-b3-density]) .b3-nav-link{min-block-size:var(--b3-d-control,2.75rem);padding:var(--b3-d-pad-block,.625rem) min(var(--b3-d-pad-inline,.875rem), 4%);font-size:var(--b3-d-label,inherit)}:where(.b3-root[data-b3-density]) .b3-heading{font-size:var(--b3-d-heading,1.375rem)}:where(.b3-root[data-b3-density]) .b3-avatar{block-size:var(--b3-d-avatar,2.5rem);inline-size:var(--b3-d-avatar,2.5rem)}:where(.b3-root[data-b3-density]) .b3-conversation{gap:var(--b3-d-gap,1.5rem)}:where(.b3-root[data-b3-density]) .b3-message-body{padding:var(--b3-d-message-pad,.75rem 1rem)}:where(.b3-root[data-b3-density]) .b3-message-meta{font-size:var(--b3-d-meta,.8125rem)}.b3-button[data-b3-emphasis=ghost]{color:var(--b3-color-muted);background:0 0;border-color:#0000}.b3-button[data-b3-emphasis=ghost]:not(:disabled):hover{color:var(--b3-color-text);background:color-mix(in srgb, var(--b3-color-text) 10%, transparent);box-shadow:none}.b3-button[data-b3-emphasis=ghost][aria-pressed=true]{color:var(--b3-color-accent)}.b3-button[data-b3-icon]{min-inline-size:var(--b3-d-control,2.75rem);padding-inline:0}.b3-button[data-b3-icon] :where(svg:not([width])){block-size:1.375em;inline-size:1.375em}.b3-button[data-b3-icon][data-b3-size=small]{min-inline-size:var(--b3-d-control-small,2.75rem);min-block-size:var(--b3-d-control-small,2.75rem);block-size:var(--b3-d-control-small,2.75rem);padding:0}.b3-button:disabled{opacity:1;background:color-mix(in srgb, var(--b3-color-muted) 14%, var(--b3-color-surface));color:var(--b3-color-muted);border-color:#0000}.b3-button[data-b3-emphasis=ghost]:disabled{background:0 0}.b3-truncate{white-space:nowrap;text-overflow:ellipsis;min-inline-size:0;overflow:hidden}.b3-strong{font-size:inherit;font-weight:650}.b3-caption{color:var(--b3-color-muted);font-size:.8125rem;line-height:1.4}.b3-heading[data-b3-size=small]{font-size:1.0625rem;line-height:1.3}:is(a,button).b3-caption{color:var(--b3-color-accent);cursor:pointer;text-underline-offset:.15em;background:0 0;border:0;padding:0}:is(a,button).b3-caption:is(:hover,:focus-visible){text-decoration:underline}:where(.b3-root[data-b3-density]) .b3-caption{font-size:var(--b3-d-meta,.8125rem)}.b3-badge{gap:.25rem}:where(.b3-root[data-b3-density]) .b3-surface{padding:var(--b3-d-surface-pad,clamp(1rem, 3vw, 2rem))}.b3-input-group,.b3-input-group>.b3-input-affix,.b3-input-group>.b3-input{background:var(--b3-color-surface)}.b3-root[data-b3-theme=dark] .b3-message[data-b3-side=self]>.b3-message-body{background:color-mix(in srgb, var(--b3-color-accent) 22%, var(--b3-color-surface));color:var(--b3-color-text)}.b3-empty{justify-items:center;gap:var(--b3-space-2);padding:var(--b3-space-12) var(--b3-space-4);text-align:center;color:var(--b3-color-muted);display:grid}.b3-empty>svg{color:var(--b3-color-muted)}}@property --b3-reel-fade{syntax:"<length>";inherits:false;initial-value:2.5rem}
1
+ @layer bare.reset{:where(.b3-root),:where(.b3-root *){box-sizing:border-box}:where(.b3-root){font-family:var(--b3-font-body);background:var(--b3-color-canvas);color:var(--b3-color-text);color-scheme:light;margin:0;font-size:1rem;line-height:1.5}:where(.b3-root>body){margin:0}:where(b3-tabs,b3-dropdown,b3-dialog,b3-sheet,b3-command,b3-composer){display:contents}:where(b3-reel,b3-toast-region,b3-toc,b3-board,b3-date-picker,b3-image-viewer){display:block}:where(.b3-root) :where(button,input,select,textarea){font:inherit}:where(.b3-root) :where(button:not(:disabled)){color:inherit}:where(.b3-root) :where(button:not(:disabled),a[href],select,summary,[role=button],[role=option],[role=tab],[role=menuitem],[role=link]){cursor:pointer}:where(.b3-root) :where(h1,h2,h3,h4,h5,h6,p){margin:0}:where(.b3-root) :where(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:none;box-shadow:inset 0 0 0 2px}:where(.b3-root) :where([tabindex="-1"]:not(:is(button,a,input,select,textarea,summary,[role=button],[role=link]))):focus-visible{box-shadow:none}@media (forced-colors:active){:where(.b3-root) :where(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline-offset:-2px;outline:1px solid highlight}}:where(.b3-root) :where(img,svg:not([width])){max-inline-size:100%}:where(.b3-root) :where(svg:not([width])){block-size:1em;inline-size:1em}@media (prefers-reduced-motion:reduce){:where(.b3-root *),:where(.b3-root *):before,:where(.b3-root *):after{transition:none!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}[data-b3-motion=reduce] *,[data-b3-motion=reduce] :before,[data-b3-motion=reduce] :after,[data-b3-motion=reduce] ::backdrop{scroll-behavior:auto!important;transition:none!important;animation:none!important}:where(.b3-root [hidden]):not([hidden=until-found]){display:none!important}:where(.b3-root) :where(input[type=checkbox],input[type=radio],input[type=range]){accent-color:var(--b3-color-accent)}:where(.b3-root) :where(input[type=checkbox],input[type=radio]){flex-shrink:0}}@layer bare.tokens{.b3-root:where(:not(.b3-root .b3-root)),.b3-root[data-b3-theme=light]{--b3-color-canvas:#f6f5f0;--b3-color-surface:#fff;--b3-color-text:#202923;--b3-color-muted:#59655d;--b3-color-border:#d5dbd3;--b3-color-border-strong:#838d86;--b3-color-accent:#245c42;--b3-color-on-accent:#fff;--b3-color-danger:#a62c35;--b3-color-focus:#276bdd;--b3-font-body:ui-sans-serif, system-ui, sans-serif;--b3-font-display:var(--b3-font-body);--b3-radius:.75rem;--b3-space:1rem;--b3-content:68rem}.b3-root[data-b3-theme=dark]{color-scheme:dark;--b3-color-canvas:#141c19;--b3-color-surface:#202c26;--b3-color-text:#edf3ec;--b3-color-muted:#a8b9ad;--b3-color-border:#415348;--b3-color-border-strong:#74877b;--b3-color-accent:#aadbb8;--b3-color-on-accent:#132b1b;--b3-color-danger:#ffadb1;--b3-color-focus:#9ac4ff}.b3-root:where(:not(.b3-root .b3-root)),.b3-root[data-b3-theme=light]{--b3-space-1:.25rem;--b3-space-2:.5rem;--b3-space-3:.75rem;--b3-space-4:1rem;--b3-space-6:1.5rem;--b3-space-8:2rem;--b3-space-12:3rem;--b3-radius-small:.375rem;--b3-radius-large:1.25rem;--b3-shadow:0 8px 32px #14231b14;--b3-shadow-raised:0 16px 56px #14231b24;--b3-color-success:#256443;--b3-color-warning:#805100;--b3-color-info:#275f99;--b3-duration:.16s}.b3-root[data-b3-theme=dark]{--b3-shadow:0 8px 32px #0004;--b3-shadow-raised:0 16px 56px #0007;--b3-color-success:#99d9ab;--b3-color-warning:#f2c76c;--b3-color-info:#a2cfff}.b3-root[data-b3-density=compact]{--b3-d-control:2.25rem;--b3-d-control-small:1.875rem;--b3-d-pad-block:.4375rem;--b3-d-pad-inline:.875rem;--b3-d-label:.875rem;--b3-d-heading:1.0625rem;--b3-d-avatar:2.25rem;--b3-d-message-pad:.625rem .875rem;--b3-d-meta:.75rem;--b3-d-gap:1rem;--b3-d-surface-pad:1rem}@media (pointer:fine) and (width>=48rem){.b3-root[data-b3-density=auto]{--b3-d-control:2.25rem;--b3-d-control-small:1.875rem;--b3-d-pad-block:.4375rem;--b3-d-pad-inline:.875rem;--b3-d-label:.875rem;--b3-d-heading:1.0625rem;--b3-d-avatar:2.25rem;--b3-d-message-pad:.625rem .875rem;--b3-d-meta:.75rem;--b3-d-gap:1rem;--b3-d-surface-pad:1rem}}}@layer bare.layout{.b3-shell{inline-size:min(100%, var(--b3-content));margin-inline:auto;padding:clamp(1rem,4vw,3rem)}.b3-stack{gap:var(--b3-space);flex-direction:column;min-inline-size:0;display:flex}.b3-stack:where(dialog:not([open])){display:none}.b3-scroll{overscroll-behavior:contain;scrollbar-gutter:stable;flex:auto;min-block-size:0;min-inline-size:0;overflow:auto}dialog.b3-stack>.b3-scroll{min-block-size:min(6rem,30dvh)}.b3-stack:has(>.b3-scroll)>:not(.b3-scroll){flex-shrink:0}.b3-cluster{align-items:center;gap:var(--b3-space);flex-wrap:wrap;min-inline-size:0;display:flex}.b3-cluster>*,.b3-split>*{min-inline-size:0}.b3-inline{vertical-align:middle;align-items:center;gap:.5em;min-inline-size:0;max-inline-size:100%;display:inline-flex}.b3-inline>*{min-inline-size:0}.b3-inline:has(>.b3-badge){flex-wrap:wrap}.b3-inline>.b3-badge{flex-shrink:0}.b3-inline:has(>.b3-badge)>:not(.b3-badge,.b3-icon,svg){flex:1 1 min-content}.b3-grid{grid-template-columns:repeat(auto-fit, minmax(min(100%, var(--b3-grid-min,17rem)), 1fr));gap:var(--b3-space);display:grid}.b3-split{justify-content:space-between;align-items:center;gap:var(--b3-space);flex-wrap:wrap;display:flex}.b3-page{flex-direction:column;min-block-size:100svh;display:flex}.b3-page-body{flex:1;min-inline-size:0}.b3-app-layout{flex-wrap:wrap;min-block-size:100svh;display:flex;container:b3-app/inline-size}.b3-app-layout>.b3-sidebar{flex:16rem}.b3-app-layout>:not(.b3-sidebar){flex:999 32rem;min-inline-size:0}.b3-sidebar{padding:var(--b3-space-6);border-inline-end:1px solid var(--b3-color-border);background:var(--b3-color-surface);min-inline-size:0}.b3-center{padding:var(--b3-space-6);place-items:center;display:grid}.b3-cover{min-block-size:min(42rem,85svh);padding-block:var(--b3-space-12);flex-direction:column;justify-content:center;display:flex}.b3-reel{gap:var(--b3-space);scroll-snap-type:x proximity;padding-block-end:var(--b3-space-2);display:flex;overflow-x:auto}.b3-reel>*{scroll-snap-align:start;flex:0 0 min(85%,20rem)}@container b3-app (width<48rem){.b3-app-layout>.b3-sidebar{border-inline-end:0;border-block-end:1px solid var(--b3-color-border)}}.b3-reel:has(>.b3-badge){scrollbar-width:none;align-items:center;gap:.5rem;padding-block:.625rem}.b3-reel:has(>.b3-badge)::-webkit-scrollbar{display:none}.b3-reel>.b3-badge{flex:none}.b3-stack>.b3-reel{flex-shrink:0}@supports (animation-timeline:scroll(self inline)){.b3-reel:has(>.b3-badge){mask-image:linear-gradient(to right, #000 calc(100% - var(--b3-reel-fade)), #0000);animation:linear both b3-reel-fade scroll(self inline)}.b3-reel:has(>.b3-badge):dir(rtl){mask-image:linear-gradient(to left, #000 calc(100% - var(--b3-reel-fade)), #0000)}@keyframes b3-reel-fade{90%{--b3-reel-fade:2.5rem}to{--b3-reel-fade:0rem}}}}@layer bare.components{.b3-title{font-family:var(--b3-font-display);letter-spacing:-.04em;overflow-wrap:anywhere;font-size:clamp(1.75rem,7vw,4rem);line-height:1.05}.b3-heading{font-family:var(--b3-font-display);letter-spacing:-.02em;overflow-wrap:anywhere;font-size:1.375rem;font-weight:650;line-height:1.25}.b3-muted{color:var(--b3-color-muted)}.b3-label{letter-spacing:.06em;text-transform:uppercase;font-size:.8125rem;font-weight:650}.b3-surface{background:var(--b3-color-surface);color:var(--b3-color-text);border:1px solid var(--b3-color-border);border-radius:var(--b3-radius);padding:clamp(1rem,3vw,2rem)}.b3-button{border-radius:var(--b3-radius);background:var(--b3-color-accent);min-block-size:2.75rem;color:var(--b3-color-on-accent);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:.625rem 1rem;font-weight:650;text-decoration:none;display:inline-flex}.b3-button :where(svg){flex-shrink:0;display:block}.b3-button>:where([aria-hidden=true]):has(>svg){flex-shrink:0}.b3-button[data-b3-emphasis=quiet]{color:var(--b3-color-text);border-color:var(--b3-color-border);background:0 0}.b3-button:disabled{opacity:.5;cursor:not-allowed}.b3-field{align-content:start;gap:.375rem;min-inline-size:0;display:grid}.b3-input:where(:not([type=checkbox],[type=radio])){border:1px solid var(--b3-color-border-strong);border-radius:var(--b3-radius);background:var(--b3-color-surface);min-block-size:2.75rem;inline-size:100%;min-inline-size:0;color:var(--b3-color-text);padding:.625rem .75rem}.b3-error{color:var(--b3-color-danger);font-size:.875rem}select.b3-input:not([multiple]):not([size]),select.b3-input[size="1"]:not([multiple]){appearance:none;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:right calc(1rem + 5px) center,right 1rem center;background-repeat:no-repeat;background-size:5px 5px;padding-inline-end:2.5rem}select.b3-input:not([multiple]):not([size]):dir(rtl),select.b3-input[size="1"]:not([multiple]):dir(rtl){background-position:1rem,calc(1rem + 5px)}@media (forced-colors:active){select.b3-input:not([multiple]):not([size]),select.b3-input[size="1"]:not([multiple]){appearance:auto;background-image:none}}:where(ul,ol):has(>.b3-row){margin:0;padding-inline-start:0}.b3-row{border-block-end:1px solid var(--b3-color-border);align-items:center;gap:.75rem;padding-block:1rem;display:flex}.b3-row:where(.b3-stack){align-items:stretch;gap:var(--b3-space)}:is(a,button,[role=button]).b3-row{padding-inline:var(--b3-space-4);color:inherit;text-align:start;cursor:pointer;transition:background-color var(--b3-duration);text-decoration:none}button.b3-row{appearance:none;border:0;border-block-end:1px solid var(--b3-color-border);background:0 0;inline-size:100%}@media (hover:hover){:is(a,button,[role=button]).b3-row:hover{background:color-mix(in srgb, var(--b3-color-text) 4%, transparent)}}:is(a,button,[role=button]).b3-row:focus-visible{background:color-mix(in srgb, var(--b3-color-text) 4%, transparent)}:is(a,button,[role=button]).b3-row:active{background:color-mix(in srgb, var(--b3-color-text) 8%, transparent)}.b3-clamp{-webkit-line-clamp:var(--b3-clamp,2);line-clamp:var(--b3-clamp,2);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.b3-count{box-sizing:border-box;background:var(--b3-color-danger);block-size:1.25rem;min-inline-size:1.25rem;color:var(--b3-color-canvas);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:100vmax;flex:none;place-items:center;padding-inline:.3125rem;font-size:.6875rem;font-weight:700;line-height:1;display:inline-grid}.b3-count[data-b3-tone=accent]{background:var(--b3-color-accent);color:var(--b3-color-on-accent)}.b3-nav-link>.b3-count{margin-inline-start:auto}.b3-bottom-link{position:relative}.b3-bottom-link:has(>.b3-count){min-inline-size:max(var(--b3-touch,44px), 2.25rem)}.b3-bottom-link>.b3-count{box-shadow:0 0 0 2px var(--b3-color-surface);position:absolute;inset-block-start:.125rem;inset-inline-end:max(.125rem,50% - 2rem)}:is(a,button,[role=button]).b3-row:is([aria-current]:not([aria-current=false]),[aria-selected=true]){background:color-mix(in srgb, var(--b3-color-accent) 12%, transparent)}@media (forced-colors:active){:is(a,button,[role=button]).b3-row{border-inline-start:3px solid canvas}:is(a,button,[role=button]).b3-row:is([aria-current]:not([aria-current=false]),[aria-selected=true]){border-inline-start-color:highlight}}.b3-badge{overflow-wrap:anywhere;border:1px solid var(--b3-color-border);border-radius:100vmax;align-items:center;inline-size:fit-content;max-inline-size:100%;padding:.125rem .5rem;font-size:.75rem;font-weight:650;display:inline-flex}.b3-progress{block-size:.5rem;inline-size:100%;accent-color:var(--b3-color-accent)}.b3-button{transition:box-shadow var(--b3-duration), border-color var(--b3-duration)}@media (hover:hover){.b3-button:not(:disabled):hover{box-shadow:inset 0 0 0 100vmax #00000012}}.b3-button:not(:disabled):active{box-shadow:inset 0 0 0 100vmax #00000024}.b3-button[data-b3-emphasis=ghost]:not(:disabled):active{color:var(--b3-color-text)}.b3-button[data-b3-emphasis=outline]{color:var(--b3-color-accent);background:0 0;border-color:currentColor}.b3-button[data-b3-emphasis=danger]{background:var(--b3-color-danger);color:var(--b3-color-canvas)}.b3-button[data-b3-size=small]{padding:.5rem .75rem;font-size:.875rem}.b3-button[data-b3-size=large]{min-block-size:3.25rem;padding:.875rem 1.5rem}.b3-button[aria-busy=true]{cursor:progress}.b3-icon{vertical-align:-.2em;flex:none;block-size:1.25em;inline-size:1.25em;display:inline-block}[data-b3-confirm][data-b3-armed]{outline:2px solid var(--b3-color-danger)!important;outline-offset:2px!important}.b3-button[data-b3-armed]{background:var(--b3-color-danger);color:var(--b3-color-canvas);border-color:var(--b3-color-danger)}.b3-input:disabled{opacity:.6;cursor:not-allowed}.b3-input[readonly]{background:var(--b3-color-canvas)}.b3-input::placeholder{color:var(--b3-color-muted);opacity:.8}.b3-input-group{border:1px solid var(--b3-color-border-strong);border-radius:var(--b3-radius);background:var(--b3-color-canvas);flex-wrap:wrap;align-items:stretch;min-inline-size:0;display:flex;overflow:clip}.b3-input-group>.b3-input{border:0;border-radius:0;flex:12ch}.b3-input-group>.b3-button{overflow-wrap:anywhere;flex-wrap:wrap;min-inline-size:0;max-inline-size:100%;margin-inline-start:auto;padding-inline:.75rem}.b3-input-group:focus-within{outline:none;box-shadow:inset 0 0 0 2px}.b3-input-affix{overflow-wrap:anywhere;min-inline-size:0;max-inline-size:100%;color:var(--b3-color-muted);background:var(--b3-color-canvas);align-items:center;padding-inline:.75rem;display:flex}.b3-choice{cursor:pointer;flex-wrap:wrap;align-items:start;gap:.75rem;padding-block:.5rem;display:flex}.b3-choice>:not(input){overflow-wrap:anywhere;flex:12ch;min-inline-size:0}.b3-choice input{--b3-choice-control:1.125rem;inline-size:var(--b3-choice-control);block-size:var(--b3-choice-control);flex:none;margin:0;margin-block-start:max(0px, calc((1lh - var(--b3-choice-control)) / 2))}.b3-choice>.b3-switch{--b3-choice-control:1.625rem}.b3-switch{appearance:none;background:var(--b3-color-muted);border:2px solid var(--b3-color-muted);cursor:pointer;border-radius:2rem;position:relative;block-size:1.625rem!important;inline-size:2.75rem!important}.b3-switch:before{content:"";background:var(--b3-color-surface);border-radius:50%;block-size:1.125rem;inline-size:1.125rem;position:absolute;inset-block-start:.125rem;inset-inline-start:.125rem}.b3-switch:checked{background:var(--b3-color-accent);border-color:var(--b3-color-accent)}.b3-switch:checked:before{background:var(--b3-color-on-accent);inset-inline-start:calc(100% - 1.25rem)}.b3-switch:disabled{opacity:.5;cursor:not-allowed}@media (forced-colors:active){.b3-switch{forced-color-adjust:none;background:canvas;border-color:buttontext}.b3-switch:before{background:buttontext}.b3-switch:checked{background:highlight;border-color:highlight}.b3-switch:checked:before{background:highlighttext}.b3-switch:disabled{opacity:1;background:canvas;border-color:graytext}.b3-switch:disabled:before{background:graytext}}.b3-input[type=number]{appearance:textfield}.b3-input[type=number]::-webkit-inner-spin-button,.b3-input[type=number]::-webkit-outer-spin-button{appearance:none;margin:0}.b3-input::-webkit-datetime-edit,.b3-input::-webkit-datetime-edit-fields-wrapper{padding-block:0}.b3-input:is([type=date],[type=time],[type=datetime-local],[type=month],[type=week]){appearance:none;max-inline-size:100%;display:block}.b3-input::-webkit-date-and-time-value{text-align:start;min-block-size:1lh}.b3-card-header,.b3-card-footer{justify-content:space-between;align-items:center;gap:var(--b3-space);flex-wrap:wrap;display:flex}.b3-card-header{margin-block-end:var(--b3-space-4)}.b3-card-footer{border-block-start:1px solid var(--b3-color-border);margin-block-start:var(--b3-space-4);padding-block-start:var(--b3-space-4)}.b3-stack>:is(.b3-card-header,.b3-card-footer){margin-block:0}.b3-surface[data-b3-elevation=raised]{box-shadow:var(--b3-shadow)}.b3-divider{border:0;border-block-start:1px solid var(--b3-color-border);inline-size:100%;margin-inline:0;margin-block:var(--b3-space)}.b3-stack>.b3-divider{margin-block:0}.b3-alert,.b3-toast{overflow-wrap:anywhere;min-inline-size:0}.b3-alert>*,.b3-toast>*{min-inline-size:0}.b3-alert pre{max-inline-size:100%;overflow-x:auto}.b3-alert{--b3-status-color:var(--b3-color-info);border:1px solid var(--b3-status-color);border-radius:var(--b3-radius-small);color:var(--b3-color-text);background:color-mix(in srgb, var(--b3-status-color) 8%, var(--b3-color-surface));border-inline-start-width:4px;align-items:start;gap:.75rem;padding:1rem;display:flex}.b3-alert[data-b3-tone=success],.b3-badge[data-b3-tone=success]{--b3-status-color:var(--b3-color-success)}.b3-alert[data-b3-tone=warning],.b3-badge[data-b3-tone=warning]{--b3-status-color:var(--b3-color-warning)}.b3-alert[data-b3-tone=danger],.b3-badge[data-b3-tone=danger]{--b3-status-color:var(--b3-color-danger)}.b3-badge[data-b3-tone]{color:var(--b3-status-color,var(--b3-color-info));background:color-mix(in srgb, currentColor 7%, transparent);border-color:currentColor}.b3-toast-region{z-index:100;inline-size:min(24rem,100% - 2rem);max-block-size:calc(100dvh - 2rem - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));overscroll-behavior:contain;pointer-events:none;gap:.75rem;display:grid;position:fixed;inset-block-end:calc(1rem + env(safe-area-inset-bottom,0px));inset-inline-end:1rem;overflow-y:auto}.b3-toast{border:1px solid var(--b3-color-border);border-radius:var(--b3-radius);background:var(--b3-color-surface);color:var(--b3-color-text);box-shadow:var(--b3-shadow-raised);pointer-events:auto;flex-wrap:wrap;align-items:start;gap:1rem;padding:1rem;display:flex}.b3-toast>:not(button,.b3-button){flex:12rem}.b3-toast>:is(button,.b3-button){flex:none;max-inline-size:100%}.b3-spinner{vertical-align:-.125em;border:2px solid;border-inline-end-color:#0000;border-radius:50%;flex:none;block-size:1.125em;inline-size:1.125em;animation:.8s linear infinite b3-spin;display:inline-block}@keyframes b3-spin{to{transform:rotate(360deg)}}.b3-skeleton{background:var(--b3-color-border);border-radius:var(--b3-radius-small);min-block-size:1rem;animation:1.8s ease-in-out infinite b3-pulse}@keyframes b3-pulse{50%{opacity:.45}}:is(button,a).b3-badge{min-block-size:auto;color:var(--b3-color-text);cursor:pointer;background:0 0;gap:.25rem;text-decoration:none;position:relative}:is(button,a).b3-badge:after{content:"";position:absolute;inset:-10px 0}:is(button,a).b3-badge[data-b3-tone]{color:var(--b3-status-color,var(--b3-color-info))}:is(button,a).b3-badge:is([aria-pressed=true],[aria-current]:not([aria-current=false])){color:var(--b3-color-on-accent);background:var(--b3-color-accent);border-color:var(--b3-color-accent)}.b3-avatar{background:var(--b3-color-accent);block-size:2.5rem;inline-size:2.5rem;color:var(--b3-color-on-accent);border-radius:50%;flex:none;place-items:center;font-size:.875rem;font-weight:650;display:inline-grid;overflow:hidden}.b3-avatar>img{object-fit:cover;block-size:100%;inline-size:100%}.b3-avatar[data-b3-unread]{position:relative;overflow:visible}.b3-avatar[data-b3-unread]>img{border-radius:inherit}.b3-avatar[data-b3-unread]:after{content:"";background:var(--b3-color-accent);block-size:.75rem;inline-size:.75rem;box-shadow:0 0 0 2px var(--b3-color-surface);border-radius:50%;position:absolute;inset-block-start:-.0625rem;inset-inline-end:-.0625rem}.b3-avatar-stack{padding-inline-start:.5rem;display:flex}.b3-avatar-stack>.b3-avatar{border:2px solid var(--b3-color-surface);margin-inline-start:-.5rem}.b3-kbd{border:1px solid var(--b3-color-border);background:var(--b3-color-surface);color:var(--b3-color-muted);border-block-end-width:2px;border-radius:.25rem;padding:.15rem .35rem;font:.75rem ui-monospace,monospace}.b3-table-wrap{border:1px solid var(--b3-color-border);border-radius:var(--b3-radius);position:relative;overflow-x:auto}.b3-table{border-collapse:collapse;text-align:start;font-variant-numeric:tabular-nums;inline-size:100%}.b3-table th{color:var(--b3-color-muted);background:var(--b3-color-canvas);font-size:.75rem;font-weight:650}.b3-table :is(th,td){border-block-end:1px solid var(--b3-color-border);text-align:start;vertical-align:middle;padding:.875rem 1rem}.b3-table tbody tr:last-child td{border-block-end:0}.b3-table[data-b3-density=compact] :is(th,td){padding:.5rem .75rem}.b3-table tbody tr[aria-selected=true]{background:color-mix(in srgb, var(--b3-color-accent) 10%, var(--b3-color-surface))}.b3-definition{grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:.75rem 1.5rem;margin:0;display:grid;container:b3-definition/inline-size}.b3-definition dt{overflow-wrap:anywhere;min-inline-size:0;color:var(--b3-color-muted)}.b3-definition dd{overflow-wrap:anywhere;margin:0}@container b3-definition (width<=26rem){.b3-definition>:is(dt,dd){grid-column:1/-1}.b3-definition>dt:not(:first-child){margin-block-start:.75rem}}.b3-stat{grid-template-columns:minmax(0,1fr);gap:.5rem;display:grid}.b3-stat-value{overflow-wrap:anywhere;letter-spacing:-.045em;font-variant-numeric:tabular-nums;font-size:clamp(1.5rem,5vw,3rem);font-weight:650;line-height:1.1}.b3-nav{border-block-end:1px solid var(--b3-color-border);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.75rem min(.75rem,3%);display:flex}.b3-nav[data-b3-orientation=vertical]{border-block-end:0;flex-direction:column;align-items:stretch}.b3-nav-link{overflow-wrap:anywhere;border-radius:var(--b3-radius-small);min-block-size:2.75rem;min-inline-size:0;max-inline-size:100%;color:var(--b3-color-muted);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.625rem min(.875rem,4%);text-decoration:none;display:flex}.b3-nav-link[aria-current=page]{background:color-mix(in srgb, var(--b3-color-accent) 10%, var(--b3-color-surface));color:var(--b3-color-accent);font-weight:650}.b3-nav-link:hover{background:var(--b3-color-surface);color:var(--b3-color-text)}.b3-breadcrumbs{color:var(--b3-color-muted);flex-wrap:wrap;align-items:center;gap:.5rem;margin:0;padding:0;font-size:.875rem;list-style:none;display:flex}.b3-breadcrumbs li+li:before{content:"/";color:var(--b3-color-border);margin-inline-end:.5rem}.b3-tablist{border-block-end:1px solid var(--b3-color-border);gap:.25rem;display:flex;overflow-x:auto}.b3-tab{appearance:none;color:var(--b3-color-muted);font:inherit;white-space:normal;overflow-wrap:anywhere;cursor:pointer;background:0 0;border:0;border-block-end:2px solid #0000;flex-shrink:0;min-block-size:2.75rem;max-inline-size:100%;padding:.75rem min(1rem,4vi)}.b3-tab[aria-selected=true]{color:var(--b3-color-accent);border-block-end-color:currentColor;font-weight:650}.b3-tab:disabled{opacity:.5;cursor:not-allowed}.b3-tabpanel{padding-block:var(--b3-space-4)}.b3-segmented{border-radius:var(--b3-radius);background:color-mix(in srgb, var(--b3-color-text) 7%, var(--b3-color-canvas));border:0;flex-wrap:wrap;gap:.25rem;min-inline-size:0;margin:0;padding:.25rem;display:flex}.b3-segmented>label{border-radius:calc(var(--b3-radius) - .25rem);min-block-size:2.75rem;max-inline-size:100%;color:var(--b3-color-muted);text-align:center;cursor:pointer;flex:1 0 auto;justify-content:center;align-items:center;gap:.375rem;padding-inline:.875rem;font-weight:600;display:inline-flex;position:relative}.b3-segmented>label>input{opacity:0;block-size:100%;inline-size:100%;cursor:inherit;margin:0;position:absolute;inset:0}.b3-segmented>label:has(input:checked){background:var(--b3-color-surface);color:var(--b3-color-text);box-shadow:0 1px 2px #0000001f, 0 0 0 1px var(--b3-color-border)}.b3-segmented>label:has(input:focus-visible){box-shadow:inset 0 0 0 2px}@media (forced-colors:active){.b3-segmented>label{border:2px solid canvas}.b3-segmented>label:has(input:checked){border-color:canvastext}.b3-segmented>label:has(input:focus-visible){outline-offset:1px;outline:2px solid highlight}}.b3-segmented>label:has(input:disabled){opacity:.5;cursor:not-allowed}.b3-filter-labels{overscroll-behavior-x:contain;scrollbar-width:none;gap:18px;display:flex;overflow-x:auto}.b3-filter-labels::-webkit-scrollbar{display:none}.b3-filter-labels>button{block-size:32px;box-shadow:none;color:var(--b3-color-muted);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:0;flex:none;padding:0;font-size:15px;font-weight:500}.b3-filter-labels>button:hover{color:var(--b3-color-text)}.b3-filter-labels>button:is([aria-checked=true],[aria-pressed=true]){color:var(--b3-color-accent);font-weight:700}.b3-filter-labels>button:focus-visible{box-shadow:none;text-decoration:underline 2px var(--b3-color-accent);text-underline-offset:5px;outline:none}@media (forced-colors:active){.b3-filter-labels>button:is([aria-checked=true],[aria-pressed=true]){text-decoration:underline}.b3-filter-labels>button:focus-visible{outline:1px solid highlight}}.b3-accordion{border-block-end:1px solid var(--b3-color-border)}.b3-accordion>summary{cursor:pointer;padding:1rem .25rem;font-weight:650}.b3-accordion>:not(summary){padding:0 .25rem 1rem}.b3-dropdown{display:inline-block;position:relative}.b3-dropdown>summary{list-style:none}.b3-dropdown>summary::-webkit-details-marker{display:none}.b3-dropdown-panel{z-index:20;border:1px solid var(--b3-color-border);border-radius:var(--b3-radius);background:var(--b3-color-surface);max-block-size:70svh;inline-size:max-content;min-inline-size:min(12rem,85vw);max-inline-size:min(22rem,85vw);color:var(--b3-color-text);box-shadow:var(--b3-shadow-raised);padding:.5rem;position:absolute;inset-block-start:calc(100% + .5rem);inset-inline-start:0;overflow-y:auto}.b3-dialog{overscroll-behavior:contain;border:1px solid var(--b3-color-border);border-radius:var(--b3-radius-large);background:var(--b3-color-surface);max-block-size:calc(100svh - 2rem);inline-size:min(32rem,100% - 2rem);color:var(--b3-color-text);box-shadow:var(--b3-shadow-raised);padding:min(1.5rem,5vi);overflow:auto;container:b3-dialog/inline-size}.b3-dialog::backdrop{background:#101b17a6}.b3-dialog[data-b3-placement=end]{border-radius:0;block-size:100svh;max-block-size:100svh;inline-size:min(28rem,100%);max-inline-size:100%;margin:0;margin-inline-start:auto}@media (prefers-reduced-motion:no-preference){.b3-dialog[open]{animation:.28s cubic-bezier(.16,1,.3,1) b3-dialog-enter}.b3-dialog[open][data-b3-placement=end]{animation-name:b3-drawer-enter}.b3-dialog::backdrop,.b3-sheet::backdrop{transition:opacity .16s ease-out}.b3-dialog[data-b3-closing]::backdrop,.b3-sheet[data-b3-closing]::backdrop{opacity:0}@keyframes b3-dialog-enter{0%{opacity:0;transform:translateY(8px)scale(.96)}}@keyframes b3-drawer-enter{0%{opacity:0;translate:var(--b3-drawer-offset,1rem)}}.b3-dialog[dir=rtl][data-b3-placement=end],[dir=rtl] .b3-dialog[data-b3-placement=end]{--b3-drawer-offset:-1rem}}.b3-dialog>form{gap:var(--b3-space);flex-direction:column;margin:0;display:flex}.b3-dialog>form>header:has(>button:last-child){grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:.75rem;display:grid}.b3-dialog>form>header:has(>button:last-child)>:not(:last-child){grid-column:1;min-inline-size:0}.b3-dialog>form>header>button:last-child:not(:first-child){grid-area:1/2}.b3-dialog>form>footer{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.75rem;display:flex}.b3-dialog>form>footer>[data-b3-emphasis=quiet]:first-child:not(:last-child){margin-inline-end:auto}@container b3-dialog (width<=16rem){.b3-dialog>form>header:has(>button:last-child){flex-direction:column;align-items:flex-start;display:flex}}.b3-tree,.b3-tree ul{overflow-wrap:anywhere;border-inline-start:1px solid var(--b3-color-border);padding-inline-start:min(1rem,5%);list-style:none}.b3-tree summary{cursor:pointer;padding-block:.5rem}.b3-prose{overflow-wrap:anywhere;max-inline-size:65ch;line-height:1.75}.b3-prose :is(p,ul,ol,blockquote,pre){margin-block:1rem}.b3-prose :is(h1,h2,h3,h4,h5,h6){margin-block:1.75rem .75rem;line-height:1.25}.b3-prose :is(h5,h6){font-size:1em}.b3-prose>:first-child{margin-block-start:0}.b3-prose :is(img,video,iframe){max-inline-size:100%;display:block}.b3-prose :is(img,video){block-size:auto}.b3-prose iframe{border:0}.b3-prose blockquote{border-inline-start:3px solid var(--b3-color-accent);color:var(--b3-color-muted);margin-inline:0;padding-inline-start:1rem}.b3-prose pre{background:var(--b3-color-surface);border:1px solid var(--b3-color-border);border-radius:var(--b3-radius-small);padding:1rem;overflow-x:auto}.b3-visually-hidden{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}.b3-skip-link{z-index:1000;border-radius:var(--b3-radius-small);background:var(--b3-color-accent);max-inline-size:calc(100% - 1.5rem);color:var(--b3-color-on-accent);padding:.75rem 1rem;font-weight:650;position:fixed;inset-block-start:max(.75rem, env(safe-area-inset-top,0px));inset-inline-start:.75rem}.b3-skip-link:not(:focus){clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;padding:0;overflow:hidden}.b3-hero{grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;gap:clamp(2rem,6vw,6rem);padding-block:clamp(3rem,8vw,7rem);display:grid}.b3-hero[data-b3-align=center]{text-align:center;grid-template-columns:minmax(0,1fr);justify-items:center}.b3-hero-copy{gap:1.5rem;max-inline-size:40rem;display:grid}.b3-feature{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:clamp(1.5rem,5vw,5rem);padding-block:clamp(2rem,6vw,5rem);display:grid}.b3-feature[data-b3-reverse=true]>:first-child{order:2}.b3-feature-icon{border-radius:var(--b3-radius);background:var(--b3-color-accent);block-size:3rem;inline-size:3rem;color:var(--b3-color-on-accent);place-items:center;display:inline-grid}.b3-pricing{border:1px solid var(--b3-color-border);border-radius:var(--b3-radius-large);background:var(--b3-color-surface);color:var(--b3-color-text);flex-direction:column;gap:1.25rem;padding:clamp(1.25rem,3vw,2rem);display:flex}.b3-pricing[data-b3-featured=true]{border:2px solid var(--b3-color-accent);box-shadow:var(--b3-shadow)}.b3-pricing>.b3-button:last-child{margin-block-start:auto}.b3-price{font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:baseline;gap:.375rem;display:flex}.b3-price>strong{letter-spacing:-.05em;font-size:3.25rem;line-height:1.1}.b3-checklist{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.b3-checklist>li{align-items:start;gap:.625rem;display:flex}.b3-checklist>li:before{content:"✓";color:var(--b3-color-accent);font-weight:700}.b3-quote{border-inline-start:3px solid var(--b3-color-accent);margin:0;padding:1.5rem}.b3-quote blockquote{margin:0 0 1rem;font-size:1.25rem;line-height:1.5}.b3-art{isolation:isolate;border-radius:var(--b3-radius-large);background:var(--b3-color-surface);position:relative;overflow:hidden}.b3-art:before{content:"";z-index:-1;pointer-events:none;position:absolute;inset:0}.b3-art[data-b3-art=dots]:before{background-image:radial-gradient(var(--b3-color-border) 1px,transparent 1px);background-size:16px 16px}.b3-art[data-b3-art=glow]:before{background:radial-gradient(ellipse at 20% 20%,color-mix(in srgb,var(--b3-color-accent) 20%,transparent),transparent 65%)}.b3-art[data-b3-art=wash]:before{background:linear-gradient(135deg,color-mix(in srgb,var(--b3-color-accent) 14%,transparent),transparent 70%)}@media (width<=48rem){.b3-hero,.b3-feature{grid-template-columns:minmax(0,1fr)}.b3-feature[data-b3-reverse=true]>:first-child{order:initial}}.b3-reading{grid-template-columns:minmax(0,1fr) minmax(12rem,16rem);grid-template-areas:"content outline";align-items:start;gap:clamp(2rem,5vw,5rem);display:grid}.b3-reading>:not(.b3-toc){grid-area:content;min-inline-size:0}.b3-toc{max-block-size:calc(100svh - var(--b3-outline-top,1rem) - 1rem);border-inline-start:1px solid var(--b3-color-border);grid-area:outline;padding-inline-start:min(1rem,5%);font-size:.875rem;position:sticky;inset-block-start:var(--b3-outline-top,1rem);overflow-y:auto}.b3-toc ol{gap:.25rem;margin:.75rem 0 0;padding:0;list-style:none;display:grid}.b3-toc ol ol{margin:.25rem 0;padding-inline-start:min(1rem,5%)}.b3-toc-link{border-radius:var(--b3-radius-small);color:var(--b3-color-muted);overflow-wrap:anywhere;padding:.625rem min(.75rem,5%);text-decoration:none;display:block}.b3-toc-link:hover{color:var(--b3-color-text);background:var(--b3-color-surface)}.b3-toc-link[aria-current=location]{color:var(--b3-color-accent);background:color-mix(in srgb, var(--b3-color-accent) 10%, var(--b3-color-surface));font-weight:650}@media (width<=48rem){.b3-reading{grid-template-columns:minmax(0,1fr);grid-template-areas:"outline""content";gap:2rem}.b3-toc{max-block-size:none;position:static}}.b3-command{inline-size:min(38rem,100% - 2rem);padding:0}.b3-command[open]:has(>.b3-scroll){grid-template-rows:auto minmax(0,1fr);display:grid}.b3-command>.b3-scroll>.b3-command-list{max-block-size:none;overflow:visible}.b3-command-search{border-block-end:1px solid var(--b3-color-border);flex-wrap:wrap;justify-content:end;align-items:center;gap:.75rem;padding:min(1rem,4vw);display:flex}.b3-command-search>input{flex:12ch;min-inline-size:0}.b3-command-list{overscroll-behavior:contain;max-block-size:50svh;padding:.5rem;overflow-y:auto}.b3-command-group+.b3-command-group{border-block-start:1px solid var(--b3-color-border);margin-block-start:.5rem;padding-block-start:.5rem}.b3-command-group>:first-child:not([role=option]){color:var(--b3-color-muted);padding:.5rem .75rem;font-size:.75rem;display:block}.b3-command-item{border-radius:var(--b3-radius-small);cursor:pointer;justify-content:space-between;align-items:center;gap:min(1rem,2vw);min-block-size:2.75rem;padding:min(.875rem,2svh) min(.75rem,3vw);display:flex}.b3-command .b3-command-item{border-radius:max(0px, calc(var(--b3-radius-large) - .5rem - 1px))}.b3-command-item>:first-child{overflow-wrap:anywhere;min-inline-size:0}.b3-command-item[aria-selected=true]{background:var(--b3-color-accent);color:var(--b3-color-on-accent)}.b3-command-item[aria-selected=true] .b3-muted{color:inherit}.b3-command-item[aria-disabled=true]{opacity:.5;cursor:not-allowed}.b3-command-item:not([aria-disabled=true]):hover{outline:1px solid var(--b3-color-border);outline-offset:-1px}.b3-form-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));align-items:start;gap:1.25rem;display:grid}.b3-form-grid[data-b3-layout=inline]{flex-wrap:wrap;align-items:end;display:flex}.b3-form-grid[data-b3-layout=inline]>.b3-field{flex:12rem;min-inline-size:0}.b3-form-grid[data-b3-layout=inline]>.b3-button{overflow-wrap:anywhere;flex:0 auto;max-inline-size:100%}.b3-fieldset{border:0;min-inline-size:0;margin:0;padding:0}.b3-fieldset>legend{padding:0 0 .75rem;font-weight:650}.b3-help,.b3-error{overflow-wrap:anywhere}.b3-help{color:var(--b3-color-muted);font-size:.875rem}.b3-help[data-b3-tone=success]{color:var(--b3-color-success)}.b3-help[data-b3-tone=warning]{color:var(--b3-color-warning)}.b3-input:where(:not([type=checkbox],[type=radio]))[data-b3-size=small]{padding:.5rem .75rem}.b3-input:where(:not([type=checkbox],[type=radio]))[data-b3-size=large]{min-block-size:3.25rem;padding:.875rem 1rem}.b3-input[data-b3-emphasis=subtle]{background-color:var(--b3-color-canvas);border-color:#0000}.b3-input[data-b3-emphasis=outline]{background-color:#0000;border-width:2px}.b3-input[data-b3-tone=success]{border-color:var(--b3-color-success)}.b3-input[data-b3-tone=warning]{border-color:var(--b3-color-warning)}.b3-input[aria-invalid=true]{border-color:var(--b3-color-danger)}textarea.b3-input{resize:vertical}select.b3-input[multiple]{min-block-size:8rem}.b3-input[type=file]{padding:.375rem}.b3-input::file-selector-button{font:inherit;border-radius:max(0px, calc(var(--b3-radius) - .375rem - 1px));background:var(--b3-color-accent);color:var(--b3-color-on-accent);cursor:pointer;border:0;margin-inline-end:.75rem;padding:.5rem .75rem}.b3-input[data-b3-emphasis=outline]::file-selector-button{border-radius:max(0px, calc(var(--b3-radius) - .375rem - 2px))}.b3-input[type=color]{inline-size:5rem;padding:.25rem}.b3-range{min-block-size:2.75rem;inline-size:100%;accent-color:var(--b3-color-accent);margin:0}.b3-choice-card{border:1px solid var(--b3-color-border);border-radius:var(--b3-radius);background:var(--b3-color-surface);color:var(--b3-color-text);cursor:pointer;flex-wrap:wrap;align-items:start;gap:.75rem;padding:1rem;display:flex}.b3-choice-card>:not(input){overflow-wrap:anywhere;flex:12ch;min-inline-size:0}.b3-choice-card>input{flex:none;block-size:1.125rem;inline-size:1.125rem;margin-block-start:.3rem}.b3-choice-card:has(input:checked){border-color:var(--b3-color-accent);background:color-mix(in srgb, var(--b3-color-accent) 7%, var(--b3-color-surface));box-shadow:inset 0 0 0 1px var(--b3-color-accent)}.b3-choice-card:has(input:focus-visible){outline:none;box-shadow:inset 0 0 0 2px}.b3-choice-card:has(input:disabled){opacity:.5;cursor:not-allowed}.b3-choice-card:has(input[aria-invalid=true]){border-color:var(--b3-color-danger)}.b3-range[aria-invalid=true]{accent-color:var(--b3-color-danger)}.b3-stepper{flex-wrap:wrap;gap:1rem 2rem;margin:0;padding:0;list-style:none;display:flex}.b3-step{color:var(--b3-color-muted);align-items:center;gap:.625rem;font-size:.875rem;display:flex}.b3-step-marker{border:1px solid var(--b3-color-border);font-variant-numeric:tabular-nums;border-radius:50%;flex:none;place-items:center;block-size:2rem;inline-size:2rem;display:grid}.b3-step[aria-current=step]{color:var(--b3-color-text);font-weight:650}.b3-step[aria-current=step] .b3-step-marker{background:var(--b3-color-accent);color:var(--b3-color-on-accent);border-color:var(--b3-color-accent)}.b3-step[data-b3-complete=true] .b3-step-marker{border-color:var(--b3-color-success);color:var(--b3-color-success)}.b3-conversation{gap:1.5rem;min-inline-size:0;margin:0;padding:0;list-style:none;display:grid}.b3-message{grid-template-columns:minmax(0,1fr);justify-self:start;gap:.375rem;min-inline-size:0;max-inline-size:min(85%,38rem);display:grid}.b3-message[data-b3-side=self]{justify-self:end}.b3-message-body{border:1px solid var(--b3-color-border);border-radius:var(--b3-radius);background:var(--b3-color-surface);color:var(--b3-color-text);white-space:pre-wrap;overflow-wrap:anywhere;padding:.75rem 1rem}.b3-message[data-b3-side=self]>.b3-message-body{background:var(--b3-color-accent);color:var(--b3-color-on-accent);border-color:#0000}.b3-message-meta{color:var(--b3-color-muted);flex-wrap:wrap;gap:.35rem .75rem;font-size:.8125rem;display:flex}.b3-message[data-b3-side=self]>.b3-message-meta{justify-content:end}.b3-conversation{align-content:start}.b3-message-body:has(>:is(div,p,ul,ol,table,pre,blockquote,b3-markdown-stream)){white-space:normal}.b3-composer{align-items:end;gap:var(--b3-space-2);padding:var(--b3-space-3);border-block-start:1px solid var(--b3-color-border);background:var(--b3-color-canvas);flex-wrap:wrap;display:flex}.b3-composer>.b3-input,.b3-composer>.b3-button{border-radius:var(--b3-radius);min-block-size:var(--b3-d-control,2.75rem)}.b3-composer>.b3-input{resize:none;min-inline-size:0;max-inline-size:100%;padding-block:calc((var(--b3-d-control,2.75rem) - 1.5em - 2px) / 2);flex:12ch;line-height:1.5}.b3-composer>.b3-button{block-size:var(--b3-d-control,2.75rem);min-inline-size:var(--b3-d-control,2.75rem);flex-shrink:0;margin-inline-start:auto}.b3-message-body :where(p,ul,ol,pre,table,blockquote,h1,h2,h3,h4,h5,h6,div,figure):first-child{margin-block-start:0}.b3-message-body :where(p,ul,ol,pre,table,blockquote,h1,h2,h3,h4,h5,h6,div,figure):last-child{margin-block-end:0}.b3-conversation[data-b3-layout=assistant]{gap:.75em}.b3-conversation[data-b3-layout=assistant]>.b3-message{gap:.45em}.b3-conversation[data-b3-layout=assistant]>.b3-message:not([data-b3-side=self]){justify-self:stretch;max-inline-size:none}.b3-conversation[data-b3-layout=assistant]>.b3-message[data-b3-side=self]{max-inline-size:88%}.b3-conversation[data-b3-layout=assistant]>.b3-message:not([data-b3-side=self])>.b3-message-body{background:0 0;border:0;padding:0}.b3-conversation[data-b3-layout=assistant]>.b3-message[data-b3-side=self]>.b3-message-body,.b3-root[data-b3-theme=dark] .b3-conversation[data-b3-layout=assistant]>.b3-message[data-b3-side=self]>.b3-message-body{background:var(--b3-message-self-bg,color-mix(in srgb, var(--b3-color-accent) 12%, var(--b3-color-surface)));color:var(--b3-message-self-text,var(--b3-color-text));unicode-bidi:plaintext;border:0;border-radius:1.075em 1.075em .3em;padding:.625em .9375em}.b3-message-body:has(>:is(div,p,ul,ol,table,pre,blockquote,h1,h2,h3,h4,h5,h6)){overflow-wrap:anywhere;line-height:1.5}.b3-message-body :where(p,ul,ol,pre,blockquote,table,.b3-table-wrap,.b3-alert){margin-block:0 .6em}.b3-message-body :where(h1,h2,h3,h4,h5,h6){margin-block:.9em .3em;font-size:1.1em;line-height:1.3}.b3-message-body :where(h1){font-size:1.2em}.b3-message-body :where(ul,ol){padding-inline-start:1.5em}.b3-message-body :where(a){color:var(--b3-color-accent);text-underline-offset:2px;text-decoration:underline}.b3-message-body :where(:not(pre)>code){background:color-mix(in srgb, var(--b3-color-text) 8%, transparent);border-radius:.3em;padding:.05em .3em;font-size:.92em}.b3-message-body :where(code,pre){font-family:var(--b3-font-mono,ui-monospace, monospace);text-align:start;direction:ltr;unicode-bidi:isolate}.b3-message-body :where(pre){background:color-mix(in srgb, var(--b3-color-text) 6%, transparent);border-radius:.6em;padding:.75em .9em;font-size:.92em;overflow-x:auto}.b3-message-body :where(blockquote){border-inline-start:3px solid var(--b3-color-border);color:var(--b3-color-muted);margin-inline:0;padding-inline-start:.75em}.b3-message-disclosure{font-size:.92em}.b3-message-disclosure>summary{max-inline-size:100%;color:var(--b3-color-muted);border-radius:.5em;align-items:center;gap:.5em;padding:.25em .5em;list-style:none;display:inline-flex;overflow:hidden}.b3-message-disclosure>summary::-webkit-details-marker{display:none}.b3-message-disclosure>summary:before{content:"›";transition:transform var(--b3-duration,.15s)}.b3-message-disclosure[open]>summary:before{transform:rotate(90deg)}@media (hover:hover){.b3-message-disclosure>summary:hover{background:color-mix(in srgb, var(--b3-color-text) 6%, transparent)}}.b3-message-disclosure>:not(summary){max-block-size:18em;color:var(--b3-color-muted);white-space:pre-wrap;padding:.35em .65em .35em 1.5em;font-style:italic;overflow-y:auto}.b3-composer[data-b3-layout=stacked]{border:1px solid var(--b3-color-border);background:var(--b3-color-surface);border-radius:.9375em;flex-flow:column;align-items:stretch;gap:.45em;padding:.625em}.b3-composer[data-b3-layout=stacked]:focus-within{border-color:var(--b3-color-accent)}.b3-composer[data-b3-layout=stacked]>textarea{max-block-size:15.4em;inline-size:100%;color:inherit;font:inherit;resize:none;background:0 0;border:0;padding:.15em;line-height:1.45;display:block}.b3-composer[data-b3-layout=stacked]>textarea:is(:focus,:focus-visible){box-shadow:none;outline:none}.b3-composer-bar{align-items:center;gap:.45em;min-inline-size:0;display:flex}.b3-composer-bar>.b3-button:last-child:not([data-b3-icon]){border-radius:.86em;flex:none;block-size:auto;min-block-size:2.46em;margin-inline-start:auto;padding:0 1.23em;font-size:.875em}.b3-mobile-app{--b3-touch:44px;min-block-size:100svh;max-inline-size:var(--b3-app-width,70rem);margin-inline:auto;padding-block-end:calc(5.5rem + env(safe-area-inset-bottom,0px))}.b3-mobile-app[data-b3-platform=android]{--b3-touch:48px}.b3-mobile-app :where(button,.b3-button,select,input:not([type=checkbox],[type=radio])){min-block-size:var(--b3-touch)}.b3-app-bar{padding:max(.75rem, env(safe-area-inset-top,0px)) 1.25rem .75rem;align-items:center;gap:.75rem;display:flex}.b3-app-bar>:last-child:not(:first-child){margin-inline-start:auto}.b3-bottom-nav{z-index:10;max-inline-size:var(--b3-app-width,70rem);padding:.5rem clamp(.5rem, 2vw, 1rem) max(.5rem, env(safe-area-inset-bottom,0px));background:var(--b3-color-surface);color:var(--b3-color-text);border-block-start:1px solid var(--b3-color-border);flex-wrap:wrap;justify-content:space-around;gap:.125rem;margin-inline:auto;display:flex;position:fixed;inset-block-end:0;inset-inline:0}.b3-bottom-link{appearance:none;cursor:pointer;overflow-wrap:anywhere;text-align:center;flex:1 1 max-content;min-block-size:var(--b3-touch,44px);min-inline-size:var(--b3-touch,44px);max-inline-size:100%;color:var(--b3-color-muted);background:0 0;border:0;border-radius:1rem;flex-direction:column;justify-content:center;align-items:center;gap:.15rem;padding:.25rem clamp(.125rem,1vw,.5rem);font-size:.75rem;text-decoration:none;display:flex}.b3-bottom-link:disabled{opacity:.5;cursor:not-allowed}.b3-bottom-link:has(svg){justify-content:flex-start}.b3-bottom-link[aria-current=page]{color:var(--b3-color-accent);font-weight:700}[data-b3-platform=android] .b3-bottom-link[aria-current=page]{background:var(--b3-color-canvas)}.b3-mobile-list{border:1px solid var(--b3-color-border);background:var(--b3-color-surface);border-radius:1rem;margin:0;padding:0;list-style:none;overflow:hidden}.b3-mobile-list>li+li{border-block-start:1px solid var(--b3-color-border)}.b3-mobile-row{min-block-size:var(--b3-touch,44px);color:var(--b3-color-text);align-items:center;gap:1rem;padding:.875rem 1rem;text-decoration:none;display:flex}.b3-mobile-row>:last-child:not(:first-child){margin-inline-start:auto}.b3-sheet{inline-size:min(100%, var(--b3-overlay-width,32rem));max-inline-size:none;max-block-size:min(85dvh, calc(100dvh - env(safe-area-inset-top,0px) - 1rem));overscroll-behavior:contain;border:1px solid var(--b3-color-border);padding:1.5rem min(1.5rem, 5vi) max(1.5rem, env(safe-area-inset-bottom,0px));background:var(--b3-color-surface);color:var(--b3-color-text);border-radius:1.5rem 1.5rem 0 0;margin:0 auto;inset:auto 0 0;overflow-y:auto}.b3-sheet::backdrop{background:#0007}.b3-sheet [data-b3-initial-focus]:focus{box-shadow:none;outline:none}.b3-sheet-handle{min-block-size:44px;inline-size:5rem;color:var(--b3-color-muted);touch-action:none;cursor:grab;background:0 0;border:0;border-radius:1rem;flex:none;align-self:center;place-items:center;margin-block:-1rem -.5rem;padding:0;display:grid}.b3-sheet-handle:before{content:"";background:currentColor;border-radius:1rem;block-size:.25rem;inline-size:2.25rem}.b3-sheet[data-b3-dragging]{animation:none}.b3-sheet[data-b3-dragging] .b3-sheet-handle{cursor:grabbing}[data-b3-platform=android] .b3-mobile-list{border-radius:1.5rem}@media (prefers-reduced-motion:no-preference){.b3-sheet[open]{animation:.32s cubic-bezier(.16,1,.3,1) b3-sheet-enter}@keyframes b3-sheet-enter{0%{opacity:0;transform:translateY(3rem)}to{opacity:1;transform:translateY(0)}}}.b3-root:has(dialog:modal){overflow:hidden}.b3-bottom-link[aria-current=page]{background:color-mix(in srgb, var(--b3-color-accent) 12%, transparent)}.b3-bottom-link :where(svg:not([width])){flex:none;block-size:1.375rem;inline-size:1.375rem}.b3-bottom-link>:where(span,strong):not(.b3-count){white-space:normal;overflow-wrap:anywhere;max-inline-size:100%;overflow:visible}:has(>.b3-bottom-link:nth-of-type(5))>.b3-bottom-link{padding-inline:.125rem;font-size:.6875rem}.b3-app-frame{inline-size:100%;block-size:var(--b3-frame-height,100dvh);min-block-size:0;max-inline-size:var(--b3-app-width,70rem);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);grid-template-rows:auto minmax(0,1fr) auto;margin-inline:auto;display:grid;overflow:clip}.b3-app-frame>header{grid-row:1;min-inline-size:0}.b3-app-frame>main{overscroll-behavior:contain;grid-area:2/1;min-block-size:0;min-inline-size:0;overflow:hidden auto}.b3-app-frame>:is(nav,footer){grid-row:3;min-inline-size:0;position:relative}.b3-app-frame>.b3-toast-region{overscroll-behavior:contain;grid-area:2/1;place-self:end;min-block-size:0;max-block-size:calc(100% - 2rem);margin:1rem;position:relative;inset:auto;overflow-y:auto}.b3-app-frame>.b3-app-bar{padding-block-start:.75rem}.b3-app-frame:has(>.b3-bottom-nav,>footer .b3-bottom-nav){padding-block-end:0}.b3-app-frame .b3-bottom-nav{inline-size:100%;max-inline-size:none;padding-block-end:max(.5rem, env(safe-area-inset-bottom,0px));position:static}:where(.b3-root[data-b3-density]) .b3-button{min-block-size:var(--b3-d-control,2.75rem);padding:var(--b3-d-pad-block,.625rem) var(--b3-d-pad-inline,1rem);font-size:var(--b3-d-label,inherit)}:where(.b3-root[data-b3-density]) .b3-button[data-b3-size=small]{min-block-size:var(--b3-d-control-small,auto);padding:calc(var(--b3-d-pad-block,.5rem) - .125rem) calc(var(--b3-d-pad-inline,.75rem) - .25rem)}:where(.b3-root[data-b3-density]) .b3-input:where(:not([type=checkbox],[type=radio])){min-block-size:var(--b3-d-control,2.75rem);padding:calc((var(--b3-d-control,2.75rem) - 1.5em - 2px) / 2) .75rem;line-height:1.5}:where(.b3-root[data-b3-density]) .b3-nav-link{min-block-size:var(--b3-d-control,2.75rem);padding:var(--b3-d-pad-block,.625rem) min(var(--b3-d-pad-inline,.875rem), 4%);font-size:var(--b3-d-label,inherit)}:where(.b3-root[data-b3-density]) .b3-heading{font-size:var(--b3-d-heading,1.375rem)}:where(.b3-root[data-b3-density]) .b3-avatar{block-size:var(--b3-d-avatar,2.5rem);inline-size:var(--b3-d-avatar,2.5rem)}:where(.b3-root[data-b3-density]) .b3-conversation{gap:var(--b3-d-gap,1.5rem)}:where(.b3-root[data-b3-density]) .b3-message-body{padding:var(--b3-d-message-pad,.75rem 1rem)}:where(.b3-root[data-b3-density]) .b3-message-meta{font-size:var(--b3-d-meta,.8125rem)}.b3-button[data-b3-emphasis=ghost]{color:var(--b3-color-muted);background:0 0;border-color:#0000}.b3-button[data-b3-emphasis=ghost]:not(:disabled):hover{color:var(--b3-color-text);background:color-mix(in srgb, var(--b3-color-text) 10%, transparent);box-shadow:none}.b3-button[data-b3-emphasis=ghost][aria-pressed=true]{color:var(--b3-color-accent)}.b3-button[data-b3-icon]{min-inline-size:var(--b3-d-control,2.75rem);padding-inline:0}.b3-button[data-b3-icon] :where(svg:not([width])){block-size:1.375em;inline-size:1.375em}.b3-button[data-b3-icon][data-b3-size=small]{min-inline-size:var(--b3-d-control-small,2.75rem);min-block-size:var(--b3-d-control-small,2.75rem);block-size:var(--b3-d-control-small,2.75rem);padding:0}.b3-button:disabled{opacity:1;background:color-mix(in srgb, var(--b3-color-muted) 14%, var(--b3-color-surface));color:var(--b3-color-muted);border-color:#0000}.b3-button[data-b3-emphasis=ghost]:disabled{background:0 0}.b3-truncate{white-space:nowrap;text-overflow:ellipsis;min-inline-size:0;overflow:hidden}.b3-strong{font-size:inherit;font-weight:650}.b3-caption{color:var(--b3-color-muted);font-size:.8125rem;line-height:1.4}.b3-heading[data-b3-size=small]{font-size:1.0625rem;line-height:1.3}:is(a,button).b3-caption{color:var(--b3-color-accent);cursor:pointer;text-underline-offset:.15em;background:0 0;border:0;padding:0}:is(a,button).b3-caption:is(:hover,:focus-visible){text-decoration:underline}:where(.b3-root[data-b3-density]) .b3-caption{font-size:var(--b3-d-meta,.8125rem)}.b3-badge{gap:.25rem}:where(.b3-root[data-b3-density]) .b3-surface{padding:var(--b3-d-surface-pad,clamp(1rem, 3vw, 2rem))}.b3-input-group,.b3-input-group>.b3-input-affix,.b3-input-group>.b3-input{background:var(--b3-color-surface)}.b3-root[data-b3-theme=dark] .b3-message[data-b3-side=self]>.b3-message-body{background:color-mix(in srgb, var(--b3-color-accent) 22%, var(--b3-color-surface));color:var(--b3-color-text)}.b3-empty{justify-items:center;gap:var(--b3-space-2);padding:var(--b3-space-12) var(--b3-space-4);text-align:center;color:var(--b3-color-muted);display:grid}.b3-empty>svg{color:var(--b3-color-muted)}}@property --b3-reel-fade{syntax:"<length>";inherits:false;initial-value:2.5rem}
@@ -55,6 +55,16 @@ export declare class B3ToastRegion extends B3Element {
55
55
  export declare class B3Toc extends B3Element {
56
56
  protected mount(host: HTMLElement, signal: AbortSignal): void;
57
57
  }
58
+ /**
59
+ * <b3-composer>: wraps a message composer (a .b3-composer form or box with a textarea). The field grows with its text up
60
+ * to its max-block-size; Enter sends (Shift/Alt+Enter = newline) via a cancelable `b3:send`, then the form's submit.
61
+ */
62
+ export declare class B3Composer extends B3Element {
63
+ #private;
64
+ protected mount(host: HTMLElement, signal: AbortSignal): void;
65
+ /** Re-fit the field after its value was set from code (input events only follow typing). */
66
+ grow(): void;
67
+ }
58
68
  declare global {
59
69
  interface HTMLElementTagNameMap {
60
70
  'b3-tabs': B3Tabs;
@@ -65,6 +75,7 @@ declare global {
65
75
  'b3-command': B3Command;
66
76
  'b3-toast-region': B3ToastRegion;
67
77
  'b3-toc': B3Toc;
78
+ 'b3-composer': B3Composer;
68
79
  }
69
80
  interface GlobalEventHandlersEventMap {
70
81
  'b3-reel-change': CustomEvent<{
@@ -75,5 +86,9 @@ declare global {
75
86
  value: string | undefined;
76
87
  item: HTMLElement;
77
88
  }>;
89
+ 'b3:send': CustomEvent<{
90
+ metaKey: boolean;
91
+ ctrlKey: boolean;
92
+ }>;
78
93
  }
79
94
  }
@@ -1 +1 @@
1
- var nt=typeof HTMLElement==="function"?HTMLElement:class{};function x(t,s){if(typeof customElements>"u"||customElements.get?.(t))return;try{customElements.define(t,s)}catch(b){console.warn(`bare-v3: ${t} was not registered`,b)}}class w extends nt{#t=null;#n=null;#e=null;target(){return this}connectedCallback(){let t=this.ownerDocument;if(t.readyState==="loading"){t.addEventListener("DOMContentLoaded",()=>{if(this.isConnected)this.#r()},{once:!0});return}this.#r()}disconnectedCallback(){this.#o(),this.#e?.disconnect(),this.#e=null}#r(){if(this.#t)return;let t=this.target();if(t!==this&&!this.#e)this.#e=new MutationObserver(()=>{if(this.target()!==this.#n)this.#o(),this.#r()}),this.#e.observe(this,{childList:!0});if(!t)return;this.#t=new AbortController,this.#n=t,this.mount(t,this.#t.signal)}#o(){this.#t?.abort(),this.#t=null,this.#n=null}}function k(t,s,b={},i=[]){let l=()=>{for(let u of i)if(!t.classList.contains(u))t.classList.add(u);for(let[u,f]of Object.entries(b))if(!t.hasAttribute(u))t.setAttribute(u,f)};l();let r=new MutationObserver(l);r.observe(t,{attributes:!0,attributeFilter:["class",...Object.keys(b)]}),s.addEventListener("abort",()=>r.disconnect(),{once:!0})}function P(t,s){let b=t.ownerDocument,i=(p)=>p.closest(t.localName)===t,l=(p)=>[...p.querySelectorAll('[role="tab"]')].filter((e)=>e.closest('[role="tablist"]')===p),r=new WeakMap,u=(p,e,n)=>{if(p.getAttribute(e)!==n)p.setAttribute(e,n)},f=()=>[...t.querySelectorAll('[role="tablist"]')].filter(i);function a(p,e){r.set(p,e);for(let n of l(p))u(n,"aria-selected",String(n===e)),u(n,"tabindex",n===e?"0":"-1")}function o(){let p=new Map;for(let e of f()){let n=r.get(e);if(!n)continue;for(let d of l(e)){let E=d.getAttribute("aria-controls"),g=E?b.getElementById(E):null;if(g)p.set(g,d===n||!!p.get(g))}}for(let[e,n]of p)if(e.hidden===n)e.hidden=!n}function c(p,e=!1){let n=p.closest('[role="tablist"]');if(!n||p.disabled)return;if(a(n,p),o(),e)p.focus({preventScroll:!0}),p.scrollIntoView({block:"nearest",inline:"nearest",behavior:"instant"})}function h(){for(let p of f()){let e=l(p).filter((g)=>!g.disabled),n=r.get(p),E=e.filter((g)=>g.getAttribute("aria-selected")==="true").find((g)=>g!==n)??(n&&e.includes(n)?n:e[0]);if(E)a(p,E)}o()}h();let m=new b.defaultView.MutationObserver(h);m.observe(t,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["aria-selected","tabindex","hidden"]}),s.addEventListener("abort",()=>m.disconnect(),{once:!0}),t.addEventListener("click",(p)=>{let e=p.target.closest?.('[role="tab"]'),n=e?.closest('[role="tablist"]');if(e&&n&&i(n)&&!e.disabled)c(e)},{signal:s}),t.addEventListener("keydown",(p)=>{let e=p.target.closest?.('[role="tab"]'),n=e?.closest('[role="tablist"]');if(!e||!n||!i(n))return;let d=l(n).filter((v)=>!v.disabled),E=d.indexOf(e),g=n.getAttribute("aria-orientation")==="vertical",y=b.defaultView.getComputedStyle(n).direction==="rtl",A=g?"ArrowDown":y?"ArrowLeft":"ArrowRight",L=g?"ArrowUp":y?"ArrowRight":"ArrowLeft",M;if(p.key===A)M=d[(E+1)%d.length];if(p.key===L)M=d[(E-1+d.length)%d.length];if(p.key==="Home")M=d[0];if(p.key==="End")M=d.at(-1);if(M)p.preventDefault(),c(M,!0)},{signal:s})}function N(t,s){let b=t.ownerDocument,i=b.defaultView,l=()=>i.getComputedStyle(t).direction==="rtl",r=()=>[...t.children].filter((n)=>n.getClientRects().length>0),u=(n)=>{let d=t.getBoundingClientRect(),E=n.getBoundingClientRect();return l()?d.right-E.right:E.left-d.left},f=()=>{let n=-1,d=1/0;return r().forEach((E,g)=>{let y=Math.abs(u(E));if(y<d-1)d=y,n=g}),n},a=(n)=>Math.max(0,Math.min(r().length-1,Math.trunc(n)||0)),o=()=>t.id?[...b.querySelectorAll("[data-b3-reel-to]")].filter((n)=>n.getAttribute("aria-controls")===t.id):[],c=(n=!0)=>{let d=f(),E=t.dataset.b3ReelIndex;if(d<0)delete t.dataset.b3ReelIndex;else if(E!==String(d))t.dataset.b3ReelIndex=String(d);for(let g of o()){let y=g.dataset.b3ReelTo;if(String(d)===y){if(g.getAttribute("aria-current")!=="true")g.setAttribute("aria-current","true")}else if(Number.isInteger(Number(y)))g.removeAttribute("aria-current")}if(n&&E!==void 0&&E!==String(d))t.dispatchEvent(new CustomEvent("b3-reel-change",{bubbles:!0,detail:{index:d,count:r().length}}))},h=(n,d="smooth")=>{let E=r()[a(n)];if(!E)return;let g=u(E);t.scrollBy({left:l()?-g:g,behavior:d})},m=new i.ResizeObserver(()=>c(!1));m.observe(t);let p=new i.MutationObserver(()=>c(!1));p.observe(t,{attributes:!0,attributeFilter:["data-b3-reel-index"]}),s.addEventListener("abort",()=>{m.disconnect(),p.disconnect()},{once:!0});let e=0;return t.addEventListener("scroll",()=>{i.cancelAnimationFrame(e),e=i.requestAnimationFrame(()=>c())},{signal:s}),b.addEventListener("click",(n)=>{let d=n.target.closest?.("[data-b3-reel-to]");if(!d||!t.id||d.getAttribute("aria-controls")!==t.id)return;let E=d.dataset.b3ReelTo,g=f();h(E==="next"?g+1:E==="previous"?g-1:Number(E))},{signal:s}),t.addEventListener("keydown",(n)=>{if(n.target!==t)return;let d=f(),E=l()?"ArrowLeft":"ArrowRight",g=l()?"ArrowRight":"ArrowLeft",y;if(n.key===E)y=d+1;if(n.key===g)y=d-1;if(n.key==="Home")y=0;if(n.key==="End")y=r().length-1;if(y===void 0)return;n.preventDefault(),h(y)},{signal:s}),c(!1),{get index(){return f()},get count(){return r().length},to:h}}var rt=["transform","inset-block-start","inset-block-end","max-block-size","max-inline-size","min-inline-size"];function F(t,s){let b=t.ownerDocument,i=b.defaultView,l=null,r=()=>t.querySelector(".b3-dropdown-panel");function u(a){if(!l)return;for(let[o,c,h]of l)if(c)a.style.setProperty(o,c,h);else a.style.removeProperty(o)}s.addEventListener("abort",()=>{let a=r();if(a)u(a);l=null},{once:!0});function f(){let a=r();if(!a)return;if(u(a),!t.open){l=null;return}l??=rt.map((L)=>[L,a.style.getPropertyValue(L),a.style.getPropertyPriority(L)]);let o={left:0,right:i.innerWidth,top:0,bottom:i.innerHeight};for(let L=t.parentElement;L;L=L.parentElement){let M=i.getComputedStyle(L),v=L.getBoundingClientRect(),S=L.offsetWidth?v.width/L.offsetWidth:1,R=L.offsetHeight?v.height/L.offsetHeight:1,O=v.left+L.clientLeft*S,q=v.top+L.clientTop*R;if(/^(auto|scroll|hidden|clip)$/.test(M.overflowX))o.left=Math.max(o.left,O),o.right=Math.min(o.right,O+L.clientWidth*S);if(/^(auto|scroll|hidden|clip)$/.test(M.overflowY))o.top=Math.max(o.top,q),o.bottom=Math.min(o.bottom,q+L.clientHeight*R)}let c=t.getBoundingClientRect();if(c.bottom<=o.top||c.top>=o.bottom||c.right<=o.left||c.left>=o.right){t.open=!1;return}let h=Math.max(0,o.right-o.left-16),m=a.getBoundingClientRect(),p=a.offsetWidth?m.width/a.offsetWidth:1,e=a.offsetHeight?m.height/a.offsetHeight:1;if(!(p>0&&e>0))return;if(m.width>h)a.style.minInlineSize="0",a.style.maxInlineSize=`${h/p}px`;let n=a.getBoundingClientRect(),d=n.left<o.left+8?o.left+8-n.left:n.right>o.right-8?o.right-8-n.right:0;a.style.transform=`translateX(${d/p}px)`;let E=Math.max(0,n.top-c.bottom),g=Math.max(0,o.bottom-c.bottom-E-8),y=Math.max(0,c.top-o.top-E-8),A=n.height>g&&y>g;if(a.style.maxBlockSize=`${Math.min(n.height,A?y:g)/e}px`,A)a.style.insetBlockStart="auto",a.style.insetBlockEnd="calc(100% + .5rem)"}t.addEventListener("toggle",f,{signal:s}),i.addEventListener("resize",()=>{if(t.open)f()},{signal:s}),i.addEventListener("scroll",(a)=>{if(!t.open||a.target?.nodeType&&r()?.contains(a.target))return;f()},{signal:s,capture:!0,passive:!0}),t.addEventListener("keydown",(a)=>{if(a.key!=="Escape"||a.target.closest?.("details[open]")!==t)return;t.open=!1,t.querySelector("summary")?.focus()},{signal:s}),b.addEventListener("click",(a)=>{if(t.open&&!t.contains(a.target))t.open=!1},{signal:s})}var T=new WeakMap;var ot={enter:{keyframes:[{opacity:0,transform:"translateY(12px) scale(.985)"},{opacity:1,transform:"none"}],duration:320},exit:{keyframes:[{opacity:1,transform:"none"},{opacity:0,transform:"translateY(-6px) scale(.98)"}],duration:180,easing:"cubic-bezier(.4,0,1,1)"},update:{keyframes:[{opacity:0.35},{opacity:1}],duration:180},confirm:{keyframes:[{transform:"scale(.9)"},{transform:"scale(1.08)",offset:0.5},{transform:"scale(.985)",offset:0.8},{transform:"scale(1)"}],duration:380},reveal:{keyframes:[{opacity:0,clipPath:"inset(0 0 100%)",transform:"translateY(8px)"},{opacity:1,clipPath:"inset(0)",transform:"none"}],duration:440}},H=(t)=>!!(t.ownerDocument?.defaultView?.matchMedia("(prefers-reduced-motion: reduce)").matches||t.closest('[data-b3-motion="reduce"]'));function D(t,s,b){if(T.get(t)?.cancel(),!t.isConnected||!t.animate||H(t))return null;let i=t.animate(s,{easing:"cubic-bezier(.16,1,.3,1)",fill:"backwards",...b});T.set(t,i);let l=t.ownerDocument.defaultView.matchMedia("(prefers-reduced-motion: reduce)"),r=()=>{if(l.matches)i.cancel()};l.addEventListener("change",r);let u=()=>{if(l.removeEventListener("change",r),T.get(t)===i)T.delete(t)};return i.addEventListener("finish",u,{once:!0}),i.addEventListener("cancel",u,{once:!0}),i}function I(t,s="update",b={}){let i=ot[s];if(!i)throw TypeError(`Unknown motion intent: ${s}`);let l=i.keyframes,r=T.get(t);if((s==="enter"||s==="exit")&&r&&(r.playState==="running"||r.playState==="paused")){let u=t.ownerDocument.defaultView.getComputedStyle(t);l=[{...i.keyframes[0],opacity:u.opacity,transform:u.transform},...i.keyframes.slice(1)]}return D(t,l,{duration:i.duration,easing:i.easing||"cubic-bezier(.16,1,.3,1)",delay:Math.min(200,Math.max(0,b.delay||0))})}function it(t,s="enter"){return Array.from(t,(b,i)=>I(b,s,{delay:Math.min(i*45,180)})).filter((b)=>!!b)}function st(t,s){let b=()=>{let r=new Map;for(let u of t.querySelectorAll("[data-b3-layout]")){let f=u.dataset.b3Layout;if(!f||r.has(f))throw Error("Layout motion requires unique, non-empty data-b3-layout keys");r.set(f,{element:u,rect:u.getBoundingClientRect()})}return r},i=b();for(let{element:r}of i.values())T.get(r)?.cancel();s();let l=[];for(let[r,{element:u,rect:f}]of b()){let a=i.get(r);if(!a||a.element!==u){let n=I(u,"enter");if(n)l.push(n);continue}let o=a.rect;if(!f.width||!f.height||!o.width||!o.height)continue;let c=o.x-f.x,h=o.y-f.y,m=o.width/f.width,p=o.height/f.height;if(Math.abs(c)+Math.abs(h)+Math.abs(m-1)+Math.abs(p-1)<0.01)continue;let e=D(u,[{transformOrigin:"top left",transform:`translate(${c}px,${h}px) scale(${m},${p})`},{transformOrigin:"top left",transform:"none"}],{duration:420});if(e)l.push(e)}return l}function B(t,{x:s=0,y:b=0}={}){if(!Number.isFinite(s)||!Number.isFinite(b))throw TypeError("Settle displacement must be finite");let i=Array.from({length:41},(l,r)=>{let u=r/40,f=r===40?0:Math.exp(-7*u)*(Math.cos(11*u)+0.6*Math.sin(11*u));return{offset:u,transform:`translate(${s*f}px,${b*f}px)`}});return D(t,i,{duration:460,easing:"linear"})}function V(t,{signal:s,backdrop:b}){let i=t.ownerDocument,l=i.defaultView,r={signal:s},u=null,f=null,a=null,o=!1,c=(e)=>{let n=t.getBoundingClientRect();return e.clientX<n.left||e.clientX>n.right||e.clientY<n.top||e.clientY>n.bottom},h=()=>{f=null,delete t.dataset.b3Closing},m=()=>{if(!t.open||f)return!1;if(!t.dispatchEvent(new Event("cancel",{cancelable:!0})))return!1;if(H(t)||!t.animate)return t.close(),!0;let e=l.getComputedStyle(t),n=t.matches(".b3-sheet")?"translateY(100%)":t.dataset.b3Placement==="end"?`translateX(${e.direction==="rtl"?"-":""}100%)`:"scale(.985)",d=t.animate([{transform:e.transform,opacity:1},{transform:n,opacity:0}],{duration:160,easing:"cubic-bezier(.4, 0, 1, 1)"});return f=d,t.dataset.b3Closing="",d.finished.then(()=>{if(t.open)t.close()},()=>{}).finally(()=>{if(f===d)h()}),!0},p=(e=null)=>{if(u=e,!t.open)t.showModal()};return t.addEventListener("cancel",(e)=>{if(!e.cancelable||e.defaultPrevented||!e.isTrusted||e.target!==t)return;e.preventDefault(),e.stopImmediatePropagation(),m()},{...r,capture:!0}),s.addEventListener("abort",()=>{f?.cancel(),h()},{once:!0}),t.addEventListener("pointerdown",(e)=>{o=!1,a=e.isPrimary&&e.button===0&&e.target===t&&b()&&t.matches(":modal")&&c(e)?e.pointerId:null},r),t.addEventListener("pointerup",(e)=>{let n=a;if(a=null,n!==null&&n===e.pointerId&&e.target===t&&c(e))o=!0},r),t.addEventListener("pointercancel",()=>{a=null,o=!1},r),t.addEventListener("click",(e)=>{let n=o;if(o=!1,!n||e.target!==t||!c(e))return;e.preventDefault(),e.stopImmediatePropagation(),m()},{...r,capture:!0}),t.addEventListener("close",(e)=>{if(e.target!==t)return;f?.cancel(),h();let n=u;if(u=null,n?.isConnected&&!n.disabled)n.focus()},{...r,capture:!0}),t.addEventListener("click",(e)=>{let n=e.target.closest?.("[data-b3-close]");if(n&&!n.disabled&&n.closest("dialog")===t)m()},r),i.addEventListener("click",(e)=>{let n=e.target.closest?.("[data-b3-open]");if(n&&!n.disabled&&t.id&&n.dataset.b3Open===t.id)p(n)},r),{dismiss:m,show:p}}var at=["tabindex","autofocus","data-b3-initial-focus"];function Y(t,s){let b=t.ownerDocument,i=null,l=()=>{if(!i)return;let{title:u,original:f}=i;for(let[a,o]of Object.entries(f)){let c=a==="tabindex"?"-1":"";if(u.getAttribute(a)!==c)continue;if(o===null)u.removeAttribute(a);else u.setAttribute(a,o)}i=null},r=()=>{if([...t.querySelectorAll("[autofocus]")].find((o)=>o!==i?.title))return l();let f=t.getAttribute("aria-labelledby")?.trim().split(/\s+/)[0],a=f?b.getElementById(f):null;if(!a||!t.contains(a)||i?.title===a)return;l(),i={title:a,original:Object.fromEntries(at.map((o)=>[o,a.getAttribute(o)]))},a.setAttribute("tabindex","-1"),a.setAttribute("autofocus",""),a.setAttribute("data-b3-initial-focus","")};r(),t.addEventListener("beforetoggle",(u)=>{if(u.newState==="open")r()},{signal:s}),s.addEventListener("abort",l,{once:!0})}function W(t,s,b){let i={signal:b},l=null,r=null,u=null,f=(o,c=!0)=>{let{handle:h,pointerId:m,distance:p}=o;if(l=null,delete t.dataset.b3Dragging,t.style.removeProperty("transform"),h.hasPointerCapture(m))h.releasePointerCapture(m);if(c&&p&&t.open&&!H(t)){let e=B(t,{y:p});if(!e)return;u=e,e.finished.catch(()=>{}).finally(()=>{if(u===e)u=null})}};t.addEventListener("pointerdown",(o)=>{r=null;let c=o.target.closest?.(".b3-sheet-handle");if(!c||c.closest("dialog")!==t||!t.matches(":modal"))return;if(l||!o.isPrimary||o.button!==0||t.hasAttribute("data-b3-closing"))return;u?.cancel();for(let h of t.getAnimations())h.cancel();l={handle:c,pointerId:o.pointerId,y:o.clientY,distance:0,moved:!1},t.dataset.b3Dragging="",c.setPointerCapture(o.pointerId)},i),t.addEventListener("pointermove",(o)=>{if(!l||o.pointerId!==l.pointerId)return;l.distance=Math.max(0,o.clientY-l.y),l.moved||=Math.abs(o.clientY-l.y)>6,t.style.transform=`translateY(${l.distance}px)`},i),t.addEventListener("pointerup",(o)=>{if(!l||o.pointerId!==l.pointerId)return;let c=l;if(c.moved)r={pointerId:c.pointerId,handle:c.handle};let h=Math.min(120,t.offsetHeight*0.25);if(c.moved&&c.distance>=h){let m=s();f(c,!m)}else f(c)},i);let a=(o)=>{if(l&&o.pointerId===l.pointerId)f(l)};t.addEventListener("pointercancel",a,i),t.addEventListener("lostpointercapture",a,i),t.addEventListener("click",(o)=>{let c=r;if(r=null,c&&o.detail!==0&&(o.pointerId===c.pointerId||c.handle.contains(o.target)))o.preventDefault(),o.stopImmediatePropagation()},{...i,capture:!0}),t.addEventListener("close",()=>{if(l)f(l,!1);u?.cancel()},{...i,capture:!0}),b.addEventListener("abort",()=>{if(l)f(l,!1);u?.cancel(),u=null},{once:!0})}function z(t,s){let b={signal:s},i=()=>{let e=t.querySelector('input[role="combobox"]'),n=t.querySelector('[role="listbox"]');if(!e||!n?.id||e.getAttribute("aria-controls")!==n.id)return null;return{input:e,list:n,empty:t.querySelector("[data-b3-command-empty]"),status:t.querySelector("[data-b3-command-status]")}},l=null,r=[],u=(e)=>[...e.querySelectorAll('[role="option"]')];function f(e,n=!0){let d=i();if(!d)return;l=e||null;for(let E of u(d.list))E.setAttribute("aria-selected",String(E===l));if(l){if(d.input.setAttribute("aria-activedescendant",l.id),n)l.scrollIntoView({block:"nearest"})}else d.input.removeAttribute("aria-activedescendant")}function a(){let e=i();if(!e)return;let{input:n,list:d,empty:E,status:g}=e,y=n.value.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean),A=u(d);for(let M of A){let v=`${M.textContent} ${M.dataset.b3Keywords||""}`.toLocaleLowerCase();M.hidden=!y.every((S)=>v.includes(S))}for(let M of d.querySelectorAll('[role="group"]'))M.hidden=![...M.querySelectorAll('[role="option"]')].some((v)=>!v.hidden);let L=A.filter((M)=>!M.hidden);if(r=L.filter((M)=>M.id&&M.getAttribute("aria-disabled")!=="true"),d.hidden=!L.length,n.setAttribute("aria-expanded",String(t.open&&!!L.length)),E)E.hidden=!!L.length;if(g)g.textContent=`${r.length} ${r.length===1?"action":"actions"} available.`;f(r[0],t.open&&!!d.parentElement?.classList.contains("b3-scroll"))}let o=()=>{if(!r.every((e)=>e.isConnected)||l&&!l.isConnected)a();return i()};function c(e){let n=o();if(!n||!e||!r.includes(e)||e.hidden||e.getAttribute("aria-disabled")==="true"||!n.list.contains(e))return;if(t.dispatchEvent(new CustomEvent("b3:command",{bubbles:!0,cancelable:!0,detail:{value:e.dataset.b3Value,item:e}})))t.close()}let h=(e)=>e.target===i()?.input;t.addEventListener("input",(e)=>{if(h(e))a()},b),t.addEventListener("keydown",(e)=>{if(!h(e)||e.isComposing||e.altKey||e.ctrlKey||e.metaKey)return;if(e.key==="ArrowDown"||e.key==="ArrowUp"){if(e.preventDefault(),o(),!r.length)return;let n=r.indexOf(l),d=e.key==="ArrowDown"?Math.min(n+1,r.length-1):Math.max(n-1,0);f(r[d])}else if(e.key==="Enter")e.preventDefault(),o(),c(l)},b);let m=(e)=>{let n=e.target.closest?.('[role="option"]');return n&&i()?.list.contains(n)?n:null};t.addEventListener("pointerdown",(e)=>{if(m(e))e.preventDefault()},b),t.addEventListener("click",(e)=>{let n=m(e);if(n)c(n)},b);let p=new MutationObserver(()=>{let e=i();if(t.open){if(e)e.input.value="";a()}else if(e)e.input.setAttribute("aria-expanded","false"),e.input.removeAttribute("aria-activedescendant")});p.observe(t,{attributes:!0,attributeFilter:["open"]}),s.addEventListener("abort",()=>p.disconnect(),{once:!0}),a()}function K(t,s){let b=t.ownerDocument;t.addEventListener("click",(i)=>{let l=i.target.closest?.("[data-b3-dismiss]"),r=l?.closest(".b3-toast");if(!l||!r||l.disabled||!t.contains(r))return;let u=r.contains(b.activeElement),f=[...t.querySelectorAll(".b3-toast")],a=f.indexOf(r),o=r.dataset.b3ReturnFocus||t.dataset.b3ReturnFocus,c=o?b.getElementById(o):null;if(r.remove(),!u)return;let h=[...f.slice(a+1),...f.slice(0,a).reverse()].flatMap((m)=>[...m.querySelectorAll("[data-b3-dismiss]")]);if(c)h.push(c);if(t.hasAttribute("tabindex"))h.push(t);for(let m of h){if(!m.isConnected||m.matches(":disabled")||m.closest("[inert]")||!m.getClientRects().length)continue;if(m.focus(),b.activeElement===m)break}},{signal:s})}function X(t,s){let b=t.ownerDocument,i=b.defaultView,l=()=>[...t.querySelectorAll('a[href^="#"]')].flatMap((c)=>{let h;try{h=decodeURIComponent(c.getAttribute("href").slice(1))}catch{return[]}let m=b.getElementById(h);if(!m)c.removeAttribute("aria-current");return m?[{link:c,heading:m}]:[]});function r(c){for(let h=c.parentElement;h&&h!==b.body;h=h.parentElement)if(h.scrollHeight>h.clientHeight+1&&/(auto|scroll)/.test(i.getComputedStyle(h).overflowY))return h;return null}let u=0;function f(){u=0;let c=l(),h=c.filter(({heading:g})=>g.getClientRects().length).sort((g,y)=>g.heading.getBoundingClientRect().top-y.heading.getBoundingClientRect().top),m=h.length?r(h[0].heading):null,p=m?m.getBoundingClientRect().top+m.clientTop:0,e=h[0];for(let g of h){let y=parseFloat(i.getComputedStyle(g.heading).scrollMarginBlockStart)||0;if(g.heading.getBoundingClientRect().top<=p+y+1)e=g}let n=m?m.scrollTop:i.scrollY,d=m?m.clientHeight:i.innerHeight,E=m?m.scrollHeight:b.documentElement.scrollHeight;if(n>0&&n+d>=E-2)e=h.at(-1);for(let g of c)if(g!==e)g.link.removeAttribute("aria-current");else if(g.link.getAttribute("aria-current")!=="location")g.link.setAttribute("aria-current","location")}let a=()=>{if(!u)u=i.requestAnimationFrame(f)};i.addEventListener("scroll",a,{signal:s,capture:!0,passive:!0}),i.addEventListener("resize",a,{signal:s}),i.addEventListener("hashchange",a,{signal:s});let o=new i.MutationObserver(a);o.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["aria-current","href"]}),o.observe(b.body,{childList:!0,subtree:!0}),s.addEventListener("abort",()=>{i.cancelAnimationFrame(u),o.disconnect()},{once:!0}),f()}function lt(t,s){let b=t.ownerDocument||t,i=b.defaultView,l={signal:s},r=null,u=null,f=0,a=null,o=0,c=null,h=new i.MutationObserver((e)=>{if(!r.isConnected||e.some(({target:n})=>u.contains(n)&&!c.contains(n)))m()});function m(){if(!r)return;i.clearTimeout(o),h.disconnect();let e=r.dataset.b3Confirm;if(a&&e&&r.textContent===e)r.replaceChildren(...a);r.removeAttribute("data-b3-armed"),r=u=a=null,c.textContent=""}function p(e){if(!c?.isConnected)c=b.createElement("span"),c.className="b3-visually-hidden",c.setAttribute("role","status"),b.body.append(c);let n=c;r=e,f=i.performance.now(),u=e.parentElement.closest("li, tr, article, [data-id], .b3-row, .b3-card")||e.parentElement;let d=e.dataset.b3Confirm;if(d)a=[...e.childNodes],e.replaceChildren(d);e.setAttribute("data-b3-armed",""),h.observe(t,{childList:!0,subtree:!0}),h.observe(u,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),o=i.setTimeout(m,4000),i.requestAnimationFrame(()=>{if(r===e)n.textContent=d||"Press again to confirm"})}t.addEventListener("click",(e)=>{let n=e.target.closest?.("[data-b3-confirm]");if(r&&n!==r)m();if(!n||n.disabled||!t.contains(n))return;if(n===r&&i.performance.now()-f>=350)return m();if(e.preventDefault(),e.stopImmediatePropagation(),n!==r)p(n)},{...l,capture:!0}),t.addEventListener("focusout",({target:e})=>{if(e===r)i.queueMicrotask(()=>e===r&&m())},l),t.addEventListener("keydown",(e)=>{let n=e;if(n.key==="Escape")m();else if(n.repeat&&(n.key==="Enter"||n.key===" ")&&n.target.closest?.("[data-b3-confirm]"))n.preventDefault()},{...l,capture:!0}),s?.addEventListener("abort",()=>{m(),c?.remove()},{once:!0})}var j=Symbol.for("bare-v3.confirm");function U(){if(typeof document>"u"||!document.defaultView?.MutationObserver)return;let t=document;if(t[j])return;t[j]=!0,lt(document)}class G extends w{mount(t,s){P(t,s)}}class _ extends w{#t=null;get index(){return this.#t?.index??-1}set index(t){this.#t?.to(t)}get count(){return this.#t?.count??0}to(t,s){this.#t?.to(t,s)}mount(t,s){k(t,s,{tabindex:"0"},["b3-reel"]),this.#t=N(t,s),s.addEventListener("abort",()=>{this.#t=null},{once:!0})}}class J extends w{target(){return this.querySelector(":scope > details")}mount(t,s){F(t,s)}}class C extends w{#t=null;target(){return this.querySelector(":scope > dialog")}mount(t,s){this.#t=V(t,{signal:s,backdrop:()=>this.getAttribute("backdrop")==="dismiss"}),s.addEventListener("abort",()=>{this.#t=null},{once:!0})}show(t){if(this.#t)this.#t.show(t??null);else if(!this.target()?.open)this.target()?.showModal()}close(){if(this.#t)return this.#t.dismiss();return this.target()?.close(),!0}}class Q extends C{mount(t,s){super.mount(t,s),Y(t,s),W(t,()=>this.close(),s)}}class Z extends C{mount(t,s){super.mount(t,s),z(t,s)}}class tt extends w{mount(t,s){k(t,s,{},["b3-toast-region"]),K(t,s)}}class et extends w{mount(t,s){k(t,s,{role:"navigation"},["b3-toc"]),X(t,s)}}x("b3-tabs",G);x("b3-reel",_);x("b3-dropdown",J);x("b3-dialog",C);x("b3-sheet",Q);x("b3-command",Z);x("b3-toast-region",tt);x("b3-toc",et);U();export{Z as B3Command,C as B3Dialog,J as B3Dropdown,_ as B3Reel,Q as B3Sheet,G as B3Tabs,tt as B3ToastRegion,et as B3Toc,st as layout,I as motion,it as sequence,B as settle};
1
+ var ot=typeof HTMLElement==="function"?HTMLElement:class{};function x(t,s){if(typeof customElements>"u"||customElements.get?.(t))return;try{customElements.define(t,s)}catch(f){console.warn(`bare-v3: ${t} was not registered`,f)}}class w extends ot{#t=null;#n=null;#e=null;target(){return this}connectedCallback(){let t=this.ownerDocument;if(t.readyState==="loading"){t.addEventListener("DOMContentLoaded",()=>{if(this.isConnected)this.#r()},{once:!0});return}this.#r()}disconnectedCallback(){this.#o(),this.#e?.disconnect(),this.#e=null}#r(){if(this.#t)return;let t=this.target();if(t!==this&&!this.#e)this.#e=new MutationObserver(()=>{if(this.target()!==this.#n)this.#o(),this.#r()}),this.#e.observe(this,{childList:!0});if(!t)return;this.#t=new AbortController,this.#n=t,this.mount(t,this.#t.signal)}#o(){this.#t?.abort(),this.#t=null,this.#n=null}}function k(t,s,f={},i=[]){let o=()=>{for(let c of i)if(!t.classList.contains(c))t.classList.add(c);for(let[c,d]of Object.entries(f))if(!t.hasAttribute(c))t.setAttribute(c,d)};o();let r=new MutationObserver(o);r.observe(t,{attributes:!0,attributeFilter:["class",...Object.keys(f)]}),s.addEventListener("abort",()=>r.disconnect(),{once:!0})}function P(t,s){let f=t.ownerDocument,i=(b)=>b.closest(t.localName)===t,o=(b)=>[...b.querySelectorAll('[role="tab"]')].filter((e)=>e.closest('[role="tablist"]')===b),r=new WeakMap,c=(b,e,n)=>{if(b.getAttribute(e)!==n)b.setAttribute(e,n)},d=()=>[...t.querySelectorAll('[role="tablist"]')].filter(i);function l(b,e){r.set(b,e);for(let n of o(b))c(n,"aria-selected",String(n===e)),c(n,"tabindex",n===e?"0":"-1")}function a(){let b=new Map;for(let e of d()){let n=r.get(e);if(!n)continue;for(let m of o(e)){let E=m.getAttribute("aria-controls"),g=E?f.getElementById(E):null;if(g)b.set(g,m===n||!!b.get(g))}}for(let[e,n]of b)if(e.hidden===n)e.hidden=!n}function u(b,e=!1){let n=b.closest('[role="tablist"]');if(!n||b.disabled)return;if(l(n,b),a(),e)b.focus({preventScroll:!0}),b.scrollIntoView({block:"nearest",inline:"nearest",behavior:"instant"})}function h(){for(let b of d()){let e=o(b).filter((g)=>!g.disabled),n=r.get(b),E=e.filter((g)=>g.getAttribute("aria-selected")==="true").find((g)=>g!==n)??(n&&e.includes(n)?n:e[0]);if(E)l(b,E)}a()}h();let p=new f.defaultView.MutationObserver(h);p.observe(t,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["aria-selected","tabindex","hidden"]}),s.addEventListener("abort",()=>p.disconnect(),{once:!0}),t.addEventListener("click",(b)=>{let e=b.target.closest?.('[role="tab"]'),n=e?.closest('[role="tablist"]');if(e&&n&&i(n)&&!e.disabled)u(e)},{signal:s}),t.addEventListener("keydown",(b)=>{let e=b.target.closest?.('[role="tab"]'),n=e?.closest('[role="tablist"]');if(!e||!n||!i(n))return;let m=o(n).filter((v)=>!v.disabled),E=m.indexOf(e),g=n.getAttribute("aria-orientation")==="vertical",y=f.defaultView.getComputedStyle(n).direction==="rtl",T=g?"ArrowDown":y?"ArrowLeft":"ArrowRight",L=g?"ArrowUp":y?"ArrowRight":"ArrowLeft",M;if(b.key===T)M=m[(E+1)%m.length];if(b.key===L)M=m[(E-1+m.length)%m.length];if(b.key==="Home")M=m[0];if(b.key==="End")M=m.at(-1);if(M)b.preventDefault(),u(M,!0)},{signal:s})}function F(t,s){let f=t.ownerDocument,i=f.defaultView,o=()=>i.getComputedStyle(t).direction==="rtl",r=()=>[...t.children].filter((n)=>n.getClientRects().length>0),c=(n)=>{let m=t.getBoundingClientRect(),E=n.getBoundingClientRect();return o()?m.right-E.right:E.left-m.left},d=()=>{let n=-1,m=1/0;return r().forEach((E,g)=>{let y=Math.abs(c(E));if(y<m-1)m=y,n=g}),n},l=(n)=>Math.max(0,Math.min(r().length-1,Math.trunc(n)||0)),a=()=>t.id?[...f.querySelectorAll("[data-b3-reel-to]")].filter((n)=>n.getAttribute("aria-controls")===t.id):[],u=(n=!0)=>{let m=d(),E=t.dataset.b3ReelIndex;if(m<0)delete t.dataset.b3ReelIndex;else if(E!==String(m))t.dataset.b3ReelIndex=String(m);for(let g of a()){let y=g.dataset.b3ReelTo;if(String(m)===y){if(g.getAttribute("aria-current")!=="true")g.setAttribute("aria-current","true")}else if(Number.isInteger(Number(y)))g.removeAttribute("aria-current")}if(n&&E!==void 0&&E!==String(m))t.dispatchEvent(new CustomEvent("b3-reel-change",{bubbles:!0,detail:{index:m,count:r().length}}))},h=(n,m="smooth")=>{let E=r()[l(n)];if(!E)return;let g=c(E);t.scrollBy({left:o()?-g:g,behavior:m})},p=new i.ResizeObserver(()=>u(!1));p.observe(t);let b=new i.MutationObserver(()=>u(!1));b.observe(t,{attributes:!0,attributeFilter:["data-b3-reel-index"]}),s.addEventListener("abort",()=>{p.disconnect(),b.disconnect()},{once:!0});let e=0;return t.addEventListener("scroll",()=>{i.cancelAnimationFrame(e),e=i.requestAnimationFrame(()=>u())},{signal:s}),f.addEventListener("click",(n)=>{let m=n.target.closest?.("[data-b3-reel-to]");if(!m||!t.id||m.getAttribute("aria-controls")!==t.id)return;let E=m.dataset.b3ReelTo,g=d();h(E==="next"?g+1:E==="previous"?g-1:Number(E))},{signal:s}),t.addEventListener("keydown",(n)=>{if(n.target!==t)return;let m=d(),E=o()?"ArrowLeft":"ArrowRight",g=o()?"ArrowRight":"ArrowLeft",y;if(n.key===E)y=m+1;if(n.key===g)y=m-1;if(n.key==="Home")y=0;if(n.key==="End")y=r().length-1;if(y===void 0)return;n.preventDefault(),h(y)},{signal:s}),u(!1),{get index(){return d()},get count(){return r().length},to:h}}var it=["transform","inset-block-start","inset-block-end","max-block-size","max-inline-size","min-inline-size"];function N(t,s){let f=t.ownerDocument,i=f.defaultView,o=null,r=()=>t.querySelector(".b3-dropdown-panel");function c(l){if(!o)return;for(let[a,u,h]of o)if(u)l.style.setProperty(a,u,h);else l.style.removeProperty(a)}s.addEventListener("abort",()=>{let l=r();if(l)c(l);o=null},{once:!0});function d(){let l=r();if(!l)return;if(c(l),!t.open){o=null;return}o??=it.map((L)=>[L,l.style.getPropertyValue(L),l.style.getPropertyPriority(L)]);let a={left:0,right:i.innerWidth,top:0,bottom:i.innerHeight};for(let L=t.parentElement;L;L=L.parentElement){let M=i.getComputedStyle(L),v=L.getBoundingClientRect(),S=L.offsetWidth?v.width/L.offsetWidth:1,R=L.offsetHeight?v.height/L.offsetHeight:1,O=v.left+L.clientLeft*S,q=v.top+L.clientTop*R;if(/^(auto|scroll|hidden|clip)$/.test(M.overflowX))a.left=Math.max(a.left,O),a.right=Math.min(a.right,O+L.clientWidth*S);if(/^(auto|scroll|hidden|clip)$/.test(M.overflowY))a.top=Math.max(a.top,q),a.bottom=Math.min(a.bottom,q+L.clientHeight*R)}let u=t.getBoundingClientRect();if(u.bottom<=a.top||u.top>=a.bottom||u.right<=a.left||u.left>=a.right){t.open=!1;return}let h=Math.max(0,a.right-a.left-16),p=l.getBoundingClientRect(),b=l.offsetWidth?p.width/l.offsetWidth:1,e=l.offsetHeight?p.height/l.offsetHeight:1;if(!(b>0&&e>0))return;if(p.width>h)l.style.minInlineSize="0",l.style.maxInlineSize=`${h/b}px`;let n=l.getBoundingClientRect(),m=n.left<a.left+8?a.left+8-n.left:n.right>a.right-8?a.right-8-n.right:0;l.style.transform=`translateX(${m/b}px)`;let E=Math.max(0,n.top-u.bottom),g=Math.max(0,a.bottom-u.bottom-E-8),y=Math.max(0,u.top-a.top-E-8),T=n.height>g&&y>g;if(l.style.maxBlockSize=`${Math.min(n.height,T?y:g)/e}px`,T)l.style.insetBlockStart="auto",l.style.insetBlockEnd="calc(100% + .5rem)"}t.addEventListener("toggle",d,{signal:s}),i.addEventListener("resize",()=>{if(t.open)d()},{signal:s}),i.addEventListener("scroll",(l)=>{if(!t.open||l.target?.nodeType&&r()?.contains(l.target))return;d()},{signal:s,capture:!0,passive:!0}),t.addEventListener("keydown",(l)=>{if(l.key!=="Escape"||l.target.closest?.("details[open]")!==t)return;t.open=!1,t.querySelector("summary")?.focus()},{signal:s}),f.addEventListener("click",(l)=>{if(t.open&&!t.contains(l.target))t.open=!1},{signal:s})}var A=new WeakMap;var st={enter:{keyframes:[{opacity:0,transform:"translateY(12px) scale(.985)"},{opacity:1,transform:"none"}],duration:320},exit:{keyframes:[{opacity:1,transform:"none"},{opacity:0,transform:"translateY(-6px) scale(.98)"}],duration:180,easing:"cubic-bezier(.4,0,1,1)"},update:{keyframes:[{opacity:0.35},{opacity:1}],duration:180},confirm:{keyframes:[{transform:"scale(.9)"},{transform:"scale(1.08)",offset:0.5},{transform:"scale(.985)",offset:0.8},{transform:"scale(1)"}],duration:380},reveal:{keyframes:[{opacity:0,clipPath:"inset(0 0 100%)",transform:"translateY(8px)"},{opacity:1,clipPath:"inset(0)",transform:"none"}],duration:440}},H=(t)=>!!(t.ownerDocument?.defaultView?.matchMedia("(prefers-reduced-motion: reduce)").matches||t.closest('[data-b3-motion="reduce"]'));function D(t,s,f){if(A.get(t)?.cancel(),!t.isConnected||!t.animate||H(t))return null;let i=t.animate(s,{easing:"cubic-bezier(.16,1,.3,1)",fill:"backwards",...f});A.set(t,i);let o=t.ownerDocument.defaultView.matchMedia("(prefers-reduced-motion: reduce)"),r=()=>{if(o.matches)i.cancel()};o.addEventListener("change",r);let c=()=>{if(o.removeEventListener("change",r),A.get(t)===i)A.delete(t)};return i.addEventListener("finish",c,{once:!0}),i.addEventListener("cancel",c,{once:!0}),i}function I(t,s="update",f={}){let i=st[s];if(!i)throw TypeError(`Unknown motion intent: ${s}`);let o=i.keyframes,r=A.get(t);if((s==="enter"||s==="exit")&&r&&(r.playState==="running"||r.playState==="paused")){let c=t.ownerDocument.defaultView.getComputedStyle(t);o=[{...i.keyframes[0],opacity:c.opacity,transform:c.transform},...i.keyframes.slice(1)]}return D(t,o,{duration:i.duration,easing:i.easing||"cubic-bezier(.16,1,.3,1)",delay:Math.min(200,Math.max(0,f.delay||0))})}function at(t,s="enter"){return Array.from(t,(f,i)=>I(f,s,{delay:Math.min(i*45,180)})).filter((f)=>!!f)}function lt(t,s){let f=()=>{let r=new Map;for(let c of t.querySelectorAll("[data-b3-layout]")){let d=c.dataset.b3Layout;if(!d||r.has(d))throw Error("Layout motion requires unique, non-empty data-b3-layout keys");r.set(d,{element:c,rect:c.getBoundingClientRect()})}return r},i=f();for(let{element:r}of i.values())A.get(r)?.cancel();s();let o=[];for(let[r,{element:c,rect:d}]of f()){let l=i.get(r);if(!l||l.element!==c){let n=I(c,"enter");if(n)o.push(n);continue}let a=l.rect;if(!d.width||!d.height||!a.width||!a.height)continue;let u=a.x-d.x,h=a.y-d.y,p=a.width/d.width,b=a.height/d.height;if(Math.abs(u)+Math.abs(h)+Math.abs(p-1)+Math.abs(b-1)<0.01)continue;let e=D(c,[{transformOrigin:"top left",transform:`translate(${u}px,${h}px) scale(${p},${b})`},{transformOrigin:"top left",transform:"none"}],{duration:420});if(e)o.push(e)}return o}function B(t,{x:s=0,y:f=0}={}){if(!Number.isFinite(s)||!Number.isFinite(f))throw TypeError("Settle displacement must be finite");let i=Array.from({length:41},(o,r)=>{let c=r/40,d=r===40?0:Math.exp(-7*c)*(Math.cos(11*c)+0.6*Math.sin(11*c));return{offset:c,transform:`translate(${s*d}px,${f*d}px)`}});return D(t,i,{duration:460,easing:"linear"})}function K(t,{signal:s,backdrop:f}){let i=t.ownerDocument,o=i.defaultView,r={signal:s},c=null,d=null,l=null,a=!1,u=(e)=>{let n=t.getBoundingClientRect();return e.clientX<n.left||e.clientX>n.right||e.clientY<n.top||e.clientY>n.bottom},h=()=>{d=null,delete t.dataset.b3Closing},p=()=>{if(!t.open||d)return!1;if(!t.dispatchEvent(new Event("cancel",{cancelable:!0})))return!1;if(H(t)||!t.animate)return t.close(),!0;let e=o.getComputedStyle(t),n=t.matches(".b3-sheet")?"translateY(100%)":t.dataset.b3Placement==="end"?`translateX(${e.direction==="rtl"?"-":""}100%)`:"scale(.985)",m=t.animate([{transform:e.transform,opacity:1},{transform:n,opacity:0}],{duration:160,easing:"cubic-bezier(.4, 0, 1, 1)"});return d=m,t.dataset.b3Closing="",m.finished.then(()=>{if(t.open)t.close()},()=>{}).finally(()=>{if(d===m)h()}),!0},b=(e=null)=>{if(c=e,!t.open)t.showModal()};return t.addEventListener("cancel",(e)=>{if(!e.cancelable||e.defaultPrevented||!e.isTrusted||e.target!==t)return;e.preventDefault(),e.stopImmediatePropagation(),p()},{...r,capture:!0}),s.addEventListener("abort",()=>{d?.cancel(),h()},{once:!0}),t.addEventListener("pointerdown",(e)=>{a=!1,l=e.isPrimary&&e.button===0&&e.target===t&&f()&&t.matches(":modal")&&u(e)?e.pointerId:null},r),t.addEventListener("pointerup",(e)=>{let n=l;if(l=null,n!==null&&n===e.pointerId&&e.target===t&&u(e))a=!0},r),t.addEventListener("pointercancel",()=>{l=null,a=!1},r),t.addEventListener("click",(e)=>{let n=a;if(a=!1,!n||e.target!==t||!u(e))return;e.preventDefault(),e.stopImmediatePropagation(),p()},{...r,capture:!0}),t.addEventListener("close",(e)=>{if(e.target!==t)return;d?.cancel(),h();let n=c;if(c=null,n?.isConnected&&!n.disabled)n.focus()},{...r,capture:!0}),t.addEventListener("click",(e)=>{let n=e.target.closest?.("[data-b3-close]");if(n&&!n.disabled&&n.closest("dialog")===t)p()},r),i.addEventListener("click",(e)=>{let n=e.target.closest?.("[data-b3-open]");if(n&&!n.disabled&&t.id&&n.dataset.b3Open===t.id)b(n)},r),{dismiss:p,show:b}}var ct=["tabindex","autofocus","data-b3-initial-focus"];function V(t,s){let f=t.ownerDocument,i=null,o=()=>{if(!i)return;let{title:c,original:d}=i;for(let[l,a]of Object.entries(d)){let u=l==="tabindex"?"-1":"";if(c.getAttribute(l)!==u)continue;if(a===null)c.removeAttribute(l);else c.setAttribute(l,a)}i=null},r=()=>{if([...t.querySelectorAll("[autofocus]")].find((a)=>a!==i?.title))return o();let d=t.getAttribute("aria-labelledby")?.trim().split(/\s+/)[0],l=d?f.getElementById(d):null;if(!l||!t.contains(l)||i?.title===l)return;o(),i={title:l,original:Object.fromEntries(ct.map((a)=>[a,l.getAttribute(a)]))},l.setAttribute("tabindex","-1"),l.setAttribute("autofocus",""),l.setAttribute("data-b3-initial-focus","")};r(),t.addEventListener("beforetoggle",(c)=>{if(c.newState==="open")r()},{signal:s}),s.addEventListener("abort",o,{once:!0})}function W(t,s,f){let i={signal:f},o=null,r=null,c=null,d=(a,u=!0)=>{let{handle:h,pointerId:p,distance:b}=a;if(o=null,delete t.dataset.b3Dragging,t.style.removeProperty("transform"),h.hasPointerCapture(p))h.releasePointerCapture(p);if(u&&b&&t.open&&!H(t)){let e=B(t,{y:b});if(!e)return;c=e,e.finished.catch(()=>{}).finally(()=>{if(c===e)c=null})}};t.addEventListener("pointerdown",(a)=>{r=null;let u=a.target.closest?.(".b3-sheet-handle");if(!u||u.closest("dialog")!==t||!t.matches(":modal"))return;if(o||!a.isPrimary||a.button!==0||t.hasAttribute("data-b3-closing"))return;c?.cancel();for(let h of t.getAnimations())h.cancel();o={handle:u,pointerId:a.pointerId,y:a.clientY,distance:0,moved:!1},t.dataset.b3Dragging="",u.setPointerCapture(a.pointerId)},i),t.addEventListener("pointermove",(a)=>{if(!o||a.pointerId!==o.pointerId)return;o.distance=Math.max(0,a.clientY-o.y),o.moved||=Math.abs(a.clientY-o.y)>6,t.style.transform=`translateY(${o.distance}px)`},i),t.addEventListener("pointerup",(a)=>{if(!o||a.pointerId!==o.pointerId)return;let u=o;if(u.moved)r={pointerId:u.pointerId,handle:u.handle};let h=Math.min(120,t.offsetHeight*0.25);if(u.moved&&u.distance>=h){let p=s();d(u,!p)}else d(u)},i);let l=(a)=>{if(o&&a.pointerId===o.pointerId)d(o)};t.addEventListener("pointercancel",l,i),t.addEventListener("lostpointercapture",l,i),t.addEventListener("click",(a)=>{let u=r;if(r=null,u&&a.detail!==0&&(a.pointerId===u.pointerId||u.handle.contains(a.target)))a.preventDefault(),a.stopImmediatePropagation()},{...i,capture:!0}),t.addEventListener("close",()=>{if(o)d(o,!1);c?.cancel()},{...i,capture:!0}),f.addEventListener("abort",()=>{if(o)d(o,!1);c?.cancel(),c=null},{once:!0})}function Y(t,s){let f={signal:s},i=()=>{let e=t.querySelector('input[role="combobox"]'),n=t.querySelector('[role="listbox"]');if(!e||!n?.id||e.getAttribute("aria-controls")!==n.id)return null;return{input:e,list:n,empty:t.querySelector("[data-b3-command-empty]"),status:t.querySelector("[data-b3-command-status]")}},o=null,r=[],c=(e)=>[...e.querySelectorAll('[role="option"]')];function d(e,n=!0){let m=i();if(!m)return;o=e||null;for(let E of c(m.list))E.setAttribute("aria-selected",String(E===o));if(o){if(m.input.setAttribute("aria-activedescendant",o.id),n)o.scrollIntoView({block:"nearest"})}else m.input.removeAttribute("aria-activedescendant")}function l(){let e=i();if(!e)return;let{input:n,list:m,empty:E,status:g}=e,y=n.value.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean),T=c(m);for(let M of T){let v=`${M.textContent} ${M.dataset.b3Keywords||""}`.toLocaleLowerCase();M.hidden=!y.every((S)=>v.includes(S))}for(let M of m.querySelectorAll('[role="group"]'))M.hidden=![...M.querySelectorAll('[role="option"]')].some((v)=>!v.hidden);let L=T.filter((M)=>!M.hidden);if(r=L.filter((M)=>M.id&&M.getAttribute("aria-disabled")!=="true"),m.hidden=!L.length,n.setAttribute("aria-expanded",String(t.open&&!!L.length)),E)E.hidden=!!L.length;if(g)g.textContent=`${r.length} ${r.length===1?"action":"actions"} available.`;d(r[0],t.open&&!!m.parentElement?.classList.contains("b3-scroll"))}let a=()=>{if(!r.every((e)=>e.isConnected)||o&&!o.isConnected)l();return i()};function u(e){let n=a();if(!n||!e||!r.includes(e)||e.hidden||e.getAttribute("aria-disabled")==="true"||!n.list.contains(e))return;if(t.dispatchEvent(new CustomEvent("b3:command",{bubbles:!0,cancelable:!0,detail:{value:e.dataset.b3Value,item:e}})))t.close()}let h=(e)=>e.target===i()?.input;t.addEventListener("input",(e)=>{if(h(e))l()},f),t.addEventListener("keydown",(e)=>{if(!h(e)||e.isComposing||e.altKey||e.ctrlKey||e.metaKey)return;if(e.key==="ArrowDown"||e.key==="ArrowUp"){if(e.preventDefault(),a(),!r.length)return;let n=r.indexOf(o),m=e.key==="ArrowDown"?Math.min(n+1,r.length-1):Math.max(n-1,0);d(r[m])}else if(e.key==="Enter")e.preventDefault(),a(),u(o)},f);let p=(e)=>{let n=e.target.closest?.('[role="option"]');return n&&i()?.list.contains(n)?n:null};t.addEventListener("pointerdown",(e)=>{if(p(e))e.preventDefault()},f),t.addEventListener("click",(e)=>{let n=p(e);if(n)u(n)},f);let b=new MutationObserver(()=>{let e=i();if(t.open){if(e)e.input.value="";l()}else if(e)e.input.setAttribute("aria-expanded","false"),e.input.removeAttribute("aria-activedescendant")});b.observe(t,{attributes:!0,attributeFilter:["open"]}),s.addEventListener("abort",()=>b.disconnect(),{once:!0}),l()}function z(t,s){let f=t.ownerDocument;t.addEventListener("click",(i)=>{let o=i.target.closest?.("[data-b3-dismiss]"),r=o?.closest(".b3-toast");if(!o||!r||o.disabled||!t.contains(r))return;let c=r.contains(f.activeElement),d=[...t.querySelectorAll(".b3-toast")],l=d.indexOf(r),a=r.dataset.b3ReturnFocus||t.dataset.b3ReturnFocus,u=a?f.getElementById(a):null;if(r.remove(),!c)return;let h=[...d.slice(l+1),...d.slice(0,l).reverse()].flatMap((p)=>[...p.querySelectorAll("[data-b3-dismiss]")]);if(u)h.push(u);if(t.hasAttribute("tabindex"))h.push(t);for(let p of h){if(!p.isConnected||p.matches(":disabled")||p.closest("[inert]")||!p.getClientRects().length)continue;if(p.focus(),f.activeElement===p)break}},{signal:s})}function X(t,s){let f=t.ownerDocument,i=f.defaultView,o=()=>[...t.querySelectorAll('a[href^="#"]')].flatMap((u)=>{let h;try{h=decodeURIComponent(u.getAttribute("href").slice(1))}catch{return[]}let p=f.getElementById(h);if(!p)u.removeAttribute("aria-current");return p?[{link:u,heading:p}]:[]});function r(u){for(let h=u.parentElement;h&&h!==f.body;h=h.parentElement)if(h.scrollHeight>h.clientHeight+1&&/(auto|scroll)/.test(i.getComputedStyle(h).overflowY))return h;return null}let c=0;function d(){c=0;let u=o(),h=u.filter(({heading:g})=>g.getClientRects().length).sort((g,y)=>g.heading.getBoundingClientRect().top-y.heading.getBoundingClientRect().top),p=h.length?r(h[0].heading):null,b=p?p.getBoundingClientRect().top+p.clientTop:0,e=h[0];for(let g of h){let y=parseFloat(i.getComputedStyle(g.heading).scrollMarginBlockStart)||0;if(g.heading.getBoundingClientRect().top<=b+y+1)e=g}let n=p?p.scrollTop:i.scrollY,m=p?p.clientHeight:i.innerHeight,E=p?p.scrollHeight:f.documentElement.scrollHeight;if(n>0&&n+m>=E-2)e=h.at(-1);for(let g of u)if(g!==e)g.link.removeAttribute("aria-current");else if(g.link.getAttribute("aria-current")!=="location")g.link.setAttribute("aria-current","location")}let l=()=>{if(!c)c=i.requestAnimationFrame(d)};i.addEventListener("scroll",l,{signal:s,capture:!0,passive:!0}),i.addEventListener("resize",l,{signal:s}),i.addEventListener("hashchange",l,{signal:s});let a=new i.MutationObserver(l);a.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["aria-current","href"]}),a.observe(f.body,{childList:!0,subtree:!0}),s.addEventListener("abort",()=>{i.cancelAnimationFrame(c),a.disconnect()},{once:!0}),d()}function ut(t,s){let f=t.ownerDocument||t,i=f.defaultView,o={signal:s},r=null,c=null,d=0,l=null,a=0,u=null,h=new i.MutationObserver((e)=>{if(!r.isConnected||e.some(({target:n})=>c.contains(n)&&!u.contains(n)))p()});function p(){if(!r)return;i.clearTimeout(a),h.disconnect();let e=r.dataset.b3Confirm;if(l&&e&&r.textContent===e)r.replaceChildren(...l);r.removeAttribute("data-b3-armed"),r=c=l=null,u.textContent=""}function b(e){if(!u?.isConnected)u=f.createElement("span"),u.className="b3-visually-hidden",u.setAttribute("role","status"),f.body.append(u);let n=u;r=e,d=i.performance.now(),c=e.parentElement.closest("li, tr, article, [data-id], .b3-row, .b3-card")||e.parentElement;let m=e.dataset.b3Confirm;if(m)l=[...e.childNodes],e.replaceChildren(m);e.setAttribute("data-b3-armed",""),h.observe(t,{childList:!0,subtree:!0}),h.observe(c,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),a=i.setTimeout(p,4000),i.requestAnimationFrame(()=>{if(r===e)n.textContent=m||"Press again to confirm"})}t.addEventListener("click",(e)=>{let n=e.target.closest?.("[data-b3-confirm]");if(r&&n!==r)p();if(!n||n.disabled||!t.contains(n))return;if(n===r&&i.performance.now()-d>=350)return p();if(e.preventDefault(),e.stopImmediatePropagation(),n!==r)b(n)},{...o,capture:!0}),t.addEventListener("focusout",({target:e})=>{if(e===r)i.queueMicrotask(()=>e===r&&p())},o),t.addEventListener("keydown",(e)=>{let n=e;if(n.key==="Escape")p();else if(n.repeat&&(n.key==="Enter"||n.key===" ")&&n.target.closest?.("[data-b3-confirm]"))n.preventDefault()},{...o,capture:!0}),s?.addEventListener("abort",()=>{p(),u?.remove()},{once:!0})}var j=Symbol.for("bare-v3.confirm");function U(){if(typeof document>"u"||!document.defaultView?.MutationObserver)return;let t=document;if(t[j])return;t[j]=!0,ut(document)}function G(t,s){let f=()=>t.querySelector("textarea"),i=()=>{let o=f();if(!o)return;if(o.style.height="auto",!o.scrollHeight){o.style.height="";return}let r=getComputedStyle(o),c=r.boxSizing==="border-box"?parseFloat(r.borderTopWidth)+parseFloat(r.borderBottomWidth):-(parseFloat(r.paddingTop)+parseFloat(r.paddingBottom)),d=parseFloat(r.maxHeight),l=o.scrollHeight+c;o.style.height=`${Number.isFinite(d)?Math.min(l,d):l}px`};return t.addEventListener("input",(o)=>{if(o.target===f())i()},{signal:s}),t.addEventListener("keydown",(o)=>{let r=f();if(o.target!==r||o.key!=="Enter"||o.shiftKey||o.altKey||o.isComposing||o.defaultPrevented)return;o.preventDefault();let c=new CustomEvent("b3:send",{bubbles:!0,cancelable:!0,detail:{metaKey:o.metaKey,ctrlKey:o.ctrlKey}});if(t.dispatchEvent(c))r.form?.requestSubmit()},{signal:s}),i(),{grow:i}}class _ extends w{mount(t,s){P(t,s)}}class J extends w{#t=null;get index(){return this.#t?.index??-1}set index(t){this.#t?.to(t)}get count(){return this.#t?.count??0}to(t,s){this.#t?.to(t,s)}mount(t,s){k(t,s,{tabindex:"0"},["b3-reel"]),this.#t=F(t,s),s.addEventListener("abort",()=>{this.#t=null},{once:!0})}}class Q extends w{target(){return this.querySelector(":scope > details")}mount(t,s){N(t,s)}}class C extends w{#t=null;target(){return this.querySelector(":scope > dialog")}mount(t,s){this.#t=K(t,{signal:s,backdrop:()=>this.getAttribute("backdrop")==="dismiss"}),s.addEventListener("abort",()=>{this.#t=null},{once:!0})}show(t){if(this.#t)this.#t.show(t??null);else if(!this.target()?.open)this.target()?.showModal()}close(){if(this.#t)return this.#t.dismiss();return this.target()?.close(),!0}}class Z extends C{mount(t,s){super.mount(t,s),V(t,s),W(t,()=>this.close(),s)}}class tt extends C{mount(t,s){super.mount(t,s),Y(t,s)}}class et extends w{mount(t,s){k(t,s,{},["b3-toast-region"]),z(t,s)}}class nt extends w{mount(t,s){k(t,s,{role:"navigation"},["b3-toc"]),X(t,s)}}class rt extends w{#t=null;mount(t,s){this.#t=G(t,s),s.addEventListener("abort",()=>{this.#t=null},{once:!0})}grow(){this.#t?.grow()}}x("b3-tabs",_);x("b3-reel",J);x("b3-dropdown",Q);x("b3-dialog",C);x("b3-sheet",Z);x("b3-command",tt);x("b3-toast-region",et);x("b3-toc",nt);x("b3-composer",rt);U();export{tt as B3Command,rt as B3Composer,C as B3Dialog,Q as B3Dropdown,J as B3Reel,Z as B3Sheet,_ as B3Tabs,et as B3ToastRegion,nt as B3Toc,lt as layout,I as motion,at as sequence,B as settle};
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.1.0-alpha.158",
3
- "cssSha256": "e8a1cc0d967b07a320c429873198cae5522155a82e2acdf92bb760fa83749d8c",
2
+ "version": "0.1.0-alpha.159",
3
+ "cssSha256": "87ac01d3a41ddd908697ea8c41eb589c54125e9130c4522aaa5b2d2417493c07",
4
4
  "classes": [
5
5
  "b3-accordion",
6
6
  "b3-alert",
@@ -30,6 +30,7 @@
30
30
  "b3-command-list",
31
31
  "b3-command-search",
32
32
  "b3-composer",
33
+ "b3-composer-bar",
33
34
  "b3-conversation",
34
35
  "b3-count",
35
36
  "b3-cover",
@@ -60,6 +61,7 @@
60
61
  "b3-label",
61
62
  "b3-message",
62
63
  "b3-message-body",
64
+ "b3-message-disclosure",
63
65
  "b3-message-meta",
64
66
  "b3-mobile-app",
65
67
  "b3-mobile-list",
@@ -431,9 +433,11 @@
431
433
  "b3-message",
432
434
  "b3-message-body",
433
435
  "b3-message-meta",
434
- "b3-composer"
436
+ "b3-message-disclosure",
437
+ "b3-composer",
438
+ "b3-composer-bar"
435
439
  ],
436
- "guidance": "Use an ordered list for chronological messages with authored sender labels and time elements. data-b3-side=self mirrors alignment in RTL and uses on-accent text. Message bodies preserve line breaks and wrap long content. For rich replies, keep wide tables inside b3-table-wrap so they scroll within the message rather than widening the conversation. App owns delivery state, persistence, safe text rendering, scroll position and focus. Announce newly added messages through a separate concise status region; do not mark the full restored history live. Never imply a reply was delivered remotely when only local storage succeeded. Recording, attachments, streaming and retries are not provided by these presentation classes. A body whose direct children are blocks (rendered markdown) lays out as prose; text-only bodies preserve line breaks. Bodies cap at a readable measure; density tightens padding, meta and rhythm. b3-composer is the message row under a conversation: a direct textarea.b3-input plus one b3-button; they share height and radius and the action stays on the last line as the field grows. When the field and action cannot fit comfortably, the action wraps below rather than crushing the field. Add a safe-area inset to its block-end padding when it touches the screen edge. Bubble padding is one fixed token on both sides; the first/last block inside a body adds no edge margin, so single-line bubbles are vertically symmetric and short messages fit on one line.",
440
+ "guidance": "Use an ordered list for chronological messages with authored sender labels and time elements. data-b3-side=self mirrors alignment in RTL and uses on-accent text. Message bodies preserve line breaks and wrap long content. For rich replies, keep wide tables inside b3-table-wrap so they scroll within the message rather than widening the conversation. App owns delivery state, persistence, safe text rendering, scroll position and focus. Announce newly added messages through a separate concise status region; do not mark the full restored history live. Never imply a reply was delivered remotely when only local storage succeeded. Recording, attachments, streaming and retries are not provided by these presentation classes. A body whose direct children are blocks (rendered markdown) lays out as prose; text-only bodies preserve line breaks. Bodies cap at a readable measure; density tightens padding, meta and rhythm. b3-composer is the message row under a conversation: a direct textarea.b3-input plus one b3-button; they share height and radius and the action stays on the last line as the field grows. When the field and action cannot fit comfortably, the action wraps below rather than crushing the field. Add a safe-area inset to its block-end padding when it touches the screen edge. Bubble padding is one fixed token on both sides; the first/last block inside a body adds no edge margin, so single-line bubbles are vertically symmetric and short messages fit on one line. Assistant chats: data-b3-layout=assistant on b3-conversation keeps the person's messages as tinted bubbles (--b3-message-self-bg / --b3-message-self-text set the pair) and the assistant's replies unboxed at full width; sizes follow the chat's font size. Inside any message body, rendered markdown gets a chat rhythm and a code block is one frame. A details.b3-message-disclosure inside a message is a quiet one-line disclosure (the model's thinking, a tool call): the app owns its summary text and its open state, and keeps the reader's choice while the reply streams. Stacked composer: data-b3-layout=stacked on b3-composer is one bordered box holding a direct textarea (no class) and a b3-composer-bar of controls under it whose last b3-button is the send action; the box's accent border is the focus indicator. Wrap either composer in <b3-composer> to grow the field with its text up to its max-block-size and send on Enter (Shift/Alt+Enter is a newline): it dispatches a cancelable bubbling b3:send (detail metaKey, ctrlKey) and then submits the enclosing form unless canceled; call grow() after setting the value from code.",
437
441
  "example": "<ol class=\"b3-conversation\" aria-label=\"Messages\"><li class=\"b3-message\" data-b3-side=\"self\"><p class=\"b3-message-body\">Happy to help.</p><div class=\"b3-message-meta\"><span>You</span><time datetime=\"2026-09-08T09:14:00Z\">09:14 UTC</time></div></li></ol>"
438
442
  },
439
443
  {
@@ -1,6 +1,6 @@
1
- var q=Symbol.for("bare-v3.styles");function R(e,n,a){if(!e?.head||e.getElementById(n))return;let t=e[q]??=new Set;if(t.has(n))return;let r=e.defaultView;if(r&&"adoptedStyleSheets"in e&&"replaceSync"in r.CSSStyleSheet.prototype){let i=new r.CSSStyleSheet;i.replaceSync(a),e.adoptedStyleSheets=[...e.adoptedStyleSheets,i],t.add(n);return}let s=e.createElement("style");s.id=n,s.textContent=a,e.head.append(s)}var b=(e)=>String(e).replace(/[&<>"]/g,(n)=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[n]),P=(e)=>Object.fromEntries([...(e||"").matchAll(/(\w+)=(?:"([^"]*)"|(\S+))/g)].map((n)=>[n[1],n[2]??n[3]])),B=(e)=>/^[-+$€£]?[\d,.]+%?$/.test(String(e).trim()),z=(e)=>e?` data-b3-tone="${b(e)}"`:"",T={callout(e,n){let a=e.attrs.title?`<strong>${b(e.attrs.title)}</strong>`:"";return`<div class="b3-alert"${z(e.attrs.tone)}><div>${a}${n.parse(e.tokens)}</div></div>`},stats(e,n){let a=n?.inline??b;return`<div class="b3-md-stats">${e.body.split(`
2
- `).filter((r)=>r.trim()).map((r)=>{let[s="",i,o=""]=r.replace(/^\s*\|/,"").replace(/\|\s*$/,"").split("|").map((c)=>c.trim()),l=/^[↑+]/.test(o)?"success":/^[↓-]/.test(o)?"danger":"";return`<div class="b3-stat b3-surface"><span class="b3-label">${a(s)}</span><strong class="b3-stat-value">${i?a(i.replace(/^\*\*(.*)\*\*$/,"$1")):"…"}</strong>${o?`<span class="b3-badge"${z(l)}>${a(o)}</span>`:""}</div>`}).join("")}</div>`}},S={chart(e){let n=e.split(`
3
- `).map((t)=>t.split(":")).filter((t)=>t.length>1&&!isNaN(parseFloat(t[1]))),a=Math.max(...n.map((t)=>parseFloat(t[1])),1);return`<figure class="b3-md-bars b3-surface">${n.map(([t="",r=""])=>`<div class="b3-md-bar"><span>${b(t.trim())}</span><i style="inline-size:${Math.max(parseFloat(r),0)/a*100}%"></i><b>${b(r.trim())}</b></div>`).join("")}</figure>`}},U=(e,n)=>{let a=e.trim();if(!/^[[{]/.test(a))return S.chart(e,n);let t;try{t=JSON.parse(a)}catch{return(a.match(/[[{]/g)?.length??0)>(a.match(/[\]}]/g)?.length??0)?'<figure class="b3-md-chart b3-surface b3-md-pending"><div class="b3-skeleton"></div></figure>':j(e,"json")}let r=_(t);return r?Y(r):j(e,"json")};U.doc='```chart fence with JSON — `{"type":"bar|line|pie","title":"…","data":[{"label":"Jan","sales":120,"costs":80}]}` (numbers, not strings; every numeric field is a series; type is optional) — for trends over time (line), comparing groups/series (bar) or shares of a whole (pie). For a few single values, one `Label: number` per line gives simple bars.';var M=(e)=>typeof e==="number"&&Number.isFinite(e);function _(e){let n=Array.isArray(e)?{data:e}:e&&typeof e==="object"?e:null;if(!n)return null;let a=n.data??n.rows,t=n.series??n.values;if(!a&&t&&typeof t==="object"&&!Array.isArray(t)){let c=Object.keys(t);a=[...new Set(c.flatMap((p)=>Object.keys(t[p]||{})))].map((p)=>({label:p,...Object.fromEntries(c.map((g)=>[g,Number(t[g]?.[p]??0)]))}))}if(!Array.isArray(a)||!a.length||!a.every((c)=>c&&typeof c==="object"&&!Array.isArray(c)))return null;let r=[...new Set(a.flatMap((c)=>Object.keys(c)))],s=typeof n.x==="string"?n.x:r.find((c)=>a.some((d)=>d[c]!=null&&!M(d[c])))??"",i=n.y?[n.y].flat().map(String):r.filter((c)=>c!==s&&a.some((d)=>M(d[c])));if(!i.length)return null;let o=a.some((c)=>/^\d{4}-\d{2}/.test(String(c[s]??""))),l=["bar","line","pie"].includes(n.type)?n.type:o||a.length>12?"line":"bar";return{type:l,title:String(n.title??""),x:s,ys:l==="pie"?i.slice(0,1):i.slice(0,8),rows:a.slice(0,500)}}var A=(e)=>{try{return new Intl.NumberFormat(void 0,{notation:"compact",maximumFractionDigits:1}).format(e)}catch{return String(e)}};function Y({type:e,title:n,x:a,ys:t,rows:r}){let s=(m,u)=>M(m[u])?m[u]:0,i=(m,u)=>String(a?m[a]??"":u+1),o=(m,u,h)=>`<title>${b(i(m,u))} · ${b(h)}: ${b(m[h]??"")}</title>`,l=n?`<figcaption>${b(n)}</figcaption>`:"",c=(m)=>`<div class="b3-md-legend">${m.map((u,h)=>`<span><i class="b3-md-c${h%8}"></i>${b(u)}</span>`).join("")}</div>`;if(e==="pie"){let m=t[0],u=r.map((v)=>Math.max(s(v,m),0)),h=u.reduce((v,w)=>v+w,0)||1,f=0,E=r.map((v,w)=>{let x=f+u[w]/h*Math.PI*2,C=(O)=>`${(16+15*Math.sin(O)).toFixed(3)} ${(16-15*Math.cos(O)).toFixed(3)}`,N=u[w]>=h?"M16 1a15 15 0 1 1 0 30a15 15 0 1 1 0-30Z":`M16 16L${C(f)}A15 15 0 ${x-f>Math.PI?1:0} 1 ${C(x)}Z`;return f=x,`<path class="b3-md-c${w%8}" d="${N}">${o(v,w,m)}</path>`});return`<figure class="b3-md-chart b3-surface">${l}<div class="b3-md-pie"><svg viewBox="0 0 32 32" role="img" aria-label="${b(n||m)}">${E.join("")}</svg>${c(r.map(i))}</div></figure>`}let d=r.flatMap((m)=>t.map((u)=>s(m,u))),p=Math.min(0,...d),g=Math.max(0,...d),H=g-p||1,k=(m)=>(100-(m-p)/H*100).toFixed(2),y=r.length,I=e==="line"?t.map((m,u)=>`<polyline class="b3-md-c${u%8}" vector-effect="non-scaling-stroke" points="${r.map((h,f)=>`${(y>1?f/(y-1)*100:50).toFixed(2)},${k(s(h,m))}`).join(" ")}"><title>${b(m)}</title></polyline>`).join(""):r.map((m,u)=>t.map((h,f)=>{let E=100/y*0.8/t.length,v=100/y*(u+0.1)+E*f,w=s(m,h),x=Math.min(+k(w),+k(0));return`<rect class="b3-md-c${f%8}" x="${v.toFixed(2)}" y="${x.toFixed(2)}" width="${E.toFixed(2)}" height="${Math.max(Math.abs(+k(w)-+k(0)),0.4).toFixed(2)}">${o(m,u,h)}</rect>`}).join("")).join(""),D=y>2?[0,Math.floor((y-1)/2),y-1]:[...Array(y).keys()];return`<figure class="b3-md-chart b3-surface">${l}<div class="b3-md-plot"><div class="b3-md-y"><span>${A(g)}</span><span>${A(p)}</span></div><svg viewBox="0 0 100 100" preserveAspectRatio="none" role="img" aria-label="${b(n||t.join(", "))}">${I}</svg><div class="b3-md-x">${D.map((m)=>`<span>${b(i(r[m],m))}</span>`).join("")}</div></div>${t.length>1?c(t):""}</figure>`}T.callout.doc='`:::callout{tone=info|success|warning|danger title="Short title"}` newline, markdown body, newline `:::` — a highlighted note, tip, warning or recommendation.';T.stats.doc="`:::stats` newline, one card per line `Label | Value | note`, newline `:::` — headline numbers; a note starting with ↑ or + shows as good, ↓ or - as bad.";S.chart.doc="```chart fence, one bar per line `Label: number` (plain number, no units) — a horizontal bar chart for comparing a few values.";function X(e={}){let n={...T,...e.directives,...S,...e.fences},a=Object.entries(e.tones??new L().tones).reduce((t,[r,s])=>((t[s]??=[]).push(r),t),{});return["Your replies are Markdown rendered live into UI components. Use GitHub-flavoured Markdown (headings, **bold**, lists, links, `inline code`, fenced code with a language, > quotes) plus:",`- Tables: GFM pipe tables with a header row and a \`| --- |\` delimiter row. Never add a Status column the data does not already have. Only when a row really has one of these states (e.g. an invoice that is paid), write the plain word alone in the cell and it is shown as a coloured badge automatically (no images, emoji or badge URLs): ${Object.entries(a).map(([t,r])=>`${r.join(", ")} (${t})`).join("; ")}. Numeric columns align right.`,"- Task lists: `- [x] done` and `- [ ] to do`.",...Object.values(n).filter((t)=>t?.doc).map((t)=>`- ${t.doc}`),"Use a component only when it makes the answer clearer; plain prose is fine. Put every block on its own lines with a blank line around it, always close ::: and ``` blocks, and never write raw HTML."].join(`
1
+ var q=Symbol.for("bare-v3.styles");function O(e,n,a){if(!e?.head||e.getElementById(n))return;let t=e[q]??=new Set;if(t.has(n))return;let r=e.defaultView;if(r&&"adoptedStyleSheets"in e&&"replaceSync"in r.CSSStyleSheet.prototype){let i=new r.CSSStyleSheet;i.replaceSync(a),e.adoptedStyleSheets=[...e.adoptedStyleSheets,i],t.add(n);return}let s=e.createElement("style");s.id=n,s.textContent=a,e.head.append(s)}var b=(e)=>String(e).replace(/[&<>"]/g,(n)=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[n]),P=(e)=>Object.fromEntries([...(e||"").matchAll(/(\w+)=(?:"([^"]*)"|(\S+))/g)].map((n)=>[n[1],n[2]??n[3]])),B=(e)=>/^[-+$€£]?[\d,.]+%?$/.test(String(e).trim()),R=(e)=>e?` data-b3-tone="${b(e)}"`:"",T={callout(e,n){let a=e.attrs.title?`<strong>${b(e.attrs.title)}</strong>`:"";return`<div class="b3-alert"${R(e.attrs.tone)}><div>${a}${n.parse(e.tokens)}</div></div>`},stats(e,n){let a=n?.inline??b;return`<div class="b3-md-stats">${e.body.split(`
2
+ `).filter((r)=>r.trim()).map((r)=>{let[s="",i,o=""]=r.replace(/^\s*\|/,"").replace(/\|\s*$/,"").split("|").map((c)=>c.trim()),l=/^[↑+]/.test(o)?"success":/^[↓-]/.test(o)?"danger":"";return`<div class="b3-stat b3-surface"><span class="b3-label">${a(s)}</span><strong class="b3-stat-value">${i?a(i.replace(/^\*\*(.*)\*\*$/,"$1")):"…"}</strong>${o?`<span class="b3-badge"${R(l)}>${a(o)}</span>`:""}</div>`}).join("")}</div>`}},S={chart(e){let n=e.split(`
3
+ `).map((t)=>t.split(":")).filter((t)=>t.length>1&&!isNaN(parseFloat(t[1]))),a=Math.max(...n.map((t)=>parseFloat(t[1])),1);return`<figure class="b3-md-bars b3-surface">${n.map(([t="",r=""])=>`<div class="b3-md-bar"><span>${b(t.trim())}</span><i style="inline-size:${Math.max(parseFloat(r),0)/a*100}%"></i><b>${b(r.trim())}</b></div>`).join("")}</figure>`}},U=(e,n)=>{let a=e.trim();if(!/^[[{]/.test(a))return S.chart(e,n);let t;try{t=JSON.parse(a)}catch{return(a.match(/[[{]/g)?.length??0)>(a.match(/[\]}]/g)?.length??0)?'<figure class="b3-md-chart b3-surface b3-md-pending"><div class="b3-skeleton"></div></figure>':j(e,"json")}let r=_(t);return r?Y(r):j(e,"json")};U.doc='```chart fence with JSON — `{"type":"bar|line|pie","title":"…","data":[{"label":"Jan","sales":120,"costs":80}]}` (numbers, not strings; every numeric field is a series; type is optional) — for trends over time (line), comparing groups/series (bar) or shares of a whole (pie). For a few single values, one `Label: number` per line gives simple bars.';var M=(e)=>typeof e==="number"&&Number.isFinite(e);function _(e){let n=Array.isArray(e)?{data:e}:e&&typeof e==="object"?e:null;if(!n)return null;let a=n.data??n.rows,t=n.series??n.values;if(!a&&t&&typeof t==="object"&&!Array.isArray(t)){let c=Object.keys(t);a=[...new Set(c.flatMap((m)=>Object.keys(t[m]||{})))].map((m)=>({label:m,...Object.fromEntries(c.map((g)=>[g,Number(t[g]?.[m]??0)]))}))}if(!Array.isArray(a)||!a.length||!a.every((c)=>c&&typeof c==="object"&&!Array.isArray(c)))return null;let r=[...new Set(a.flatMap((c)=>Object.keys(c)))],s=typeof n.x==="string"?n.x:r.find((c)=>a.some((d)=>d[c]!=null&&!M(d[c])))??"",i=n.y?[n.y].flat().map(String):r.filter((c)=>c!==s&&a.some((d)=>M(d[c])));if(!i.length)return null;let o=a.some((c)=>/^\d{4}-\d{2}/.test(String(c[s]??""))),l=["bar","line","pie"].includes(n.type)?n.type:o||a.length>12?"line":"bar";return{type:l,title:String(n.title??""),x:s,ys:l==="pie"?i.slice(0,1):i.slice(0,8),rows:a.slice(0,500)}}var A=(e)=>{try{return new Intl.NumberFormat(void 0,{notation:"compact",maximumFractionDigits:1}).format(e)}catch{return String(e)}};function Y({type:e,title:n,x:a,ys:t,rows:r}){let s=(p,u)=>M(p[u])?p[u]:0,i=(p,u)=>String(a?p[a]??"":u+1),o=(p,u,h)=>`<title>${b(i(p,u))} · ${b(h)}: ${b(p[h]??"")}</title>`,l=n?`<figcaption>${b(n)}</figcaption>`:"",c=(p)=>`<div class="b3-md-legend">${p.map((u,h)=>`<span><i class="b3-md-c${h%8}"></i>${b(u)}</span>`).join("")}</div>`;if(e==="pie"){let p=t[0],u=r.map((k)=>Math.max(s(k,p),0)),h=u.reduce((k,y)=>k+y,0)||1,f=0,E=r.map((k,y)=>{let x=f+u[y]/h*Math.PI*2,C=(z)=>`${(16+15*Math.sin(z)).toFixed(3)} ${(16-15*Math.cos(z)).toFixed(3)}`,N=u[y]>=h?"M16 1a15 15 0 1 1 0 30a15 15 0 1 1 0-30Z":`M16 16L${C(f)}A15 15 0 ${x-f>Math.PI?1:0} 1 ${C(x)}Z`;return f=x,`<path class="b3-md-c${y%8}" d="${N}">${o(k,y,p)}</path>`});return`<figure class="b3-md-chart b3-surface">${l}<div class="b3-md-pie"><svg viewBox="0 0 32 32" role="img" aria-label="${b(n||p)}">${E.join("")}</svg>${c(r.map(i))}</div></figure>`}let d=r.flatMap((p)=>t.map((u)=>s(p,u))),m=Math.min(0,...d),g=Math.max(0,...d),H=g-m||1,v=(p)=>(100-(p-m)/H*100).toFixed(2),w=r.length,I=e==="line"?t.map((p,u)=>`<polyline class="b3-md-c${u%8}" vector-effect="non-scaling-stroke" points="${r.map((h,f)=>`${(w>1?f/(w-1)*100:50).toFixed(2)},${v(s(h,p))}`).join(" ")}"><title>${b(p)}</title></polyline>`).join(""):r.map((p,u)=>t.map((h,f)=>{let E=100/w*0.8/t.length,k=100/w*(u+0.1)+E*f,y=s(p,h),x=Math.min(+v(y),+v(0));return`<rect class="b3-md-c${f%8}" x="${k.toFixed(2)}" y="${x.toFixed(2)}" width="${E.toFixed(2)}" height="${Math.max(Math.abs(+v(y)-+v(0)),0.4).toFixed(2)}">${o(p,u,h)}</rect>`}).join("")).join(""),D=w>2?[0,Math.floor((w-1)/2),w-1]:[...Array(w).keys()];return`<figure class="b3-md-chart b3-surface">${l}<div class="b3-md-plot"><div class="b3-md-y"><span>${A(g)}</span><span>${A(m)}</span></div><svg viewBox="0 0 100 100" preserveAspectRatio="none" role="img" aria-label="${b(n||t.join(", "))}">${I}</svg><div class="b3-md-x">${D.map((p)=>`<span>${b(i(r[p],p))}</span>`).join("")}</div></div>${t.length>1?c(t):""}</figure>`}T.callout.doc='`:::callout{tone=info|success|warning|danger title="Short title"}` newline, markdown body, newline `:::` — a highlighted note, tip, warning or recommendation.';T.stats.doc="`:::stats` newline, one card per line `Label | Value | note`, newline `:::` — headline numbers; a note starting with ↑ or + shows as good, ↓ or - as bad.";S.chart.doc="```chart fence, one bar per line `Label: number` (plain number, no units) — a horizontal bar chart for comparing a few values.";function X(e={}){let n={...T,...e.directives,...S,...e.fences},a=Object.entries(e.tones??new L().tones).reduce((t,[r,s])=>((t[s]??=[]).push(r),t),{});return["Your replies are Markdown rendered live into UI components. Use GitHub-flavoured Markdown (headings, **bold**, lists, links, `inline code`, fenced code with a language, > quotes) plus:",`- Tables: GFM pipe tables with a header row and a \`| --- |\` delimiter row. Never add a Status column the data does not already have. Only when a row really has one of these states (e.g. an invoice that is paid), write the plain word alone in the cell and it is shown as a coloured badge automatically (no images, emoji or badge URLs): ${Object.entries(a).map(([t,r])=>`${r.join(", ")} (${t})`).join("; ")}. Numeric columns align right.`,"- Task lists: `- [x] done` and `- [ ] to do`.",...Object.values(n).filter((t)=>t?.doc).map((t)=>`- ${t.doc}`),"Use a component only when it makes the answer clearer; plain prose is fine. Put every block on its own lines with a blank line around it, always close ::: and ``` blocks, and never write raw HTML."].join(`
4
4
  `)}var j=(e,n)=>`<div class="b3-md-code"><header><span class="b3-muted">${b(n||"text")}</span><button type="button" class="b3-button" data-b3-emphasis="quiet" data-b3-md-copy>Copy</button></header><pre><code>${b(e)}</code></pre></div>`;function V(e){let n=e,a=n.split(`
5
5
  `),t=[];while(a.length&&/^\s*\|/.test(a.at(-1)))t.unshift(a.pop());let r=e.endsWith(`
6
6
  `)?t:t.slice(0,-1),s=!1;if(t.length&&!r.some((c)=>/^\s*\|?\s*:?-{2,}/.test(c)))s=!0,n=a.join(`
@@ -16,6 +16,10 @@ var q=Symbol.for("bare-v3.styles");function R(e,n,a){if(!e?.head||e.getElementBy
16
16
  .b3-md-code{border:1px solid var(--b3-color-border);border-radius:var(--b3-radius);overflow:hidden;}
17
17
  .b3-md-code>header{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.25rem .5rem .25rem .75rem;font-size:.8rem;background:var(--b3-color-surface);border-block-end:1px solid var(--b3-color-border);}
18
18
  .b3-md-code>pre{margin:0;padding:.75rem;overflow-x:auto;}
19
+ .b3-message-body .b3-md-code{margin-block:0 .6em;border-radius:.6em;}
20
+ .b3-message-body .b3-md-code>header{padding-block:.15em;font-size:.88em;color:var(--b3-color-muted);}
21
+ .b3-message-body .b3-md-code>header>.b3-button{min-block-size:2.1em;block-size:auto;padding:0 .6em;border-radius:.45em;font-size:inherit;}
22
+ .b3-message-body .b3-md-code>pre{margin:0;border:0;border-radius:0;background:none;}
19
23
  .b3-md-bars{display:grid;gap:.4rem;margin-inline:0;padding:var(--b3-space,1rem);}
20
24
  .b3-md-bar{display:grid;grid-template-columns:minmax(0,min(7rem,35%)) minmax(0,1fr) max-content;gap:.5rem;align-items:center;font-size:.9rem;}
21
25
  .b3-md-bar>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
@@ -52,8 +56,8 @@ var q=Symbol.for("bare-v3.styles");function R(e,n,a){if(!e?.head||e.getElementBy
52
56
  .b3-md-pending>.b3-skeleton{block-size:1.5rem;}
53
57
  .b3-md-pending>.b3-skeleton+.b3-skeleton{inline-size:80%;}
54
58
  @media (prefers-reduced-motion:reduce){.b3-md-appear,.b3-md-caret{animation:none;}}
55
- `;class L{Marked=null;sanitize=null;directives=T;fences=S;code=j;tones={paid:"success",done:"success",ok:"success",active:"success",pending:"warning",overdue:"danger",failed:"danger",blocked:"danger",draft:"info"};html="escape";images="alt";markedOptions={}}class Z{el=null;buf="";nodes=[];ended=!1;options;#e;#t=(e)=>this.#n(e);constructor(e){this.options={...new L,...e},this.options.directives={...T,...e?.directives},this.options.fences={...S,...e?.fences};let{Marked:n,sanitize:a}=this.options;if(typeof n!=="function")throw TypeError('MarkdownStream: options.Marked (from "marked") is required');if(typeof a!=="function")throw TypeError("MarkdownStream: options.sanitize is required (e.g. html => DOMPurify.sanitize(html))");this.#e=this.#s()}attach(e){return this.detach(),this.el=e,e.replaceChildren(),this.buf="",this.nodes=[],this.ended=!1,R(e.ownerDocument,J,W),e.addEventListener("click",this.#t),this}detach(){this.el?.removeEventListener("click",this.#t),this.el=null}push(e){if(this.ended){console.warn("MarkdownStream: push() after end() ignored; call attach(el) to start a new stream");return}this.buf+=e,this.render(!0)}end(e){if(e!==void 0)this.buf=String(e);this.ended=!0,this.render(!1)}toHtml(e){return this.options.sanitize(this.#e.parse(e))}render(e){let{el:n}=this;if(!n)throw Error("MarkdownStream: call attach(el) before push()");let a=n.ownerDocument,{src:t,pendingTable:r}=e?V(this.buf):{src:this.buf,pendingTable:!1},s=this.#e.lexer(t).filter((i)=>i.type!=="space");if(s.forEach((i,o)=>{let l=this.nodes[o];if(l&&l.raw===i.raw)return;let c=a.createElement("div");c.innerHTML=this.options.sanitize(this.#e.parser([i]));let p=(c.childElementCount===1&&[...c.childNodes].every((g)=>g.nodeType===1||!g.textContent.trim())?c.firstElementChild:null)??c;if(!l)p.classList.add("b3-md-appear");l?l.el.replaceWith(p):n.append(p),this.nodes[o]={raw:i.raw,el:p}}),this.nodes.splice(s.length).forEach((i)=>i.el.remove()),n.querySelector(":scope .b3-md-caret, :scope > .b3-md-pending")?.remove(),r)n.insertAdjacentHTML("beforeend",'<div class="b3-md-pending" aria-hidden="true"><div class="b3-skeleton"></div><div class="b3-skeleton"></div></div>');else if(e){let i=this.nodes.at(-1)?.el;((i?.matches("p, li, td, th, pre"))?i:i?.querySelector("p:last-of-type, li:last-child, td:last-child")||i||n).insertAdjacentHTML("beforeend",'<span class="b3-md-caret" aria-hidden="true"></span>')}}#n(e){let n=e.target.closest?.("[data-b3-md-copy]");if(!n||!this.el?.contains(n))return;let a=n.closest(".b3-md-code")?.querySelector("code")?.textContent??"",t=(i)=>{n.textContent=i,setTimeout(()=>{n.textContent="Copy"},1200)},r=(i)=>{console.warn("MarkdownStream: copy failed",i),t("Copy failed")},s=this.el.ownerDocument.defaultView?.navigator?.clipboard;if(s?.writeText)s.writeText(a).then(()=>t("Copied"),r);else r(Error("navigator.clipboard is unavailable (insecure context?)"))}#s(){let e=this.options,n={name:"directive",level:"block",start:(t)=>t.match(/^:::/m)?.index,tokenizer(t){let r=/^:::(\w+)(?:\{([^}\n]*)\})?[^\n]*(?:\n|$)/.exec(t);if(!r)return;let s=t.slice(r[0].length).split(`
56
- `),i=null,o=s.length;for(let p=0;p<s.length;p++){let g=/^ {0,3}(`{3,}|~{3,})/.exec(s[p])?.[1];if(i){if(g&&g[0]===i[0]&&g.length>=i.length&&!s[p].trim().slice(g.length))i=null}else if(g)i=g;else if(/^:::[^\S\n]*$/.test(s[p])){o=p;break}}let l=s.slice(0,o).join(`
59
+ `;class L{Marked=null;sanitize=null;directives=T;fences=S;code=j;tones={paid:"success",done:"success",ok:"success",active:"success",pending:"warning",overdue:"danger",failed:"danger",blocked:"danger",draft:"info"};html="escape";images="alt";markedOptions={}}class Z{el=null;buf="";nodes=[];ended=!1;options;#e;#t=(e)=>this.#n(e);constructor(e){this.options={...new L,...e},this.options.directives={...T,...e?.directives},this.options.fences={...S,...e?.fences};let{Marked:n,sanitize:a}=this.options;if(typeof n!=="function")throw TypeError('MarkdownStream: options.Marked (from "marked") is required');if(typeof a!=="function")throw TypeError("MarkdownStream: options.sanitize is required (e.g. html => DOMPurify.sanitize(html))");this.#e=this.#s()}attach(e){return this.detach(),this.el=e,e.replaceChildren(),this.buf="",this.nodes=[],this.ended=!1,O(e.ownerDocument,J,W),e.addEventListener("click",this.#t),this}detach(){this.el?.removeEventListener("click",this.#t),this.el=null}push(e){if(this.ended){console.warn("MarkdownStream: push() after end() ignored; call attach(el) to start a new stream");return}this.buf+=e,this.render(!0)}end(e){if(e!==void 0)this.buf=String(e);this.ended=!0,this.render(!1)}toHtml(e){return this.options.sanitize(this.#e.parse(e))}render(e){let{el:n}=this;if(!n)throw Error("MarkdownStream: call attach(el) before push()");let a=n.ownerDocument,{src:t,pendingTable:r}=e?V(this.buf):{src:this.buf,pendingTable:!1},s=this.#e.lexer(t).filter((i)=>i.type!=="space");if(s.forEach((i,o)=>{let l=this.nodes[o];if(l&&l.raw===i.raw)return;let c=a.createElement("div");c.innerHTML=this.options.sanitize(this.#e.parser([i]));let m=(c.childElementCount===1&&[...c.childNodes].every((g)=>g.nodeType===1||!g.textContent.trim())?c.firstElementChild:null)??c;if(!l)m.classList.add("b3-md-appear");l?l.el.replaceWith(m):n.append(m),this.nodes[o]={raw:i.raw,el:m}}),this.nodes.splice(s.length).forEach((i)=>i.el.remove()),n.querySelector(":scope .b3-md-caret, :scope > .b3-md-pending")?.remove(),r)n.insertAdjacentHTML("beforeend",'<div class="b3-md-pending" aria-hidden="true"><div class="b3-skeleton"></div><div class="b3-skeleton"></div></div>');else if(e){let i=this.nodes.at(-1)?.el;((i?.matches("p, li, td, th, pre"))?i:i?.querySelector("p:last-of-type, li:last-child, td:last-child")||i||n).insertAdjacentHTML("beforeend",'<span class="b3-md-caret" aria-hidden="true"></span>')}}#n(e){let n=e.target.closest?.("[data-b3-md-copy]");if(!n||!this.el?.contains(n))return;let a=n.closest(".b3-md-code")?.querySelector("code")?.textContent??"",t=(i)=>{n.textContent=i,setTimeout(()=>{n.textContent="Copy"},1200)},r=(i)=>{console.warn("MarkdownStream: copy failed",i),t("Copy failed")},s=this.el.ownerDocument.defaultView?.navigator?.clipboard;if(s?.writeText)s.writeText(a).then(()=>t("Copied"),r);else r(Error("navigator.clipboard is unavailable (insecure context?)"))}#s(){let e=this.options,n={name:"directive",level:"block",start:(t)=>t.match(/^:::/m)?.index,tokenizer(t){let r=/^:::(\w+)(?:\{([^}\n]*)\})?[^\n]*(?:\n|$)/.exec(t);if(!r)return;let s=t.slice(r[0].length).split(`
60
+ `),i=null,o=s.length;for(let m=0;m<s.length;m++){let g=/^ {0,3}(`{3,}|~{3,})/.exec(s[m])?.[1];if(i){if(g&&g[0]===i[0]&&g.length>=i.length&&!s[m].trim().slice(g.length))i=null}else if(g)i=g;else if(/^:::[^\S\n]*$/.test(s[m])){o=m;break}}let l=s.slice(0,o).join(`
57
61
  `).replace(/\n$/,""),c=o<s.length;return{type:"directive",raw:r[0]+s.slice(0,c?o+1:o).join(`
58
62
  `)+(c&&o+1<s.length?`
59
- `:""),name:r[1],attrs:P(r[2]),body:l,tokens:this.lexer.blockTokens(l,[])}},renderer(t){return(e.directives[t.name]??e.directives.callout)(t,{parse:(s)=>this.parser.parse(s),parseInline:(s)=>this.parser.parseInline(s),inline:(s)=>a.parseInline(s),esc:b})}},a=new e.Marked({gfm:!0,extensions:[n]});if(a.use({renderer:{blockquote(t){let r=/^\s*(?:\[!(\w+)\][^\S\n]*\n?|\*\*(\w+):?\*\*:?[^\S\n]*)/.exec(t.text),s=(r?.[1]??r?.[2])?.toLowerCase();if(!s||!r||!Object.hasOwn(F,s))return!1;let i=s[0].toUpperCase()+s.slice(1);return e.directives.callout({attrs:{tone:F[s],title:i},tokens:a.lexer(t.text.slice(r[0].length))},{parse:(o)=>this.parser.parse(o),parseInline:(o)=>this.parser.parseInline(o),inline:(o)=>a.parseInline(o),esc:b})},table(t){let r=t.header.map((i,o)=>t.rows.length>0&&t.rows.every((l)=>B(l[o]?.text||"0"))),s=(i,o,l)=>{let c=this.parser.parseInline(i.tokens),d=l==="td"&&e.tones[i.text.trim().toLowerCase()],p=d?`<span class="b3-badge" data-b3-tone="${b(d)}">${c}</span>`:c;return`<${l}${l==="th"?' scope="col"':""}${r[o]?' class="b3-md-num"':""}>${p}</${l}>`};return`<div class="b3-table-wrap" tabindex="0" role="region" aria-label="Table"><table class="b3-table b3-md-table"><thead><tr>${t.header.map((i,o)=>s(i,o,"th")).join("")}</tr></thead><tbody>${t.rows.map((i)=>`<tr>${i.map((o,l)=>s(o,l,"td")).join("")}</tr>`).join("")}</tbody></table></div>`},code({text:t,lang:r}){let s=(r||"").trim().split(/\s/)[0],i=Object.hasOwn(e.fences,s)?e.fences[s]:null;return i?i(t,{esc:b,lang:s}):e.code(t,s)},html(t){return e.html==="render"?!1:t.block?`<p>${b(t.text.trim())}</p>`:b(t.text)},image({href:t,text:r}){return e.images==="render"||typeof e.images==="function"&&e.images(t??"")?!1:b(r)},list(t){if(!t.items.some((r)=>r.task))return!1;return`<ul class="b3-md-tasks">${t.items.map((r)=>{let s=r.tokens.filter((l)=>l.type!=="checkbox"),i=s.find((l)=>l.type==="text"||l.type==="paragraph");if(i?.tokens)i.tokens=i.tokens.filter((l)=>l.type!=="checkbox");let o=s.map((l)=>l.type==="text"&&!r.loose?this.parser.parseInline(l.tokens??[l]):this.parser.parse([l])).join("");return`<li><input type="checkbox" disabled${r.checked?" checked":""}>${o}</li>`}).join("")}</ul>`}}}),e.markedOptions&&Object.keys(e.markedOptions).length)a.use(e.markedOptions);return a}}function ee(e=document.scrollingElement,{threshold:n=80}={}){let a=e.ownerDocument,t=a.defaultView,r=e===a.scrollingElement?t:e,s=!0,i=e.scrollTop,o=()=>{let d=e.scrollTop;if(e.scrollHeight-d-e.clientHeight>=n)s=!1;else if(d>=i)s=!0;i=d},l=(d)=>{if(d.target?.closest?.('input, textarea, select, [contenteditable]:not([contenteditable="false"])'))return;if(e.scrollTop>0&&((d.deltaY??0)<0||/^(ArrowUp|PageUp|Home)$/.test(d.key??"")))s=!1},c=[["scroll",o],["wheel",l],["keydown",l]];return c.forEach(([d,p])=>r.addEventListener(d,p,{passive:!0})),{get pinned(){return s},stick(d=!1){if(d||s)e.scrollTop=e.scrollHeight,s=!0},destroy(){c.forEach(([d,p])=>r.removeEventListener(d,p))}}}export{Z as MarkdownStream,L as MarkdownStreamOptions,j as codeBlock,T as directives,b as esc,S as fences,B as isNum,U as jsonChart,P as parseAttrs,X as promptGuide,V as settle,ee as stickToBottom};
63
+ `:""),name:r[1],attrs:P(r[2]),body:l,tokens:this.lexer.blockTokens(l,[])}},renderer(t){return(e.directives[t.name]??e.directives.callout)(t,{parse:(s)=>this.parser.parse(s),parseInline:(s)=>this.parser.parseInline(s),inline:(s)=>a.parseInline(s),esc:b})}},a=new e.Marked({gfm:!0,extensions:[n]});if(a.use({renderer:{blockquote(t){let r=/^\s*(?:\[!(\w+)\][^\S\n]*\n?|\*\*(\w+):?\*\*:?[^\S\n]*)/.exec(t.text),s=(r?.[1]??r?.[2])?.toLowerCase();if(!s||!r||!Object.hasOwn(F,s))return!1;let i=s[0].toUpperCase()+s.slice(1);return e.directives.callout({attrs:{tone:F[s],title:i},tokens:a.lexer(t.text.slice(r[0].length))},{parse:(o)=>this.parser.parse(o),parseInline:(o)=>this.parser.parseInline(o),inline:(o)=>a.parseInline(o),esc:b})},table(t){let r=t.header.map((i,o)=>t.rows.length>0&&t.rows.every((l)=>B(l[o]?.text||"0"))),s=(i,o,l)=>{let c=this.parser.parseInline(i.tokens),d=l==="td"&&e.tones[i.text.trim().toLowerCase()],m=d?`<span class="b3-badge" data-b3-tone="${b(d)}">${c}</span>`:c;return`<${l}${l==="th"?' scope="col"':""}${r[o]?' class="b3-md-num"':""}>${m}</${l}>`};return`<div class="b3-table-wrap" tabindex="0" role="region" aria-label="Table"><table class="b3-table b3-md-table"><thead><tr>${t.header.map((i,o)=>s(i,o,"th")).join("")}</tr></thead><tbody>${t.rows.map((i)=>`<tr>${i.map((o,l)=>s(o,l,"td")).join("")}</tr>`).join("")}</tbody></table></div>`},code({text:t,lang:r}){let s=(r||"").trim().split(/\s/)[0],i=Object.hasOwn(e.fences,s)?e.fences[s]:null;return i?i(t,{esc:b,lang:s}):e.code(t,s)},html(t){return e.html==="render"?!1:t.block?`<p>${b(t.text.trim())}</p>`:b(t.text)},image({href:t,text:r}){return e.images==="render"||typeof e.images==="function"&&e.images(t??"")?!1:b(r)},list(t){if(!t.items.some((r)=>r.task))return!1;return`<ul class="b3-md-tasks">${t.items.map((r)=>{let s=r.tokens.filter((l)=>l.type!=="checkbox"),i=s.find((l)=>l.type==="text"||l.type==="paragraph");if(i?.tokens)i.tokens=i.tokens.filter((l)=>l.type!=="checkbox");let o=s.map((l)=>l.type==="text"&&!r.loose?this.parser.parseInline(l.tokens??[l]):this.parser.parse([l])).join("");return`<li><input type="checkbox" disabled${r.checked?" checked":""}>${o}</li>`}).join("")}</ul>`}}}),e.markedOptions&&Object.keys(e.markedOptions).length)a.use(e.markedOptions);return a}}function ee(e=document.scrollingElement,{threshold:n=80}={}){let a=e.ownerDocument,t=a.defaultView,r=e===a.scrollingElement?t:e,s=!0,i=e.scrollTop,o=()=>{let d=e.scrollTop;if(e.scrollHeight-d-e.clientHeight>=n)s=!1;else if(d>=i)s=!0;i=d},l=(d)=>{if(d.target?.closest?.('input, textarea, select, [contenteditable]:not([contenteditable="false"])'))return;if(e.scrollTop>0&&((d.deltaY??0)<0||/^(ArrowUp|PageUp|Home)$/.test(d.key??"")))s=!1},c=[["scroll",o],["wheel",l],["keydown",l]];return c.forEach(([d,m])=>r.addEventListener(d,m,{passive:!0})),{get pinned(){return s},stick(d=!1){if(d||s)e.scrollTop=e.scrollHeight,s=!0},destroy(){c.forEach(([d,m])=>r.removeEventListener(d,m))}}}export{Z as MarkdownStream,L as MarkdownStreamOptions,j as codeBlock,T as directives,b as esc,S as fences,B as isNum,U as jsonChart,P as parseAttrs,X as promptGuide,V as settle,ee as stickToBottom};
@@ -1,8 +1,8 @@
1
1
  # Conversation messages
2
2
 
3
- Use an ordered list for chronological messages with authored sender labels and time elements. data-b3-side=self mirrors alignment in RTL and uses on-accent text. Message bodies preserve line breaks and wrap long content. For rich replies, keep wide tables inside b3-table-wrap so they scroll within the message rather than widening the conversation. App owns delivery state, persistence, safe text rendering, scroll position and focus. Announce newly added messages through a separate concise status region; do not mark the full restored history live. Never imply a reply was delivered remotely when only local storage succeeded. Recording, attachments, streaming and retries are not provided by these presentation classes. A body whose direct children are blocks (rendered markdown) lays out as prose; text-only bodies preserve line breaks. Bodies cap at a readable measure; density tightens padding, meta and rhythm. b3-composer is the message row under a conversation: a direct textarea.b3-input plus one b3-button; they share height and radius and the action stays on the last line as the field grows. When the field and action cannot fit comfortably, the action wraps below rather than crushing the field. Add a safe-area inset to its block-end padding when it touches the screen edge. Bubble padding is one fixed token on both sides; the first/last block inside a body adds no edge margin, so single-line bubbles are vertically symmetric and short messages fit on one line.
3
+ Use an ordered list for chronological messages with authored sender labels and time elements. data-b3-side=self mirrors alignment in RTL and uses on-accent text. Message bodies preserve line breaks and wrap long content. For rich replies, keep wide tables inside b3-table-wrap so they scroll within the message rather than widening the conversation. App owns delivery state, persistence, safe text rendering, scroll position and focus. Announce newly added messages through a separate concise status region; do not mark the full restored history live. Never imply a reply was delivered remotely when only local storage succeeded. Recording, attachments, streaming and retries are not provided by these presentation classes. A body whose direct children are blocks (rendered markdown) lays out as prose; text-only bodies preserve line breaks. Bodies cap at a readable measure; density tightens padding, meta and rhythm. b3-composer is the message row under a conversation: a direct textarea.b3-input plus one b3-button; they share height and radius and the action stays on the last line as the field grows. When the field and action cannot fit comfortably, the action wraps below rather than crushing the field. Add a safe-area inset to its block-end padding when it touches the screen edge. Bubble padding is one fixed token on both sides; the first/last block inside a body adds no edge margin, so single-line bubbles are vertically symmetric and short messages fit on one line. Assistant chats: data-b3-layout=assistant on b3-conversation keeps the person's messages as tinted bubbles (--b3-message-self-bg / --b3-message-self-text set the pair) and the assistant's replies unboxed at full width; sizes follow the chat's font size. Inside any message body, rendered markdown gets a chat rhythm and a code block is one frame. A details.b3-message-disclosure inside a message is a quiet one-line disclosure (the model's thinking, a tool call): the app owns its summary text and its open state, and keeps the reader's choice while the reply streams. Stacked composer: data-b3-layout=stacked on b3-composer is one bordered box holding a direct textarea (no class) and a b3-composer-bar of controls under it whose last b3-button is the send action; the box's accent border is the focus indicator. Wrap either composer in <b3-composer> to grow the field with its text up to its max-block-size and send on Enter (Shift/Alt+Enter is a newline): it dispatches a cancelable bubbling b3:send (detail metaKey, ctrlKey) and then submits the enclosing form unless canceled; call grow() after setting the value from code.
4
4
 
5
- Classes: b3-conversation, b3-message, b3-message-body, b3-message-meta, b3-composer
5
+ Classes: b3-conversation, b3-message, b3-message-body, b3-message-meta, b3-message-disclosure, b3-composer, b3-composer-bar
6
6
 
7
7
  ```html
8
8
  <ol class="b3-conversation" aria-label="Messages"><li class="b3-message" data-b3-side="self"><p class="b3-message-body">Happy to help.</p><div class="b3-message-meta"><span>You</span><time datetime="2026-09-08T09:14:00Z">09:14 UTC</time></div></li></ol>
@@ -34,7 +34,7 @@ Any markdown-speaking model works with no prompt: standard markdown is upgraded
34
34
  | `- [x] task` | list with disabled checkboxes |
35
35
  | `> [!NOTE]` / `> [!WARNING]` (GitHub alerts) or `> **Note:** …` | `b3-alert`; note/important → info, tip → success, warning → warning, caution/danger → danger |
36
36
 
37
- Stat typography follows the card width, not the viewport. Tables preserve amounts and status labels; their keyboard-focusable wrapper scrolls horizontally when necessary. Put rich replies in b3-message to keep their intrinsic table width inside the conversation.
37
+ Stat typography follows the card width, not the viewport. Tables preserve amounts and status labels; their keyboard-focusable wrapper scrolls horizontally when necessary. Put rich replies in b3-message to keep their intrinsic table width inside the conversation. For an assistant chat, use `b3-conversation data-b3-layout="assistant"` (unboxed replies, the person's bubbles), a `details.b3-message-disclosure` for the model's thinking, and a stacked `b3-composer` inside `<b3-composer>` (Enter sends via `b3:send`; the field grows) — the conversation specimen shows it.
38
38
 
39
39
  ## Options
40
40
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livx.cc/bare-v3",
3
- "version": "0.1.0-alpha.158",
3
+ "version": "0.1.0-alpha.159",
4
4
  "type": "module",
5
5
  "thirdPartyNotices": "./dist/third-party.json",
6
6
  "files": [